diff --git a/404.html b/404.html index e0543a4e..07c899fa 100644 --- a/404.html +++ b/404.html @@ -35,6 +35,6 @@ - + \ No newline at end of file diff --git a/assets/bungie_foundation.png b/assets/bungie_foundation.png new file mode 100644 index 00000000..0786654a Binary files /dev/null and b/assets/bungie_foundation.png differ diff --git a/index.html b/index.html index e0543a4e..07c899fa 100644 --- a/index.html +++ b/index.html @@ -35,6 +35,6 @@ - + \ No newline at end of file diff --git a/main.70283bba9d88ad6b.js b/main.70283bba9d88ad6b.js deleted file mode 100644 index 1280d330..00000000 --- a/main.70283bba9d88ad6b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkD2ArmorPicker=self.webpackChunkD2ArmorPicker||[]).push([[179],{443:(ht,at,_)=>{_.d(at,{F:()=>I});var u=_(7580),t=_(8333),g=_(1043);const I={[u.U.WhisperOfDurance]:{id:u.U.WhisperOfDurance,name:"Whisper of Durance",description:"Slow that you apply to targets lasts longer. For those abilities that linger, their duration will also increase.",type:t.O.Stasis,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:3469412969},[u.U.WhisperOfChains]:{id:u.U.WhisperOfChains,name:"Whisper of Chains",description:"While you are near frozen targets or a friendly Stasis crystal, you take reduced damage from targets.",type:t.O.Stasis,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:537774540},[u.U.WhisperOfConduction]:{id:u.U.WhisperOfConduction,name:"Whisper of Conduction",description:"Nearby Stasis shards track to your position.",type:t.O.Stasis,bonus:[{stat:g.WB.Intellect,value:10},{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:2483898429},[u.U.WhisperOfBonds]:{id:u.U.WhisperOfBonds,name:"Whisper of Bonds",description:"Defeating frozen targets generates an Orb of Power.",type:t.O.Stasis,bonus:[{stat:g.WB.Intellect,value:-10}],cost:1,requiredArmorAffinity:0,hash:3469412974},[u.U.WhisperOfHunger]:{id:u.U.WhisperOfHunger,name:"Whisper of Hunger",description:"Increases the melee energy gained from picking up Stasis shards.",type:t.O.Stasis,bonus:[{stat:g.WB.Strength,value:-20}],cost:1,requiredArmorAffinity:0,hash:2483898431},[u.U.WhisperOfFractures]:{id:u.U.WhisperOfFractures,name:"Whisper of Fractures",description:"Your melee energy recharges faster when you are near two or more targets.",type:t.O.Stasis,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:537774542},[u.U.WhisperOfImpetus]:{id:u.U.WhisperOfImpetus,name:"Whisper of Impetus",description:"Damaging targets with a Stasis melee reloads your stowed weapons and grants you a temporary boost to weapon ready speed.",type:t.O.Stasis,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:537774543},[u.U.WhisperOfTorment]:{id:u.U.WhisperOfTorment,name:"Whisper of Torment",description:"You gain grenade energy each time you take damage from targets. Having Frost Armor increases the amount of energy gained.",type:t.O.Stasis,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:537774541},[u.U.EchoOfExpulsion]:{id:u.U.EchoOfExpulsion,name:"Echo of Expulsion",description:"Void ability final blows cause targets to explode.",type:t.O.Void,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984665},[u.U.EchoOfProvision]:{id:u.U.EchoOfProvision,name:"Echo of Provision",description:"Damaging targets with grenades grants melee energy.",type:t.O.Void,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:2272984664},[u.U.EchoOfPersistence]:{id:u.U.EchoOfPersistence,name:"Echo of Persistence",description:"Void buffs applied to you (Invisibility, Overshield, and Devour) have increased duration.",type:t.O.Void,bonus:[{stat:g.AR.ClassAbilityRegenerationStat,value:-10}],cost:1,requiredArmorAffinity:0,hash:2272984671},[u.U.EchoOfLeeching]:{id:u.U.EchoOfLeeching,name:"Echo of Leeching",description:"Melee final blows start health regeneration for you and nearby allies.",type:t.O.Void,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984670},[u.U.EchoOfDomineering]:{id:u.U.EchoOfDomineering,name:"Echo of Domineering",description:"After suppressing a target, you gain greatly increased mobility for a short duration, and your equipped weapon is reloaded from reserves.\n\nDefeating suppressed targets creates a Void Breach.",type:t.O.Void,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984657},[u.U.EchoOfDilation]:{id:u.U.EchoOfDilation,name:"Echo of Dilation",description:"While crouched, you sneak faster and gain enhanced radar resolution.",type:t.O.Void,bonus:[{stat:g.WB.Mobility,value:10},{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984656},[u.U.EchoOfUndermining]:{id:u.U.EchoOfUndermining,name:"Echo of Undermining",description:"Your Void grenades weaken targets.",type:t.O.Void,bonus:[{stat:g.WB.Discipline,value:-20}],cost:1,requiredArmorAffinity:0,hash:2272984668},[u.U.EchoOfInstability]:{id:u.U.EchoOfInstability,name:"Echo of Instability",description:"Defeating targets with grenades grants Volatile Rounds to your Void weapons.",type:t.O.Void,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2661180600},[u.U.EchoOfHarvest]:{id:u.U.EchoOfHarvest,name:"Echo of Harvest",description:"Defeating weakened targets creates an Orb of Power and a Void Breach.",type:t.O.Void,bonus:[{stat:g.WB.Intellect,value:-10}],cost:1,requiredArmorAffinity:0,hash:2661180601},[u.U.EchoOfObscurity]:{id:u.U.EchoOfObscurity,name:"Echo of Obscurity",description:"Finisher final blows grant Invisibility.",type:t.O.Void,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:2661180602},[u.U.EchoOfStarvation]:{id:u.U.EchoOfStarvation,name:"Echo of Starvation",description:"Picking up a Void Breach or an Orb of Power grants Devour.",type:t.O.Void,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:2661180603},[u.U.EchoOfVigilance]:{id:u.U.EchoOfVigilance,name:"Echo of Vigilance",description:"Defeating a target while your shields are depleted grants you a temporary Void overshield.",type:t.O.Void,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:3854948621},[u.U.EmberOfBenelovence]:{id:u.U.EmberOfBenelovence,name:"Ember of Benevolence",description:"Applying restoration, cure, or radiant to allies grants increased grenade, melee, and class ability regeneration for a short duration.",type:t.O.Solar,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132292},[u.U.EmberOfBeams]:{id:u.U.EmberOfBeams,name:"Ember of Beams",description:"Your Solar Super projectiles have stronger target acquisition.",type:t.O.Solar,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:362132295},[u.U.EmberOfEmpyrean]:{id:u.U.EmberOfEmpyrean,name:"Ember of Empyrean",description:"Solar weapon or ability final blows extend the duration of restoration and radiant effects applied to you.",type:t.O.Solar,bonus:[{stat:g.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132294},[u.U.EmberOfCombustion]:{id:u.U.EmberOfCombustion,name:"Ember of Combustion",description:"Final blows with a Solar Super causes targets to ignite and creates a Firesprite.",type:t.O.Solar,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:362132289},[u.U.EmberOfChar]:{id:u.U.EmberOfChar,name:"Ember of Char",description:"Your Solar ignitions spread scorch to affected targets.",type:t.O.Solar,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:362132291},[u.U.EmberOfTempering]:{id:u.U.EmberOfTempering,name:"Ember of Tempering",description:"Solar weapon final blows grant you and your allies increased recovery for a short duration. Stacks 3 times.\n\nWhile Ember of Tempering is active, your weapons have increased airborne effectiveness, and your Solar weapon final blows create a Firesprite.",type:t.O.Solar,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132290},[u.U.EmberOfEruption]:{id:u.U.EmberOfEruption,name:"Ember of Eruption",description:"Your Solar ignitions have increased area of effect.",type:t.O.Solar,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276348},[u.U.EmberOfWonder]:{id:u.U.EmberOfWonder,name:"Ember of Wonder",description:"Rapidly defeating multiple targets with Solar ignitions generates an Orb of Power.",type:t.O.Solar,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276350},[u.U.EmberOfSearing]:{id:u.U.EmberOfSearing,name:"Ember of Searing",description:"Defeating scorched targets grants melee energy and creates a Firesprite.",type:t.O.Solar,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276351},[u.U.EmberOfTorches]:{id:u.U.EmberOfTorches,name:"Ember of Torches",description:"Powered melee attacks against combatants make you and nearby allies radiant.",type:t.O.Solar,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132288},[u.U.EmberOfMercy]:{id:u.U.EmberOfMercy,name:"Ember of Mercy",description:"When you revive an ally, you and other nearby allies gain restoration.\n\nPicking up a Firesprite grants restoration.",type:t.O.Solar,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:4180586737},[u.U.SparkOfBrilliance]:{id:u.U.SparkOfBrilliance,name:"Spark of Brilliance",description:"Defeating a blinded target with precision damage creates a blinding explosion.",type:t.O.Arc,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705905},[u.U.SparkOfFeedback]:{id:u.U.SparkOfFeedback,name:"Spark of Feedback",description:"Taking melee damage briefly increases your outgoing melee damage.",type:t.O.Arc,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705907},[u.U.SparkOfDischarge]:{id:u.U.SparkOfDischarge,name:"Spark of Discharge",description:"Arc weapon final blows have a chance to create an Ionic Trace.",type:t.O.Arc,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069362},[u.U.SparkOfFocus]:{id:u.U.SparkOfFocus,name:"Spark of Focus",description:"After sprinting for a short time, your class ability regeneration is increased.",type:t.O.Arc,bonus:[{stat:g.AR.ClassAbilityRegenerationStat,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069360},[u.U.SparkOfVolts]:{id:u.U.SparkOfVolts,name:"Spark of Volts",description:"Finishers make you amplified.",type:t.O.Arc,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705904},[u.U.SparkOfResistance]:{id:u.U.SparkOfResistance,name:"Spark of Resistance",description:"While surrounded by combatants, you are more resistant to incoming damage.",type:t.O.Arc,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:1727069366},[u.U.SparkOfShock]:{id:u.U.SparkOfShock,name:"Spark of Shock",description:"Your Arc grenades jolt targets.",type:t.O.Arc,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069364},[u.U.ThreadOfFury]:{id:u.U.ThreadOfFury,name:"Thread of Fury",description:"Damaging targets with a Tangle grants melee energy.",type:t.O.Strand,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:4208512219},[u.U.ThreadOfAscent]:{id:u.U.ThreadOfAscent,name:"Thread of Ascent",description:"Activating your grenade ability reloads your equipped weapon and grants bonus airborne effectiveness and handling for a short duration.",type:t.O.Strand,bonus:[{stat:g.WB.Mobility,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512216},[u.U.ThreadOfFinality]:{id:u.U.ThreadOfFinality,name:"Thread of Finality",description:"Finisher final blows create Threadlings.",type:t.O.Strand,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512217},[u.U.ThreadOfWarding]:{id:u.U.ThreadOfWarding,name:"Thread of Warding",description:"Picking up an Orb of Power grants Woven Mail.",type:t.O.Strand,bonus:[{stat:g.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:4208512222},[u.U.ThreadOfTransmutation]:{id:u.U.ThreadOfTransmutation,name:"Thread of Transmutation",description:"While you have Woven Mail, weapon final blows create a Tangle.",type:t.O.Strand,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512221},[u.U.ThreadOfEvolution]:{id:u.U.ThreadOfEvolution,name:"Thread of Evolution",description:"Threadlings travel farther and deal additional damage.",type:t.O.Strand,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512211},[u.U.ThreadOfBinding]:{id:u.U.ThreadOfBinding,name:"Thread of Binding",description:"Super final blows emit a suspending burst from the target.",type:t.O.Strand,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:3192552688},[u.U.ThreadOfGeneration]:{id:u.U.ThreadOfGeneration,name:"Thread of Generation",description:"Dealing damage generates grenade energy.",type:t.O.Strand,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:3192552691},[u.U.ThreadOfPropagation]:{id:u.U.ThreadOfPropagation,name:"Thread of Propagation",description:"Powered melee final blows grant your Strand weapons Unraveling Rounds.",type:t.O.Strand,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512210},[u.U.FacetOfAwakening]:{id:u.U.FacetOfAwakening,name:"Facet of Awakening",description:"Rapid elemental final blows and Super final blows generate an elemental pickup of the matching damage type.",type:t.O.Prismatic,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:124726505},[u.U.FacetOfCourage]:{id:u.U.FacetOfCourage,name:"Facet of Courage",description:"Your Light abilities deal increased damage to targets afflicted with Darkness debuffs.",type:t.O.Prismatic,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922124},[u.U.FacetOfDawn]:{id:u.U.FacetOfDawn,name:"Facet of Dawn",description:"Powered melee hits against targets make you Radiant. Powered melee final blows make both you and nearby allies Radiant.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:2626922126},[u.U.FacetOfDefiance]:{id:u.U.FacetOfDefiance,name:"Facet of Defiance",description:"Finishers create a detonation that either jolts, scorches, slows, severs, or makes targets volatile based on the damage type of your equipped Super.",type:t.O.Prismatic,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:74393640},[u.U.FacetOfDevotion]:{id:u.U.FacetOfDevotion,name:"Facet of Devotion",description:"Defeating targets afflicted with a Darkness debuff grants bonus Light Transcendence energy.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922125},[u.U.FacetOfDominance]:{id:u.U.FacetOfDominance,name:"Facet of Dominance",description:"Your Void grenades weaken targets, and your Arc grenades jolt targets.",type:t.O.Prismatic,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:124726504},[u.U.FacetOfGrace]:{id:u.U.FacetOfGrace,name:"Facet of Grace",description:"Defeating targets with Kinetic weapons grants you bonus Transcendence energy. Defeating targets with your Super grants you and nearby allies bonus Transcendence energy.",type:t.O.Prismatic,bonus:[{stat:g.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:2626922121},[u.U.FacetOfHonor]:{id:u.U.FacetOfHonor,name:"Facet of Honor",description:"Collecting an elemental pickup or destroying a Tangle grants Transcendence energy of the same type.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:124726501},[u.U.FacetOfJustice]:{id:u.U.FacetOfJustice,name:"Facet of Justice",description:"While Transcendent, your ability final blows explode.",type:t.O.Prismatic,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922115},[u.U.FacetOfProtection]:{id:u.U.FacetOfProtection,name:"Facet of Protection",description:"While surrounded by enemies, you are more resistant to incoming damage.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922120},[u.U.FacetOfPurpose]:{id:u.U.FacetOfPurpose,name:"Facet of Purpose",description:"Picking up an Orb of Power grants either Amplified, Restoration, Frost Armor, Woven Mail, or Overshield, based on the damage type of your equipped super.",type:t.O.Prismatic,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:124726498},[u.U.FacetOfRuin]:{id:u.U.FacetOfRuin,name:"Facet of Ruin",description:"Increases the size and damage of the burst when you shatter a Stasis crystal or frozen target and increases the area of effect of Solar ignitions.",type:t.O.Prismatic,bonus:[{stat:g.WB.Mobility,value:10}],cost:1,requiredArmorAffinity:0,hash:124726499},[u.U.FacetOfSacrifice]:{id:u.U.FacetOfSacrifice,name:"Facet of Sacrifice",description:"While you have a Light buff, ability final blows grant bonus Darkness Transcendence energy.",type:t.O.Prismatic,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:124726502}}},3244:(ht,at,_)=>{_.d(at,{Io:()=>t,Qj:()=>u,dM:()=>g});const u=5,t=-1,g=-2},4682:(ht,at,_)=>{_.d(at,{v:()=>t});var u=_(6438);class t extends u.ZP{constructor(){super("d2armorpicker-v2"),this.version(25).stores({manifestArmor:"id++, hash, isExotic",inventoryArmor:"id++, itemInstanceId, isExotic, hash, name, masterworked, clazz, slot, source",manifestCollectibles:"id++, hash",vendorNames:"id++, vendorId"})}}},6471:(ht,at,_)=>{_.d(at,{y:()=>u});var u=(()=>{return(t=u||(u={}))[t.ArmorSlotNone=0]="ArmorSlotNone",t[t.ArmorSlotHelmet=1]="ArmorSlotHelmet",t[t.ArmorSlotGauntlet=2]="ArmorSlotGauntlet",t[t.ArmorSlotChest=3]="ArmorSlotChest",t[t.ArmorSlotLegs=4]="ArmorSlotLegs",t[t.ArmorSlotClass=5]="ArmorSlotClass",u;var t})()},1043:(ht,at,_)=>{_.d(at,{AR:()=>y,Bd:()=>Nt,DH:()=>gt,ED:()=>Et,ID:()=>Rt,K9:()=>I,Mi:()=>M,Pn:()=>b,WB:()=>g,X9:()=>vt,cM:()=>Mt,iV:()=>t,kw:()=>wt,lp:()=>ot});var u=_(8333),t=(()=>{return(x=t||(t={}))[x.NONE=0]="NONE",x[x.MINOR_MOBILITY=1]="MINOR_MOBILITY",x[x.MAJOR_MOBILITY=2]="MAJOR_MOBILITY",x[x.ARTIFICE_MOBILITY=3]="ARTIFICE_MOBILITY",x[x.MINOR_RESILIENCE=4]="MINOR_RESILIENCE",x[x.MAJOR_RESILIENCE=5]="MAJOR_RESILIENCE",x[x.ARTIFICE_RESILIENCE=6]="ARTIFICE_RESILIENCE",x[x.MINOR_RECOVERY=7]="MINOR_RECOVERY",x[x.MAJOR_RECOVERY=8]="MAJOR_RECOVERY",x[x.ARTIFICE_RECOVERY=9]="ARTIFICE_RECOVERY",x[x.MINOR_DISCIPLINE=10]="MINOR_DISCIPLINE",x[x.MAJOR_DISCIPLINE=11]="MAJOR_DISCIPLINE",x[x.ARTIFICE_DISCIPLINE=12]="ARTIFICE_DISCIPLINE",x[x.MINOR_INTELLECT=13]="MINOR_INTELLECT",x[x.MAJOR_INTELLECT=14]="MAJOR_INTELLECT",x[x.ARTIFICE_INTELLECT=15]="ARTIFICE_INTELLECT",x[x.MINOR_STRENGTH=16]="MINOR_STRENGTH",x[x.MAJOR_STRENGTH=17]="MAJOR_STRENGTH",x[x.ARTIFICE_STRENGTH=18]="ARTIFICE_STRENGTH",t;var x})(),g=(()=>{return(x=g||(g={}))[x.Mobility=0]="Mobility",x[x.Resilience=1]="Resilience",x[x.Recovery=2]="Recovery",x[x.Discipline=3]="Discipline",x[x.Intellect=4]="Intellect",x[x.Strength=5]="Strength",g;var x})();const I={[t.NONE]:[g.Strength,0,0,0],[t.MINOR_MOBILITY]:[g.Mobility,5,1,1703647492],[t.MAJOR_MOBILITY]:[g.Mobility,10,3,4183296050],[t.ARTIFICE_MOBILITY]:[g.Mobility,3,0,2322202118],[t.MINOR_RESILIENCE]:[g.Resilience,5,2,2532323436],[t.MAJOR_RESILIENCE]:[g.Resilience,10,4,1180408010],[t.ARTIFICE_RESILIENCE]:[g.Resilience,3,0,199176566],[t.MINOR_RECOVERY]:[g.Recovery,5,2,1237786518],[t.MAJOR_RECOVERY]:[g.Recovery,10,4,4204488676],[t.ARTIFICE_RECOVERY]:[g.Recovery,3,0,539459624],[t.MINOR_DISCIPLINE]:[g.Discipline,5,1,4021790309],[t.MAJOR_DISCIPLINE]:[g.Discipline,10,3,1435557120],[t.ARTIFICE_DISCIPLINE]:[g.Discipline,3,0,617569843],[t.MINOR_INTELLECT]:[g.Intellect,5,2,350061697],[t.MAJOR_INTELLECT]:[g.Intellect,10,4,2724608735],[t.ARTIFICE_INTELLECT]:[g.Intellect,3,0,3160845295],[t.MINOR_STRENGTH]:[g.Strength,5,1,2639422088],[t.MAJOR_STRENGTH]:[g.Strength,10,3,4287799666],[t.ARTIFICE_STRENGTH]:[g.Strength,3,0,2507624050]},M={[g.Mobility]:"Mobility",[g.Resilience]:"Resilience",[g.Recovery]:"Recovery",[g.Discipline]:"Discipline",[g.Intellect]:"Intellect",[g.Strength]:"Strength"},wt={[g.Mobility]:2996146975,[g.Resilience]:392767087,[g.Recovery]:1943323491,[g.Discipline]:1735777505,[g.Intellect]:144602215,[g.Strength]:4244567218},ot={[g.Mobility]:"https://www.bungie.net/common/destiny2_content/icons/e26e0e93a9daf4fdd21bf64eb9246340.png",[g.Resilience]:"https://www.bungie.net/common/destiny2_content/icons/202ecc1c6febeb6b97dafc856e863140.png",[g.Recovery]:"https://www.bungie.net/common/destiny2_content/icons/128eee4ee7fc127851ab32eac6ca91cf.png",[g.Discipline]:"https://www.bungie.net/common/destiny2_content/icons/79be2d4adef6a19203f7385e5c63b45b.png",[g.Intellect]:"https://www.bungie.net/common/destiny2_content/icons/d1c154469670e9a592c9d4cbdcae5764.png",[g.Strength]:"https://www.bungie.net/common/destiny2_content/icons/ea5af04ccd6a3470a44fd7bb0f66e2f7.png"};var y=(()=>{return(x=y||(y={}))[x.ClassAbilityRegenerationStat=10]="ClassAbilityRegenerationStat",y;var x})(),b=(()=>{return(x=b||(b={}))[x.None=0]="None",x[x.SlotCrotasEnd=2]="SlotCrotasEnd",x[x.SlotRootOfNightmares=3]="SlotRootOfNightmares",x[x.SlotKingsFall=4]="SlotKingsFall",x[x.SlotVowOfTheDisciple=5]="SlotVowOfTheDisciple",x[x.SlotVaultOfGlass=6]="SlotVaultOfGlass",x[x.SlotDeepStoneCrypt=7]="SlotDeepStoneCrypt",x[x.SlotGardenOfSalvation=8]="SlotGardenOfSalvation",x[x.SlotLastWish=9]="SlotLastWish",x[x.SlotArtifice=10]="SlotArtifice",x[x.PerkIronBanner=11]="PerkIronBanner",x[x.SlotNightmare=12]="SlotNightmare",x[x.GuardianGamesClassItem=18]="GuardianGamesClassItem",x[x.PerkEchoesOfGlory=20]="PerkEchoesOfGlory",x[x.SlotSalvationsEdge=21]="SlotSalvationsEdge",x[x.COUNT=22]="COUNT",b;var x})();const Et={1760565003:b.PerkEchoesOfGlory},Mt={[b.None]:"None",[b.SlotCrotasEnd]:"Crota's End Modslot",[b.SlotRootOfNightmares]:"Root of Nightmares Modslot",[b.SlotKingsFall]:"King's Fall Modslot",[b.SlotVowOfTheDisciple]:"Vow of the Disciple Modslot",[b.SlotVaultOfGlass]:"Vault of Glass Modslot",[b.SlotDeepStoneCrypt]:"Deep Stone Crypt Modslot",[b.SlotGardenOfSalvation]:"Garden of Salvation Modslot",[b.SlotLastWish]:"Last Wish Modslot",[b.SlotArtifice]:"Artifice Modslot",[b.PerkIronBanner]:"Iron Banner Perk",[b.SlotNightmare]:"Nightmare Hunt Modslot",[b.GuardianGamesClassItem]:"Guardian Games",[b.PerkEchoesOfGlory]:"Echoes of Glory Perk",[b.SlotSalvationsEdge]:"Salvation's Edge Modslot",[b.COUNT]:""},vt={[b.None]:"https://www.bungie.net/img/misc/missing_icon_d2.png",[b.SlotCrotasEnd]:"https://www.bungie.net/common/destiny2_content/icons/7ddce334fe8391848f408227439c1d7a.png",[b.SlotRootOfNightmares]:"https://www.bungie.net/common/destiny2_content/icons/f2b6ec58e14244e4972705897667c246.png",[b.SlotKingsFall]:"https://www.bungie.net/common/destiny2_content/icons/0e515c7cf25a2f2350b788e6f5b7f8eb.png",[b.SlotVowOfTheDisciple]:"https://www.bungie.net/common/destiny2_content/icons/b84b6ea72dd05de7123aa2ae87ba0d6a.png",[b.SlotVaultOfGlass]:"https://www.bungie.net/common/destiny2_content/icons/7c9a2d95113de19c5acdbed57775abf4.png",[b.SlotDeepStoneCrypt]:"https://www.bungie.net/common/destiny2_content/icons/d6452d010cfe72a51a9089ec68ab223c.png",[b.SlotGardenOfSalvation]:"https://www.bungie.net/common/destiny2_content/icons/53d6e3505cd03d4026b3dbbd9ccc19b6.jpg",[b.SlotLastWish]:"https://www.bungie.net/common/destiny2_content/icons/76f0c1520fa384ceb27bd2469225dd8a.png",[b.SlotArtifice]:"https://www.bungie.net/common/destiny2_content/icons/46eec78bb7864641bbd7ba1fd4f9f248.png",[b.PerkIronBanner]:"https://bungie.net/common/destiny2_content/icons/DestinyActivityModeDefinition_fe57052d7cf971f7502daa75a2ca2437.png",[b.SlotNightmare]:"https://www.bungie.net/common/destiny2_content/icons/53d6e3505cd03d4026b3dbbd9ccc19b6.jpg",[b.GuardianGamesClassItem]:"https://www.bungie.net/common/destiny2_content/icons/DestinyEventCardDefinition_ce6c2cf855dce694bcc89803b6bc44b7.png",[b.SlotSalvationsEdge]:"https://www.bungie.net/common/destiny2_content/icons/f4a1f99b49ecf412726d71ea9ee15540.png",[b.PerkEchoesOfGlory]:"https://www.bungie.net/common/destiny2_content/icons/c67322c917e16f3b8a4cb962e3f11166.png",[b.COUNT]:""},gt={[b.SlotCrotasEnd]:717667840,[b.SlotRootOfNightmares]:4144354978,[b.SlotKingsFall]:1728096240,[b.SlotVowOfTheDisciple]:2447143568,[b.SlotVaultOfGlass]:3738398030,[b.SlotDeepStoneCrypt]:4055462131,[b.SlotGardenOfSalvation]:706611068,[b.SlotLastWish]:1679876242,[b.SlotArtifice]:3727270518,[b.PerkIronBanner]:2472875850,[b.SlotNightmare]:1180997867,[b.SlotSalvationsEdge]:4059283783,[b.PerkEchoesOfGlory]:2352831367},Rt={[b.SlotCrotasEnd]:"modslot:crotasend",[b.SlotRootOfNightmares]:"modslot:rootofnightmares",[b.SlotKingsFall]:"modslot:kingsfall",[b.SlotVowOfTheDisciple]:"modslot:vowofthedisciple",[b.SlotVaultOfGlass]:"modslot:vaultofglass",[b.SlotDeepStoneCrypt]:"modslot:deepstonecrypt",[b.SlotGardenOfSalvation]:"modslot:gardenofsalvation",[b.SlotLastWish]:"modslot:lastwish",[b.SlotArtifice]:'perkname:"artifice armor"',[b.PerkIronBanner]:'perkname:"iron lord\'s pride"',[b.SlotNightmare]:"modslot:nightmare",[b.GuardianGamesClassItem]:"(hash:537041732 or hash:366019830 or hash:1013401891)",[b.PerkEchoesOfGlory]:'exactperk:"echoes of glory"',[b.SlotSalvationsEdge]:"(source:salvationsedge is:armor)"},Nt={1:{[u.O.Stasis]:873720784,[u.O.Void]:2453351420,[u.O.Solar]:2240888816,[u.O.Arc]:2328211300,[u.O.Strand]:3785442599,[u.O.Prismatic]:4282591831},0:{[u.O.Stasis]:613647804,[u.O.Void]:2842471112,[u.O.Solar]:2550323932,[u.O.Arc]:2932390016,[u.O.Strand]:242419885,[u.O.Prismatic]:1616346845},2:{[u.O.Stasis]:3291545503,[u.O.Void]:2849050827,[u.O.Solar]:3941205951,[u.O.Arc]:3168997075,[u.O.Strand]:4204413574,[u.O.Prismatic]:3893112950}}},1650:(ht,at,_)=>{_.d(at,{w:()=>u});var u=(()=>{return(t=u||(u={}))[t.None=0]="None",t[t.ReduceUsedModSockets=1]="ReduceUsedModSockets",t[t.ReduceUsedModPoints=2]="ReduceUsedModPoints",u;var t})()},7580:(ht,at,_)=>{_.d(at,{U:()=>u});var u=(()=>{return(t=u||(u={}))[t.WhisperOfDurance=1e3]="WhisperOfDurance",t[t.WhisperOfChains=1001]="WhisperOfChains",t[t.WhisperOfConduction=1002]="WhisperOfConduction",t[t.WhisperOfBonds=1101]="WhisperOfBonds",t[t.WhisperOfHunger=1102]="WhisperOfHunger",t[t.WhisperOfFractures=1103]="WhisperOfFractures",t[t.WhisperOfTorment=1104]="WhisperOfTorment",t[t.EchoOfExpulsion=1200]="EchoOfExpulsion",t[t.EchoOfProvision=1201]="EchoOfProvision",t[t.EchoOfPersistence=1202]="EchoOfPersistence",t[t.EchoOfLeeching=1203]="EchoOfLeeching",t[t.EchoOfDomineering=1204]="EchoOfDomineering",t[t.EchoOfDilation=1205]="EchoOfDilation",t[t.EchoOfUndermining=1206]="EchoOfUndermining",t[t.EchoOfInstability=1207]="EchoOfInstability",t[t.EchoOfHarvest=1208]="EchoOfHarvest",t[t.EchoOfObscurity=1209]="EchoOfObscurity",t[t.EchoOfStarvation=1210]="EchoOfStarvation",t[t.EchoOfVigilance=1211]="EchoOfVigilance",t[t.EmberOfBenelovence=1300]="EmberOfBenelovence",t[t.EmberOfBeams=1301]="EmberOfBeams",t[t.EmberOfEmpyrean=1302]="EmberOfEmpyrean",t[t.EmberOfCombustion=1303]="EmberOfCombustion",t[t.EmberOfChar=1304]="EmberOfChar",t[t.EmberOfTempering=1305]="EmberOfTempering",t[t.EmberOfEruption=1306]="EmberOfEruption",t[t.EmberOfWonder=1307]="EmberOfWonder",t[t.EmberOfSearing=1308]="EmberOfSearing",t[t.EmberOfTorches=1309]="EmberOfTorches",t[t.EmberOfMercy=1310]="EmberOfMercy",t[t.SparkOfBrilliance=1400]="SparkOfBrilliance",t[t.SparkOfFeedback=1401]="SparkOfFeedback",t[t.SparkOfDischarge=1402]="SparkOfDischarge",t[t.SparkOfFocus=1403]="SparkOfFocus",t[t.SparkOfVolts=1404]="SparkOfVolts",t[t.SparkOfResistance=1405]="SparkOfResistance",t[t.SparkOfShock=1406]="SparkOfShock",t[t.ThreadOfFury=1600]="ThreadOfFury",t[t.ThreadOfAscent=1601]="ThreadOfAscent",t[t.ThreadOfFinality=1602]="ThreadOfFinality",t[t.ThreadOfWarding=1603]="ThreadOfWarding",t[t.ThreadOfTransmutation=1604]="ThreadOfTransmutation",t[t.ThreadOfEvolution=1605]="ThreadOfEvolution",t[t.ThreadOfBinding=1606]="ThreadOfBinding",t[t.ThreadOfGeneration=1607]="ThreadOfGeneration",t[t.ThreadOfPropagation=1608]="ThreadOfPropagation",t[t.WhisperOfImpetus=537774543]="WhisperOfImpetus",t[t.FacetOfAwakening=1700]="FacetOfAwakening",t[t.FacetOfCourage=1701]="FacetOfCourage",t[t.FacetOfDawn=1702]="FacetOfDawn",t[t.FacetOfDefiance=1703]="FacetOfDefiance",t[t.FacetOfDevotion=1704]="FacetOfDevotion",t[t.FacetOfDominance=1705]="FacetOfDominance",t[t.FacetOfGrace=1706]="FacetOfGrace",t[t.FacetOfHonor=1707]="FacetOfHonor",t[t.FacetOfJustice=1708]="FacetOfJustice",t[t.FacetOfProtection=1709]="FacetOfProtection",t[t.FacetOfPurpose=1710]="FacetOfPurpose",t[t.FacetOfRuin=1711]="FacetOfRuin",t[t.FacetOfSacrifice=1712]="FacetOfSacrifice",u;var t})()},8333:(ht,at,_)=>{_.d(at,{O:()=>u});var u=(()=>{return(t=u||(u={}))[t.CombatStyleMod=0]="CombatStyleMod",t[t.Stasis=1]="Stasis",t[t.Void=2]="Void",t[t.Solar=3]="Solar",t[t.Arc=4]="Arc",t[t.Strand=5]="Strand",t[t.Prismatic=6]="Prismatic",u;var t})()},4661:(ht,at,_)=>{_.d(at,{V:()=>R});var u=_(4859),t=_(9549),g=_(4385),I=_(3238),M=_(7314),wt=_(4144),ot=_(455),y=_(2143),b=_(3546),Et=_(266),Mt=_(3162),vt=_(7392),gt=_(6308),Rt=_(8739),Nt=_(3683),x=_(3217),_t=_(811),st=_(6338),Y=_(7084),ct=_(5412),Ht=_(7009),Lt=_(1572),f=_(3848),C=_(7331),U=_(3267),E=_(4006),F=_(9814),J=_(4650);let R=(()=>{class c{}return c.\u0275fac=function(T){return new(T||c)},c.\u0275mod=J.oAB({type:c}),c.\u0275inj=J.cJS({imports:[u.ot,t.lN,g.LD,I.Ng,M.KP,wt.c,ot.rP,y.p0,b.QW,Et.AV,Mt.Cv,vt.Ps,gt.JX,Rt.TU,Nt.g0,x.Tx,_t.vV,st.ie,Y.To,ct.Is,Ht.ZX,Lt.Cq,f.Nh,C.Hi,U.SJ,E.UX,E.u5,F.o9,F.o9,E.UX,E.u5,u.ot,t.lN,g.LD,I.Ng,M.KP,wt.c,ot.rP,y.p0,b.QW,Et.AV,Mt.Cv,vt.Ps,gt.JX,Rt.TU,Nt.g0,x.Tx,_t.vV,st.ie,Y.To,ct.Is,Ht.ZX,Lt.Cq,f.Nh,C.Hi,U.SJ]}),c})()},6982:(ht,at,_)=>{_.d(at,{jG:()=>Ht,_1:()=>Lt});var u=_(5861),t=_(6471),g=_(3244),I=_(443),M=_(1043),wt=_(2340);const ot={1:[[2,1,0,11],[2,3,0,21],[2,1,1,21],[2,1,2,31]],2:[[4,0,0,12],[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,0,2,32]],3:[[1,0,0,3],[1,2,0,13],[1,0,1,13],[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,2,2,33]],4:[[3,1,0,14],[3,3,0,24],[3,1,1,24],[3,1,2,34]],5:[[0,1,0,5],[5,0,0,15],[0,3,0,15],[0,1,1,15],[5,2,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,0,2,35],[0,3,2,35]],6:[[2,0,0,6],[2,2,0,16],[2,0,1,16],[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,2,2,36],[2,0,3,36],[2,2,3,46]],7:[[4,1,0,17],[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,1,2,37],[4,1,3,47]],8:[[1,1,0,8],[1,3,0,18],[1,1,1,18],[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38]],9:[[3,0,0,9],[3,2,0,19],[3,0,1,19],[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,2,2,39],[3,0,3,39],[3,2,3,49]],10:[[0,2,0,10],[0,0,1,10],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,1,2,40],[0,2,3,40],[5,1,3,50]],11:[[2,1,0,11],[2,3,0,21],[2,1,1,21],[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41]],12:[[4,0,0,12],[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,2,2,42],[4,0,3,42],[4,2,3,52]],13:[[1,2,0,13],[1,0,1,13],[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43]],14:[[3,1,0,14],[3,3,0,24],[3,1,1,24],[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44]],15:[[5,0,0,15],[0,3,0,15],[0,1,1,15],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,2,2,45],[5,0,3,45],[5,2,3,55]],16:[[2,2,0,16],[2,0,1,16],[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46]],17:[[4,1,0,17],[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],18:[[1,3,0,18],[1,1,1,18],[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38],[1,1,4,48]],19:[[3,2,0,19],[3,0,1,19],[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49]],20:[[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[5,1,4,60]],21:[[2,3,0,21],[2,1,1,21],[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41],[2,1,4,51]],22:[[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52]],23:[[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43],[1,0,4,43]],24:[[3,3,0,24],[3,1,1,24],[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44],[3,1,4,54]],25:[[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55]],26:[[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46],[2,0,5,56]],27:[[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],28:[[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38],[1,1,4,48]],29:[[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49],[3,0,5,59]],30:[[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],31:[[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41],[2,1,4,51]],32:[[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52],[4,0,5,62]],33:[[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43],[1,0,4,43],[1,0,5,53]],34:[[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44],[3,1,4,54]],35:[[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55],[5,0,5,65]],36:[[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46],[2,0,5,56]],37:[[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],38:[[1,3,2,38],[1,1,3,38],[1,1,4,48]],39:[[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49],[3,0,5,59]],40:[[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],41:[[2,3,2,41],[2,1,3,41],[2,1,4,51]],42:[[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52],[4,0,5,62]],43:[[1,2,3,43],[1,0,4,43],[1,0,5,53]],44:[[3,3,2,44],[3,1,3,44],[3,1,4,54]],45:[[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55],[5,0,5,65]],46:[[2,2,3,46],[2,0,4,46],[2,0,5,56]],47:[[4,3,2,47],[4,1,3,47],[4,1,4,57]],48:[[1,1,4,48]],49:[[3,2,3,49],[3,0,4,49],[3,0,5,59]],50:[[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],51:[[2,1,4,51]],52:[[4,2,3,52],[4,0,4,52],[4,0,5,62]],53:[[1,0,5,53]],54:[[3,1,4,54]],55:[[5,2,3,55],[5,0,4,55],[5,0,5,65]],56:[[2,0,5,56]],57:[[4,1,4,57]],58:[],59:[[3,0,5,59]],60:[[5,1,4,60]],61:[],62:[[4,0,5,62]],63:[],64:[],65:[[5,0,5,65]]},y={1:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],2:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],3:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],4:[[0,1,0,5],[2,0,0,6],[0,0,1,10]],5:[[0,1,0,5],[2,0,0,6],[0,0,1,10]],6:[[2,0,0,6],[1,1,0,8],[0,2,0,10],[0,0,1,10]],7:[[1,1,0,8],[3,0,0,9],[0,2,0,10],[0,0,1,10]],8:[[1,1,0,8],[3,0,0,9],[0,2,0,10],[0,0,1,10]],9:[[3,0,0,9],[0,2,0,10],[0,0,1,10],[2,1,0,11]],10:[[0,2,0,10],[0,0,1,10],[2,1,0,11],[4,0,0,12]],11:[[2,1,0,11],[4,0,0,12],[1,2,0,13],[1,0,1,13],[0,3,0,15],[0,1,1,15],[0,0,2,20]],12:[[4,0,0,12],[1,2,0,13],[1,0,1,13],[3,1,0,14],[0,3,0,15],[0,1,1,15],[0,0,2,20]],13:[[1,2,0,13],[1,0,1,13],[3,1,0,14],[5,0,0,15],[0,3,0,15],[0,1,1,15],[0,0,2,20]],14:[[3,1,0,14],[5,0,0,15],[0,3,0,15],[0,1,1,15],[2,2,0,16],[2,0,1,16],[0,0,2,20]],15:[[5,0,0,15],[0,3,0,15],[0,1,1,15],[2,2,0,16],[2,0,1,16],[4,1,0,17],[0,0,2,20]],16:[[2,2,0,16],[2,0,1,16],[4,1,0,17],[1,3,0,18],[1,1,1,18],[0,4,0,20],[0,2,1,20],[0,0,2,20]],17:[[4,1,0,17],[1,3,0,18],[1,1,1,18],[3,2,0,19],[3,0,1,19],[0,4,0,20],[0,2,1,20],[0,0,2,20]],18:[[1,1,1,18],[1,3,0,18],[3,2,0,19],[3,0,1,19],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20]],19:[[3,2,0,19],[3,0,1,19],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[2,3,0,21],[2,1,1,21]],20:[[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[2,3,0,21],[2,1,1,21],[4,2,0,22],[4,0,1,22]],21:[[2,3,0,21],[2,1,1,21],[4,2,0,22],[4,0,1,22],[1,4,0,23],[1,2,1,23],[1,0,2,23],[0,5,0,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],22:[[4,2,0,22],[4,0,1,22],[1,4,0,23],[1,2,1,23],[1,0,2,23],[3,3,0,24],[3,1,1,24],[0,5,0,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],23:[[1,4,0,23],[1,2,1,23],[1,0,2,23],[3,3,0,24],[3,1,1,24],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],24:[[3,3,0,24],[3,1,1,24],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[2,4,0,26],[2,2,1,26],[2,0,2,26],[0,0,3,30]],25:[[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[2,4,0,26],[2,2,1,26],[2,0,2,26],[4,3,0,27],[4,1,1,27],[0,0,3,30]],26:[[2,4,0,26],[2,2,1,26],[2,0,2,26],[4,3,0,27],[4,1,1,27],[1,5,0,28],[1,3,1,28],[1,1,2,28],[0,4,1,30],[0,2,2,30],[0,0,3,30]],27:[[4,3,0,27],[4,1,1,27],[1,5,0,28],[1,3,1,28],[1,1,2,28],[3,4,0,29],[3,2,1,29],[3,0,2,29],[0,4,1,30],[0,2,2,30],[0,0,3,30]],28:[[1,5,0,28],[1,3,1,28],[1,1,2,28],[3,4,0,29],[3,2,1,29],[3,0,2,29],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30]],29:[[3,4,0,29],[3,2,1,29],[3,0,2,29],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[2,5,0,31],[2,3,1,31],[2,1,2,31]],30:[[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[2,5,0,31],[2,3,1,31],[2,1,2,31],[4,4,0,32],[4,2,1,32],[4,0,2,32]],31:[[2,5,0,31],[2,3,1,31],[2,1,2,31],[4,4,0,32],[4,2,1,32],[4,0,2,32],[1,4,1,33],[1,2,2,33],[1,0,3,33],[0,3,2,35],[0,1,3,35],[0,0,4,40]],32:[[4,4,0,32],[4,2,1,32],[4,0,2,32],[1,4,1,33],[1,2,2,33],[1,0,3,33],[3,5,0,34],[3,3,1,34],[3,1,2,34],[0,3,2,35],[0,1,3,35],[0,0,4,40]],33:[[1,4,1,33],[1,2,2,33],[1,0,3,33],[3,5,0,34],[3,3,1,34],[3,1,2,34],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[0,0,4,40]],34:[[3,5,0,34],[3,3,1,34],[3,1,2,34],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[2,4,1,36],[2,2,2,36],[2,0,3,36],[0,0,4,40]],35:[[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[2,4,1,36],[2,2,2,36],[2,0,3,36],[4,5,0,37],[4,3,1,37],[4,1,2,37],[0,0,4,40]],36:[[2,4,1,36],[2,2,2,36],[2,0,3,36],[4,5,0,37],[4,3,1,37],[4,1,2,37],[1,3,2,38],[1,1,3,38],[0,2,3,40],[0,0,4,40]],37:[[4,5,0,37],[4,3,1,37],[4,1,2,37],[1,3,2,38],[1,1,3,38],[3,4,1,39],[3,2,2,39],[3,0,3,39],[0,2,3,40],[0,0,4,40]],38:[[1,3,2,38],[1,1,3,38],[3,4,1,39],[3,2,2,39],[3,0,3,39],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40]],39:[[3,4,1,39],[3,2,2,39],[3,0,3,39],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[2,3,2,41],[2,1,3,41]],40:[[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[2,3,2,41],[2,1,3,41],[4,4,1,42],[4,2,2,42],[4,0,3,42]],41:[[2,3,2,41],[2,1,3,41],[4,4,1,42],[4,2,2,42],[4,0,3,42],[1,2,3,43],[1,0,4,43],[0,1,4,45],[0,0,5,50]],42:[[4,4,1,42],[4,2,2,42],[4,0,3,42],[1,2,3,43],[1,0,4,43],[3,3,2,44],[3,1,3,44],[0,1,4,45],[0,0,5,50]],43:[[1,2,3,43],[1,0,4,43],[3,3,2,44],[3,1,3,44],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[0,0,5,50]],44:[[3,3,2,44],[3,1,3,44],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[2,2,3,46],[2,0,4,46],[0,0,5,50]],45:[[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[2,2,3,46],[2,0,4,46],[4,3,2,47],[4,1,3,47],[0,0,5,50]],46:[[2,2,3,46],[2,0,4,46],[4,3,2,47],[4,1,3,47],[1,1,4,48],[0,0,5,50]],47:[[4,3,2,47],[4,1,3,47],[1,1,4,48],[3,2,3,49],[3,0,4,49],[0,0,5,50]],48:[[1,1,4,48],[3,2,3,49],[3,0,4,49],[5,3,2,50],[5,1,3,50],[0,0,5,50]],49:[[3,2,3,49],[3,0,4,49],[5,3,2,50],[5,1,3,50],[0,0,5,50],[2,1,4,51]],50:[[5,3,2,50],[5,1,3,50],[0,0,5,50],[2,1,4,51],[4,2,3,52],[4,0,4,52]],51:[[2,1,4,51],[4,2,3,52],[4,0,4,52],[1,0,5,53]],52:[[4,2,3,52],[4,0,4,52],[1,0,5,53],[3,1,4,54]],53:[[1,0,5,53],[3,1,4,54],[5,2,3,55],[5,0,4,55]],54:[[3,1,4,54],[5,2,3,55],[5,0,4,55],[2,0,5,56]],55:[[5,2,3,55],[5,0,4,55],[2,0,5,56],[4,1,4,57]],56:[[2,0,5,56],[4,1,4,57]],57:[[4,1,4,57],[3,0,5,59]],58:[[3,0,5,59],[5,1,4,60]],59:[[3,0,5,59],[5,1,4,60]],60:[[5,1,4,60],[4,0,5,62]],61:[[4,0,5,62]],62:[[4,0,5,62]],63:[[5,0,5,65]],64:[[5,0,5,65]],65:[[5,0,5,65]]};var b=_(1650);function Mt(f){return Object.prototype.hasOwnProperty.call(f,"armor")&&Object.prototype.hasOwnProperty.call(f,"usedArtifice")&&Object.prototype.hasOwnProperty.call(f,"usedMods")&&Object.prototype.hasOwnProperty.call(f,"statsWithMods")&&Object.prototype.hasOwnProperty.call(f,"classItemPerk")}function vt(f,C,U,E,F,J,R){var c=f.selectedExotics[0]||0;let D=C.slice();if((!E.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||E.hash!=c)&&f.armorPerks[t.y.ArmorSlotHelmet].fixed&&f.armorPerks[t.y.ArmorSlotHelmet].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotHelmet].value!=E.perk)return{valid:!1};if((!F.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||F.hash!=c)&&f.armorPerks[t.y.ArmorSlotGauntlet].fixed&&f.armorPerks[t.y.ArmorSlotGauntlet].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotGauntlet].value!=F.perk)return{valid:!1};if((!J.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||J.hash!=c)&&f.armorPerks[t.y.ArmorSlotChest].fixed&&f.armorPerks[t.y.ArmorSlotChest].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotChest].value!=J.perk)return{valid:!1};if((!R.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||R.hash!=c)&&f.armorPerks[t.y.ArmorSlotLegs].fixed&&f.armorPerks[t.y.ArmorSlotLegs].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotLegs].value!=R.perk)return{valid:!1};if(f.armorPerks[t.y.ArmorSlotClass].fixed&&f.armorPerks[t.y.ArmorSlotClass].value!=M.Pn.None&&!U.has(f.armorPerks[t.y.ArmorSlotClass].value))return{valid:!1};D[E.perk]--,D[F.perk]--,D[J.perk]--,D[R.perk]--,c>0&&(E.hash==c?D[f.armorPerks[E.slot].value]--:F.hash==c?D[f.armorPerks[F.slot].value]--:J.hash==c?D[f.armorPerks[J.slot].value]--:R.hash==c&&D[f.armorPerks[R.slot].value]--);let T=0;for(let H=1;HC.minimumStatTiers[h].value||!C.allowExactStats&&Z[h]/10>=C.minimumStatTiers[h].value+1))return null;let ut=K.filter(h=>(!h.isExotic||!C.ignoreExistingExoticArtificeSlots)&&h.perk==M.Pn.SlotArtifice||C.assumeEveryLegendaryIsArtifice&&!h.isExotic||C.assumeEveryExoticIsArtifice&&h.isExotic).length;T&&(ut+=1);const it=[Math.max(0,10*C.minimumStatTiers[0].value-Z[0]),Math.max(0,10*C.minimumStatTiers[1].value-Z[1]),Math.max(0,10*C.minimumStatTiers[2].value-Z[2]),Math.max(0,10*C.minimumStatTiers[3].value-Z[3]),Math.max(0,10*C.minimumStatTiers[4].value-Z[4]),Math.max(0,10*C.minimumStatTiers[5].value-Z[5])];if(C.onlyShowResultsWithNoWastedStats)for(let h=0;h<6;h++){const L=10-Z[h]%10;it[h]=Math.max(it[h],L<10?L:0)}const Zt=[0,0,0,0,0,0];if(C.tryLimitWastedStats)for(let h=0;h<6;h++)0==it[h]&&!C.minimumStatTiers[h].fixed&&Z[h]<100&&Z[h]%10>0&&(Zt[h]=10-Z[h]%10);const xt=Zt.reduce((h,L)=>h+L,0),It=it[0]+it[1]+it[2]+it[3]+it[4]+it[5];if(It>50+3*ut)return null;let ft;if(ft=0==It&&0==xt?[]:ct(C,it,Zt,ut,c,C.modOptimizationStrategy),null==ft)return null;const w=[Math.max(0,100-Z[0]),Math.max(0,100-Z[1]),Math.max(0,100-Z[2]),Math.max(0,100-Z[3]),Math.max(0,100-Z[4]),Math.max(0,100-Z[5])];let P=[],N=[];for(let h=0;h<4;h++)for(let L=h+1;L<5;L++)for(let z=L+1;z<6;z++){let j=it.slice();if(j[h]=w[h],j[L]=w[L],j[z]=w[z],j[0]+j[1]+j[2]+j[3]+j[4]+j[5]<=65){P.push([h,L,z]);for(let Ot=z+1;Ot<6;Ot++){let bt=j.slice();bt[Ot]=w[Ot],bt[0]+bt[1]+bt[2]+bt[3]+bt[4]+bt[5]<=65&&N.push([h,L,z,Ot])}}}if(P.length>0){for(let h of P){const L=it.slice();for(let j of h)L[j]=w[j];null!=ct(C,L,[0,0,0,0,0,0],ut,c,b.w.None)&&f.statCombo3x100.add((1<=C.minimumStatTiers[h].value&&z>f.maximumPossibleTiers[h]/10&&!(Z[h]>=10*z);z--){const j=10-Z[h]%10;if(it[h]=Math.max(j<10?j:0,10*z-Z[h]),null!=ct(C,it,[0,0,0,0,0,0],ut,c,b.w.None)){f.maximumPossibleTiers[h]=10*z;break}}it[h]=L}if(D)return[];const et=ft.filter(h=>h%3==0),rt=ft.filter(h=>h%3!=0);for(let h of ft)Z[Math.floor((h-1)/3)]+=M.K9[h][1];const X=Lt(Z);return C.onlyShowResultsWithNoWastedStats&&X>0?null:function Et(f,C,U,E,F,J,R,c){return{armor:[f.id,C.id,U.id,E.id],usedArtifice:F,usedMods:J,classItemPerk:M.Pn.None,statsWithMods:R,statsWithoutMods:c}}(U,E,F,J,et,rt,Z,B)}function ct(f,C,U,E,F,J=b.w.None){const R=C[0]+C[1]+C[2]+C[3]+C[4]+C[5];if(R>65)return null;const c=f.onlyShowResultsWithNoWastedStats?ot:y,D=[c[C[0]]||[[0,0,0,0]],c[C[1]]||[[0,0,0,0]],c[C[2]]||[[0,0,0,0]],c[C[3]]||[[0,0,0,0]],c[C[4]]||[[0,0,0,0]],c[C[5]]||[[0,0,0,0]]];if(f.allowExactStats)for(let w=0;w<6;w++)f.minimumStatTiers[w].fixed&&C[w]>0&&(D[w]=ot[C[w]]||[[0,0,0,0]],D[w]=D[w].filter(P=>P[3]-C[w]<10));for(let w=0;w0){const P=c[U[w]].filter(N=>0==N[2]&&N[3]%10>0&&(U[w]+N[3])%10N+et[1]+et[2]:J==b.w.ReduceUsedModPoints?(P,N,et)=>P+ut[et]*N[1]+it[et]*N[2]:(P,N)=>P+N[3],0)}function xt(w,P=!1){const N=w.reduce((rt,X,h)=>[rt[0]+X[0],rt[1]+X[1],rt[2]+X[2],rt[3]+X[3]-C[h]],[0,0,0,0]);if(Zt(w)>K||N[0]>E||N[1]+N[2]>H||N[3]<0)return!1;if(!P||5==Z)return!0;let et=[];for(let rt=0;rtH)return!1;w.sort((N,et)=>et-N);for(let N=0;N0&&J!=b.w.None;t:for(let w of D[0])if(xt([w]))for(let P of D[1])if(xt([w,P]))for(let N of D[2])if(xt([w,P,N])&&!(It&&Zt([w,P,N])>=K))for(let et of D[3])if(xt([w,P,N,et])&&!(It&&Zt([w,P,N,et])>=K))for(let rt of D[4])if(xt([w,P,N,et,rt])&&!(It&&Zt([w,P,N,et,rt])>=K))e:for(let X of D[5]){let h=[w,P,N,et,rt,X];if(!xt(h,!0))continue;for(let z=0;z<6;z++)if(U[z]>0&&0==h[z][3]&&null!=k)continue e;let L=Zt(h);if(L100?f[M.WB.Mobility]-100:f[M.WB.Mobility]%10)+(f[M.WB.Resilience]>100?f[M.WB.Resilience]-100:f[M.WB.Resilience]%10)+(f[M.WB.Recovery]>100?f[M.WB.Recovery]-100:f[M.WB.Recovery]%10)+(f[M.WB.Discipline]>100?f[M.WB.Discipline]-100:f[M.WB.Discipline]%10)+(f[M.WB.Intellect]>100?f[M.WB.Intellect]-100:f[M.WB.Intellect]%10)+(f[M.WB.Strength]>100?f[M.WB.Strength]-100:f[M.WB.Strength]%10)}addEventListener("message",function(){var f=(0,u.Z)(function*({data:C}){const U=C.threadSplit,E=C.config;let F=C.selectedExotics,J=C.items;if(null==U||null==E||null==J)return;const R=Date.now();console.debug("START RESULTS BUILDER 2"),console.time(`total #${U.current}`),E.onlyShowResultsWithNoWastedStats=wt.N.featureFlags.enableZeroWaste&&E.onlyShowResultsWithNoWastedStats,wt.N.featureFlags.enableModslotLimitation||(E.maximumModSlots[t.y.ArmorSlotHelmet].value=5,E.maximumModSlots[t.y.ArmorSlotGauntlet].value=5,E.maximumModSlots[t.y.ArmorSlotChest].value=5,E.maximumModSlots[t.y.ArmorSlotLegs].value=5,E.maximumModSlots[t.y.ArmorSlotClass].value=5),console.log("Using config",C.config);let c=J.filter(W=>W.slot==t.y.ArmorSlotHelmet).filter(W=>!E.useFotlArmor||[199733460,2545426109,3224066584].indexOf(W.hash)>-1),D=J.filter(W=>W.slot==t.y.ArmorSlotGauntlet),T=J.filter(W=>W.slot==t.y.ArmorSlotChest),k=J.filter(W=>W.slot==t.y.ArmorSlotLegs);if(U.count>1){var K=[[c,c.length],[D,D.length],[T,T.length],[k,k.length]].sort((W,Ft)=>Ft[1]-W[1])[0][0],H=Math.round(K.length/U.count),Z=H*U.current,B=Z+H;U.current==U.count-1&&(B=K.length),K.splice(B),K.splice(0,Z)}let ut=J.filter(W=>W.slot==t.y.ArmorSlotClass),it=ut.filter(W=>W.isExotic).length,Zt=ut.length-it,xt=new Set(ut.filter(W=>!W.isExotic).map(W=>W.perk)),It=new Set(ut.filter(W=>W.isExotic).map(W=>W.perk));Zt>0&&(E.assumeEveryLegendaryIsArtifice||E.assumeClassItemIsArtifice)&&xt.add(M.Pn.SlotArtifice),it>0&&E.assumeEveryExoticIsArtifice&&It.add(M.Pn.SlotArtifice),console.debug("items",JSON.stringify({helmets:c.length,gauntlets:D.length,chests:T.length,legs:k.length,availableClassItemTypes:xt}));const ft={maximumPossibleTiers:[0,0,0,0,0,0],statCombo3x100:new Set,statCombo4x100:new Set},w=function gt(f){const C=[0,0,0,0,0,0];for(const E of f.enabledMods)for(const F of I.F[E].bonus)C[F.stat==M.AR.ClassAbilityRegenerationStat?[1,0,2][f.characterClass]:F.stat]+=F.value;return C}(E),P=function Rt(f){let C=[];for(let U=0;UU>0).sort((U,E)=>E-U)}(E),et=F.length<=1,rt=xt.has(M.Pn.SlotArtifice),X=It.has(M.Pn.SlotArtifice),h=E.selectedExotics.indexOf(g.dM)>-1,L=ut.sort((W,Ft)=>W.masterworked?-1:1).find(W=>W.isExotic)||null,z=!!L&&E.selectedExotics.indexOf(L.hash)>-1;console.log("hasArtificeClassItem",rt);let j=[],Ut=0,Ot=0,bt=0,qt=!1,Yt=function _t(f,C,U,E){let F=0;const J=f.filter(Z=>Z.isExotic).length,R=f.length-J,c=C.filter(Z=>Z.isExotic).length,D=C.length-c,T=U.filter(Z=>Z.isExotic).length,k=U.length-T,K=E.filter(Z=>Z.isExotic).length,H=E.length-K;return F+=J*D*k*H,F+=R*c*k*H,F+=R*D*T*H,F+=R*D*k*K,F+=R*D*k*H,F}(c,D,T,k),Wt=0,Tt=0;console.log("estimatedCalculations",Yt);let ie=Yt>=1e6?125:75;console.time(`tm #${U.current}`);for(let[W,Ft,Xt,jt]of function*x(f,C,U,E,F,J){for(let R of f)for(let c of C)if(!(F&&R.isExotic&&c.isExotic))for(let D of U)if(!F||!R.isExotic&&!c.isExotic||!D.isExotic)for(let T of E)F&&(R.isExotic||c.isExotic||D.isExotic)&&T.isExotic||J&&!(R.isExotic||c.isExotic||D.isExotic||T.isExotic)||(yield[R,c,D,T])}(c,D,T,k,et,h)){Wt++;const Bt=vt(E,P,xt,W,Ft,Xt,jt);if(!Bt.valid)continue;const me=!Bt.requiredClassItemType||Bt.requiredClassItemType==M.Pn.SlotArtifice,mt=W.isExotic||Ft.isExotic||Xt.isExotic||jt.isExotic,Vt=Y(ft,E,W,Ft,Xt,jt,w,N,qt,(rt||!mt&&X&&!E.ignoreExistingExoticArtificeSlots)&&me,z);null!=Vt&&(bt++,Mt(Vt)&&(Vt.classItemPerk=Bt.requiredClassItemType||(rt?M.Pn.SlotArtifice:M.Pn.None),!mt&&L&&z&&Vt.armor.push(L.id),j.push(Vt),Ut++,Ot++,qt=qt||E.limitParsedResults&&Ot>=3e4/U.count||Ot>=1e6/U.count)),bt%5e3==0&&Tt+ie=5e3&&(postMessage({runtime:ft,results:j,done:!1,checkedCalculations:Wt,estimatedCalculations:Yt}),j=[],Ut=0)}console.timeEnd(`tm #${U.current}`),console.timeEnd(`total #${U.current}`),postMessage({runtime:ft,results:j,done:!0,checkedCalculations:Wt,estimatedCalculations:Yt,stats:{permutationCount:bt,itemCount:J.length-ut.length,totalTime:Date.now()-R}})});return function(C){return f.apply(this,arguments)}}())},2340:(ht,at,_)=>{_.d(at,{N:()=>u});const u={version:"2.6.2",revision:"ec43f50",production:!0,beta:!1,canary:!1,apiKey:"9415df8eff46408aa9c0d51e4d69b94f",clientId:"37252",client_secret:"KnVcJPWr7C5y0loOfBoKSyQ-vWXR0JICrgb1aJLsLgg",offlineMode:!1,featureFlags:{enableModslotLimitation:!0,enableZeroWaste:!0,enableGuardianGamesFeatures:!1}}},1379:(ht,at,_)=>{var u=_(1481),t=_(4650),g=_(2340),I=_(6895),M=_(5829),wt=_(3683),ot=_(6630),y=_(5861),b=_(6831),Et=_(529),Mt=_(591);let vt=(()=>{class n{constructor(){this.__status={calculatingResults:!1,calculatingPermutations:!1,updatingResultsTable:!1,updatingInventory:!1,updatingManifest:!1,updatingVendors:!1,apiError:!1,authError:!1},this._status=new Mt.X(this.__status),this.status=this._status.asObservable()}getStatus(){return this.__status}modifyStatus(e){e(this.__status),console.log("modifyStatus",this.__status),this._status.next(this.__status)}setApiError(){this.__status.apiError||this.modifyStatus(e=>{e.apiError=!0})}clearApiError(){!this.__status.apiError||this.modifyStatus(e=>{e.apiError=!1})}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),gt=(()=>{class n{constructor(e,o,a){this.http=e,this.router=o,this.status=a,this._logoutEvent=new b.t(1),this.logoutEvent=this._logoutEvent.asObservable()}get refreshTokenExpired(){return this.refreshTokenExpiringAt (this.lastRefresh + timing)":Date.now()>e.lastRefresh+18e5}),!(e.refreshToken&&Date.now()e.lastRefresh+18e5)||(yield e.generateTokens(!0))})()}getCurrentMembershipData(){var e=this;return(0,y.Z)(function*(){const o=JSON.parse(localStorage.getItem("auth-membershipInfo")||"null");if(null==o){const a=e.getCurrentMembershipData();return localStorage.setItem("auth-membershipInfo",JSON.stringify(a)),a}return o})()}generateTokens(e=!1){var o=this;return(0,y.Z)(function*(){console.info("Generate auth tokens","refresh based on refresh_token:",e);const a=g.N.clientId,s=g.N.client_secret;let p=`grant_type=authorization_code&code=${o.authCode}&client_id=${a}&client_secret=${s}`;return e&&(p=`grant_type=refresh_token&refresh_token=${o.refreshToken}&client_id=${a}&client_secret=${s}`),yield o.http.post("https://www.bungie.net/Platform/App/OAuth/Token/",p,{headers:{"Content-Type":"application/x-www-form-urlencoded","X-API-Key":g.N.apiKey}}).toPromise().then(A=>(console.log("generateTokens",A),o.accessToken=A.access_token,o.refreshToken=A.refresh_token,o.refreshTokenExpiringAt=Date.now()+1e3*A.refresh_expires_in-1e4,o.lastRefresh=Date.now(),o.status.modifyStatus(m=>m.authError=!1),!0)).catch(function(){var A=(0,y.Z)(function*(m){return console.log({err:m}),o.status.modifyStatus(S=>S.authError=!0),!1});return function(m){return A.apply(this,arguments)}}())})()}isAuthenticated(){return!!this.accessToken}get authCode(){return localStorage.getItem("code")}set authCode(e){e?(console.info("Setting new auth code"),localStorage.setItem("code",""+e)):(console.info("Clearing auth code"),localStorage.removeItem("code"))}get accessToken(){return localStorage.getItem("accessToken")}set accessToken(e){e?(console.info("Setting new access token"),localStorage.setItem("accessToken",""+e)):(console.info("Clearing access token"),localStorage.removeItem("accessToken"))}get refreshToken(){return localStorage.getItem("refreshToken")}set refreshToken(e){e?(console.info("Setting new refresh token"),localStorage.setItem("refreshToken",""+e)):(console.info("Clearing refresh token"),localStorage.removeItem("refreshToken"))}get refreshTokenExpiringAt(){let e=localStorage.getItem("refreshTokenExpiringAt")||"0";return e?Number.parseInt(e):0}set refreshTokenExpiringAt(e){e?(console.info("Setting new refresh token"),localStorage.setItem("refreshTokenExpiringAt",""+e)):(console.info("Clearing refresh token"),localStorage.removeItem("refreshTokenExpiringAt"))}get lastRefresh(){let e=localStorage.getItem("lastRefresh")||"0";return e?Number.parseInt(e):0}set lastRefresh(e){e?localStorage.setItem("lastRefresh",e.toString()):localStorage.removeItem("lastRefresh")}clearManifestInfo(){localStorage.removeItem("LastArmorUpdate"),localStorage.removeItem("LastManifestUpdate")}clearLoginInfo(){this.lastRefresh=null,this.refreshTokenExpiringAt=null,this.authCode=null,this.accessToken=null,this.refreshToken=null}logout(){var e=this;return(0,y.Z)(function*(){if(g.N.offlineMode)console.debug("Offline mode, skipping logout");else try{e._logoutEvent.next(null),e.clearManifestInfo(),e.clearLoginInfo()}finally{yield e.router.navigate(["login"])}})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Et.eN),t.LFG(ot.F0),t.LFG(vt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),Rt=(()=>{class n{constructor(e,o,a){this.activatedRoute=e,this.router=o,this.loginService=a}ngOnInit(){var e=this;this.activatedRoute.queryParams.subscribe(function(){var o=(0,y.Z)(function*(a){let s=a.code;window.location.search.indexOf("?code=")>-1&&(s=window.location.search.substr(6)),console.info({code:s}),s&&(e.loginService.authCode=s,console.info("Generate tokens with the new code"),yield e.loginService.generateTokens(),console.info("Now navigate to /"),yield e.router.navigate(["/"]))});return function(a){return o.apply(this,arguments)}}())}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(ot.gz),t.Y36(ot.F0),t.Y36(gt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-handle-bungie-login"]],decls:0,vars:0,template:function(e,o){}}),n})();function Nt(n,i){1&n&&(t.TgZ(0,"mat-toolbar",5),t._UZ(1,"span",2),t._uU(2," You are using the "),t.TgZ(3,"b"),t._uU(4,"\xa0unstable\xa0"),t.qZA(),t._uU(5," canary build. Some features may be unfinished or vanish. Please report any issues you encounter. "),t._UZ(6,"span",2),t.qZA())}let x=(()=>{class n{constructor(){this.title="D2ArmorPicker",this.is_beta=g.N.beta,this.is_canary=g.N.canary,console.log("PRODUCTION?",g.N.production)}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-root"]],decls:9,vars:1,consts:[["class","canary-warning","color","primary",4,"ngIf"],["color","accent",1,"bungie-day",2,"display","none"],[1,"header-spacer"],["fxHide.xs","","src","../assets/bungie-game2give-2024.jpg",1,"donordrive"],["href","https://bungiefoundation.donordrive.com/participant/25284","target","_blank","title","Support the Bungie Foundation!"],["color","primary",1,"canary-warning"]],template:function(e,o){1&e&&(t.YNc(0,Nt,7,0,"mat-toolbar",0),t.TgZ(1,"mat-toolbar",1),t._UZ(2,"span",2)(3,"img",3),t.TgZ(4,"a",4),t._uU(5," Please support us at the Bungie Game2Give 2024 \u2764 "),t.qZA(),t._UZ(6,"span",2),t.qZA(),t._UZ(7,"app-handle-bungie-login")(8,"router-outlet")),2&e&&t.Q6J("ngIf",o.is_canary)},dependencies:[I.O5,M.b8,wt.Ye,ot.lC,Rt],styles:[".bungie-day[_ngcontent-%COMP%], .canary-warning[_ngcontent-%COMP%]{height:-moz-fit-content;height:fit-content;position:relative;max-width:100vw;word-break:break-all}.canary-warning[_ngcontent-%COMP%]{font-size:11pt}.bungie-day[_ngcontent-%COMP%] img.donordrive[_ngcontent-%COMP%]{height:30px;margin-left:2px;margin-right:2px}.bungie-day[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .bungie-day[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:visited{color:#fff}.header-spacer[_ngcontent-%COMP%]{flex:1 1 auto}"]}),n})();var _t=_(1576),st=_(4859),Y=_(3546),ct=_(7084);let Ht=(()=>{class n{constructor(){}startLogin(){window.location.href=`https://www.bungie.net/en/OAuth/Authorize?client_id=${g.N.clientId}&response_type=code&reauth=true`}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-login"]],decls:76,vars:0,consts:[["mat-card-avatar","",1,"example-header-image"],["href","https://ko-fi.com/mijago","target","_blank"],["href","https://github.com/Mijago/D2ArmorPicker","target","_blank"],["color","primary","mat-raised-button","",3,"click"],[1,"mat-elevation-z11"],["src","assets/info/statselection.png",1,"image-example"],["src","assets/resultOverviewWithFlex.png",1,"image-example"],["src","assets/info/whattodonow.png",1,"image-example"],["src","assets/info/armorClustering.png",1,"image-example"],["fxLayoutGap","10px","fxLayout","row",1,"armor-image-container"],["src","assets/info/cluster-example/img.png"],["src","assets/info/cluster-example/img_1.png"],["src","assets/info/cluster-example/img_2.png"]],template:function(e,o){1&e&&(t.TgZ(0,"mat-card")(1,"mat-card-header"),t._UZ(2,"div",0),t.TgZ(3,"mat-card-title"),t._uU(4,"Destiny 2 Armor Picker"),t.qZA(),t.TgZ(5,"mat-card-subtitle"),t._uU(6,"A simple armor min-max tool by Mijago."),t.qZA()(),t.TgZ(7,"mat-card-content")(8,"p"),t._uU(9," This tool allows you to select the optimal armor from your inventory and vault to satisfy your stat needs. It also tells you which stat mods you have to use! "),t._UZ(10,"br")(11,"br"),t._uU(12," You have to log in to enable this tool to grab your armor from the API."),t._UZ(13,"br"),t._uU(14," If you like my tools and want to support me, head to "),t.TgZ(15,"a",1),t._uU(16,"ko-fi.com"),t.qZA(),t._uU(17," and buy me a coffee! \u2764 "),t._UZ(18,"br"),t._uU(19," If you found a bug or have a feature request, please open an issue "),t.TgZ(20,"a",2),t._uU(21,"in the Github Repository"),t.qZA(),t._uU(22,"! "),t.qZA(),t.TgZ(23,"p"),t._uU(24," D2ArmorPicker uses the Bungie.net api and it's OAuth authorization. You log in on an official Bungie.net page and D2ArmorPicker receives a temporary login token from Bungie. That means it does not receive your credentials. "),t.qZA()(),t.TgZ(25,"mat-card-actions")(26,"button",3),t.NdJ("click",function(){return o.startLogin()}),t._uU(27,"Login"),t.qZA()()(),t.TgZ(28,"mat-card")(29,"mat-card-title"),t._uU(30," Examples "),t.qZA(),t.TgZ(31,"mat-card-subtitle"),t._uU(32,"Some examples to show what D2ArmorPicker can do."),t.qZA(),t.TgZ(33,"mat-card-content")(34,"mat-accordion")(35,"mat-expansion-panel",4)(36,"mat-expansion-panel-header")(37,"mat-panel-title"),t._uU(38," Stat Selection "),t.qZA(),t.TgZ(39,"mat-panel-description"),t._uU(40," The heart of this tool. "),t.qZA()(),t.TgZ(41,"p"),t._uU(42," First, you are able to select the stats you want. The tool will automatically parse all your armor (including your vault and your postmaster), and then show you which stat selections are even possible with your current gear. The tool also shows you all possible loadouts with three or four stats at 100! "),t._UZ(43,"img",5)(44,"br")(45,"br"),t._uU(46," There are also additional settings. You can add stasis fragments and negative and positive stat mods to your builds. Also, you can select 0-waste builds (so only flat numbers). D2ArmorPicker will also add stat mods to reduce wasted stats wherever possible! "),t.qZA()(),t.TgZ(47,"mat-expansion-panel",4)(48,"mat-expansion-panel-header")(49,"mat-panel-title"),t._uU(50," Result Display "),t.qZA(),t.TgZ(51,"mat-panel-description"),t._uU(52," What you will get from this tool. "),t.qZA()(),t.TgZ(53,"p"),t._uU(54," D2ArmorPicker will show you a table with many results. You can sort and filter it, and then you click on one row to see which items are needed for your desired stats. "),t._UZ(55,"img",6)(56,"br")(57,"br"),t._uU(58," The page will also give you a detailed description of what you have to do in order to get to your desired build. The following screenshot shows one of the more detailed descriptions: "),t._UZ(59,"img",7),t.qZA()(),t.TgZ(60,"mat-expansion-panel",4)(61,"mat-expansion-panel-header")(62,"mat-panel-title"),t._uU(63," Armor Clustering "),t.qZA(),t.TgZ(64,"mat-panel-description"),t._uU(65," For the time when your vault is overflowing. "),t.qZA()(),t.TgZ(66,"div"),t._uU(67," Since version 2.0.14, D2ArmorPicker has an armor clustering feature. This means that it takes all your armor and groups it in 25 groups, where all items in one group has very similar stats. This can help you to clear out your vault, especially from duplicated armor rolls. "),t._UZ(68,"img",8)(69,"br")(70,"br"),t._uU(71," Take Cluster 1, for example. I copy the DIM-Query, enter it into DIM and see the following results: "),t.TgZ(72,"div",9),t._UZ(73,"img",10)(74,"img",11)(75,"img",12),t.qZA()()()()()())},dependencies:[_t.xw,_t.SQ,st.lW,Y.a8,Y.dk,Y.dn,Y.n5,Y.$j,Y.hq,Y.kc,ct.pp,ct.ib,ct.yz,ct.yK,ct.u4],styles:["mat-card[_ngcontent-%COMP%]{max-width:600px;margin-bottom:4px;margin-left:auto;margin-right:auto}button[_ngcontent-%COMP%]{position:absolute;right:10px;bottom:10px}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}.example-header-image[_ngcontent-%COMP%]{background-image:url(superGreatLogo.5307f2494314b5e1.png);background-size:cover}.image-example[_ngcontent-%COMP%]{max-width:100%}.armor-image-container[_ngcontent-%COMP%]{overflow:auto}.armor-image-container[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]{max-height:300px}"]}),n})();var Lt=_(8746);let f=(()=>{class n{constructor(e,o){this.auth=e,this.router=o}canActivate(e,o){return!!this.auth.isAuthenticated()||(this.router.navigate(["login"]),!1)}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(ot.F0))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),C=(()=>{class n{constructor(e,o){this.auth=e,this.router=o}canActivate(e,o){return!this.auth.isAuthenticated()||(this.router.navigate(["/"]),!1)}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(ot.F0))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var U=_(2289),E=_(4850),F=_(5154),J=_(13),R=_(8929),c=_(1043),D=_(3244),T=_(6471),k=_(8333),K=_(1650);function H(n){return{[c.WB.Mobility]:{fixed:!1,value:n},[c.WB.Resilience]:{fixed:!1,value:n},[c.WB.Recovery]:{fixed:!1,value:n},[c.WB.Discipline]:{fixed:!1,value:n},[c.WB.Intellect]:{fixed:!1,value:n},[c.WB.Strength]:{fixed:!1,value:n}}}class Z{constructor(){this.characterClass=0,this.addConstent1Resilience=!1,this.assumeClassItemIsArtifice=!1,this.assumeEveryLegendaryIsArtifice=!1,this.assumeEveryExoticIsArtifice=!1,this.disabledItems=[],this.minimumStatTiers={[c.WB.Mobility]:{fixed:!1,value:0},[c.WB.Resilience]:{fixed:!1,value:0},[c.WB.Recovery]:{fixed:!1,value:0},[c.WB.Discipline]:{fixed:!1,value:0},[c.WB.Intellect]:{fixed:!1,value:0},[c.WB.Strength]:{fixed:!1,value:0}},this.maximumStatMods=5,this.allowExactStats=!1,this.maximumModSlots={[T.y.ArmorSlotHelmet]:{fixed:!1,value:5},[T.y.ArmorSlotGauntlet]:{fixed:!1,value:5},[T.y.ArmorSlotChest]:{fixed:!1,value:5},[T.y.ArmorSlotLegs]:{fixed:!1,value:5},[T.y.ArmorSlotClass]:{fixed:!1,value:5},[T.y.ArmorSlotNone]:{fixed:!1,value:5}},this.putArtificeMods=!0,this.useFotlArmor=!0,this.allowBlueArmorPieces=!0,this.ignoreSunsetArmor=!1,this.includeVendorRolls=!1,this.includeCollectionRolls=!1,this.assumeLegendariesMasterworked=!0,this.assumeExoticsMasterworked=!0,this.assumeClassItemMasterworked=!0,this.onlyUseMasterworkedExotics=!1,this.onlyUseMasterworkedLegendaries=!1,this.modOptimizationStrategy=K.w.None,this.limitParsedResults=!0,this.tryLimitWastedStats=!1,this.onlyShowResultsWithNoWastedStats=!1,this.showWastedStatsColumn=!1,this.showPotentialTierColumn=!1,this.selectedModElement=k.O.Stasis,this.enabledMods=[],this.selectedExotics=[],this.ignoreExistingExoticArtificeSlots=!1,this.armorPerks={[T.y.ArmorSlotHelmet]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotGauntlet]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotChest]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotLegs]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotClass]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotNone]:{fixed:!0,value:c.Pn.None}}}static buildEmptyConfiguration(){return{ignoreExistingExoticArtificeSlots:!1,allowExactStats:!1,enabledMods:[],disabledItems:[],addConstent1Resilience:!1,assumeEveryLegendaryIsArtifice:!1,assumeEveryExoticIsArtifice:!1,assumeClassItemIsArtifice:!1,putArtificeMods:!0,useFotlArmor:!1,maximumStatMods:D.Qj,onlyUseMasterworkedExotics:!1,onlyUseMasterworkedLegendaries:!1,ignoreSunsetArmor:!1,includeCollectionRolls:!1,includeVendorRolls:!1,allowBlueArmorPieces:!0,assumeLegendariesMasterworked:!0,assumeExoticsMasterworked:!0,assumeClassItemMasterworked:!0,limitParsedResults:!0,modOptimizationStrategy:K.w.None,tryLimitWastedStats:!1,onlyShowResultsWithNoWastedStats:!1,showWastedStatsColumn:!1,showPotentialTierColumn:!1,characterClass:0,selectedModElement:k.O.Stasis,selectedExotics:[],maximumModSlots:{[T.y.ArmorSlotHelmet]:{fixed:!1,value:5},[T.y.ArmorSlotGauntlet]:{fixed:!1,value:5},[T.y.ArmorSlotChest]:{fixed:!1,value:5},[T.y.ArmorSlotLegs]:{fixed:!1,value:5},[T.y.ArmorSlotClass]:{fixed:!1,value:5},[T.y.ArmorSlotNone]:{fixed:!1,value:5}},armorPerks:{[T.y.ArmorSlotHelmet]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotGauntlet]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotChest]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotLegs]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotClass]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotNone]:{fixed:!0,value:c.Pn.None}},minimumStatTiers:H(0)}}}var B=(()=>{return(n=B||(B={}))[n.Inventory=0]="Inventory",n[n.Collections=1]="Collections",n[n.Vendor=2]="Vendor",B;var n})();function ut(n,i,e){if(!n)throw new Error("Missing manifest item");const o=Object.assign({id:-1,itemInstanceId:i,mayBeBugged:!1,masterworked:!1,energyLevel:0,mobility:0,resilience:0,recovery:0,discipline:0,intellect:0,strength:0,source:e,created_at:Date.now(),updated_at:Date.now()},n);return o.id=void 0,(2545426109==n.hash||199733460==n.hash||3224066584==n.hash)&&(o.slot=T.y.ArmorSlotHelmet),o}function it(n,i){n.mobility=i[2996146975],n.resilience=i[392767087],n.recovery=i[1943323491],n.discipline=i[1735777505],n.intellect=i[144602215],n.strength=i[4244567218]}function xt(n){return n.mobility+n.resilience+n.recovery+n.discipline+n.intellect+n.strength}var It=_(6982),ft=_(4682);let w=(()=>{class n extends ft.v{constructor(e){var o;super(),o=this,this.auth=e,this.version(this.verno).upgrade(function(){var a=(0,y.Z)(function*(s){o.auth.clearManifestInfo()});return function(s){return a.apply(this,arguments)}}()),this.auth.logoutEvent.subscribe(function(){var a=(0,y.Z)(function*(s){yield o.clearDatabase()});return function(s){return a.apply(this,arguments)}}())}initialize(){this.open(),this.auth.clearManifestInfo()}writeManifestArmor(e,o){var a=this;return(0,y.Z)(function*(){yield a.manifestArmor.clear(),yield a.manifestArmor.bulkPut(e),localStorage.setItem("LastManifestUpdate",Date.now().toString()),localStorage.setItem("last-manifest-db-name",a.manifestArmor.db.name),localStorage.setItem("last-manifest-revision",g.N.revision),localStorage.setItem("last-manifest-version",o)})()}clearDatabase(){var e=this;return(0,y.Z)(function*(){localStorage.removeItem("LastManifestUpdate"),localStorage.removeItem("LastArmorUpdate"),localStorage.removeItem("last-manifest-revision"),localStorage.removeItem("last-manifest-db-name"),yield e.inventoryArmor.clear()})()}resetDatabase(e=!0){var o=this;return(0,y.Z)(function*(){localStorage.removeItem("LastManifestUpdate"),localStorage.removeItem("last-manifest-revision"),localStorage.removeItem("last-manifest-db-name"),localStorage.removeItem("vendor-next-refresh-time"),localStorage.removeItem("LastArmorUpdate"),localStorage.removeItem("last-armor-db-name"),yield o.delete(),e&&o.initialize()})()}lastManifestUpdate(){const e=localStorage.getItem("LastManifestUpdate"),o=localStorage.getItem("last-manifest-version"),a=localStorage.getItem("last-manifest-revision"),s=localStorage.getItem("last-manifest-db-name");return e&&a&&s&&o&&localStorage.getItem("last-manifest-revision")===g.N.revision&&s===this.inventoryArmor.db.name?{updatedAt:parseInt(e),version:o}:void 0}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var P=_(9598),N=_(443);const et={outputEncoding:"Base64"},rt={inputEncoding:"Base64",outputEncoding:"String"};let X=(()=>{class n{constructor(){this.__configuration=this.loadCurrentConfiguration(),this._configuration=new Mt.X(this.__configuration),this.configuration=this._configuration.asObservable(),this._storedConfigurations=new Mt.X(this.listSavedConfigurations()),this.storedConfigurations=this._storedConfigurations.asObservable()}get readonlyConfigurationSnapshot(){return Object.assign(this.__configuration,{})}modifyConfiguration(e){e(this.__configuration),this.saveCurrentConfiguration(this.__configuration)}saveConfiguration(e,o){let a=this.listSavedConfigurations(),s=this.listSavedConfigurations().map((d,p)=>[d,p]).filter(d=>d[0].name==e)[0];s&&a.splice(s[1],1),a.push({configuration:o,name:e,version:g.N.version}),a=a.sort((d,p)=>d.namep.name?1:0);const r=P.compress(JSON.stringify(a),et);localStorage.setItem("storedConfigurations",r),this._storedConfigurations.next(a)}doesSavedConfigurationExist(e){return this.listSavedConfigurations().filter(o=>o.name==e).length>0}loadSavedConfiguration(e){let o=this.listSavedConfigurations().filter(a=>a.name==e)[0];return!!o&&(this.saveCurrentConfiguration(o.configuration),!0)}checkAndFixOldSavedConfigurations(e){if(e.configuration=Object.assign(Z.buildEmptyConfiguration(),e.configuration),e.configuration.hasOwnProperty("minimumStatTier")){let o=e.configuration.minimumStatTier;e.configuration.minimumStatTiers[c.WB.Mobility].value=o[c.WB.Mobility],e.configuration.minimumStatTiers[c.WB.Resilience].value=o[c.WB.Resilience],e.configuration.minimumStatTiers[c.WB.Recovery].value=o[c.WB.Recovery],e.configuration.minimumStatTiers[c.WB.Discipline].value=o[c.WB.Discipline],e.configuration.minimumStatTiers[c.WB.Intellect].value=o[c.WB.Intellect],e.configuration.minimumStatTiers[c.WB.Strength].value=o[c.WB.Strength],delete e.configuration.minimumStatTier}if(e.configuration.hasOwnProperty("selectedExoticHash")&&(e.configuration.selectedExotics=[e.configuration.selectedExoticHash],delete e.configuration.selectedExoticHash),e.configuration.hasOwnProperty("maximumStatMods")){for(let a=e.configuration.maximumStatMods;a<5;a++)e.configuration.maximumModSlots[1+a].value=0;delete e.configuration.maximumStatMods}e.configuration.enabledMods=e.configuration.enabledMods.filter(o=>!!N.F[o]),e.configuration.limitParsedResults=!0,e.configuration.addConstent1Resilience=!1}listSavedConfigurations(){let e;try{e=localStorage.getItem("storedConfigurations")||"[]","["!=e.substr(0,1)&&(e=P.decompress(e,rt))}catch{e=[]}let o=JSON.parse(e)||[];return o=o.sort((a,s)=>a.names.name?1:0),o.forEach(a=>this.checkAndFixOldSavedConfigurations(a)),o}deleteStoredConfiguration(e){let o=this.listSavedConfigurations(),a=this.listSavedConfigurations().map((s,r)=>[s,r]).filter(s=>s[0].name==e)[0];a&&o.splice(a[1],1),localStorage.setItem("storedConfigurations",P.compress(JSON.stringify(o),et)),this._storedConfigurations.next(o)}saveCurrentConfigurationToName(e){this.saveConfiguration(e,this.__configuration)}saveCurrentConfiguration(e){console.debug("write configuration",e),this.__configuration=Object.assign(Z.buildEmptyConfiguration(),e),this.__configuration.enabledMods=[].concat(this.__configuration.enabledMods),this.__configuration.minimumStatTiers=Object.assign({},this.__configuration.minimumStatTiers);const o=P.compress(JSON.stringify(this.__configuration),et);localStorage.setItem("currentConfig",o),this._configuration.next(Object.assign({},this.__configuration))}loadCurrentConfiguration(){let e;try{e=localStorage.getItem("currentConfig")||"{}","{"!=e.substr(0,1)&&(e=P.decompress(e,rt))}catch{e={}}var o={name:"dummy",version:"1",configuration:JSON.parse(e)};return this.checkAndFixOldSavedConfigurations(o),o.configuration}getCurrentConfigBase64Compressed(){let e=localStorage.getItem("currentConfig")||"{}";return"{"==e.substr(0,1)&&(e=P.compress(e,{outputEncoding:"Base64"})),e}getAllStoredConfigurationsBase64Compressed(){let e=localStorage.getItem("storedConfigurations")||"[]";return"["==e.substr(0,1)&&(e=P.compress(e,{outputEncoding:"Base64"})),e}getStoredConfigurationBase64Compressed(e){let o=this.listSavedConfigurations().filter(a=>a.name==e)[0];return o?P.compress(JSON.stringify(o),{outputEncoding:"Base64"}):""}resetCurrentConfiguration(){this.saveCurrentConfiguration(Z.buildEmptyConfiguration())}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var h=_(8012),L=_(1016);let z=(()=>{class n{constructor(e,o,a){this.authService=e,this.http=o,this.status=a}$httpWithoutKey(e){var o=this;return(0,y.Z)(function*(){return o.http.get(e.url,{params:e.params}).toPromise()})()}$httpPost(e){var o=this;return(0,y.Z)(function*(){return o.http.post(e.url,e.body,{params:e.params,headers:{"X-API-Key":g.N.apiKey,Authorization:"Bearer "+o.authService.accessToken}}).toPromise().catch(function(){var a=(0,y.Z)(function*(s){console.error(s)});return function(s){return a.apply(this,arguments)}}())})()}$http(e,o=!0){var a=this;return(0,y.Z)(function*(){return a.http.get(e.url,{params:e.params,headers:{"X-API-Key":g.N.apiKey,Authorization:"Bearer "+a.authService.accessToken}}).toPromise().then(s=>(a.status.clearApiError(),s)).catch(function(){var s=(0,y.Z)(function*(r){console.error(r),g.N.offlineMode?console.debug("Offline mode, ignoring API error"):("SystemDisabled"==r.error?.ErrorStatus&&o&&(console.info("System is disabled. Revoking auth, must re-login"),a.status.setApiError()),"Internal Server Error"!=r.ErrorStatus&&console.info("API-Error"))});return function(r){return s.apply(this,arguments)}}())})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(Et.eN),t.LFG(vt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var j=_(9891);let Ut=(()=>{class n{constructor(e,o,a){this.http=e,this.status=o,this.auth=a,this.auth.logoutEvent.subscribe(s=>this.clearCachedData())}clearCachedData(){localStorage.removeItem("auth-membershipInfo"),localStorage.removeItem("auth-membershipInfo-date")}getMembershipDataForCurrentUser(){var e=this;return(0,y.Z)(function*(){var o=JSON.parse(localStorage.getItem("auth-membershipInfo")||"null"),a=JSON.parse(localStorage.getItem("auth-membershipInfo-date")||"0");if(o&&Date.now()-a<864e5)return console.log("getMembershipDataForCurrentUser -> loading cached! "),o;console.info("BungieApiService","getMembershipDataForCurrentUser");let r=(yield(0,j.Rm)(p=>e.http.$http(p)))?.Response.destinyMemberships;console.info("Memberships:",r),r=r.filter(p=>0==p.crossSaveOverride||p.crossSaveOverride==p.membershipType),console.info("Filtered Memberships:",r);let d=null;if(1==r?.length)d=r?.[0];else{let p=0,A=0;for(let m in r){const S=r?.[m],q=yield(0,h.Ai)($=>e.http.$http($),{components:[100],membershipType:S.membershipType,destinyMembershipId:S.membershipId});if(q&&q.Response?.profile.data?.dateLastPlayed){let $=Date.parse(q.Response?.profile.data?.dateLastPlayed);$>A&&(A=$,p=m)}}console.info("getMembershipDataForCurrentUser","Selected membership data for the last logged in membership."),d=r?.[p]}return localStorage.setItem("auth-membershipInfo",JSON.stringify(d)),localStorage.setItem("auth-membershipInfo-date",JSON.stringify(Date.now())),d})()}getCharacters(){var e=this;return(0,y.Z)(function*(){let o=yield e.getMembershipDataForCurrentUser();if(!o)return e.status.setApiError(),[];const a=yield(0,h.Ai)(s=>e.http.$http(s),{components:[200],membershipType:o.membershipType,destinyMembershipId:o.membershipId});return a?.Response.characters.data&&e.status.clearApiError(),Object.values(a?.Response.characters.data||{}).map(s=>({characterId:s.characterId,clazz:s.classType,emblemUrl:s.emblemBackgroundPath,lastPlayed:Date.parse(s.dateLastPlayed)}))||[]})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(z),t.LFG(vt),t.LFG(gt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function Ot(n,i,e,o){const a={2996146975:0,392767087:0,1943323491:0,1735777505:0,144602215:0,4244567218:0};for(let r of i)r.statTypeHash in a&&(a[r.statTypeHash]+=r.value);if(n.slot!=T.y.ArmorSlotClass){const r=[e[6],e[7],e[8],e[9]];n.statPlugHashes=r;var s=r.map(d=>o[d||""]).filter(d=>null!=d);for(let d of s)for(let p of d.investmentStats)p.statTypeHash in a&&(a[p.statTypeHash]+=p.value)}it(n,a)}let bt=(()=>{class n{constructor(e,o,a,s,r){var d=this;this.status=e,this.http=o,this.db=a,this.config=s,this.membership=r,this.config_assumeEveryLegendaryIsArtifice=!1,this.config.configuration.subscribe(function(){var p=(0,y.Z)(function*(A){d.config_assumeEveryLegendaryIsArtifice=A.assumeEveryLegendaryIsArtifice});return function(A){return p.apply(this,arguments)}}())}transferItem(e,o,a=!1){var s=this;return(0,y.Z)(function*(){let r=yield s.membership.getMembershipDataForCurrentUser();if(!r)return s.status.setApiError(),!1;s.status.clearApiError();let d=yield(0,h.rV)(A=>s.http.$http(A),{membershipType:r.membershipType,destinyMembershipId:r.membershipId,itemInstanceId:e,components:[307]}),p=!1;if(!d)return!1;if(d.Response.characterId!=o){2!=d.Response.item.data?.location&&(yield s.moveItemToVault(d.Response.item.data?.itemInstanceId||""),d=yield(0,h.rV)(m=>s.http.$http(m),{membershipType:r.membershipType,destinyMembershipId:r.membershipId,itemInstanceId:e,components:[307]}));const A={characterId:o,membershipType:3,itemId:d?.Response.item.data?.itemInstanceId||"",itemReferenceHash:d?.Response.item.data?.itemHash||0,stackSize:1,transferToVault:!1};p=!!(yield(0,h.ux)(m=>s.http.$httpPost(m),A))}if(a){let A={characterId:o,membershipType:3,stackSize:1,itemId:d?.Response.item.data?.itemInstanceId||"",itemReferenceHash:d?.Response.item.data?.itemHash||0};p=!!(yield(0,h.DH)(m=>s.http.$httpPost(m),A))}return p})()}moveItemToVault(e){var o=this;return(0,y.Z)(function*(){console.info("moveItemToVault",e);let a=yield o.membership.getMembershipDataForCurrentUser();if(!a)return void o.status.setApiError();o.status.clearApiError();const s=yield(0,h.rV)(d=>o.http.$http(d),{membershipType:a.membershipType,destinyMembershipId:a.membershipId,itemInstanceId:e,components:[307]}),r={characterId:s?.Response.characterId||"",membershipType:3,itemId:s?.Response.item.data?.itemInstanceId||"",itemReferenceHash:s?.Response.item.data?.itemHash||0,stackSize:1,transferToVault:!0};yield(0,h.ux)(d=>o.http.$httpPost(d),r)})()}getUnlockedExoticArmor(e){var o=this;return(0,y.Z)(function*(){const a=(yield o.db.manifestCollectibles.toArray()).reduce((r,d)=>(r[d.hash]=d.itemHash,r),{}),s=Object.values(e).flatMap(r=>Object.entries(r.collectibles??{})).filter(([r,{state:d}])=>0==(1&d)&&a[parseInt(r)]).map(([r,d])=>a[parseInt(r)]);return new Set(s)})()}updateArmorItems(e=!1){var o=this;return(0,y.Z)(function*(){if(g.N.offlineMode)return void console.info("BungieApiService","updateArmorItems","offline mode, skipping");if(!e&&localStorage.getItem("LastArmorUpdate")&&localStorage.getItem("last-armor-db-name")==o.db.inventoryArmor.db.name&&Date.now()-Number.parseInt(localStorage.getItem("LastArmorUpdate")||"0")<18e5)return;let a=yield o.membership.getMembershipDataForCurrentUser();if(!a)return void o.status.setApiError();o.status.clearApiError(),console.info("BungieApiService","getProfile");let s=yield(0,h.Ai)(v=>o.http.$http(v),{components:[205,201,103,102,304,300,302,305,308,800],membershipType:a.membershipType,destinyMembershipId:a.membershipId});const r=yield o.getUnlockedExoticArmor(s.Response.characterCollectibles.data??{});let d=s.Response.profileInventory.data?.items||[];for(let v in s.Response.characterEquipment.data)d=d.concat(s.Response.characterEquipment.data[v].items);for(let v in s.Response.characterInventories.data)d=d.concat(s.Response.characterInventories.data[v].items);var p=d.filter(v=>[3853748946,4257549984,4257549985,3467984096].indexOf(v.itemHash)>-1).reduce((v,dt)=>(dt.itemHash.toString()in v||(v[dt.itemHash]=0),v[dt.itemHash]+=dt.quantity,v),{});let A=s.Response.profileCurrencies.data?.items.filter(v=>3159615086==v.itemHash)||[];p[3159615086]=A.length>0?A[0].quantity:0,localStorage.setItem("stored-materials",JSON.stringify(p));const m=new Set(d.map(v=>v.itemHash));r.forEach(v=>m.add(v));let S=yield o.db.manifestArmor.toArray();const q=S.filter(v=>m.has(v.hash)),$=S.filter(v=>19==v.itemType);let tt=Object.fromEntries(q.map(v=>[v.hash,v])),lt=Object.fromEntries($.map(v=>[v.hash,v])),O=d.filter(v=>!!v.itemInstanceId).filter(v=>3284755031!==v.bucketHash).filter(v=>!!((s.Response.itemComponents.stats.data||{})[v.itemInstanceId||""]?.stats||{})[392767087]).filter(v=>!!((s.Response.itemComponents.instances.data||{})[v.itemInstanceId||""]||{}).energy).map(v=>{let nt=(s.Response.itemComponents.instances.data||{})[v.itemInstanceId||""]||{};if(!tt[v.itemHash])return console.warn("Missing manifest item for item hash",v.itemHash),null;let Q=ut(tt[v.itemHash],v.itemInstanceId||"",B.Inventory);Q.masterworked=!!nt.energy&&10==nt.energy.energyCapacity,Q.energyLevel=nt.energy?nt.energy.energyCapacity:0;const ce=(s.Response.itemComponents.sockets.data||{})[v.itemInstanceId]?.sockets.map($t=>$t.plugHash)??[];return Ot(Q,tt[v.itemHash]?.investmentStats??[],ce,lt),Q.perk==c.Pn.SlotArtifice?(((s.Response.itemComponents.perks.data||{})[v.itemInstanceId||""]||{}).perks||[]).filter(xe=>229248542==xe.perkHash).length>0||(Q.perk=c.Pn.None):Q.isExotic&&ce.filter(oe=>720825311==oe).length>0&&(Q.perk=c.Pn.SlotArtifice),Q}).filter(Boolean);const V=Array.from(r).map(v=>{const dt=tt[v];if(!dt)return console.error("Couldn't find manifest item for exotic",v),null;const nt=ut(dt,`c${dt.hash}`,B.Collections);return Ot(nt,dt.investmentStats,dt.socketEntries.map(Q=>Q.singleInitialItemHash),lt),nt}).filter(Boolean);return O=O.concat(V),O=O.filter(v=>!v.statPlugHashes||null!=v.statPlugHashes[0]),yield o.updateDatabaseItems(O),localStorage.setItem("LastArmorUpdate",Date.now().toString()),localStorage.setItem("last-armor-db-name",o.db.inventoryArmor.db.name),o.status.clearApiError(),O})()}updateDatabaseItems(e){var o=this;return(0,y.Z)(function*(){yield o.db.inventoryArmor.filter(r=>r.source==B.Inventory).delete();const s=(yield o.db.inventoryArmor.toArray()).filter(r=>null==r.source||null==r.source).map(r=>r.id);yield o.db.inventoryArmor.bulkDelete(s),yield o.db.inventoryArmor.bulkAdd(e)})()}getArmorPerk(e){if(g.N.featureFlags.enableGuardianGamesFeatures&&(1013401891===e.hash||366019830===e.hash||537041732==e.hash))return c.Pn.GuardianGamesClassItem;const o=e.sockets?.socketEntries??[];if(o.find(a=>1402==a.reusablePlugSetHash)||o.find(a=>1403==a.reusablePlugSetHash))return c.Pn.SlotArtifice;for(const a of o){let s=a.singleInitialItemHash;if(!s)continue;s=c.ED[s]||s;const r=Object.entries(c.DH).find(d=>d[1]==s);if(r)return parseInt(r[0])}return c.Pn.None}updateVendorNames(e){var o=this;return(0,y.Z)(function*(){const s=Object.values(e.DestinyVendorDefinition).map(r=>({vendorId:r.hash,vendorName:r.displayProperties.name}));yield o.db.vendorNames.clear(),yield o.db.vendorNames.bulkAdd(s)})()}updateAbilities(e){return(0,y.Z)(function*(){const o=Object.values(e.DestinyInventoryItemDefinition).filter(a=>a.plug?.plugCategoryIdentifier?.match(/\.(supers|grenades|class_abilities|melee|aspects|fragments)$/));localStorage.setItem("allAbilities",JSON.stringify(o))})()}updateExoticCollectibles(e){var o=this;return(0,y.Z)(function*(){const a=Object.entries(e.DestinyCollectibleDefinition).filter(([s,r])=>{const d=e.DestinyInventoryItemDefinition[r.itemHash];return"Exotic"==d?.inventory?.tierTypeName&&2==d?.itemType}).map(([s,r])=>({hash:parseInt(s),itemHash:r.itemHash}));console.log("Storing",a.length,"exotic armor hashes"),yield o.db.manifestCollectibles.clear(),yield o.db.manifestCollectibles.bulkPut(a)})()}updateManifest(e=!1){var o=this;return(0,y.Z)(function*(){if(g.N.offlineMode)return void console.info("BungieApiService","updateManifest","offline mode, skipping");const a=o.db.lastManifestUpdate();let s=null;if(a&&!e){if(Date.now()-a.updatedAt>9e5&&(s=yield(0,h.KN)(m=>o.http.$httpWithoutKey(m)),a.version==s.Response.version))return void console.debug("bungieApiService - updateManifest","Abort updateManifest due to fitting ManifestVersion");if(Date.now()-a.updatedAt<864e5)return void console.debug("bungieApiService - updateManifest","Abort updateManifest due to fitting Date")}null==s&&(s=yield(0,h.KN)(A=>o.http.$httpWithoutKey(A)));const r=s.Response.version,d=yield(0,L.xG)(A=>o.http.$httpWithoutKey(A),{destinyManifest:s.Response,tableNames:["DestinyInventoryItemDefinition","DestinyCollectibleDefinition","DestinyVendorDefinition"],language:"en"});console.log("manifestTables.DestinyInventoryItemDefinition",d.DestinyInventoryItemDefinition),yield o.updateExoticCollectibles(d),yield o.updateVendorNames(d),yield o.updateAbilities(d);let p=Object.entries(d.DestinyInventoryItemDefinition).filter(([A,m])=>19==m.itemType||2==m.itemType||3448274439==m.inventory?.bucketTypeHash||3551918588==m.inventory?.bucketTypeHash||14239492==m.inventory?.bucketTypeHash||20886954==m.inventory?.bucketTypeHash||1585787867==m.inventory?.bucketTypeHash&&6==m.inventory.tierType).map(([A,m])=>{let S=T.y.ArmorSlotNone;(m.itemCategoryHashes?.indexOf(45)||-1)>-1&&(S=T.y.ArmorSlotHelmet),(m.itemCategoryHashes?.indexOf(46)||-1)>-1&&(S=T.y.ArmorSlotGauntlet),(m.itemCategoryHashes?.indexOf(47)||-1)>-1&&(S=T.y.ArmorSlotChest),(m.itemCategoryHashes?.indexOf(48)||-1)>-1&&(S=T.y.ArmorSlotLegs),(m.itemCategoryHashes?.indexOf(49)||-1)>-1&&(S=T.y.ArmorSlotClass);const q=(m.sockets?.socketEntries.filter(V=>2512726577==V.socketTypeHash||1108765570==V.socketTypeHash||959256494==V.socketTypeHash||2512726577==V.socketTypeHash||3219375296==V.socketTypeHash||968742181==V.socketTypeHash)||[]).length>0,$="Exotic"==m.inventory?.tierTypeName?1:0;let tt=null;$&&(tt=(m.sockets?.socketEntries.filter(v=>965959289==v.socketTypeHash).map(v=>v.singleInitialItemHash)||[])[0]);var lt=[1862490585,1862490584,1862490584,1862490583,2471437758],O=m.quality?.versions.filter(V=>lt.includes(V.powerCapHash)).length==m.quality?.versions.length;return{hash:m.hash,icon:m.displayProperties.icon,watermarkIcon:(m.quality?.displayVersionWatermarkIcons||[null])[0],name:m.displayProperties.name,description:m.displayProperties.description,clazz:m.classType,armor2:q,slot:S,isExotic:$,isSunset:O,rarity:m.inventory?.tierType,exoticPerkHash:tt,itemType:m.itemType,itemSubType:m.itemSubType,investmentStats:m.investmentStats,perk:o.getArmorPerk(m),socketEntries:m.sockets?.socketEntries??[]}});return yield o.db.writeManifestArmor(p,r),d})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(vt),t.LFG(z),t.LFG(w),t.LFG(X),t.LFG(Ut))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();const qt="vendor-next-refresh-time",Yt=[{vendorHash:"3751514131",parentHash:"2190858386"}];let Wt=(()=>{class n{constructor(e,o,a,s){this.membership=e,this.http=o,this.db=a,this.auth=s,this.auth.logoutEvent.subscribe(r=>this.clearCachedData())}clearCachedData(){localStorage.removeItem(qt),this.db.inventoryArmor.where({source:B.Vendor}).delete()}getVendorArmorItemsForCharacter(e,o,a){var s=this;return(0,y.Z)(function*(){const r=yield(0,h.dH)(tt=>s.http.$http(tt,!1),{components:[400,402],characterId:a,membershipType:o.membershipType,destinyMembershipId:o.membershipId,filter:0}),d=Object.entries(r.Response.vendors.data),p=new Map(d),m=d.filter(([tt,lt])=>lt.enabled).filter(([tt,lt])=>{const O=Yt.find(V=>V.vendorHash==tt)?.parentHash;return null==O||(console.debug(`${tt} has parent ${O} with value ${p.get(O)?.enabled}`),p.get(O)?.enabled??!1)}).filter(([tt,lt])=>void 0!==Object.entries(r.Response.sales.data?.[tt]?.saleItems??{}).find(([O,V])=>1==e[V.itemHash]?.armor2)).map(([tt,lt])=>({vendorHash:tt,refreshDate:new Date(lt.nextRefreshDate).getTime()})),S=[],q=Math.min(...m.map(tt=>tt.refreshDate)),$=m.map(tt=>{let lt=tt.vendorHash;return(0,h.wZ)(O=>s.http.$http(O,!1),{components:[304],characterId:a,membershipType:o.membershipType,destinyMembershipId:o.membershipId,vendorHash:parseInt(lt)}).then(O=>{const V=r.Response.sales.data?.[lt]?.saleItems??{},v=O.Response.itemComponents.stats.data??{};for(const[dt,nt]of Object.entries(V)){const Q=e[nt.itemHash],he=v[parseInt(dt)];if(128==(128&nt.augments)||!Q||!he)return;const ce=Object.values(he.stats).reduce((oe,{statHash:Ue,value:xe})=>(oe[Ue]=xe,oe),{}),$t=ut(Q,`v${lt}-${nt.itemHash}`,B.Vendor);it($t,ce),S.push($t)}},O=>{console.error(`Failed to get vendor: ${O}`)})});return yield Promise.all($),console.log(`Collected ${S.length} vendor armor items for character ${a}`),{items:S,nextRefreshDate:q}})()}isVendorCacheValid(){const e=localStorage.getItem(qt);if(!e)return!1;const o=new Date(e);return!!isFinite(o.getTime())&&(console.log("VENDOR C",{nextVendorRefresh:o,finite:isFinite(o.getTime()),ok:o>new Date,now:new Date}),o>new Date)}writeVendorCache(e,o){var a=this;return(0,y.Z)(function*(){console.log(`Writing new vendor cache (${e.length} items), valid until ${o.toISOString()}`),yield a.db.inventoryArmor.where({source:B.Vendor}).delete(),yield a.db.inventoryArmor.bulkPut(e),localStorage.setItem(qt,o.toISOString())})()}updateVendorArmorItemsCache(){var e=this;return(0,y.Z)(function*(){if(e.isVendorCacheValid())return console.log("Using vendor items cache"),!1;const o=yield e.membership.getMembershipDataForCurrentUser(),a=yield e.membership.getCharacters(),s=(yield e.db.manifestArmor.toArray()).filter(r=>2==r.itemType).reduce((r,d)=>(r[d.hash]=d,r),{});try{const r=yield Promise.all(a.map(({characterId:A})=>e.getVendorArmorItemsForCharacter(s,o,A))),d=r.flatMap(({items:A})=>A),p=Math.max(Math.min(...r.map(({nextRefreshDate:A})=>A)),Date.now()+6e5);return e.writeVendorCache(d,new Date(p)),!0}catch(r){console.error("Failed to update vendor armor items cache",r);const d=new Date;return d.setMinutes(d.getMinutes()+5),e.writeVendorCache([],new Date(d)),!1}})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Ut),t.LFG(z),t.LFG(w),t.LFG(gt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),Tt=(()=>{class n{constructor(e,o,a,s,r,d,p){var A=this;this.db=e,this.config=o,this.status=a,this.api=s,this.auth=r,this.router=d,this.vendors=p,this.allArmorResults=[],this.currentClass=3,this._calculationProgress=new R.xQ,this.calculationProgress=this._calculationProgress.asObservable(),this._config=Z.buildEmptyConfiguration(),this.results=[],this.totalPermutationCount=0,this.resultMaximumTiers=[],this.resultStatCombo3x100=new Set,this.resultStatCombo4x100=new Set,this.selectedExotics=[],this.itemz=[],this.items=[],this.endResults=[],this.refreshing=!1,this._inventory=new b.t(1),this.inventory=this._inventory.asObservable(),this._manifest=new b.t(1),this.manifest=this._manifest.asObservable(),this._armorResults=new Mt.X({results:this.allArmorResults}),this.armorResults=this._armorResults.asObservable(),this.workers=[];let m=!1;d.events.pipe((0,J.b)(5)).subscribe(function(){var S=(0,y.Z)(function*(q){A.auth.refreshTokenExpired||(yield A.auth.autoRegenerateTokens()),r.isAuthenticated()&&q instanceof ot.m2&&(A.killWorkers(),A.clearResults(),console.debug("Trigger refreshAll due to router.events"),yield A.refreshAll(!m),m=!0)});return function(q){return S.apply(this,arguments)}}()),this.config.configuration.pipe((0,J.b)(500)).subscribe(function(){var S=(0,y.Z)(function*(q){A.auth.refreshTokenExpired||(yield A.auth.autoRegenerateTokens()),r.isAuthenticated()&&(A._config=q,console.debug("Trigger refreshAll due to config change"),yield A.refreshAll(!m),m=!0)});return function(q){return S.apply(this,arguments)}}())}clearResults(){this.allArmorResults=[],this._armorResults.next({results:this.allArmorResults,totalResults:0,totalTime:0,itemCount:0,maximumPossibleTiers:[0,0,0,0,0,0],statCombo3x100:[],statCombo4x100:[]})}shouldCalculateResults(){return"/"==this.router.url}refreshAll(e=!1,o=!1){var a=this;return(0,y.Z)(function*(){if(!a.refreshing){console.debug("Execute refreshAll");try{a.refreshing=!0;let s=!1;try{let r=yield a.updateManifest(o);s=yield a.updateInventoryItems(r||e),a.updateVendorsAsync()}catch(r){console.error(r)}yield a.triggerArmorUpdateAndUpdateResults(s)}finally{a.refreshing=!1}}})()}triggerArmorUpdateAndUpdateResults(e=!1,o=!0){var a=this;return(0,y.Z)(function*(){e&&a._inventory.next(null),a.shouldCalculateResults()&&(yield a.updateResults())})()}updateVendorsAsync(){this.status.getStatus().updatingVendors||this.vendors.isVendorCacheValid()||(this.status.modifyStatus(e=>e.updatingVendors=!0),this.vendors.updateVendorArmorItemsCache().then(e=>{!e||this.triggerArmorUpdateAndUpdateResults(e,this._config.includeVendorRolls)}).finally(()=>{this.status.modifyStatus(e=>e.updatingVendors=!1)}))}killWorkers(){console.log("killing workers"),this.workers.forEach(e=>{e.terminate()}),this.workers=[]}estimateCombinationsToBeChecked(e,o,a,s){let r=0;const d=e.filter(lt=>lt.isExotic).length,p=e.length-d,A=o.filter(lt=>lt.isExotic).length,m=o.length-A,S=a.filter(lt=>lt.isExotic).length,q=a.length-S,$=s.filter(lt=>lt.isExotic).length,tt=s.length-$;return r+=d*m*q*tt,r+=p*A*q*tt,r+=p*m*S*tt,r+=p*m*q*$,r+=p*m*q*tt,r}updateResults(e=3){var o=this;return(0,y.Z)(function*(){o.clearResults(),o.killWorkers();try{console.time("updateResults with WebWorker"),o.status.modifyStatus(m=>m.calculatingResults=!0);let a=0;o.results=[],o.totalPermutationCount=0,o.resultMaximumTiers=[],o.resultStatCombo3x100=new Set,o.resultStatCombo4x100=new Set;const s=Date.now();let r=o._config;o.selectedExotics=yield Promise.all(r.selectedExotics.filter(m=>m!=D.Io).map(function(){var m=(0,y.Z)(function*(S){return yield o.db.manifestArmor.where("hash").equals(S).first()});return function(S){return m.apply(this,arguments)}}())),o.selectedExotics=o.selectedExotics.filter(m=>!!m),o.itemz=yield o.db.inventoryArmor.where("clazz").equals(r.characterClass).distinct().toArray(),o.itemz=o.itemz.filter(m=>m.slot!=T.y.ArmorSlotNone).filter(m=>-1==r.disabledItems.indexOf(m.itemInstanceId)).filter(m=>{switch(m.source){case B.Collections:return r.includeCollectionRolls;case B.Vendor:return r.includeVendorRolls;default:return!0}}).filter(m=>-1==r.selectedExotics.indexOf(D.Io)||!m.isExotic).filter(m=>1!=o.selectedExotics.length||m.isExotic&&o.selectedExotics[0].hash==m.hash||!m.isExotic&&o.selectedExotics[0].slot!=m.slot).filter(m=>!r.onlyUseMasterworkedExotics||!(6==m.rarity&&!m.masterworked)).filter(m=>!r.onlyUseMasterworkedLegendaries||!(5==m.rarity&&!m.masterworked)).filter(m=>r.allowBlueArmorPieces||6==m.rarity||5==m.rarity).filter(m=>!r.ignoreSunsetArmor||!m.isSunset).filter(m=>m.isExotic||!r.armorPerks[m.slot].fixed||r.armorPerks[m.slot].value==c.Pn.None||r.armorPerks[m.slot].value==m.perk),o.itemz=o.itemz.filter(m=>m.source===B.Inventory||void 0===o.itemz.find(q=>q.source===B.Inventory&&function Zt(n,i){return n.slot===i.slot&&n.hash===i.hash&&n.mobility===i.mobility&&n.resilience===i.resilience&&n.recovery===i.recovery&&n.discipline===i.discipline&&n.intellect===i.intellect&&n.strength===i.strength}(m,q))),o.items=o.itemz.map(m=>({id:m.id,hash:m.hash,slot:m.slot,clazz:m.clazz,perk:m.perk,isExotic:!!m.isExotic,rarity:m.rarity,isSunset:m.isSunset,masterworked:m.masterworked,mobility:m.mobility,resilience:m.resilience,recovery:m.recovery,discipline:m.discipline,intellect:m.intellect,strength:m.strength,source:m.source})),e=o.estimateRequiredThreads(),console.log("nthreads for calculation",e);const d=[...Array(e).keys()].map(()=>0),p=[...Array(e).keys()].map(()=>0);let A=0;o.items=o.items.sort((m,S)=>xt(S)-xt(m)),o._calculationProgress.next(0);for(let m=0;mO+V,0),lt=p.reduce((O,V)=>O+V,0);if(p[0]>0&&p[1]>0&&p[2]>0){const O=lt/tt*100;O>A+.25&&(A=O,o._calculationProgress.next(O))}if(null!=$.runtime){if(o.results.push(...$.results),1==$.done){a++,o.totalPermutationCount+=$.stats.permutationCount,o.resultMaximumTiers.push($.runtime.maximumPossibleTiers);for(let O of $.runtime.statCombo3x100)o.resultStatCombo3x100.add(O);for(let O of $.runtime.statCombo4x100)o.resultStatCombo4x100.add(O)}if(1==$.done&&a==e){o.status.modifyStatus(O=>O.calculatingResults=!1),o._calculationProgress.next(0),o.endResults=[];for(let O of o.results){let V=O.armor.map(nt=>o.itemz.find(Q=>Q.id==nt)),v=V.find(nt=>nt.isExotic),dt={exotic:null==v?[]:[{icon:v?.icon,watermark:v?.watermarkIcon,name:v?.name,hash:v?.hash}],artifice:O.usedArtifice,modCount:O.usedMods.length,modCost:O.usedMods.reduce((nt,Q)=>nt+c.K9[Q][2],0),mods:O.usedMods,stats:O.statsWithMods,statsNoMods:O.statsWithoutMods,tiers:(0,It.jG)(O.statsWithMods),waste:(0,It._1)(O.statsWithMods),items:V.reduce((nt,Q)=>(nt[Q.slot-1].push({energyLevel:Q.energyLevel,hash:Q.hash,itemInstanceId:Q.itemInstanceId,name:Q.name,exotic:!!Q.isExotic,masterworked:Q.masterworked,mayBeBugged:Q.mayBeBugged,slot:Q.slot,perk:Q.perk,transferState:0,stats:[Q.mobility,Q.resilience,Q.recovery,Q.discipline,Q.intellect,Q.strength],source:Q.source}),nt),[[],[],[],[],[]]),classItem:O.classItemPerk,usesCollectionRoll:V.some(nt=>nt.source===B.Collections),usesVendorRoll:V.some(nt=>nt.source===B.Vendor)};o.endResults.push(dt)}o._armorResults.next({results:o.endResults,totalResults:o.totalPermutationCount,itemCount:$.stats.itemCount,totalTime:Date.now()-s,maximumPossibleTiers:o.resultMaximumTiers.reduce((O,V)=>{for(let v=0;v<6;v++)O[v]Math.floor(Math.min(100,O)/10)),statCombo3x100:Array.from(o.resultStatCombo3x100).map(O=>{let V=[];for(let v=0;v<6;v++)(O&1<0&&V.push(v);return V})||[],statCombo4x100:Array.from(o.resultStatCombo4x100).map(O=>{let V=[];for(let v=0;v<6;v++)(O&1<0&&V.push(v);return V},[])||[]}),console.timeEnd("updateResults with WebWorker"),o.workers[m].terminate()}else 1==$.done&&a!=e&&o.workers[m].terminate()}});return function(q){return S.apply(this,arguments)}}(),o.workers[m].onerror=S=>{o.workers[m].terminate()},o.workers[m].postMessage({currentClass:o.currentClass,config:o._config,threadSplit:{count:e,current:m},items:o.items,selectedExotics:o.selectedExotics})}finally{}})()}estimateRequiredThreads(){const e=this.items.filter(q=>q.slot==T.y.ArmorSlotHelmet),o=this.items.filter(q=>q.slot==T.y.ArmorSlotGauntlet),a=this.items.filter(q=>q.slot==T.y.ArmorSlotChest),s=this.items.filter(q=>q.slot==T.y.ArmorSlotLegs),r=this.estimateCombinationsToBeChecked(e,o,a,s),d=Math.max(e.length,o.length,a.length,s.length);let p=1;this._config.tryLimitWastedStats&&this._config.modOptimizationStrategy!=K.w.None&&(p=.7);let m=25e4*p;return Math.max(3,Math.min(Math.max(1,Math.ceil(r/(5e4*p))),Math.ceil(r/m),Math.floor(.75*(navigator.hardwareConcurrency||2)),20,d))}getItemCountForClass(e,o){var a=this;return(0,y.Z)(function*(){let s=yield a.db.inventoryArmor.where("clazz").equals(e).toArray();return o&&(s=s.filter(r=>r.slot==o)),s=s.filter(r=>r.source==B.Inventory),s.length})()}getExoticsForClass(e,o){var a=this;return(0,y.Z)(function*(){let s=yield a.db.inventoryArmor.where("isExotic").equals(1).toArray();s=s.filter(d=>d.clazz==e&&d.armor2&&(!o||d.slot==o));let r=yield a.db.manifestArmor.where("isExotic").equals(1).toArray();return r=r.filter(d=>d.clazz==e&&d.armor2&&(!o||d.slot==o)),r.map(d=>{const p=s.filter(A=>A.hash==d.hash);return{item:d,inCollection:void 0!==p.find(A=>A.source===B.Collections),inInventory:void 0!==p.find(A=>A.source===B.Inventory),inVendor:void 0!==p.find(A=>A.source===B.Vendor)}})})()}updateManifest(e=!1){var o=this;return(0,y.Z)(function*(){if(o.status.getStatus().updatingManifest)return console.error("Already updating the manifest - abort"),!1;o.status.modifyStatus(s=>s.updatingManifest=!0);let a=yield o.api.updateManifest(e).finally(()=>{o.status.modifyStatus(s=>s.updatingManifest=!1)});return a&&o._manifest.next(null),!!a})()}updateInventoryItems(e=!1,o=0){var a=this;return(0,y.Z)(function*(){a.status.modifyStatus(s=>s.updatingInventory=!0);try{return!!(yield a.api.updateArmorItems(e).finally(()=>{a.status.modifyStatus(r=>r.updatingInventory=!1)}))}catch(s){return o>3?(alert("You encountered a strange error with the inventory update. Please log out and log in again. If that does not fix it, please message Mijago."),!1):(a.status.modifyStatus(r=>r.updatingInventory=!1),console.error(s),yield a.updateManifest(!0),yield a.updateInventoryItems(!0,o++))}})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(w),t.LFG(X),t.LFG(vt),t.LFG(bt),t.LFG(gt),t.LFG(ot.F0),t.LFG(Wt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();const ie="https://Database-Clarity.github.io/Character-Stats",Ft=`${ie}/versions/1.9/CharacterStatInfo-NI.json`,Xt=`${ie}/update.json`,jt="clarity-character-stats-version",Bt="clarity-character-stats";let me=(()=>{class n{constructor(e,o){this.http=e,this.inv=o,this._characterStats=new Mt.X(null),this.characterStats=this._characterStats.asObservable(),this.inv.manifest.subscribe(a=>this.load())}load(){var e=this;return(0,y.Z)(function*(){try{yield e.loadCharacterStats()}catch(o){console.warn("Error loading Clarity data",o)}})()}fetchUpdateData(){var e=this;return(0,y.Z)(function*(){return e.http.get(Xt).toPromise()})()}loadCharacterStats(){var e=this;return(0,y.Z)(function*(){const o=localStorage.getItem(Bt);o&&e._characterStats.next(JSON.parse(o));const a=yield e.fetchUpdateData(),s=parseInt(localStorage.getItem(jt)||"0");a&&a.lastUpdate>s&&("1.9"!==a.schemaVersion?console.warn("Unsupported live character stats schema version",a.schemaVersion):a&&void 0!==a.lastUpdate&&(yield e.fetchLiveCharacterStats().then(r=>{localStorage.setItem(Bt,JSON.stringify(r)),localStorage.setItem(jt,a.lastUpdate.toString()),e._characterStats.next(r)})))})()}fetchLiveCharacterStats(){var e=this;return(0,y.Z)(function*(){return e.http.get(Ft).toPromise()})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Et.eN),t.LFG(Tt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var mt=(()=>{return(n=mt||(mt={}))[n.Speed=1]="Speed",n[n.Percentage=2]="Percentage",n[n.Time=3]="Time",n[n.TimeMMSS=4]="TimeMMSS",n[n.PercentagePerSecond=5]="PercentagePerSecond",mt;var n})();let ae=(()=>{class n{constructor(e){this.clarity=e,this.allStatEntries={},this.overrides=[],this.clarity.characterStats.subscribe(o=>{o&&this.updateCharacterStats(o)})}loadCharacterStats(){this.clarity.load()}updateCharacterStats(e){const o=(JSON.parse(window.localStorage.getItem("allAbilities"))||[]).reduce((a,s)=>(a.set(s.hash,s),a),new Map);this.overrides=Object.values(e).map(a=>a.Overrides).flat(),this.allStatEntries={Mobility:this.generateEntries(e.Mobility,o,[{key:"WalkSpeed",name:"Walk Speed",valueType:mt.Speed},{key:"StrafeSpeed",name:"Strafe Speed",valueType:mt.Speed},{key:"CrouchSpeed",name:"Crouch Speed",valueType:mt.Speed}]),Resilience:this.generateEntries(e.Resilience,o,[{key:"ShieldHP",name:"Shield HP"},{key:"PvEDamageResistance",name:"PvE Damage Resistance",valueType:mt.Percentage},{key:"FlinchResistance",name:"Flinch Resistance",valueType:mt.Percentage}]),Recovery:this.generateEntries(e.Recovery,o,[{key:"TotalRegenTime",name:"Total Regen Time",valueType:mt.Time},{key:"HealthRegenDelay",name:"Health Regen Delay",valueType:mt.Time},{key:"HealthRegenSpeed",name:"Health Regen Speed",valueType:mt.PercentagePerSecond},{key:"ShieldRegenDelay",name:"Shield Regen Delay",valueType:mt.Time},{key:"ShieldRegenSpeed",name:"Shield Regen Speed",valueType:mt.PercentagePerSecond}]),Discipline:this.generateEntries(e.Discipline,o),Intellect:this.generateEntries(e.Intellect,o),Strength:this.generateEntries(e.Strength,o)}}get(e,o,a,s=[]){const r=this.allStatEntries[e]??[],d=this.overrides.filter(p=>s.includes(p.Hash));return r.filter(p=>!(void 0!==o&&void 0!==p.characterClass&&p.characterClass!==o||void 0!==a&&void 0!==p.element&&p.element!==a)).map(p=>d.reduce((A,m)=>function De(n,i){if(!n.hash||!i.Requirements.includes(n.hash))return n;const e={...n,overrideIcons:[...n.overrideIcons??[],i.Hash]};if(i.CooldownOverride)return{...e,values:i.CooldownOverride};if(i.Scalar){const o=i.Requirements.indexOf(n.hash),a=i.Scalar[o];return{...e,values:e.values.map(s=>s*a)}}return console.log("Unhandled override",i),n}(A,m),p))}generateEntries(e,o,a=[]){const s=a.map(({key:d,...p})=>({values:e[d].Array,...p}));return("Abilities"in e?e.Abilities:"SuperAbilities"in e?e.SuperAbilities:[]).forEach(d=>{const p=o.get(d.Hash);if(!p)return;const{characterClass:A,element:m}=function Vt(n){let i,e;const o=n.plug?.plugCategoryIdentifier?.split(".");if(3!==o?.length)return{characterClass:i,element:e};const[a,s,r]=o;return"warlock"===a?i=2:"hunter"===a?i=1:"titan"===a&&(i=0),"arc"===s?e=k.O.Arc:"solar"===s?e=k.O.Solar:"void"===s?e=k.O.Void:"stasis"===s?e=k.O.Stasis:"strand"===s?e=k.O.Strand:"prism"===s&&(e=k.O.Prismatic),{characterClass:i,element:e}}(p);s.push({hash:p.hash,name:p.displayProperties.name,icon:p.displayProperties.icon,values:d.Cooldowns,valueType:mt.TimeMMSS,characterClass:A,element:m})}),s}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(me))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var l=(()=>{return(n=l||(l={}))[n.ADD=0]="ADD",n[n.REMOVE=1]="REMOVE",n[n.MODIFIED=2]="MODIFIED",l;var n})();const ye=[{version:"2.6.2",date:"July 7, 2024",entries:[{type:l.ADD,text:"Added option to ignore existing exotic artifice slots. This is useful for the exotic class item.",issues:[]},{type:l.MODIFIED,text:"Prismatic fragments are now correctly added to the DIM export.",issues:[]},{type:l.MODIFIED,text:"The 'Ignored Items' section is now filtered by the selected class, grouped into armor slots and ordered by item type.",issues:[]},{type:l.MODIFIED,text:"Minor change for the vendor API handling. Thanks nznaza!",issues:[]},{type:l.MODIFIED,text:"Minor change for the manifest API handling.",issues:[]},{type:l.MODIFIED,text:"Mostly minor bugfixes and code improvements.",issues:[]}]},{version:"2.6.1",date:"June 17, 2024",entries:[{type:l.ADD,text:"Add exotic class items.",issues:[]},{type:l.ADD,text:"Added Salvation's Edge Raid modslot and the Echoes of Glory perk.",issues:[]},{type:l.MODIFIED,text:"Changed the way minor mods are displayed. Minor mods are now 25% smaller.",issues:[]},{type:l.MODIFIED,text:"Corrected the description of Facet of Grace.",issues:[]},{type:l.MODIFIED,text:"Added Whisper of Torment, as it now has a -10 in Discipline.",issues:[]},{type:l.REMOVE,text:"Removed old armor modslots (and perks) that no longer exist or function.",issues:[]}]},{version:"2.6.0",date:"June 4, 2024",entries:[{type:l.ADD,text:"Added prismatic fragments.",issues:[]},{type:l.ADD,text:"Added a progressbar that shows the progress of the calculation process.",issues:[]},{type:l.ADD,text:"Added an advanced setting to replace the stat selection boxes with text fields. While it does not look quite nice (as of now), it will allow you to select any value you want. Go get your 6x69 builds done (but don't forget, D2AP still does not add fragments by itself ....YET?!? BUT VERY SOON!)!",issues:[]},{type:l.ADD,text:"Added an 'Assume every exotic has an artifice slot' setting in preparation for the changes in the upcoming expansion. Real artifice exotics should work out-of-the-box at the first day of the expansion, BUT it may happen that I need to update some internal structures. Have fun exploring your options, though!",issues:[]},{type:l.ADD,text:"Added an 'Assume every legendary class item is an artifice armor' setting to allow finer control over the artifice armor assumption.",issues:[]},{type:l.MODIFIED,text:"You will no longer be logged out when the API is offline. The app will use the last known data until the API is back online.",issues:[]},{type:l.MODIFIED,text:"Reworked how calculation workers are spawned, thus improving performance. Thanks to nznaza.",issues:[]},{type:l.MODIFIED,text:"Improved Mod optimisation, leading in drastically reduced runtime when paired with 'Add mods to reduce waste'.",issues:[]},{type:l.MODIFIED,text:"Improved 'Reduce Waste' optimisation. Smarter, better, faster, stronger.",issues:[]},{type:l.MODIFIED,text:"Changing the configuration during a running calculation now restarts the calculation process. Outdated results are a thing of the past!",issues:[]},{type:l.MODIFIED,text:"The amount of workers is now variable and depends on the workload at hand. This should help the insane armor hoarders to reduce the calculation time.",issues:[]},{type:l.MODIFIED,text:"Prepared the vendor API for upcoming Bungie API changes. Thanks to nznaza.",issues:[]},{type:l.MODIFIED,text:"Added 'Exotic Cipher' to the resource overview and removed legendary shards.",issues:[]},{type:l.MODIFIED,text:"Modified the inventory update procedure to be more efficient. This may result in a few hiccups in the first stage - if you encounter any issues, please let me know!",issues:[]},{type:l.MODIFIED,text:"Vendor data is now updated asynchronously. This means that the page will load faster, but the vendor data may be outdated for a few seconds.",issues:[]},{type:l.MODIFIED,text:"The progress notifications are now color-coded and on the right. If there are multiple notifications, then they are stacked.",issues:[]},{type:l.MODIFIED,text:"The display of the used mods is now color-coded to make it easier to distinguish between the different mod types in a single glance.",issues:[]},{type:l.MODIFIED,text:"Locked locks are now red. Mainly because adisypher wouldn't stop asking.",issues:[]},{type:l.MODIFIED,text:"Minor bugfixes and performance optimisation.",issues:[]}]},{version:"2.5.4",date:"April 10, 2024",entries:[{type:l.MODIFIED,text:"Fixed a minor issue where the vendor api may be disabled and block the entire page.",issues:[]}]},{version:"2.5.3",date:"April 5, 2024",entries:[{type:l.MODIFIED,text:"Adapted the logic to parse the new Clarity data format. Thanks to ciar\xe1n!",issues:[]}]},{version:"2.5.2",date:"November 29, 2023",entries:[{type:l.ADD,text:"Split the 'Assume all items are masterworked' switch into 'legendary' and 'exotic' switches. Thanks to Mojo!",issues:[]},{type:l.ADD,text:"Added the 'Ascendant Protector' Perk. Thanks to Mojo!",issues:[]},{type:l.MODIFIED,text:"Fixed artifice mods, again. Thanks to Mojo!",issues:[]},{type:l.MODIFIED,text:"Fixed 'Ghost Items' from the vendor import. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"Updated the values and descriptions for Subclass Fragments. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"Artifice Mods are now correctly added to the DIM export. Thanks to nznaza!",issues:[]}]},{version:"2.5.1",date:"October 29, 2023",entries:[{type:l.ADD,text:"Added the 'Exhumed Excess' Perk. The modslot limitations are now ordered. Thanks to Mojo!",issues:[]},{type:l.MODIFIED,text:"Added a solution for the stat distances 63, 64 and 65. You probably won't ever see it, as this is 'five artifice and five major mods'.",issues:[]},{type:l.MODIFIED,text:"'Fix wasted points' is now ignored for stats that are locked.",issues:[]}]},{version:"2.5.0",date:"October 14, 2023",entries:[{type:l.ADD,text:"The stat cooldowns and values are now automatically updated from the Clarity database. Thanks to ciar\xe1n!",issues:[]},{type:l.ADD,text:"The new modslots/perks are now available in the dropdown.",issues:[]},{type:l.MODIFIED,text:"The stat cooldowns now show icons. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"The fragments now show their icons. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"Minor internal updates for DIM references. Thanks to bhollis!",issues:[]},{type:l.MODIFIED,text:"Improved the wasted stats selection, again!",issues:[]}]},{version:"2.4.2",date:"July 11, 2023",entries:[{type:l.ADD,text:"Added the ability to use collection roll armor. This is disabled by default. Thanks to ciar\xe1n!",issues:[]},{type:l.ADD,text:"Added the ability to use vendor armor, including Xur. This is disabled by default. Thanks to ciar\xe1n!",issues:[]},{type:l.ADD,text:"Added the ability to select the optimisation strategy. You can now choose between 'Reduce waste', 'Reduce used mods' and 'Reduce used modslots'. The default is 'Reduce waste'.",issues:[]},{type:l.ADD,text:"Re-added the reduce wasted stats feature. It is now disabled by default. It is a bit slower and not really necessary for most people.",issues:[]},{type:l.MODIFIED,text:"Zero Waste is no longer dependent on the 'Reduce wasted stats' setting. In fact, it practically overwrites it.",issues:[]},{type:l.REMOVE,text:"Removed the 'Extra optimisation steps' setting. It is now always enabled.",issues:[]}]},{version:"2.4.0",date:"May 23, 2023",entries:[{type:l.MODIFIED,text:"Rewrote the internal algorithm. It makes stuff faster and gives better results.",issues:[]},{type:l.ADD,text:"Added a 'Perform further optimisation' setting. This will give you better results, but it will take a bit longer.",issues:[]},{type:l.ADD,text:"Added Icons to the Stat Selection to make it easier to see which row is which perk.",issues:[]},{type:l.ADD,text:"Added button to download results as JSON.",issues:[]},{type:l.ADD,text:"Added Sonar Amplifier perk.",issues:[]},{type:l.MODIFIED,text:"Enabled Modslot limitation.",issues:[]},{type:l.MODIFIED,text:"Enabled the 3x100 and 4x100 buttons.",issues:[]},{type:l.MODIFIED,text:"Enabled Zero-Waste mode.",issues:[]},{type:l.MODIFIED,text:"Temporarily disabled 'Reduce Wasted Stats'. It will be back soon.",issues:[]}]},{version:"2.3.2",date:"May 7, 2023",entries:[{type:l.ADD,text:"Feature: Added 'Guardian Games' class item type to the dropdown. ",issues:[]},{type:l.MODIFIED,text:"Reformatted every file in the codebase and improved the code workflow. You should not really see this on your end, but it will allow everyone to easily contribute to this open source project!",issues:[]}]},{version:"2.3.1",date:"April 2, 2023",entries:[{type:l.ADD,text:"Feature: Added the possibility to only show builds that contain an exotic.",issues:[]},{type:l.ADD,text:"Added 'Root of Nightmares' modslot filter.",issues:[]},{type:l.ADD,text:"Added 'Queen's Favor' seasonal perk filter.",issues:[]},{type:l.ADD,text:"Added text indicating that only fragments that affect stats are shown.",issues:[]},{type:l.MODIFIED,text:"Fixed deprecated mods being sent when opening the loadout in DIM. Also adds artifice mods now.",issues:[]},{type:l.MODIFIED,text:"Fixed an issue where the tool did not put artifice mods on the class item if you forced the class item to be artifice.....",issues:[]},{type:l.MODIFIED,text:"Fixed an issue where the default selection was the titan class, even if you had no titan characters.",issues:[]}]},{version:"2.3.0",date:"March 14, 2023",entries:[{type:l.ADD,text:"Automatically adds artifice mods to your armor. This replaces minor and major mods where possible.",issues:[]},{type:l.ADD,text:"Added the amount of used artifice mods to the result table overview (next to the mods). They are not calculated into the 'mod cost' column.",issues:[]},{type:l.ADD,text:"Added new fragments, including Strand.",issues:[]},{type:l.MODIFIED,text:"Adapted modslot cost of Resilience and Recovery mods.",issues:[]},{type:l.MODIFIED,text:"Introduced more modules for asynchronous loading. This is more a speed improvement than a feature.",issues:[]},{type:l.MODIFIED,text:"Reduced the maximum limit of reported results from 50,000 to 30,000. Note that D2AP still calculates every result, it just does not report them. This is a major speedup, and you usually should not even realize the change.",issues:[]},{type:l.MODIFIED,text:"Increased the visual contrast of major mods in the results table. This means it is now easier to distinguish major from minor mods.",issues:[]},{type:l.REMOVE,text:"Removed the elemental affinity completely.",issues:[]},{type:l.REMOVE,text:"DISABLED the 'Zero Waste' feature. It will be re-enabled in the future.",issues:[]},{type:l.REMOVE,text:"DISABLED the 'Modslot Limitation' feature. It will be re-enabled in the future.",issues:[]}]},{version:"2.2.16",date:"December 7, 2022",entries:[{type:l.ADD,text:"Added Ember of Torches (with -10 Discipline).",issues:[]},{type:l.ADD,text:"Added Retrofit mods (mobility and resilience).",issues:[]},{type:l.ADD,text:"Added armor perk 'Seraph Sensor Array' to the dropdown.",issues:[]},{type:l.ADD,text:"Added a Game2Give message. Let's support the little lights together!",issues:[]},{type:l.MODIFIED,text:"Fixed artifice modslot.",issues:[]},{type:l.MODIFIED,text:"Membership data is cached longer to make things faster and to ease the Bungie API.",issues:[]}]},{version:"2.2.15",date:"October 18, 2022",entries:[{type:l.ADD,text:"Added FOTL masks.",issues:[]}]},{version:"2.2.13",date:"September 23, 2022",entries:[{type:l.ADD,text:"Added an advanced setting to replace the 'Tiers' column with a 'Max Tiers' column. This is adds the amount of open modslots to the column, but ignores mod limitations at the moment. A T32 build without mods will now show T37.",issues:[]}]},{version:"2.2.12",date:"September 11, 2022",entries:[{type:l.MODIFIED,text:"Changed the layout to force the settings (left) and results (right) to be next to each other. This means that the page is more mobile approachable. This is also the first step to a more flexible layout.",issues:[]}]},{version:"2.2.11",date:"September 10, 2022",entries:[{type:l.ADD,text:"Added a display for your owned upgrade materials in the character overview.",issues:[]},{type:l.ADD,text:"Added a notification to warn you when you create a modslot limitation that yields no results. Note that this will not (yet) show invalid combinations over all armor, just for the given slot you selected it in.",issues:[]},{type:l.MODIFIED,text:"Reduced size of exotic icons so that the left side will not grow on Titan class.",issues:[]},{type:l.MODIFIED,text:"The 'Performance Optimisation' settings will now always re-enable after a reload to prevent your browser being stuck in a crash-loop. (This is for you, iOS Safari users)",issues:[]},{type:l.MODIFIED,text:"Changed wording of the 'Performance Optimisation' setting to prevent people from using it incorrectly.",issues:[]}]},{version:"2.2.10",date:"September 2, 2022",entries:[{type:l.MODIFIED,text:"Updated Artifice Modslot Hash after the most recent hotfix.",issues:[]}]},{version:"2.2.9",date:"September 1, 2022",entries:[{type:l.MODIFIED,text:"Tooltips do now not obstruct the clicks of stats. This fixes the iOS stat selection issue.",issues:[]}]},{version:"2.2.8c",date:"August 24, 2022",entries:[{type:l.MODIFIED,text:"The manifest is now (again) automatically updated on version changes. This fixes your artifice problems at the beginning of a new season.",issues:[]},{type:l.MODIFIED,text:"Added subclass hashes for Arc. This means that it now transfers to DIM.",issues:[]}]},{version:"2.2.8b",date:"August 24, 2022",entries:[{type:l.MODIFIED,text:"Fixed Artifice modslots. You might need to wait a bit, alternatively delete the database (Account section) or re-log.",issues:[]}]},{version:"2.2.8a",date:"August 23, 2022",entries:[{type:l.MODIFIED,text:"Updated grenade and melee cooldowns for arc.",issues:[]}]},{version:"2.2.8",date:"August 23, 2022",entries:[{type:l.ADD,text:"Added Arc 3.0 fragments.",issues:[]},{type:l.MODIFIED,text:"Fixed tooltip issues on iOS devices.",issues:[]},{type:l.MODIFIED,text:"Fixed an infinite loading issue.",issues:[]}]},{version:"2.2.7",date:"June 25, 2022",entries:[{type:l.ADD,text:"Added a link to my Discord bot Crayon.",issues:[]},{type:l.MODIFIED,text:"Fixed an issue where a large number of stored configurations would drastically slow down the app.",issues:[]}]},{version:"2.2.6",date:"June 8, 2022",entries:[{type:l.MODIFIED,text:"Fixed an issue where the elemental selection would not give the correct results under very specific conditions.",issues:[]}]},{version:"2.2.5",date:"June 7, 2022",entries:[{type:l.ADD,text:"Added all of the new ability cooldowns.",issues:[]},{type:l.MODIFIED,text:"Completely reworked the ability cooldown tooltips. They now show the difference to the currently selected tier.",issues:[]}]},{version:"2.2.4",date:"June 3, 2022",entries:[{type:l.MODIFIED,text:"Fixed the export to DIM. Thanks to bhollis for the fix!",issues:[]},{type:l.MODIFIED,text:"The manifest now automatically updates when Bungie updated it too, except just after a fixed timespan.",issues:[]}]},{version:"2.2.3",date:"May 24, 2022",entries:[{type:l.ADD,text:"Added Solar 3.0",issues:[]},{type:l.MODIFIED,text:"Adapted artifice armor to the new Season.",issues:[]}]},{version:"2.2.2",date:"Mar 9, 2022",entries:[{type:l.ADD,text:"See what mods do by hovering over their name.",issues:["D2AP-41"]},{type:l.ADD,text:"Added Vow of the Disciple armor.",issues:["D2AP-35"]},{type:l.ADD,text:"Added 'Uniformed Officer' armor.",issues:["D2AP-35"]},{type:l.MODIFIED,text:"Fixed Scatter grenades being Tier 3 (were T4 before).",issues:["D2AP-39"]},{type:l.MODIFIED,text:"Changed the color of the login button.",issues:["D2AP-37"]},{type:l.MODIFIED,text:"When a selected character class does not exist, the tool will now select the first available class as default."}]},{version:"2.2.1",date:"Feb 22, 2022",entries:[{type:l.ADD,text:"Added a switch to select between Stasis and Void 3.0 fragments. Stasis is enabled per default to ensure backwards compatibility of saved configurations.",issues:["D2AP-10"]},{type:l.ADD,text:"Added a debug section to the (new) account settings page. The account settings page does not do much yet, I just wanted to deploy the debug functions.",issues:["D2AP-23"]},{type:l.MODIFIED,text:"Modified super cooldowns for Witch Queen."},{type:l.MODIFIED,text:"Added a minor text to the exotic overview that explains that exotics not in the inventory are shown in grayscale. You can also no longer select those.",issues:["D2AP-17"]},{type:l.MODIFIED,text:"Minor changes in how the database behaves on logout. It now deletes the inventory when you log out, but still keeps the manifest.",issues:["D2AP-27"]},{type:l.MODIFIED,text:"Users are now logged out when the Bungie.Net API is down.",issues:["D2AP-34"]},{type:l.MODIFIED,text:"Fixed Charge Harvester and Echo of Persistence incorrectly reducing Discipline instead of recovery when used on a Warlock."}]},{version:"2.2.0",date:"Feb 09, 2022",entries:[{type:l.ADD,text:"Added the ability to select armor perks and 5th slots. Just like the elements you can optionally enforce it to be on a certain slot. Useful if you want to build Iron Banner armor or utilize artifice modslots."},{type:l.ADD,text:"Added the ability to limit the available points on each armor item for stat mods. This allows you to limit the kind of stat mods that are usable. You can now say 'do not use major intellect mods'."},{type:l.ADD,text:"Added the ability to lock stat tiers. Previously you could only set 'Use Tier 3 or higher', now you can optionally set 'Enforce Tier 3'. This is useful for example if you want to enforce T3 mobility on a Titan."},{type:l.ADD,text:"Added a summary of important configuration choices to the result header to improve readability."},{type:l.ADD,text:"Added a button to open the DIM Loadout Builder with the current settings."},{type:l.ADD,text:"Added an option that forces the correct element on non-masterworked armor pieces. This is per default enabled."},{type:l.ADD,text:"Added cooldowns for class abilities (Dodge, Barricade, Rift)."},{type:l.ADD,text:"Added visual indicators for minor and major mods in the overview table. The whole visualization is also more compact now."},{type:l.ADD,text:"Added visual cursor indicator to every clickable input, e.g. in the exotic, element and perk/mod selection."},{type:l.ADD,text:"Added a (very basic) item tooltip."},{type:l.ADD,text:"Show the required material cost for each item. Note that this ignores your class item."},{type:l.ADD,text:"Added a stat summary table to the stat detail view. This allows you to easily share a stat distribution with others."},{type:l.ADD,text:"Added 'Clear this section' button to each configuration section."},{type:l.ADD,text:"Added support for your class items. You won't see a lot of this, except when you use the slot and element limitation in specific ways."},{type:l.ADD,text:"Detailed information is now in expandable containers to improve readability."},{type:l.ADD,text:"Show the seasonal icon for every item too."},{type:l.ADD,text:"Added info text to the table headers."},{type:l.ADD,text:"The character selection now shows the existing characters - and their emblems too!"},{type:l.ADD,text:"Added Discord and another Ko-Fi link. You can find them in the character selection."},{type:l.ADD,text:"Added a changelog popup right at the start of the page. It only appears when a new update occured. You can always trigger it by clicking the current version number."},{type:l.ADD,text:"Now utilizes three webworkers instead of one. The process is simple, but generally speeds up the results by a huge margin."},{type:l.ADD,text:"Added an Armor Investigation tab for data scientists."},{type:l.ADD,text:"Added a sidenav for smaller devices and reworked the top menubar."},{type:l.ADD,text:"The detailed result table now shows the perk of an selected item, if it has one. This also applies to class items, if necessary."},{type:l.ADD,text:"Hovering over exotics in the exotic selection now displays their perk description."},{type:l.ADD,text:"Added an advanced setting to disable white, green and blue armor."},{type:l.ADD,text:"Added an advanced setting to ignore sunset armor."},{type:l.MODIFIED,text:"Changed the word 'Permutation' to 'Combination' wherever it has been used."},{type:l.MODIFIED,text:"Clicking on a setting that is already set does not re-trigger the calculation now. For example, selecting T3 recovery when it is already at T3 now does nothing."},{type:l.MODIFIED,text:"The default for all stats is now tier 0 instead of tier 1, to make it consistent with the clear buttons."},{type:l.MODIFIED,text:"The default setting for 'ignore non masterworked elements' is now 'off'."},{type:l.MODIFIED,text:"The 'time required' number now measures the time from before the webworkers are spawned until all webworkers are done. Previously it only monitored the time required INSIDE the webworker, so it may show slower times."},{type:l.MODIFIED,text:"Fixed the width of the 'Exotic' header in the results table. This means that it is now farther away from the 'Mobility' column."},{type:l.MODIFIED,text:"Completely reworked the elemental affinity selection. Per default it is now not fixed to a certain armor slot, but using a toggle button you can simply do so again."},{type:l.MODIFIED,text:"The results header now screams at you in bright red letters when no results are found."},{type:l.MODIFIED,text:"The alternating rows of the results details table have now a lighter color to make it easier to read."},{type:l.MODIFIED,text:"Fixed ability cooldowns for melee and grenade at tier 7 and tier 8."},{type:l.MODIFIED,text:"Cooldowns now are shown in MM:SS instead of plain seconds."},{type:l.MODIFIED,text:"Completely rewrote the core logic of D2ArmorPicker for the changes mentioned above."},{type:l.MODIFIED,text:"Exotics you do not have in your vault or inventory are now greyed out."},{type:l.MODIFIED,text:"Fixed an issue where exotics were not shown at your first login."},{type:l.MODIFIED,text:"Changed the color of important buttons so that they are easier to read."},{type:l.MODIFIED,text:"The icons of items in the results are now loaded asynchronous from their hashes. This saves a lot of memory, as I do not have to send two icon URLs for each item - for each result. I will further improve this in a later version."},{type:l.MODIFIED,text:"Maximum table output is now limited to 50 results (instead of 200). It still defaults to 20.}"},{type:l.MODIFIED,text:"Completely reworked the visuals of the changelog. It is now more pleasing to the eye."}]},{version:"2.1.4",date:"Dec 29, 2021",entries:[{type:l.MODIFIED,text:"Item stats are now built from their plugs and InvestmentStats (in case of some exotics). This fixes potentially invalid item stats when you use mods like Powerful Friends or Protective Light. A big thanks to u/deangaudet for reminding me that the API also reports the plugs of an item."},{type:l.MODIFIED,text:"Only save necessary item types of the manifest (namely mods and armor). Also, save twhe investmentStats now."},{type:l.MODIFIED,text:"Sped up the item update step."}]},{version:"2.1.3",date:"Dec 16, 2021",entries:[{type:l.MODIFIED,text:"Added new stat cooldowns"}]},{version:"2.1.2",date:"Dec 1, 2021",entries:[{type:l.MODIFIED,text:"The changelog is now in a scrollable box."},{type:l.MODIFIED,text:"Changed buymeacoffee to a ko-fi link. This way we can keep the PayPal support!"}]},{version:"2.1.1",date:"Nov 3, 2021",entries:[{type:l.REMOVE,text:"Removed the HALLOWEEN SPECIAL feature. Maybe something like this will return some day?"},{type:l.ADD,text:"Added tooltip to the item icons in the detailed overview to show the name of the item."},{type:l.MODIFIED,text:"Fixed an issue where the list of exotics did not load at the first login."},{type:l.MODIFIED,text:"Saved configurations now contain the current software version for future reference."},{type:l.MODIFIED,text:"Minor code quality improvements"}]},{version:"2.1.0 (major)",date:"Oct 29, 2021",entries:[{type:l.REMOVE,text:"Completely removed V1 of the tool. If you had any problems with V2, you had over three months to report them."},{type:l.ADD,text:"The stat selection now displays which stat tiers are added by stat mods (PF/RL) or stasis fragments in the configuration."},{type:l.ADD,text:"You can now export (and import) individual configurations as well as all stored configurations at once."},{type:l.ADD,text:"Added a navigation bar to the title bar. On smaller screens it is replaced by two buttons in the character selection."},{type:l.ADD,text:"Added more details to the last step of the 'What to do now?' section. It now lists the fragments and mods you selected."},{type:l.MODIFIED,text:"Optimized code and reduced overall page size."}]},{version:"2.0.16",date:"Oct 26, 2021",entries:[{type:l.MODIFIED,text:"Completely rewrote the core logic in order to fix the memory issues. The tool will now no longer crash when you have many armor items, but it's slightly slower than the previous approach. I tested it with 600 items - it works and does not crash, but takes up to a minute. Make sure to never get that much armor and to lock an exotic right away."},{type:l.MODIFIED,text:"The rewrite also fixed the issue where the tool did not work in Safari, or more generally, on Mac and iPhone."},{type:l.MODIFIED,text:"The rewrite also fixed an issue where items could not be found when an result update was triggered while the inventory was updated."}]},{version:"2.0.15",date:"Oct 24, 2021",entries:[{type:l.MODIFIED,text:"Updated the visual display of the cluster page. It displays the stats in a better way now."},{type:l.MODIFIED,text:"Fixed an issue with login, where you were automatically logged in again and could not switch accounts."}]},{version:"2.0.14",date:"Oct 21, 2021",entries:[{type:l.MODIFIED,text:"Updated URLs to the mobility, resilience and recovery images, as Bungie decided to change their URLs in today's hotfix."}]},{version:"2.0.13",date:"Oct 20, 2021",entries:[{type:l.ADD,text:"Added a chart to the armor clustering page, showing each clusters average stats."},{type:l.MODIFIED,text:"Stats over 100 are now seen as wasted."}]},{version:"2.0.12",date:"Oct 18, 2021",entries:[{type:l.ADD,text:"Added an experimental armor clustering feature."}]},{version:"2.0.11",date:"Oct 13, 2021",entries:[{type:l.ADD,text:"HALLOWEEN SPECIAL! Added (temporary) filter for halloween masks! This will be removed after the event."},{type:l.MODIFIED,text:"Fix: Clear the results if you switch character and no possible permutations can be found."}]},{version:"2.0.10",date:"Oct 10, 2021",entries:[{type:l.ADD,text:"Added 'Equip Items' button to the detailed item overview."}]},{version:"2.0.9",date:"Oct 6, 2021",entries:[{type:l.ADD,text:"Added a detailed description of the steps required to build a selected result."},{type:l.ADD,text:"Added a button to disable all four armor pieces at once."},{type:l.MODIFIED,text:"Fixed an issue where the permutations were not updated after 'Ignore armor elemental affinities on masterworked armor' was changed."}]},{version:"2.0.8",date:"Oct 5, 2021",entries:[{type:l.ADD,text:"Added this changelog to the help page."},{type:l.ADD,text:"Added 'Move to Inventory' button (beta)."},{type:l.ADD,text:"Split up 'Assume items are masterworked' into three settings: Class Items, Legendaries, Exotics"},{type:l.MODIFIED,text:"'Try to optimize wasted stats' is now active per default."},{type:l.MODIFIED,text:"Introduced an item buffer in the results component to further reduce memory usage."}]}];let Ce=(()=>{class n{constructor(e){this.changelog=e}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(se))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-changelog-dialog"]],decls:9,vars:2,consts:[["mat-dialog-title","",1,"title"],[1,"mat-typography"],["align","end"],["cdkFocusInitial","","color","primary","mat-raised-button","",3,"mat-dialog-close"]],template:function(e,o){1&e&&(t.TgZ(0,"h2",0),t._uU(1),t.qZA(),t.TgZ(2,"mat-dialog-content",1)(3,"div"),t._uU(4," Hi! There has been a new version of D2ArmorPicker! The following list shows all the relevant changes. Note that you can always look at the changelogs in the Help tab. "),t.qZA(),t._UZ(5,"app-changelog-list"),t.qZA(),t.TgZ(6,"mat-dialog-actions",2)(7,"button",3),t._uU(8,"Thanks, I saw it!"),t.qZA()()),2&e&&(t.xp6(1),t.hij("D2ArmorPicker Changelog for Version ",o.changelog.changelogData[0].version,""),t.xp6(6),t.Q6J("mat-dialog-close",!0))},styles:[".title[_ngcontent-%COMP%]{text-decoration:underline;-webkit-text-decoration-color:#0059ff;text-decoration-color:#0059ff}"]}),n})();var kt=_(5412);let se=(()=>{class n{constructor(e){this.dialog=e}setChangelogSeenFlag(){return localStorage.setItem("last-changelog-version",this.changelogData[0].version)}get lastViewedChangelog(){return localStorage.getItem("last-changelog-version")}get mustShowChangelog(){return this.changelogData[0].version!==this.lastViewedChangelog}get changelogData(){return ye}openChangelogDialog(){this.dialog.open(Ce).afterClosed().subscribe(o=>{this.setChangelogSeenFlag()})}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(kt.uw))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var pt=_(266),Pe=_(3162),St=_(7392),Gt=_(6338),Te=_(3848),Re=_(3267);let zt=(()=>{class n{constructor(e,o){this.templateRef=e,this.vcRef=o,this.context={$implicit:null,ngVar:null},this.hasView=!1}set ngVar(e){this.context.$implicit=this.context.ngVar=e,this.hasView||(this.vcRef.createEmbeddedView(this.templateRef,this.context),this.hasView=!0)}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.Rgc),t.Y36(t.s_b))},n.\u0275dir=t.lG2({type:n,selectors:[["","ngVar",""]],inputs:{ngVar:"ngVar"}}),n})(),Ne=(()=>{class n{constructor(e){this.changelog=e}ngAfterViewInit(){this.changelog.mustShowChangelog&&this.changelog.openChangelogDialog()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(se))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-changelog-dialog-controller"]],decls:0,vars:0,template:function(e,o){},encapsulation:2}),n})();function qe(n,i){1&n&&(t.TgZ(0,"mat-toolbar",31),t._UZ(1,"span",20),t._uU(2," The API is unavailable. The app will work with the data it has available right now. "),t._UZ(3,"span",20),t.qZA())}function Fe(n,i){1&n&&(t.TgZ(0,"mat-toolbar",31),t._UZ(1,"span",20),t._uU(2," There was an error with the authentication. The API may be down, or your session timed out. "),t._UZ(3,"span",20),t.qZA())}function Je(n,i){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,Fe,4,0,"mat-toolbar",1),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.authError)}}function Le(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"a",32),t.NdJ("click",function(){t.CHM(e),t.oxw();const a=t.MAs(5);return t.KtG(a.toggle())}),t._uU(1),t.qZA()}if(2&n){const e=i.$implicit,o=i.index,a=t.oxw(2);t.ekj("active",a.activeLinkIndex===o),t.Q6J("routerLink",e.link),t.xp6(1),t.hij(" ",e.name," ")}}function Ye(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",33),t.NdJ("click",function(){t.CHM(e),t.oxw();const a=t.MAs(5);return t.KtG(a.toggle())}),t.TgZ(1,"mat-icon",5),t._uU(2,"menu"),t.qZA()()}}function Be(n,i){if(1&n&&(t.TgZ(0,"a",34),t._uU(1),t.qZA()),2&n){const e=i.$implicit,o=i.index,a=t.oxw(2);t.Q6J("active",a.activeLinkIndex===o)("routerLink",e.link),t.xp6(1),t.hij(" ",e.name," ")}}function Ve(n,i){1&n&&t._UZ(0,"mat-progress-bar",36)}function Qe(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Ve,1,0,"mat-progress-bar",35),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.updatingResultsTable||e.calculatingResults||e.calculatingPermutations||e.updatingInventory||e.updatingVendors||e.updatingManifest)}}function He(n,i){1&n&&(t.TgZ(0,"mat-card",43),t._uU(1," Updating vendor information inventory in the background. "),t.qZA())}function We(n,i){1&n&&(t.TgZ(0,"mat-card",44),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3," Updating the cached manifest."),t.qZA())}function je(n,i){1&n&&(t.TgZ(0,"mat-card",45),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3," Updating the cached inventory."),t.qZA())}function Ge(n,i){if(1&n&&(t.TgZ(0,"mat-card",46),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3," Calculating possible results. "),t._UZ(4,"mat-progress-bar",47),t.qZA()),2&n){const e=t.oxw(3);t.xp6(4),t.Q6J("value",e.computationProgress)}}function ze(n,i){1&n&&(t.TgZ(0,"mat-card",48),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3,"Updating the result display table."),t.qZA())}function Ke(n,i){if(1&n&&(t.TgZ(0,"div",37),t.YNc(1,He,2,0,"mat-card",38),t.YNc(2,We,4,0,"mat-card",39),t.YNc(3,je,4,0,"mat-card",40),t.YNc(4,Ge,5,1,"mat-card",41),t.YNc(5,ze,4,0,"mat-card",42),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.updatingVendors),t.xp6(1),t.Q6J("ngIf",e.updatingManifest),t.xp6(1),t.Q6J("ngIf",e.updatingInventory),t.xp6(1),t.Q6J("ngIf",e.calculatingResults),t.xp6(1),t.Q6J("ngIf",e.updatingResultsTable)}}function $e(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div"),t.YNc(1,qe,4,0,"mat-toolbar",1),t.YNc(2,Je,2,1,"div",0),t.ALo(3,"async"),t.TgZ(4,"mat-sidenav",2,3),t.ALo(6,"async"),t.TgZ(7,"mat-toolbar")(8,"button",4),t.NdJ("click",function(){t.CHM(e);const a=t.MAs(5);return t.KtG(a.toggle())}),t.TgZ(9,"mat-icon",5),t._uU(10,"menu"),t.qZA(),t._uU(11," Close Menu "),t.qZA()(),t._UZ(12,"hr"),t.TgZ(13,"mat-nav-list"),t.YNc(14,Le,2,4,"a",6),t._UZ(15,"hr"),t.TgZ(16,"a",7)(17,"a",8)(18,"mat-icon",9),t._uU(19,"attach_money"),t.qZA(),t._uU(20," Buy me a coffee! "),t.qZA()(),t.TgZ(21,"a",10),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.changelog.openChangelogDialog())}),t.TgZ(22,"a",11),t._uU(23," Open changelog "),t.qZA()(),t._UZ(24,"hr"),t.qZA()(),t.TgZ(25,"mat-toolbar",12),t.YNc(26,Ye,3,0,"button",13),t.ALo(27,"async"),t.TgZ(28,"span"),t._uU(29,"D2ArmorPicker "),t.TgZ(30,"small"),t._uU(31," by Mijago"),t.qZA(),t.TgZ(32,"a",14),t._UZ(33,"img",15),t.qZA(),t.TgZ(34,"a",16),t._UZ(35,"img",17),t.qZA(),t.TgZ(36,"a",18),t._UZ(37,"img",19),t.qZA()(),t._UZ(38,"span",20),t.TgZ(39,"div",21)(40,"nav",22),t.YNc(41,Be,2,3,"a",23),t.qZA()(),t._UZ(42,"span",20),t.TgZ(43,"div",24)(44,"span",25)(45,"a",26),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.changelog.openChangelogDialog())}),t._uU(46),t.qZA()(),t.TgZ(47,"a",27)(48,"mat-icon",9),t._uU(49,"attach_money"),t.qZA(),t._uU(50," Buy me a coffee! "),t.qZA(),t.TgZ(51,"button",28),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.refreshAll(!0))}),t.TgZ(52,"mat-icon"),t._uU(53,"refresh"),t.qZA()(),t.TgZ(54,"button",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.logout())}),t.TgZ(55,"mat-icon"),t._uU(56,"logout"),t.qZA()()()(),t._UZ(57,"router-outlet"),t.YNc(58,Qe,2,1,"span",0),t.ALo(59,"async"),t.YNc(60,Ke,6,5,"div",30),t.ALo(61,"async"),t._UZ(62,"app-changelog-dialog-controller"),t.qZA()}if(2&n){const e=i.ngVar,o=t.oxw();t.xp6(1),t.Q6J("ngIf",e.apiError),t.xp6(1),t.Q6J("ngVar",t.lcZ(3,10,o.status.status)),t.xp6(2),t.Q6J("opened",!1),t.uIk("role",t.lcZ(6,12,o.isHandset$)?"dialog":"navigation"),t.xp6(10),t.Q6J("ngForOf",o.navLinks),t.xp6(12),t.Q6J("ngIf",t.lcZ(27,14,o.isHandset$)),t.xp6(15),t.Q6J("ngForOf",o.navLinks),t.xp6(5),t.hij("v",o.version,"\xa0"),t.xp6(12),t.Q6J("ngVar",t.lcZ(59,16,o.status.status)),t.xp6(2),t.Q6J("ngVar",t.lcZ(61,18,o.status.status))}}let Xe=(()=>{class n{constructor(e,o,a,s,r,d,p){this.status=e,this.breakpointObserver=o,this.inv=a,this.auth=s,this.router=r,this.characterStats=d,this.changelog=p,this.version=g.N.version,this.activeLinkIndex=0,this.computationProgress=0,this.navLinks=[{link:"/",name:"Home"},{link:"/cluster",name:"Clustering"},{link:"/help",name:"Help"},{link:"/investigate",name:"Armor Investigation"},{link:"/account",name:"Account"}],this.isHandset$=this.breakpointObserver.observe([U.u3.Handset,U.u3.Small,U.u3.XSmall]).pipe((0,E.U)(A=>A.matches),(0,F.d)())}ngOnInit(){this.activeLinkIndex=this.navLinks.indexOf(this.navLinks.find(e=>e.link===this.router.url)),this.router.events.subscribe(e=>{e instanceof ot.m2&&(this.activeLinkIndex=this.navLinks.indexOf(this.navLinks.find(o=>o.link===this.router.url)))}),this.characterStats.loadCharacterStats(),this.inv.calculationProgress.subscribe(e=>{this.computationProgress=e})}refreshAll(e){var o=this;return(0,y.Z)(function*(){console.debug("Trigger refreshAll due to button press"),yield o.inv.refreshAll(e)})()}logout(){this.auth.logout()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(vt),t.Y36(U.Yg),t.Y36(Tt),t.Y36(gt),t.Y36(ot.F0),t.Y36(ae),t.Y36(se))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-app-v2-core"]],decls:2,vars:3,consts:[[4,"ngVar"],["color","warn","class","bar-api-warn",4,"ngIf"],["fixedInViewport","","mode","over",1,"sidenav",3,"opened"],["drawer",""],["aria-label","Toggle sidenav","mat-stroked-button","","type","button",3,"click"],["aria-label","Side nav toggle icon"],["mat-list-item","",3,"active","routerLink","click",4,"ngFor","ngForOf"],["href","https://ko-fi.com/mijago","mat-list-item",""],["color","primary","mat-raised-button","","matTooltip","You like my work? This leads you to ko-fi.com, where you can easily support me!","target","_blank"],["inline",""],["mat-list-item","",3,"click"],["mat-raised-button",""],["id","header","role","heading"],["aria-label","Toggle sidenav","mat-icon-button","","type","button",3,"click",4,"ngIf"],["href","https://twitter.com/MijagoCoding/","matTooltip","Birb App","target","_blank"],["alt","Me on twitter","src","assets/logo-twitter.png",1,"logo-twitter"],["href","https://ko-fi.com/mijago","matTooltip","If you like my work, you can always buy me a coffee!","target","_blank"],["alt","Ko-Fi","src","assets/logo-kofi.png",1,"logo-twitter"],["href","http://discord.d2armorpicker.com/","matTooltip","Visit me at the development & support discord.","target","_blank"],["alt","Discord","src","assets/logo-discord.png",1,"logo-twitter"],[1,"header-spacer"],["fxHide.lt-md","true","fxShow","true"],["id","navbar","mat-tab-nav-bar",""],["mat-tab-link","",3,"active","routerLink",4,"ngFor","ngForOf"],["id","buttonContainer"],["fxShow","false","fxShow.gt-md","true","matTooltip","Click to show the changelog dialog.",1,"changelogText"],[3,"click"],["color","accent","fxHide.lt-md","true","fxShow","true","href","https://ko-fi.com/mijago","mat-stroked-button","","matTooltip","You like my work? This leads you to ko-fi.com, where you can easily support me!","target","_blank"],["aria-label","Refresh","mat-icon-button","","matTooltip","Reload all items from the API.",1,"example-icon",3,"click"],["aria-label","Logout","color","warn","mat-icon-button","","matTooltip","Logout",1,"example-icon",3,"click"],["class","info-container",4,"ngVar"],["color","warn",1,"bar-api-warn"],["mat-list-item","",3,"routerLink","click"],["aria-label","Toggle sidenav","mat-icon-button","","type","button",3,"click"],["mat-tab-link","",3,"active","routerLink"],["id","loading","mode","indeterminate",4,"ngIf"],["id","loading","mode","indeterminate"],[1,"info-container"],["class","info info-updating-vendor",4,"ngIf"],["class","info info-updating-manifest",4,"ngIf"],["class","info info-updating-inventory",4,"ngIf"],["class","info info-calculating-results",4,"ngIf"],["class","info info-updating-results",4,"ngIf"],[1,"info","info-updating-vendor"],[1,"info","info-updating-manifest"],[1,"info","info-updating-inventory"],[1,"info","info-calculating-results"],[3,"value"],[1,"info","info-updating-results"]],template:function(e,o){1&e&&(t.YNc(0,$e,63,20,"div",0),t.ALo(1,"async")),2&e&&t.Q6J("ngVar",t.lcZ(1,1,o.status.status))},dependencies:[I.sg,I.O5,M.b8,st.lW,st.zs,Y.a8,pt.gM,Pe.pW,St.Hw,wt.Ye,Gt.Hk,Gt.Tg,Te.BU,Te.Nj,Re.JX,ot.lC,ot.yS,zt,Ne,I.Ov],styles:[".loading[_ngcontent-%COMP%]{cursor:progress}.info-container[_ngcontent-%COMP%]{z-index:1000;position:fixed;top:37px;right:0;display:flex;flex-direction:column;justify-content:center;align-items:center;flex-wrap:wrap;padding:10px;overflow:auto;pointer-events:none}@media (min-width: 1650px){.info-container[_ngcontent-%COMP%]{left:1380px;right:auto}}.info[_ngcontent-%COMP%]{width:200px;margin-bottom:5px;border:antiquewhite 1px solid}.info.info-updating-manifest[_ngcontent-%COMP%]{border-color:#f09c4e}.info.info-updating-inventory[_ngcontent-%COMP%]{border-color:#f0ad4e}.info.info-updating-vendor[_ngcontent-%COMP%]{border-color:#f0e54e}.info.info-calculating-permutations[_ngcontent-%COMP%]{border-color:#5cb85c}.info.info-calculating-results[_ngcontent-%COMP%]{border-color:#89b85c}.info.info-updating-results[_ngcontent-%COMP%]{border-color:#5cb85c}.sidenav-container[_ngcontent-%COMP%]{position:fixed;top:0;left:0;height:100%;z-index:20}.sidenav[_ngcontent-%COMP%]{width:200px;position:fixed;top:0;left:0;height:100%;z-index:20}.sidenav[_ngcontent-%COMP%] .mat-toolbar[_ngcontent-%COMP%]{background:inherit}.sidenav[_ngcontent-%COMP%] .active[_ngcontent-%COMP%]{background-color:#ffffff12;color:#b8c4dc}.mat-toolbar.mat-primary[_ngcontent-%COMP%]{position:sticky;top:0;z-index:1}#header[_ngcontent-%COMP%]{position:relative;height:42px;margin-bottom:5px}.header-spacer[_ngcontent-%COMP%]{flex:1 1 auto}.changelogText[_ngcontent-%COMP%]{cursor:pointer}#loading[_ngcontent-%COMP%]{position:fixed;top:0;width:100%;z-index:1000}.d2ap-router-link[_ngcontent-%COMP%]{cursor:pointer}[_nghost-%COMP%] .mat-tab-link{min-width:75px;opacity:1}.bar-api-warn[_ngcontent-%COMP%]{background-color:#f0894e;position:relative;height:20px;margin-bottom:2px;font-size:16px}"]}),n})();var G=_(2143),ve=_(8739),de=_(6308),yt=_(7340),Ct=_(7625);function tn(n,i){1&n&&(t.ynx(0),t._uU(1," Click on a row to expand it and to see the list of the items required for this build."),t._UZ(2,"br"),t.BQk())}function en(n,i){1&n&&(t.ynx(0),t.TgZ(1,"div",59),t._UZ(2,"img",60),t._uU(3,"\xa0 "),t.qZA(),t.TgZ(4,"span",61)(5,"b"),t._uU(6,"No combinations found."),t.qZA()(),t._uU(7," You should loosen your settings a bit. "),t.BQk())}function nn(n,i){if(1&n&&(t.TgZ(0,"mat-icon",62,63),t.ALo(2,"number"),t._uU(3,"report_problem "),t.qZA()),2&n){const e=t.oxw();t.MGl("matTooltip","Note: To speed up the whole process, only ",t.lcZ(2,1,e.parsedResults)," results are listed in this table.\n If you need more entries, disable the limitation in the advanced settings.")}}function on(n,i){if(1&n&&(t.TgZ(0,"mat-icon",62,63),t.ALo(2,"number"),t._uU(3,"report_problem "),t.qZA()),2&n){const e=t.oxw();t.MGl("matTooltip","Note: To prevent Out-Of-Memory crashes, only ",t.lcZ(2,1,e.parsedResults)," results are listed in this table.\n You should narrow down your settings a bit.")}}function an(n,i){1&n&&(t.TgZ(0,"mat-chip",64,63),t._uU(2,"No Exotic "),t.qZA())}function sn(n,i){1&n&&(t.TgZ(0,"mat-chip",65,63),t._uU(2,"Exotic "),t.qZA())}function rn(n,i){1&n&&(t.TgZ(0,"mat-chip",66,63),t._uU(2," Multiple Exotics "),t.qZA())}function ln(n,i){1&n&&(t.TgZ(0,"mat-chip",67,63),t._uU(2,"No stat mods "),t.qZA())}function cn(n,i){1&n&&(t.TgZ(0,"mat-chip",68,63),t._uU(2,"Reduce wasted stats "),t.qZA())}function mn(n,i){1&n&&(t.TgZ(0,"mat-chip",69,63),t._uU(2,"Stat Mod Limitation "),t.qZA())}function dn(n,i){1&n&&(t.TgZ(0,"mat-chip",70,63),t._uU(2," Armor Perk or Slot "),t.qZA())}function un(n,i){1&n&&(t.TgZ(0,"mat-chip",71,63),t._uU(2,"Zero Waste "),t.qZA())}function pn(n,i){1&n&&(t.TgZ(0,"mat-chip",72,63)(2,"mat-icon",73),t._uU(3,"report_problem"),t.qZA(),t._uU(4," \xa0Assume legendaries are artifice\xa0 "),t.TgZ(5,"mat-icon",73),t._uU(6,"report_problem"),t.qZA()())}function gn(n,i){1&n&&(t.TgZ(0,"mat-chip",74,63)(2,"mat-icon",73),t._uU(3,"report_problem"),t.qZA(),t._uU(4," \xa0Assume exotics are artifice\xa0 "),t.TgZ(5,"mat-icon",73),t._uU(6,"report_problem"),t.qZA()())}function _n(n,i){1&n&&(t.TgZ(0,"mat-chip",75,63)(2,"mat-icon",73),t._uU(3,"report_problem"),t.qZA(),t._uU(4," \xa0Ignoring existing artifice slots on exotic items\xa0 "),t.TgZ(5,"mat-icon",73),t._uU(6,"report_problem"),t.qZA()())}function fn(n,i){1&n&&(t.TgZ(0,"mat-chip",76,63),t._uU(2," Masterworked Exotics Only "),t.qZA())}function hn(n,i){1&n&&(t.TgZ(0,"mat-chip",77,63),t._uU(2," Masterworked Legendaries Only "),t.qZA())}function xn(n,i){1&n&&(t.TgZ(0,"mat-chip",78,63),t._uU(2," Masterwork Assumption "),t.qZA())}function yn(n,i){1&n&&(t.TgZ(0,"mat-chip",79,63),t._uU(2," Include Collection Rolls "),t.qZA())}function Cn(n,i){1&n&&(t.TgZ(0,"mat-chip",80,63),t._uU(2," Include Vendor Items "),t.qZA())}function Tn(n,i){1&n&&(t.TgZ(0,"th",81),t._uU(1,"Mobility "),t.qZA())}function vn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",83),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Mobility]," ")}}function bn(n,i){1&n&&(t.TgZ(0,"th",84),t._uU(1," Resilience "),t.qZA())}function An(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",85),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Resilience]," ")}}function wn(n,i){1&n&&(t.TgZ(0,"th",86),t._uU(1," Recovery "),t.qZA())}function Zn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",87),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Recovery]," ")}}function In(n,i){1&n&&(t.TgZ(0,"th",88),t._uU(1," Discipline "),t.qZA())}function Sn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",89),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Discipline]," ")}}function Mn(n,i){1&n&&(t.TgZ(0,"th",90),t._uU(1," Intellect "),t.qZA())}function On(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",91),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Intellect]," ")}}function kn(n,i){1&n&&(t.TgZ(0,"th",92),t._uU(1,"Strength "),t.qZA())}function En(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",93),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Strength]," ")}}function Un(n,i){1&n&&(t.TgZ(0,"th",94),t._uU(1," Used Mods "),t.qZA())}function Dn(n,i){if(1&n&&(t.TgZ(0,"td",95),t._UZ(1,"app-table-mod-display",96),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("mods",e.mods)("artifice",e.artifice)}}function Pn(n,i){1&n&&(t.TgZ(0,"th",97),t._uU(1," Exotic"),t.qZA())}function Rn(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"img",100,63)(3,"img",101),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.s9C("matTooltip",e.name),t.MGl("src","https://bungie.net/",e.icon,"",t.LSH),t.xp6(2),t.MGl("src","https://bungie.net/",e.watermark,"",t.LSH)}}function Nn(n,i){1&n&&t._UZ(0,"img",102)}function qn(n,i){if(1&n&&(t.TgZ(0,"td",95),t.YNc(1,Rn,4,3,"ng-container",98),t.YNc(2,Nn,1,0,"img",99),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e.exotic),t.xp6(1),t.Q6J("ngIf",0===e.exotic.length)}}function Fn(n,i){1&n&&(t.TgZ(0,"th",97),t._uU(1,"Sources"),t.qZA())}function Jn(n,i){1&n&&t._UZ(0,"img",106)}function Ln(n,i){1&n&&t._UZ(0,"img",107)}function Yn(n,i){if(1&n&&(t.TgZ(0,"td",95)(1,"span",103),t.YNc(2,Jn,1,0,"img",104),t.YNc(3,Ln,1,0,"img",105),t.qZA()()),2&n){const e=i.$implicit;t.xp6(2),t.Q6J("ngIf",!!e.usesCollectionRoll),t.xp6(1),t.Q6J("ngIf",!!e.usesVendorRoll)}}function Bn(n,i){1&n&&t._UZ(0,"th",97)}function Vn(n,i){1&n&&(t.TgZ(0,"mat-icon",111),t._uU(1," expand_more "),t.qZA())}function Qn(n,i){1&n&&(t.TgZ(0,"mat-icon",112),t._uU(1," expand_less "),t.qZA())}function Hn(n,i){1&n&&(t.TgZ(0,"mat-icon",113,63),t._uU(2," report_problem "),t.qZA())}function Wn(n,i){if(1&n&&(t.TgZ(0,"td",95),t.YNc(1,Vn,2,0,"mat-icon",108),t.YNc(2,Qn,2,0,"mat-icon",109),t.YNc(3,Hn,3,0,"mat-icon",110),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.Q6J("ngIf",o.expandedElement!==e),t.xp6(1),t.Q6J("ngIf",o.expandedElement===e),t.xp6(1),t.Q6J("ngIf",o.checkIfAnyItemsMayBeInvalid(e))}}function jn(n,i){1&n&&(t.TgZ(0,"th",114),t._uU(1,"Tiers "),t.qZA())}function Gn(n,i){if(1&n&&(t.TgZ(0,"td",95),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.tiers," ")}}function zn(n,i){1&n&&(t.TgZ(0,"th",115),t._uU(1,"Max Tiers "),t.qZA())}function Kn(n,i){if(1&n&&(t.TgZ(0,"td",95),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.tiers+(5-e.modCount)," ")}}function $n(n,i){1&n&&(t.TgZ(0,"th",116),t._uU(1,"Wasted "),t.qZA())}function Xn(n,i){if(1&n&&(t.TgZ(0,"td",95),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.waste," ")}}function to(n,i){if(1&n&&(t.TgZ(0,"td",95)(1,"div",117),t._UZ(2,"app-expanded-result-content",118),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw();t.uIk("colspan",o.shownColumns.length),t.xp6(1),t.Q6J("@detailExpand",e===o.expandedElement?"expanded":"collapsed"),t.xp6(1),t.Q6J("element",e)}}function eo(n,i){1&n&&t._UZ(0,"tr",119)}function no(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr",120),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.expandedElement=r.expandedElement===s?null:s)}),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw();t.ekj("example-expanded-row",o.expandedElement===e)}}function oo(n,i){1&n&&t._UZ(0,"tr",121)}function io(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-card-actions"),t._UZ(1,"span",122),t.TgZ(2,"button",123),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.saveBuilds())}),t._uU(3,"Download results as JSON"),t.qZA()()}}const ao=function(){return["expandedDetail"]},so=function(){return[10,20,50]};var Qt=(()=>{return(n=Qt||(Qt={}))[n.TRANSFER_NONE=0]="TRANSFER_NONE",n[n.WAITING_FOR_TRANSFER=1]="WAITING_FOR_TRANSFER",n[n.TRANSFERRING=2]="TRANSFERRING",n[n.TRANSFERRED=3]="TRANSFERRED",n[n.ERROR_DURING_TRANSFER=4]="ERROR_DURING_TRANSFER",Qt;var n})();let be=(()=>{class n{constructor(e,o,a){this.inventory=e,this.config=o,this.status=a,this.ArmorStat=c.WB,this.StatModifier=c.iV,this._results=[],this._config_assumeLegendariesMasterworked=!1,this._config_assumeExoticsMasterworked=!1,this._config_assumeClassItemMasterworked=!1,this._config_maximumStatMods=5,this._config_selectedExotics=[],this._config_tryLimitWastedStats=!1,this._config_onlyUseMasterworkedExotics=!1,this._config_onlyUseMasterworkedLegendaries=!1,this._config_includeCollectionRolls=!1,this._config_includeVendorRolls=!1,this._config_onlyShowResultsWithNoWastedStats=!1,this._config_assumeEveryLegendaryIsArtifice=!1,this._config_assumeEveryExoticIsArtifice=!1,this._config_ignoreExistingExoticArtificeSlots=!1,this._config_modslotLimitation=[],this._config_armorPerkLimitation=[],this.tableDataSource=new G.by,this.paginator=null,this.sort=null,this.expandedElement=null,this.shownColumns=["exotic","mobility","resilience","recovery","discipline","intellect","strength","tiers","mods","dropdown"],this.selectedClass=3,this.totalTime=0,this.itemCount=0,this.totalResults=0,this.parsedResults=0,this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(o=>{this.selectedClass=o.characterClass,this._config_assumeLegendariesMasterworked=o.assumeLegendariesMasterworked,this._config_assumeExoticsMasterworked=o.assumeExoticsMasterworked,this._config_assumeClassItemMasterworked=o.assumeClassItemMasterworked,this._config_tryLimitWastedStats=o.tryLimitWastedStats,this._config_maximumStatMods=o.maximumStatMods,this._config_onlyUseMasterworkedExotics=o.onlyUseMasterworkedExotics,this._config_onlyUseMasterworkedLegendaries=o.onlyUseMasterworkedLegendaries,this._config_includeCollectionRolls=o.includeCollectionRolls,this._config_includeVendorRolls=o.includeVendorRolls,this._config_onlyShowResultsWithNoWastedStats=o.onlyShowResultsWithNoWastedStats,this._config_assumeEveryLegendaryIsArtifice=o.assumeEveryLegendaryIsArtifice,this._config_assumeEveryExoticIsArtifice=o.assumeEveryExoticIsArtifice,this._config_ignoreExistingExoticArtificeSlots=o.ignoreExistingExoticArtificeSlots,this._config_selectedExotics=o.selectedExotics,this._config_armorPerkLimitation=Object.entries(o.armorPerks).filter(s=>s[1].value!=c.Pn.None).map(s=>s[1]),this._config_modslotLimitation=Object.entries(o.maximumModSlots).filter(s=>s[1].value<5).map(s=>s[1]);let a=["exotic","mobility","resilience","recovery","discipline","intellect","strength",o.showPotentialTierColumn?"potential_tiers":"tiers","mods"];o.showWastedStatsColumn&&a.push("waste"),(o.includeVendorRolls||o.includeCollectionRolls)&&a.push("source"),a.push("dropdown"),this.shownColumns=a}),this.inventory.armorResults.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,y.Z)(function*(a){e._results=a.results,e.itemCount=a.itemCount,e.totalTime=a.totalTime,e.totalResults=a.totalResults,e.parsedResults=e._results.length,e.status.modifyStatus(s=>s.updatingResultsTable=!0),yield e.updateData(),e.status.modifyStatus(s=>s.updatingResultsTable=!1)});return function(a){return o.apply(this,arguments)}}()),this.tableDataSource.paginator=this.paginator,this.tableDataSource.sort=this.sort,this.tableDataSource.sortingDataAccessor=(o,a)=>{switch(a){case"Mobility":return o.stats[c.WB.Mobility];case"Resilience":return o.stats[c.WB.Resilience];case"Recovery":return o.stats[c.WB.Recovery];case"Discipline":return o.stats[c.WB.Discipline];case"Intellect":return o.stats[c.WB.Intellect];case"Strength":return o.stats[c.WB.Strength];case"Tiers":return o.tiers;case"Max Tiers":return 10*(o.tiers+(5-o.modCount));case"Waste":return o.waste;case"Mods":return 100*o.modCount+o.modCost}return 0}}updateData(){var e=this;return(0,y.Z)(function*(){console.time("Update Table Data"),e.tableDataSource.paginator=e.paginator,e.tableDataSource.sort=e.sort,e.tableDataSource.data=e._results,console.timeEnd("Update Table Data")})()}checkIfAnyItemsMayBeInvalid(e){return(e?.items.filter(o=>o.filter(a=>a.mayBeBugged).length>0).length||0)>0}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}saveBuilds(){let e={configCompressed:this.config.getCurrentConfigBase64Compressed(),config:this.config.readonlyConfigurationSnapshot,results:this._results.map(r=>{let d=Object.assign({},r);return d.items=d.items.filter(p=>!!p[0]).map(p=>({hash:p[0].hash,instance:p[0].itemInstanceId})),delete d.exotic,d})};document.createElement("a").download="builds.json";const a=window.URL.createObjectURL(new Blob([JSON.stringify(e,null,2)])),s=document.createElement("a");s.href=a,s.setAttribute("download","d2ap_results.json"),document.body.appendChild(s),s.click()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Tt),t.Y36(X),t.Y36(vt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-results"]],viewQuery:function(e,o){if(1&e&&(t.Gf(ve.NW,5),t.Gf(de.YE,5)),2&e){let a;t.iGM(a=t.CRH())&&(o.paginator=a.first),t.iGM(a=t.CRH())&&(o.sort=a.first)}},decls:98,vars:37,consts:[["id","card-results"],[4,"ngIf"],["fxLayout","row","fxLayoutAlign","start center","fxLayoutGap","5px",1,"config-summary-box"],["appearance","outline","fxFlex","",1,"info-box"],["matInput","","readonly","",3,"value"],["class","report-problem-icon","matSuffix","",3,"matTooltip",4,"ngIf"],["appearance","outline","disabled","",1,"config-summary-box"],["matInput","","readonly","","value","\xa0",1,"hidden-input"],["aria-label","Configuration Summary"],["disableRipple","","matTooltip","This setting enforces that all exotics are ignored.",4,"ngIf"],["disableRipple","","matTooltip","This setting enforces that only one specific exotic is used.",4,"ngIf"],["disableRipple","","matTooltip","The tool will try to fulfill your settings for all the selected exotics. If you select exotics in different slots then it will search for legendary items to allow hotswapping with the same stats.",4,"ngIf"],["disableRipple","","matTooltip","You enforced that no stat mods are used.",4,"ngIf"],["disableRipple","","matTooltip","The tool will add minor stat mods to reduce wasted stats.",4,"ngIf"],["disableRipple","","matTooltip","This setting limits available stat mod types, like major Intellect or Recovery.",4,"ngIf"],["disableRipple","","matTooltip","This setting enforces an specific armor perk or modslot for a specific armor slot.",4,"ngIf"],["disableRipple","","matTooltip","This setting means that only builds with no wasted stats are shown.","selected","",4,"ngIf"],["disableRipple","","matTooltip","EVERY legendary is assumed to be artifice.","selected","","color","warn",4,"ngIf"],["disableRipple","","matTooltip","EVERY exotic is assumed to be artifice.","selected","","color","warn",4,"ngIf"],["disableRipple","","matTooltip","Ignoring existing artifice slots on exotic items.","selected","","color","warn",4,"ngIf"],["disableRipple","","matTooltip","This setting means that only exotic armor pieces that are already masterworked are used.","selected","",4,"ngIf"],["disableRipple","","matTooltip","This setting means that only legendary armor pieces are already masterworked are used.","selected","",4,"ngIf"],["disableRipple","","matTooltip","Some masterwork assumptions are in place. This means that you may have to masterwork items. Look at your advanced settings to see which ones are activated.",4,"ngIf"],["disableRipple","","matTooltip","Collection Exotic rolls will be included in the search.",4,"ngIf"],["disableRipple","","matTooltip","Currently available Vendor items will be included in the search.",4,"ngIf"],[1,"hint-text"],["aria-hidden","false","inline",""],["mat-table","","matSort","","matSortActive","Mods","matSortDirection","asc","multiTemplateDataRows","",1,"result-table",3,"dataSource"],["matColumnDef","mobility"],["mat-header-cell","","mat-sort-header","Mobility","matTooltip","The mobility of this armor combination.",4,"matHeaderCellDef"],["class","statColumn","mat-cell","",4,"matCellDef"],["matColumnDef","resilience"],["mat-header-cell","","mat-sort-header","Resilience","matTooltip","The resilience of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","recovery"],["mat-header-cell","","mat-sort-header","Recovery","matTooltip","The recovery of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","discipline"],["mat-header-cell","","mat-sort-header","Discipline","matTooltip","The discipline of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","intellect"],["mat-header-cell","","mat-sort-header","Intellect","matTooltip","The intellect of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","strength"],["mat-header-cell","","mat-sort-header","Strength","matTooltip","The strength of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","mods"],["mat-header-cell","","mat-sort-header","Mods","matTooltip","The amount of mods required for each combination. Sorting after this takes the mod cost into account.",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","exotic"],["mat-header-cell","",4,"matHeaderCellDef"],["matColumnDef","source"],["matColumnDef","dropdown"],["matColumnDef","tiers"],["mat-header-cell","","mat-sort-header","Tiers","matTooltip","The amount of Tiers in this build. A tier is each successful 10-step of any stat.",4,"matHeaderCellDef"],["matColumnDef","potential_tiers"],["mat-header-cell","","mat-sort-header","Max Tiers","matTooltip","The potential reachable stat tiers with all N stat mods used. As of now, this does NOT take mod filters into consideration.",4,"matHeaderCellDef"],["matColumnDef","waste"],["mat-header-cell","","mat-sort-header","Waste","matTooltip","How many points are wasted. Any stat not ending in 0 adds to this value.",4,"matHeaderCellDef"],["matColumnDef","expandedDetail"],["mat-header-row","",4,"matHeaderRowDef"],["class","example-element-row","mat-row","",3,"example-expanded-row","click",4,"matRowDef","matRowDefColumns"],["class","example-detail-row","mat-row","",4,"matRowDef","matRowDefColumns"],["aria-label","Select page of periodic elements","pageSize","20","showFirstLastButtons","",3,"pageSizeOptions"],[1,"no-found-sadcat-container"],["src","assets/status/emoji/sadcat.png",1,"no-found-sadcat"],[1,"warning-none-found"],["matSuffix","",1,"report-problem-icon",3,"matTooltip"],["tooltip","matTooltip"],["disableRipple","","matTooltip","This setting enforces that all exotics are ignored."],["disableRipple","","matTooltip","This setting enforces that only one specific exotic is used."],["disableRipple","","matTooltip","The tool will try to fulfill your settings for all the selected exotics. If you select exotics in different slots then it will search for legendary items to allow hotswapping with the same stats."],["disableRipple","","matTooltip","You enforced that no stat mods are used."],["disableRipple","","matTooltip","The tool will add minor stat mods to reduce wasted stats."],["disableRipple","","matTooltip","This setting limits available stat mod types, like major Intellect or Recovery."],["disableRipple","","matTooltip","This setting enforces an specific armor perk or modslot for a specific armor slot."],["disableRipple","","matTooltip","This setting means that only builds with no wasted stats are shown.","selected",""],["disableRipple","","matTooltip","EVERY legendary is assumed to be artifice.","selected","","color","warn"],["inline","",2,"height","100%"],["disableRipple","","matTooltip","EVERY exotic is assumed to be artifice.","selected","","color","warn"],["disableRipple","","matTooltip","Ignoring existing artifice slots on exotic items.","selected","","color","warn"],["disableRipple","","matTooltip","This setting means that only exotic armor pieces that are already masterworked are used.","selected",""],["disableRipple","","matTooltip","This setting means that only legendary armor pieces are already masterworked are used.","selected",""],["disableRipple","","matTooltip","Some masterwork assumptions are in place. This means that you may have to masterwork items. Look at your advanced settings to see which ones are activated."],["disableRipple","","matTooltip","Collection Exotic rolls will be included in the search."],["disableRipple","","matTooltip","Currently available Vendor items will be included in the search."],["mat-header-cell","","mat-sort-header","Mobility","matTooltip","The mobility of this armor combination."],["mat-cell","",1,"statColumn"],["alt","Mobility","src","https://www.bungie.net/common/destiny2_content/icons/e26e0e93a9daf4fdd21bf64eb9246340.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Resilience","matTooltip","The resilience of this armor combination."],["alt","Resilience","src","https://www.bungie.net/common/destiny2_content/icons/202ecc1c6febeb6b97dafc856e863140.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Recovery","matTooltip","The recovery of this armor combination."],["alt","Recovery","src","https://www.bungie.net/common/destiny2_content/icons/128eee4ee7fc127851ab32eac6ca91cf.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Discipline","matTooltip","The discipline of this armor combination."],["alt","Discipline","src","https://www.bungie.net/common/destiny2_content/icons/79be2d4adef6a19203f7385e5c63b45b.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Intellect","matTooltip","The intellect of this armor combination."],["alt","Intellect","src","https://www.bungie.net/common/destiny2_content/icons/d1c154469670e9a592c9d4cbdcae5764.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Strength","matTooltip","The strength of this armor combination."],["alt","Strength","src","https://www.bungie.net/common/destiny2_content/icons/ea5af04ccd6a3470a44fd7bb0f66e2f7.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Mods","matTooltip","The amount of mods required for each combination. Sorting after this takes the mod cost into account."],["mat-cell",""],[1,"modPreview",3,"mods","artifice"],["mat-header-cell",""],[4,"ngFor","ngForOf"],["class","itemIcon","src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png",4,"ngIf"],[1,"itemIcon",3,"matTooltip","src"],[1,"itemIconWatermark",3,"src"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png",1,"itemIcon"],[1,"source-column"],["matTooltip","This build uses a collection exotic. You have to collect it before you can use it.","class","collectionIcon","src","https://www.bungie.net/common/destiny2_content/icons/1d01287dd47af97fef16fa6acbac23ba.png",4,"ngIf"],["matTooltip","This build uses a vendor item. You have to collect it before you can use it.","class","vendorIcon","src","https://www.bungie.net/common/destiny2_content/icons/8ef4b5bd32277dba9aee7c368404ad5d.jpg",4,"ngIf"],["matTooltip","This build uses a collection exotic. You have to collect it before you can use it.","src","https://www.bungie.net/common/destiny2_content/icons/1d01287dd47af97fef16fa6acbac23ba.png",1,"collectionIcon"],["matTooltip","This build uses a vendor item. You have to collect it before you can use it.","src","https://www.bungie.net/common/destiny2_content/icons/8ef4b5bd32277dba9aee7c368404ad5d.jpg",1,"vendorIcon"],["matTooltip","Click to show details for this build.",4,"ngIf"],["matTooltip","Click to hide details for this build.",4,"ngIf"],["aria-hidden","false","aria-label","Error","class","report-problem-icon","inline","","matTooltip","The stats of this build may be incorrect. Make sure that you remove every positive or negative stat modifier from the marked items.",4,"ngIf"],["matTooltip","Click to show details for this build."],["matTooltip","Click to hide details for this build."],["aria-hidden","false","aria-label","Error","inline","","matTooltip","The stats of this build may be incorrect. Make sure that you remove every positive or negative stat modifier from the marked items.",1,"report-problem-icon"],["mat-header-cell","","mat-sort-header","Tiers","matTooltip","The amount of Tiers in this build. A tier is each successful 10-step of any stat."],["mat-header-cell","","mat-sort-header","Max Tiers","matTooltip","The potential reachable stat tiers with all N stat mods used. As of now, this does NOT take mod filters into consideration."],["mat-header-cell","","mat-sort-header","Waste","matTooltip","How many points are wasted. Any stat not ending in 0 adds to this value."],[1,"example-element-detail"],[3,"element"],["mat-header-row",""],["mat-row","",1,"example-element-row",3,"click"],["mat-row","",1,"example-detail-row"],[1,"flex-spacer"],["mat-raised-button","","color","primary",3,"click"]],template:function(e,o){1&e&&(t.TgZ(0,"mat-card",0)(1,"mat-card-title"),t._uU(2,"Results"),t.qZA(),t.TgZ(3,"mat-card-subtitle"),t.YNc(4,tn,3,0,"ng-container",1),t.YNc(5,en,8,0,"ng-container",1),t.qZA(),t.TgZ(6,"mat-card-content")(7,"div")(8,"div",2)(9,"mat-form-field",3)(10,"mat-label"),t._uU(11,"Items Used"),t.qZA(),t._UZ(12,"input",4),t.ALo(13,"number"),t.qZA(),t.TgZ(14,"mat-form-field",3)(15,"mat-label"),t._uU(16,"Combinations generated"),t.qZA(),t._UZ(17,"input",4),t.ALo(18,"number"),t.YNc(19,nn,4,3,"mat-icon",5),t.YNc(20,on,4,3,"mat-icon",5),t.qZA(),t.TgZ(21,"mat-form-field",3)(22,"mat-label"),t._uU(23,"Time required"),t.qZA(),t._UZ(24,"input",4),t.ALo(25,"number"),t.qZA()(),t.TgZ(26,"mat-form-field",6)(27,"mat-label"),t._uU(28,"Summary of important configuration choices"),t.qZA(),t._UZ(29,"input",7),t.TgZ(30,"mat-chip-list",8),t.YNc(31,an,3,0,"mat-chip",9),t.YNc(32,sn,3,0,"mat-chip",10),t.YNc(33,rn,3,0,"mat-chip",11),t.YNc(34,ln,3,0,"mat-chip",12),t.YNc(35,cn,3,0,"mat-chip",13),t.YNc(36,mn,3,0,"mat-chip",14),t.YNc(37,dn,3,0,"mat-chip",15),t.YNc(38,un,3,0,"mat-chip",16),t.YNc(39,pn,7,0,"mat-chip",17),t.YNc(40,gn,7,0,"mat-chip",18),t.YNc(41,_n,7,0,"mat-chip",19),t.YNc(42,fn,3,0,"mat-chip",20),t.YNc(43,hn,3,0,"mat-chip",21),t.YNc(44,xn,3,0,"mat-chip",22),t.YNc(45,yn,3,0,"mat-chip",23),t.YNc(46,Cn,3,0,"mat-chip",24),t.qZA()(),t.TgZ(47,"div",25)(48,"mat-icon",26),t._uU(49,"info"),t.qZA(),t._uU(50," Note that you can change the sort column and order of the table by clicking on the headers. "),t.qZA(),t.TgZ(51,"table",27),t.ynx(52,28),t.YNc(53,Tn,2,0,"th",29),t.YNc(54,vn,3,1,"td",30),t.BQk(),t.ynx(55,31),t.YNc(56,bn,2,0,"th",32),t.YNc(57,An,3,1,"td",30),t.BQk(),t.ynx(58,33),t.YNc(59,wn,2,0,"th",34),t.YNc(60,Zn,3,1,"td",30),t.BQk(),t.ynx(61,35),t.YNc(62,In,2,0,"th",36),t.YNc(63,Sn,3,1,"td",30),t.BQk(),t.ynx(64,37),t.YNc(65,Mn,2,0,"th",38),t.YNc(66,On,3,1,"td",30),t.BQk(),t.ynx(67,39),t.YNc(68,kn,2,0,"th",40),t.YNc(69,En,3,1,"td",30),t.BQk(),t.ynx(70,41),t.YNc(71,Un,2,0,"th",42),t.YNc(72,Dn,2,2,"td",43),t.BQk(),t.ynx(73,44),t.YNc(74,Pn,2,0,"th",45),t.YNc(75,qn,3,2,"td",43),t.BQk(),t.ynx(76,46),t.YNc(77,Fn,2,0,"th",45),t.YNc(78,Yn,4,2,"td",43),t.BQk(),t.ynx(79,47),t.YNc(80,Bn,1,0,"th",45),t.YNc(81,Wn,4,3,"td",43),t.BQk(),t.ynx(82,48),t.YNc(83,jn,2,0,"th",49),t.YNc(84,Gn,2,1,"td",43),t.BQk(),t.ynx(85,50),t.YNc(86,zn,2,0,"th",51),t.YNc(87,Kn,2,1,"td",43),t.BQk(),t.ynx(88,52),t.YNc(89,$n,2,0,"th",53),t.YNc(90,Xn,2,1,"td",43),t.BQk(),t.ynx(91,54),t.YNc(92,to,3,3,"td",43),t.BQk(),t.YNc(93,eo,1,0,"tr",55),t.YNc(94,no,1,2,"tr",56),t.YNc(95,oo,1,0,"tr",57),t.qZA(),t._UZ(96,"mat-paginator",58),t.qZA()(),t.YNc(97,io,4,0,"mat-card-actions",1),t.qZA()),2&e&&(t.xp6(4),t.Q6J("ngIf",o.totalResults>0),t.xp6(1),t.Q6J("ngIf",0===o.totalResults),t.xp6(7),t.s9C("value",t.lcZ(13,29,o.itemCount)),t.xp6(5),t.s9C("value",t.lcZ(18,31,o.totalResults)),t.xp6(2),t.Q6J("ngIf",o.parsedResults!==o.totalResults&&5e4===o.parsedResults),t.xp6(1),t.Q6J("ngIf",o.parsedResults!==o.totalResults&&1e6===o.parsedResults),t.xp6(4),t.MGl("value","",t.lcZ(25,33,o.totalTime),"ms"),t.xp6(7),t.Q6J("ngIf",o._config_selectedExotics.indexOf(-1)>-1),t.xp6(1),t.Q6J("ngIf",1===o._config_selectedExotics.length&&-1===o._config_selectedExotics.indexOf(-1)),t.xp6(1),t.Q6J("ngIf",o._config_selectedExotics.length>1&&-1===o._config_selectedExotics.indexOf(-1)),t.xp6(1),t.Q6J("ngIf",0===o._config_maximumStatMods),t.xp6(1),t.Q6J("ngIf",o._config_tryLimitWastedStats),t.xp6(1),t.Q6J("ngIf",o._config_modslotLimitation.length>0),t.xp6(1),t.Q6J("ngIf",o._config_armorPerkLimitation.length>0),t.xp6(1),t.Q6J("ngIf",o._config_onlyShowResultsWithNoWastedStats),t.xp6(1),t.Q6J("ngIf",o._config_assumeEveryLegendaryIsArtifice),t.xp6(1),t.Q6J("ngIf",o._config_assumeEveryExoticIsArtifice),t.xp6(1),t.Q6J("ngIf",o._config_ignoreExistingExoticArtificeSlots),t.xp6(1),t.Q6J("ngIf",o._config_onlyUseMasterworkedExotics),t.xp6(1),t.Q6J("ngIf",o._config_onlyUseMasterworkedLegendaries),t.xp6(1),t.Q6J("ngIf",!o._config_onlyUseMasterworkedExotics&&!o._config_onlyUseMasterworkedLegendaries&&(o._config_assumeLegendariesMasterworked||o._config_assumeExoticsMasterworked||o._config_assumeClassItemMasterworked)),t.xp6(1),t.Q6J("ngIf",o._config_includeCollectionRolls),t.xp6(1),t.Q6J("ngIf",o._config_includeVendorRolls),t.xp6(5),t.Q6J("dataSource",o.tableDataSource),t.xp6(42),t.Q6J("matHeaderRowDef",o.shownColumns),t.xp6(1),t.Q6J("matRowDefColumns",o.shownColumns),t.xp6(1),t.Q6J("matRowDefColumns",t.DdM(35,ao)),t.xp6(1),t.Q6J("pageSizeOptions",t.DdM(36,so)),t.xp6(1),t.Q6J("ngIf",o.totalResults>0))},styles:["#card-results[_ngcontent-%COMP%]{display:inline-block;vertical-align:top;white-space:normal;width:-moz-fit-content;width:fit-content;margin-left:3px}.statColumn[_ngcontent-%COMP%]{position:relative}.statIcon[_ngcontent-%COMP%]{position:absolute;height:22px;margin-left:2px;top:11px}.itemIcon[_ngcontent-%COMP%]{width:32px;height:32px;margin-right:3px}.itemIconWatermark[_ngcontent-%COMP%]{width:32px;height:32px;margin-right:3px;margin-left:-35px;pointer-events:none}.source-column[_ngcontent-%COMP%]{float:left}.source-column[_ngcontent-%COMP%] img[_ngcontent-%COMP%]:nth-of-type(2){margin-top:5px;margin-bottom:-3px}.collectionIcon[_ngcontent-%COMP%], .vendorIcon[_ngcontent-%COMP%]{width:32px;margin-left:3px;display:block}tr.example-element-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom-width:0}tr.example-detail-row[_ngcontent-%COMP%]{height:0!important}.example-element-detail[_ngcontent-%COMP%]{overflow:hidden;display:flex}.report-problem-icon[_ngcontent-%COMP%]{color:#f08080}.hint-text[_ngcontent-%COMP%]{font-size:small;color:#d5d5d5}[_nghost-%COMP%] .info-box .mat-form-field-wrapper{padding-bottom:5px!important;cursor:default}.hidden-input[_ngcontent-%COMP%]{display:none}.config-summary-box[_ngcontent-%COMP%]{width:100%}.result-table[_ngcontent-%COMP%] tr.example-element-row[_ngcontent-%COMP%]{cursor:pointer}.mat-row[_ngcontent-%COMP%]:nth-child(4n+3){background-color:#7474741a}.warning-none-found[_ngcontent-%COMP%]{color:red}.no-found-sadcat-container[_ngcontent-%COMP%]{width:20px;position:relative;display:inline-block}.no-found-sadcat[_ngcontent-%COMP%]{position:absolute;width:18px;top:-1px}.cdk-column-exotic[_ngcontent-%COMP%]{min-width:45px}.cdk-column-waste[_ngcontent-%COMP%]{padding-left:5px}"],data:{animation:[(0,yt.X$)("detailExpand",[(0,yt.SB)("collapsed, void",(0,yt.oB)({height:"0px"})),(0,yt.SB)("expanded",(0,yt.oB)({height:"*"})),(0,yt.eR)("expanded <=> collapsed",(0,yt.jt)("225ms cubic-bezier(0.4, 0.0, 0.2, 1)")),(0,yt.eR)("expanded <=> void",(0,yt.jt)("225ms cubic-bezier(0.4, 0.0, 0.2, 1)"))])]}}),n})();const ro={2:{shards:1,glimmer:500,core:0,prism:0,ascshard:0},3:{shards:1,glimmer:500,core:0,prism:0,ascshard:0},4:{shards:2,glimmer:500,core:0,prism:0,ascshard:0},5:{shards:2,glimmer:1e3,core:0,prism:0,ascshard:0},6:{shards:3,glimmer:1e3,core:1,prism:0,ascshard:0},7:{shards:3,glimmer:2500,core:2,prism:0,ascshard:0},8:{shards:4,glimmer:3e3,core:0,prism:1,ascshard:0},9:{shards:4,glimmer:3e3,core:0,prism:2,ascshard:0},10:{shards:5,glimmer:4e3,core:0,prism:0,ascshard:1}},lo={2:{shards:1,glimmer:500,core:0,prism:0,ascshard:0},3:{shards:2,glimmer:1e3,core:0,prism:0,ascshard:0},4:{shards:2,glimmer:1e3,core:0,prism:0,ascshard:0},5:{shards:3,glimmer:2500,core:0,prism:0,ascshard:0},6:{shards:3,glimmer:3e3,core:2,prism:0,ascshard:0},7:{shards:4,glimmer:3e3,core:3,prism:0,ascshard:0},8:{shards:4,glimmer:4e3,core:0,prism:2,ascshard:0},9:{shards:5,glimmer:4e3,core:0,prism:3,ascshard:0},10:{shards:6,glimmer:5e3,core:0,prism:0,ascshard:3}};var ue=_(7009),co=_(1572),te=_(4425),re=_(4080);const mo={[B.Inventory]:"Inventory",[B.Collections]:"Collections",[B.Vendor]:"Vendor"};let uo=(()=>{class n{constructor(e){this.database=e}transform(e){var o=this;return(0,y.Z)(function*(){return(yield o.database.vendorNames.where("vendorId").equals(e).first())?.vendorName??"Unknown Vendor"})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(w,16))},n.\u0275pipe=t.Yjl({name:"getVendorName",type:n,pure:!0}),n})(),po=(()=>{class n{constructor(){}transform(e){if(!e||!e.startsWith("v"))return-1;const o=parseInt(e.substring(1).split("-")[0]);return isNaN(o)?-1:o}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275pipe=t.Yjl({name:"getVendorIdFromItemId",type:n,pure:!0}),n})();function go(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Vendor"),t.qZA(),t.TgZ(3,"td",2),t._uU(4),t.ALo(5,"async"),t.ALo(6,"getVendorName"),t.ALo(7,"getVendorIdFromItemId"),t.qZA()()),2&n){const e=t.oxw();t.xp6(4),t.Oqu(t.lcZ(5,1,t.lcZ(6,3,t.lcZ(7,5,e.itemTooltip.itemInstanceId))))}}function _o(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Oqu(e)}}function fo(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Oqu(e+2)}}function ho(n,i){if(1&n&&(t.TgZ(0,"div",8),t._uU(1,"\xa0"),t.qZA()),2&n){const e=t.oxw(2);t.Udp("width",e.getWidth(2))}}function xo(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t.YNc(4,_o,2,1,"span",3),t.YNc(5,fo,2,1,"span",3),t.qZA(),t.TgZ(6,"td")(7,"div",5)(8,"div",6),t._uU(9,"\xa0"),t.qZA(),t.YNc(10,ho,2,2,"div",7),t.qZA()()()),2&n){const e=i.$implicit,o=i.index,a=t.oxw();t.xp6(2),t.Oqu(a.getArmorStatName(o)),t.xp6(2),t.Q6J("ngIf",!(null!=a.itemTooltip&&a.itemTooltip.masterworked)),t.xp6(1),t.Q6J("ngIf",null==a.itemTooltip?null:a.itemTooltip.masterworked),t.xp6(3),t.Udp("width",a.getWidth(e)),t.xp6(2),t.Q6J("ngIf",null==a.itemTooltip?null:a.itemTooltip.masterworked)}}let yo=(()=>{class n{constructor(){}getSourceText(){return this.itemTooltip?mo[this.itemTooltip.source]:""}getArmorStatName(e){return c.Mi[e]}getWidth(e){return Math.min(100,e/32*100)+"%"}getTotalStats(){return this.itemTooltip?.stats.reduce((e,o)=>e+o,0)||0}get isVendorItem(){return this.itemTooltip?.source===B.Vendor}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-tooltip-component"]],inputs:{itemTooltip:"itemTooltip"},decls:21,vars:5,consts:[[1,"tooltip-container"],["colspan","3"],["colspan","2"],[4,"ngIf"],[4,"ngFor","ngForOf"],[1,"stat-display"],[1,"stat-display-bar"],["class","stat-display-bar masterwork",3,"width",4,"ngIf"],[1,"stat-display-bar","masterwork"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t._uU(5),t.qZA()(),t.TgZ(6,"tr")(7,"td"),t._uU(8,"Source"),t.qZA(),t.TgZ(9,"td",2),t._uU(10),t.qZA()(),t.YNc(11,go,8,7,"tr",3),t.TgZ(12,"tr")(13,"td"),t._uU(14,"Current stats:"),t.qZA()(),t.YNc(15,xo,11,6,"tr",4),t.TgZ(16,"tr")(17,"td"),t._uU(18,"Total base stats:"),t.qZA(),t.TgZ(19,"td"),t._uU(20),t.qZA()()()()()),2&e&&(t.xp6(5),t.Oqu(null==o.itemTooltip?null:o.itemTooltip.name),t.xp6(5),t.Oqu(o.getSourceText()),t.xp6(1),t.Q6J("ngIf",o.isVendorItem&&o.itemTooltip),t.xp6(4),t.Q6J("ngForOf",null==o.itemTooltip?null:o.itemTooltip.stats),t.xp6(5),t.hij(" ",o.getTotalStats()," "))},dependencies:[I.sg,I.O5,I.Ov,po,uo],styles:[".tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.stat-display[_ngcontent-%COMP%]{width:70px;height:20px;background-color:#2c2c2c}.stat-display-bar[_ngcontent-%COMP%]{height:100%;background-color:#a1a1a1;float:left}.masterwork[_ngcontent-%COMP%]{background-color:#eedb9e}"]}),n})();var Jt=_(8184);let Co=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a,this.showToolTip=!0}ngOnInit(){if(!this.showToolTip)return;const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){this._overlayRef&&!this._overlayRef.hasAttached()&&(this._overlayRef.attach(new re.C5(yo)).instance.itemTooltip=this.itemTooltip)}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Jt.aV),t.Y36(Jt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","itemTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{showToolTip:"showToolTip",itemTooltip:"itemTooltip",contentTemplate:"contentTemplate"}}),n})(),pe=(()=>{class n{constructor(e){this.db=e,this.itemLookup=new Map}getItemCached(e){var o=this;return(0,y.Z)(function*(){if(o.itemLookup.has(e))return o.itemLookup.get(e)||void 0;const a=yield o.db.manifestArmor.where("hash").equals(e).first();return o.itemLookup.set(e,a),a})()}getExoticPerkDescription(e){var o=this;return(0,y.Z)(function*(){return e.exoticPerkHash?(yield o.getItemCached(e.exoticPerkHash))??null:null})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(w))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function To(n,i){if(1&n&&t._UZ(0,"img",6,7),2&n){const e=t.oxw(2);t.MGl("src","https://bungie.net/",e.item.icon,"",t.LSH),t.s9C("matTooltip",e.item.name)}}function vo(n,i){if(1&n&&t._UZ(0,"img",8),2&n){const e=t.oxw(2);t.MGl("src","https://bungie.net/",e.item.watermarkIcon,"",t.LSH)}}function bo(n,i){if(1&n&&t._UZ(0,"div",9),2&n){const e=t.oxw(2);t.ekj("vendor-item",e.isFromVendor)("collection-item",e.isFromCollection)}}function Ao(n,i){1&n&&t._UZ(0,"div",10)}function wo(n,i){if(1&n&&(t.TgZ(0,"div",1),t.YNc(1,To,2,2,"img",2),t.YNc(2,vo,1,1,"img",3),t.YNc(3,bo,1,4,"div",4),t.YNc(4,Ao,1,0,"div",5),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",e.item.icon),t.xp6(1),t.Q6J("ngIf",e.item.watermarkIcon),t.xp6(1),t.Q6J("ngIf",e.isFromVendor||e.isFromCollection),t.xp6(1),t.Q6J("ngIf",e.masterworked)}}let ge=(()=>{class n{constructor(e){this.iconService=e,this.itemHash=0,this.masterworked=!1,this.source=B.Inventory,this.isFromVendor=!1,this.isFromCollection=!1,this.item=void 0}ngAfterViewInit(){var e=this;return(0,y.Z)(function*(){e.item=yield e.iconService.getItemCached(e.itemHash),e.isFromVendor=e.source===B.Vendor,e.isFromCollection=e.source===B.Collections})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(pe))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-item-icon"]],inputs:{itemHash:"itemHash",masterworked:"masterworked",source:"source"},decls:1,vars:1,consts:[["class","item-icon-container",4,"ngIf"],[1,"item-icon-container"],["class","item-icon",3,"src","matTooltip",4,"ngIf"],["class","item-icon-overlay",3,"src",4,"ngIf"],["class","item-source-overlay",3,"vendor-item","collection-item",4,"ngIf"],["class","item-icon-masterwork-overlay",4,"ngIf"],[1,"item-icon",3,"src","matTooltip"],["tooltip","matTooltip"],[1,"item-icon-overlay",3,"src"],[1,"item-source-overlay"],[1,"item-icon-masterwork-overlay"]],template:function(e,o){1&e&&t.YNc(0,wo,5,4,"div",0),2&e&&t.Q6J("ngIf",o.item)},dependencies:[I.O5,pt.gM],styles:["[_nghost-%COMP%]{height:22px;width:22px;display:block}.item-icon-masterwork-overlay[_ngcontent-%COMP%]{pointer-events:none;box-sizing:border-box;top:-1px;left:-1px;border-width:0;height:24px;width:24px;position:absolute;background-repeat:no-repeat;background-position:center;background-size:22px 22px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAJgklEQVR4AWI8t87oBYCd8rBuGAZi6N1JUQbIrJkiY6bM4EoE1EHvqb+WHsPvG5AJU522JQ/znpY03GzJ3YTovcvcVFcO5WbU8eH/OZ8R91B241c6wEzowJUUZnqlXMiZufrJSs1XUjNBUb6OcvUFF8190fzkGxS2J0ChGPQZDnYAQObJWHbNlCvZIXKxqvHN8KBp22SubByb9EKFGM2hzgyNa47vUzvKvnUToHPOINMFHG6Oo6hb6lhmMump4wROtxSMee8yjC6YI9jOnBYcGn5TZnTdBMB7d0+HB52AeKEb5QL2hQKx8RLk5IkE6eymz9CJFPJIQKxdWZKO5M1u+gw9kPvVJUjqyAt5Z98OMBAI4igO9x97koAAnSY6YHSaAB2nAiyswTbMq+/HAiHv0+4k3Ww1pOvnOvYews1Ow2rGnldEAAAIAAABACAAAAQAgAAAEAAAAgAgPwACAEAAAKiyAfJ7AXALEgAAAuAU5BMgAADki9j/BQCAlkN459OlNu6v0/V43vsAocOvq9kh1n/LX35h+B6EU9DI8fuVh/D48WMRWv742Qgtf/xshBY+fm1cMQgtefwdI5ffA/a9+frC68ox9M3enehIkvJAAC5D9vs/8F+Z/HugkfXJrOfec6QSJBi6O8IO2znX1zdZro39if/K0B8ftp2Hxxfa/vcu6DO8P5x/AaDrvwj4/uDPJDtjP09+ntDze9L+i4DRSEqwtgoQZ9rL3r9Ye/51L+Pw9tF6YuHFPJ/uWBDk2eXZvfb8YyMAwHvg673Z7AvmSF4POeSHmtDnb0xAD3qzN5gLfHsHIOvhktBJ4vOXJqABvJcZnqs5z54R7FF5ODaRiOkIGcXX+OZG7PqJnh6Ev3uOI52Z7tdRUCbdB6AFXHCDcZ3kkf2fGwEN+HGe+3xcE5yBB3umIvk5JnVIggDtnx/1u27XD5CajhBt8tqj9gMahDSan+7C629sxx6DiGmTcxOF304AwOud/SuABnTsZtNABWfaygUynjR3Ld+/GokZp4TO/JsJsEON1uN7OTEPaO9nVFHhHXizTdcN8Fl6BlER5gHk6lghYV8Tgd31DeCPL2icmhISYGsS9P7R9AErAT9JwlWCnuyFsmRuEQurKcBuqyBB72WkXtfmTCD7Au4a4/H7yYAl0N9VY0eERBqRr+Ov51yqCkTEYuuqjL4A+D4p1nvazLzOncHLt1dByhIwqpsHDzcShpIEkM4HZ5+zDEtoRLoKAgrwvwF41/WuAeg+z/1hDzk6VyGPkYW8aLfwarEwr0RJCDr/LUm4+42N8WX6z76Am3R9RoIkGGDvRN7i677TupIhqVZI7vmzPnr+1xLgwT6Bek6QtOE89rMmAGk6d8PhaG9ghSOgeLaAW1FFmYz9viLitcgBCFAgQ2dJ6dcEyLvcKxMuH2za3wW7AeOpqh/k6raz9l49XOIlQozX6pNwNCDnfde6Ckfb2SdeSejLUCXp+L3SPyAlj9FghVVHWV2etlVQ482MNfBHzwe4igSAj7T+4VnmtfdvwBJ5dxoXay/6hrc5gqrnyQCzX5H3fHYVhNd35eOrIWD4zDjZG2ntSmt8CpKTzCAnSEmp6Y7TDthyE9vbjhz7OOYAODg3THqfwEmMIJ29f1TaDwkX+8ckTCf8JAl6EjBviFo70m7v0vtTdD72EqzNgjwIgCJBr+aMRoTzbQMxzBlHIoY5JFCrA9xIZedIZLzZiwScpe1ij/vLyDu8b9p5IH2/V/4hfg+SGIUHr7oSAVhIwgbwIALpgYgLcvokvLU9gfsmgv+37117brJ90PrlHKAtWY24OWLO5/WORGWYAyJeQy8fjceHoOYz5gkTLeAPgL7YU57mHzRBQwA2Cff+5L3s1e9kn8Cuy1hAf9D/EN5YYySVKyQo4tyNSog6XucApWOZeA+Vz6UMNaXotLEiCZsgY4M9KVc/9lmBffwNHSonyQp1H/kpknDEiFeM/U2UybWRmcuEe5IcSPgAqOuQB2b3OiKBMrLumzy33dzy86HG84Z0KCtp/wL4kc7NfFdEDIucK9em8eskRl3q4bUAYc6YXalZJue6/LwkoClD9cYsP5G8d5pkT/U+Cfdd5gpI4jn2EL87eEQiID5tboPq9e+rBLvOA47D/doGj6+lKJpiQC+88WDP33h8JMADL36naIUYJYocsO+NGLOIAJJEjJnWhx7fyM0obAXLta7hmjxfp3dB5IF3AvRJwL3tzG3cjKJ8PkncBPgBocPyNXYEHAkI/md8CFA+eu8/jMiOVc1lpQRBEq38rKTNN/khkJHJXtjE8TW8T50fJO6RxvXaOSBer1j594Rjf5HfNyMSCCFoR43HBtKsirSFSCXILrh/G1p0vRdVSX4vdJvEkZYK+EVu4W0qtluCYtvGHq89MQImAApsLUHniBC0cbjXuclXcvR+o2Dq9ThXzhl3AtCcoabnHPBRdL1vCEwR30hQRAw985hwAZR1IyVcJ3o8p97HqSnE0xz1zpszAfgvSKm634e5tf9HVfaOGNcTJwLiUye2BJrnSk5OEiVZ3unv/7o/zvLT/sGshRy8i4hdyVtvk6mlaNoz4f6/dGvJkRqKgVXuDyuWLLkSZ+CiXIQVZ2CF0h0XbblkRU+hESIjq+yqZ2emJtKbZNK54vlfUBRAgl1A0BUuiyAvmdo/ff/x7QsZF5PsYY2uKw20EKA1NLpuzaNnBmddSCIZqrxIz2ydiEpprucWzrk8WzrZAGQQ5LyL4hJCqhCQ+zOVLFP5Cslzrc88KeGk0LWam1mSprc196WeH8mY/QZcngWxZ3/Y9fhsiiRjcpCzdKjhHSTHqDnCdatee/wFzF40+ph85GP9Ht7969BGjXlj0nBjbkoZJBPAbv+WB2sqWitvZXLrkrGprgluPsf5HvBr+/l1CpD4+8F/4NdnIreI64MMgFf0PUrhDRE3FjLuYLy4y9184Z1eY73w6rr7e2bNu4gvBE9fim7ftEOZkJ5I7TfkY1M+oHyiMF/R9YbcNzW3QfuLk/leIzXWLM/cgcp19FzCemU6cIz/MB9890UWjBGadM7N9QMtlCqqJiFwOjUhdaDQXQCdEwNOpzhYwMpBDrfcFpEXIsjiGJw+9jqidHo7O3+3QVO7+QpIf7ji9cbst7ogrVf8UXTDBslUgkxCCSilwjFdSAkBkSo1EcjSIBXWWvsN9SxF5ebWH3woEIS629sLNhsPabYekYTY/VR0znB/jBdcErKAavL8+A1ICXvgoqroDgAAAABJRU5ErkJggg==)}.item-icon-container[_ngcontent-%COMP%]{position:relative;transition:opacity .2s,transform .2s;width:100%;--icon-size: 22px}.item-icon-overlay[_ngcontent-%COMP%], .item-icon[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:100%;pointer-events:none}.item-source-overlay[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:0;pointer-events:none;border-top:calc(var(--icon-size) / 2) solid transparent;border-right:calc(var(--icon-size) / 2) solid transparent}.item-source-overlay.vendor-item[_ngcontent-%COMP%]{border-top-color:#00f}.item-source-overlay.collection-item[_ngcontent-%COMP%]{border-top-color:#90ee90}"]}),n})();function Zo(n,i){if(1&n&&t._UZ(0,"img",5),2&n){const e=t.oxw(2);t.s9C("src",e.url,t.LSH)}}function Io(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"img",2,3),t.YNc(3,Zo,1,1,"img",4),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.s9C("matTooltip",e.name),t.xp6(2),t.Q6J("ngIf",e.customIconMods.indexOf(e.perk)>-1)}}function So(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"img",6,3),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.s9C("matTooltip",e.name),t.s9C("src",e.url,t.LSH)}}let _e=(()=>{class n{constructor(){this.ArmorPerkOrSlot=c.Pn,this.customIconMods=[c.Pn.SlotCrotasEnd,c.Pn.SlotRootOfNightmares,c.Pn.SlotKingsFall,c.Pn.SlotVowOfTheDisciple,c.Pn.SlotArtifice],this.perk=c.Pn.None}get name(){return c.cM[this.perk]}get url(){return c.X9[this.perk]}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-perk-icon"]],inputs:{perk:"perk"},decls:3,vars:2,consts:[[1,"overlay-icon-container"],[4,"ngIf"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png",1,"element-icon",3,"matTooltip"],["tooltip","matTooltip"],["class","overlay-icon",3,"src",4,"ngIf"],[1,"overlay-icon",3,"src"],[1,"element-icon",3,"matTooltip","src"]],template:function(e,o){1&e&&(t.TgZ(0,"span",0),t.YNc(1,Io,4,2,"ng-container",1),t.YNc(2,So,3,2,"ng-container",1),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngIf",o.customIconMods.indexOf(o.perk)>-1),t.xp6(1),t.Q6J("ngIf",-1===o.customIconMods.indexOf(o.perk)))},dependencies:[I.O5,pt.gM],styles:[".element-icon[_ngcontent-%COMP%]{height:100%;width:100%}.element-icon.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:default;pointer-events:none}.overlay-icon-container[_ngcontent-%COMP%]{position:relative}.overlay-icon-container[_ngcontent-%COMP%] .overlay-icon[_ngcontent-%COMP%]{width:66%;position:absolute;left:17%;top:17%;pointer-events:none}[_nghost-%COMP%]{display:inline-flex;height:30px;width:30px}"]}),n})(),Ae=(()=>{class n{transform(e,o=null){return e.filter(a=>null==o||a==o).length}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275pipe=t.Yjl({name:"count",type:n,pure:!0}),n})();function Mo(n,i){1&n&&(t.TgZ(0,"mat-toolbar",24),t._uU(1," Warning: The stats of one or more items used for this build may be invalid."),t._UZ(2,"br"),t._uU(3," Please remove all negative/positive stat modifiers from the marked items. "),t.qZA())}function Oo(n,i){if(1&n&&(t.TgZ(0,"u",34,35),t._uU(2),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(2),t.Oqu(e.name)}}function ko(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Oqu(e.name)}}function Eo(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"td",36)(2,"span",37),t._uU(3),t.qZA()(),t.TgZ(4,"td",36)(5,"span",37),t._uU(6),t.qZA()(),t.TgZ(7,"td",36)(8,"span",37),t._uU(9),t.qZA()(),t.TgZ(10,"td",36)(11,"span",37),t._uU(12),t.qZA()(),t.TgZ(13,"td",36)(14,"span",37),t._uU(15),t.qZA()(),t.TgZ(16,"td",36)(17,"span",37),t._uU(18),t.qZA()(),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().$implicit,a=t.oxw(2);t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Mobility]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Resilience]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Recovery]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Discipline]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Intellect]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Strength]+e)}}function Uo(n,i){1&n&&(t.TgZ(0,"td",27),t._UZ(1,"mat-progress-spinner",38),t.qZA())}function Do(n,i){1&n&&(t.TgZ(0,"td")(1,"mat-icon",39,35),t._uU(3," check_circle_outline "),t.qZA()())}function Po(n,i){1&n&&(t.TgZ(0,"td")(1,"mat-icon",40,35),t._uU(3," error_outline "),t.qZA()())}function Ro(n,i){1&n&&(t.TgZ(0,"td")(1,"mat-icon",41,35),t._uU(3," report_problem "),t.qZA()())}function No(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td"),t.YNc(2,Oo,3,1,"u",26),t.YNc(3,ko,2,1,"span",3),t.qZA(),t.YNc(4,Eo,19,18,"ng-container",8),t.TgZ(5,"td",27)(6,"div",28),t._UZ(7,"app-item-icon",29),t.qZA()(),t.TgZ(8,"td",27)(9,"div",30),t._UZ(10,"app-armor-perk-icon",31),t.qZA()(),t.TgZ(11,"td",27)(12,"button",32),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw(2);return t.KtG(r.disableItem(s.itemInstanceId))}),t.TgZ(13,"mat-icon"),t._uU(14,"block"),t.qZA()()(),t.YNc(15,Uo,2,0,"td",33),t.YNc(16,Do,4,0,"td",3),t.YNc(17,Po,4,0,"td",3),t.YNc(18,Ro,4,0,"td",3),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw().$implicit,a=t.oxw();t.ekj("highlight-row",o[0].slot%2==0),t.xp6(2),t.Q6J("ngIf",e.masterworked),t.xp6(1),t.Q6J("ngIf",!e.masterworked),t.xp6(1),t.Q6J("ngVar",e.masterworked||!e.exotic&&a.config_assumeLegendariesMasterworked||e.exotic&&a.config_assumeExoticsMasterworked?2:0),t.xp6(2),t.Q6J("itemTooltip",e),t.xp6(1),t.Q6J("itemHash",e.hash)("masterworked",e.masterworked)("source",e.source),t.xp6(3),t.Q6J("perk",e.perk||0),t.xp6(5),t.Q6J("ngIf",1===e.transferState||2===e.transferState),t.xp6(1),t.Q6J("ngIf",3===e.transferState),t.xp6(1),t.Q6J("ngIf",4===e.transferState),t.xp6(1),t.Q6J("ngIf",e.mayBeBugged)}}function qo(n,i){if(1&n&&(t.ynx(0),t.YNc(1,No,19,14,"tr",25),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function Fo(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td",42,35),t._uU(3,"Any Class Item"),t.qZA(),t.TgZ(4,"td",43),t._uU(5),t.qZA(),t.TgZ(6,"td",43),t._uU(7),t.qZA(),t.TgZ(8,"td",43),t._uU(9),t.qZA(),t.TgZ(10,"td",43),t._uU(11),t.qZA(),t.TgZ(12,"td",43),t._uU(13),t.qZA(),t.TgZ(14,"td",43),t._uU(15),t.qZA(),t._UZ(16,"td"),t.TgZ(17,"td")(18,"div",30),t._UZ(19,"app-armor-perk-icon",31),t.qZA()(),t.TgZ(20,"td")(21,"button",44),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableAllItems())}),t.TgZ(22,"mat-icon"),t._uU(23,"block"),t.qZA()()()()}if(2&n){const e=t.oxw();t.xp6(5),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(4),t.Q6J("perk",(null==e.element||null==e.element.classItem?null:e.element.classItem.perk)||0)}}function Jo(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td"),t._uU(2,"Any Class Item"),t.qZA(),t.TgZ(3,"td",45),t._uU(4,"You chose to use non-masterworked class items."),t.qZA(),t._UZ(5,"td")(6,"td"),t.TgZ(7,"td")(8,"button",44),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableAllItems())}),t.TgZ(9,"mat-icon"),t._uU(10,"block"),t.qZA()()()()}}function Lo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",47),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Mobility]," ")}}function Yo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",48),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Resilience]," ")}}function Bo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",49),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Recovery]," ")}}function Vo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",50),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Discipline]," ")}}function Qo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",51),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Intellect]," ")}}function Ho(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",52),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Strength]," ")}}function Wo(n,i){if(1&n&&(t.TgZ(0,"tr",46)(1,"td"),t._uU(2,"Total (armor)"),t.qZA(),t.YNc(3,Lo,3,1,"td",3),t.YNc(4,Yo,3,1,"td",3),t.YNc(5,Bo,3,1,"td",3),t.YNc(6,Vo,3,1,"td",3),t.YNc(7,Qo,3,1,"td",3),t.YNc(8,Ho,3,1,"td",3),t.qZA()),2&n){const e=i.ngVar;t.xp6(3),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e)}}function jo(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function Go(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,jo,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Mobility]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Mobility]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Mobility]," ")}}function zo(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function Ko(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,zo,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Resilience]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Resilience]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Resilience]," ")}}function $o(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function Xo(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,$o,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Recovery]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Recovery]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Recovery]," ")}}function ti(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function ei(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,ti,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Discipline]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Discipline]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Discipline]," ")}}function ni(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function oi(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,ni,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Intellect]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Intellect]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Intellect]," ")}}function ii(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function ai(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,ii,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Strength]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Strength]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Strength]," ")}}function si(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function ri(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,si,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function li(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function ci(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,li,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function mi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function di(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,mi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function ui(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function pi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,ui,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function gi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function _i(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,gi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function fi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function hi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,fi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function xi(n,i){if(1&n&&(t.TgZ(0,"tr",53)(1,"td"),t._uU(2,"Minor Mods"),t.qZA(),t.YNc(3,ri,2,1,"td",8),t.ALo(4,"count"),t.YNc(5,ci,2,1,"td",8),t.ALo(6,"count"),t.YNc(7,di,2,1,"td",8),t.ALo(8,"count"),t.YNc(9,pi,2,1,"td",8),t.ALo(10,"count"),t.YNc(11,_i,2,1,"td",8),t.ALo(12,"count"),t.YNc(13,hi,2,1,"td",8),t.ALo(14,"count"),t.qZA()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(3),t.Q6J("ngVar",t.xi3(4,6,e,o.StatModifier.MINOR_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(6,9,e,o.StatModifier.MINOR_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(8,12,e,o.StatModifier.MINOR_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(10,15,e,o.StatModifier.MINOR_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(12,18,e,o.StatModifier.MINOR_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(14,21,e,o.StatModifier.MINOR_STRENGTH))}}function yi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Ci(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,yi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ti(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function vi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ti,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function bi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Ai(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,bi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function wi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Zi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,wi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ii(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Si(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ii,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Mi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Oi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Mi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function ki(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Major Mods"),t.qZA(),t.YNc(3,Ci,2,1,"td",8),t.ALo(4,"count"),t.YNc(5,vi,2,1,"td",8),t.ALo(6,"count"),t.YNc(7,Ai,2,1,"td",8),t.ALo(8,"count"),t.YNc(9,Zi,2,1,"td",8),t.ALo(10,"count"),t.YNc(11,Si,2,1,"td",8),t.ALo(12,"count"),t.YNc(13,Oi,2,1,"td",8),t.ALo(14,"count"),t.qZA()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(3),t.Q6J("ngVar",t.xi3(4,6,e,o.StatModifier.MAJOR_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(6,9,e,o.StatModifier.MAJOR_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(8,12,e,o.StatModifier.MAJOR_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(10,15,e,o.StatModifier.MAJOR_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(12,18,e,o.StatModifier.MAJOR_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(14,21,e,o.StatModifier.MAJOR_STRENGTH))}}function Ei(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Ui(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ei,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Di(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Pi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Di,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ri(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Ni(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ri,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function qi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Fi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,qi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ji(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Li(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ji,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Yi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Bi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Yi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Vi(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"tr")(2,"td"),t._uU(3,"Artifice Mods"),t.qZA(),t.YNc(4,Ui,2,1,"td",8),t.ALo(5,"count"),t.YNc(6,Pi,2,1,"td",8),t.ALo(7,"count"),t.YNc(8,Ni,2,1,"td",8),t.ALo(9,"count"),t.YNc(10,Fi,2,1,"td",8),t.ALo(11,"count"),t.YNc(12,Li,2,1,"td",8),t.ALo(13,"count"),t.YNc(14,Bi,2,1,"td",8),t.ALo(15,"count"),t.qZA(),t.BQk()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(4),t.Q6J("ngVar",t.xi3(5,6,e,o.StatModifier.ARTIFICE_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(7,9,e,o.StatModifier.ARTIFICE_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(9,12,e,o.StatModifier.ARTIFICE_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(11,15,e,o.StatModifier.ARTIFICE_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(13,18,e,o.StatModifier.ARTIFICE_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(15,21,e,o.StatModifier.ARTIFICE_STRENGTH))}}function Qi(n,i){if(1&n&&(t.TgZ(0,"tr",56)(1,"td"),t._uU(2,"Total"),t.qZA(),t.TgZ(3,"td"),t._uU(4),t._UZ(5,"img",47),t.qZA(),t.TgZ(6,"td"),t._uU(7),t._UZ(8,"img",48),t.qZA(),t.TgZ(9,"td"),t._uU(10),t._UZ(11,"img",49),t.qZA(),t.TgZ(12,"td"),t._uU(13),t._UZ(14,"img",50),t.qZA(),t.TgZ(15,"td"),t._uU(16),t._UZ(17,"img",51),t.qZA(),t.TgZ(18,"td"),t._uU(19),t._UZ(20,"img",52),t.qZA()()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(4),t.hij(" ",e[o.ArmorStat.Mobility]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Resilience]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Recovery]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Discipline]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Intellect]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Strength]," ")}}function Hi(n,i){if(1&n&&(t.TgZ(0,"span",63),t._UZ(1,"img",64),t._uU(2),t.ALo(3,"number"),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",t.lcZ(3,1,e.glimmer)," ")}}function Wi(n,i){if(1&n&&(t.TgZ(0,"span",65),t._UZ(1,"img",66),t._uU(2),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",e.core," ")}}function ji(n,i){if(1&n&&(t.TgZ(0,"span",67),t._UZ(1,"img",68),t._uU(2),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",e.prism," ")}}function Gi(n,i){if(1&n&&(t.TgZ(0,"span",69),t._UZ(1,"img",70),t._uU(2),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",e.ascshard," ")}}function zi(n,i){if(1&n&&(t.TgZ(0,"div",58),t._uU(1," Total material cost: "),t.YNc(2,Hi,4,3,"span",59),t.YNc(3,Wi,3,1,"span",60),t.YNc(4,ji,3,1,"span",61),t.YNc(5,Gi,3,1,"span",62),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(2),t.Q6J("ngIf",e.glimmer>0),t.xp6(1),t.Q6J("ngIf",e.core>0),t.xp6(1),t.Q6J("ngIf",e.prism>0),t.xp6(1),t.Q6J("ngIf",e.ascshard>0)}}function Ki(n,i){if(1&n&&(t.ynx(0),t.YNc(1,zi,6,4,"div",57),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.total>0)}}function $i(n,i){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"button",71),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.openSnackBar("Copied the DIM search query to your clipboard."))}),t._uU(2," Copy DIM query to clipboard "),t.qZA(),t.BQk()}if(2&n){const e=i.ngVar;t.xp6(1),t.Q6J("cdkCopyToClipboard",e)}}function Xi(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1," and use a masterworked class item"),t.qZA())}function ta(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.name," ")}}function ea(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1," Masterwork these items: "),t.TgZ(2,"ul"),t.YNc(3,ta,2,1,"li",2),t.qZA()()),2&n){const e=t.oxw().ngVar;t.xp6(3),t.Q6J("ngForOf",e)}}function na(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ea,4,1,"li",3),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.length>0)}}function oa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function ia(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function aa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function sa(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function ra(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,oa,2,1,"span",3),t.YNc(2,ia,2,0,"ng-container",3),t.YNc(3,aa,2,1,"span",3),t._uU(4," Mobility Mod"),t.YNc(5,sa,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function la(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ra,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function ca(n,i){if(1&n&&(t.ynx(0),t.YNc(1,la,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_MOBILITY))}}function ma(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function da(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function ua(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function pa(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function ga(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,ma,2,1,"span",3),t.YNc(2,da,2,0,"ng-container",3),t.YNc(3,ua,2,1,"span",3),t._uU(4," Resilience Mod"),t.YNc(5,pa,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function _a(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ga,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function fa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,_a,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_RESILIENCE))}}function ha(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function xa(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function ya(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Ca(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Ta(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,ha,2,1,"span",3),t.YNc(2,xa,2,0,"ng-container",3),t.YNc(3,ya,2,1,"span",3),t._uU(4," Recovery Mod"),t.YNc(5,Ca,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function va(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ta,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function ba(n,i){if(1&n&&(t.ynx(0),t.YNc(1,va,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_RECOVERY))}}function Aa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function wa(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function Za(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Ia(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Sa(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,Aa,2,1,"span",3),t.YNc(2,wa,2,0,"ng-container",3),t.YNc(3,Za,2,1,"span",3),t._uU(4," Discipline Mod"),t.YNc(5,Ia,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function Ma(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Sa,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function Oa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ma,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_DISCIPLINE))}}function ka(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function Ea(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function Ua(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Da(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Pa(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,ka,2,1,"span",3),t.YNc(2,Ea,2,0,"ng-container",3),t.YNc(3,Ua,2,1,"span",3),t._uU(4," Intellect Mod"),t.YNc(5,Da,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function Ra(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Pa,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function Na(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ra,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_INTELLECT))}}function qa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function Fa(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function Ja(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function La(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Ya(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,qa,2,1,"span",3),t.YNc(2,Fa,2,0,"ng-container",3),t.YNc(3,Ja,2,1,"span",3),t._uU(4," Strength Mod"),t.YNc(5,La,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function Ba(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ya,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function Va(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ba,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_STRENGTH))}}function Qa(n,i){if(1&n&&(t.TgZ(0,"ul"),t.YNc(1,ca,3,4,"ng-container",8),t.ALo(2,"count"),t.YNc(3,fa,3,4,"ng-container",8),t.ALo(4,"count"),t.YNc(5,ba,3,4,"ng-container",8),t.ALo(6,"count"),t.YNc(7,Oa,3,4,"ng-container",8),t.ALo(8,"count"),t.YNc(9,Na,3,4,"ng-container",8),t.ALo(10,"count"),t.YNc(11,Va,3,4,"ng-container",8),t.ALo(12,"count"),t.qZA()),2&n){const e=i.ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,6,e,o.StatModifier.MINOR_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(4,9,e,o.StatModifier.MINOR_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(6,12,e,o.StatModifier.MINOR_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(8,15,e,o.StatModifier.MINOR_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(10,18,e,o.StatModifier.MINOR_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(12,21,e,o.StatModifier.MINOR_STRENGTH))}}function Ha(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1,"Equip the following stat mods: "),t.YNc(2,Qa,13,24,"ul",8),t.qZA()),2&n){const e=t.oxw();t.xp6(2),t.Q6J("ngVar",null==e.element?null:e.element.mods)}}function Wa(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij(" Equip the mod ",e.name," ")}}function ja(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Wa,2,1,"li",3),t.BQk()),2&n){const e=i.ngVar,o=t.oxw(3);t.xp6(1),t.Q6J("ngIf",e.type===o.ModifierType.CombatStyleMod)}}function Ga(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ja,2,1,"ng-container",8),t.BQk()),2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",o.ModInformation[e])}}function za(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij(" Equip the stasis fragment ",e.name," ")}}function Ka(n,i){if(1&n&&(t.ynx(0),t.YNc(1,za,2,1,"li",3),t.BQk()),2&n){const e=i.ngVar,o=t.oxw(3);t.xp6(1),t.Q6J("ngIf",e.type===o.ModifierType.Stasis)}}function $a(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ka,2,1,"ng-container",8),t.BQk()),2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",o.ModInformation[e])}}function Xa(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1," Equip any mods and fragments that you enabled in the configuration: "),t.TgZ(2,"ul"),t.YNc(3,Ga,2,1,"ng-container",2),t.YNc(4,$a,2,1,"ng-container",2),t.qZA()()),2&n){const e=t.oxw();t.xp6(3),t.Q6J("ngForOf",e.config_enabledMods),t.xp6(1),t.Q6J("ngForOf",e.config_enabledMods)}}function ts(n,i){if(1&n&&t._UZ(0,"div",75),2&n){const e=t.oxw().$implicit;t.Tol(e)}}function es(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,ts,1,2,"div",74),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",!!e)}}function ns(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t._UZ(4,"img",72),t.qZA(),t.YNc(5,es,2,1,"td",2),t.TgZ(6,"td",73),t._uU(7),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.Oqu(o.ArmorStatNames[e]),t.xp6(2),t.s9C("alt",o.ArmorStatNames[e]),t.s9C("src",o.ArmorStatIconUrls[e],t.LSH),t.xp6(1),t.Q6J("ngForOf",o.getColumnForStat(e)),t.xp6(2),t.Oqu(o.getTiersForStat(e))}}function os(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Exotic:"),t.qZA(),t.TgZ(3,"td",76),t._uU(4),t.qZA(),t.TgZ(5,"td",77)(6,"div",78),t._UZ(7,"img",79)(8,"img",80),t.qZA()()()),2&n){const e=t.oxw().ngVar;t.xp6(4),t.Oqu(e[0].name),t.xp6(3),t.MGl("src","https://bungie.net/",e[0].icon,"",t.LSH),t.xp6(1),t.MGl("src","https://bungie.net/",e[0].watermark,"",t.LSH)}}function is(n,i){if(1&n&&(t.ynx(0),t.YNc(1,os,9,3,"tr",3),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e[0])}}let as=(()=>{class n{constructor(e,o,a,s){this.config=e,this._snackBar=o,this.bungieApi=a,this.membership=s,this.showGenericClassItemRow=!1,this.armorStatIds=[0,1,2,3,4,5],this.ModifierType=k.O,this.ModInformation=N.F,this.ArmorStatNames=c.Mi,this.ArmorStatIconUrls=c.lp,this.ArmorStat=c.WB,this.StatModifier=c.iV,this.config_characterClass=0,this.config_assumeLegendariesMasterworked=!1,this.config_assumeExoticsMasterworked=!1,this.config_assumeClassItemMasterworked=!1,this.config_enabledMods=[],this.DIMUrl="",this.configValues=[0,0,0,0,0,0],this.element=null,this.ngUnsubscribe=new R.xQ}buildItemIdString(e){if(!e)return"";let o=e.items.flat().filter(r=>r.slot!=T.y.ArmorSlotClass).map(r=>`id:'${r.itemInstanceId}'`).join(" or "),a=["is:classitem"],s=e.items.flat().filter(r=>r.slot==T.y.ArmorSlotClass).map(r=>`exactname:'${r.name}'`).join(" or ");return s.length>0&&(a=[s]),e.classItem.perk!=c.Pn.None&&e.classItem.perk!=c.Pn.COUNT&&a.push(c.ID[e.classItem.perk||0]),a.length>1&&(o+=` or (${a.join(" ")})`),o}openSnackBar(e){this._snackBar.open(e,"",{duration:2500,politeness:"polite"})}ngOnInit(){this.showGenericClassItemRow=(this.element?.items.filter(e=>e.length>0).length||0)<=4,this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(e=>{this.config_characterClass=e.characterClass,this.config_assumeLegendariesMasterworked=e.assumeLegendariesMasterworked,this.config_assumeExoticsMasterworked=e.assumeExoticsMasterworked,this.config_assumeClassItemMasterworked=e.assumeClassItemMasterworked,this.config_enabledMods=e.enabledMods,this.configValues=e.enabledMods.reduce((o,a)=>o.concat(N.F[a].bonus),[]).reduce((o,a)=>(a.stat==c.AR.ClassAbilityRegenerationStat?o[[1,0,2][e.characterClass]]+=a.value:o[a.stat]+=a.value,o),[0,0,0,0,0,0]),this.DIMUrl=this.generateDIMLink(e)})}disableAllItems(){this.config.modifyConfiguration(e=>{for(let o of this.element?.items.flat())e.disabledItems.push(o.itemInstanceId)})}disableItem(e){this.config.modifyConfiguration(o=>{o.disabledItems.push(e)})}get mayAnyItemBeBugged(){return(this.element?.items.flat().filter(e=>e.mayBeBugged).length||0)>0}getCharacterId(){var e=this;return(0,y.Z)(function*(){let o=yield e.membership.getCharacters();return o=o.filter(a=>a.clazz==e.config_characterClass),0==o.length?(e.openSnackBar("Error: Could not find a character to move the items to."),null):o[0].characterId})()}moveItems(e=!1){var o=this;return(0,y.Z)(function*(){for(let d of(o.element?.items||[]).flat())d.transferState=Qt.WAITING_FOR_TRANSFER;let a=yield o.getCharacterId();if(!a)return;let s=!0,r=(o.element?.items||[]).flat().sort(d=>d.exotic?1:-1);for(let d of r){d.transferState=Qt.TRANSFERRING;let p=yield o.bungieApi.transferItem(d.itemInstanceId,a,e);d.transferState=p?Qt.TRANSFERRED:Qt.ERROR_DURING_TRANSFER,p||(s=!1)}o.openSnackBar(s?"Success! Moved all the items.":"Some of the items could not be moved. Make sure that there is enough space in the specific slot. This tool will not move items out of your inventory.")})()}getItemsThatMustBeMasterworked(){return this.element?.items.flat().filter(e=>!(e.masterworked||e.exotic&&!this.config_assumeExoticsMasterworked||!e.exotic&&!this.config_assumeLegendariesMasterworked))}calculateRequiredMasterworkCost(){let e={shards:0,glimmer:0,core:0,prism:0,ascshard:0,total:0},o=this.element?.items.flat()||[];o=o.filter(a=>a.energyLevel<10&&(a.exotic&&this.config_assumeExoticsMasterworked||!a.exotic&&this.config_assumeLegendariesMasterworked));for(let a of o){let s=a.exotic?lo:ro;for(let r=a.energyLevel;r<10;r++)for(let d in s[r+1])e[d]+=s[r+1][d],e.total++}return e}generateDIMLink(e){const o=[],a=[];for(let m of this.config_enabledMods){const S=N.F[m];S.type===k.O.CombatStyleMod?o.push(S.hash):a.push(S.hash)}if(this.element){for(let m of this.element?.mods||[])o.push(c.K9[m][3]);for(let m of this.element?.artifice||[])o.push(c.K9[m][3])}var s={statConstraints:[],mods:o,assumeArmorMasterwork:e.assumeLegendariesMasterworked?e.assumeExoticsMasterworked?3:2:1};for(let m of this.armorStatIds)s.statConstraints.push({statHash:c.kw[m],minTier:e.minimumStatTiers[m].value,maxTier:e.minimumStatTiers[m].fixed?e.minimumStatTiers[m].value:10});if(1==e.selectedExotics.length)s.exoticArmorHash=e.selectedExotics[0];else{var r=this.element?.exotic;if(r&&1==r.length){var d=r[0].hash;d&&(s.exoticArmorHash=parseInt(d,10))}}const p={id:"d2ap",name:"D2ArmorPicker Loadout",classType:e.characterClass,parameters:s,equipped:(this.element?.items||[]).filter(m=>m.length>0).map(([m])=>({id:m.itemInstanceId,hash:m.hash})),unequipped:[],clearSpace:!1};if(a.length){const m=a.reduce((S,q,$)=>(S[$+7]=q,S),{});if(3!=e.characterClass&&e.selectedModElement!=k.O.CombatStyleMod){const q=c.Bd[e.characterClass][e.selectedModElement];q&&p.equipped.push({id:"12345",hash:q,socketOverrides:m})}}return"https://app.destinyitemmanager.com/loadouts?loadout="+encodeURIComponent(JSON.stringify(p))}goToDIM(){window.open(this.DIMUrl,"blank")}getTiersForStat(e){return Math.floor((this.element?.stats[e]||0)/10)}getColumnForStat(e){var o=Math.floor(this.configValues[e]/10);let a=[],s=0,r=Math.ceil((5*(this.element?.mods.filter(p=>p==1+2*e)||[]).length+10*(this.element?.mods.filter(p=>p==2+2*e)||[]).length)/10);var d=this.getTiersForStat(e)-o-r;for(let p=0;p10?" over100":""));for(let p=0;p10?" over100":""));for(let p=0;p10?" over100":""));for(;s++<10;)a.push("");return a}getRequiredMasterworkBonus(){return 2*(this.element?.items.filter(e=>!e[0].masterworked&&!e[0].exotic&&this.config_assumeLegendariesMasterworked||e[0].exotic&&this.config_assumeExoticsMasterworked)||[]).length}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(ue.ux),t.Y36(bt),t.Y36(Ut))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-expanded-result-content"]],inputs:{element:"element"},decls:124,vars:26,consts:[["class","invalid-item-box mat-elevation-z4","color","warn",4,"ngIf"],[1,"specificStatTable"],[4,"ngFor","ngForOf"],[4,"ngIf"],["class","result-total-gear result-total highlight-row",4,"ngVar"],[1,"result-config"],[3,"class",4,"ngIf"],["class","highlight-row",4,"ngVar"],[4,"ngVar"],["class","result-total-all result-total highlight-row",4,"ngVar"],[1,"buttonContainer"],["color","primary","mat-raised-button","","matTooltip","Use this button to open this build as a DIM Loadout.",3,"click"],["mat-stroked-button","","matTooltip","Click this button to move Items to your inventory. Make sure that you have enough space in your inventory. This tool will not move any items out of your inventory.",3,"click"],["mat-stroked-button","","matTooltip","Click this button to equip the Items. Make sure that you have enough space in your inventory. This tool will not move any items out of your inventory.",3,"click"],[1,"mat-elevation-z6"],[1,"stat-preview"],["colspan","2"],[1,"tier-column"],[1,"legend"],[1,"energy-bar","normal"],["colspan","3"],[1,"energy-bar","mod"],["colspan","4"],[1,"energy-bar","config"],["color","warn",1,"invalid-item-box","mat-elevation-z4"],[3,"highlight-row",4,"ngFor","ngForOf"],["class","item-name-mw","matTooltip","This item is already masterworked.",4,"ngIf"],[1,"icon-column"],[1,"item-icon-container",3,"itemTooltip"],[1,"item-icon",3,"itemHash","masterworked","source"],[2,"position","relative","width","25px"],[3,"perk"],["mat-icon-button","","matTooltip","Disable this item from the results. It will not be used to generate results anymore, but you can always undo this.",1,"item-info-menu-btn",3,"click"],["class","icon-column",4,"ngIf"],["matTooltip","This item is already masterworked.",1,"item-name-mw"],["tooltip","matTooltip"],[1,"item-stat-container"],[1,"item-stat-value"],["color","primary","diameter","22","mode","indeterminate",1,"item-loading-spinner"],["aria-hidden","false","aria-label","Success","inline","","matTooltip","Item successfully moved to inventory.",1,"item-moved-icon"],["aria-hidden","false","aria-label","Error","inline","","matTooltip","This item could not be moved. Make sure that there is enough space on your character. This tool will not move items out of your inventory.",1,"report-problem-icon"],["aria-hidden","false","aria-label","Error","inline","","matTooltip","The stats of this item may be incorrect. Make sure that you remove every positive or negative stat modifier from this item.",1,"report-problem-icon"],["matTooltip","Class item should be masterworked.",1,"item-name-mw"],[1,"text-mw"],["mat-icon-button","","matTooltip","Disable all four items above from the results. They will not be used to generate results anymore, but you can always undo this.",1,"item-info-menu-btn","report-problem-icon",3,"click"],["colspan","6",1,"text-centered"],[1,"result-total-gear","result-total","highlight-row"],["alt","Mobility","src","https://www.bungie.net/common/destiny2_content/icons/e26e0e93a9daf4fdd21bf64eb9246340.png",1,"statIcon"],["alt","Resilience","src","https://www.bungie.net/common/destiny2_content/icons/202ecc1c6febeb6b97dafc856e863140.png",1,"statIcon"],["alt","Recovery","src","https://www.bungie.net/common/destiny2_content/icons/128eee4ee7fc127851ab32eac6ca91cf.png",1,"statIcon"],["alt","Discipline","src","https://www.bungie.net/common/destiny2_content/icons/79be2d4adef6a19203f7385e5c63b45b.png",1,"statIcon"],["alt","Intellect","src","https://www.bungie.net/common/destiny2_content/icons/d1c154469670e9a592c9d4cbdcae5764.png",1,"statIcon"],["alt","Strength","src","https://www.bungie.net/common/destiny2_content/icons/ea5af04ccd6a3470a44fd7bb0f66e2f7.png",1,"statIcon"],[1,"highlight-row"],["class","positive",4,"ngIf"],[1,"positive"],[1,"result-total-all","result-total","highlight-row"],["style","margin-top: 10px",4,"ngIf"],[2,"margin-top","10px"],["class","currency-icon-container","matTooltip","Glimmer",4,"ngIf"],["class","currency-icon-container","matTooltip","Enhancement Cores",4,"ngIf"],["class","currency-icon-container","matTooltip","Enhancement Prism",4,"ngIf"],["class","currency-icon-container","matTooltip","Ascendant Shard",4,"ngIf"],["matTooltip","Glimmer",1,"currency-icon-container"],["alt","Glimmer","src","https://www.bungie.net/common/destiny2_content/icons/88993eaeedad32f42072df6f77f47311.png",1,"currency-icon"],["matTooltip","Enhancement Cores",1,"currency-icon-container"],["alt","Enhancement Cores","src","https://www.bungie.net/common/destiny2_content/icons/0a4eb695ed55b4e720ddc401460cc0f9.jpg",1,"currency-icon"],["matTooltip","Enhancement Prism",1,"currency-icon-container"],["alt","Enhancement Prism","src","https://www.bungie.net/common/destiny2_content/icons/dea2a35badf7466d4c2c2697ce6e8d87.jpg",1,"currency-icon"],["matTooltip","Ascendant Shard",1,"currency-icon-container"],["alt","Ascendant Shard","src","https://www.bungie.net/common/destiny2_content/icons/0271d214fc3ec91b3def799a4b286b46.jpg",1,"currency-icon"],["color","primary","mat-raised-button","","matTooltip","Use this button to copy a DIM search query to your clip board. It allows you to search the given items in DIM.",3,"cdkCopyToClipboard","click"],[2,"height","18px",3,"alt","src"],[1,"sum-tiers"],["class","energy-bar",3,"class",4,"ngIf"],[1,"energy-bar"],["colspan","10"],["colspan","1"],[1,"item-icon-container"],[1,"item-icon",3,"src"],[1,"item-icon-overlay",3,"src"]],template:function(e,o){1&e&&(t.TgZ(0,"div"),t.YNc(1,Mo,4,0,"mat-toolbar",0),t._uU(2," This table shows you the expected stats of any item: "),t.TgZ(3,"table",1)(4,"thead")(5,"tr")(6,"th"),t._uU(7,"Name"),t.qZA(),t.TgZ(8,"th"),t._uU(9,"Mobility"),t.qZA(),t.TgZ(10,"th"),t._uU(11,"Resilience"),t.qZA(),t.TgZ(12,"th"),t._uU(13,"Recovery"),t.qZA(),t.TgZ(14,"th"),t._uU(15,"Discipline"),t.qZA(),t.TgZ(16,"th"),t._uU(17,"Intellect"),t.qZA(),t.TgZ(18,"th"),t._uU(19,"Strength"),t.qZA(),t._UZ(20,"th")(21,"th"),t.qZA()(),t.YNc(22,qo,2,1,"ng-container",2),t.YNc(23,Fo,24,7,"tr",3),t.YNc(24,Jo,11,0,"tr",3),t.YNc(25,Wo,9,6,"tr",4),t.TgZ(26,"tr",5)(27,"td"),t._uU(28,"Configuration"),t.qZA(),t.TgZ(29,"td"),t.YNc(30,Go,3,4,"span",6),t.qZA(),t.TgZ(31,"td"),t.YNc(32,Ko,3,4,"span",6),t.qZA(),t.TgZ(33,"td"),t.YNc(34,Xo,3,4,"span",6),t.qZA(),t.TgZ(35,"td"),t.YNc(36,ei,3,4,"span",6),t.qZA(),t.TgZ(37,"td"),t.YNc(38,oi,3,4,"span",6),t.qZA(),t.TgZ(39,"td"),t.YNc(40,ai,3,4,"span",6),t.qZA()(),t.YNc(41,xi,15,24,"tr",7),t.YNc(42,ki,15,24,"tr",8),t.YNc(43,Vi,16,24,"ng-container",8),t.YNc(44,Qi,21,6,"tr",9),t.qZA()(),t.YNc(45,Ki,2,1,"ng-container",8),t.TgZ(46,"div",10),t.YNc(47,$i,3,1,"ng-container",8),t.TgZ(48,"button",11),t.NdJ("click",function(){return o.goToDIM()}),t._uU(49," Open Loadout in DIM "),t.qZA(),t._UZ(50,"br"),t.TgZ(51,"small"),t._uU(52,"The following two buttons may not work for some at the moment:"),t.qZA(),t._UZ(53,"br"),t.TgZ(54,"button",12),t.NdJ("click",function(){return o.moveItems()}),t._uU(55," Move items to inventory (beta) "),t.qZA(),t.TgZ(56,"button",13),t.NdJ("click",function(){return o.moveItems(!0)}),t._uU(57," Equip Items (beta) "),t.qZA()(),t.TgZ(58,"mat-accordion")(59,"mat-expansion-panel",14)(60,"mat-expansion-panel-header")(61,"mat-panel-title"),t._uU(62," What to do now? "),t.qZA(),t.TgZ(63,"mat-panel-description"),t._uU(64," Detailed Instructions of to get your loadout ready. "),t.qZA()(),t.TgZ(65,"div")(66,"ol")(67,"li"),t._uU(68," Move all related items into your inventory "),t.YNc(69,Xi,2,0,"span",3),t._uU(70,". "),t.qZA(),t.YNc(71,na,2,1,"ng-container",8),t.YNc(72,Ha,3,1,"li",3),t.ALo(73,"count"),t.YNc(74,Xa,5,2,"li",3),t.qZA()()(),t.TgZ(75,"mat-expansion-panel",14)(76,"mat-expansion-panel-header")(77,"mat-panel-title"),t._uU(78," Stat overview "),t.qZA(),t.TgZ(79,"mat-panel-description"),t._uU(80," Shows a summary of all the stats and where they come from. "),t.qZA()(),t.TgZ(81,"table",15)(82,"tr")(83,"td",16),t._uU(84,"Stat"),t.qZA(),t.TgZ(85,"td",17),t._uU(86,"1"),t.qZA(),t.TgZ(87,"td",17),t._uU(88,"2"),t.qZA(),t.TgZ(89,"td",17),t._uU(90,"3"),t.qZA(),t.TgZ(91,"td",17),t._uU(92,"4"),t.qZA(),t.TgZ(93,"td",17),t._uU(94,"5"),t.qZA(),t.TgZ(95,"td",17),t._uU(96,"6"),t.qZA(),t.TgZ(97,"td",17),t._uU(98,"7"),t.qZA(),t.TgZ(99,"td",17),t._uU(100,"8"),t.qZA(),t.TgZ(101,"td",17),t._uU(102,"9"),t.qZA(),t.TgZ(103,"td",17),t._uU(104,"10"),t.qZA(),t.TgZ(105,"td"),t._uU(106,"Tiers"),t.qZA()(),t.YNc(107,ns,8,5,"tr",2),t.TgZ(108,"tr",18)(109,"td",16),t._uU(110,"Armor"),t.qZA(),t.TgZ(111,"td"),t._UZ(112,"div",19),t.qZA(),t.TgZ(113,"td",20),t._uU(114,"Stat Mod"),t.qZA(),t.TgZ(115,"td"),t._UZ(116,"div",21),t.qZA(),t.TgZ(117,"td",22),t._uU(118,"Fragments & Mods"),t.qZA(),t.TgZ(119,"td"),t._UZ(120,"div",23),t.qZA()(),t.YNc(121,is,2,1,"ng-container",8),t.qZA()()(),t._UZ(122,"br")(123,"br")),2&e&&(t.xp6(1),t.Q6J("ngIf",o.mayAnyItemBeBugged),t.xp6(21),t.Q6J("ngForOf",null==o.element?null:o.element.items),t.xp6(1),t.Q6J("ngIf",o.showGenericClassItemRow&&o.config_assumeClassItemMasterworked),t.xp6(1),t.Q6J("ngIf",o.showGenericClassItemRow&&!o.config_assumeClassItemMasterworked),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.statsNoMods),t.xp6(5),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Mobility]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Resilience]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Recovery]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Discipline]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Intellect]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Strength]),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.mods),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.mods),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.artifice),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.stats),t.xp6(1),t.Q6J("ngVar",o.calculateRequiredMasterworkCost()),t.xp6(2),t.Q6J("ngVar",o.buildItemIdString(o.element)),t.xp6(22),t.Q6J("ngIf",o.config_assumeClassItemMasterworked),t.xp6(2),t.Q6J("ngVar",o.getItemsThatMustBeMasterworked()),t.xp6(1),t.Q6J("ngIf",(null==o.element?null:o.element.mods).length>0&&t.xi3(73,23,null==o.element?null:o.element.mods,o.StatModifier.NONE)<5),t.xp6(2),t.Q6J("ngIf",o.config_enabledMods.length>0),t.xp6(33),t.Q6J("ngForOf",o.armorStatIds),t.xp6(14),t.Q6J("ngVar",null==o.element?null:o.element.exotic))},dependencies:[I.sg,I.O5,st.lW,pt.gM,St.Hw,wt.Ye,ct.pp,ct.ib,ct.yz,ct.yK,ct.u4,co.Ou,te.i3,zt,Co,ge,_e,I.JJ,Ae],styles:[".element-icon[_ngcontent-%COMP%]{width:22px}.element-icon-mini[_ngcontent-%COMP%]{height:12px}.item-loading-spinner[_ngcontent-%COMP%]{width:22px;height:22px;margin-bottom:6px}.item-icon[_ngcontent-%COMP%]{width:22px}.item-icon-overlay[_ngcontent-%COMP%]{width:22px;margin-left:-22px}.item-icon-container[_ngcontent-%COMP%]{position:relative;contain:layout paint style;box-sizing:border-box;width:var(--item-size);transition:opacity .2s,transform .2s;margin-top:-4px}.item-icon-masterwork-overlay[_ngcontent-%COMP%]{pointer-events:none;box-sizing:border-box;top:-1px;left:-1px;border-width:0;height:24px;width:24px;position:absolute;background-repeat:no-repeat;background-position:center;background-size:22px 22px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAJgklEQVR4AWI8t87oBYCd8rBuGAZi6N1JUQbIrJkiY6bM4EoE1EHvqb+WHsPvG5AJU522JQ/znpY03GzJ3YTovcvcVFcO5WbU8eH/OZ8R91B241c6wEzowJUUZnqlXMiZufrJSs1XUjNBUb6OcvUFF8190fzkGxS2J0ChGPQZDnYAQObJWHbNlCvZIXKxqvHN8KBp22SubByb9EKFGM2hzgyNa47vUzvKvnUToHPOINMFHG6Oo6hb6lhmMump4wROtxSMee8yjC6YI9jOnBYcGn5TZnTdBMB7d0+HB52AeKEb5QL2hQKx8RLk5IkE6eymz9CJFPJIQKxdWZKO5M1u+gw9kPvVJUjqyAt5Z98OMBAI4igO9x97koAAnSY6YHSaAB2nAiyswTbMq+/HAiHv0+4k3Ww1pOvnOvYews1Ow2rGnldEAAAIAAABACAAAAQAgAAAEAAAAgAgPwACAEAAAKiyAfJ7AXALEgAAAuAU5BMgAADki9j/BQCAlkN459OlNu6v0/V43vsAocOvq9kh1n/LX35h+B6EU9DI8fuVh/D48WMRWv742Qgtf/xshBY+fm1cMQgtefwdI5ffA/a9+frC68ox9M3enehIkvJAAC5D9vs/8F+Z/HugkfXJrOfec6QSJBi6O8IO2znX1zdZro39if/K0B8ftp2Hxxfa/vcu6DO8P5x/AaDrvwj4/uDPJDtjP09+ntDze9L+i4DRSEqwtgoQZ9rL3r9Ye/51L+Pw9tF6YuHFPJ/uWBDk2eXZvfb8YyMAwHvg673Z7AvmSF4POeSHmtDnb0xAD3qzN5gLfHsHIOvhktBJ4vOXJqABvJcZnqs5z54R7FF5ODaRiOkIGcXX+OZG7PqJnh6Ev3uOI52Z7tdRUCbdB6AFXHCDcZ3kkf2fGwEN+HGe+3xcE5yBB3umIvk5JnVIggDtnx/1u27XD5CajhBt8tqj9gMahDSan+7C629sxx6DiGmTcxOF304AwOud/SuABnTsZtNABWfaygUynjR3Ld+/GokZp4TO/JsJsEON1uN7OTEPaO9nVFHhHXizTdcN8Fl6BlER5gHk6lghYV8Tgd31DeCPL2icmhISYGsS9P7R9AErAT9JwlWCnuyFsmRuEQurKcBuqyBB72WkXtfmTCD7Au4a4/H7yYAl0N9VY0eERBqRr+Ov51yqCkTEYuuqjL4A+D4p1nvazLzOncHLt1dByhIwqpsHDzcShpIEkM4HZ5+zDEtoRLoKAgrwvwF41/WuAeg+z/1hDzk6VyGPkYW8aLfwarEwr0RJCDr/LUm4+42N8WX6z76Am3R9RoIkGGDvRN7i677TupIhqVZI7vmzPnr+1xLgwT6Bek6QtOE89rMmAGk6d8PhaG9ghSOgeLaAW1FFmYz9viLitcgBCFAgQ2dJ6dcEyLvcKxMuH2za3wW7AeOpqh/k6raz9l49XOIlQozX6pNwNCDnfde6Ckfb2SdeSejLUCXp+L3SPyAlj9FghVVHWV2etlVQ482MNfBHzwe4igSAj7T+4VnmtfdvwBJ5dxoXay/6hrc5gqrnyQCzX5H3fHYVhNd35eOrIWD4zDjZG2ntSmt8CpKTzCAnSEmp6Y7TDthyE9vbjhz7OOYAODg3THqfwEmMIJ29f1TaDwkX+8ckTCf8JAl6EjBviFo70m7v0vtTdD72EqzNgjwIgCJBr+aMRoTzbQMxzBlHIoY5JFCrA9xIZedIZLzZiwScpe1ij/vLyDu8b9p5IH2/V/4hfg+SGIUHr7oSAVhIwgbwIALpgYgLcvokvLU9gfsmgv+37117brJ90PrlHKAtWY24OWLO5/WORGWYAyJeQy8fjceHoOYz5gkTLeAPgL7YU57mHzRBQwA2Cff+5L3s1e9kn8Cuy1hAf9D/EN5YYySVKyQo4tyNSog6XucApWOZeA+Vz6UMNaXotLEiCZsgY4M9KVc/9lmBffwNHSonyQp1H/kpknDEiFeM/U2UybWRmcuEe5IcSPgAqOuQB2b3OiKBMrLumzy33dzy86HG84Z0KCtp/wL4kc7NfFdEDIucK9em8eskRl3q4bUAYc6YXalZJue6/LwkoClD9cYsP5G8d5pkT/U+Cfdd5gpI4jn2EL87eEQiID5tboPq9e+rBLvOA47D/doGj6+lKJpiQC+88WDP33h8JMADL36naIUYJYocsO+NGLOIAJJEjJnWhx7fyM0obAXLta7hmjxfp3dB5IF3AvRJwL3tzG3cjKJ8PkncBPgBocPyNXYEHAkI/md8CFA+eu8/jMiOVc1lpQRBEq38rKTNN/khkJHJXtjE8TW8T50fJO6RxvXaOSBer1j594Rjf5HfNyMSCCFoR43HBtKsirSFSCXILrh/G1p0vRdVSX4vdJvEkZYK+EVu4W0qtluCYtvGHq89MQImAApsLUHniBC0cbjXuclXcvR+o2Dq9ThXzhl3AtCcoabnHPBRdL1vCEwR30hQRAw985hwAZR1IyVcJ3o8p97HqSnE0xz1zpszAfgvSKm634e5tf9HVfaOGNcTJwLiUye2BJrnSk5OEiVZ3unv/7o/zvLT/sGshRy8i4hdyVtvk6mlaNoz4f6/dGvJkRqKgVXuDyuWLLkSZ+CiXIQVZ2CF0h0XbblkRU+hESIjq+yqZ2emJtKbZNK54vlfUBRAgl1A0BUuiyAvmdo/ff/x7QsZF5PsYY2uKw20EKA1NLpuzaNnBmddSCIZqrxIz2ydiEpprucWzrk8WzrZAGQQ5LyL4hJCqhCQ+zOVLFP5Cslzrc88KeGk0LWam1mSprc196WeH8mY/QZcngWxZ3/Y9fhsiiRjcpCzdKjhHSTHqDnCdatee/wFzF40+ph85GP9Ht7969BGjXlj0nBjbkoZJBPAbv+WB2sqWitvZXLrkrGprgluPsf5HvBr+/l1CpD4+8F/4NdnIreI64MMgFf0PUrhDRE3FjLuYLy4y9184Z1eY73w6rr7e2bNu4gvBE9fim7ftEOZkJ5I7TfkY1M+oHyiMF/R9YbcNzW3QfuLk/leIzXWLM/cgcp19FzCemU6cIz/MB9890UWjBGadM7N9QMtlCqqJiFwOjUhdaDQXQCdEwNOpzhYwMpBDrfcFpEXIsjiGJw+9jqidHo7O3+3QVO7+QpIf7ji9cbst7ogrVf8UXTDBslUgkxCCSilwjFdSAkBkSo1EcjSIBXWWvsN9SxF5ebWH3woEIS629sLNhsPabYekYTY/VR0znB/jBdcErKAavL8+A1ICXvgoqroDgAAAABJRU5ErkJggg==)}.negative[_ngcontent-%COMP%]{color:#f08080}.positive[_ngcontent-%COMP%]{color:#6495ed}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{text-align:right}table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:not(:last-child) td[_ngcontent-%COMP%]{border-bottom:rgba(240,248,255,.08) solid .5px}.result-total-gear[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:aliceblue solid 1px!important}.result-total-all[_ngcontent-%COMP%] > td[_ngcontent-%COMP%], .result-total-gear[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]{border-top:aliceblue double}.buttonContainer[_ngcontent-%COMP%]{margin-top:10px;margin-bottom:10px}.buttonContainer[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:not(:last-of-type){margin-right:6px;margin-bottom:3px}.result-total[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{position:relative;padding-right:14px}.statIcon[_ngcontent-%COMP%]{position:absolute;height:14px;margin-left:2px;top:3px}.item-info-menu-btn[_ngcontent-%COMP%]{height:22px!important;width:22px!important;line-height:22px!important;top:-4px;left:-4px}.item-info-menu-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:22px}.item-moved-icon[_ngcontent-%COMP%]{color:#7fffd4}.report-problem-icon[_ngcontent-%COMP%]{color:#f08080}.invalid-item-box[_ngcontent-%COMP%]{text-align:center;margin-right:auto;margin-left:auto;width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content;font-size:15px;line-height:20px}.text-centered[_ngcontent-%COMP%]{text-align:center!important}.specificStatTable[_ngcontent-%COMP%]{border-collapse:separate;border-spacing:0 0}.highlight-row[_ngcontent-%COMP%]{background-color:#6e6e6e21}tr.legend[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-top:3px}.tier-column[_ngcontent-%COMP%]{min-width:27px}.energy-bar[_ngcontent-%COMP%]{width:25px;height:10px;border:white solid 2px;position:relative}.energy-bar.normal[_ngcontent-%COMP%]{background-color:#fff}.energy-bar.mod[_ngcontent-%COMP%]{background-color:gray;border:white ridge 2px}.energy-bar.config[_ngcontent-%COMP%]{background-color:#a3b1c2;border:white ridge 2px}.energy-bar.over100[_ngcontent-%COMP%]{border-color:#ff5e5e;width:10px}.item-stat-container[_ngcontent-%COMP%]{position:relative}.item-stat-bonus[_ngcontent-%COMP%]{position:absolute;right:20px;font-size:x-small}.item-name-mw[_ngcontent-%COMP%]{text-decoration:underline;-webkit-text-decoration-color:#ffbc00;text-decoration-color:#ffbc00}.text-mw[_ngcontent-%COMP%], .item-stat-bonus[_ngcontent-%COMP%]{color:#ffd86a}app-armor-perk-icon[_ngcontent-%COMP%]{width:23px;height:23px;position:absolute;top:-14px;left:0}td.sum-tiers[_ngcontent-%COMP%]{text-align:center!important;border-left:#6e6e6e solid 1px}.currency-icon[_ngcontent-%COMP%]{width:16px;position:absolute;left:0}.currency-icon-container[_ngcontent-%COMP%]{position:relative;padding-left:19px;padding-right:10px}.icon-column[_ngcontent-%COMP%]{padding-left:4px}"]}),n})();var we=_(3238),ss=_(8729);function rs(n,i){1&n&&(t.TgZ(0,"mat-icon",6),t._uU(1,"add_circle_outline "),t.qZA())}function ls(n,i){1&n&&(t.TgZ(0,"mat-icon",7),t._uU(1,"remove_circle_outline "),t.qZA())}function cs(n,i){1&n&&(t.TgZ(0,"mat-icon",8),t._uU(1,"change_history "),t.qZA())}function ms(n,i){if(1&n&&(t.TgZ(0,"mat-list-item"),t.YNc(1,rs,2,0,"mat-icon",2),t.YNc(2,ls,2,0,"mat-icon",3),t.YNc(3,cs,2,0,"mat-icon",4),t.TgZ(4,"div",5)(5,"p"),t._uU(6),t.qZA()()()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",0===e.type),t.xp6(1),t.Q6J("ngIf",1===e.type),t.xp6(1),t.Q6J("ngIf",2===e.type),t.xp6(3),t.Oqu(e.text)}}function ds(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"div",1),t._uU(2),t.qZA(),t.YNc(3,ms,7,4,"mat-list-item",0),t.TgZ(4,"mat-list-item"),t._UZ(5,"br")(6,"mat-divider"),t.qZA(),t.BQk()),2&n){const e=i.$implicit;t.xp6(2),t.AsE("",e.version,", released on ",e.date,""),t.xp6(1),t.Q6J("ngForOf",e.entries)}}let Ze=(()=>{class n{constructor(e){this.changelog=e}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(se))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-changelog-list"]],decls:2,vars:1,consts:[[4,"ngFor","ngForOf"],["mat-subheader","",1,"title"],["mat-list-icon","","matTooltip","A new function has been added.",4,"ngIf"],["mat-list-icon","","matTooltip","A function has been removed.",4,"ngIf"],["mat-list-icon","","matTooltip","Something has been modified.",4,"ngIf"],["mat-line","",1,"e"],["mat-list-icon","","matTooltip","A new function has been added."],["mat-list-icon","","matTooltip","A function has been removed."],["mat-list-icon","","matTooltip","Something has been modified."]],template:function(e,o){1&e&&(t.TgZ(0,"mat-list"),t.YNc(1,ds,7,3,"ng-container",0),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngForOf",o.changelog.changelogData))},dependencies:[I.sg,I.O5,pt.gM,St.Hw,Gt.i$,Gt.Tg,we.X2,Gt.Nh,Gt.gs,ss.d],styles:["[_nghost-%COMP%] .mat-line{word-wrap:break-word!important;white-space:pre-wrap!important}[_nghost-%COMP%] .mat-list .mat-list-item{height:initial!important}.title[_ngcontent-%COMP%]{text-decoration:underline;font-size:20px}.e[_ngcontent-%COMP%] > p[_ngcontent-%COMP%]:first-child{padding-top:12px}"]}),n})();function us(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Oqu(e)}}let ps=(()=>{class n{constructor(){this.knownIssues=["When you click buttons on the page too fast are able to select an invalid state with no results. Just undo your changed settings. And be patient - the calculation is an expensive task.","Sometimes duplicate results are given. This happens when the inventory got updated twice (Race Condition). Only reported once, and not really a problem."],this.changelog=ye}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-help-page"]],decls:116,vars:1,consts:[["id","help-container"],["color","primary","fxShow","false","fxShow.lt-md","true","mat-raised-button","","routerLink","/",1,"returnbutton"],["href","https://twitter.com/MijagoCoding/","target","_blank","matTooltip","Birb App"],["alt","Me on twitter","src","assets/logo-twitter.png",1,"logo-twitter"],["href","https://ko-fi.com/mijago","target","_blank","matTooltip","If you like my work, you can always buy me a coffee!"],["alt","Ko-Fi","src","assets/logo-kofi.png",1,"logo-twitter"],["href","http://discord.d2armorpicker.com/","target","_blank","matTooltip","Visit me at the development & support discord."],["alt","Discord","src","assets/logo-discord.png",1,"logo-twitter"],["href","https://github.com/Mijago/D2-Gear-Calculator","target","_blank"],["href","https://mijago.github.io/D2GearCalculator/","target","_blank"],["href","https://twitter.com/MijagoCoding/","target","_blank"],["href","https://ko-fi.com/mijago","target","_blank"],[1,"preview-image-container"],["alt","Preview of the results table","src","assets/armor-images/preview_result_details.png",1,"preview-image"],["fxLayout","row","id","armor-image-container"],["src","assets/armor-images/kabrs_battlecage.png"],["src","assets/armor-images/lightkin_gauntlets.png"],["src","assets/armor-images/phobos_warden_helm.png"],["src","assets/armor-images/wild_hunt_vest.png"],[4,"ngFor","ngForOf"],[1,"changelog-table-container"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0)(1,"a",1),t._uU(2," Return to D2ArmorPicker "),t.qZA(),t.TgZ(3,"mat-card")(4,"mat-card-title")(5,"span"),t._uU(6,"About D2ArmorPicker "),t.TgZ(7,"small"),t._uU(8," by Mijago"),t.qZA(),t.TgZ(9,"a",2),t._UZ(10,"img",3),t.qZA(),t.TgZ(11,"a",4),t._UZ(12,"img",5),t.qZA(),t.TgZ(13,"a",6),t._UZ(14,"img",7),t.qZA()()(),t.TgZ(15,"mat-card-content"),t._uU(16," D2ArmorPicker (or short D2AP) is a small web-app to quickly find armor that fits your desired stat requirements. It uses the armor in your vault, inventory and postmaster, calculates every possible variation and shows only those that fulfill the given requirements. "),t._UZ(17,"br")(18,"br"),t._uU(19," As I raided a lot and I mainly play meme builds, I wanted to be able to switch exotics and have decent stats without being a burden on my team. That's why I developed the "),t.TgZ(20,"a",8),t._uU(21,"first version of this tool"),t.qZA(),t._uU(22," in Python. After a few days I started to translate this tool "),t.TgZ(23,"a",9),t._uU(24,"into a webpage"),t.qZA(),t._uU(25,". My friends liked it, but it didn't have API access. Thus I created the first version of D2ArmorPicker, and after people started using and liking it, I started to completely rewrite it - that's Version\xa02! "),t._UZ(26,"br")(27,"br"),t._uU(28," I keep updating and improving this tool, but beware that it takes a bit, as I work on it on my spare time. Feel free to follow me on Twitter "),t.TgZ(29,"a",10),t._UZ(30,"img",3),t.qZA(),t._uU(31,", I occasionally post updates there. If you like my tools and want to support me, head to "),t.TgZ(32,"a",11),t._uU(33,"ko-fi.com"),t.qZA(),t._uU(34," and buy me a coffee! \u2764 "),t.qZA()(),t.TgZ(35,"mat-card")(36,"mat-card-title"),t._uU(37," How do I use D2ArmorPicker? "),t.qZA(),t.TgZ(38,"mat-card-content"),t._uU(39," Follow these few steps: "),t.TgZ(40,"ol")(41,"li"),t._uU(42,"Login. You already did this!"),t.qZA(),t.TgZ(43,"li"),t._uU(44," [Optional] Pick an exotic you want to use. The tool will only display results for this exotic. You can always undo this. "),t.qZA(),t.TgZ(45,"li"),t._uU(46," [Optional] Select additional mods/fragments that give a bonus (or penalty). These are important if you want certain stat combinations even if you have penalties on your gear. "),t.qZA(),t.TgZ(47,"li"),t._uU(48," Select the stat distribution you seek. This is the heart of D2ArmorPicker. You just click 100 recovery and it will display you builds that have 100 recovery. "),t.TgZ(49,"i"),t._uU(50,"Note that it automatically adds stat mods if necessary."),t.qZA()(),t.TgZ(51,"li"),t._uU(52," Now look to the result table. On a normal desktop it should be on the right, on smaller devices it might move below the configuration. The table lists multiple results and you can sort it by your requirements."),t._UZ(53,"br"),t.TgZ(54,"b"),t._uU(55,"Click"),t.qZA(),t._uU(56," on an entry to open look the detailed view: "),t.TgZ(57,"div",12),t._UZ(58,"img",13),t.qZA(),t._uU(59," The example above shows a build that utilizes Dunemarchers and a zero-waste-build. To achieve it, I have to move all the items in my inventory and equip them. After this, I "),t.TgZ(60,"i"),t._uU(61,"masterwork"),t.qZA(),t._uU(62," them and "),t.TgZ(63,"i"),t._uU(64,"add the mods"),t.qZA(),t._uU(65," as the table displays them: "),t.TgZ(66,"ul")(67,"li")(68,"b"),t._uU(69,"Discipline:"),t.qZA(),t._uU(70," One major mod, one minor mod;"),t.qZA(),t.TgZ(71,"li")(72,"b"),t._uU(73,"Intellect:"),t.qZA(),t._uU(74," One major mod, one minor mod;"),t.qZA(),t.TgZ(75,"li")(76,"b"),t._uU(77,"Strength:"),t.qZA(),t._uU(78," One major mod;"),t.qZA(),t.TgZ(79,"li"),t._uU(80,"I also add Powerful Friends and Radiant Light, as I chose them in the configuration."),t.qZA()()()()()(),t.TgZ(81,"mat-card")(82,"mat-card-title"),t._uU(83," Where can I grind high stat armor? "),t.qZA(),t.TgZ(84,"mat-card-content"),t._uU(85," There are many spots that give you mediocre armor, but for the really good builds you need the correct armor. Here I provide a list of high-stat armor sources. It may not be complete, but a good starting point. "),t.TgZ(86,"i"),t._uU(87,"Last updated February 8, 2022."),t.qZA(),t.TgZ(88,"ul")(89,"li"),t._uU(90," Farm legendary Dares!"),t.qZA(),t.TgZ(91,"li"),t._uU(92," Clear Pit of Heresy Dungeon, the boss drop guarantees two stats to be 16 (or higher)."),t.qZA(),t.TgZ(93,"li"),t._uU(94," Farm a bunch of Spoils, go into Master Vault of Glass and buy armor at the final chest."),t.qZA(),t.TgZ(95,"li"),t._uU(96," The list will be extended sometime in Witch Queen!"),t.qZA()(),t._uU(97," Some good armor rolls may look like these: "),t.TgZ(98,"div",14),t._UZ(99,"img",15)(100,"img",16)(101,"img",17)(102,"img",18),t.qZA()()(),t.TgZ(103,"mat-card")(104,"mat-card-title"),t._uU(105,"Known Issues"),t.qZA(),t.TgZ(106,"mat-card-content")(107,"ul"),t.YNc(108,us,2,1,"li",19),t.qZA()()(),t.TgZ(109,"mat-card")(110,"mat-card-title"),t._uU(111,"Changelog"),t.qZA(),t.TgZ(112,"mat-card-content",20),t._UZ(113,"app-changelog-list"),t.qZA()(),t.TgZ(114,"a",1),t._uU(115," Return to D2ArmorPicker "),t.qZA()()),2&e&&(t.xp6(108),t.Q6J("ngForOf",o.knownIssues))},dependencies:[I.sg,_t.xw,M.b8,st.zs,Y.a8,Y.dn,Y.n5,pt.gM,ot.yS,Ze],styles:["#help-container[_ngcontent-%COMP%]{max-width:800px;margin-left:auto;margin-right:auto}.changelog-table-container[_ngcontent-%COMP%]{max-height:700px;overflow-y:scroll}mat-card[_ngcontent-%COMP%]{margin-bottom:8px}#armor-image-container[_ngcontent-%COMP%]{overflow:auto}#armor-image-container[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]:not(:last-of-type){margin-right:20px}#armor-image-container[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]{max-height:300px}.preview-image-container[_ngcontent-%COMP%]{max-width:600px}.preview-image[_ngcontent-%COMP%]{max-width:100%}.returnbutton[_ngcontent-%COMP%]{margin-top:5px;margin-bottom:15px;width:100%}.changelog-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:first-of-type{min-width:80px}.changelog-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:nth-of-type(2){min-width:40px}.changelog-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-top:#6e6e6e solid 1px}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}"]}),n})();var At=_(4006),ee=_(455),Kt=_(3217),Dt=_(811),Pt=_(9549),ne=_(4144);function fs(n,i){if(1&n&&(t.TgZ(0,"th",5),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.hij("\u2206 Tier ",e.differenceTier,"")}}function hs(n,i){if(1&n&&t._UZ(0,"img",9),2&n){const e=t.oxw(3).$implicit;t.MGl("src","https://www.bungie.net/",e.icon,"",t.LSH)}}function xs(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=i.ngVar,o=t.oxw(6).$implicit,a=t.oxw();t.ekj("good",a.differenceTiera.tier),t.xp6(1),t.AsE(" ",e>0?"+":"","",a.formatEntry(o,e)," ")}}function ys(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,xs,2,6,"span",10),t.qZA()),2&n){const e=t.oxw(2).ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngVar",-(e-o))}}function Cs(n,i){if(1&n&&(t.TgZ(0,"td")(1,"span"),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=t.oxw().ngVar,o=t.oxw(5);t.xp6(1),t.ekj("good",o.differenceTiero.tier),t.xp6(1),t.AsE(" (",e>0?"+":"","",t.xi3(3,6,100*e,"1.0-0"),"%) ")}}function Ts(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ys,2,1,"td",6),t.YNc(2,Cs,4,9,"td",6),t.BQk()),2&n){const e=t.oxw(5);t.xp6(1),t.Q6J("ngIf",e.differenceTier!==e.tier),t.xp6(1),t.Q6J("ngIf",e.differenceTier!==e.tier)}}function vs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ts,3,2,"ng-container",7),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar,a=t.oxw(3);t.xp6(1),t.Q6J("ngVar",a.getPercentageDifference(o,e))}}function bs(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"app-item-icon",11),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("itemHash",e)}}function As(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"td"),t.YNc(2,hs,1,1,"img",8),t._uU(3),t.qZA(),t.TgZ(4,"td"),t._uU(5),t.qZA(),t.YNc(6,vs,2,1,"ng-container",7),t.TgZ(7,"td"),t.YNc(8,bs,2,1,"ng-container",4),t._uU(9),t.qZA(),t.BQk()),2&n){const e=i.ngVar,o=t.oxw(2).$implicit,a=t.oxw();t.xp6(2),t.Q6J("ngIf",o.icon),t.xp6(1),t.hij(" ",o.name," "),t.xp6(2),t.Oqu(a.formatEntry(o,e)),t.xp6(1),t.Q6J("ngVar",a.valueFunction(o,a.differenceTier)),t.xp6(2),t.Q6J("ngForOf",o.overrideIcons),t.xp6(1),t.hij(" ",o.description," ")}}function ws(n,i){if(1&n&&(t.TgZ(0,"tr"),t.YNc(1,As,10,6,"ng-container",7),t.qZA()),2&n){const e=t.oxw().$implicit,o=t.oxw();t.xp6(1),t.Q6J("ngVar",o.valueFunction(e,o.tier))}}function Zs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ws,2,1,"tr",6),t.BQk()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.Q6J("ngIf",null==e.description||!!e.description[o.characterClass])}}let Os=(()=>{class n{constructor(e,o){this.config=e,this.characterStats=o,this.ArmorStatNames=c.Mi,this.tier=0,this.differenceTier=0,this.stat=c.WB.Mobility,this.entries=[]}get characterClass(){return this.config.readonlyConfigurationSnapshot.characterClass}ngOnInit(){this.entries=this.characterStats.get(c.Mi[this.stat],this.config.readonlyConfigurationSnapshot.characterClass,this.config.readonlyConfigurationSnapshot.selectedModElement,this.config.readonlyConfigurationSnapshot.selectedExotics)}formatEntry(e,o){return o=parseFloat(o.toFixed(2)),e.valueType===mt.Speed?(n=>(Math.round(100*n)/100).toFixed(2)+"m/s")(o):e.valueType===mt.Percentage?`${o}%`:e.valueType===mt.PercentagePerSecond?`${o}%/s`:e.valueType===mt.TimeMMSS?function Ss(n){var i=function gs(n){n=Math.abs(n);var i=Math.floor(n/60),e=Math.floor(n-60*i);return`${i}:${e<10?"0":""}${e}`}(n);return n<0&&(i="- "+i),i}(o):e.valueType===mt.Time?function Ms(n){var i=function _s(n){n=Math.abs(n);var i=Math.floor(10*n%10),e=Math.floor(n/60),o=Math.floor(n-60*e);let a=`${o}s`;return i>0&&(a=`${o}.${i}s`),e>0&&(a=`${e}m ${a}`),a}(n);return n<0&&(i="- "+i),i}(o):o}valueFunction(e,o){return e.values[o]}getPercentageDifference(e,o){return(e-o)/Math.max(1,o)}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(ae))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-stat-cooldown-tooltip"]],inputs:{tier:"tier",differenceTier:"differenceTier",stat:"stat"},decls:13,vars:5,consts:[[1,"tooltip-container"],["colspan","3",1,"exotic-name"],[2,"min-width","50px"],["style","min-width: 50px","colspan","2",4,"ngIf"],[4,"ngFor","ngForOf"],["colspan","2",2,"min-width","50px"],[4,"ngIf"],[4,"ngVar"],[3,"src",4,"ngIf"],[3,"src"],[3,"good","bad",4,"ngVar"],[3,"itemHash"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t._uU(5),t.qZA()(),t.TgZ(6,"tr")(7,"th",2),t._uU(8,"Stat"),t.qZA(),t.TgZ(9,"th",2),t._uU(10),t.qZA(),t.YNc(11,fs,2,1,"th",3),t.qZA(),t.YNc(12,Zs,2,1,"ng-container",4),t.qZA()()()),2&e&&(t.xp6(5),t.AsE("",o.ArmorStatNames[o.stat]," at Tier ",o.tier,""),t.xp6(5),t.hij("Tier ",o.tier,""),t.xp6(1),t.Q6J("ngIf",o.differenceTier!==o.tier),t.xp6(1),t.Q6J("ngForOf",o.entries))},dependencies:[I.sg,I.O5,zt,ge,I.JJ],styles:["[_nghost-%COMP%]{max-width:420px}.tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.exotic-name[_ngcontent-%COMP%]{color:#eedb9e}.good[_ngcontent-%COMP%]{color:#58b458}.bad[_ngcontent-%COMP%]{color:#ff6b6b}table[_ngcontent-%COMP%]{border-collapse:separate;border-spacing:7px 3px}th[_ngcontent-%COMP%]{white-space:nowrap}img[_ngcontent-%COMP%]{width:24px;height:24px;float:left;margin-right:3px}tr[_ngcontent-%COMP%]{line-height:24px}"]}),n})(),ks=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a,this.showToolTip=!0,this.tooltipTier=0,this.tooltipStat=c.WB.Mobility,this.tooltipDifferenceTier=0}ngOnInit(){if(!this.showToolTip)return;const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){if(this._overlayRef&&!this._overlayRef.hasAttached()){const e=this._overlayRef.attach(new re.C5(Os));e.instance.tier=this.tooltipTier,e.instance.differenceTier=this.tooltipDifferenceTier,e.instance.stat=this.tooltipStat}}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Jt.aV),t.Y36(Jt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","statCooldownTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{showToolTip:"showToolTip",tooltipTier:"tooltipTier",tooltipStat:"tooltipStat",tooltipDifferenceTier:"tooltipDifferenceTier",contentTemplate:"contentTemplate"}}),n})();function Es(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-button-toggle",5),t.NdJ("click",function(){const s=t.CHM(e).index,r=t.oxw(2);return t.KtG(r.setValue(s))}),t.TgZ(1,"div",6),t._uU(2),t.qZA()()}if(2&n){const e=i.index,o=t.oxw(2);t.ekj("isFromMod",o.isAddedByConfigMods(e))("mat-button-toggle-checked",o.selectedTier>=e)("not-checked",o.selectedTier{class n{constructor(){this.TierRange=new Array(11),this.allowExactStats=!1,this.stat=c.WB.Mobility,this.statsByMods=0,this.maximumAvailableTier=10,this.selectedTier=0,this.locked=!1,this.selectedTierChange=new t.vpe,this.lockedChange=new t.vpe}setValue(e){e<=this.maximumAvailableTier&&(this.selectedTier=e,this.selectedTierChange.emit(e))}setValueMob(e){let o=parseInt(e.target.value);o=Math.min(Math.max(o,0),100),this.setValue(o/10)}isAddedByConfigMods(e){return e>0&&(this.selectedTier-e>=0&&this.selectedTier-e{class n{constructor(){this.ArmorStatNames=c.Mi,this.ArmorStatIconUrls=c.lp,this.stat=c.WB.Mobility}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-stat-icon"]],inputs:{stat:"stat"},decls:2,vars:2,consts:[[1,"statContainerWrapper"],[1,"dialogStatIcon",3,"src","alt"]],template:function(e,o){1&e&&(t.TgZ(0,"span",0),t._UZ(1,"img",1),t.qZA()),2&e&&(t.xp6(1),t.Q6J("src",o.ArmorStatIconUrls[o.stat],t.LSH)("alt",o.ArmorStatNames[o.stat]))},styles:[".dialogStatIcon[_ngcontent-%COMP%]{position:relative;width:25px;margin-right:3px;top:4px}"]}),n})();function qs(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t._UZ(4,"app-stat-icon",15),t.qZA(),t.TgZ(5,"td")(6,"app-stat-tier-selection",16),t.NdJ("selectedTierChange",function(a){const r=t.CHM(e).$implicit,d=t.oxw();return t.KtG(d.setSelectedTier(r.value,a))})("lockedChange",function(a){const r=t.CHM(e).$implicit,d=t.oxw();return t.KtG(d.setLockState(r.value,a))}),t.qZA()()()}if(2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.hij(" ",e.name," "),t.xp6(2),t.Q6J("stat",e.value),t.xp6(2),t.Q6J("stat",e.value)("allowExactStats",o.config_allowExactStats)("statsByMods",o.statsByMods[e.value])("maximumAvailableTier",o.maximumPossibleTiers[e.value])("selectedTier",o.minimumStatTiers[e.value].value)("locked",o.minimumStatTiers[e.value].fixed)}}function Fs(n,i){1&n&&t._UZ(0,"app-stat-icon",19),2&n&&t.Q6J("stat",i.$implicit)}function Js(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",17),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.useStatPreset(s))}),t.YNc(1,Fs,1,1,"app-stat-icon",18),t.qZA()}if(2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function Ls(n,i){1&n&&t._UZ(0,"app-stat-icon",19),2&n&&t.Q6J("stat",i.$implicit)}function Ys(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",17),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.useStatPreset(s))}),t.YNc(1,Ls,1,1,"app-stat-icon",18),t.qZA()}if(2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function Ie(n){let i=0;for(let e of n)i+=Math.pow(10,6-e);return i}let Bs=(()=>{class n{constructor(e,o){this.config=e,this.inventory=o,this.minimumStatTiers=H(1),this.maximumPossibleTiers=[10,10,10,10,10,10],this.statsByMods=[0,0,0,0,0,0],this._statCombo4x100=[],this._statCombo3x100=[],this.config_zero_waste=!1,this.config_mod_strategy=K.w.None,this.config_reduce_waste=!1,this.config_allowExactStats=!1,this.ngUnsubscribe=new R.xQ,this.stats=Object.keys(c.WB).filter(a=>!isNaN(Number(a))).map(a=>({name:c.WB[a],value:+a}))}ngOnInit(){this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(e=>{const o=[0,0,0,0,0,0];for(let a of e.enabledMods)for(let s of N.F[a].bonus)o[s.stat]+=s.value/10;this.statsByMods=o,this.minimumStatTiers=e.minimumStatTiers,this.config_zero_waste=e.onlyShowResultsWithNoWastedStats,this.config_mod_strategy=e.modOptimizationStrategy,this.config_reduce_waste=e.tryLimitWastedStats,this.config_allowExactStats=e.allowExactStats}),this.inventory.armorResults.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(e=>{const o=e.maximumPossibleTiers||[10,10,10,10,10,10];console.log("d.maximumPossibleTiers",o),o.filter(a=>0==a).length<6&&(this.maximumPossibleTiers=o),this._statCombo3x100=(e.statCombo3x100||[]).sort((a,s)=>Ie(s)-Ie(a)),this._statCombo4x100=e.statCombo4x100||[]})}setSelectedTier(e,o){this.config.modifyConfiguration(a=>{a.minimumStatTiers[e].value=o})}clearStatSelection(){this.config.modifyConfiguration(e=>{for(let o=0;o<6;o++)e.minimumStatTiers[o]={fixed:!1,value:0}})}useStatPreset(e){0!=e.filter(o=>10!=this.config.readonlyConfigurationSnapshot.minimumStatTiers[o].value).length&&this.config.modifyConfiguration(o=>{for(let a of e)o.minimumStatTiers[a].value=10})}setLockState(e,o){this.config.modifyConfiguration(a=>{a.minimumStatTiers[e].fixed=o})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}setModOptimizationStrategy(){this.config.modifyConfiguration(e=>{e.modOptimizationStrategy=this.config_mod_strategy})}toggleReduceWaste(){this.config.modifyConfiguration(e=>{e.tryLimitWastedStats=!this.config_reduce_waste})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(Tt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-stat-selection"]],decls:43,vars:12,consts:[[4,"ngFor","ngForOf"],["id","tierSelectButtonContainer"],[1,"tierSelectButton"],["mat-stroked-button","","color","warn","id","clearStatButton",3,"click"],["mat-stroked-button","","aria-label","Select builds with three stats at tier 10.",1,"selectStatDistributionButton",3,"matMenuTriggerFor","disabled"],["menu",""],["menu1","matMenu"],["mat-menu-item","",3,"click",4,"ngFor","ngForOf"],["mat-stroked-button","","aria-label","Select builds with four stats at tier 10.",3,"matMenuTriggerFor","disabled"],["menu2","matMenu"],[3,"ngModel","ngModelChange","change"],["matTooltip","Fast. Will result in good and fast results. Some better results *may* be skipped.",3,"value"],["matTooltip","Slower. Reduces the amount of used mods. This means that it will try to give you 4 mods instead of 5 whenever possible.",3,"value"],["matTooltip","Slower. Reduces the total cost of mods. This will result in less Intellect mods, for example.",3,"value"],["color","primary",3,"checked","change"],[3,"stat"],[3,"stat","allowExactStats","statsByMods","maximumAvailableTier","selectedTier","locked","selectedTierChange","lockedChange"],["mat-menu-item","",3,"click"],["class","dialogStatIcon",3,"stat",4,"ngFor","ngForOf"],[1,"dialogStatIcon",3,"stat"]],template:function(e,o){if(1&e&&(t.TgZ(0,"table"),t.YNc(1,qs,7,8,"tr",0),t.qZA(),t.TgZ(2,"span",1)(3,"span",2)(4,"button",3),t.NdJ("click",function(){return o.clearStatSelection()}),t._uU(5,"Clear"),t.qZA()(),t.TgZ(6,"span",2)(7,"button",4)(8,"mat-icon"),t._uU(9,"expand_more"),t.qZA(),t._uU(10," Select 3x T10 Builds "),t.qZA(),t.TgZ(11,"mat-menu",5,6),t.YNc(13,Js,2,1,"button",7),t.qZA()(),t.TgZ(14,"span",2)(15,"button",8)(16,"mat-icon"),t._uU(17,"expand_more"),t.qZA(),t._uU(18," Select 4x T10 Builds "),t.qZA(),t.TgZ(19,"mat-menu",null,9),t.YNc(21,Ys,2,1,"button",7),t.qZA()()(),t._UZ(22,"br")(23,"br"),t.TgZ(24,"div")(25,"div")(26,"b"),t._uU(27,"Mod optimization strategy:"),t.qZA()(),t.TgZ(28,"div"),t._uU(29,"You can choose if the algorithm should keep an eye on amount or the cost of mods."),t.qZA(),t.TgZ(30,"div"),t._uU(31,"These settings are extremely expensive when paired with the reduced waste feature."),t.qZA(),t.TgZ(32,"mat-button-toggle-group",10),t.NdJ("ngModelChange",function(s){return o.config_mod_strategy=s})("change",function(){return o.setModOptimizationStrategy()}),t.TgZ(33,"mat-button-toggle",11),t._uU(34,"No extra logic (fast)"),t.qZA(),t.TgZ(35,"mat-button-toggle",12),t._uU(36,"Fewer mods, high cost (slow)"),t.qZA(),t.TgZ(37,"mat-button-toggle",13),t._uU(38,"Many mods, low cost (slow)"),t.qZA()()(),t._UZ(39,"br"),t.TgZ(40,"div")(41,"mat-slide-toggle",14),t.NdJ("change",function(){return o.toggleReduceWaste()}),t._uU(42," Add mods to reduce wasted stats (slower) "),t.qZA()()),2&e){const a=t.MAs(12),s=t.MAs(20);t.xp6(1),t.Q6J("ngForOf",o.stats),t.xp6(6),t.Q6J("matMenuTriggerFor",a)("disabled",0===o._statCombo3x100.length),t.xp6(6),t.Q6J("ngForOf",o._statCombo3x100),t.xp6(2),t.Q6J("matMenuTriggerFor",s)("disabled",0===o._statCombo4x100.length),t.xp6(6),t.Q6J("ngForOf",o._statCombo4x100),t.xp6(11),t.Q6J("ngModel",o.config_mod_strategy),t.xp6(1),t.Q6J("value",0),t.xp6(2),t.Q6J("value",1),t.xp6(2),t.Q6J("value",2),t.xp6(4),t.Q6J("checked",o.config_reduce_waste)}},dependencies:[I.sg,At.JJ,At.On,st.lW,ee.Rr,pt.gM,St.Hw,Kt.VK,Kt.OP,Kt.p6,Dt.A9,Dt.Yi,Ns,fe],styles:["#tierSelectButtonContainer[_ngcontent-%COMP%] > .tierSelectButton[_ngcontent-%COMP%]:not(:last-child){margin-right:5px}.dialogStatIcon[_ngcontent-%COMP%]{height:35px}.warn[_ngcontent-%COMP%]{background-color:#8b0000;padding-left:15px;padding-right:15px}"]}),n})();function Vs(n,i){if(1&n&&(t.TgZ(0,"div",4,5),t._UZ(2,"img",6),t.TgZ(3,"span",7),t._uU(4),t.qZA()()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(2),t.Q6J("src",o.artificeUrl,t.LSH),t.xp6(2),t.hij("\xd7",e,"")}}function Qs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Vs,5,2,"div",3),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Hs(n,i){if(1&n&&(t.TgZ(0,"div",9,5),t._UZ(2,"img",10),t.TgZ(3,"span",11),t._uU(4),t.qZA()()),2&n){const e=t.oxw().ngVar,o=t.oxw().$implicit,a=t.oxw().$implicit,s=t.oxw();t.Q6J("matTooltip",s.getStatName(a)),t.xp6(2),t.Gre("modIcon modIcon_",s.getStatName(a),""),t.ekj("minor",1===o),t.Q6J("src",s.ModUrl[o+3*a],t.LSH),t.xp6(1),t.ekj("minor",1===o),t.xp6(1),t.hij("\xd7",e,"")}}function Ws(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Hs,5,10,"div",8),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function js(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ws,2,1,"ng-container",1),t.ALo(2,"count"),t.BQk()),2&n){const e=i.$implicit,o=t.oxw().$implicit,a=t.oxw();t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,a.mods,e+3*o))}}function Gs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,js,3,4,"ng-container",2),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngForOf",e.modTypeIndex)}}const Se={[c.iV.MINOR_MOBILITY]:"https://www.bungie.net/common/destiny2_content/icons/a5d9a778feddb2a9036588490a4818b0.png",[c.iV.MAJOR_MOBILITY]:"https://www.bungie.net/common/destiny2_content/icons/db4b34c79c834d3cf36b592c688ed22d.png",[c.iV.ARTIFICE_MOBILITY]:"https://www.bungie.net/common/destiny2_content/icons/a5d9a778feddb2a9036588490a4818b0.png",[c.iV.MINOR_RESILIENCE]:"https://www.bungie.net/common/destiny2_content/icons/1b4eec255df03ae088db1eb251654316.png",[c.iV.MAJOR_RESILIENCE]:"https://www.bungie.net/common/destiny2_content/icons/db6c438e9ff1a21b03a1f0488560e6a3.png",[c.iV.ARTIFICE_RESILIENCE]:"https://www.bungie.net/common/destiny2_content/icons/1b4eec255df03ae088db1eb251654316.png",[c.iV.MINOR_RECOVERY]:"https://www.bungie.net/common/destiny2_content/icons/51d46295defdf93d77a62e3e895df5cd.png",[c.iV.MAJOR_RECOVERY]:"https://www.bungie.net/common/destiny2_content/icons/f42cc43389f147d25f0ee2946f1ff1bd.png",[c.iV.ARTIFICE_RECOVERY]:"https://www.bungie.net/common/destiny2_content/icons/51d46295defdf93d77a62e3e895df5cd.png",[c.iV.MINOR_DISCIPLINE]:"https://www.bungie.net/common/destiny2_content/icons/9ba335d570610d1ae9cffa071d5bcb8e.png",[c.iV.MAJOR_DISCIPLINE]:"https://www.bungie.net/common/destiny2_content/icons/e54f6af6a4577e4d66396e5285bb73c0.png",[c.iV.ARTIFICE_DISCIPLINE]:"https://www.bungie.net/common/destiny2_content/icons/9ba335d570610d1ae9cffa071d5bcb8e.png",[c.iV.MINOR_INTELLECT]:"https://www.bungie.net/common/destiny2_content/icons/a8808e7528b16474f8c9c65b4e53b52b.png",[c.iV.MAJOR_INTELLECT]:"https://www.bungie.net/common/destiny2_content/icons/2399dff2dc6952ea65c2b8c594d00658.png",[c.iV.ARTIFICE_INTELLECT]:"https://www.bungie.net/common/destiny2_content/icons/a8808e7528b16474f8c9c65b4e53b52b.png",[c.iV.MINOR_STRENGTH]:"https://www.bungie.net/common/destiny2_content/icons/6b45221fccade87ee39f3a03efc6e9b9.png",[c.iV.MAJOR_STRENGTH]:"https://www.bungie.net/common/destiny2_content/icons/66714f030b79a1517c657f1378216cca.png",[c.iV.ARTIFICE_STRENGTH]:"https://www.bungie.net/common/destiny2_content/icons/6b45221fccade87ee39f3a03efc6e9b9.png"};let zs=(()=>{class n{constructor(){this.artificeUrl=c.X9[c.Pn.SlotArtifice],this.modIndex=[0,1,2,3,4,5],this.modTypeIndex=[1,2],this.ModUrl=Se,this.mods=[],this.artifice=[]}getStatName(e){return c.Mi[e]}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-table-mod-display"]],inputs:{mods:"mods",artifice:"artifice"},decls:4,vars:4,consts:[[1,"row-mod"],[4,"ngVar"],[4,"ngFor","ngForOf"],["class","container","matTooltip","Artifice",4,"ngIf"],["matTooltip","Artifice",1,"container"],["tooltip","matTooltip"],[1,"artificeIcon","artifice",3,"src"],[1,"modText","artifice"],["class","container",3,"matTooltip",4,"ngIf"],[1,"container",3,"matTooltip"],[3,"src"],[1,"modText"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Qs,2,1,"ng-container",1),t.ALo(2,"count"),t.YNc(3,Gs,2,1,"ng-container",2),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngVar",t.lcZ(2,2,o.artifice)),t.xp6(2),t.Q6J("ngForOf",o.modIndex))},dependencies:[I.sg,I.O5,pt.gM,zt,Ae],styles:[".container[_ngcontent-%COMP%]{display:inline-block;width:32px;height:30px;position:relative}.modIcon[_ngcontent-%COMP%]{position:absolute;top:-12px;left:-12px;width:50px;height:50px;filter:contrast(2.3);border:#00000000 solid 2px;-webkit-mask-image:url(modmask.f03dde91561a62d6.svg);mask-image:image(url(modmask.f03dde91561a62d6.svg),black)}.modIcon_Mobility[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(0deg) brightness(100%) saturate(320%)}.modIcon_Resilience[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(60deg) brightness(100%) saturate(320%)}.modIcon_Recovery[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(120deg) brightness(100%) saturate(320%)}.modIcon_Discipline[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(180deg) brightness(100%) saturate(320%)}.modIcon_Intellect[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(240deg) brightness(100%) saturate(320%)}.modIcon_Strength[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(300deg) brightness(100%) saturate(320%)}.modIcon.minor[_ngcontent-%COMP%]{opacity:.8;scale:.75}.artificeIcon[_ngcontent-%COMP%]{height:28px;width:28px;filter:saturate(40) hue-rotate(40deg)}.selected[_ngcontent-%COMP%]{border:red solid 2px}[_nghost-%COMP%]{position:relative}.modText[_ngcontent-%COMP%]{position:absolute;text-shadow:0 0 6px #000000;font-size:smaller;color:#f5f5f5;bottom:-6px;right:-1px}"]}),n})();function Ks(n,i){if(1&n&&(t.TgZ(0,"div")(1,"div",22),t._UZ(2,"img",23)(3,"img",24),t.O4$(),t.TgZ(4,"svg",25)(5,"text",26),t._uU(6,"3"),t.qZA()(),t.TgZ(7,"svg",27)(8,"text",26),t._uU(9,"1"),t.qZA()(),t.kcU(),t._UZ(10,"div",28),t.qZA(),t.TgZ(11,"div",22),t._UZ(12,"img",23)(13,"img",24),t.O4$(),t.TgZ(14,"svg",25)(15,"text",26),t._uU(16,"4"),t.qZA()(),t.TgZ(17,"svg",27)(18,"text",26),t._uU(19,"2"),t.qZA()(),t.kcU(),t._UZ(20,"div",28),t.qZA(),t.TgZ(21,"div",22),t._UZ(22,"img",23)(23,"img",24),t.O4$(),t.TgZ(24,"svg",25)(25,"text",26),t._uU(26,"3"),t.qZA()(),t.TgZ(27,"svg",27)(28,"text",26),t._uU(29,"1"),t.qZA()(),t.kcU(),t._UZ(30,"div",28),t.qZA(),t.TgZ(31,"div",22),t._UZ(32,"img",23)(33,"img",24),t.O4$(),t.TgZ(34,"svg",25)(35,"text",26),t._uU(36,"3"),t.qZA()(),t.TgZ(37,"svg",27)(38,"text",26),t._uU(39,"1"),t.qZA()(),t.kcU(),t._UZ(40,"div",28),t.qZA(),t.TgZ(41,"div",22),t._UZ(42,"img",23)(43,"img",24),t.O4$(),t.TgZ(44,"svg",25)(45,"text",26),t._uU(46,"4"),t.qZA()(),t.TgZ(47,"svg",27)(48,"text",26),t._uU(49,"2"),t.qZA()(),t.kcU(),t._UZ(50,"div",28),t.qZA(),t.TgZ(51,"div",22),t._UZ(52,"img",23)(53,"img",24),t.O4$(),t.TgZ(54,"svg",25)(55,"text",26),t._uU(56,"4"),t.qZA()(),t.TgZ(57,"svg",27)(58,"text",26),t._uU(59,"2"),t.qZA()(),t.kcU(),t._UZ(60,"div",28),t.qZA()()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(1),t.ekj("major",e>=3)("minor",e>=1&&e<3),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_MOBILITY],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_MOBILITY],t.LSH),t.xp6(8),t.ekj("major",e>=4)("minor",e>=2&&e<4),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_RESILIENCE],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_RESILIENCE],t.LSH),t.xp6(8),t.ekj("major",e>=3)("minor",e>=1&&e<3),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_DISCIPLINE],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_DISCIPLINE],t.LSH),t.xp6(8),t.ekj("major",e>=3)("minor",e>=1&&e<3),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_STRENGTH],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_STRENGTH],t.LSH),t.xp6(8),t.ekj("major",e>=4)("minor",e>=2&&e<4),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_RECOVERY],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_RECOVERY],t.LSH),t.xp6(8),t.ekj("major",e>=4)("minor",e>=2&&e<4),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_INTELLECT],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_INTELLECT],t.LSH)}}function $s(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-button-toggle",29),t.NdJ("click",function(){const s=t.CHM(e).index,r=t.oxw();return t.KtG(r.setValue(s))}),t._uU(1),t.qZA()}if(2&n){const e=i.index,o=t.oxw();t.Gre("select-button ",o.selection>=e?"mat-button-toggle-checked":"",""),t.Q6J("value",e),t.xp6(1),t.Oqu(e)}}function Xs(n,i){1&n&&(t.TgZ(0,"mat-icon"),t._uU(1,"lock_open"),t.qZA())}function tr(n,i){1&n&&(t.TgZ(0,"mat-icon"),t._uU(1,"lock"),t.qZA())}function er(n,i){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"button",30),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.setArmorPerk(s))}),t._UZ(2,"app-armor-perk-icon",31),t.TgZ(3,"span",32),t._uU(4),t.qZA()(),t.BQk()}if(2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.ekj("selected-menu",e===o.armorPerk),t.xp6(1),t.Q6J("perk",e),t.xp6(2),t.Oqu(o.ArmorPerkOrSlotNames[e])}}function nr(n,i){if(1&n&&t._UZ(0,"img",33,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function or(n,i){if(1&n&&t._UZ(0,"img",35,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function ir(n,i){if(1&n&&t._UZ(0,"img",36,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function ar(n,i){if(1&n&&t._UZ(0,"img",37,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function sr(n,i){if(1&n&&t._UZ(0,"img",38,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}let rr=(()=>{class n{constructor(e,o,a,s){this.config=e,this.inventory=o,this.iconService=a,this.db=s,this.featureDisabled=!g.N.featureFlags.enableModslotLimitation,this.ModUrls=Se,this.StatModifier=c.iV,this.ArmorSlot=T.y,this.ArmorPerkOrSlotNames=c.cM,this.ArmorPerkOrSlot=c.Pn,this.ModRange=new Array(D.Qj+1),this.selection=D.Qj,this.slot=T.y.ArmorSlotHelmet,this.possible=new t.vpe,this.fixedExoticInThisSlot=!1,this.isPossible=!0,this.configSelectedClass=0,this.configAssumeLegendaryIsArtifice=!1,this.configSelectedExoticSum=0,this.configSelectedExotic=[],this.configAssumeClassItemIsArtifice=!1,this.configAssumeExoticIsArtifice=!1,this.armorPerk=c.Pn.None,this.armorPerkLock=!1,this.maximumModSlots=5,this.hoveredSlot=-1,this.disabled=!1,this.availableArmorPerks=[c.Pn.None,c.Pn.SlotSalvationsEdge,c.Pn.SlotCrotasEnd,c.Pn.SlotRootOfNightmares,c.Pn.SlotKingsFall,c.Pn.SlotVowOfTheDisciple,c.Pn.SlotVaultOfGlass,c.Pn.SlotDeepStoneCrypt,c.Pn.SlotGardenOfSalvation,c.Pn.SlotLastWish,c.Pn.SlotArtifice,c.Pn.PerkEchoesOfGlory,c.Pn.PerkIronBanner,c.Pn.SlotNightmare],this.ngUnsubscribe=new R.xQ}runPossibilityCheck(){var e=this;return(0,y.Z)(function*(){if(e.configAssumeLegendaryIsArtifice||e.slot==T.y.ArmorSlotClass&&e.configAssumeClassItemIsArtifice)e.isPossible=!0;else{let a=0;e.armorPerkLock&&e.armorPerk!=c.Pn.None?e.fixedExoticInThisSlot?e.armorPerk==c.Pn.SlotArtifice&&e.configAssumeExoticIsArtifice?a+=1:e.configSelectedExotic.forEach(function(){var s=(0,y.Z)(function*(r){var d=yield e.db.inventoryArmor.where("clazz").equals(e.configSelectedClass).and(p=>p.perk==e.armorPerk).and(p=>p.hash==r).and(p=>1==p.isExotic).count();a+=d,e.isPossible=a>0,e.possible.next(e.isPossible)});return function(r){return s.apply(this,arguments)}}()):(a+=(yield e.db.inventoryArmor.where("clazz").equals(e.configSelectedClass).and(s=>0==e.configSelectedExoticSum||0==s.isExotic).and(s=>s.slot==e.slot).and(s=>s.perk==e.armorPerk).count()),e.isPossible=a>0):e.isPossible=!0}e.possible.next(e.isPossible)})()}get slotName(){switch(this.slot){case T.y.ArmorSlotHelmet:return"Helmet";case T.y.ArmorSlotGauntlet:return"Gauntlet";case T.y.ArmorSlotChest:return"Chest";case T.y.ArmorSlotLegs:return"Leg";case T.y.ArmorSlotClass:return"Class Item";default:return""}}ngOnInit(){var e=this;this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,y.Z)(function*(a){const s=a.selectedExotics.reduce((d,p)=>d+p,0);var r=e.configSelectedClass!=a.characterClass||e.configAssumeLegendaryIsArtifice!=a.assumeEveryLegendaryIsArtifice||e.configAssumeExoticIsArtifice!=a.assumeEveryExoticIsArtifice||e.configAssumeClassItemIsArtifice!=a.assumeClassItemIsArtifice||e.selection!=a.maximumModSlots[e.slot].value||e.armorPerk!=a.armorPerks[e.slot].value||e.armorPerkLock!=a.armorPerks[e.slot].fixed||e.configSelectedExoticSum!=s||e.maximumModSlots!=a.maximumModSlots[e.slot].value;e.configAssumeLegendaryIsArtifice=a.assumeEveryLegendaryIsArtifice,e.configAssumeExoticIsArtifice=a.assumeEveryExoticIsArtifice,e.configAssumeClassItemIsArtifice=a.assumeClassItemIsArtifice,e.configSelectedClass=a.characterClass,e.selection=a.maximumModSlots[e.slot].value,e.armorPerk=a.armorPerks[e.slot].value,e.armorPerkLock=a.armorPerks[e.slot].fixed,e.maximumModSlots=a.maximumModSlots[e.slot].value,e.configSelectedExoticSum=s,e.configSelectedExotic=a.selectedExotics,e.fixedExoticInThisSlot=(yield e.inventory.getExoticsForClass(a.characterClass)).filter(d=>a.selectedExotics.indexOf(d.item.hash)>-1).map(d=>d.item.slot).indexOf(e.slot)>-1,r&&(yield e.runPossibilityCheck())});return function(a){return o.apply(this,arguments)}}())}ngAfterViewInit(){g.N.featureFlags.enableGuardianGamesFeatures&&this.slot===T.y.ArmorSlotClass&&this.availableArmorPerks.splice(1,0,c.Pn.GuardianGamesClassItem)}toggleArmorPerkLock(){this.config.modifyConfiguration(e=>{e.armorPerks[this.slot].fixed=!e.armorPerks[this.slot].fixed})}setArmorPerk(e){this.armorPerk!=e&&this.config.modifyConfiguration(o=>{o.armorPerks[this.slot].value=e})}setValue(e){this.featureDisabled||this.maximumModSlots!=e&&(this.maximumModSlots=e,this.config.modifyConfiguration(o=>o.maximumModSlots[this.slot].value=e))}getStatIconUrl(e){var o=this;return(0,y.Z)(function*(){return(yield o.iconService.getItemCached(e))?.icon})()}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(Tt),t.Y36(pe),t.Y36(w))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-slot-limitation-selection"]],inputs:{slot:"slot"},outputs:{possible:"possible"},decls:35,vars:58,consts:[[1,"container"],[1,"energy"],[1,"energy-container",3,"mouseout"],[1,"energy-bar","blocked",3,"click","mouseover"],[1,"energy-bar",3,"click","mouseover"],[4,"ngVar"],["appearance","standard","name","fontStyle",2,"display","none"],[3,"value","class","click",4,"ngFor","ngForOf"],[1,"selector-slots"],["value","bold",3,"matMenuTriggerFor"],[3,"perk"],["disabled","",3,"disabled","matTooltip","click"],[4,"ngIf"],[1,"modslot-select-scroll-menu"],["dropdownArmorModslot","matMenu"],[4,"ngFor","ngForOf"],[1,"slot-icon-container"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M24.77 7.03c-8.15.38-14.42 7.41-14.42 15.57v16.06c0 .23.13.44.34.53l10.33 4.68c.78.35 1.66-.22 1.66-1.07V31.9c0-.39-.19-.75-.52-.97l-5.39-3.64c-.87-.52-1.43-1.5-1.34-2.61.13-1.46 1.46-2.52 2.93-2.52h4.36c.65 0 1.17.53 1.17 1.17v6.71s0 .61 1.61.61 1.61-.61 1.61-.61v-6.71c0-.65.52-1.17 1.17-1.17h4.36c1.47 0 2.8 1.06 2.93 2.52.1 1.11-.47 2.09-1.34 2.61l-5.39 3.64c-.32.22-.52.58-.52.97v10.91c0 .85.88 1.42 1.66 1.07l10.33-4.68c.21-.1.34-.3.34-.53v-16.5c.01-8.61-7.18-15.55-15.88-15.14z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M40.1 30.03c.39-.47.59-1.11.42-1.8-.18-.76-.81-1.39-1.58-1.55-.81-.17-1.54.14-2.01.68 0 0-.03.04-.05.07l-.12.15c-.47.61-1.95 2.37-3.29 2.45-1.62.1 2.51-16.14 2.51-16.14h-.01c.04-.15.07-.31.07-.48 0-.98-.79-1.77-1.77-1.77-.81 0-1.49.55-1.69 1.29h-.01s-.01.03-.01.05l-.03.15c-.24 1.21-1.68 8.2-2.81 8.89-1.24.75-1.22-13.23-1.22-13.23 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 0-.35 12.85-1.73 12.73-1.37-.12-2.47-10.67-2.47-10.67 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 .15.02.28.06.42.27 2.06 1.36 11.12-.06 11.12-1.6 0-3.68-6.35-3.68-6.35a1.62 1.62 0 0 0-3.14.56c0 .09.01.17.03.25l-.03.01s.02.07.07.19c.02.09.05.17.09.25.99 2.71 6.28 17.46 7.26 26.23.03.25.24.44.49.44H30.5a.5.5 0 0 0 .5-.45c.1-1.04.52-3.68 2.09-5.54 1.8-2.14 6.06-6.89 6.86-7.79.02-.02.03-.04.05-.06.07-.06.11-.1.1-.1z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M42.49 13.55c-1.06-1.51-4.05-5.05-9.52-6.49a.635.635 0 0 0-.78.5c-.35 2.04-1.78 8.08-6.69 8.08s-6.34-6.04-6.69-8.08a.635.635 0 0 0-.78-.5c-5.47 1.44-8.46 4.98-9.52 6.49-.24.34-.09.8.3.94 2.01.7 7.34 2.94 7.34 7.01 0 4.24-4.47 6.89-5.87 7.61-.25.13-.38.4-.33.67 1.44 7.62 7.55 13.09 8.67 14.04.11.1.25.15.4.15h12.94c.15 0 .29-.05.4-.15 1.12-.95 7.23-6.42 8.67-14.04a.624.624 0 0 0-.33-.67c-1.4-.72-5.87-3.37-5.87-7.61 0-4.08 5.33-6.32 7.34-7.01.41-.14.56-.61.32-.94z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M13 7.6h13.96c1.73 0 2.99 1.64 2.54 3.32l-5.44 20.46c-.07.28.03.57.28.72.99.62 4.64 2.57 8.15 5.78.12.11 2.92-.03 3.09-.01 2.31.2 3.97-.08 5.05 4.7.09.42-.21.82-.64.82H11.82c-.34 0-.63-.26-.66-.61-.15-1.82-.4-7.23 1.74-9.32a.62.62 0 0 0 .2-.6c-.39-1.74-2.09-9.83-2.74-22.48-.07-1.5 1.12-2.78 2.64-2.78z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M43.12 7.12c-4.13 2.33-17.62 1.9-17.62 1.9s-13.49.43-17.62-1.9c-.37-.21-.85-.03-.94.39-.36 1.49-.87 4.42.09 5.86.09.13.22.21.38.25 1.23.3 7.36 1.65 18.09 1.65s16.86-1.35 18.09-1.65c.15-.04.29-.12.38-.25.96-1.44.45-4.37.1-5.86-.1-.42-.58-.6-.95-.39zM9.27 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.73c-1.93-.22-3.45-.45-4.55-.65v13.26zM16.3 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.24c-1.66-.06-3.18-.16-4.55-.27V34.8zM37.18 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.08c-1.09.2-2.61.44-4.55.65v12.61zM30.15 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.97c-1.36.11-2.88.21-4.55.27V34.8zM23.23 16.31v25.31s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.31c-.74.01-1.49.02-2.27.02-.78.01-1.54 0-2.27-.02z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],[1,"mod-info"],[1,"mod-icon","mod-major",3,"src"],[1,"mod-icon","mod-minor",3,"src"],["viewBox","0 0 100 100",1,"mod-number","mod-major"],["font-size","25px","text-anchor","end","x","87","y","30"],["viewBox","0 0 100 100",1,"mod-number","mod-minor"],[1,"overlay"],[3,"value","click"],["mat-menu-item","",3,"click"],[1,"menuArmorIcon",3,"perk"],[1,"menuArmorText"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M24.77 7.03c-8.15.38-14.42 7.41-14.42 15.57v16.06c0 .23.13.44.34.53l10.33 4.68c.78.35 1.66-.22 1.66-1.07V31.9c0-.39-.19-.75-.52-.97l-5.39-3.64c-.87-.52-1.43-1.5-1.34-2.61.13-1.46 1.46-2.52 2.93-2.52h4.36c.65 0 1.17.53 1.17 1.17v6.71s0 .61 1.61.61 1.61-.61 1.61-.61v-6.71c0-.65.52-1.17 1.17-1.17h4.36c1.47 0 2.8 1.06 2.93 2.52.1 1.11-.47 2.09-1.34 2.61l-5.39 3.64c-.32.22-.52.58-.52.97v10.91c0 .85.88 1.42 1.66 1.07l10.33-4.68c.21-.1.34-.3.34-.53v-16.5c.01-8.61-7.18-15.55-15.88-15.14z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["tooltip","matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M40.1 30.03c.39-.47.59-1.11.42-1.8-.18-.76-.81-1.39-1.58-1.55-.81-.17-1.54.14-2.01.68 0 0-.03.04-.05.07l-.12.15c-.47.61-1.95 2.37-3.29 2.45-1.62.1 2.51-16.14 2.51-16.14h-.01c.04-.15.07-.31.07-.48 0-.98-.79-1.77-1.77-1.77-.81 0-1.49.55-1.69 1.29h-.01s-.01.03-.01.05l-.03.15c-.24 1.21-1.68 8.2-2.81 8.89-1.24.75-1.22-13.23-1.22-13.23 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 0-.35 12.85-1.73 12.73-1.37-.12-2.47-10.67-2.47-10.67 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 .15.02.28.06.42.27 2.06 1.36 11.12-.06 11.12-1.6 0-3.68-6.35-3.68-6.35a1.62 1.62 0 0 0-3.14.56c0 .09.01.17.03.25l-.03.01s.02.07.07.19c.02.09.05.17.09.25.99 2.71 6.28 17.46 7.26 26.23.03.25.24.44.49.44H30.5a.5.5 0 0 0 .5-.45c.1-1.04.52-3.68 2.09-5.54 1.8-2.14 6.06-6.89 6.86-7.79.02-.02.03-.04.05-.06.07-.06.11-.1.1-.1z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M42.49 13.55c-1.06-1.51-4.05-5.05-9.52-6.49a.635.635 0 0 0-.78.5c-.35 2.04-1.78 8.08-6.69 8.08s-6.34-6.04-6.69-8.08a.635.635 0 0 0-.78-.5c-5.47 1.44-8.46 4.98-9.52 6.49-.24.34-.09.8.3.94 2.01.7 7.34 2.94 7.34 7.01 0 4.24-4.47 6.89-5.87 7.61-.25.13-.38.4-.33.67 1.44 7.62 7.55 13.09 8.67 14.04.11.1.25.15.4.15h12.94c.15 0 .29-.05.4-.15 1.12-.95 7.23-6.42 8.67-14.04a.624.624 0 0 0-.33-.67c-1.4-.72-5.87-3.37-5.87-7.61 0-4.08 5.33-6.32 7.34-7.01.41-.14.56-.61.32-.94z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M13 7.6h13.96c1.73 0 2.99 1.64 2.54 3.32l-5.44 20.46c-.07.28.03.57.28.72.99.62 4.64 2.57 8.15 5.78.12.11 2.92-.03 3.09-.01 2.31.2 3.97-.08 5.05 4.7.09.42-.21.82-.64.82H11.82c-.34 0-.63-.26-.66-.61-.15-1.82-.4-7.23 1.74-9.32a.62.62 0 0 0 .2-.6c-.39-1.74-2.09-9.83-2.74-22.48-.07-1.5 1.12-2.78 2.64-2.78z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M43.12 7.12c-4.13 2.33-17.62 1.9-17.62 1.9s-13.49.43-17.62-1.9c-.37-.21-.85-.03-.94.39-.36 1.49-.87 4.42.09 5.86.09.13.22.21.38.25 1.23.3 7.36 1.65 18.09 1.65s16.86-1.35 18.09-1.65c.15-.04.29-.12.38-.25.96-1.44.45-4.37.1-5.86-.1-.42-.58-.6-.95-.39zM9.27 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.73c-1.93-.22-3.45-.45-4.55-.65v13.26zM16.3 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.24c-1.66-.06-3.18-.16-4.55-.27V34.8zM37.18 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.08c-1.09.2-2.61.44-4.55.65v12.61zM30.15 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.97c-1.36.11-2.88.21-4.55.27V34.8zM23.23 16.31v25.31s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.31c-.74.01-1.49.02-2.27.02-.78.01-1.54 0-2.27-.02z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"]],template:function(e,o){if(1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"div",2),t.NdJ("mouseout",function(){return o.hoveredSlot=-1}),t.TgZ(3,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(4,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(5,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(6,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(7,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(8,"div",4),t.NdJ("click",function(){return o.setValue(4)})("mouseover",function(){return o.hoveredSlot=1}),t.qZA(),t.TgZ(9,"div",4),t.NdJ("click",function(){return o.setValue(3)})("mouseover",function(){return o.hoveredSlot=2}),t.qZA(),t.TgZ(10,"div",4),t.NdJ("click",function(){return o.setValue(2)})("mouseover",function(){return o.hoveredSlot=3}),t.qZA(),t.TgZ(11,"div",4),t.NdJ("click",function(){return o.setValue(1)})("mouseover",function(){return o.hoveredSlot=4}),t.qZA(),t.TgZ(12,"div",4),t.NdJ("click",function(){return o.setValue(0)})("mouseover",function(){return o.hoveredSlot=5}),t.qZA()(),t._UZ(13,"br"),t.YNc(14,Ks,61,36,"div",5),t.qZA(),t.TgZ(15,"mat-button-toggle-group",6),t.YNc(16,$s,2,5,"mat-button-toggle",7),t.qZA(),t.TgZ(17,"div",8)(18,"mat-button-toggle-group")(19,"mat-button-toggle",9),t._UZ(20,"app-armor-perk-icon",10),t.TgZ(21,"mat-icon"),t._uU(22,"arrow_drop_down"),t.qZA()(),t.TgZ(23,"mat-button-toggle",11),t.NdJ("click",function(s){return o.toggleArmorPerkLock(),s.stopPropagation()}),t.YNc(24,Xs,2,0,"mat-icon",12),t.YNc(25,tr,2,0,"mat-icon",12),t.qZA()(),t.TgZ(26,"mat-menu",13,14),t.YNc(28,er,5,4,"ng-container",15),t.qZA()(),t.TgZ(29,"span",16),t.YNc(30,nr,2,1,"img",17),t.YNc(31,or,2,1,"img",18),t.YNc(32,ir,2,1,"img",19),t.YNc(33,ar,2,1,"img",20),t.YNc(34,sr,2,1,"img",21),t.qZA()()),2&e){const a=t.MAs(27);t.ekj("disabled",o.disabled),t.xp6(8),t.ekj("active",5-o.maximumModSlots>=1)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<1)("hovered",o.hoveredSlot>=1)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots>=2)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<2)("hovered",o.hoveredSlot>=2)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots>=3)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<3)("hovered",o.hoveredSlot>=3)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots>=4)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<4)("hovered",o.hoveredSlot>=4)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots==5)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<5)("hovered",5===o.hoveredSlot)("blocked",o.featureDisabled),t.xp6(2),t.Q6J("ngVar",o.hoveredSlot>-1?5-o.hoveredSlot:o.maximumModSlots),t.xp6(2),t.Q6J("ngForOf",o.ModRange),t.xp6(2),t.ekj("impossible",!o.isPossible),t.xp6(1),t.Q6J("matMenuTriggerFor",a),t.xp6(1),t.Q6J("perk",o.armorPerk),t.xp6(3),t.MGl("matTooltip","Force the selected perk or slot to be on a ",o.slotName,"."),t.Q6J("disabled",o.disabled),t.xp6(1),t.Q6J("ngIf",!o.armorPerkLock),t.xp6(1),t.Q6J("ngIf",o.armorPerkLock),t.xp6(3),t.Q6J("ngForOf",o.availableArmorPerks),t.xp6(2),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotHelmet),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotGauntlet),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotChest),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotLegs),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotClass)}},dependencies:[I.sg,I.O5,pt.gM,St.Hw,Kt.VK,Kt.OP,Kt.p6,Dt.A9,Dt.Yi,zt,_e],styles:[".slot-icon-container[_ngcontent-%COMP%]{float:right;position:relative}.slot-icon-container[_ngcontent-%COMP%] .slot-icon[_ngcontent-%COMP%]{height:30px;position:absolute;left:-30px;filter:invert(1) drop-shadow(1px 1px 3px rgba(0,0,0,.25))!important}.container[_ngcontent-%COMP%]{height:60px}.select-button[_ngcontent-%COMP%]{min-width:40px}.selector-element[_ngcontent-%COMP%]{position:relative;float:right;width:90px;height:70px;top:-21px}.selector-element[_ngcontent-%COMP%] .lock[_ngcontent-%COMP%]{position:absolute;bottom:2px;left:60px}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%]{float:left;width:70px;padding-left:5px}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon[_ngcontent-%COMP%]{border:rgba(0,0,0,0) solid 2px;height:26px;width:26px;margin-right:1px;margin-bottom:1px;margin-top:1px;cursor:pointer;filter:grayscale(.4)}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon[_ngcontent-%COMP%]:hover{filter:grayscale(.2)}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon.selected[_ngcontent-%COMP%]{filter:grayscale(0)}[_nghost-%COMP%] .selector-slots .mat-button-toggle{background-color:inherit}.modslot-selection[_ngcontent-%COMP%]{width:180px}.selector-slots[_ngcontent-%COMP%]{position:relative;float:right;top:-10px}.selector-slots[_ngcontent-%COMP%] .lock[_ngcontent-%COMP%]{position:absolute;bottom:2px;left:140px}.selector-slots[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%]{float:left;height:70px;width:175px;padding-left:5px}.selector-slots[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon[_ngcontent-%COMP%]{height:30px;width:30px;border:rgba(0,0,0,0) solid 2px;margin-right:1px;margin-top:-2px;cursor:pointer}.selector-slots[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:default;border:rgba(0,0,0,0) solid 2px!important}.impossible[_ngcontent-%COMP%]{background-color:#ff00004d;cursor:help}.left_line[_ngcontent-%COMP%]{pointer-events:none;height:15px;width:100%;border-left:1px solid white;border-bottom:1px solid white;position:absolute;bottom:0px;left:0}.overlay-icon-container[_ngcontent-%COMP%]{position:relative}.overlay-icon-container[_ngcontent-%COMP%] .overlay-icon[_ngcontent-%COMP%]{width:20px;position:absolute;left:7px;bottom:11px;pointer-events:none}.element-icon[_ngcontent-%COMP%]:hover{border:cornflowerblue solid 2px!important}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%]:hover{background-color:#89b2ff3d;border:#0059ff solid 2px!important}.energy-container[_ngcontent-%COMP%] .energy-bar[_ngcontent-%COMP%]{float:left;margin-right:3px;width:20px;height:10px;border:white solid 2px;cursor:pointer}.energy-container[_ngcontent-%COMP%] .energy-bar.none[_ngcontent-%COMP%]{border:indianred solid 2px}.energy-container[_ngcontent-%COMP%] .energy-bar[_ngcontent-%COMP%]:hover, .energy-container[_ngcontent-%COMP%] .hovered[_ngcontent-%COMP%]{background-color:#6e6e6e}.energy-container[_ngcontent-%COMP%] .hovered-higher[_ngcontent-%COMP%]{background-color:#0000!important}.energy-container[_ngcontent-%COMP%] .energy-bar.active[_ngcontent-%COMP%]{background-color:#fff}.energy-container[_ngcontent-%COMP%] .energy-bar.blocked[_ngcontent-%COMP%]{border:#606060 solid 2px;background-color:#6e6e6e}.mod-info[_ngcontent-%COMP%]{position:relative;float:left;height:40px;width:40px;margin-right:5px}.mod-info[_ngcontent-%COMP%] .mod-number[_ngcontent-%COMP%]{position:absolute;top:1px;bottom:1px;right:1px;left:1px;pointer-events:none;fill:#e0e0e0}.mod-info[_ngcontent-%COMP%] .mod-minor[_ngcontent-%COMP%]{display:none}.mod-info[_ngcontent-%COMP%] .overlay[_ngcontent-%COMP%]{position:absolute;top:0px;width:100%;height:100%;background:linear-gradient(to top left,rgba(0,0,0,0) 0%,rgba(0,0,0,0) calc(50% - .8px),rgb(0,0,0) 50%,rgba(0,0,0,0) calc(50% + .8px),rgba(0,0,0,0) 100%),linear-gradient(to top right,rgba(0,0,0,0) 0%,rgba(0,0,0,0) calc(50% - .8px),rgb(0,0,0) 50%,rgba(0,0,0,0) calc(50% + .8px),rgba(0,0,0,0) 100%)}.mod-info[_ngcontent-%COMP%] .mod-icon[_ngcontent-%COMP%]{width:40px;height:40px}.mod-info[_ngcontent-%COMP%] .mod-minor[_ngcontent-%COMP%]{border:rgba(0,0,0,0) solid 3px;width:34px;height:34px}.mod-info.major[_ngcontent-%COMP%] .overlay[_ngcontent-%COMP%], .mod-info.minor[_ngcontent-%COMP%] .overlay[_ngcontent-%COMP%]{display:none}.mod-info.minor[_ngcontent-%COMP%] .mod-minor[_ngcontent-%COMP%]{display:block}.mod-info.minor[_ngcontent-%COMP%] .mod-major[_ngcontent-%COMP%]{display:none}.menuArmorIcon[_ngcontent-%COMP%]{position:absolute;top:8px}.menuArmorText[_ngcontent-%COMP%]{padding-left:35px}.selected-menu[_ngcontent-%COMP%]{background-color:#89b2ff3d}.selected-menu[_ngcontent-%COMP%]:hover{background-color:#89b2ff4d} .modslot-select-scroll-menu{overflow-y:auto;max-height:250px!important}"]}),n})(),lr=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-slot-limitation-title"]],decls:5,vars:0,consts:[[1,"energy"],[1,"selector-slots"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0),t._uU(2," Energy "),t.qZA(),t.TgZ(3,"span",1),t._uU(4," Modslots "),t.qZA()())},styles:[".energy[_ngcontent-%COMP%]{border-bottom:#a1a1a1 1px solid;margin-bottom:6px}.selector-element[_ngcontent-%COMP%]{position:relative;float:right;width:90px;top:-26px}.selector-slots[_ngcontent-%COMP%]{position:relative;float:right;width:155px;top:-26px;text-align:center}"]}),n})();function cr(n,i){1&n&&(t.TgZ(0,"mat-toolbar",13),t._uU(1," Some of your chosen limitations contain no armor pieces and will yield no results.\n"),t.qZA())}function mr(n,i){1&n&&(t.TgZ(0,"mat-toolbar",13),t._uU(1," The mod cost limitation is currently disabled. Modslot filtering still works.\n"),t.qZA())}let dr=(()=>{class n{constructor(e){this.config=e,this.ArmorSlot=T.y,this.ArmorPerkOrSlot=c.Pn,this.possibilityList=[!0,!0,!0,!0,!0],this.allPossible=!0,this.disabledSlotLimitation=!g.N.featureFlags.enableModslotLimitation}updatePossibility(e,o){this.possibilityList[e]=o,this.allPossible=5==this.possibilityList.filter(a=>!!a).length}clear(){this.config.modifyConfiguration(e=>{for(let o=0;o<5;o++)e.armorPerks[o+1]={fixed:!0,value:0},e.maximumModSlots[o+1]={fixed:!0,value:5}})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-mod-selection"]],decls:129,vars:16,consts:[["color","warn","class","mat-elevation-z4 impossible-container",4,"ngIf"],[1,"container"],[3,"slot","possible"],["id","clear-container"],["color","warn","mat-stroked-button","",3,"click"],[1,"minispace"],[1,"mat-elevation-z6"],["aria-hidden","false","inline",""],["id","explanation-description"],[1,"text-highlight"],[1,"example-usecase"],[1,"modslot-legend"],[3,"perk"],["color","warn",1,"mat-elevation-z4","impossible-container"]],template:function(e,o){1&e&&(t.YNc(0,cr,2,0,"mat-toolbar",0),t.TgZ(1,"div",1),t._UZ(2,"app-slot-limitation-title"),t.TgZ(3,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(0,s)}),t.qZA(),t._UZ(4,"br"),t.TgZ(5,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(1,s)}),t.qZA(),t._UZ(6,"br"),t.TgZ(7,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(2,s)}),t.qZA(),t._UZ(8,"br"),t.TgZ(9,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(3,s)}),t.qZA(),t._UZ(10,"br"),t.TgZ(11,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(4,s)}),t.qZA()(),t.TgZ(12,"div",3)(13,"button",4),t.NdJ("click",function(){return o.clear()}),t._uU(14,"Clear the whole selection"),t.qZA()(),t._UZ(15,"div",5),t.YNc(16,mr,2,0,"mat-toolbar",0),t._UZ(17,"div",5),t.TgZ(18,"mat-accordion")(19,"mat-expansion-panel",6)(20,"mat-expansion-panel-header")(21,"mat-panel-title")(22,"mat-icon",7),t._uU(23,"info"),t.qZA(),t._uU(24," Explanation "),t.qZA(),t.TgZ(25,"mat-panel-description"),t._uU(26," Detailed instructions for this section. "),t.qZA()(),t.TgZ(27,"div",8),t._uU(28," This section allows you to further finetune the results to your requirements."),t._UZ(29,"br")(30,"div",5),t.TgZ(31,"u"),t._uU(32,"Limitation of available stat mod types"),t.qZA(),t._UZ(33,"br"),t._uU(34," First off, you are able to "),t.TgZ(35,"span",9),t._uU(36,"select the kind and amount of stat mods"),t.qZA(),t._uU(37," you want. By filling the bars you "),t.TgZ(38,"span",9),t._uU(39,"specify how many modslots are already occupied"),t.qZA(),t._uU(40," and thus the tool knows how much space it is able to use for your builds. Hover over the bars, it will show you which mods are available after you changed your selection. "),t._UZ(41,"div",5),t.TgZ(42,"div",10),t._uU(43,' Example Use Case: "On one item I can only use up to four recovery mods, no major intellect mod. One item can not hold any mods". In this scenario you would set one slot to 10 used slots, and the rest to 6. '),t.qZA(),t._UZ(44,"br"),t.TgZ(45,"u"),t._uU(46,"Filter for Elemental Affinity and Armor Perk/Slot"),t.qZA(),t._UZ(47,"br"),t._uU(48," This allows you to super-finetune your elemental and armor-perk requirements. You can change the settings for "),t.TgZ(49,"span",9),t._uU(50,"each armor slot"),t.qZA(),t._uU(51,". There are two modes per armor slot: "),t.TgZ(52,"span",9),t._uU(53,"Locked"),t.qZA(),t._uU(54," and "),t.TgZ(55,"span",9),t._uU(56,"Unlocked"),t.qZA(),t._uU(57,". Per default each entry is in the "),t.TgZ(58,"span",9),t._uU(59,"Locked"),t.qZA(),t._uU(60," mode. "),t._UZ(61,"div",5),t.TgZ(62,"span",9),t._uU(63,"Locked"),t.qZA(),t._uU(64," means that "),t.TgZ(65,"span",9),t._uU(66,"this armor slot must have"),t.qZA(),t._uU(67," the selected element or perk. "),t._UZ(68,"div",5),t.TgZ(69,"span",9),t._uU(70,"Unlocked"),t.qZA(),t._uU(71," means that the perk must exist, but "),t.TgZ(72,"span",9),t._uU(73,"the exact armor slot is irrelevant"),t.qZA(),t._uU(74,". That means that the tool can decide where it puts the desired element or perk. "),t._UZ(75,"div",5),t.TgZ(76,"div",10),t._uU(77,' Example Use Case: "The Class Item and Gauntlet '),t.TgZ(78,"span",9),t._uU(79,"must be stasis"),t.qZA(),t._uU(80,'. Oh, and I need two solar and one arc modslots, but the position does not matter". In this scenario, Class Item and Gauntlet would be '),t.TgZ(81,"span",9),t._uU(82,"Locked"),t.qZA(),t._uU(83," and the rest would be "),t.TgZ(84,"span",9),t._uU(85,"Unlocked"),t.qZA(),t._uU(86,". "),t.qZA(),t._UZ(87,"br"),t._uU(88," Legend: "),t.TgZ(89,"table",11)(90,"tr")(91,"td"),t._UZ(92,"app-armor-perk-icon",12),t.qZA(),t.TgZ(93,"td"),t._uU(94,"Vault of Glass"),t.qZA(),t.TgZ(95,"td"),t._UZ(96,"app-armor-perk-icon",12),t.qZA(),t.TgZ(97,"td"),t._uU(98,"Deep Stone Crypt"),t.qZA(),t.TgZ(99,"td"),t._UZ(100,"app-armor-perk-icon",12),t.qZA(),t.TgZ(101,"td"),t._uU(102,"Garden of Salvation"),t.qZA()(),t.TgZ(103,"tr")(104,"td"),t._UZ(105,"app-armor-perk-icon",12),t.qZA(),t.TgZ(106,"td"),t._uU(107,"Last Wish"),t.qZA(),t.TgZ(108,"td"),t._UZ(109,"app-armor-perk-icon",12),t.qZA(),t.TgZ(110,"td"),t._uU(111,"Vow of the Disciple"),t.qZA(),t.TgZ(112,"td"),t._UZ(113,"app-armor-perk-icon",12),t.qZA(),t.TgZ(114,"td"),t._uU(115,"Nightmare Modslot"),t.qZA()(),t.TgZ(116,"tr")(117,"td"),t._UZ(118,"app-armor-perk-icon",12),t.qZA(),t.TgZ(119,"td"),t._uU(120,"Artifice Modslot"),t.qZA(),t.TgZ(121,"td"),t._UZ(122,"app-armor-perk-icon",12),t.qZA(),t.TgZ(123,"td"),t._uU(124,"Iron Banner Perk"),t.qZA(),t.TgZ(125,"td"),t._UZ(126,"app-armor-perk-icon",12),t.qZA(),t.TgZ(127,"td"),t._uU(128,"Echoes of Glory Perk"),t.qZA()()()()()()),2&e&&(t.Q6J("ngIf",!o.allPossible),t.xp6(3),t.Q6J("slot",o.ArmorSlot.ArmorSlotHelmet),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotGauntlet),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotChest),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotLegs),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotClass),t.xp6(5),t.Q6J("ngIf",o.disabledSlotLimitation),t.xp6(76),t.Q6J("perk",o.ArmorPerkOrSlot.SlotVaultOfGlass),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotDeepStoneCrypt),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotGardenOfSalvation),t.xp6(5),t.Q6J("perk",o.ArmorPerkOrSlot.SlotLastWish),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotVowOfTheDisciple),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotNightmare),t.xp6(5),t.Q6J("perk",o.ArmorPerkOrSlot.SlotArtifice),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.PerkIronBanner),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.PerkEchoesOfGlory))},dependencies:[I.O5,st.lW,St.Hw,wt.Ye,ct.pp,ct.ib,ct.yz,ct.yK,ct.u4,rr,_e,lr],styles:[".container[_ngcontent-%COMP%]{margin-bottom:10px}.impossible-container[_ngcontent-%COMP%]{text-align:center;margin-right:auto;margin-left:auto;width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content;font-size:15px;line-height:20px;margin-bottom:10px}.element-icon[_ngcontent-%COMP%]{height:30px;width:30px}.element-icon.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:default;pointer-events:none}.overlay-icon-container[_ngcontent-%COMP%]{position:relative}.overlay-icon-container[_ngcontent-%COMP%] .overlay-icon[_ngcontent-%COMP%]{width:20px;position:absolute;left:5px;bottom:9px;pointer-events:none}.modslot-legend[_ngcontent-%COMP%]{border-collapse:separate;border-spacing:0 0;width:100%}.modslot-legend[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:0}#explanation-description[_ngcontent-%COMP%]{width:520px}.minispace[_ngcontent-%COMP%]{height:7px}.text-highlight[_ngcontent-%COMP%]{color:#cddcef}.example-usecase[_ngcontent-%COMP%]{font-size:small;line-height:normal}"]}),n})();function ur(n,i){if(1&n&&t._UZ(0,"img",6),2&n){const e=t.oxw();t.s9C("alt",e.exoticPerk.name),t.MGl("src","https://bungie.net/",e.exoticPerk.icon,"",t.LSH)}}function pr(n,i){1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Loading exotic perk.."),t.qZA()())}function gr(n,i){1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"No (fixed) exotic perk available."),t.qZA()())}function _r(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td")(2,"span"),t._uU(3),t.qZA()()()),2&n){const e=t.oxw();t.xp6(3),t.Oqu(e.exoticPerk.name)}}function fr(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td",7),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.hij(" ",e.exoticPerk.description," ")}}function hr(n,i){1&n&&(t.ynx(0),t._uU(1," and "),t.BQk())}function xr(n,i){if(1&n&&(t.ynx(0),t._uU(1," in your collection "),t.YNc(2,hr,2,0,"ng-container",4),t.BQk()),2&n){const e=t.oxw(2);t.xp6(2),t.Q6J("ngIf",e.vendor)}}function yr(n,i){1&n&&(t.ynx(0),t._uU(1,"available at a vendor"),t.BQk())}function Cr(n,i){if(1&n&&(t.TgZ(0,"tr",8)(1,"td",7),t._uU(2," This exotic is not in your inventory but it is "),t.YNc(3,xr,3,1,"ng-container",4),t.YNc(4,yr,2,0,"ng-container",4),t._uU(5,". You can still generate a loadout with this exotic, but you will have to grab it by yourself. "),t.qZA()()),2&n){const e=t.oxw();t.xp6(3),t.Q6J("ngIf",e.collection),t.xp6(1),t.Q6J("ngIf",e.vendor)}}let Tr=(()=>{class n{constructor(e,o){this.inv=e,this.iconService=o,this.vendor=!1,this.collection=!1,this.exoticPerkNotThere=!1}ngOnInit(){var e=this;return(0,y.Z)(function*(){e.exoticPerk=yield e.iconService.getItemCached(e.armor?.exoticPerkHash??0),e.exoticPerkNotThere=null==e.exoticPerk})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Tt),t.Y36(pe))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-exotic-perk-tooltip"]],inputs:{armor:"armor",vendor:"vendor",collection:"collection"},decls:13,vars:7,consts:[[1,"tooltip-container"],["rowspan","2",1,"perk-icon-col"],["class","perk-icon",3,"alt","src",4,"ngIf"],[1,"exotic-name"],[4,"ngIf"],["class","collection-roll-info",4,"ngIf"],[1,"perk-icon",3,"alt","src"],["colspan","2"],[1,"collection-roll-info"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t.YNc(5,ur,1,2,"img",2),t.qZA(),t.TgZ(6,"td",3),t._uU(7),t.qZA()(),t.YNc(8,pr,3,0,"tr",4),t.YNc(9,gr,3,0,"tr",4),t.YNc(10,_r,4,1,"tr",4),t.YNc(11,fr,3,1,"tr",4),t.YNc(12,Cr,6,2,"tr",5),t.qZA()()()),2&e&&(t.xp6(5),t.Q6J("ngIf",o.exoticPerk),t.xp6(2),t.Oqu(null==o.armor?null:o.armor.name),t.xp6(1),t.Q6J("ngIf",!o.exoticPerk&&!o.exoticPerkNotThere),t.xp6(1),t.Q6J("ngIf",!o.exoticPerk&&o.exoticPerkNotThere),t.xp6(1),t.Q6J("ngIf",o.exoticPerk),t.xp6(1),t.Q6J("ngIf",o.exoticPerk),t.xp6(1),t.Q6J("ngIf",o.collection||o.vendor))},dependencies:[I.O5],styles:["[_nghost-%COMP%]{width:350px}.tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.perk-icon[_ngcontent-%COMP%]{width:50px;height:50px}.perk-icon-col[_ngcontent-%COMP%]{width:55px}.exotic-name[_ngcontent-%COMP%]{color:#eedb9e}.collection-roll-info[_ngcontent-%COMP%]{color:#5cc3ec;font-size:12px;margin-top:5px}"]}),n})(),vr=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a,this.showToolTip=!0,this.exoticTooltipInVendor=!1,this.exoticTooltipInCollection=!1}ngOnInit(){if(!this.showToolTip)return;const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){if(this._overlayRef&&!this._overlayRef.hasAttached()){const e=this._overlayRef.attach(new re.C5(Tr));e.instance.collection=this.exoticTooltipInCollection,e.instance.vendor=this.exoticTooltipInVendor,e.instance.armor=this.exoticTooltip}}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Jt.aV),t.Y36(Jt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","exoticTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{showToolTip:"showToolTip",exoticTooltip:"exoticTooltip",exoticTooltipInVendor:"exoticTooltipInVendor",exoticTooltipInCollection:"exoticTooltipInCollection",contentTemplate:"contentTemplate"}}),n})();function br(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"img",7,8),t.NdJ("click",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.selectExotic(-2,a))}),t.qZA()}if(2&n){const e=t.oxw(2);t.Gre("exoticIcon ",e.selectedExotics.indexOf(-2)>-1?"selected":"","")}}function Ar(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"img",9,8),t.NdJ("click",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.selectExotic(-1,a))}),t.qZA()}if(2&n){const e=t.oxw(2);t.Gre("exoticIcon ",e.selectedExotics.indexOf(-1)>-1?"selected":"","")}}function wr(n,i){if(1&n&&t._UZ(0,"img",14),2&n){const e=t.oxw().$implicit;t.MGl("src","https://www.bungie.net/",e.item.watermarkIcon,"",t.LSH)}}function Zr(n,i){if(1&n&&t._UZ(0,"div",15),2&n){const e=t.oxw().$implicit,o=t.oxw(2);t.ekj("vendor-item",o.includeVendorRolls&&e.inVendor)("collection-item",o.includeCollectionRolls&&e.inCollection)}}function Ir(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"span",10)(1,"img",11),t.NdJ("click",function(a){const r=t.CHM(e).$implicit,d=t.oxw(2);return t.KtG((r.inInventory||d.includeCollectionRolls&&r.inCollection)&&d.selectExotic(r.item.hash,a))}),t.qZA(),t.YNc(2,wr,1,1,"img",12),t.YNc(3,Zr,1,4,"div",13),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Gre("exoticIcon ",o.selectedExotics.indexOf(e.item.hash)>-1?"selected":"",""),t.ekj("vendor-item",!e.inInventory&&o.includeVendorRolls&&e.inVendor)("collection-item",!e.inInventory&&o.includeCollectionRolls&&e.inCollection)("disabled",!(e.inInventory||o.includeCollectionRolls&&e.inCollection||o.includeVendorRolls&&e.inVendor)),t.MGl("src","https://www.bungie.net/",e.item.icon,"",t.LSH),t.Q6J("exoticTooltip",e.item)("exoticTooltipInVendor",!e.inInventory&&o.includeVendorRolls&&e.inVendor)("exoticTooltipInCollection",!e.inInventory&&o.includeCollectionRolls&&e.inCollection),t.xp6(1),t.Q6J("ngIf",e.item.watermarkIcon),t.xp6(1),t.Q6J("ngIf",!e.inInventory)}}function Sr(n,i){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,br,2,3,"img",4),t.YNc(2,Ar,2,3,"img",5),t.YNc(3,Ir,4,15,"span",6),t.qZA()),2&n){const e=i.$implicit,o=i.index;t.Q6J("@listAnimation",e.length),t.xp6(1),t.Q6J("ngIf",0===o),t.xp6(1),t.Q6J("ngIf",0===o),t.xp6(1),t.Q6J("ngForOf",e)}}function Mr(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",16),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.refreshAll())}),t._uU(1," Manually refresh manifest and inventory "),t.qZA()}}const Or=(0,yt.X$)("listAnimation",[(0,yt.eR)("* <=> *",[(0,yt.IO)(":enter",[(0,yt.oB)({opacity:0}),(0,yt.EY)("30ms",(0,yt.jt)("350ms ease-out",(0,yt.oB)({opacity:1})))],{optional:!0})])]);let kr=(()=>{class n{constructor(e,o){this.inventory=e,this.config=o,this.selectedExotics=[],this.includeCollectionRolls=!1,this.includeVendorRolls=!1,this.ignoreSunsetArmor=!1,this.ignoreExistingExoticArtificeSlots=!1,this.allowBlueArmorPieces=!1,this.currentClass=0,this.exotics=[],this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,y.Z)(function*(a){(a.characterClass!=e.currentClass||0==e.exotics.length)&&(e.currentClass=a.characterClass,yield e.updateExoticsForClass()),e.includeCollectionRolls=a.includeCollectionRolls,e.includeVendorRolls=a.includeVendorRolls,e.selectedExotics=a.selectedExotics,e.ignoreSunsetArmor=a.ignoreSunsetArmor,e.allowBlueArmorPieces=a.allowBlueArmorPieces,e.ignoreExistingExoticArtificeSlots=a.ignoreExistingExoticArtificeSlots});return function(a){return o.apply(this,arguments)}}()),this.inventory.manifest.pipe((0,J.b)(10),(0,Ct.R)(this.ngUnsubscribe)).subscribe((0,y.Z)(function*(){yield e.updateExoticsForClass()})),this.inventory.inventory.pipe((0,J.b)(10),(0,Ct.R)(this.ngUnsubscribe)).subscribe((0,y.Z)(function*(){yield e.updateExoticsForClass()}))}updateExoticsForClass(){var e=this;return(0,y.Z)(function*(){const o=yield e.inventory.getExoticsForClass(e.currentClass);function a(s){var r={};return s.filter(function(d){var p=d.item.hash;return!r.hasOwnProperty(p)&&(r[p]=!0)})}e.exotics=[a(o.filter(s=>s.item.slot==T.y.ArmorSlotHelmet)),a(o.filter(s=>s.item.slot==T.y.ArmorSlotGauntlet)),a(o.filter(s=>s.item.slot==T.y.ArmorSlotChest)),a(o.filter(s=>s.item.slot==T.y.ArmorSlotLegs)),a(o.filter(s=>s.item.slot==T.y.ArmorSlotClass))]})()}setAllowCollectionRolls(e){this.config.modifyConfiguration(o=>{o.includeCollectionRolls=e})}setAllowVendorItems(e){this.config.modifyConfiguration(o=>{o.includeVendorRolls=e})}setAllowBlueArmorPieces(e){this.config.modifyConfiguration(o=>{o.allowBlueArmorPieces=e})}setIgnoreSunsetArmor(e){this.config.modifyConfiguration(o=>{o.ignoreSunsetArmor=e})}setIgnoreExistingExoticArtificeSlots(e){this.config.modifyConfiguration(o=>{o.ignoreExistingExoticArtificeSlots=e})}selectExotic(e,o){const a=this.selectedExotics.indexOf(e);a>-1?this.selectedExotics.splice(a,1):e==D.Io?this.selectedExotics=[D.Io]:(0==this.selectedExotics.length||!o.shiftKey)&&(this.selectedExotics=[e]),this.config.modifyConfiguration(s=>{s.selectedExotics=this.selectedExotics})}refreshAll(){var e=this;return(0,y.Z)(function*(){yield e.inventory.refreshAll(!0,!0)})()}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Tt),t.Y36(X))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-exotic-selection"]],decls:24,vars:7,consts:[[4,"ngFor","ngForOf"],["mat-raised-button","","color","warn",3,"click",4,"ngIf"],["color","primary",3,"checked","change"],["color","warn",3,"checked","change"],["src","https://www.bungie.net/common/destiny2_content/icons/763634b78eb22168ac707500588b7333.jpg","matTooltip","Force to use ANY exotic (that is NOT a class item)",3,"class","click",4,"ngIf"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png","matTooltip","Force to use NO exotic at all",3,"class","click",4,"ngIf"],["class","container",4,"ngFor","ngForOf"],["src","https://www.bungie.net/common/destiny2_content/icons/763634b78eb22168ac707500588b7333.jpg","matTooltip","Force to use ANY exotic (that is NOT a class item)",3,"click"],["tooltip","matTooltip"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png","matTooltip","Force to use NO exotic at all",3,"click"],[1,"container"],[3,"src","exoticTooltip","exoticTooltipInVendor","exoticTooltipInCollection","click"],["class","watermarkIcon",3,"src",4,"ngIf"],["class","item-source-overlay",3,"vendor-item","collection-item",4,"ngIf"],[1,"watermarkIcon",3,"src"],[1,"item-source-overlay"],["mat-raised-button","","color","warn",3,"click"]],template:function(e,o){1&e&&(t.YNc(0,Sr,4,4,"div",0),t.TgZ(1,"div"),t.YNc(2,Mr,2,0,"button",1),t.qZA(),t.TgZ(3,"div")(4,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setAllowCollectionRolls(s.checked)}),t._uU(5," Include "),t.TgZ(6,"u"),t._uU(7,"exotic"),t.qZA(),t._uU(8," collection rolls "),t.qZA()(),t.TgZ(9,"div")(10,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setAllowVendorItems(s.checked)}),t._uU(11," Include "),t.TgZ(12,"u"),t._uU(13,"legendary and exotic"),t.qZA(),t._uU(14," vendor armor (slower) "),t.qZA()(),t.TgZ(15,"div")(16,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setAllowBlueArmorPieces(s.checked)}),t._uU(17," Include white, blue and green items "),t.qZA()(),t.TgZ(18,"div")(19,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setIgnoreSunsetArmor(!s.checked)}),t._uU(20," Include sunset armor "),t.qZA()(),t.TgZ(21,"div")(22,"mat-slide-toggle",3),t.NdJ("change",function(s){return o.setIgnoreExistingExoticArtificeSlots(s.checked)}),t._uU(23," Ignore existing artifice slots on exotics (useful for the exotic class item) "),t.qZA()()),2&e&&(t.Q6J("ngForOf",o.exotics),t.xp6(2),t.Q6J("ngIf",0===o.exotics.length||0===o.exotics[0].length),t.xp6(2),t.Q6J("checked",o.includeCollectionRolls),t.xp6(6),t.Q6J("checked",o.includeVendorRolls),t.xp6(6),t.Q6J("checked",o.allowBlueArmorPieces),t.xp6(3),t.Q6J("checked",!o.ignoreSunsetArmor),t.xp6(3),t.Q6J("checked",o.ignoreExistingExoticArtificeSlots))},dependencies:[I.sg,I.O5,st.lW,ee.Rr,pt.gM,vr],styles:[".container[_ngcontent-%COMP%]{display:inline-block;position:relative;--icon-size: 36px}.exoticIcon[_ngcontent-%COMP%]{width:36px;height:36px;margin-right:3px;border:rgba(0,0,0,0) solid 2px;cursor:pointer}.watermarkIcon[_ngcontent-%COMP%]{width:36px;height:36px;margin-left:-41px;margin-top:2px;position:absolute;pointer-events:none}.exoticIcon[_ngcontent-%COMP%]:hover{border:cornflowerblue solid 2px}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%]:hover{border:#0059ff solid 2px}[_nghost-%COMP%]{position:relative}.exoticText[_ngcontent-%COMP%]{position:absolute;text-shadow:0 0 6px #000000;background:rgba(33,33,33,.51);color:#f5f5f5;bottom:4px;right:5px}.disabled[_ngcontent-%COMP%]{filter:grayscale(1) contrast(.6)}.disabled[_ngcontent-%COMP%]:hover{cursor:default}.item-source-overlay[_ngcontent-%COMP%]{margin:2px}.item-source-overlay[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:0;pointer-events:none;border-top:calc(var(--icon-size) / 2) solid transparent;border-right:calc(var(--icon-size) / 2) solid transparent}.item-source-overlay.vendor-item[_ngcontent-%COMP%]{border-top-color:#00f}.item-source-overlay.collection-item[_ngcontent-%COMP%]{border-top-color:#90ee90}"],data:{animation:[Or]}}),n})(),Er=(()=>{class n{constructor(e,o,a){var s=this;this.auth=e,this.membership=o,this.inventory=a,this.characters=[],this.loadCachedData(),this.auth.logoutEvent.subscribe(r=>this.clearCachedData()),this.inventory.inventory.subscribe((0,y.Z)(function*(){yield s.updateCharacterData()}))}clearCachedData(){this.characters=[],localStorage.removeItem("cachedCharacters")}loadCachedData(){let e=localStorage.getItem("cachedCharacters")||"[]";this.characters=JSON.parse(e)}updateCharacterData(){var e=this;return(0,y.Z)(function*(){e.characters=yield e.membership.getCharacters(),localStorage.setItem("cachedCharacters",JSON.stringify(e.characters))})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(Ut),t.LFG(Tt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function Ur(n,i){1&n&&(t.TgZ(0,"div",11),t._uU(1," Loading characters.. "),t.qZA())}function Dr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Titan"),t.qZA())}function Pr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Hunter"),t.qZA())}function Rr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Warlock"),t.qZA())}function Nr(n,i){if(1&n&&(t.TgZ(0,"div"),t._UZ(1,"img",14),t.TgZ(2,"span",15),t._uU(3),t.qZA()()),2&n){const e=t.oxw().$implicit,o=t.oxw();t.xp6(3),t.hij("\xd7",o.itemCounts[e.clazz],"")}}function qr(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",12),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.selectClass(s.clazz))}),t.TgZ(1,"div",13),t.YNc(2,Dr,2,0,"span",3),t.YNc(3,Pr,2,0,"span",3),t.YNc(4,Rr,2,0,"span",3),t.qZA(),t.YNc(5,Nr,4,1,"div",3),t.qZA()}if(2&n){const e=i.$implicit,o=i.index,a=t.oxw();t.Udp("background-image","url(https://bungie.net/"+e.emblemUrl+")"),t.ekj("selected",a.selectedClass===e.clazz),t.xp6(2),t.Q6J("ngIf",0===e.clazz),t.xp6(1),t.Q6J("ngIf",1===e.clazz),t.xp6(1),t.Q6J("ngIf",2===e.clazz),t.xp6(1),t.Q6J("ngIf",!!a.itemCounts[o])}}function Fr(n,i){if(1&n&&(t.TgZ(0,"div")(1,"span",16),t._UZ(2,"img",17),t._uU(3),t.ALo(4,"number"),t.qZA(),t.TgZ(5,"span",16),t._UZ(6,"img",18),t._uU(7),t.ALo(8,"number"),t.qZA(),t.TgZ(9,"span",16),t._UZ(10,"img",19),t._uU(11),t.ALo(12,"number"),t.qZA(),t.TgZ(13,"span",16),t._UZ(14,"img",20),t._uU(15),t.ALo(16,"number"),t.qZA(),t.TgZ(17,"span",16),t._UZ(18,"img",21),t._uU(19),t.ALo(20,"number"),t.qZA()()),2&n){const e=t.oxw();t.xp6(1),t.MGl("matTooltip","Exotic Cipher: ",e.storedMaterials[3467984096],""),t.xp6(2),t.hij(" ",t.xi3(4,10,e.storedMaterials[3467984096],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Ascendant Shards: ",e.storedMaterials[4257549985],""),t.xp6(2),t.hij(" ",t.xi3(8,13,e.storedMaterials[4257549985],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Enhancement Prisms: ",e.storedMaterials[4257549984],""),t.xp6(2),t.hij(" ",t.xi3(12,16,e.storedMaterials[4257549984],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Enhancement Cores: ",e.storedMaterials[3853748946],""),t.xp6(2),t.hij(" ",t.xi3(16,19,e.storedMaterials[3853748946],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Glimmer: ",e.storedMaterials[3159615086],""),t.xp6(2),t.hij(" ",t.xi3(20,22,e.storedMaterials[3159615086],"1.0-0")," ")}}let Jr=(()=>{class n{constructor(e,o,a){this.config=e,this.userdata=o,this.inv=a,this.itemCounts=[null,null,null],this.selectedClass=-1,this.storedMaterials=null,this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(o=>{this.selectedClass=o.characterClass;const a=-1!=this.userdata.characters.findIndex(s=>s.clazz==o.characterClass);this.userdata.characters.length>0&&!a&&this.config.modifyConfiguration(s=>{s.characterClass=this.userdata.characters[0].clazz,s.selectedExotics=[]})}),this.inv.inventory.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,y.Z)(function*(a){yield e.loadStoredMaterials(),yield e.updateItemCount()});return function(a){return o.apply(this,arguments)}}())}selectClass(e){this.config.readonlyConfigurationSnapshot.characterClass!=e&&this.config.modifyConfiguration(o=>{o.characterClass=e,o.selectedExotics=[]})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}updateItemCount(){var e=this;return(0,y.Z)(function*(){for(let o=0;o<3;o++)e.itemCounts[o]=yield e.inv.getItemCountForClass(o)})()}loadStoredMaterials(){var e=this;return(0,y.Z)(function*(){var o=JSON.parse(localStorage.getItem("stored-materials")||"{}");"3853748946"in o||(o[3853748946]=0),"4257549984"in o||(o[4257549984]=0),"4257549985"in o||(o[4257549985]=0),"3159615086"in o||(o[3159615086]=0),"3467984096"in o||(o[3467984096]=0),e.storedMaterials=o})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(Er),t.Y36(Tt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-class-selection"]],decls:22,vars:3,consts:[[1,"character-container"],["class","character-entry",4,"ngIf"],["class","character-entry","style","float: left",3,"selected","background-image","click",4,"ngFor","ngForOf"],[4,"ngIf"],["color","primary","fxShow","false","fxShow.lt-md","true","mat-flat-button","","routerLink","/help",2,"margin-left","15px"],["inline",""],["color","accent","href","https://ko-fi.com/mijago","matTooltip","You like my work? This leads you to ko-fi.com, where you can easily support me!","target","_blank"],["color","accent","href","http://discord.d2armorpicker.com","target","_blank"],[1,"crayon_logo_container"],["alt","","src","https://cdn.discordapp.com/emojis/917423317139480586.webp?size=96&quality=lossless",1,"crayon_logo"],["href","https://mijago.github.io/Crayon","target","_blank"],[1,"character-entry"],[1,"character-entry",2,"float","left",3,"click"],[1,"class-text"],["matTooltip","Amount of armor pieces for this class.","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M24.77 7.03c-8.15.38-14.42 7.41-14.42 15.57v16.06c0 .23.13.44.34.53l10.33 4.68c.78.35 1.66-.22 1.66-1.07V31.9c0-.39-.19-.75-.52-.97l-5.39-3.64c-.87-.52-1.43-1.5-1.34-2.61.13-1.46 1.46-2.52 2.93-2.52h4.36c.65 0 1.17.53 1.17 1.17v6.71s0 .61 1.61.61 1.61-.61 1.61-.61v-6.71c0-.65.52-1.17 1.17-1.17h4.36c1.47 0 2.8 1.06 2.93 2.52.1 1.11-.47 2.09-1.34 2.61l-5.39 3.64c-.32.22-.52.58-.52.97v10.91c0 .85.88 1.42 1.66 1.07l10.33-4.68c.21-.1.34-.3.34-.53v-16.5c.01-8.61-7.18-15.55-15.88-15.14z'/%3e%3c/svg%3e",1,"head-icon"],["matTooltip","Amount of armor pieces for this class.",1,"armor-text"],[1,"material-listing",3,"matTooltip"],["src","https://www.bungie.net/common/destiny2_content/icons/9970631fe1052642c268132dfc30e16b.jpg","alt","Exotic Cipher"],["src","https://www.bungie.net/common/destiny2_content/icons/0271d214fc3ec91b3def799a4b286b46.jpg","alt","Ascendant Shard"],["src","https://www.bungie.net/common/destiny2_content/icons/dea2a35badf7466d4c2c2697ce6e8d87.jpg","alt","Enhancement Prism"],["src","https://www.bungie.net/common/destiny2_content/icons/0a4eb695ed55b4e720ddc401460cc0f9.jpg","alt","Enhancement Core"],["src","https://www.bungie.net/common/destiny2_content/icons/88993eaeedad32f42072df6f77f47311.png","alt","Glimmer"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Ur,2,0,"div",1),t.YNc(2,qr,6,8,"div",2),t.qZA(),t.YNc(3,Fr,21,25,"div",3),t.TgZ(4,"a",4)(5,"mat-icon",5),t._uU(6,"help"),t.qZA(),t._uU(7," Help and Information about D2ArmorPicker\n"),t.qZA(),t.TgZ(8,"div"),t._uU(9," If you like my work, you can "),t.TgZ(10,"a",6),t._uU(11," support me here."),t.qZA(),t._uU(12," You can also "),t.TgZ(13,"a",7),t._uU(14," join my dev Discord! "),t.qZA(),t.TgZ(15,"div"),t._uU(16," Also check out my Discord-Bot "),t.TgZ(17,"div",8),t._UZ(18,"img",9),t.qZA(),t.TgZ(19,"a",10),t._uU(20,"Crayon"),t.qZA(),t._uU(21,", for all your item information needs! "),t.qZA()()),2&e&&(t.xp6(1),t.Q6J("ngIf",0===o.userdata.characters.length),t.xp6(1),t.Q6J("ngForOf",o.userdata.characters),t.xp6(1),t.Q6J("ngIf",null!==o.storedMaterials))},dependencies:[I.sg,I.O5,M.b8,st.zs,pt.gM,St.Hw,ot.yS,I.JJ],styles:[".discord-btn[_ngcontent-%COMP%]{margin-left:15px}.material-listing[_ngcontent-%COMP%]{position:relative;padding-left:22px;padding-right:10px}.material-listing[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:20px;position:absolute;top:-2px;left:0}.crayon_logo_container[_ngcontent-%COMP%]{position:relative;width:22px;display:inline-block;margin-right:3px}.crayon_logo_container[_ngcontent-%COMP%] .crayon_logo[_ngcontent-%COMP%]{position:absolute;width:22px;top:-14px} .mat-option-text{color:#fff}.character-container[_ngcontent-%COMP%]{height:50px}.character-entry[_ngcontent-%COMP%]{color:#fff;background-size:cover;background-position:left center;background-repeat:no-repeat;width:180px;height:36px;position:relative;margin-right:7px;margin-bottom:7px;border:rgba(255,255,255,0) solid 2px;opacity:.75;cursor:pointer}.character-entry[_ngcontent-%COMP%]:hover{border:rgba(255,255,255,.41) solid 2px;opacity:.98}.character-entry.selected[_ngcontent-%COMP%]{cursor:default;opacity:1;border:white solid 2px}.class-text[_ngcontent-%COMP%]{position:absolute;left:35px;top:8px;font-size:x-large;text-shadow:0 0 6px #000000}.head-icon[_ngcontent-%COMP%]{height:25px;top:6px;right:30px;position:absolute;filter:invert(1) drop-shadow(1px 1px 3px rgba(0,0,0,.25))!important}.armor-text[_ngcontent-%COMP%]{position:absolute;right:4px;top:9px;text-shadow:0 0 6px #000000;font-size:small}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}"]}),n})();var Lr=_(7580);let Yr=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-mod-description-tooltip"]],inputs:{mod:"mod"},decls:9,vars:2,consts:[[1,"tooltip-container"],[1,"exotic-name"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t._uU(5),t.qZA()(),t.TgZ(6,"tr")(7,"td"),t._uU(8),t.qZA()()()()()),2&e&&(t.xp6(5),t.Oqu(null==o.mod?null:o.mod.name),t.xp6(3),t.Oqu(null==o.mod?null:o.mod.description))},styles:["[_nghost-%COMP%]{width:350px}.tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.exotic-name[_ngcontent-%COMP%]{color:#eedb9e}"]}),n})(),Br=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a}ngOnInit(){const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){this._overlayRef&&!this._overlayRef.hasAttached()&&(this._overlayRef.attach(new re.C5(Yr)).instance.mod=this.mod)}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Jt.aV),t.Y36(Jt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","modTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{mod:["modTooltip","mod"]}}),n})();function Vr(n,i){if(1&n){const e=t.EpF();t.ynx(0),t._UZ(1,"br"),t.TgZ(2,"mat-button-toggle-group",4)(3,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Arc))}),t._uU(4," Arc "),t.qZA(),t.TgZ(5,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Solar))}),t._uU(6," Solar "),t.qZA(),t.TgZ(7,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Void))}),t._uU(8," Void "),t.qZA(),t.TgZ(9,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Stasis))}),t._uU(10," Stasis "),t.qZA(),t.TgZ(11,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Strand))}),t._uU(12," Strand "),t.qZA(),t.TgZ(13,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Prismatic))}),t._uU(14," Prismatic "),t.qZA()(),t.BQk()}if(2&n){const e=t.oxw(2);t.xp6(2),t.Q6J("value",e.selectedElement),t.xp6(1),t.Q6J("value",e.ModifierType.Arc),t.xp6(2),t.Q6J("value",e.ModifierType.Solar),t.xp6(2),t.Q6J("value",e.ModifierType.Void),t.xp6(2),t.Q6J("value",e.ModifierType.Stasis),t.xp6(2),t.Q6J("value",e.ModifierType.Strand),t.xp6(2),t.Q6J("value",e.ModifierType.Prismatic)}}function Qr(n,i){if(1&n&&(t.TgZ(0,"h3",8),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).$implicit;t.xp6(1),t.Oqu(e.name)}}function Hr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"There are no fragments configured yet. Please be patient."),t.qZA())}function Wr(n,i){1&n&&(t.TgZ(0,"th",22),t._uU(1,"Name"),t.qZA())}function jr(n,i){if(1&n&&(t.TgZ(0,"td",23)(1,"mat-slide-toggle",24),t._UZ(2,"app-item-icon",25),t._uU(3),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw(4);t.Q6J("modTooltip",e),t.xp6(1),t.Q6J("checked",o.selectedMods.indexOf(e.id)>-1),t.xp6(1),t.Q6J("itemHash",e.hash),t.xp6(1),t.hij(" ",e.name," ")}}function Gr(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",0))}function zr(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function Kr(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function $r(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,zr,2,1,"span",29),t.YNc(2,Kr,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function Xr(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,$r,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,0))}}function tl(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",1))}function el(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function nl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function ol(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,el,2,1,"span",29),t.YNc(2,nl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function il(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,ol,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,1))}}function al(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",2))}function sl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function rl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function ll(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,sl,2,1,"span",29),t.YNc(2,rl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function cl(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,ll,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,2))}}function ml(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",3))}function dl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function ul(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function pl(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,dl,2,1,"span",29),t.YNc(2,ul,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function gl(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,pl,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,3))}}function _l(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",4))}function fl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function hl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function xl(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,fl,2,1,"span",29),t.YNc(2,hl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function yl(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,xl,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,4))}}function Cl(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",5))}function Tl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function vl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function bl(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Tl,2,1,"span",29),t.YNc(2,vl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function Al(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,bl,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,5))}}function wl(n,i){1&n&&t._UZ(0,"tr",33)}function Zl(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr",34),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw(4);return t.KtG(r.handleRowClick(s))}),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw(4);t.ekj("selected",o.selectedMods.indexOf(e.id)>-1)}}function Il(n,i){if(1&n&&(t.TgZ(0,"table",9),t.ynx(1,10),t.YNc(2,Wr,2,0,"th",11),t.YNc(3,jr,4,4,"td",12),t.BQk(),t.ynx(4,13),t.YNc(5,Gr,2,1,"th",11),t.YNc(6,Xr,2,1,"td",14),t.BQk(),t.ynx(7,15),t.YNc(8,tl,2,1,"th",11),t.YNc(9,il,2,1,"td",14),t.BQk(),t.ynx(10,16),t.YNc(11,al,2,1,"th",11),t.YNc(12,cl,2,1,"td",14),t.BQk(),t.ynx(13,17),t.YNc(14,ml,2,1,"th",11),t.YNc(15,gl,2,1,"td",14),t.BQk(),t.ynx(16,18),t.YNc(17,_l,2,1,"th",11),t.YNc(18,yl,2,1,"td",14),t.BQk(),t.ynx(19,19),t.YNc(20,Cl,2,1,"th",11),t.YNc(21,Al,2,1,"td",14),t.BQk(),t.YNc(22,wl,1,0,"tr",20),t.YNc(23,Zl,1,2,"tr",21),t.qZA()),2&n){const e=t.oxw(2).$implicit,o=t.oxw();t.Q6J("dataSource",e.data),t.xp6(22),t.Q6J("matHeaderRowDef",o.displayedColumns),t.xp6(1),t.Q6J("matRowDefColumns",o.displayedColumns)}}function Sl(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Qr,2,1,"h3",6),t.YNc(2,Hr,2,0,"span",3),t.YNc(3,Il,24,3,"table",7),t.BQk()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngIf",!e.group),t.xp6(1),t.Q6J("ngIf",0===e.data.length),t.xp6(1),t.Q6J("ngIf",e.data.length>0)}}function Ml(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Vr,15,7,"ng-container",3),t.YNc(2,Sl,4,3,"ng-container",3),t.qZA()),2&n){const e=i.$implicit,o=i.index,a=t.oxw();t.xp6(1),t.Q6J("ngIf",0===o),t.xp6(1),t.Q6J("ngIf",!e.group||e.type===a.selectedElement)}}let Ol=(()=>{class n{constructor(e){this.config=e,this.ModifierType=k.O,this.ModOrAbility=Lr.U,this.displayedColumns=["name","mobility","resilience","recovery","discipline","intellect","strength"],this.selectedClass=3,this.selectedMods=[],this.selectedElement=k.O.Solar,this.ngUnsubscribe=new R.xQ;const o=Object.values(N.F).sort((a,s)=>a.name.toLowerCase()s.name.toLowerCase()?1:0);this.data=[{name:"Stasis Fragments",data:o.filter(a=>a.type==k.O.Stasis),group:!0,type:k.O.Stasis},{name:"Void Fragments",data:o.filter(a=>a.type==k.O.Void),group:!0,type:k.O.Void},{name:"Solar Fragments",data:o.filter(a=>a.type==k.O.Solar),group:!0,type:k.O.Solar},{name:"Arc Fragments",data:o.filter(a=>a.type==k.O.Arc),group:!0,type:k.O.Arc},{name:"Strand Fragments",data:o.filter(a=>a.type==k.O.Strand),group:!0,type:k.O.Strand},{name:"Prismatic Fragments",data:o.filter(a=>a.type==k.O.Prismatic),group:!0,type:k.O.Prismatic}],this.dataSource=o}ngOnInit(){this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(e=>{this.selectedMods=e.enabledMods,this.selectedClass=e.characterClass,this.selectedElement=e.selectedModElement})}getModifierTextForValue(e,o){return e.filter(a=>a.stat==o||a.stat==c.AR.ClassAbilityRegenerationStat&&(0==this.selectedClass&&o==c.WB.Resilience||1==this.selectedClass&&o==c.WB.Mobility||2==this.selectedClass&&o==c.WB.Recovery)).reduce((a,s)=>a+s.value,0)}handleRowClick(e){this.config.modifyConfiguration(o=>{const a=o.enabledMods.indexOf(e.id);a>-1?o.enabledMods.splice(a,1):o.enabledMods.push(e.id)})}clear(){this.config.modifyConfiguration(e=>{e.enabledMods=[]})}setElement(e){this.selectedElement!=e&&this.config.modifyConfiguration(o=>{const a=o.enabledMods.filter(s=>N.F[s].type!=k.O.CombatStyleMod&&N.F[s].type!=e);o.selectedModElement=e;for(let s of a){const r=o.enabledMods.indexOf(s);o.enabledMods.splice(r,1)}})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-mods-selection"]],features:[t._Bn([{provide:ee.HT,useValue:{disableToggleValue:!1,disableDragValue:!0}}])],decls:4,vars:1,consts:[[4,"ngFor","ngForOf"],["id","clear-container"],["color","warn","mat-stroked-button","",3,"click"],[4,"ngIf"],[3,"value"],[3,"value","click"],["class","stat-part-title",4,"ngIf"],["mat-table","",3,"dataSource",4,"ngIf"],[1,"stat-part-title"],["mat-table","",3,"dataSource"],["matColumnDef","name"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",3,"modTooltip",4,"matCellDef"],["matColumnDef","mobility"],["mat-cell","",4,"matCellDef"],["matColumnDef","resilience"],["matColumnDef","recovery"],["matColumnDef","discipline"],["matColumnDef","intellect"],["matColumnDef","strength"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",3,"selected","click",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell","",3,"modTooltip"],["color","primary","disabled","",2,"cursor","pointer !important",3,"checked"],[3,"itemHash"],[3,"stat"],["mat-cell",""],[4,"ngVar"],["class","stat-positive",4,"ngIf"],["class","stat-negative",4,"ngIf"],[1,"stat-positive"],[1,"stat-negative"],["mat-header-row",""],["mat-row","",3,"click"]],template:function(e,o){1&e&&(t.YNc(0,Ml,3,2,"span",0),t.TgZ(1,"div",1)(2,"button",2),t.NdJ("click",function(){return o.clear()}),t._uU(3,"Clear the whole selection"),t.qZA()()),2&e&&t.Q6J("ngForOf",o.data)},dependencies:[I.sg,I.O5,st.lW,ee.Rr,G.BZ,G.fO,G.as,G.w1,G.Dz,G.nj,G.ge,G.ev,G.XQ,G.Gk,Dt.A9,Dt.Yi,fe,zt,ge,Br],styles:[".mat-slide-toggle.mat-disabled[_ngcontent-%COMP%]{opacity:1}.stat-part-title[_ngcontent-%COMP%]{margin-top:10px;margin-bottom:5px}.modTable[_ngcontent-%COMP%]{width:100%}.mat-header-row[_ngcontent-%COMP%], .mat-row[_ngcontent-%COMP%]{height:30px}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-resilience[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-discipline[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%], .mat-column-strength[_ngcontent-%COMP%], .mat-column-cost[_ngcontent-%COMP%]{min-width:40px;text-align:center}.mat-row[_ngcontent-%COMP%]:hover{background-color:#494949}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%]{background-color:#464646}.mat-column-name[_ngcontent-%COMP%]{padding-right:4px;border-right:1px solid currentColor;min-width:150px}.mat-column-name[_ngcontent-%COMP%] app-item-icon[_ngcontent-%COMP%]{float:left;margin-right:5px}.mat-row[_ngcontent-%COMP%]{cursor:pointer}th.mat-header-cell[_ngcontent-%COMP%]:last-of-type, td.mat-cell[_ngcontent-%COMP%]:last-of-type, td.mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.mat-cell[_ngcontent-%COMP%]:last-of-type, .mat-header-cell[_ngcontent-%COMP%]:last-of-type, .mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.stat-negative[_ngcontent-%COMP%], .stat-positive[_ngcontent-%COMP%]{margin-right:3px}.stat-negative[_ngcontent-%COMP%]{color:#f08080}.stat-positive[_ngcontent-%COMP%]{color:#b6cbfc}.stat-display[_ngcontent-%COMP%]{width:60px;float:left;align-content:end;text-align:right}.mat-row[_ngcontent-%COMP%]:hover, .mat-row[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#494949}.mat-row.selected[_ngcontent-%COMP%]:hover, .mat-row.selected[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#89b2ff30}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-mobility[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-recovery[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-intellect[_ngcontent-%COMP%]{background-color:#89b2ff1c}.mat-column-name[_ngcontent-%COMP%]{min-width:190px}.element-icon[_ngcontent-%COMP%]{width:22px}#clear-container[_ngcontent-%COMP%]{padding-top:10px}#retrofit-table[_ngcontent-%COMP%] .rft-icon-container[_ngcontent-%COMP%]{width:22px;display:inline-block}#retrofit-table[_ngcontent-%COMP%] .rft-icon-container[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{position:relative}#retrofit-table[_ngcontent-%COMP%] .rft-icon-container[_ngcontent-%COMP%] app-stat-icon[_ngcontent-%COMP%]{position:absolute;top:-22px;left:-10px}"]}),n})();function kl(n,i){if(1&n&&(t.TgZ(0,"mat-icon",8,9),t._uU(2," help "),t.qZA()),2&n){const e=t.oxw().$implicit;t.s9C("matTooltip",e.help)}}function El(n,i){1&n&&(t.TgZ(0,"mat-icon",10,9),t._uU(2," report_problem "),t.qZA())}function Ul(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",4)(1,"mat-slide-toggle",5),t.NdJ("change",function(a){const r=t.CHM(e).$implicit;return t.KtG(r.cp(a.checked))}),t._uU(2),t.qZA(),t.YNc(3,kl,3,1,"mat-icon",6),t.YNc(4,El,3,0,"mat-icon",7),t.qZA()}if(2&n){const e=i.$implicit;t.xp6(1),t.Q6J("disabled",e.disabled)("checked",e.value),t.xp6(1),t.hij(" ",e.name," "),t.xp6(1),t.Q6J("ngIf",e.help),t.xp6(1),t.Q6J("ngIf",e.impactsResultCount)}}function Dl(n,i){if(1&n&&(t.TgZ(0,"div")(1,"span",1),t._uU(2),t.qZA(),t.YNc(3,Ul,5,5,"div",2),t._UZ(4,"div",3),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.Oqu(e),t.xp6(1),t.Q6J("ngForOf",o.fields2[e])}}let Pl=(()=>{class n{constructor(e){this.config=e,this.fields2={},this.fieldKeys=[],this.ngUnsubscribe=new R.xQ}ngOnInit(){this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(e=>{this.fields2={Events:[{name:"Enforce the usage of a Festival of the Lost Mask.",cp:o=>this.config.modifyConfiguration(a=>a.useFotlArmor=o),value:e.useFotlArmor,disabled:!1,impactsResultCount:!0,help:"Only use a FotL masks. You will not get results if you do not own the mask."}],Masterwork:[{name:"Assume all legendary items are masterworked",cp:o=>this.config.modifyConfiguration(a=>a.assumeLegendariesMasterworked=o),value:e.assumeLegendariesMasterworked,disabled:!1,impactsResultCount:!1,help:void 0},{name:"Assume all legendary class items are masterworked",cp:o=>this.config.modifyConfiguration(a=>a.assumeClassItemMasterworked=o),value:e.assumeClassItemMasterworked,disabled:!1,impactsResultCount:!1,help:"If this setting is enabled, a plain +2 is added to every stat. This means that your Class Item must be masterworked. Ignored if you select an exotic class item."},{name:"Assume all exotic items are masterworked",cp:o=>this.config.modifyConfiguration(a=>a.assumeExoticsMasterworked=o),value:e.assumeExoticsMasterworked,disabled:!1,impactsResultCount:!1,help:"If this setting is enabled, the tool will treat non-masterworked exotic armor as if it were masterworked-."},{name:"Only use already masterworked exotic items",cp:o=>this.config.modifyConfiguration(a=>a.onlyUseMasterworkedExotics=o),value:e.onlyUseMasterworkedExotics,disabled:!1,impactsResultCount:!0,help:void 0},{name:"Only use already masterworked legendary items",cp:o=>this.config.modifyConfiguration(a=>a.onlyUseMasterworkedLegendaries=o),value:e.onlyUseMasterworkedLegendaries,disabled:!1,impactsResultCount:!0,help:void 0}],"Artifice Slots":[{name:"Assume every legendary class item is an artifice armor.",cp:o=>this.config.modifyConfiguration(a=>a.assumeClassItemIsArtifice=o),value:e.assumeClassItemIsArtifice||e.assumeEveryLegendaryIsArtifice,disabled:e.assumeEveryLegendaryIsArtifice,impactsResultCount:!0,help:"This is for debugging purposes. No support if you enable this."},{name:"Assume every legendary is an artifice armor.",cp:o=>this.config.modifyConfiguration(a=>a.assumeEveryLegendaryIsArtifice=o),value:e.assumeEveryLegendaryIsArtifice,disabled:!1,impactsResultCount:!0,help:"This is for debugging purposes. No support if you enable this."},{name:"Assume every exotic has an artifice slot.",cp:o=>this.config.modifyConfiguration(a=>a.assumeEveryExoticIsArtifice=o),value:e.assumeEveryExoticIsArtifice,disabled:!1,impactsResultCount:!0,help:"Preparation for the upcoming Artifice Mod Slot for exotics."}],"Performance Optimization":[{name:"Use security features to prevent app crashes (resets on reload).",cp:o=>this.config.modifyConfiguration(a=>a.limitParsedResults=o),value:e.limitParsedResults,disabled:!1,impactsResultCount:!0,help:"Only parse the first 30,000 results. Deactivating this may crash your browser. The results will still be limited to 1,000,000 entries. Note that you will not miss any significant results by leaving this enabled."}],"Extra Columns":[{name:"Show maximum reachable tiers in the Tiers-Column instead of real Tiers.",cp:o=>this.config.modifyConfiguration(a=>a.showPotentialTierColumn=o),value:e.showPotentialTierColumn,disabled:!1,impactsResultCount:!1,help:"Shows an additional column in the table that shows how many tiers this build would have, if all stat mods were used. This is important when builds do not use all 5 stat mods."},{name:"Show the wasted stats in an extra column.",cp:o=>this.config.modifyConfiguration(a=>a.showWastedStatsColumn=o),value:e.showWastedStatsColumn,disabled:!1,impactsResultCount:!1,help:"Shows an additional column in the table that shows how many stats are wasted in a build."}],"Wasted Stats":[{name:"Try to optimize wasted stats (slower)",cp:o=>this.config.modifyConfiguration(a=>a.tryLimitWastedStats=o),value:e.tryLimitWastedStats,disabled:!1,impactsResultCount:!1,help:"The tool will try to add minor stat mods to minimize wasted stats. This only works for combinations that fulfill your desired stat combination with enough mods so at least one mod slot is still open."},{name:"Only show builds with no wasted stats",cp:o=>this.config.modifyConfiguration(a=>a.onlyShowResultsWithNoWastedStats=o),value:g.N.featureFlags.enableZeroWaste&&e.onlyShowResultsWithNoWastedStats,disabled:!g.N.featureFlags.enableZeroWaste,impactsResultCount:!0,help:"Only show builds with zero wasted stats - this means, its highly likely that you won't get any results."}],"Data-Science":[{name:"Add a constant +1 resilience to the results with non-exotic chests (resets on reload).",cp:o=>this.config.modifyConfiguration(a=>a.addConstent1Resilience=o),value:e.addConstent1Resilience,disabled:!1,impactsResultCount:!1,help:"You usually do not want to use this."},{name:"Replace the tier selection with text fields for exact stat values.",cp:o=>this.config.modifyConfiguration(a=>{if(a.allowExactStats=o,!o)for(let s of Object.values(a.minimumStatTiers))s.value=Math.floor(s.value)}),value:e.allowExactStats,disabled:!1,impactsResultCount:!0,help:"This is a beta feature. Usability and quality may vary a lot."}]},this.fieldKeys=Object.keys(this.fields2)})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-advanced-settings"]],decls:1,vars:1,consts:[[4,"ngFor","ngForOf"],[1,"category-header"],["class","adv-settings",4,"ngFor","ngForOf"],[1,"category-spacer"],[1,"adv-settings"],["color","primary",3,"disabled","checked","change"],["inline","","aria-hidden","false","aria-label","Help",3,"matTooltip",4,"ngIf"],["inline","","aria-hidden","false","aria-label","Help","class","report-problem-icon","matTooltip","This setting might impact the amount of results. It may happen that you won't get any results if you change this setting. In this case, simply switch it back to its default state.",4,"ngIf"],["inline","","aria-hidden","false","aria-label","Help",3,"matTooltip"],["tooltip","matTooltip"],["inline","","aria-hidden","false","aria-label","Help","matTooltip","This setting might impact the amount of results. It may happen that you won't get any results if you change this setting. In this case, simply switch it back to its default state.",1,"report-problem-icon"]],template:function(e,o){1&e&&t.YNc(0,Dl,5,2,"div",0),2&e&&t.Q6J("ngForOf",o.fieldKeys)},dependencies:[I.sg,I.O5,ee.Rr,pt.gM,St.Hw],styles:[".category-spacer[_ngcontent-%COMP%]{height:3px}.category-header[_ngcontent-%COMP%]{font-style:italic}.adv-settings[_ngcontent-%COMP%]{margin-left:20px}.report-problem-icon[_ngcontent-%COMP%]{color:#f08080}"]}),n})(),le=(()=>{class n{constructor(e,o){this.dialogRef=e,this.data=o}onNoClick(){this.dialogRef.close()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(kt.so),t.Y36(kt.WI))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-confirm-dialog"]],decls:10,vars:2,consts:[["mat-dialog-title",""],["mat-dialog-content",""],["mat-dialog-actions",""],["mat-button","",3,"click"],["mat-raised-button","","color","primary",3,"mat-dialog-close"]],template:function(e,o){1&e&&(t.TgZ(0,"h1",0),t._uU(1,"Confirm"),t.qZA(),t.TgZ(2,"div",1)(3,"p"),t._uU(4),t.qZA()(),t.TgZ(5,"div",2)(6,"button",3),t.NdJ("click",function(){return o.onNoClick()}),t._uU(7,"No Thanks"),t.qZA(),t.TgZ(8,"button",4),t._uU(9,"Ok"),t.qZA()()),2&e&&(t.xp6(4),t.Oqu(o.data.description),t.xp6(4),t.Q6J("mat-dialog-close",!0))},dependencies:[st.lW,kt.ZT,kt.uh,kt.xY,kt.H8]}),n})();var Rl=_(4385);function Nl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Titan"),t.qZA())}function ql(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Hunter"),t.qZA())}function Fl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Warlock"),t.qZA())}function Jl(n,i){if(1&n&&(t.TgZ(0,"mat-option",30)(1,"span"),t._uU(2,"("),t.YNc(3,Nl,2,0,"span",26),t.YNc(4,ql,2,0,"span",26),t.YNc(5,Fl,2,0,"span",26),t._uU(6,") "),t.qZA(),t.TgZ(7,"span"),t._uU(8),t.qZA()()),2&n){const e=i.$implicit;t.Q6J("value",e.name),t.xp6(3),t.Q6J("ngIf",0===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",1===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",2===e.configuration.characterClass),t.xp6(3),t.hij(" ",e.name,"")}}function Ll(n,i){1&n&&(t.TgZ(0,"th",31),t._uU(1,"Name"),t.qZA())}function Yl(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij("",e.name," ")}}function Bl(n,i){1&n&&(t.TgZ(0,"th",31),t._uU(1," Class "),t.qZA())}function Vl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Titan"),t.qZA())}function Ql(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Hunter"),t.qZA())}function Hl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Warlock"),t.qZA())}function Wl(n,i){if(1&n&&(t.TgZ(0,"td",32),t.YNc(1,Vl,2,0,"span",26),t.YNc(2,Ql,2,0,"span",26),t.YNc(3,Hl,2,0,"span",26),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",0===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",1===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",2===e.configuration.characterClass)}}function jl(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",0))}function Gl(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[0].value," ")}}function zl(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",1))}function Kl(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[1].value," ")}}function $l(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",2))}function Xl(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[2].value," ")}}function tc(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",3))}function ec(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[3].value," ")}}function nc(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",4))}function oc(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[4].value," ")}}function ic(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",5))}function ac(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[5].value," ")}}function sc(n,i){1&n&&t._UZ(0,"th",31)}function rc(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"td",32)(1,"button",34),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.delete(s.name))}),t.TgZ(2,"mat-icon"),t._uU(3,"delete_forever"),t.qZA()(),t.TgZ(4,"button",35),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.load(s.name))}),t.TgZ(5,"mat-icon"),t._uU(6,"check_circle_outline"),t.qZA()(),t.TgZ(7,"button",36),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.copySingleSettingToClipboard(s))}),t.TgZ(8,"mat-icon"),t._uU(9,"get_app"),t.qZA()()()}}function lc(n,i){1&n&&t._UZ(0,"tr",37)}function cc(n,i){1&n&&t._UZ(0,"tr",38)}function mc(n,i){if(1&n){const e=t.EpF();t.ynx(0),t._UZ(1,"br"),t.TgZ(2,"button",39),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.copyAllSettingsToClipboard())}),t._uU(3," Copy all saved configurations to the clipboard "),t.qZA(),t.BQk()}}let dc=(()=>{class n{constructor(e,o,a,s,r){this.config=e,this.formBuilder=o,this.dialog=a,this._snackBar=s,this.clipboard=r,this.selectedEntry="",this.storedConfigs=[],this.displayedColumns=["name","class","mobility","resilience","recovery","discipline","intellect","strength","delete"],this.ngUnsubscribe=new R.xQ,this.settingsNameForm=this.formBuilder.group({name:[null]}),this.importTextForm=this.formBuilder.group({content:[null]})}ngOnInit(){this.config.storedConfigurations.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(e=>this.storedConfigs=e)}submit(){const e=this.settingsNameForm.get("name")?.value;!e||(this.config.doesSavedConfigurationExist(e)?this.dialog.open(le,{width:"300px",data:{description:"Do you want to overwrite this configuration?"}}).afterClosed().subscribe(a=>{a&&(this.config.saveCurrentConfigurationToName(e),this.settingsNameForm.reset(),this.selectedEntry=e)}):(this.config.saveCurrentConfigurationToName(e),this.settingsNameForm.reset(),this.selectedEntry=e))}delete(e){this.dialog.open(le,{width:"300px",data:{description:"Do you want to delete this configuration?"}}).afterClosed().subscribe(a=>{a&&this.config.deleteStoredConfiguration(e)})}clearEverything(){this.dialog.open(le,{width:"300px",data:{description:"Do you want to clear all settings?"}}).afterClosed().subscribe(o=>{o&&this.config.resetCurrentConfiguration()})}load(e){this.dialog.open(le,{width:"300px",data:{description:"Do you want to load this preset?"}}).afterClosed().subscribe(a=>{a&&this.config.loadSavedConfiguration(e)})}runImport(){const e=this.importTextForm.get("content")?.value;if(!e)return this.openSnackBar("Invalid input.");try{const o=P.decompress(e,{inputEncoding:"Base64"}),a="["==o.substr(0,1);let s=JSON.parse(o);a||(s=[s]),console.log("Incoming json:",s);for(let r of s)this.config.checkAndFixOldSavedConfigurations(r),r.hasOwnProperty("name")?a?this.config.saveConfiguration(r.name,r.configuration):this.config.saveCurrentConfiguration(r.configuration):this.config.saveCurrentConfiguration(r);this.openSnackBar("Successfully loaded this configuration"),this.importTextForm.get("content")?.reset()}catch(o){this.openSnackBar("Invalid input."),console.error(o)}}copySingleSettingToClipboard(e){this.clipboard.copy(this.config.getStoredConfigurationBase64Compressed(e.name)),this.openSnackBar("Copied the configuration to your clipboard. You can share it with your friends.")}copyAllSettingsToClipboard(){this.clipboard.copy(this.config.getAllStoredConfigurationsBase64Compressed()),this.openSnackBar("Exported all configurations to the clipboard. You can then save and share them.")}openSnackBar(e){this._snackBar.open(e,"",{duration:2500,politeness:"polite"})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(At.QS),t.Y36(kt.uw),t.Y36(ue.ux),t.Y36(te.TU))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-load-and-save-settings"]],decls:78,vars:13,consts:[[3,"formGroup","submit"],["id","settings"],["appearance","outline"],["formControlName","name","matInput","","maxlength","30","minlength","4","placeholder","Awesome Discipline Build 4"],["color","primary","mat-raised-button","","type","submit",3,"disabled"],["color","warn","mat-raised-button","","matTooltip","Clears the ENTIRE configuration and uses the default settings. Use with caution.",3,"click"],["color","primary","mat-raised-button","","matTooltip","Copy your current configuration into your clipboard. You will be able to share it with others and import it later.",3,"cdkCopyToClipboard","click"],[2,"display","none"],[3,"value","disabled","valueChange"],[3,"value",4,"ngFor","ngForOf"],["color","primary","mat-raised-button","","matTooltip","Load the currently selected configuration.",3,"disabled","click"],["color","warn","mat-stroked-button","","matTooltip","Delete the currently selected configuration. Can not be undone.",3,"disabled","click"],["mat-table","",3,"dataSource"],["matColumnDef","name"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","class"],["matColumnDef","mobility"],["matColumnDef","resilience"],["matColumnDef","recovery"],["matColumnDef","discipline"],["matColumnDef","intellect"],["matColumnDef","strength"],["matColumnDef","delete"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],[4,"ngIf"],[3,"formGroup"],["formControlName","content","matInput",""],["color","primary","mat-raised-button","","matTooltip","Import the given configuration",3,"click"],[3,"value"],["mat-header-cell",""],["mat-cell",""],[3,"stat"],["color","warn","mat-icon-button","","matTooltip","Delete this configuration permanently.",3,"click"],["color","primary","mat-icon-button","","matTooltip","Load this configuration. Your current settings will be overwritten.",3,"click"],["color","primary","mat-icon-button","","matTooltip","Copy this configuration into your clipboard. You will be able to share it with others and import it later.",3,"click"],["mat-header-row",""],["mat-row",""],["color","primary","mat-raised-button","","matTooltip","Export all configurations to the clipboard. You can then save and share them.",3,"click"]],template:function(e,o){if(1&e&&(t.TgZ(0,"form",0),t.NdJ("submit",function(){return o.submit()}),t.TgZ(1,"table",1)(2,"tr")(3,"td")(4,"mat-form-field",2)(5,"mat-label"),t._uU(6,"Name to save the configuration"),t.qZA(),t._UZ(7,"input",3),t.qZA()(),t.TgZ(8,"td")(9,"button",4),t._uU(10," Save current "),t.qZA()(),t.TgZ(11,"td")(12,"button",5),t.NdJ("click",function(){return o.clearEverything()}),t._uU(13,"Clear everything "),t.qZA()(),t.TgZ(14,"td")(15,"button",6),t.NdJ("click",function(){return o.openSnackBar("Copied the configuration to your clipboard. You can share it with your friends.")}),t._uU(16," Copy Current "),t.qZA()()(),t.TgZ(17,"tr",7)(18,"td")(19,"mat-form-field",2)(20,"mat-label"),t._uU(21,"Load saved configuration"),t.qZA(),t.TgZ(22,"mat-select",8),t.NdJ("valueChange",function(s){return o.selectedEntry=s}),t.YNc(23,Jl,9,5,"mat-option",9),t.qZA()()(),t.TgZ(24,"td")(25,"button",10),t.NdJ("click",function(){return o.load(o.selectedEntry)}),t._uU(26,"Load "),t.qZA()(),t.TgZ(27,"td")(28,"button",11),t.NdJ("click",function(){return o.delete(o.selectedEntry)}),t._uU(29,"Delete "),t.qZA()()()()(),t._UZ(30,"br"),t.TgZ(31,"table",12),t.ynx(32,13),t.YNc(33,Ll,2,0,"th",14),t.YNc(34,Yl,2,1,"td",15),t.BQk(),t.ynx(35,16),t.YNc(36,Bl,2,0,"th",14),t.YNc(37,Wl,4,3,"td",15),t.BQk(),t.ynx(38,17),t.YNc(39,jl,2,1,"th",14),t.YNc(40,Gl,2,1,"td",15),t.BQk(),t.ynx(41,18),t.YNc(42,zl,2,1,"th",14),t.YNc(43,Kl,2,1,"td",15),t.BQk(),t.ynx(44,19),t.YNc(45,$l,2,1,"th",14),t.YNc(46,Xl,2,1,"td",15),t.BQk(),t.ynx(47,20),t.YNc(48,tc,2,1,"th",14),t.YNc(49,ec,2,1,"td",15),t.BQk(),t.ynx(50,21),t.YNc(51,nc,2,1,"th",14),t.YNc(52,oc,2,1,"td",15),t.BQk(),t.ynx(53,22),t.YNc(54,ic,2,1,"th",14),t.YNc(55,ac,2,1,"td",15),t.BQk(),t.ynx(56,23),t.YNc(57,sc,1,0,"th",14),t.YNc(58,rc,10,0,"td",15),t.BQk(),t.YNc(59,lc,1,0,"tr",24),t.YNc(60,cc,1,0,"tr",25),t.qZA(),t.YNc(61,mc,4,0,"ng-container",26),t._UZ(62,"br"),t.TgZ(63,"div"),t._UZ(64,"hr"),t.TgZ(65,"h2"),t._uU(66,"Import a previously exported configuration"),t.qZA(),t.TgZ(67,"form",27)(68,"table")(69,"tr")(70,"td")(71,"mat-form-field",2)(72,"mat-label"),t._uU(73,"Copied configuration"),t.qZA(),t._UZ(74,"input",28),t.qZA()(),t.TgZ(75,"td")(76,"button",29),t.NdJ("click",function(){return o.runImport()}),t._uU(77," Start the import "),t.qZA()()()()()()),2&e){let a;t.Q6J("formGroup",o.settingsNameForm),t.xp6(9),t.Q6J("disabled",!(null!=(a=o.settingsNameForm.get("name"))&&a.value)||(null==(a=o.settingsNameForm.get("name"))?null:a.value.length)<4||(null==(a=o.settingsNameForm.get("name"))?null:a.value.length)>30),t.xp6(6),t.Q6J("cdkCopyToClipboard",o.config.getCurrentConfigBase64Compressed()),t.xp6(7),t.Q6J("value",o.selectedEntry)("disabled",0===o.storedConfigs.length),t.xp6(1),t.Q6J("ngForOf",o.storedConfigs),t.xp6(2),t.Q6J("disabled",!o.selectedEntry||0===o.storedConfigs.length),t.xp6(3),t.Q6J("disabled",!o.selectedEntry||0===o.storedConfigs.length),t.xp6(3),t.Q6J("dataSource",o.storedConfigs),t.xp6(28),t.Q6J("matHeaderRowDef",o.displayedColumns),t.xp6(1),t.Q6J("matRowDefColumns",o.displayedColumns),t.xp6(1),t.Q6J("ngIf",o.storedConfigs.length>0),t.xp6(6),t.Q6J("formGroup",o.importTextForm)}},dependencies:[I.sg,I.O5,At._Y,At.Fj,At.JJ,At.JL,At.wO,At.nD,At.sg,At.u,st.lW,Pt.KE,Pt.hX,Rl.gD,we.ey,ne.Nt,G.BZ,G.fO,G.as,G.w1,G.Dz,G.nj,G.ge,G.ev,G.XQ,G.Gk,pt.gM,St.Hw,te.i3,fe],styles:[".modTable[_ngcontent-%COMP%]{width:100%}.mat-header-row[_ngcontent-%COMP%], .mat-row[_ngcontent-%COMP%]{height:30px}.mat-column-class[_ngcontent-%COMP%]{min-width:55px;padding-right:2px;padding-left:2px;text-align:center;border-right:1px solid currentColor}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-resilience[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-discipline[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%], .mat-column-strength[_ngcontent-%COMP%]{min-width:40px;text-align:center}.mat-row[_ngcontent-%COMP%]:hover{background-color:#494949}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%]{background-color:#464646}.mat-column-name[_ngcontent-%COMP%]{padding-right:4px;border-right:1px solid currentColor;min-width:150px}th.mat-header-cell[_ngcontent-%COMP%]:last-of-type, td.mat-cell[_ngcontent-%COMP%]:last-of-type, td.mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.mat-cell[_ngcontent-%COMP%]:last-of-type, .mat-header-cell[_ngcontent-%COMP%]:last-of-type, .mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.stat-negative[_ngcontent-%COMP%], .stat-positive[_ngcontent-%COMP%]{margin-right:3px}.stat-negative[_ngcontent-%COMP%]{color:#f08080}.stat-positive[_ngcontent-%COMP%]{color:#6495ed}.stat-display[_ngcontent-%COMP%]{width:60px;float:left;align-content:end;text-align:right}.mat-row[_ngcontent-%COMP%]:hover, .mat-row[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#494949}.mat-row.selected[_ngcontent-%COMP%]:hover, .mat-row.selected[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#89b2ff30}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-mobility[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-recovery[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-intellect[_ngcontent-%COMP%]{background-color:#89b2ff1c}.mat-column-load[_ngcontent-%COMP%], .mat-column-delete[_ngcontent-%COMP%]{padding-left:3px;padding-right:3px}[_nghost-%COMP%] .mat-form-field-wrapper{margin:0!important;padding:0}"]}),n})();function uc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Helmets"),t.qZA())}function pc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Gauntlets"),t.qZA())}function gc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Chest Pieces"),t.qZA())}function _c(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Legs"),t.qZA())}function fc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Class Items"),t.qZA())}function hc(n,i){1&n&&t._UZ(0,"br")}function xc(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"span",5)(1,"img",6),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw(3);return t.KtG(r.enableItem(s.itemInstanceId))}),t.qZA(),t.YNc(2,hc,1,0,"br",3),t.qZA()}if(2&n){const e=i.$implicit,o=i.index,a=t.oxw(3);t.xp6(1),t.MGl("src","https://bungie.net/",e.icon,"",t.LSH),t.Q6J("matTooltip",a.generateTooltip(e)),t.xp6(1),t.Q6J("ngIf",(o+1)%10==0)}}function yc(n,i){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,uc,2,0,"div",3),t.YNc(2,pc,2,0,"div",3),t.YNc(3,gc,2,0,"div",3),t.YNc(4,_c,2,0,"div",3),t.YNc(5,fc,2,0,"div",3),t.YNc(6,xc,3,3,"span",4),t.qZA()),2&n){const e=i.$implicit,o=i.index;t.xp6(1),t.Q6J("ngIf",1===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",2===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",3===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",4===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",5===o&&e.length>0),t.xp6(1),t.Q6J("ngForOf",e)}}function Cc(n,i){if(1&n&&(t.TgZ(0,"div",1),t.YNc(1,yc,7,6,"div",2),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngForOf",e.disabledItems)}}let Tc=(()=>{class n{constructor(e,o){this.config=e,this.db=o,this.disabledItems=[],this.characterClass=null,this.ngUnsubscribe=new R.xQ}enableItem(e){this.config.modifyConfiguration(o=>{o.disabledItems.splice(o.disabledItems.indexOf(e),1)})}generateTooltip(e){return"Click this icon to activate this item again.\r\n"+e.name+" "+(e.mobility+(e.masterworked?2:0))+"/"+(e.resilience+(e.masterworked?2:0))+"/"+(e.recovery+(e.masterworked?2:0))+"/"+(e.discipline+(e.masterworked?2:0))+"/"+(e.intellect+(e.masterworked?2:0))+"/"+(e.strength+(e.masterworked?2:0))}ngOnInit(){var e=this;this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,y.Z)(function*(a){e.characterClass=null;const s=[[],[],[],[],[],[]];let r=[];for(let d of a.disabledItems){let p=yield e.db.inventoryArmor.where("itemInstanceId").equals(d).first();p&&r.push(p)}for(let d of r)s[d.slot].push(d);e.characterClass=a.characterClass;for(let d of s)d.sort((p,A)=>p.hash-A.hash);e.disabledItems=s});return function(a){return o.apply(this,arguments)}}())}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(w))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-ignored-items-list"]],decls:1,vars:1,consts:[["class","item-icon-container",4,"ngIf"],[1,"item-icon-container"],[4,"ngFor","ngForOf"],[4,"ngIf"],["class","item-sub",4,"ngFor","ngForOf"],[1,"item-sub"],["matTooltipClass","allow-cr",1,"item-icon",3,"src","matTooltip","click"]],template:function(e,o){1&e&&t.YNc(0,Cc,2,1,"div",0),2&e&&t.Q6J("ngIf",null!==o.characterClass)},dependencies:[I.sg,I.O5,pt.gM],styles:[".item-icon[_ngcontent-%COMP%]{width:40px}.item-icon[_ngcontent-%COMP%]:hover{filter:brightness(.8) hue-rotate(350deg) saturate(3) blur(2px) contrast(.6);cursor:not-allowed}.item-sub[_ngcontent-%COMP%]{margin-right:3px}.item-icon-container[_ngcontent-%COMP%]{position:relative;contain:layout paint style;box-sizing:border-box;width:var(--item-size);transition:opacity .2s,transform .2s}"]}),n})(),vc=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-settings"]],decls:71,vars:0,consts:[["id","card-config"],["id","content-char-selection"],["inline","","aria-hidden","false","aria-label","Help","matTooltip","Cooldowns and Stats provided by Clarity."],["tooltip","matTooltip"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0)(1,"mat-card")(2,"mat-card-title"),t._uU(3,"Character Selection"),t.qZA(),t.TgZ(4,"mat-card-content",1),t._UZ(5,"app-desired-class-selection"),t.qZA()(),t.TgZ(6,"mat-card")(7,"mat-card-title"),t._uU(8,"Select the stats you want to achieve"),t.qZA(),t.TgZ(9,"mat-card-subtitle"),t._uU(10,"The heart of this tool. Select the stats you want! "),t.TgZ(11,"mat-icon",2,3),t._uU(13," info "),t.qZA()(),t.TgZ(14,"mat-card-content"),t._UZ(15,"app-desired-stat-selection"),t.qZA()(),t.TgZ(16,"mat-card")(17,"mat-card-title"),t._uU(18,"Armor Selection"),t.qZA(),t.TgZ(19,"mat-card-subtitle"),t._uU(20," This section allows you to limit the armor pieces that are used in the buildcrafting process."),t._UZ(21,"br"),t._uU(22," If you want, limit all results to one exotic. "),t._UZ(23,"br"),t._uU(24," Exotics you do not have in the inventory or vault are grayed out. "),t.qZA(),t.TgZ(25,"mat-card-content"),t._UZ(26,"app-desired-exotic-selection"),t.qZA()(),t.TgZ(27,"mat-card")(28,"mat-card-title"),t._uU(29,"Armor limitation"),t.qZA(),t.TgZ(30,"mat-card-subtitle"),t._uU(31," This section allows you to further specify what kind of armor and mods you want. "),t.qZA(),t.TgZ(32,"mat-card-content"),t._UZ(33,"app-desired-mod-selection"),t.qZA()(),t.TgZ(34,"mat-card")(35,"mat-card-title"),t._uU(36,"Stat-Boost Selection"),t.qZA(),t.TgZ(37,"mat-card-subtitle"),t._uU(38,"Select Mods and Skills that affect your overall stats."),t._UZ(39,"br"),t._uU(40," Please note that D2AP also allows theoretical, but impossible input."),t._UZ(41,"br"),t.TgZ(42,"b"),t._uU(43,"Only fragments that affect stats are shown."),t.qZA()(),t.TgZ(44,"mat-card-content"),t._UZ(45,"app-desired-mods-selection"),t.qZA()(),t.TgZ(46,"mat-card")(47,"mat-card-title"),t._uU(48,"Advanced Settings"),t.qZA(),t.TgZ(49,"mat-card-subtitle"),t._uU(50,"More settings! Use them to fine-tune your buildcrafting process."),t.qZA(),t.TgZ(51,"mat-card-content"),t._UZ(52,"app-advanced-settings"),t.qZA()(),t.TgZ(53,"mat-card")(54,"mat-card-title"),t._uU(55,"Disabled Armor Pieces"),t.qZA(),t.TgZ(56,"mat-card-subtitle"),t._uU(57," These armor pieces are disabled. Click them to enable them again."),t._UZ(58,"br"),t._uU(59," They won't show up in any results."),t._UZ(60,"br"),t._uU(61," You can disable items in the detailed result overview. "),t.qZA(),t.TgZ(62,"mat-card-content"),t._UZ(63,"app-ignored-items-list"),t.qZA()(),t.TgZ(64,"mat-card")(65,"mat-card-title"),t._uU(66,"Configuration Management"),t.qZA(),t.TgZ(67,"mat-card-subtitle"),t._uU(68,"Save and load your buildcrafting settings for another day!"),t.qZA(),t.TgZ(69,"mat-card-content"),t._UZ(70,"app-load-and-save-settings"),t.qZA()()())},dependencies:[Y.a8,Y.dn,Y.n5,Y.$j,pt.gM,St.Hw,Bs,dr,kr,Jr,Ol,Pl,dc,Tc],styles:["#card-config[_ngcontent-%COMP%]{width:-moz-fit-content;width:fit-content;display:inline-block;vertical-align:top;white-space:normal;margin-bottom:20px;margin-left:3px;margin-right:3px}#card-config[_ngcontent-%COMP%] > mat-card[_ngcontent-%COMP%]{margin-bottom:4px}#content-char-selection[_ngcontent-%COMP%]{margin-bottom:0}"]}),n})(),bc=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-picker-page"]],decls:3,vars:0,consts:[["id","container"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t._UZ(1,"app-settings")(2,"app-results"),t.qZA())},dependencies:[vc,be],styles:["#container[_ngcontent-%COMP%]{width:-moz-fit-content;width:fit-content;margin-right:3px;white-space:nowrap}"]}),n})();const Me=function(){return["","Mobility","Resilience","Recovery","Discipline","Intellect","Strength"]};function Ac(n,i){if(1&n&&(t.TgZ(0,"tr",27)(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td",22)(4,"div",28),t._UZ(5,"div",29),t.TgZ(6,"span",30),t._uU(7),t.ALo(8,"number"),t.qZA()()()()),2&n){const e=t.oxw().index,o=t.oxw(2).index,a=t.oxw();t.Q6J("matTooltip",t.DdM(9,Me)[e]),t.xp6(2),t.hij(" ",t.DdM(10,Me)[e]," "),t.xp6(3),t.Jzz("width:",a.clusterInformation[o].mean[e]/32*100,"%"),t.xp6(2),t.hij(" ",t.xi3(8,6,a.clusterInformation[o].mean[e],"1.0-0")," ")}}function wc(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ac,9,11,"tr",26),t.BQk()),2&n){const e=i.index;t.xp6(1),t.Q6J("ngIf",e>0)}}function Zc(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-card",21)(1,"mat-card-title"),t._uU(2),t.qZA(),t.TgZ(3,"mat-card-subtitle"),t._uU(4),t.qZA(),t.TgZ(5,"mat-card-content")(6,"div")(7,"table",22),t.YNc(8,wc,2,1,"ng-container",18),t.qZA()(),t.TgZ(9,"mat-form-field",23)(10,"mat-label"),t._uU(11,"DIM Search Query"),t.qZA(),t._UZ(12,"input",24),t.qZA(),t.TgZ(13,"button",25),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.openSnackBar("Copied the DIM search query to your clipboard."))}),t._uU(14," Copy DIM query to clipboard "),t.qZA()()()}if(2&n){const e=t.oxw(),o=e.index,a=e.$implicit,s=t.oxw();t.xp6(2),t.hij(" Cluster ",o+1," "),t.xp6(2),t.AsE(" Contains ",a.length," item",a.length>1?"s":""," "),t.xp6(4),t.Q6J("ngForOf",s.clusterInformation[o].mean),t.xp6(4),t.Q6J("value",s.getDIMStringForCluster(a)),t.xp6(1),t.Q6J("cdkCopyToClipboard",s.getDIMStringForCluster(a))}}function Ic(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Zc,15,6,"mat-card",20),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",e.length>0)}}var Oe=[{id:0,size:214,centroids:[5.242990654205609,3.4392523364485994,23.074766355140188,4.52336448598131,17.99532710280374,8.074766355140188],std:[3.262185500658884,3.137958193527344,2.0745611905196912,3.223158380401712,2.6478649185881147,3.356022774004607,3.3823650213485315],mean:[62.350467289719624,5.242990654205608,3.439252336448598,23.074766355140188,4.5233644859813085,17.99532710280374,8.074766355140186]},{id:1,size:264,centroids:[13.613636363636365,3.060606060606063,14.431818181818182,6.731060606060606,12.575757575757574,10.575757575757576],std:[4.915624932359143,2.735897756946947,1.897597343200423,3.036390647550984,3.2253188618447473,3.0097969617389406,3.1372197425220545],mean:[60.98863636363637,13.613636363636363,3.0606060606060606,14.431818181818182,6.731060606060606,12.575757575757576,10.575757575757576]},{id:2,size:220,centroids:[5.209090909090909,15.586363636363636,10.936363636363636,13.281818181818181,13.604545454545452,3.8818181818181836],std:[3.3631090204013643,2.931782865076046,2.9200605883727038,3.289049973803757,2.6349662061268395,2.6591750828428204,2.395703224398619],mean:[62.5,5.209090909090909,15.586363636363636,10.936363636363636,13.281818181818181,13.604545454545455,3.881818181818182]},{id:3,size:230,centroids:[8.6,15.330434782608698,6.943478260869563,6.408695652173913,5.578260869565216,18.26086956521739],std:[4.27370926113142,3.855014315301441,3.2487061290912984,3.5081098914433078,3.559587955581114,3.1761194803539676,3.596667444705349],mean:[61.12173913043478,8.6,15.330434782608696,6.943478260869565,6.408695652173913,5.578260869565217,18.26086956521739]},{id:4,size:261,centroids:[11.74712643678161,5.655172413793104,13.873563218390803,11.022988505747126,16.57088122605364,3.0038314176245224],std:[3.5878146263573103,2.8197860971981994,2.9890605143791737,2.9825309245974925,2.7497287061744258,2.8324620286123516,1.8428616632651005],mean:[61.87356321839081,11.74712643678161,5.655172413793103,13.873563218390805,11.022988505747126,16.57088122605364,3.003831417624521]},{id:5,size:249,centroids:[6.598393574297189,7.2289156626506035,7.674698795180722,6.831325301204822,5.995983935742974,7.425702811244981],std:[12.188382924990831,3.7780346472852226,3.7855581933977014,3.9659084518463055,3.2508780840166134,2.4288222155150856,3.23718036285365],mean:[41.75502008032129,6.598393574297189,7.228915662650603,7.674698795180723,6.831325301204819,5.995983935742972,7.42570281124498]},{id:6,size:241,centroids:[4.580912863070541,10.62655601659751,15.72199170124481,20.186721991701248,5.7634854771784205,4.8672199170124495],std:[4.0360666526825675,2.5776864620318327,2.726712032141287,2.7236414380869185,3.4135743182998106,3.164594939982558,2.8952195061747896],mean:[61.74688796680498,4.580912863070539,10.62655601659751,15.721991701244812,20.186721991701244,5.763485477178423,4.867219917012448]},{id:7,size:352,centroids:[4.96875,10.849431818181818,15.676136363636362,5.085227272727275,13.079545454545453,12.113636363636365],std:[3.864447558701623,2.876694966732471,2.825917840642513,2.8500410080793133,2.604753041986593,2.753797030174534,3.084495990290069],mean:[61.77272727272727,4.96875,10.849431818181818,15.676136363636363,5.0852272727272725,13.079545454545455,12.113636363636363]},{id:8,size:219,centroids:[21.401826484018265,4.529680365296804,4.954337899543379,14.022831050228312,7.168949771689496,6.8036529680365305],std:[7.654498360234386,3.856746305047457,3.0774088630224354,3.486239910130717,4.509361233853425,3.691515724130434,3.433882092856456],mean:[58.881278538812786,21.401826484018265,4.529680365296803,4.954337899543379,14.02283105022831,7.168949771689498,6.80365296803653]},{id:9,size:183,centroids:[4.448087431693989,22.114754098360656,4.868852459016392,7.459016393442623,11.240437158469945,9.765027322404372],std:[7.900837110469869,3.265921971202623,3.896032191192026,3.424902708986657,3.3556927380910535,3.7206143627650876,3.9564220813839577],mean:[59.89617486338798,4.448087431693989,22.114754098360656,4.868852459016393,7.459016393442623,11.240437158469945,9.765027322404372]},{id:10,size:197,centroids:[13.563451776649746,10.761421319796954,6.527918781725887,20.654822335025383,4.934010152284262,5.18274111675127],std:[4.239153654030002,3.3077343290831713,2.8924486501981233,2.9338771160608355,3.5098461495889413,3.192898794854312,2.920215710334156],mean:[61.6243654822335,13.563451776649746,10.761421319796954,6.527918781725888,20.65482233502538,4.934010152284264,5.182741116751269]},{id:11,size:176,centroids:[8.255681818181818,16.181818181818183,7.11931818181818,4.619318181818182,21.0625,5.505681818181819],std:[3.349621998445128,3.4620343467651815,3.3296776490755446,2.945693532873097,2.7583580190103967,3.126214049887545,3.078027492852078],mean:[62.74431818181818,8.255681818181818,16.181818181818183,7.119318181818182,4.619318181818182,21.0625,5.505681818181818]},{id:12,size:194,centroids:[3.5670103092783503,14.773195876288659,13.036082474226804,13.185567010309278,4.979381443298967,12.144329896907218],std:[3.89886364980042,2.255251632823776,2.5893570716174388,3.248552824613239,3.1004926799108317,2.8845824993776903,2.8864151735009584],mean:[61.68556701030928,3.5670103092783507,14.77319587628866,13.036082474226804,13.185567010309278,4.979381443298969,12.144329896907216]},{id:13,size:302,centroids:[5.311258278145695,4.4701986754966905,21.897350993377486,10.688741721854305,6.834437086092715,12.605960264900663],std:[5.1142628152416245,2.9920946350614983,2.6882491851253567,3.071581172564087,2.99431450280505,3.116626644660552,2.58548804104293],mean:[61.80794701986755,5.311258278145695,4.470198675496689,21.897350993377483,10.688741721854305,6.8344370860927155,12.605960264900663]},{id:14,size:364,centroids:[12.263736263736265,11.32967032967033,5.936813186813188,8.524725274725274,12.07142857142857,7.782967032967034],std:[6.666392881793753,2.8942239993391565,2.947866371540881,3.041289192757803,3.0876888182534996,2.4540644069260296,2.6803305558675676],mean:[57.90934065934066,12.263736263736265,11.32967032967033,5.936813186813187,8.524725274725276,12.071428571428571,7.782967032967033]},{id:15,size:219,centroids:[6.981735159817351,5.9908675799086755,18.127853881278536,4.97716894977169,5.182648401826483,20.89041095890411],std:[4.3335830659244685,3.5503759593138464,3.5270785628911785,4.123339305032141,2.7998081886699646,3.283747903424203,2.8311584355558064],mean:[62.15068493150685,6.981735159817352,5.9908675799086755,18.12785388127854,4.9771689497716896,5.1826484018264845,20.89041095890411]},{id:16,size:147,centroids:[6.285714285714285,20.836734693877553,4.8639455782312915,17.510204081632654,5.897959183673469,7.394557823129253],std:[3.358145469360083,3.4877476344546254,3.2245649941865486,3.0557367019327,4.0937094190209065,3.1136788219952605,3.842013283457479],mean:[62.7891156462585,6.285714285714286,20.836734693877553,4.863945578231292,17.510204081632654,5.8979591836734695,7.394557823129252]},{id:17,size:202,centroids:[18.425742574257423,6.871287128712871,6.678217821782177,5.06930693069307,20.40594059405941,5.876237623762377],std:[3.0226636827682554,3.292828132097339,3.518715749263091,3.4627255810748356,3.075363266145594,3.5804283293104753,3.315804113390658],mean:[63.32673267326733,18.425742574257427,6.871287128712871,6.678217821782178,5.069306930693069,20.405940594059405,5.876237623762377]},{id:18,size:286,centroids:[11.22027972027972,7.073426573426573,12.65034965034965,12.594405594405593,4.209790209790211,13.220279720279722],std:[4.720510224882134,2.8685361372318168,2.6005789112305338,3.052197922484291,2.451602446915686,2.7244266014541174,2.7638787756329526],mean:[60.96853146853147,11.22027972027972,7.073426573426573,12.65034965034965,12.594405594405595,4.20979020979021,13.22027972027972]},{id:19,size:197,centroids:[6.263959390862944,8.568527918781726,16.80710659898477,4.000000000000003,22.593908629441625,4.883248730964468],std:[2.7333118141791917,3.3626657547151964,3.4540163497542435,2.646397291854302,2.565469285152567,3.018237668617547,2.8287109641017594],mean:[63.11675126903553,6.2639593908629445,8.568527918781726,16.80710659898477,4,22.593908629441625,4.883248730964467]},{id:20,size:279,centroids:[18.025089605734767,6.150537634408602,6.161290322580646,5.767025089605736,7.999999999999998,15.602150537634408],std:[6.590788110639117,3.6436721401086296,3.165505073725202,3.13700467469825,2.7769973891540207,3.4672154149710614,4.017425492621824],mean:[59.70609318996416,18.025089605734767,6.150537634408602,6.161290322580645,5.767025089605735,8,15.602150537634408]},{id:21,size:78,centroids:[15.96153846153846,16.85897435897436,16.807692307692307,3552713678800501e-30,5329070518200751e-30,-5329070518200751e-30],std:[2.095815090231219,7.438828122504502,7.482836393563639,8.12413063050432,0,0,0],mean:[49.62820512820513,15.961538461538462,16.858974358974358,16.807692307692307,0,0,0]},{id:22,size:137,centroids:[4.525547445255475,3.583941605839417,23.532846715328468,19.948905109489054,4.3576642335766405,6.248175182481752],std:[2.9351806639916567,2.7575572416084317,2.2707939003224227,2.908029186302962,3.3306093063017315,2.6644092885703916,3.4848010785869454],mean:[62.197080291970806,4.525547445255475,3.5839416058394162,23.532846715328468,19.94890510948905,4.357664233576642,6.248175182481752]},{id:23,size:194,centroids:[13.242268041237114,3.5103092783505163,14.675257731958762,19.55154639175258,6.139175257731957,5.092783505154641],std:[3.810494814771566,2.886105181640385,2.0818477512276696,2.6197152448917316,3.409818599464837,3.0311357231629183,2.9733966349516936],mean:[62.21134020618557,13.242268041237113,3.5103092783505154,14.675257731958762,19.551546391752577,6.139175257731959,5.092783505154639]},{id:24,size:239,centroids:[5.569037656903766,5.401673640167365,20.92468619246862,13.09205020920502,13.497907949790793,4.096234309623432],std:[3.8502204432228733,3.071015816571908,3.081143061480697,2.79904271710946,2.169280265760518,2.62802363192924,2.3450167178621983],mean:[62.58158995815899,5.569037656903766,5.401673640167364,20.92468619246862,13.092050209205022,13.497907949790795,4.096234309623431]}];let Sc=(()=>{class n{constructor(e,o,a){this.db=e,this._snackBar=o,this.inventory=a,this.clusterInformation=Oe,this.items=[],this.clusters=[],this.exoticFilter=0,this.masterworkFilter=0,this.classFilter=-1,this.clusterInformation=Oe.sort((s,r)=>r.mean[3]-s.mean[3])}ngAfterViewInit(){var e=this;return(0,y.Z)(function*(){e.inventory.inventory.pipe((0,J.b)(200)).subscribe((0,y.Z)(function*(){yield e.Update(),e.openSnackBar("Clusters were updated.")}))})()}Update(){var e=this;return(0,y.Z)(function*(){var o=(yield e.db.inventoryArmor.toArray()).filter(r=>r.source===B.Inventory),a=[];for(let r=0;r`id:'${o.itemInstanceId}'`).join(" or ")}vectorDistance(e,o){return Math.sqrt(e.reduce((a,s,r)=>a+Math.pow(s-o[r],2),0))}getClusterid(e){var o=Number.MAX_VALUE,a=-1;for(let r=0;r=3?3:0),"")}}const ke=function(){return["Mobility","Resilience","Recovery","Discipline","Intellect","Strength"]};function kc(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"tr",16)(2,"td"),t._uU(3),t.qZA(),t.TgZ(4,"td"),t._uU(5),t.ALo(6,"number"),t.qZA(),t.TgZ(7,"td",17)(8,"div",18),t.YNc(9,Oc,1,6,"div",19),t.qZA()()(),t.BQk()),2&n){const e=i.$implicit,o=i.index,a=t.oxw().$implicit;t.xp6(1),t.Q6J("matTooltip",t.DdM(7,ke)[o]),t.xp6(2),t.hij(" ",t.DdM(8,ke)[o]," "),t.xp6(2),t.Oqu(t.xi3(6,4,a.totalStats[o],"1.0-0")),t.xp6(4),t.Q6J("ngForOf",e)}}function Ec(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td")(2,"a",20),t._UZ(3,"img",15),t.qZA(),t._uU(4),t.qZA(),t.TgZ(5,"td",21),t._uU(6),t.qZA(),t.TgZ(7,"td"),t._uU(8),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw(3);t.xp6(2),t.MGl("href","https://data.destinysets.com/i/InventoryItem:",e,"",t.LSH),t.xp6(2),t.hij(" ",e,""),t.xp6(2),t.Oqu(o.getPlugSum(e)),t.xp6(2),t.Oqu(o.getPlugString(e))}}const Uc=function(n,i,e,o,a,s){return[n,i,e,o,a,s]};function Dc(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"mat-card",12)(2,"mat-card-title"),t._uU(3),t.qZA(),t.TgZ(4,"mat-card-content")(5,"table")(6,"tr")(7,"td",13),t._uU(8,"Hash:"),t.qZA(),t.TgZ(9,"td")(10,"a",14),t._UZ(11,"img",15),t.qZA(),t._uU(12),t.qZA()(),t.TgZ(13,"tr")(14,"td",13),t._uU(15,"ItemInstanceId:"),t.qZA(),t.TgZ(16,"td"),t._uU(17),t.qZA()(),t.TgZ(18,"tr")(19,"td",13),t._uU(20,"Sunset?"),t.qZA(),t.TgZ(21,"td"),t._uU(22),t.qZA()(),t.TgZ(23,"tr")(24,"td"),t._uU(25,"Total"),t.qZA(),t.TgZ(26,"td"),t._uU(27),t.qZA()(),t.YNc(28,kc,10,9,"ng-container",10),t.qZA()(),t.TgZ(29,"mat-card-content"),t._uU(30," Plugs: "),t.TgZ(31,"table")(32,"tr")(33,"td"),t._uU(34,"Plug"),t.qZA(),t.TgZ(35,"td"),t._uU(36,"Total"),t.qZA(),t.TgZ(37,"td"),t._uU(38,"Values"),t.qZA()(),t.YNc(39,Ec,9,4,"tr",10),t.qZA()()(),t.BQk()),2&n){const e=i.$implicit;t.xp6(3),t.hij(" ",e.name," "),t.xp6(7),t.MGl("href","https://data.destinysets.com/i/InventoryItem:",e.hash,"",t.LSH),t.xp6(2),t.hij(" ",e.hash,""),t.xp6(5),t.Oqu(e.itemInstanceId),t.xp6(5),t.Oqu(e.isSunset),t.xp6(5),t.Oqu(e.totalSum),t.xp6(1),t.Q6J("ngForOf",t.HTZ(8,Uc,e.mobility,e.resilience,e.recovery,e.discipline,e.intellect,e.strength)),t.xp6(11),t.Q6J("ngForOf",e.statPlugHashes)}}function Pc(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"mat-toolbar"),t._uU(2),t.qZA(),t._UZ(3,"br"),t.TgZ(4,"div",11),t.YNc(5,Dc,40,15,"ng-container",10),t.qZA(),t.BQk()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.hij(" ",o.getCategoryName(e.key)," "),t.xp6(3),t.Q6J("ngForOf",e.value)}}let Rc=(()=>{class n{constructor(e,o){this.inventory=e,this.db=o,this.minMobility=0,this.minResilience=0,this.minRecovery=0,this.minDiscipline=0,this.minIntellect=0,this.minStrength=0,this.anyPlugWithN=0,this.anyPlugBelowN=17,this.allPlugsWithN=0,this.allPlugsBelowN=17,this.armorName="",this.armorHash="",this.armorId="",this.armorItemsPerSlot=new Map,this.plugData={},this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.inventory.inventory.pipe((0,J.b)(10),(0,Ct.R)(this.ngUnsubscribe)).subscribe((0,y.Z)(function*(){e.updateItems()}))}getPlugString(e){var o=this.plugData[e];let a=[0,0,0,0,0,0];for(let s of o.investmentStats)switch(s.statTypeHash){case 2996146975:a[0]+=s.value;break;case 392767087:a[1]+=s.value;break;case 1943323491:a[2]+=s.value;break;case 1735777505:a[3]+=s.value;break;case 144602215:a[4]+=s.value;break;case 4244567218:a[5]+=s.value}return"["+a.join(" ")+"]"}updateItems(){var e=this;return(0,y.Z)(function*(){const a=(yield e.db.manifestArmor.toArray()).filter(d=>19==d.itemType);let s=Object.fromEntries(a.map(d=>[d.hash,d]));e.plugData=s;let r=(yield e.db.inventoryArmor.toArray()).filter(d=>d.source===B.Inventory).sort((d,p)=>(""+d.name).localeCompare(p.name)).map(d=>{var p={name:d.name,hash:d.hash,isSunset:d.isSunset,itemInstanceId:d.itemInstanceId,statPlugHashes:d.statPlugHashes,mobility:[],resilience:[],recovery:[],discipline:[],intellect:[],strength:[],totalStats:[0,0,0,0,0,0],totalSum:0,slot:d.slot};if(d.statPlugHashes)for(let m of d.statPlugHashes){var A=s[m];for(let S of A.investmentStats)switch(S.statTypeHash){case 2996146975:p.mobility.push(S.value),p.totalStats[0]+=S.value;break;case 392767087:p.resilience.push(S.value),p.totalStats[1]+=S.value;break;case 1943323491:p.recovery.push(S.value),p.totalStats[2]+=S.value;break;case 1735777505:p.discipline.push(S.value),p.totalStats[3]+=S.value;break;case 144602215:p.intellect.push(S.value),p.totalStats[4]+=S.value;break;case 4244567218:p.strength.push(S.value),p.totalStats[5]+=S.value}}if(d.investmentStats)for(let m of d.investmentStats)switch(m.statTypeHash){case 2996146975:p.mobility.push(m.value),p.totalStats[0]+=m.value;break;case 392767087:p.resilience.push(m.value),p.totalStats[1]+=m.value;break;case 1943323491:p.recovery.push(m.value),p.totalStats[2]+=m.value;break;case 1735777505:p.discipline.push(m.value),p.totalStats[3]+=m.value;break;case 144602215:p.intellect.push(m.value),p.totalStats[4]+=m.value;break;case 4244567218:p.strength.push(m.value),p.totalStats[5]+=m.value}for(let m of p.totalStats)p.totalSum+=m;return p});r=e.filterItems(r),e.armorItemsPerSlot=r.reduce((d,p)=>{const A=p.slot?p.slot:10;return d.has(A)||d.set(A,[]),d.get(A)?.push(p),d},new Map)})()}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}getCategoryName(e){switch(e){case 1:return"Helmets";case 2:return"Gauntlets";case 3:return"Chest Pieces";case 4:return"Legs";case 5:return"Class Items"}return"Unknown Category"}getPlugSum(e){var o=this.plugData[e],a=0;for(let s of o.investmentStats)switch(s.statTypeHash){case 2996146975:case 392767087:case 1943323491:case 1735777505:case 144602215:case 4244567218:a+=s.value}return a}clear(){this.armorName="",this.armorHash="",this.armorId="",this.minMobility=0,this.minResilience=0,this.minRecovery=0,this.minDiscipline=0,this.minIntellect=0,this.minStrength=0,this.anyPlugWithN=0,this.anyPlugBelowN=17}filterItems(e){return this.armorName&&(e=e.filter(o=>o.name.toLowerCase().indexOf(this.armorName)>-1)),this.armorHash&&(e=e.filter(o=>(o.hash||0).toString().indexOf(this.armorHash)>-1)),this.armorId&&(e=e.filter(o=>(o.itemInstanceId||0).toString().indexOf(this.armorId)>-1)),e=(e=(e=(e=(e=(e=e.filter(o=>o.totalStats[0]>=(this.minMobility||0))).filter(o=>o.totalStats[1]>=(this.minResilience||0))).filter(o=>o.totalStats[2]>=(this.minRecovery||0))).filter(o=>o.totalStats[3]>=(this.minDiscipline||0))).filter(o=>o.totalStats[4]>=(this.minIntellect||0))).filter(o=>o.totalStats[5]>=(this.minStrength||0)),(this.anyPlugWithN??0)>0&&(e=e.filter(o=>(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)>=(this.anyPlugWithN||0)).length>0)),(this.anyPlugBelowN??0)<17&&(e=e.filter(o=>(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)<=(this.anyPlugBelowN||0)).length>0)),(this.allPlugsWithN??0)>0&&(e=e.filter(o=>0==(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)<(this.allPlugsWithN||0)).length)),(this.allPlugsBelowN??0)<17&&(e=e.filter(o=>0==(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)>(this.allPlugsBelowN||0)).length)),e}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Tt),t.Y36(w))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-investigation-page"]],decls:112,vars:26,consts:[["id","description"],["href","https://www.reddit.com/r/DestinyTheGame/comments/mpaopq/how_armor_stats_roll_an_advanced_insight_into/","target","_blank"],["colspan","3"],["appearance","outline"],["matInput","","placeholder","Stronghold",3,"ngModel","ngModelChange"],["matInput","",3,"ngModel","ngModelChange"],["max","32","min","0","step","1","thumbLabel","","tickInterval","1",3,"value","valueChange"],["max","17","min","0","step","1","thumbLabel","","tickInterval","1",3,"value","valueChange"],["mat-raised-button","","color","primary",3,"click"],["mat-raised-button","","color","warn",3,"click"],[4,"ngFor","ngForOf"],["fxLayout","row","fxLayout.xs","column","fxLayoutGap","10px",1,"armor-container"],[1,"cluster-item"],["colspan","2"],["alt","This armor on data.destinysets.com","target","_blank",3,"href"],["src","https://data.destinysets.com/static/media/logo.556bd7bd.svg",2,"width","15px"],[3,"matTooltip"],["width","100%"],[1,"stat-range"],[3,"class","style",4,"ngFor","ngForOf"],["alt","This plug on data.destinysets.com","target","_blank",3,"href"],[1,"plug-sum-col"]],template:function(e,o){1&e&&(t.TgZ(0,"mat-card",0)(1,"mat-card-title"),t._uU(2," Armor Investigation "),t.qZA(),t.TgZ(3,"mat-card-subtitle"),t._uU(4," A visualization tool for data scientists. "),t.qZA(),t.TgZ(5,"mat-card-content"),t._uU(6," This part of the D2ArmorPicker lists all of your armor items. For each armor it shows how it is generated. It shows every used "),t.TgZ(7,"i"),t._uU(8,'"plug"'),t.qZA(),t._uU(9,", as well as the intrinsic stats of exotics. For more information about plugs, see "),t.TgZ(10,"a",1),t._uU(11,"here"),t.qZA(),t._uU(12,". Make sure to give the author an upvote for the hard work! "),t._UZ(13,"br")(14,"br"),t._uU(15," Please note that this feature is mainly targeted for data nerds and people interested in the basic stats of armor. It is just a data visualization. Mobile layout and a search function "),t.TgZ(16,"i"),t._uU(17,"may"),t.qZA(),t._uU(18," happen in the future. "),t.qZA(),t.TgZ(19,"mat-card-title"),t._uU(20," Filters "),t.qZA(),t.TgZ(21,"mat-card-subtitle"),t._uU(22," Some filters. Nothing fancy but it works. Sorry ;) "),t.qZA(),t.TgZ(23,"mat-card-content")(24,"table")(25,"tr")(26,"td",2)(27,"mat-form-field",3)(28,"mat-label"),t._uU(29,"Item Name"),t.qZA(),t.TgZ(30,"input",4),t.NdJ("ngModelChange",function(s){return o.armorName=s}),t.qZA()()(),t.TgZ(31,"td",2)(32,"mat-form-field",3)(33,"mat-label"),t._uU(34,"Item Hash"),t.qZA(),t.TgZ(35,"input",5),t.NdJ("ngModelChange",function(s){return o.armorHash=s}),t.qZA()()(),t.TgZ(36,"td",2)(37,"mat-form-field",3)(38,"mat-label"),t._uU(39,"Item ID"),t.qZA(),t.TgZ(40,"input",5),t.NdJ("ngModelChange",function(s){return o.armorId=s}),t.qZA()()()(),t.TgZ(41,"tr")(42,"td"),t._uU(43," Mobility: "),t.qZA(),t.TgZ(44,"td"),t._uU(45),t.qZA(),t.TgZ(46,"td")(47,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minMobility=s}),t.qZA()(),t.TgZ(48,"td"),t._uU(49," Resilience: "),t.qZA(),t.TgZ(50,"td"),t._uU(51),t.qZA(),t.TgZ(52,"td")(53,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minResilience=s}),t.qZA()(),t.TgZ(54,"td"),t._uU(55," Recovery: "),t.qZA(),t.TgZ(56,"td"),t._uU(57),t.qZA(),t.TgZ(58,"td")(59,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minRecovery=s}),t.qZA()()(),t.TgZ(60,"tr")(61,"td"),t._uU(62," Discipline: "),t.qZA(),t.TgZ(63,"td"),t._uU(64),t.qZA(),t.TgZ(65,"td")(66,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minDiscipline=s}),t.qZA()(),t.TgZ(67,"td"),t._uU(68," Intellect: "),t.qZA(),t.TgZ(69,"td"),t._uU(70),t.qZA(),t.TgZ(71,"td")(72,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minIntellect=s}),t.qZA()(),t.TgZ(73,"td"),t._uU(74," Strength: "),t.qZA(),t.TgZ(75,"td"),t._uU(76),t.qZA(),t.TgZ(77,"td")(78,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minStrength=s}),t.qZA()()(),t.TgZ(79,"tr")(80,"td"),t._uU(81," Any plug >=: "),t.qZA(),t.TgZ(82,"td"),t._uU(83),t.qZA(),t.TgZ(84,"td")(85,"mat-slider",7),t.NdJ("valueChange",function(s){return o.anyPlugWithN=s}),t.qZA()(),t.TgZ(86,"td"),t._uU(87," Any Plug <=: "),t.qZA(),t.TgZ(88,"td"),t._uU(89),t.qZA(),t.TgZ(90,"td")(91,"mat-slider",7),t.NdJ("valueChange",function(s){return o.anyPlugBelowN=s}),t.qZA()()(),t.TgZ(92,"tr")(93,"td"),t._uU(94," All plugs >=: "),t.qZA(),t.TgZ(95,"td"),t._uU(96),t.qZA(),t.TgZ(97,"td")(98,"mat-slider",7),t.NdJ("valueChange",function(s){return o.allPlugsWithN=s}),t.qZA()(),t.TgZ(99,"td"),t._uU(100," All Plugs <=: "),t.qZA(),t.TgZ(101,"td"),t._uU(102),t.qZA(),t.TgZ(103,"td")(104,"mat-slider",7),t.NdJ("valueChange",function(s){return o.allPlugsBelowN=s}),t.qZA()()()(),t.TgZ(105,"a",8),t.NdJ("click",function(){return o.updateItems()}),t._uU(106,"Update"),t.qZA(),t._uU(107,"\xa0 "),t.TgZ(108,"a",9),t.NdJ("click",function(){return o.clear()}),t._uU(109,"Clear"),t.qZA()()(),t.YNc(110,Pc,6,2,"ng-container",10),t.ALo(111,"keyvalue")),2&e&&(t.xp6(30),t.Q6J("ngModel",o.armorName),t.xp6(5),t.Q6J("ngModel",o.armorHash),t.xp6(5),t.Q6J("ngModel",o.armorId),t.xp6(5),t.hij(" ",o.minMobility,""),t.xp6(2),t.Q6J("value",o.minMobility),t.xp6(4),t.hij(" ",o.minResilience,""),t.xp6(2),t.Q6J("value",o.minResilience),t.xp6(4),t.hij(" ",o.minRecovery,""),t.xp6(2),t.Q6J("value",o.minRecovery),t.xp6(5),t.hij(" ",o.minDiscipline,""),t.xp6(2),t.Q6J("value",o.minDiscipline),t.xp6(4),t.hij(" ",o.minIntellect,""),t.xp6(2),t.Q6J("value",o.minIntellect),t.xp6(4),t.Oqu(o.minStrength),t.xp6(2),t.Q6J("value",o.minStrength),t.xp6(5),t.Oqu(o.anyPlugWithN),t.xp6(2),t.Q6J("value",o.anyPlugWithN),t.xp6(4),t.Oqu(o.anyPlugBelowN),t.xp6(2),t.Q6J("value",o.anyPlugBelowN),t.xp6(5),t.Oqu(o.allPlugsWithN),t.xp6(2),t.Q6J("value",o.allPlugsWithN),t.xp6(4),t.Oqu(o.allPlugsBelowN),t.xp6(2),t.Q6J("value",o.allPlugsBelowN),t.xp6(6),t.Q6J("ngForOf",t.lcZ(111,24,o.armorItemsPerSlot)))},dependencies:[I.sg,_t.xw,_t.SQ,At.Fj,At.JJ,At.On,st.zs,Pt.KE,Pt.hX,Mc.pH,ne.Nt,Y.a8,Y.dn,Y.n5,Y.$j,pt.gM,wt.Ye,I.JJ,I.Nd],styles:["#description[_ngcontent-%COMP%], #filter[_ngcontent-%COMP%]{max-width:700px;margin-bottom:10px;margin-left:auto;margin-right:auto}.cluster-item[_ngcontent-%COMP%]{flex-grow:1;flex-basis:0;min-width:250px;max-width:350px;margin-bottom:10px}.armor-container[_ngcontent-%COMP%], .plug-sum-col[_ngcontent-%COMP%]{padding-left:5px}.armor-container[_ngcontent-%COMP%]{flex-wrap:wrap}.stat-range[_ngcontent-%COMP%]{height:20px;width:100%;margin-bottom:3px;float:left;background-color:gray}.stat-range-bar[_ngcontent-%COMP%]{height:100%;float:left;background-color:#fff}.stat-range-bar0[_ngcontent-%COMP%]{background-color:#acfff1}.stat-range-bar1[_ngcontent-%COMP%]{background-color:#5e9eff}.stat-range-bar3[_ngcontent-%COMP%]{background-color:#ffc2ac}.stat-range-bar4[_ngcontent-%COMP%]{background-color:#ffb45e}.stat-range-bar2[_ngcontent-%COMP%], .stat-range-bar5[_ngcontent-%COMP%]{background-color:#c246ff}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}"]}),n})(),Nc=(()=>{class n{constructor(e,o,a){this.db=e,this.inv=o,this.loginService=a}downloadArmorInformation(){var e=this;return(0,y.Z)(function*(){const o=yield e.db.inventoryArmor.toArray(),a=window.URL.createObjectURL(new Blob([JSON.stringify(o,null,2)])),s=document.createElement("a");s.href=a,s.setAttribute("download","d2ap_armor.json"),document.body.appendChild(s),s.click()})()}downloadManifestInformation(){var e=this;return(0,y.Z)(function*(){const o=yield e.db.manifestArmor.toArray(),a=window.URL.createObjectURL(new Blob([JSON.stringify(o,null,1)])),s=document.createElement("a");s.href=a,s.setAttribute("download","d2ap_manifest.json"),document.body.appendChild(s),s.click()})()}resetDatabase(){var e=this;return(0,y.Z)(function*(){yield e.db.resetDatabase(),yield e.inv.refreshAll(!0,!0)})()}resetEverything(){var e=this;return(0,y.Z)(function*(){localStorage.clear(),yield e.db.resetDatabase(),yield e.loginService.logout()})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(w),t.Y36(Tt),t.Y36(gt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-account-config-page"]],decls:35,vars:0,consts:[["id","account-config-container"],["color","primary","fxShow","false","fxShow.lt-md","true","mat-raised-button","","routerLink","/",1,"returnbutton"],["color","primary","mat-raised-button","",1,"btn-download",3,"click"],["color","warn","mat-raised-button","",1,"btn-download",3,"click"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0)(1,"a",1),t._uU(2," Return to D2ArmorPicker "),t.qZA(),t.TgZ(3,"mat-card")(4,"mat-card-title"),t._uU(5," Account Configuration "),t.qZA(),t.TgZ(6,"mat-card-subtitle"),t._uU(7," The configuration on this page will not be reset when you reset your build settings. "),t.qZA(),t.TgZ(8,"mat-card-content"),t._uU(9,' This will come in a future update. Right now, I just wanted to push the "Debugging" section out. '),t.qZA()(),t.TgZ(10,"mat-card")(11,"mat-card-title"),t._uU(12," Debugging "),t.qZA(),t.TgZ(13,"mat-card-subtitle"),t._uU(14," Some options for debugging purposes. "),t.qZA(),t.TgZ(15,"mat-card-content"),t._uU(16," If the team asks you to send some specific data, you can find it here:"),t._UZ(17,"br"),t.TgZ(18,"a",2),t.NdJ("click",function(){return o.downloadArmorInformation()}),t._uU(19," Download armor information (d2ap_armor.json) "),t.qZA(),t.TgZ(20,"a",2),t.NdJ("click",function(){return o.downloadManifestInformation()}),t._uU(21," Download manifest information (d2ap_manifest.json) "),t.qZA(),t._UZ(22,"br")(23,"br"),t._uU(24," If you experience issues with the local database - for example, exotics not being found, try this:"),t._UZ(25,"br"),t.TgZ(26,"a",3),t.NdJ("click",function(){return o.resetDatabase()}),t._uU(27," Delete Database "),t.qZA(),t._UZ(28,"br"),t._uU(29," If you really want to reset EVERYTHING, use this: "),t._UZ(30,"br"),t.TgZ(31,"a",3),t.NdJ("click",function(){return o.resetEverything()}),t._uU(32," Reset the whole application "),t.qZA()()(),t.TgZ(33,"a",1),t._uU(34," Return to D2ArmorPicker "),t.qZA()())},dependencies:[M.b8,st.zs,Y.a8,Y.dn,Y.n5,Y.$j,ot.yS],styles:[".returnbutton[_ngcontent-%COMP%]{margin-top:5px;margin-bottom:15px;width:100%}#account-config-container[_ngcontent-%COMP%]{max-width:800px;margin-left:auto;margin-right:auto}mat-card[_ngcontent-%COMP%]{margin-bottom:8px}.btn-download[_ngcontent-%COMP%]{margin-right:10px}"]}),n})();var qc=_(4661),Ee=_(7331);const Fc=[{path:"",component:Xe,canActivate:[f],children:[{path:"",component:bc},{path:"help",component:ps},{path:"cluster",component:Sc},{path:"investigate",component:Rc},{path:"theory",loadChildren:()=>_.e(613).then(_.bind(_,8613)).then(n=>n.TheorizerPageModule)},{path:"account",component:Nc}]},{path:"login",component:Ht,canActivate:[C]},{path:"login-bungie",component:Rt},{path:"**",redirectTo:"/"}];let Jc=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n,bootstrap:[x]}),n.\u0275inj=t.cJS({imports:[I.ez,qc.V,u.b2,Lt.PW,Et.JF,ot.Bz.forRoot(Fc,{useHash:!0}),te.Iq,U.xu]}),n})();t.B6R(be,function(){return[I.sg,I.O5,_t.xw,_t.SQ,_t.Wh,_t.yH,st.lW,Pt.KE,Pt.hX,Pt.R9,ne.Nt,G.BZ,G.fO,G.as,G.w1,G.Dz,G.nj,G.ge,G.ev,G.XQ,G.Gk,Y.a8,Y.dn,Y.n5,Y.$j,Y.hq,pt.gM,St.Hw,de.YE,de.nU,ve.NW,Ee.qn,Ee.HS,as,zs]},function(){return[I.JJ]}),t.B6R(Ce,function(){return[st.lW,kt.ZT,kt.uh,kt.xY,kt.H8,Ze]},[]),g.N.production&&(0,t.G48)(),u.q6().bootstrapModule(Jc).catch(n=>console.error(n))}},ht=>{ht.O(0,[736],()=>ht(ht.s=1379)),ht.O()}]); \ No newline at end of file diff --git a/main.da783695bda5024f.js b/main.da783695bda5024f.js new file mode 100644 index 00000000..9cd1427a --- /dev/null +++ b/main.da783695bda5024f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkD2ArmorPicker=self.webpackChunkD2ArmorPicker||[]).push([[179],{443:(ht,at,_)=>{_.d(at,{F:()=>I});var u=_(7580),t=_(8333),g=_(1043);const I={[u.U.WhisperOfDurance]:{id:u.U.WhisperOfDurance,name:"Whisper of Durance",description:"Slow that you apply to targets lasts longer. For those abilities that linger, their duration will also increase.",type:t.O.Stasis,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:3469412969},[u.U.WhisperOfChains]:{id:u.U.WhisperOfChains,name:"Whisper of Chains",description:"While you are near frozen targets or a friendly Stasis crystal, you take reduced damage from targets.",type:t.O.Stasis,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:537774540},[u.U.WhisperOfConduction]:{id:u.U.WhisperOfConduction,name:"Whisper of Conduction",description:"Nearby Stasis shards track to your position.",type:t.O.Stasis,bonus:[{stat:g.WB.Intellect,value:10},{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:2483898429},[u.U.WhisperOfBonds]:{id:u.U.WhisperOfBonds,name:"Whisper of Bonds",description:"Defeating frozen targets generates an Orb of Power.",type:t.O.Stasis,bonus:[{stat:g.WB.Intellect,value:-10}],cost:1,requiredArmorAffinity:0,hash:3469412974},[u.U.WhisperOfHunger]:{id:u.U.WhisperOfHunger,name:"Whisper of Hunger",description:"Increases the melee energy gained from picking up Stasis shards.",type:t.O.Stasis,bonus:[{stat:g.WB.Strength,value:-20}],cost:1,requiredArmorAffinity:0,hash:2483898431},[u.U.WhisperOfFractures]:{id:u.U.WhisperOfFractures,name:"Whisper of Fractures",description:"Your melee energy recharges faster when you are near two or more targets.",type:t.O.Stasis,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:537774542},[u.U.WhisperOfImpetus]:{id:u.U.WhisperOfImpetus,name:"Whisper of Impetus",description:"Damaging targets with a Stasis melee reloads your stowed weapons and grants you a temporary boost to weapon ready speed.",type:t.O.Stasis,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:537774543},[u.U.WhisperOfTorment]:{id:u.U.WhisperOfTorment,name:"Whisper of Torment",description:"You gain grenade energy each time you take damage from targets. Having Frost Armor increases the amount of energy gained.",type:t.O.Stasis,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:537774541},[u.U.EchoOfExpulsion]:{id:u.U.EchoOfExpulsion,name:"Echo of Expulsion",description:"Void ability final blows cause targets to explode.",type:t.O.Void,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984665},[u.U.EchoOfProvision]:{id:u.U.EchoOfProvision,name:"Echo of Provision",description:"Damaging targets with grenades grants melee energy.",type:t.O.Void,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:2272984664},[u.U.EchoOfPersistence]:{id:u.U.EchoOfPersistence,name:"Echo of Persistence",description:"Void buffs applied to you (Invisibility, Overshield, and Devour) have increased duration.",type:t.O.Void,bonus:[{stat:g.AR.ClassAbilityRegenerationStat,value:-10}],cost:1,requiredArmorAffinity:0,hash:2272984671},[u.U.EchoOfLeeching]:{id:u.U.EchoOfLeeching,name:"Echo of Leeching",description:"Melee final blows start health regeneration for you and nearby allies.",type:t.O.Void,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984670},[u.U.EchoOfDomineering]:{id:u.U.EchoOfDomineering,name:"Echo of Domineering",description:"After suppressing a target, you gain greatly increased mobility for a short duration, and your equipped weapon is reloaded from reserves.\n\nDefeating suppressed targets creates a Void Breach.",type:t.O.Void,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984657},[u.U.EchoOfDilation]:{id:u.U.EchoOfDilation,name:"Echo of Dilation",description:"While crouched, you sneak faster and gain enhanced radar resolution.",type:t.O.Void,bonus:[{stat:g.WB.Mobility,value:10},{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2272984656},[u.U.EchoOfUndermining]:{id:u.U.EchoOfUndermining,name:"Echo of Undermining",description:"Your Void grenades weaken targets.",type:t.O.Void,bonus:[{stat:g.WB.Discipline,value:-20}],cost:1,requiredArmorAffinity:0,hash:2272984668},[u.U.EchoOfInstability]:{id:u.U.EchoOfInstability,name:"Echo of Instability",description:"Defeating targets with grenades grants Volatile Rounds to your Void weapons.",type:t.O.Void,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2661180600},[u.U.EchoOfHarvest]:{id:u.U.EchoOfHarvest,name:"Echo of Harvest",description:"Defeating weakened targets creates an Orb of Power and a Void Breach.",type:t.O.Void,bonus:[{stat:g.WB.Intellect,value:-10}],cost:1,requiredArmorAffinity:0,hash:2661180601},[u.U.EchoOfObscurity]:{id:u.U.EchoOfObscurity,name:"Echo of Obscurity",description:"Finisher final blows grant Invisibility.",type:t.O.Void,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:2661180602},[u.U.EchoOfStarvation]:{id:u.U.EchoOfStarvation,name:"Echo of Starvation",description:"Picking up a Void Breach or an Orb of Power grants Devour.",type:t.O.Void,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:2661180603},[u.U.EchoOfVigilance]:{id:u.U.EchoOfVigilance,name:"Echo of Vigilance",description:"Defeating a target while your shields are depleted grants you a temporary Void overshield.",type:t.O.Void,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:3854948621},[u.U.EmberOfBenelovence]:{id:u.U.EmberOfBenelovence,name:"Ember of Benevolence",description:"Applying restoration, cure, or radiant to allies grants increased grenade, melee, and class ability regeneration for a short duration.",type:t.O.Solar,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132292},[u.U.EmberOfBeams]:{id:u.U.EmberOfBeams,name:"Ember of Beams",description:"Your Solar Super projectiles have stronger target acquisition.",type:t.O.Solar,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:362132295},[u.U.EmberOfEmpyrean]:{id:u.U.EmberOfEmpyrean,name:"Ember of Empyrean",description:"Solar weapon or ability final blows extend the duration of restoration and radiant effects applied to you.",type:t.O.Solar,bonus:[{stat:g.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132294},[u.U.EmberOfCombustion]:{id:u.U.EmberOfCombustion,name:"Ember of Combustion",description:"Final blows with a Solar Super causes targets to ignite and creates a Firesprite.",type:t.O.Solar,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:362132289},[u.U.EmberOfChar]:{id:u.U.EmberOfChar,name:"Ember of Char",description:"Your Solar ignitions spread scorch to affected targets.",type:t.O.Solar,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:362132291},[u.U.EmberOfTempering]:{id:u.U.EmberOfTempering,name:"Ember of Tempering",description:"Solar weapon final blows grant you and your allies increased recovery for a short duration. Stacks 3 times.\n\nWhile Ember of Tempering is active, your weapons have increased airborne effectiveness, and your Solar weapon final blows create a Firesprite.",type:t.O.Solar,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132290},[u.U.EmberOfEruption]:{id:u.U.EmberOfEruption,name:"Ember of Eruption",description:"Your Solar ignitions have increased area of effect.",type:t.O.Solar,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276348},[u.U.EmberOfWonder]:{id:u.U.EmberOfWonder,name:"Ember of Wonder",description:"Rapidly defeating multiple targets with Solar ignitions generates an Orb of Power.",type:t.O.Solar,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276350},[u.U.EmberOfSearing]:{id:u.U.EmberOfSearing,name:"Ember of Searing",description:"Defeating scorched targets grants melee energy and creates a Firesprite.",type:t.O.Solar,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:1051276351},[u.U.EmberOfTorches]:{id:u.U.EmberOfTorches,name:"Ember of Torches",description:"Powered melee attacks against combatants make you and nearby allies radiant.",type:t.O.Solar,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:362132288},[u.U.EmberOfMercy]:{id:u.U.EmberOfMercy,name:"Ember of Mercy",description:"When you revive an ally, you and other nearby allies gain restoration.\n\nPicking up a Firesprite grants restoration.",type:t.O.Solar,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:4180586737},[u.U.SparkOfBrilliance]:{id:u.U.SparkOfBrilliance,name:"Spark of Brilliance",description:"Defeating a blinded target with precision damage creates a blinding explosion.",type:t.O.Arc,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705905},[u.U.SparkOfFeedback]:{id:u.U.SparkOfFeedback,name:"Spark of Feedback",description:"Taking melee damage briefly increases your outgoing melee damage.",type:t.O.Arc,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705907},[u.U.SparkOfDischarge]:{id:u.U.SparkOfDischarge,name:"Spark of Discharge",description:"Arc weapon final blows have a chance to create an Ionic Trace.",type:t.O.Arc,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069362},[u.U.SparkOfFocus]:{id:u.U.SparkOfFocus,name:"Spark of Focus",description:"After sprinting for a short time, your class ability regeneration is increased.",type:t.O.Arc,bonus:[{stat:g.AR.ClassAbilityRegenerationStat,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069360},[u.U.SparkOfVolts]:{id:u.U.SparkOfVolts,name:"Spark of Volts",description:"Finishers make you amplified.",type:t.O.Arc,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:3277705904},[u.U.SparkOfResistance]:{id:u.U.SparkOfResistance,name:"Spark of Resistance",description:"While surrounded by combatants, you are more resistant to incoming damage.",type:t.O.Arc,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:1727069366},[u.U.SparkOfShock]:{id:u.U.SparkOfShock,name:"Spark of Shock",description:"Your Arc grenades jolt targets.",type:t.O.Arc,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:1727069364},[u.U.ThreadOfFury]:{id:u.U.ThreadOfFury,name:"Thread of Fury",description:"Damaging targets with a Tangle grants melee energy.",type:t.O.Strand,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:4208512219},[u.U.ThreadOfAscent]:{id:u.U.ThreadOfAscent,name:"Thread of Ascent",description:"Activating your grenade ability reloads your equipped weapon and grants bonus airborne effectiveness and handling for a short duration.",type:t.O.Strand,bonus:[{stat:g.WB.Mobility,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512216},[u.U.ThreadOfFinality]:{id:u.U.ThreadOfFinality,name:"Thread of Finality",description:"Finisher final blows create Threadlings.",type:t.O.Strand,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512217},[u.U.ThreadOfWarding]:{id:u.U.ThreadOfWarding,name:"Thread of Warding",description:"Picking up an Orb of Power grants Woven Mail.",type:t.O.Strand,bonus:[{stat:g.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:4208512222},[u.U.ThreadOfTransmutation]:{id:u.U.ThreadOfTransmutation,name:"Thread of Transmutation",description:"While you have Woven Mail, weapon final blows create a Tangle.",type:t.O.Strand,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512221},[u.U.ThreadOfEvolution]:{id:u.U.ThreadOfEvolution,name:"Thread of Evolution",description:"Threadlings travel farther and deal additional damage.",type:t.O.Strand,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512211},[u.U.ThreadOfBinding]:{id:u.U.ThreadOfBinding,name:"Thread of Binding",description:"Super final blows emit a suspending burst from the target.",type:t.O.Strand,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:3192552688},[u.U.ThreadOfGeneration]:{id:u.U.ThreadOfGeneration,name:"Thread of Generation",description:"Dealing damage generates grenade energy.",type:t.O.Strand,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:3192552691},[u.U.ThreadOfPropagation]:{id:u.U.ThreadOfPropagation,name:"Thread of Propagation",description:"Powered melee final blows grant your Strand weapons Unraveling Rounds.",type:t.O.Strand,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:4208512210},[u.U.FacetOfAwakening]:{id:u.U.FacetOfAwakening,name:"Facet of Awakening",description:"Rapid elemental final blows and Super final blows generate an elemental pickup of the matching damage type.",type:t.O.Prismatic,bonus:[{stat:g.WB.Resilience,value:10}],cost:1,requiredArmorAffinity:0,hash:124726505},[u.U.FacetOfCourage]:{id:u.U.FacetOfCourage,name:"Facet of Courage",description:"Your Light abilities deal increased damage to targets afflicted with Darkness debuffs.",type:t.O.Prismatic,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922124},[u.U.FacetOfDawn]:{id:u.U.FacetOfDawn,name:"Facet of Dawn",description:"Powered melee hits against targets make you Radiant. Powered melee final blows make both you and nearby allies Radiant.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:-10}],cost:1,requiredArmorAffinity:0,hash:2626922126},[u.U.FacetOfDefiance]:{id:u.U.FacetOfDefiance,name:"Facet of Defiance",description:"Finishers create a detonation that either jolts, scorches, slows, severs, or makes targets volatile based on the damage type of your equipped Super.",type:t.O.Prismatic,bonus:[{stat:g.WB.Recovery,value:10}],cost:1,requiredArmorAffinity:0,hash:74393640},[u.U.FacetOfDevotion]:{id:u.U.FacetOfDevotion,name:"Facet of Devotion",description:"Defeating targets afflicted with a Darkness debuff grants bonus Light Transcendence energy.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922125},[u.U.FacetOfDominance]:{id:u.U.FacetOfDominance,name:"Facet of Dominance",description:"Your Void grenades weaken targets, and your Arc grenades jolt targets.",type:t.O.Prismatic,bonus:[{stat:g.WB.Discipline,value:-10}],cost:1,requiredArmorAffinity:0,hash:124726504},[u.U.FacetOfGrace]:{id:u.U.FacetOfGrace,name:"Facet of Grace",description:"Defeating targets with Kinetic weapons grants you bonus Transcendence energy. Defeating targets with your Super grants you and nearby allies bonus Transcendence energy.",type:t.O.Prismatic,bonus:[{stat:g.WB.Resilience,value:-10}],cost:1,requiredArmorAffinity:0,hash:2626922121},[u.U.FacetOfHonor]:{id:u.U.FacetOfHonor,name:"Facet of Honor",description:"Collecting an elemental pickup or destroying a Tangle grants Transcendence energy of the same type.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:124726501},[u.U.FacetOfJustice]:{id:u.U.FacetOfJustice,name:"Facet of Justice",description:"While Transcendent, your ability final blows explode.",type:t.O.Prismatic,bonus:[{stat:g.WB.Intellect,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922115},[u.U.FacetOfProtection]:{id:u.U.FacetOfProtection,name:"Facet of Protection",description:"While surrounded by enemies, you are more resistant to incoming damage.",type:t.O.Prismatic,bonus:[{stat:g.WB.Strength,value:10}],cost:1,requiredArmorAffinity:0,hash:2626922120},[u.U.FacetOfPurpose]:{id:u.U.FacetOfPurpose,name:"Facet of Purpose",description:"Picking up an Orb of Power grants either Amplified, Restoration, Frost Armor, Woven Mail, or Overshield, based on the damage type of your equipped super.",type:t.O.Prismatic,bonus:[{stat:g.WB.Recovery,value:-10}],cost:1,requiredArmorAffinity:0,hash:124726498},[u.U.FacetOfRuin]:{id:u.U.FacetOfRuin,name:"Facet of Ruin",description:"Increases the size and damage of the burst when you shatter a Stasis crystal or frozen target and increases the area of effect of Solar ignitions.",type:t.O.Prismatic,bonus:[{stat:g.WB.Mobility,value:10}],cost:1,requiredArmorAffinity:0,hash:124726499},[u.U.FacetOfSacrifice]:{id:u.U.FacetOfSacrifice,name:"Facet of Sacrifice",description:"While you have a Light buff, ability final blows grant bonus Darkness Transcendence energy.",type:t.O.Prismatic,bonus:[{stat:g.WB.Discipline,value:10}],cost:1,requiredArmorAffinity:0,hash:124726502}}},3244:(ht,at,_)=>{_.d(at,{Io:()=>t,Qj:()=>u,dM:()=>g});const u=5,t=-1,g=-2},4682:(ht,at,_)=>{_.d(at,{v:()=>t});var u=_(6438);class t extends u.ZP{constructor(){super("d2armorpicker-v2"),this.version(25).stores({manifestArmor:"id++, hash, isExotic",inventoryArmor:"id++, itemInstanceId, isExotic, hash, name, masterworked, clazz, slot, source",manifestCollectibles:"id++, hash",vendorNames:"id++, vendorId"})}}},6471:(ht,at,_)=>{_.d(at,{y:()=>u});var u=(()=>{return(t=u||(u={}))[t.ArmorSlotNone=0]="ArmorSlotNone",t[t.ArmorSlotHelmet=1]="ArmorSlotHelmet",t[t.ArmorSlotGauntlet=2]="ArmorSlotGauntlet",t[t.ArmorSlotChest=3]="ArmorSlotChest",t[t.ArmorSlotLegs=4]="ArmorSlotLegs",t[t.ArmorSlotClass=5]="ArmorSlotClass",u;var t})()},1043:(ht,at,_)=>{_.d(at,{AR:()=>y,Bd:()=>Nt,DH:()=>gt,ED:()=>Et,ID:()=>Rt,K9:()=>I,Mi:()=>M,Pn:()=>b,WB:()=>g,X9:()=>vt,cM:()=>Mt,iV:()=>t,kw:()=>wt,lp:()=>ot});var u=_(8333),t=(()=>{return(x=t||(t={}))[x.NONE=0]="NONE",x[x.MINOR_MOBILITY=1]="MINOR_MOBILITY",x[x.MAJOR_MOBILITY=2]="MAJOR_MOBILITY",x[x.ARTIFICE_MOBILITY=3]="ARTIFICE_MOBILITY",x[x.MINOR_RESILIENCE=4]="MINOR_RESILIENCE",x[x.MAJOR_RESILIENCE=5]="MAJOR_RESILIENCE",x[x.ARTIFICE_RESILIENCE=6]="ARTIFICE_RESILIENCE",x[x.MINOR_RECOVERY=7]="MINOR_RECOVERY",x[x.MAJOR_RECOVERY=8]="MAJOR_RECOVERY",x[x.ARTIFICE_RECOVERY=9]="ARTIFICE_RECOVERY",x[x.MINOR_DISCIPLINE=10]="MINOR_DISCIPLINE",x[x.MAJOR_DISCIPLINE=11]="MAJOR_DISCIPLINE",x[x.ARTIFICE_DISCIPLINE=12]="ARTIFICE_DISCIPLINE",x[x.MINOR_INTELLECT=13]="MINOR_INTELLECT",x[x.MAJOR_INTELLECT=14]="MAJOR_INTELLECT",x[x.ARTIFICE_INTELLECT=15]="ARTIFICE_INTELLECT",x[x.MINOR_STRENGTH=16]="MINOR_STRENGTH",x[x.MAJOR_STRENGTH=17]="MAJOR_STRENGTH",x[x.ARTIFICE_STRENGTH=18]="ARTIFICE_STRENGTH",t;var x})(),g=(()=>{return(x=g||(g={}))[x.Mobility=0]="Mobility",x[x.Resilience=1]="Resilience",x[x.Recovery=2]="Recovery",x[x.Discipline=3]="Discipline",x[x.Intellect=4]="Intellect",x[x.Strength=5]="Strength",g;var x})();const I={[t.NONE]:[g.Strength,0,0,0],[t.MINOR_MOBILITY]:[g.Mobility,5,1,1703647492],[t.MAJOR_MOBILITY]:[g.Mobility,10,3,4183296050],[t.ARTIFICE_MOBILITY]:[g.Mobility,3,0,2322202118],[t.MINOR_RESILIENCE]:[g.Resilience,5,2,2532323436],[t.MAJOR_RESILIENCE]:[g.Resilience,10,4,1180408010],[t.ARTIFICE_RESILIENCE]:[g.Resilience,3,0,199176566],[t.MINOR_RECOVERY]:[g.Recovery,5,2,1237786518],[t.MAJOR_RECOVERY]:[g.Recovery,10,4,4204488676],[t.ARTIFICE_RECOVERY]:[g.Recovery,3,0,539459624],[t.MINOR_DISCIPLINE]:[g.Discipline,5,1,4021790309],[t.MAJOR_DISCIPLINE]:[g.Discipline,10,3,1435557120],[t.ARTIFICE_DISCIPLINE]:[g.Discipline,3,0,617569843],[t.MINOR_INTELLECT]:[g.Intellect,5,2,350061697],[t.MAJOR_INTELLECT]:[g.Intellect,10,4,2724608735],[t.ARTIFICE_INTELLECT]:[g.Intellect,3,0,3160845295],[t.MINOR_STRENGTH]:[g.Strength,5,1,2639422088],[t.MAJOR_STRENGTH]:[g.Strength,10,3,4287799666],[t.ARTIFICE_STRENGTH]:[g.Strength,3,0,2507624050]},M={[g.Mobility]:"Mobility",[g.Resilience]:"Resilience",[g.Recovery]:"Recovery",[g.Discipline]:"Discipline",[g.Intellect]:"Intellect",[g.Strength]:"Strength"},wt={[g.Mobility]:2996146975,[g.Resilience]:392767087,[g.Recovery]:1943323491,[g.Discipline]:1735777505,[g.Intellect]:144602215,[g.Strength]:4244567218},ot={[g.Mobility]:"https://www.bungie.net/common/destiny2_content/icons/e26e0e93a9daf4fdd21bf64eb9246340.png",[g.Resilience]:"https://www.bungie.net/common/destiny2_content/icons/202ecc1c6febeb6b97dafc856e863140.png",[g.Recovery]:"https://www.bungie.net/common/destiny2_content/icons/128eee4ee7fc127851ab32eac6ca91cf.png",[g.Discipline]:"https://www.bungie.net/common/destiny2_content/icons/79be2d4adef6a19203f7385e5c63b45b.png",[g.Intellect]:"https://www.bungie.net/common/destiny2_content/icons/d1c154469670e9a592c9d4cbdcae5764.png",[g.Strength]:"https://www.bungie.net/common/destiny2_content/icons/ea5af04ccd6a3470a44fd7bb0f66e2f7.png"};var y=(()=>{return(x=y||(y={}))[x.ClassAbilityRegenerationStat=10]="ClassAbilityRegenerationStat",y;var x})(),b=(()=>{return(x=b||(b={}))[x.None=0]="None",x[x.SlotCrotasEnd=2]="SlotCrotasEnd",x[x.SlotRootOfNightmares=3]="SlotRootOfNightmares",x[x.SlotKingsFall=4]="SlotKingsFall",x[x.SlotVowOfTheDisciple=5]="SlotVowOfTheDisciple",x[x.SlotVaultOfGlass=6]="SlotVaultOfGlass",x[x.SlotDeepStoneCrypt=7]="SlotDeepStoneCrypt",x[x.SlotGardenOfSalvation=8]="SlotGardenOfSalvation",x[x.SlotLastWish=9]="SlotLastWish",x[x.SlotArtifice=10]="SlotArtifice",x[x.PerkIronBanner=11]="PerkIronBanner",x[x.SlotNightmare=12]="SlotNightmare",x[x.GuardianGamesClassItem=18]="GuardianGamesClassItem",x[x.PerkEchoesOfGlory=20]="PerkEchoesOfGlory",x[x.SlotSalvationsEdge=21]="SlotSalvationsEdge",x[x.COUNT=22]="COUNT",b;var x})();const Et={1760565003:b.PerkEchoesOfGlory},Mt={[b.None]:"None",[b.SlotCrotasEnd]:"Crota's End Modslot",[b.SlotRootOfNightmares]:"Root of Nightmares Modslot",[b.SlotKingsFall]:"King's Fall Modslot",[b.SlotVowOfTheDisciple]:"Vow of the Disciple Modslot",[b.SlotVaultOfGlass]:"Vault of Glass Modslot",[b.SlotDeepStoneCrypt]:"Deep Stone Crypt Modslot",[b.SlotGardenOfSalvation]:"Garden of Salvation Modslot",[b.SlotLastWish]:"Last Wish Modslot",[b.SlotArtifice]:"Artifice Modslot",[b.PerkIronBanner]:"Iron Banner Perk",[b.SlotNightmare]:"Nightmare Hunt Modslot",[b.GuardianGamesClassItem]:"Guardian Games",[b.PerkEchoesOfGlory]:"Echoes of Glory Perk",[b.SlotSalvationsEdge]:"Salvation's Edge Modslot",[b.COUNT]:""},vt={[b.None]:"https://www.bungie.net/img/misc/missing_icon_d2.png",[b.SlotCrotasEnd]:"https://www.bungie.net/common/destiny2_content/icons/7ddce334fe8391848f408227439c1d7a.png",[b.SlotRootOfNightmares]:"https://www.bungie.net/common/destiny2_content/icons/f2b6ec58e14244e4972705897667c246.png",[b.SlotKingsFall]:"https://www.bungie.net/common/destiny2_content/icons/0e515c7cf25a2f2350b788e6f5b7f8eb.png",[b.SlotVowOfTheDisciple]:"https://www.bungie.net/common/destiny2_content/icons/b84b6ea72dd05de7123aa2ae87ba0d6a.png",[b.SlotVaultOfGlass]:"https://www.bungie.net/common/destiny2_content/icons/7c9a2d95113de19c5acdbed57775abf4.png",[b.SlotDeepStoneCrypt]:"https://www.bungie.net/common/destiny2_content/icons/d6452d010cfe72a51a9089ec68ab223c.png",[b.SlotGardenOfSalvation]:"https://www.bungie.net/common/destiny2_content/icons/53d6e3505cd03d4026b3dbbd9ccc19b6.jpg",[b.SlotLastWish]:"https://www.bungie.net/common/destiny2_content/icons/76f0c1520fa384ceb27bd2469225dd8a.png",[b.SlotArtifice]:"https://www.bungie.net/common/destiny2_content/icons/46eec78bb7864641bbd7ba1fd4f9f248.png",[b.PerkIronBanner]:"https://bungie.net/common/destiny2_content/icons/DestinyActivityModeDefinition_fe57052d7cf971f7502daa75a2ca2437.png",[b.SlotNightmare]:"https://www.bungie.net/common/destiny2_content/icons/53d6e3505cd03d4026b3dbbd9ccc19b6.jpg",[b.GuardianGamesClassItem]:"https://www.bungie.net/common/destiny2_content/icons/DestinyEventCardDefinition_ce6c2cf855dce694bcc89803b6bc44b7.png",[b.SlotSalvationsEdge]:"https://www.bungie.net/common/destiny2_content/icons/f4a1f99b49ecf412726d71ea9ee15540.png",[b.PerkEchoesOfGlory]:"https://www.bungie.net/common/destiny2_content/icons/c67322c917e16f3b8a4cb962e3f11166.png",[b.COUNT]:""},gt={[b.SlotCrotasEnd]:717667840,[b.SlotRootOfNightmares]:4144354978,[b.SlotKingsFall]:1728096240,[b.SlotVowOfTheDisciple]:2447143568,[b.SlotVaultOfGlass]:3738398030,[b.SlotDeepStoneCrypt]:4055462131,[b.SlotGardenOfSalvation]:706611068,[b.SlotLastWish]:1679876242,[b.SlotArtifice]:3727270518,[b.PerkIronBanner]:2472875850,[b.SlotNightmare]:1180997867,[b.SlotSalvationsEdge]:4059283783,[b.PerkEchoesOfGlory]:2352831367},Rt={[b.SlotCrotasEnd]:"modslot:crotasend",[b.SlotRootOfNightmares]:"modslot:rootofnightmares",[b.SlotKingsFall]:"modslot:kingsfall",[b.SlotVowOfTheDisciple]:"modslot:vowofthedisciple",[b.SlotVaultOfGlass]:"modslot:vaultofglass",[b.SlotDeepStoneCrypt]:"modslot:deepstonecrypt",[b.SlotGardenOfSalvation]:"modslot:gardenofsalvation",[b.SlotLastWish]:"modslot:lastwish",[b.SlotArtifice]:'perkname:"artifice armor"',[b.PerkIronBanner]:'perkname:"iron lord\'s pride"',[b.SlotNightmare]:"modslot:nightmare",[b.GuardianGamesClassItem]:"(hash:537041732 or hash:366019830 or hash:1013401891)",[b.PerkEchoesOfGlory]:'exactperk:"echoes of glory"',[b.SlotSalvationsEdge]:"(source:salvationsedge is:armor)"},Nt={1:{[u.O.Stasis]:873720784,[u.O.Void]:2453351420,[u.O.Solar]:2240888816,[u.O.Arc]:2328211300,[u.O.Strand]:3785442599,[u.O.Prismatic]:4282591831},0:{[u.O.Stasis]:613647804,[u.O.Void]:2842471112,[u.O.Solar]:2550323932,[u.O.Arc]:2932390016,[u.O.Strand]:242419885,[u.O.Prismatic]:1616346845},2:{[u.O.Stasis]:3291545503,[u.O.Void]:2849050827,[u.O.Solar]:3941205951,[u.O.Arc]:3168997075,[u.O.Strand]:4204413574,[u.O.Prismatic]:3893112950}}},1650:(ht,at,_)=>{_.d(at,{w:()=>u});var u=(()=>{return(t=u||(u={}))[t.None=0]="None",t[t.ReduceUsedModSockets=1]="ReduceUsedModSockets",t[t.ReduceUsedModPoints=2]="ReduceUsedModPoints",u;var t})()},7580:(ht,at,_)=>{_.d(at,{U:()=>u});var u=(()=>{return(t=u||(u={}))[t.WhisperOfDurance=1e3]="WhisperOfDurance",t[t.WhisperOfChains=1001]="WhisperOfChains",t[t.WhisperOfConduction=1002]="WhisperOfConduction",t[t.WhisperOfBonds=1101]="WhisperOfBonds",t[t.WhisperOfHunger=1102]="WhisperOfHunger",t[t.WhisperOfFractures=1103]="WhisperOfFractures",t[t.WhisperOfTorment=1104]="WhisperOfTorment",t[t.EchoOfExpulsion=1200]="EchoOfExpulsion",t[t.EchoOfProvision=1201]="EchoOfProvision",t[t.EchoOfPersistence=1202]="EchoOfPersistence",t[t.EchoOfLeeching=1203]="EchoOfLeeching",t[t.EchoOfDomineering=1204]="EchoOfDomineering",t[t.EchoOfDilation=1205]="EchoOfDilation",t[t.EchoOfUndermining=1206]="EchoOfUndermining",t[t.EchoOfInstability=1207]="EchoOfInstability",t[t.EchoOfHarvest=1208]="EchoOfHarvest",t[t.EchoOfObscurity=1209]="EchoOfObscurity",t[t.EchoOfStarvation=1210]="EchoOfStarvation",t[t.EchoOfVigilance=1211]="EchoOfVigilance",t[t.EmberOfBenelovence=1300]="EmberOfBenelovence",t[t.EmberOfBeams=1301]="EmberOfBeams",t[t.EmberOfEmpyrean=1302]="EmberOfEmpyrean",t[t.EmberOfCombustion=1303]="EmberOfCombustion",t[t.EmberOfChar=1304]="EmberOfChar",t[t.EmberOfTempering=1305]="EmberOfTempering",t[t.EmberOfEruption=1306]="EmberOfEruption",t[t.EmberOfWonder=1307]="EmberOfWonder",t[t.EmberOfSearing=1308]="EmberOfSearing",t[t.EmberOfTorches=1309]="EmberOfTorches",t[t.EmberOfMercy=1310]="EmberOfMercy",t[t.SparkOfBrilliance=1400]="SparkOfBrilliance",t[t.SparkOfFeedback=1401]="SparkOfFeedback",t[t.SparkOfDischarge=1402]="SparkOfDischarge",t[t.SparkOfFocus=1403]="SparkOfFocus",t[t.SparkOfVolts=1404]="SparkOfVolts",t[t.SparkOfResistance=1405]="SparkOfResistance",t[t.SparkOfShock=1406]="SparkOfShock",t[t.ThreadOfFury=1600]="ThreadOfFury",t[t.ThreadOfAscent=1601]="ThreadOfAscent",t[t.ThreadOfFinality=1602]="ThreadOfFinality",t[t.ThreadOfWarding=1603]="ThreadOfWarding",t[t.ThreadOfTransmutation=1604]="ThreadOfTransmutation",t[t.ThreadOfEvolution=1605]="ThreadOfEvolution",t[t.ThreadOfBinding=1606]="ThreadOfBinding",t[t.ThreadOfGeneration=1607]="ThreadOfGeneration",t[t.ThreadOfPropagation=1608]="ThreadOfPropagation",t[t.WhisperOfImpetus=537774543]="WhisperOfImpetus",t[t.FacetOfAwakening=1700]="FacetOfAwakening",t[t.FacetOfCourage=1701]="FacetOfCourage",t[t.FacetOfDawn=1702]="FacetOfDawn",t[t.FacetOfDefiance=1703]="FacetOfDefiance",t[t.FacetOfDevotion=1704]="FacetOfDevotion",t[t.FacetOfDominance=1705]="FacetOfDominance",t[t.FacetOfGrace=1706]="FacetOfGrace",t[t.FacetOfHonor=1707]="FacetOfHonor",t[t.FacetOfJustice=1708]="FacetOfJustice",t[t.FacetOfProtection=1709]="FacetOfProtection",t[t.FacetOfPurpose=1710]="FacetOfPurpose",t[t.FacetOfRuin=1711]="FacetOfRuin",t[t.FacetOfSacrifice=1712]="FacetOfSacrifice",u;var t})()},8333:(ht,at,_)=>{_.d(at,{O:()=>u});var u=(()=>{return(t=u||(u={}))[t.CombatStyleMod=0]="CombatStyleMod",t[t.Stasis=1]="Stasis",t[t.Void=2]="Void",t[t.Solar=3]="Solar",t[t.Arc=4]="Arc",t[t.Strand=5]="Strand",t[t.Prismatic=6]="Prismatic",u;var t})()},4661:(ht,at,_)=>{_.d(at,{V:()=>R});var u=_(4859),t=_(9549),g=_(4385),I=_(3238),M=_(7314),wt=_(4144),ot=_(455),y=_(2143),b=_(3546),Et=_(266),Mt=_(3162),vt=_(7392),gt=_(6308),Rt=_(8739),Nt=_(3683),x=_(3217),_t=_(811),st=_(6338),Y=_(7084),ct=_(5412),Ht=_(7009),Lt=_(1572),f=_(3848),C=_(7331),U=_(3267),E=_(4006),F=_(9814),J=_(4650);let R=(()=>{class c{}return c.\u0275fac=function(T){return new(T||c)},c.\u0275mod=J.oAB({type:c}),c.\u0275inj=J.cJS({imports:[u.ot,t.lN,g.LD,I.Ng,M.KP,wt.c,ot.rP,y.p0,b.QW,Et.AV,Mt.Cv,vt.Ps,gt.JX,Rt.TU,Nt.g0,x.Tx,_t.vV,st.ie,Y.To,ct.Is,Ht.ZX,Lt.Cq,f.Nh,C.Hi,U.SJ,E.UX,E.u5,F.o9,F.o9,E.UX,E.u5,u.ot,t.lN,g.LD,I.Ng,M.KP,wt.c,ot.rP,y.p0,b.QW,Et.AV,Mt.Cv,vt.Ps,gt.JX,Rt.TU,Nt.g0,x.Tx,_t.vV,st.ie,Y.To,ct.Is,Ht.ZX,Lt.Cq,f.Nh,C.Hi,U.SJ]}),c})()},6982:(ht,at,_)=>{_.d(at,{jG:()=>Ht,_1:()=>Lt});var u=_(5861),t=_(6471),g=_(3244),I=_(443),M=_(1043),wt=_(2340);const ot={1:[[2,1,0,11],[2,3,0,21],[2,1,1,21],[2,1,2,31]],2:[[4,0,0,12],[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,0,2,32]],3:[[1,0,0,3],[1,2,0,13],[1,0,1,13],[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,2,2,33]],4:[[3,1,0,14],[3,3,0,24],[3,1,1,24],[3,1,2,34]],5:[[0,1,0,5],[5,0,0,15],[0,3,0,15],[0,1,1,15],[5,2,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,0,2,35],[0,3,2,35]],6:[[2,0,0,6],[2,2,0,16],[2,0,1,16],[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,2,2,36],[2,0,3,36],[2,2,3,46]],7:[[4,1,0,17],[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,1,2,37],[4,1,3,47]],8:[[1,1,0,8],[1,3,0,18],[1,1,1,18],[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38]],9:[[3,0,0,9],[3,2,0,19],[3,0,1,19],[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,2,2,39],[3,0,3,39],[3,2,3,49]],10:[[0,2,0,10],[0,0,1,10],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,1,2,40],[0,2,3,40],[5,1,3,50]],11:[[2,1,0,11],[2,3,0,21],[2,1,1,21],[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41]],12:[[4,0,0,12],[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,2,2,42],[4,0,3,42],[4,2,3,52]],13:[[1,2,0,13],[1,0,1,13],[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43]],14:[[3,1,0,14],[3,3,0,24],[3,1,1,24],[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44]],15:[[5,0,0,15],[0,3,0,15],[0,1,1,15],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,2,2,45],[5,0,3,45],[5,2,3,55]],16:[[2,2,0,16],[2,0,1,16],[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46]],17:[[4,1,0,17],[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],18:[[1,3,0,18],[1,1,1,18],[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38],[1,1,4,48]],19:[[3,2,0,19],[3,0,1,19],[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49]],20:[[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[5,1,4,60]],21:[[2,3,0,21],[2,1,1,21],[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41],[2,1,4,51]],22:[[4,2,0,22],[4,0,1,22],[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52]],23:[[1,4,0,23],[1,2,1,23],[1,0,2,23],[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43],[1,0,4,43]],24:[[3,3,0,24],[3,1,1,24],[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44],[3,1,4,54]],25:[[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55]],26:[[2,4,0,26],[2,2,1,26],[2,0,2,26],[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46],[2,0,5,56]],27:[[4,3,0,27],[4,1,1,27],[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],28:[[1,5,0,28],[1,3,1,28],[1,1,2,28],[1,3,2,38],[1,1,3,38],[1,1,4,48]],29:[[3,4,0,29],[3,2,1,29],[3,0,2,29],[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49],[3,0,5,59]],30:[[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],31:[[2,5,0,31],[2,3,1,31],[2,1,2,31],[2,3,2,41],[2,1,3,41],[2,1,4,51]],32:[[4,4,0,32],[4,2,1,32],[4,0,2,32],[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52],[4,0,5,62]],33:[[1,4,1,33],[1,2,2,33],[1,0,3,33],[1,2,3,43],[1,0,4,43],[1,0,5,53]],34:[[3,5,0,34],[3,3,1,34],[3,1,2,34],[3,3,2,44],[3,1,3,44],[3,1,4,54]],35:[[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55],[5,0,5,65]],36:[[2,4,1,36],[2,2,2,36],[2,0,3,36],[2,2,3,46],[2,0,4,46],[2,0,5,56]],37:[[4,5,0,37],[4,3,1,37],[4,1,2,37],[4,3,2,47],[4,1,3,47],[4,1,4,57]],38:[[1,3,2,38],[1,1,3,38],[1,1,4,48]],39:[[3,4,1,39],[3,2,2,39],[3,0,3,39],[3,2,3,49],[3,0,4,49],[3,0,5,59]],40:[[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],41:[[2,3,2,41],[2,1,3,41],[2,1,4,51]],42:[[4,4,1,42],[4,2,2,42],[4,0,3,42],[4,2,3,52],[4,0,4,52],[4,0,5,62]],43:[[1,2,3,43],[1,0,4,43],[1,0,5,53]],44:[[3,3,2,44],[3,1,3,44],[3,1,4,54]],45:[[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[5,2,3,55],[5,0,4,55],[5,0,5,65]],46:[[2,2,3,46],[2,0,4,46],[2,0,5,56]],47:[[4,3,2,47],[4,1,3,47],[4,1,4,57]],48:[[1,1,4,48]],49:[[3,2,3,49],[3,0,4,49],[3,0,5,59]],50:[[5,3,2,50],[5,1,3,50],[0,0,5,50],[5,1,4,60]],51:[[2,1,4,51]],52:[[4,2,3,52],[4,0,4,52],[4,0,5,62]],53:[[1,0,5,53]],54:[[3,1,4,54]],55:[[5,2,3,55],[5,0,4,55],[5,0,5,65]],56:[[2,0,5,56]],57:[[4,1,4,57]],58:[],59:[[3,0,5,59]],60:[[5,1,4,60]],61:[],62:[[4,0,5,62]],63:[],64:[],65:[[5,0,5,65]]},y={1:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],2:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],3:[[1,0,0,3],[0,1,0,5],[0,0,1,10]],4:[[0,1,0,5],[2,0,0,6],[0,0,1,10]],5:[[0,1,0,5],[2,0,0,6],[0,0,1,10]],6:[[2,0,0,6],[1,1,0,8],[0,2,0,10],[0,0,1,10]],7:[[1,1,0,8],[3,0,0,9],[0,2,0,10],[0,0,1,10]],8:[[1,1,0,8],[3,0,0,9],[0,2,0,10],[0,0,1,10]],9:[[3,0,0,9],[0,2,0,10],[0,0,1,10],[2,1,0,11]],10:[[0,2,0,10],[0,0,1,10],[2,1,0,11],[4,0,0,12]],11:[[2,1,0,11],[4,0,0,12],[1,2,0,13],[1,0,1,13],[0,3,0,15],[0,1,1,15],[0,0,2,20]],12:[[4,0,0,12],[1,2,0,13],[1,0,1,13],[3,1,0,14],[0,3,0,15],[0,1,1,15],[0,0,2,20]],13:[[1,2,0,13],[1,0,1,13],[3,1,0,14],[5,0,0,15],[0,3,0,15],[0,1,1,15],[0,0,2,20]],14:[[3,1,0,14],[5,0,0,15],[0,3,0,15],[0,1,1,15],[2,2,0,16],[2,0,1,16],[0,0,2,20]],15:[[5,0,0,15],[0,3,0,15],[0,1,1,15],[2,2,0,16],[2,0,1,16],[4,1,0,17],[0,0,2,20]],16:[[2,2,0,16],[2,0,1,16],[4,1,0,17],[1,3,0,18],[1,1,1,18],[0,4,0,20],[0,2,1,20],[0,0,2,20]],17:[[4,1,0,17],[1,3,0,18],[1,1,1,18],[3,2,0,19],[3,0,1,19],[0,4,0,20],[0,2,1,20],[0,0,2,20]],18:[[1,1,1,18],[1,3,0,18],[3,2,0,19],[3,0,1,19],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20]],19:[[3,2,0,19],[3,0,1,19],[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[2,3,0,21],[2,1,1,21]],20:[[5,1,0,20],[0,4,0,20],[0,2,1,20],[0,0,2,20],[2,3,0,21],[2,1,1,21],[4,2,0,22],[4,0,1,22]],21:[[2,3,0,21],[2,1,1,21],[4,2,0,22],[4,0,1,22],[1,4,0,23],[1,2,1,23],[1,0,2,23],[0,5,0,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],22:[[4,2,0,22],[4,0,1,22],[1,4,0,23],[1,2,1,23],[1,0,2,23],[3,3,0,24],[3,1,1,24],[0,5,0,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],23:[[1,4,0,23],[1,2,1,23],[1,0,2,23],[3,3,0,24],[3,1,1,24],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[0,0,3,30]],24:[[3,3,0,24],[3,1,1,24],[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[2,4,0,26],[2,2,1,26],[2,0,2,26],[0,0,3,30]],25:[[5,2,0,25],[0,5,0,25],[5,0,1,25],[0,3,1,25],[0,1,2,25],[2,4,0,26],[2,2,1,26],[2,0,2,26],[4,3,0,27],[4,1,1,27],[0,0,3,30]],26:[[2,4,0,26],[2,2,1,26],[2,0,2,26],[4,3,0,27],[4,1,1,27],[1,5,0,28],[1,3,1,28],[1,1,2,28],[0,4,1,30],[0,2,2,30],[0,0,3,30]],27:[[4,3,0,27],[4,1,1,27],[1,5,0,28],[1,3,1,28],[1,1,2,28],[3,4,0,29],[3,2,1,29],[3,0,2,29],[0,4,1,30],[0,2,2,30],[0,0,3,30]],28:[[1,5,0,28],[1,3,1,28],[1,1,2,28],[3,4,0,29],[3,2,1,29],[3,0,2,29],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30]],29:[[3,4,0,29],[3,2,1,29],[3,0,2,29],[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[2,5,0,31],[2,3,1,31],[2,1,2,31]],30:[[5,3,0,30],[5,1,1,30],[0,4,1,30],[0,2,2,30],[0,0,3,30],[2,5,0,31],[2,3,1,31],[2,1,2,31],[4,4,0,32],[4,2,1,32],[4,0,2,32]],31:[[2,5,0,31],[2,3,1,31],[2,1,2,31],[4,4,0,32],[4,2,1,32],[4,0,2,32],[1,4,1,33],[1,2,2,33],[1,0,3,33],[0,3,2,35],[0,1,3,35],[0,0,4,40]],32:[[4,4,0,32],[4,2,1,32],[4,0,2,32],[1,4,1,33],[1,2,2,33],[1,0,3,33],[3,5,0,34],[3,3,1,34],[3,1,2,34],[0,3,2,35],[0,1,3,35],[0,0,4,40]],33:[[1,4,1,33],[1,2,2,33],[1,0,3,33],[3,5,0,34],[3,3,1,34],[3,1,2,34],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[0,0,4,40]],34:[[3,5,0,34],[3,3,1,34],[3,1,2,34],[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[2,4,1,36],[2,2,2,36],[2,0,3,36],[0,0,4,40]],35:[[5,4,0,35],[5,2,1,35],[5,0,2,35],[0,3,2,35],[0,1,3,35],[2,4,1,36],[2,2,2,36],[2,0,3,36],[4,5,0,37],[4,3,1,37],[4,1,2,37],[0,0,4,40]],36:[[2,4,1,36],[2,2,2,36],[2,0,3,36],[4,5,0,37],[4,3,1,37],[4,1,2,37],[1,3,2,38],[1,1,3,38],[0,2,3,40],[0,0,4,40]],37:[[4,5,0,37],[4,3,1,37],[4,1,2,37],[1,3,2,38],[1,1,3,38],[3,4,1,39],[3,2,2,39],[3,0,3,39],[0,2,3,40],[0,0,4,40]],38:[[1,3,2,38],[1,1,3,38],[3,4,1,39],[3,2,2,39],[3,0,3,39],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40]],39:[[3,4,1,39],[3,2,2,39],[3,0,3,39],[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[2,3,2,41],[2,1,3,41]],40:[[5,5,0,40],[5,3,1,40],[5,1,2,40],[0,2,3,40],[0,0,4,40],[2,3,2,41],[2,1,3,41],[4,4,1,42],[4,2,2,42],[4,0,3,42]],41:[[2,3,2,41],[2,1,3,41],[4,4,1,42],[4,2,2,42],[4,0,3,42],[1,2,3,43],[1,0,4,43],[0,1,4,45],[0,0,5,50]],42:[[4,4,1,42],[4,2,2,42],[4,0,3,42],[1,2,3,43],[1,0,4,43],[3,3,2,44],[3,1,3,44],[0,1,4,45],[0,0,5,50]],43:[[1,2,3,43],[1,0,4,43],[3,3,2,44],[3,1,3,44],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[0,0,5,50]],44:[[3,3,2,44],[3,1,3,44],[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[2,2,3,46],[2,0,4,46],[0,0,5,50]],45:[[5,4,1,45],[5,2,2,45],[5,0,3,45],[0,1,4,45],[2,2,3,46],[2,0,4,46],[4,3,2,47],[4,1,3,47],[0,0,5,50]],46:[[2,2,3,46],[2,0,4,46],[4,3,2,47],[4,1,3,47],[1,1,4,48],[0,0,5,50]],47:[[4,3,2,47],[4,1,3,47],[1,1,4,48],[3,2,3,49],[3,0,4,49],[0,0,5,50]],48:[[1,1,4,48],[3,2,3,49],[3,0,4,49],[5,3,2,50],[5,1,3,50],[0,0,5,50]],49:[[3,2,3,49],[3,0,4,49],[5,3,2,50],[5,1,3,50],[0,0,5,50],[2,1,4,51]],50:[[5,3,2,50],[5,1,3,50],[0,0,5,50],[2,1,4,51],[4,2,3,52],[4,0,4,52]],51:[[2,1,4,51],[4,2,3,52],[4,0,4,52],[1,0,5,53]],52:[[4,2,3,52],[4,0,4,52],[1,0,5,53],[3,1,4,54]],53:[[1,0,5,53],[3,1,4,54],[5,2,3,55],[5,0,4,55]],54:[[3,1,4,54],[5,2,3,55],[5,0,4,55],[2,0,5,56]],55:[[5,2,3,55],[5,0,4,55],[2,0,5,56],[4,1,4,57]],56:[[2,0,5,56],[4,1,4,57]],57:[[4,1,4,57],[3,0,5,59]],58:[[3,0,5,59],[5,1,4,60]],59:[[3,0,5,59],[5,1,4,60]],60:[[5,1,4,60],[4,0,5,62]],61:[[4,0,5,62]],62:[[4,0,5,62]],63:[[5,0,5,65]],64:[[5,0,5,65]],65:[[5,0,5,65]]};var b=_(1650);function Mt(f){return Object.prototype.hasOwnProperty.call(f,"armor")&&Object.prototype.hasOwnProperty.call(f,"usedArtifice")&&Object.prototype.hasOwnProperty.call(f,"usedMods")&&Object.prototype.hasOwnProperty.call(f,"statsWithMods")&&Object.prototype.hasOwnProperty.call(f,"classItemPerk")}function vt(f,C,U,E,F,J,R){var c=f.selectedExotics[0]||0;let D=C.slice();if((!E.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||E.hash!=c)&&f.armorPerks[t.y.ArmorSlotHelmet].fixed&&f.armorPerks[t.y.ArmorSlotHelmet].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotHelmet].value!=E.perk)return{valid:!1};if((!F.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||F.hash!=c)&&f.armorPerks[t.y.ArmorSlotGauntlet].fixed&&f.armorPerks[t.y.ArmorSlotGauntlet].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotGauntlet].value!=F.perk)return{valid:!1};if((!J.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||J.hash!=c)&&f.armorPerks[t.y.ArmorSlotChest].fixed&&f.armorPerks[t.y.ArmorSlotChest].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotChest].value!=J.perk)return{valid:!1};if((!R.isExotic||!f.assumeEveryExoticIsArtifice)&&(c<=0||R.hash!=c)&&f.armorPerks[t.y.ArmorSlotLegs].fixed&&f.armorPerks[t.y.ArmorSlotLegs].value!=M.Pn.None&&f.armorPerks[t.y.ArmorSlotLegs].value!=R.perk)return{valid:!1};if(f.armorPerks[t.y.ArmorSlotClass].fixed&&f.armorPerks[t.y.ArmorSlotClass].value!=M.Pn.None&&!U.has(f.armorPerks[t.y.ArmorSlotClass].value))return{valid:!1};D[E.perk]--,D[F.perk]--,D[J.perk]--,D[R.perk]--,c>0&&(E.hash==c?D[f.armorPerks[E.slot].value]--:F.hash==c?D[f.armorPerks[F.slot].value]--:J.hash==c?D[f.armorPerks[J.slot].value]--:R.hash==c&&D[f.armorPerks[R.slot].value]--);let T=0;for(let H=1;HC.minimumStatTiers[h].value||!C.allowExactStats&&Z[h]/10>=C.minimumStatTiers[h].value+1))return null;let ut=K.filter(h=>(!h.isExotic||!C.ignoreExistingExoticArtificeSlots)&&h.perk==M.Pn.SlotArtifice||C.assumeEveryLegendaryIsArtifice&&!h.isExotic||C.assumeEveryExoticIsArtifice&&h.isExotic).length;T&&(ut+=1);const it=[Math.max(0,10*C.minimumStatTiers[0].value-Z[0]),Math.max(0,10*C.minimumStatTiers[1].value-Z[1]),Math.max(0,10*C.minimumStatTiers[2].value-Z[2]),Math.max(0,10*C.minimumStatTiers[3].value-Z[3]),Math.max(0,10*C.minimumStatTiers[4].value-Z[4]),Math.max(0,10*C.minimumStatTiers[5].value-Z[5])];if(C.onlyShowResultsWithNoWastedStats)for(let h=0;h<6;h++){const L=10-Z[h]%10;it[h]=Math.max(it[h],L<10?L:0)}const Zt=[0,0,0,0,0,0];if(C.tryLimitWastedStats)for(let h=0;h<6;h++)0==it[h]&&!C.minimumStatTiers[h].fixed&&Z[h]<100&&Z[h]%10>0&&(Zt[h]=10-Z[h]%10);const xt=Zt.reduce((h,L)=>h+L,0),It=it[0]+it[1]+it[2]+it[3]+it[4]+it[5];if(It>50+3*ut)return null;let ft;if(ft=0==It&&0==xt?[]:ct(C,it,Zt,ut,c,C.modOptimizationStrategy),null==ft)return null;const w=[Math.max(0,100-Z[0]),Math.max(0,100-Z[1]),Math.max(0,100-Z[2]),Math.max(0,100-Z[3]),Math.max(0,100-Z[4]),Math.max(0,100-Z[5])];let P=[],N=[];for(let h=0;h<4;h++)for(let L=h+1;L<5;L++)for(let z=L+1;z<6;z++){let j=it.slice();if(j[h]=w[h],j[L]=w[L],j[z]=w[z],j[0]+j[1]+j[2]+j[3]+j[4]+j[5]<=65){P.push([h,L,z]);for(let Ot=z+1;Ot<6;Ot++){let bt=j.slice();bt[Ot]=w[Ot],bt[0]+bt[1]+bt[2]+bt[3]+bt[4]+bt[5]<=65&&N.push([h,L,z,Ot])}}}if(P.length>0){for(let h of P){const L=it.slice();for(let j of h)L[j]=w[j];null!=ct(C,L,[0,0,0,0,0,0],ut,c,b.w.None)&&f.statCombo3x100.add((1<=C.minimumStatTiers[h].value&&z>f.maximumPossibleTiers[h]/10&&!(Z[h]>=10*z);z--){const j=10-Z[h]%10;if(it[h]=Math.max(j<10?j:0,10*z-Z[h]),null!=ct(C,it,[0,0,0,0,0,0],ut,c,b.w.None)){f.maximumPossibleTiers[h]=10*z;break}}it[h]=L}if(D)return[];const et=ft.filter(h=>h%3==0),rt=ft.filter(h=>h%3!=0);for(let h of ft)Z[Math.floor((h-1)/3)]+=M.K9[h][1];const X=Lt(Z);return C.onlyShowResultsWithNoWastedStats&&X>0?null:function Et(f,C,U,E,F,J,R,c){return{armor:[f.id,C.id,U.id,E.id],usedArtifice:F,usedMods:J,classItemPerk:M.Pn.None,statsWithMods:R,statsWithoutMods:c}}(U,E,F,J,et,rt,Z,B)}function ct(f,C,U,E,F,J=b.w.None){const R=C[0]+C[1]+C[2]+C[3]+C[4]+C[5];if(R>65)return null;const c=f.onlyShowResultsWithNoWastedStats?ot:y,D=[c[C[0]]||[[0,0,0,0]],c[C[1]]||[[0,0,0,0]],c[C[2]]||[[0,0,0,0]],c[C[3]]||[[0,0,0,0]],c[C[4]]||[[0,0,0,0]],c[C[5]]||[[0,0,0,0]]];if(f.allowExactStats)for(let w=0;w<6;w++)f.minimumStatTiers[w].fixed&&C[w]>0&&(D[w]=ot[C[w]]||[[0,0,0,0]],D[w]=D[w].filter(P=>P[3]-C[w]<10));for(let w=0;w0){const P=c[U[w]].filter(N=>0==N[2]&&N[3]%10>0&&(U[w]+N[3])%10N+et[1]+et[2]:J==b.w.ReduceUsedModPoints?(P,N,et)=>P+ut[et]*N[1]+it[et]*N[2]:(P,N)=>P+N[3],0)}function xt(w,P=!1){const N=w.reduce((rt,X,h)=>[rt[0]+X[0],rt[1]+X[1],rt[2]+X[2],rt[3]+X[3]-C[h]],[0,0,0,0]);if(Zt(w)>K||N[0]>E||N[1]+N[2]>H||N[3]<0)return!1;if(!P||5==Z)return!0;let et=[];for(let rt=0;rtH)return!1;w.sort((N,et)=>et-N);for(let N=0;N0&&J!=b.w.None;t:for(let w of D[0])if(xt([w]))for(let P of D[1])if(xt([w,P]))for(let N of D[2])if(xt([w,P,N])&&!(It&&Zt([w,P,N])>=K))for(let et of D[3])if(xt([w,P,N,et])&&!(It&&Zt([w,P,N,et])>=K))for(let rt of D[4])if(xt([w,P,N,et,rt])&&!(It&&Zt([w,P,N,et,rt])>=K))e:for(let X of D[5]){let h=[w,P,N,et,rt,X];if(!xt(h,!0))continue;for(let z=0;z<6;z++)if(U[z]>0&&0==h[z][3]&&null!=k)continue e;let L=Zt(h);if(L100?f[M.WB.Mobility]-100:f[M.WB.Mobility]%10)+(f[M.WB.Resilience]>100?f[M.WB.Resilience]-100:f[M.WB.Resilience]%10)+(f[M.WB.Recovery]>100?f[M.WB.Recovery]-100:f[M.WB.Recovery]%10)+(f[M.WB.Discipline]>100?f[M.WB.Discipline]-100:f[M.WB.Discipline]%10)+(f[M.WB.Intellect]>100?f[M.WB.Intellect]-100:f[M.WB.Intellect]%10)+(f[M.WB.Strength]>100?f[M.WB.Strength]-100:f[M.WB.Strength]%10)}addEventListener("message",function(){var f=(0,u.Z)(function*({data:C}){const U=C.threadSplit,E=C.config;let F=C.selectedExotics,J=C.items;if(null==U||null==E||null==J)return;const R=Date.now();console.debug("START RESULTS BUILDER 2"),console.time(`total #${U.current}`),E.onlyShowResultsWithNoWastedStats=wt.N.featureFlags.enableZeroWaste&&E.onlyShowResultsWithNoWastedStats,wt.N.featureFlags.enableModslotLimitation||(E.maximumModSlots[t.y.ArmorSlotHelmet].value=5,E.maximumModSlots[t.y.ArmorSlotGauntlet].value=5,E.maximumModSlots[t.y.ArmorSlotChest].value=5,E.maximumModSlots[t.y.ArmorSlotLegs].value=5,E.maximumModSlots[t.y.ArmorSlotClass].value=5),console.log("Using config",C.config);let c=J.filter(W=>W.slot==t.y.ArmorSlotHelmet).filter(W=>!E.useFotlArmor||[199733460,2545426109,3224066584].indexOf(W.hash)>-1),D=J.filter(W=>W.slot==t.y.ArmorSlotGauntlet),T=J.filter(W=>W.slot==t.y.ArmorSlotChest),k=J.filter(W=>W.slot==t.y.ArmorSlotLegs);if(U.count>1){var K=[[c,c.length],[D,D.length],[T,T.length],[k,k.length]].sort((W,Ft)=>Ft[1]-W[1])[0][0],H=Math.round(K.length/U.count),Z=H*U.current,B=Z+H;U.current==U.count-1&&(B=K.length),K.splice(B),K.splice(0,Z)}let ut=J.filter(W=>W.slot==t.y.ArmorSlotClass),it=ut.filter(W=>W.isExotic).length,Zt=ut.length-it,xt=new Set(ut.filter(W=>!W.isExotic).map(W=>W.perk)),It=new Set(ut.filter(W=>W.isExotic).map(W=>W.perk));Zt>0&&(E.assumeEveryLegendaryIsArtifice||E.assumeClassItemIsArtifice)&&xt.add(M.Pn.SlotArtifice),it>0&&E.assumeEveryExoticIsArtifice&&It.add(M.Pn.SlotArtifice),console.debug("items",JSON.stringify({helmets:c.length,gauntlets:D.length,chests:T.length,legs:k.length,availableClassItemTypes:xt}));const ft={maximumPossibleTiers:[0,0,0,0,0,0],statCombo3x100:new Set,statCombo4x100:new Set},w=function gt(f){const C=[0,0,0,0,0,0];for(const E of f.enabledMods)for(const F of I.F[E].bonus)C[F.stat==M.AR.ClassAbilityRegenerationStat?[1,0,2][f.characterClass]:F.stat]+=F.value;return C}(E),P=function Rt(f){let C=[];for(let U=0;UU>0).sort((U,E)=>E-U)}(E),et=F.length<=1,rt=xt.has(M.Pn.SlotArtifice),X=It.has(M.Pn.SlotArtifice),h=E.selectedExotics.indexOf(g.dM)>-1,L=ut.sort((W,Ft)=>W.masterworked?-1:1).find(W=>W.isExotic)||null,z=!!L&&E.selectedExotics.indexOf(L.hash)>-1;console.log("hasArtificeClassItem",rt);let j=[],Ut=0,Ot=0,bt=0,qt=!1,Yt=function _t(f,C,U,E){let F=0;const J=f.filter(Z=>Z.isExotic).length,R=f.length-J,c=C.filter(Z=>Z.isExotic).length,D=C.length-c,T=U.filter(Z=>Z.isExotic).length,k=U.length-T,K=E.filter(Z=>Z.isExotic).length,H=E.length-K;return F+=J*D*k*H,F+=R*c*k*H,F+=R*D*T*H,F+=R*D*k*K,F+=R*D*k*H,F}(c,D,T,k),Wt=0,Tt=0;console.log("estimatedCalculations",Yt);let ie=Yt>=1e6?125:75;console.time(`tm #${U.current}`);for(let[W,Ft,Xt,jt]of function*x(f,C,U,E,F,J){for(let R of f)for(let c of C)if(!(F&&R.isExotic&&c.isExotic))for(let D of U)if(!F||!R.isExotic&&!c.isExotic||!D.isExotic)for(let T of E)F&&(R.isExotic||c.isExotic||D.isExotic)&&T.isExotic||J&&!(R.isExotic||c.isExotic||D.isExotic||T.isExotic)||(yield[R,c,D,T])}(c,D,T,k,et,h)){Wt++;const Bt=vt(E,P,xt,W,Ft,Xt,jt);if(!Bt.valid)continue;const me=!Bt.requiredClassItemType||Bt.requiredClassItemType==M.Pn.SlotArtifice,mt=W.isExotic||Ft.isExotic||Xt.isExotic||jt.isExotic,Vt=Y(ft,E,W,Ft,Xt,jt,w,N,qt,(rt||!mt&&X&&!E.ignoreExistingExoticArtificeSlots)&&me,z);null!=Vt&&(bt++,Mt(Vt)&&(Vt.classItemPerk=Bt.requiredClassItemType||(rt?M.Pn.SlotArtifice:M.Pn.None),!mt&&L&&z&&Vt.armor.push(L.id),j.push(Vt),Ut++,Ot++,qt=qt||E.limitParsedResults&&Ot>=3e4/U.count||Ot>=1e6/U.count)),bt%5e3==0&&Tt+ie=5e3&&(postMessage({runtime:ft,results:j,done:!1,checkedCalculations:Wt,estimatedCalculations:Yt}),j=[],Ut=0)}console.timeEnd(`tm #${U.current}`),console.timeEnd(`total #${U.current}`),postMessage({runtime:ft,results:j,done:!0,checkedCalculations:Wt,estimatedCalculations:Yt,stats:{permutationCount:bt,itemCount:J.length-ut.length,totalTime:Date.now()-R}})});return function(C){return f.apply(this,arguments)}}())},2340:(ht,at,_)=>{_.d(at,{N:()=>u});const u={version:"2.6.2",revision:"ec43f50",production:!0,beta:!1,canary:!1,apiKey:"9415df8eff46408aa9c0d51e4d69b94f",clientId:"37252",client_secret:"KnVcJPWr7C5y0loOfBoKSyQ-vWXR0JICrgb1aJLsLgg",offlineMode:!1,featureFlags:{enableModslotLimitation:!0,enableZeroWaste:!0,enableGuardianGamesFeatures:!1}}},1379:(ht,at,_)=>{var u=_(1481),t=_(4650),g=_(2340),I=_(6895),M=_(5829),wt=_(3683),ot=_(6630),y=_(5861),b=_(6831),Et=_(529),Mt=_(591);let vt=(()=>{class n{constructor(){this.__status={calculatingResults:!1,calculatingPermutations:!1,updatingResultsTable:!1,updatingInventory:!1,updatingManifest:!1,updatingVendors:!1,apiError:!1,authError:!1},this._status=new Mt.X(this.__status),this.status=this._status.asObservable()}getStatus(){return this.__status}modifyStatus(e){e(this.__status),console.log("modifyStatus",this.__status),this._status.next(this.__status)}setApiError(){this.__status.apiError||this.modifyStatus(e=>{e.apiError=!0})}clearApiError(){!this.__status.apiError||this.modifyStatus(e=>{e.apiError=!1})}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),gt=(()=>{class n{constructor(e,o,a){this.http=e,this.router=o,this.status=a,this._logoutEvent=new b.t(1),this.logoutEvent=this._logoutEvent.asObservable()}get refreshTokenExpired(){return this.refreshTokenExpiringAt (this.lastRefresh + timing)":Date.now()>e.lastRefresh+18e5}),!(e.refreshToken&&Date.now()e.lastRefresh+18e5)||(yield e.generateTokens(!0))})()}getCurrentMembershipData(){var e=this;return(0,y.Z)(function*(){const o=JSON.parse(localStorage.getItem("auth-membershipInfo")||"null");if(null==o){const a=e.getCurrentMembershipData();return localStorage.setItem("auth-membershipInfo",JSON.stringify(a)),a}return o})()}generateTokens(e=!1){var o=this;return(0,y.Z)(function*(){console.info("Generate auth tokens","refresh based on refresh_token:",e);const a=g.N.clientId,s=g.N.client_secret;let p=`grant_type=authorization_code&code=${o.authCode}&client_id=${a}&client_secret=${s}`;return e&&(p=`grant_type=refresh_token&refresh_token=${o.refreshToken}&client_id=${a}&client_secret=${s}`),yield o.http.post("https://www.bungie.net/Platform/App/OAuth/Token/",p,{headers:{"Content-Type":"application/x-www-form-urlencoded","X-API-Key":g.N.apiKey}}).toPromise().then(A=>(console.log("generateTokens",A),o.accessToken=A.access_token,o.refreshToken=A.refresh_token,o.refreshTokenExpiringAt=Date.now()+1e3*A.refresh_expires_in-1e4,o.lastRefresh=Date.now(),o.status.modifyStatus(m=>m.authError=!1),!0)).catch(function(){var A=(0,y.Z)(function*(m){return console.log({err:m}),o.status.modifyStatus(S=>S.authError=!0),!1});return function(m){return A.apply(this,arguments)}}())})()}isAuthenticated(){return!!this.accessToken}get authCode(){return localStorage.getItem("code")}set authCode(e){e?(console.info("Setting new auth code"),localStorage.setItem("code",""+e)):(console.info("Clearing auth code"),localStorage.removeItem("code"))}get accessToken(){return localStorage.getItem("accessToken")}set accessToken(e){e?(console.info("Setting new access token"),localStorage.setItem("accessToken",""+e)):(console.info("Clearing access token"),localStorage.removeItem("accessToken"))}get refreshToken(){return localStorage.getItem("refreshToken")}set refreshToken(e){e?(console.info("Setting new refresh token"),localStorage.setItem("refreshToken",""+e)):(console.info("Clearing refresh token"),localStorage.removeItem("refreshToken"))}get refreshTokenExpiringAt(){let e=localStorage.getItem("refreshTokenExpiringAt")||"0";return e?Number.parseInt(e):0}set refreshTokenExpiringAt(e){e?(console.info("Setting new refresh token"),localStorage.setItem("refreshTokenExpiringAt",""+e)):(console.info("Clearing refresh token"),localStorage.removeItem("refreshTokenExpiringAt"))}get lastRefresh(){let e=localStorage.getItem("lastRefresh")||"0";return e?Number.parseInt(e):0}set lastRefresh(e){e?localStorage.setItem("lastRefresh",e.toString()):localStorage.removeItem("lastRefresh")}clearManifestInfo(){localStorage.removeItem("LastArmorUpdate"),localStorage.removeItem("LastManifestUpdate")}clearLoginInfo(){this.lastRefresh=null,this.refreshTokenExpiringAt=null,this.authCode=null,this.accessToken=null,this.refreshToken=null}logout(){var e=this;return(0,y.Z)(function*(){if(g.N.offlineMode)console.debug("Offline mode, skipping logout");else try{e._logoutEvent.next(null),e.clearManifestInfo(),e.clearLoginInfo()}finally{yield e.router.navigate(["login"])}})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Et.eN),t.LFG(ot.F0),t.LFG(vt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),Rt=(()=>{class n{constructor(e,o,a){this.activatedRoute=e,this.router=o,this.loginService=a}ngOnInit(){var e=this;this.activatedRoute.queryParams.subscribe(function(){var o=(0,y.Z)(function*(a){let s=a.code;window.location.search.indexOf("?code=")>-1&&(s=window.location.search.substr(6)),console.info({code:s}),s&&(e.loginService.authCode=s,console.info("Generate tokens with the new code"),yield e.loginService.generateTokens(),console.info("Now navigate to /"),yield e.router.navigate(["/"]))});return function(a){return o.apply(this,arguments)}}())}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(ot.gz),t.Y36(ot.F0),t.Y36(gt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-handle-bungie-login"]],decls:0,vars:0,template:function(e,o){}}),n})();function Nt(n,i){1&n&&(t.TgZ(0,"mat-toolbar",5),t._UZ(1,"span",2),t._uU(2," You are using the "),t.TgZ(3,"b"),t._uU(4,"\xa0unstable\xa0"),t.qZA(),t._uU(5," canary build. Some features may be unfinished or vanish. Please report any issues you encounter. "),t._UZ(6,"span",2),t.qZA())}let x=(()=>{class n{constructor(){this.title="D2ArmorPicker",this.is_beta=g.N.beta,this.is_canary=g.N.canary,console.log("PRODUCTION?",g.N.production)}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-root"]],decls:9,vars:1,consts:[["class","canary-warning","color","primary",4,"ngIf"],["color","accent",1,"bungie-day"],[1,"header-spacer"],["fxHide.xs","","src","../assets/bungie_foundation.png",1,"donordrive"],["href","https://tiltify.com/@mijago/d2armorpicker","target","_blank","title","Support the Bungie Foundation!"],["color","primary",1,"canary-warning"]],template:function(e,o){1&e&&(t.YNc(0,Nt,7,0,"mat-toolbar",0),t.TgZ(1,"mat-toolbar",1),t._UZ(2,"span",2)(3,"img",3),t.TgZ(4,"a",4),t._uU(5," Please support us at the Bungie Foundation 2024 \u2764 "),t.qZA(),t._UZ(6,"span",2),t.qZA(),t._UZ(7,"app-handle-bungie-login")(8,"router-outlet")),2&e&&t.Q6J("ngIf",o.is_canary)},dependencies:[I.O5,M.b8,wt.Ye,ot.lC,Rt],styles:[".bungie-day[_ngcontent-%COMP%], .canary-warning[_ngcontent-%COMP%]{height:-moz-fit-content;height:fit-content;position:relative;max-width:100vw;word-break:break-all}.canary-warning[_ngcontent-%COMP%]{font-size:11pt}.bungie-day[_ngcontent-%COMP%] img.donordrive[_ngcontent-%COMP%]{height:30px;margin-left:2px;margin-right:2px}.bungie-day[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .bungie-day[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:visited{color:#fff}.header-spacer[_ngcontent-%COMP%]{flex:1 1 auto}"]}),n})();var _t=_(1576),st=_(4859),Y=_(3546),ct=_(7084);let Ht=(()=>{class n{constructor(){}startLogin(){window.location.href=`https://www.bungie.net/en/OAuth/Authorize?client_id=${g.N.clientId}&response_type=code&reauth=true`}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-login"]],decls:76,vars:0,consts:[["mat-card-avatar","",1,"example-header-image"],["href","https://ko-fi.com/mijago","target","_blank"],["href","https://github.com/Mijago/D2ArmorPicker","target","_blank"],["color","primary","mat-raised-button","",3,"click"],[1,"mat-elevation-z11"],["src","assets/info/statselection.png",1,"image-example"],["src","assets/resultOverviewWithFlex.png",1,"image-example"],["src","assets/info/whattodonow.png",1,"image-example"],["src","assets/info/armorClustering.png",1,"image-example"],["fxLayoutGap","10px","fxLayout","row",1,"armor-image-container"],["src","assets/info/cluster-example/img.png"],["src","assets/info/cluster-example/img_1.png"],["src","assets/info/cluster-example/img_2.png"]],template:function(e,o){1&e&&(t.TgZ(0,"mat-card")(1,"mat-card-header"),t._UZ(2,"div",0),t.TgZ(3,"mat-card-title"),t._uU(4,"Destiny 2 Armor Picker"),t.qZA(),t.TgZ(5,"mat-card-subtitle"),t._uU(6,"A simple armor min-max tool by Mijago."),t.qZA()(),t.TgZ(7,"mat-card-content")(8,"p"),t._uU(9," This tool allows you to select the optimal armor from your inventory and vault to satisfy your stat needs. It also tells you which stat mods you have to use! "),t._UZ(10,"br")(11,"br"),t._uU(12," You have to log in to enable this tool to grab your armor from the API."),t._UZ(13,"br"),t._uU(14," If you like my tools and want to support me, head to "),t.TgZ(15,"a",1),t._uU(16,"ko-fi.com"),t.qZA(),t._uU(17," and buy me a coffee! \u2764 "),t._UZ(18,"br"),t._uU(19," If you found a bug or have a feature request, please open an issue "),t.TgZ(20,"a",2),t._uU(21,"in the Github Repository"),t.qZA(),t._uU(22,"! "),t.qZA(),t.TgZ(23,"p"),t._uU(24," D2ArmorPicker uses the Bungie.net api and it's OAuth authorization. You log in on an official Bungie.net page and D2ArmorPicker receives a temporary login token from Bungie. That means it does not receive your credentials. "),t.qZA()(),t.TgZ(25,"mat-card-actions")(26,"button",3),t.NdJ("click",function(){return o.startLogin()}),t._uU(27,"Login"),t.qZA()()(),t.TgZ(28,"mat-card")(29,"mat-card-title"),t._uU(30," Examples "),t.qZA(),t.TgZ(31,"mat-card-subtitle"),t._uU(32,"Some examples to show what D2ArmorPicker can do."),t.qZA(),t.TgZ(33,"mat-card-content")(34,"mat-accordion")(35,"mat-expansion-panel",4)(36,"mat-expansion-panel-header")(37,"mat-panel-title"),t._uU(38," Stat Selection "),t.qZA(),t.TgZ(39,"mat-panel-description"),t._uU(40," The heart of this tool. "),t.qZA()(),t.TgZ(41,"p"),t._uU(42," First, you are able to select the stats you want. The tool will automatically parse all your armor (including your vault and your postmaster), and then show you which stat selections are even possible with your current gear. The tool also shows you all possible loadouts with three or four stats at 100! "),t._UZ(43,"img",5)(44,"br")(45,"br"),t._uU(46," There are also additional settings. You can add stasis fragments and negative and positive stat mods to your builds. Also, you can select 0-waste builds (so only flat numbers). D2ArmorPicker will also add stat mods to reduce wasted stats wherever possible! "),t.qZA()(),t.TgZ(47,"mat-expansion-panel",4)(48,"mat-expansion-panel-header")(49,"mat-panel-title"),t._uU(50," Result Display "),t.qZA(),t.TgZ(51,"mat-panel-description"),t._uU(52," What you will get from this tool. "),t.qZA()(),t.TgZ(53,"p"),t._uU(54," D2ArmorPicker will show you a table with many results. You can sort and filter it, and then you click on one row to see which items are needed for your desired stats. "),t._UZ(55,"img",6)(56,"br")(57,"br"),t._uU(58," The page will also give you a detailed description of what you have to do in order to get to your desired build. The following screenshot shows one of the more detailed descriptions: "),t._UZ(59,"img",7),t.qZA()(),t.TgZ(60,"mat-expansion-panel",4)(61,"mat-expansion-panel-header")(62,"mat-panel-title"),t._uU(63," Armor Clustering "),t.qZA(),t.TgZ(64,"mat-panel-description"),t._uU(65," For the time when your vault is overflowing. "),t.qZA()(),t.TgZ(66,"div"),t._uU(67," Since version 2.0.14, D2ArmorPicker has an armor clustering feature. This means that it takes all your armor and groups it in 25 groups, where all items in one group has very similar stats. This can help you to clear out your vault, especially from duplicated armor rolls. "),t._UZ(68,"img",8)(69,"br")(70,"br"),t._uU(71," Take Cluster 1, for example. I copy the DIM-Query, enter it into DIM and see the following results: "),t.TgZ(72,"div",9),t._UZ(73,"img",10)(74,"img",11)(75,"img",12),t.qZA()()()()()())},dependencies:[_t.xw,_t.SQ,st.lW,Y.a8,Y.dk,Y.dn,Y.n5,Y.$j,Y.hq,Y.kc,ct.pp,ct.ib,ct.yz,ct.yK,ct.u4],styles:["mat-card[_ngcontent-%COMP%]{max-width:600px;margin-bottom:4px;margin-left:auto;margin-right:auto}button[_ngcontent-%COMP%]{position:absolute;right:10px;bottom:10px}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}.example-header-image[_ngcontent-%COMP%]{background-image:url(superGreatLogo.5307f2494314b5e1.png);background-size:cover}.image-example[_ngcontent-%COMP%]{max-width:100%}.armor-image-container[_ngcontent-%COMP%]{overflow:auto}.armor-image-container[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]{max-height:300px}"]}),n})();var Lt=_(8746);let f=(()=>{class n{constructor(e,o){this.auth=e,this.router=o}canActivate(e,o){return!!this.auth.isAuthenticated()||(this.router.navigate(["login"]),!1)}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(ot.F0))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),C=(()=>{class n{constructor(e,o){this.auth=e,this.router=o}canActivate(e,o){return!this.auth.isAuthenticated()||(this.router.navigate(["/"]),!1)}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(ot.F0))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var U=_(2289),E=_(4850),F=_(5154),J=_(13),R=_(8929),c=_(1043),D=_(3244),T=_(6471),k=_(8333),K=_(1650);function H(n){return{[c.WB.Mobility]:{fixed:!1,value:n},[c.WB.Resilience]:{fixed:!1,value:n},[c.WB.Recovery]:{fixed:!1,value:n},[c.WB.Discipline]:{fixed:!1,value:n},[c.WB.Intellect]:{fixed:!1,value:n},[c.WB.Strength]:{fixed:!1,value:n}}}class Z{constructor(){this.characterClass=0,this.addConstent1Resilience=!1,this.assumeClassItemIsArtifice=!1,this.assumeEveryLegendaryIsArtifice=!1,this.assumeEveryExoticIsArtifice=!1,this.disabledItems=[],this.minimumStatTiers={[c.WB.Mobility]:{fixed:!1,value:0},[c.WB.Resilience]:{fixed:!1,value:0},[c.WB.Recovery]:{fixed:!1,value:0},[c.WB.Discipline]:{fixed:!1,value:0},[c.WB.Intellect]:{fixed:!1,value:0},[c.WB.Strength]:{fixed:!1,value:0}},this.maximumStatMods=5,this.allowExactStats=!1,this.maximumModSlots={[T.y.ArmorSlotHelmet]:{fixed:!1,value:5},[T.y.ArmorSlotGauntlet]:{fixed:!1,value:5},[T.y.ArmorSlotChest]:{fixed:!1,value:5},[T.y.ArmorSlotLegs]:{fixed:!1,value:5},[T.y.ArmorSlotClass]:{fixed:!1,value:5},[T.y.ArmorSlotNone]:{fixed:!1,value:5}},this.putArtificeMods=!0,this.useFotlArmor=!0,this.allowBlueArmorPieces=!0,this.ignoreSunsetArmor=!1,this.includeVendorRolls=!1,this.includeCollectionRolls=!1,this.assumeLegendariesMasterworked=!0,this.assumeExoticsMasterworked=!0,this.assumeClassItemMasterworked=!0,this.onlyUseMasterworkedExotics=!1,this.onlyUseMasterworkedLegendaries=!1,this.modOptimizationStrategy=K.w.None,this.limitParsedResults=!0,this.tryLimitWastedStats=!1,this.onlyShowResultsWithNoWastedStats=!1,this.showWastedStatsColumn=!1,this.showPotentialTierColumn=!1,this.selectedModElement=k.O.Stasis,this.enabledMods=[],this.selectedExotics=[],this.ignoreExistingExoticArtificeSlots=!1,this.armorPerks={[T.y.ArmorSlotHelmet]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotGauntlet]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotChest]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotLegs]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotClass]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotNone]:{fixed:!0,value:c.Pn.None}}}static buildEmptyConfiguration(){return{ignoreExistingExoticArtificeSlots:!1,allowExactStats:!1,enabledMods:[],disabledItems:[],addConstent1Resilience:!1,assumeEveryLegendaryIsArtifice:!1,assumeEveryExoticIsArtifice:!1,assumeClassItemIsArtifice:!1,putArtificeMods:!0,useFotlArmor:!1,maximumStatMods:D.Qj,onlyUseMasterworkedExotics:!1,onlyUseMasterworkedLegendaries:!1,ignoreSunsetArmor:!1,includeCollectionRolls:!1,includeVendorRolls:!1,allowBlueArmorPieces:!0,assumeLegendariesMasterworked:!0,assumeExoticsMasterworked:!0,assumeClassItemMasterworked:!0,limitParsedResults:!0,modOptimizationStrategy:K.w.None,tryLimitWastedStats:!1,onlyShowResultsWithNoWastedStats:!1,showWastedStatsColumn:!1,showPotentialTierColumn:!1,characterClass:0,selectedModElement:k.O.Stasis,selectedExotics:[],maximumModSlots:{[T.y.ArmorSlotHelmet]:{fixed:!1,value:5},[T.y.ArmorSlotGauntlet]:{fixed:!1,value:5},[T.y.ArmorSlotChest]:{fixed:!1,value:5},[T.y.ArmorSlotLegs]:{fixed:!1,value:5},[T.y.ArmorSlotClass]:{fixed:!1,value:5},[T.y.ArmorSlotNone]:{fixed:!1,value:5}},armorPerks:{[T.y.ArmorSlotHelmet]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotGauntlet]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotChest]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotLegs]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotClass]:{fixed:!0,value:c.Pn.None},[T.y.ArmorSlotNone]:{fixed:!0,value:c.Pn.None}},minimumStatTiers:H(0)}}}var B=(()=>{return(n=B||(B={}))[n.Inventory=0]="Inventory",n[n.Collections=1]="Collections",n[n.Vendor=2]="Vendor",B;var n})();function ut(n,i,e){if(!n)throw new Error("Missing manifest item");const o=Object.assign({id:-1,itemInstanceId:i,mayBeBugged:!1,masterworked:!1,energyLevel:0,mobility:0,resilience:0,recovery:0,discipline:0,intellect:0,strength:0,source:e,created_at:Date.now(),updated_at:Date.now()},n);return o.id=void 0,(2545426109==n.hash||199733460==n.hash||3224066584==n.hash)&&(o.slot=T.y.ArmorSlotHelmet),o}function it(n,i){n.mobility=i[2996146975],n.resilience=i[392767087],n.recovery=i[1943323491],n.discipline=i[1735777505],n.intellect=i[144602215],n.strength=i[4244567218]}function xt(n){return n.mobility+n.resilience+n.recovery+n.discipline+n.intellect+n.strength}var It=_(6982),ft=_(4682);let w=(()=>{class n extends ft.v{constructor(e){var o;super(),o=this,this.auth=e,this.version(this.verno).upgrade(function(){var a=(0,y.Z)(function*(s){o.auth.clearManifestInfo()});return function(s){return a.apply(this,arguments)}}()),this.auth.logoutEvent.subscribe(function(){var a=(0,y.Z)(function*(s){yield o.clearDatabase()});return function(s){return a.apply(this,arguments)}}())}initialize(){this.open(),this.auth.clearManifestInfo()}writeManifestArmor(e,o){var a=this;return(0,y.Z)(function*(){yield a.manifestArmor.clear(),yield a.manifestArmor.bulkPut(e),localStorage.setItem("LastManifestUpdate",Date.now().toString()),localStorage.setItem("last-manifest-db-name",a.manifestArmor.db.name),localStorage.setItem("last-manifest-revision",g.N.revision),localStorage.setItem("last-manifest-version",o)})()}clearDatabase(){var e=this;return(0,y.Z)(function*(){localStorage.removeItem("LastManifestUpdate"),localStorage.removeItem("LastArmorUpdate"),localStorage.removeItem("last-manifest-revision"),localStorage.removeItem("last-manifest-db-name"),yield e.inventoryArmor.clear()})()}resetDatabase(e=!0){var o=this;return(0,y.Z)(function*(){localStorage.removeItem("LastManifestUpdate"),localStorage.removeItem("last-manifest-revision"),localStorage.removeItem("last-manifest-db-name"),localStorage.removeItem("vendor-next-refresh-time"),localStorage.removeItem("LastArmorUpdate"),localStorage.removeItem("last-armor-db-name"),yield o.delete(),e&&o.initialize()})()}lastManifestUpdate(){const e=localStorage.getItem("LastManifestUpdate"),o=localStorage.getItem("last-manifest-version"),a=localStorage.getItem("last-manifest-revision"),s=localStorage.getItem("last-manifest-db-name");return e&&a&&s&&o&&localStorage.getItem("last-manifest-revision")===g.N.revision&&s===this.inventoryArmor.db.name?{updatedAt:parseInt(e),version:o}:void 0}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var P=_(9598),N=_(443);const et={outputEncoding:"Base64"},rt={inputEncoding:"Base64",outputEncoding:"String"};let X=(()=>{class n{constructor(){this.__configuration=this.loadCurrentConfiguration(),this._configuration=new Mt.X(this.__configuration),this.configuration=this._configuration.asObservable(),this._storedConfigurations=new Mt.X(this.listSavedConfigurations()),this.storedConfigurations=this._storedConfigurations.asObservable()}get readonlyConfigurationSnapshot(){return Object.assign(this.__configuration,{})}modifyConfiguration(e){e(this.__configuration),this.saveCurrentConfiguration(this.__configuration)}saveConfiguration(e,o){let a=this.listSavedConfigurations(),s=this.listSavedConfigurations().map((d,p)=>[d,p]).filter(d=>d[0].name==e)[0];s&&a.splice(s[1],1),a.push({configuration:o,name:e,version:g.N.version}),a=a.sort((d,p)=>d.namep.name?1:0);const r=P.compress(JSON.stringify(a),et);localStorage.setItem("storedConfigurations",r),this._storedConfigurations.next(a)}doesSavedConfigurationExist(e){return this.listSavedConfigurations().filter(o=>o.name==e).length>0}loadSavedConfiguration(e){let o=this.listSavedConfigurations().filter(a=>a.name==e)[0];return!!o&&(this.saveCurrentConfiguration(o.configuration),!0)}checkAndFixOldSavedConfigurations(e){if(e.configuration=Object.assign(Z.buildEmptyConfiguration(),e.configuration),e.configuration.hasOwnProperty("minimumStatTier")){let o=e.configuration.minimumStatTier;e.configuration.minimumStatTiers[c.WB.Mobility].value=o[c.WB.Mobility],e.configuration.minimumStatTiers[c.WB.Resilience].value=o[c.WB.Resilience],e.configuration.minimumStatTiers[c.WB.Recovery].value=o[c.WB.Recovery],e.configuration.minimumStatTiers[c.WB.Discipline].value=o[c.WB.Discipline],e.configuration.minimumStatTiers[c.WB.Intellect].value=o[c.WB.Intellect],e.configuration.minimumStatTiers[c.WB.Strength].value=o[c.WB.Strength],delete e.configuration.minimumStatTier}if(e.configuration.hasOwnProperty("selectedExoticHash")&&(e.configuration.selectedExotics=[e.configuration.selectedExoticHash],delete e.configuration.selectedExoticHash),e.configuration.hasOwnProperty("maximumStatMods")){for(let a=e.configuration.maximumStatMods;a<5;a++)e.configuration.maximumModSlots[1+a].value=0;delete e.configuration.maximumStatMods}e.configuration.enabledMods=e.configuration.enabledMods.filter(o=>!!N.F[o]),e.configuration.limitParsedResults=!0,e.configuration.addConstent1Resilience=!1}listSavedConfigurations(){let e;try{e=localStorage.getItem("storedConfigurations")||"[]","["!=e.substr(0,1)&&(e=P.decompress(e,rt))}catch{e=[]}let o=JSON.parse(e)||[];return o=o.sort((a,s)=>a.names.name?1:0),o.forEach(a=>this.checkAndFixOldSavedConfigurations(a)),o}deleteStoredConfiguration(e){let o=this.listSavedConfigurations(),a=this.listSavedConfigurations().map((s,r)=>[s,r]).filter(s=>s[0].name==e)[0];a&&o.splice(a[1],1),localStorage.setItem("storedConfigurations",P.compress(JSON.stringify(o),et)),this._storedConfigurations.next(o)}saveCurrentConfigurationToName(e){this.saveConfiguration(e,this.__configuration)}saveCurrentConfiguration(e){console.debug("write configuration",e),this.__configuration=Object.assign(Z.buildEmptyConfiguration(),e),this.__configuration.enabledMods=[].concat(this.__configuration.enabledMods),this.__configuration.minimumStatTiers=Object.assign({},this.__configuration.minimumStatTiers);const o=P.compress(JSON.stringify(this.__configuration),et);localStorage.setItem("currentConfig",o),this._configuration.next(Object.assign({},this.__configuration))}loadCurrentConfiguration(){let e;try{e=localStorage.getItem("currentConfig")||"{}","{"!=e.substr(0,1)&&(e=P.decompress(e,rt))}catch{e={}}var o={name:"dummy",version:"1",configuration:JSON.parse(e)};return this.checkAndFixOldSavedConfigurations(o),o.configuration}getCurrentConfigBase64Compressed(){let e=localStorage.getItem("currentConfig")||"{}";return"{"==e.substr(0,1)&&(e=P.compress(e,{outputEncoding:"Base64"})),e}getAllStoredConfigurationsBase64Compressed(){let e=localStorage.getItem("storedConfigurations")||"[]";return"["==e.substr(0,1)&&(e=P.compress(e,{outputEncoding:"Base64"})),e}getStoredConfigurationBase64Compressed(e){let o=this.listSavedConfigurations().filter(a=>a.name==e)[0];return o?P.compress(JSON.stringify(o),{outputEncoding:"Base64"}):""}resetCurrentConfiguration(){this.saveCurrentConfiguration(Z.buildEmptyConfiguration())}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var h=_(8012),L=_(1016);let z=(()=>{class n{constructor(e,o,a){this.authService=e,this.http=o,this.status=a}$httpWithoutKey(e){var o=this;return(0,y.Z)(function*(){return o.http.get(e.url,{params:e.params}).toPromise()})()}$httpPost(e){var o=this;return(0,y.Z)(function*(){return o.http.post(e.url,e.body,{params:e.params,headers:{"X-API-Key":g.N.apiKey,Authorization:"Bearer "+o.authService.accessToken}}).toPromise().catch(function(){var a=(0,y.Z)(function*(s){console.error(s)});return function(s){return a.apply(this,arguments)}}())})()}$http(e,o=!0){var a=this;return(0,y.Z)(function*(){return a.http.get(e.url,{params:e.params,headers:{"X-API-Key":g.N.apiKey,Authorization:"Bearer "+a.authService.accessToken}}).toPromise().then(s=>(a.status.clearApiError(),s)).catch(function(){var s=(0,y.Z)(function*(r){console.error(r),g.N.offlineMode?console.debug("Offline mode, ignoring API error"):("SystemDisabled"==r.error?.ErrorStatus&&o&&(console.info("System is disabled. Revoking auth, must re-login"),a.status.setApiError()),"Internal Server Error"!=r.ErrorStatus&&console.info("API-Error"))});return function(r){return s.apply(this,arguments)}}())})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(Et.eN),t.LFG(vt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var j=_(9891);let Ut=(()=>{class n{constructor(e,o,a){this.http=e,this.status=o,this.auth=a,this.auth.logoutEvent.subscribe(s=>this.clearCachedData())}clearCachedData(){localStorage.removeItem("auth-membershipInfo"),localStorage.removeItem("auth-membershipInfo-date")}getMembershipDataForCurrentUser(){var e=this;return(0,y.Z)(function*(){var o=JSON.parse(localStorage.getItem("auth-membershipInfo")||"null"),a=JSON.parse(localStorage.getItem("auth-membershipInfo-date")||"0");if(o&&Date.now()-a<864e5)return console.log("getMembershipDataForCurrentUser -> loading cached! "),o;console.info("BungieApiService","getMembershipDataForCurrentUser");let r=(yield(0,j.Rm)(p=>e.http.$http(p)))?.Response.destinyMemberships;console.info("Memberships:",r),r=r.filter(p=>0==p.crossSaveOverride||p.crossSaveOverride==p.membershipType),console.info("Filtered Memberships:",r);let d=null;if(1==r?.length)d=r?.[0];else{let p=0,A=0;for(let m in r){const S=r?.[m],q=yield(0,h.Ai)($=>e.http.$http($),{components:[100],membershipType:S.membershipType,destinyMembershipId:S.membershipId});if(q&&q.Response?.profile.data?.dateLastPlayed){let $=Date.parse(q.Response?.profile.data?.dateLastPlayed);$>A&&(A=$,p=m)}}console.info("getMembershipDataForCurrentUser","Selected membership data for the last logged in membership."),d=r?.[p]}return localStorage.setItem("auth-membershipInfo",JSON.stringify(d)),localStorage.setItem("auth-membershipInfo-date",JSON.stringify(Date.now())),d})()}getCharacters(){var e=this;return(0,y.Z)(function*(){let o=yield e.getMembershipDataForCurrentUser();if(!o)return e.status.setApiError(),[];const a=yield(0,h.Ai)(s=>e.http.$http(s),{components:[200],membershipType:o.membershipType,destinyMembershipId:o.membershipId});return a?.Response.characters.data&&e.status.clearApiError(),Object.values(a?.Response.characters.data||{}).map(s=>({characterId:s.characterId,clazz:s.classType,emblemUrl:s.emblemBackgroundPath,lastPlayed:Date.parse(s.dateLastPlayed)}))||[]})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(z),t.LFG(vt),t.LFG(gt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function Ot(n,i,e,o){const a={2996146975:0,392767087:0,1943323491:0,1735777505:0,144602215:0,4244567218:0};for(let r of i)r.statTypeHash in a&&(a[r.statTypeHash]+=r.value);if(n.slot!=T.y.ArmorSlotClass){const r=[e[6],e[7],e[8],e[9]];n.statPlugHashes=r;var s=r.map(d=>o[d||""]).filter(d=>null!=d);for(let d of s)for(let p of d.investmentStats)p.statTypeHash in a&&(a[p.statTypeHash]+=p.value)}it(n,a)}let bt=(()=>{class n{constructor(e,o,a,s,r){var d=this;this.status=e,this.http=o,this.db=a,this.config=s,this.membership=r,this.config_assumeEveryLegendaryIsArtifice=!1,this.config.configuration.subscribe(function(){var p=(0,y.Z)(function*(A){d.config_assumeEveryLegendaryIsArtifice=A.assumeEveryLegendaryIsArtifice});return function(A){return p.apply(this,arguments)}}())}transferItem(e,o,a=!1){var s=this;return(0,y.Z)(function*(){let r=yield s.membership.getMembershipDataForCurrentUser();if(!r)return s.status.setApiError(),!1;s.status.clearApiError();let d=yield(0,h.rV)(A=>s.http.$http(A),{membershipType:r.membershipType,destinyMembershipId:r.membershipId,itemInstanceId:e,components:[307]}),p=!1;if(!d)return!1;if(d.Response.characterId!=o){2!=d.Response.item.data?.location&&(yield s.moveItemToVault(d.Response.item.data?.itemInstanceId||""),d=yield(0,h.rV)(m=>s.http.$http(m),{membershipType:r.membershipType,destinyMembershipId:r.membershipId,itemInstanceId:e,components:[307]}));const A={characterId:o,membershipType:3,itemId:d?.Response.item.data?.itemInstanceId||"",itemReferenceHash:d?.Response.item.data?.itemHash||0,stackSize:1,transferToVault:!1};p=!!(yield(0,h.ux)(m=>s.http.$httpPost(m),A))}if(a){let A={characterId:o,membershipType:3,stackSize:1,itemId:d?.Response.item.data?.itemInstanceId||"",itemReferenceHash:d?.Response.item.data?.itemHash||0};p=!!(yield(0,h.DH)(m=>s.http.$httpPost(m),A))}return p})()}moveItemToVault(e){var o=this;return(0,y.Z)(function*(){console.info("moveItemToVault",e);let a=yield o.membership.getMembershipDataForCurrentUser();if(!a)return void o.status.setApiError();o.status.clearApiError();const s=yield(0,h.rV)(d=>o.http.$http(d),{membershipType:a.membershipType,destinyMembershipId:a.membershipId,itemInstanceId:e,components:[307]}),r={characterId:s?.Response.characterId||"",membershipType:3,itemId:s?.Response.item.data?.itemInstanceId||"",itemReferenceHash:s?.Response.item.data?.itemHash||0,stackSize:1,transferToVault:!0};yield(0,h.ux)(d=>o.http.$httpPost(d),r)})()}getUnlockedExoticArmor(e){var o=this;return(0,y.Z)(function*(){const a=(yield o.db.manifestCollectibles.toArray()).reduce((r,d)=>(r[d.hash]=d.itemHash,r),{}),s=Object.values(e).flatMap(r=>Object.entries(r.collectibles??{})).filter(([r,{state:d}])=>0==(1&d)&&a[parseInt(r)]).map(([r,d])=>a[parseInt(r)]);return new Set(s)})()}updateArmorItems(e=!1){var o=this;return(0,y.Z)(function*(){if(g.N.offlineMode)return void console.info("BungieApiService","updateArmorItems","offline mode, skipping");if(!e&&localStorage.getItem("LastArmorUpdate")&&localStorage.getItem("last-armor-db-name")==o.db.inventoryArmor.db.name&&Date.now()-Number.parseInt(localStorage.getItem("LastArmorUpdate")||"0")<18e5)return;let a=yield o.membership.getMembershipDataForCurrentUser();if(!a)return void o.status.setApiError();o.status.clearApiError(),console.info("BungieApiService","getProfile");let s=yield(0,h.Ai)(v=>o.http.$http(v),{components:[205,201,103,102,304,300,302,305,308,800],membershipType:a.membershipType,destinyMembershipId:a.membershipId});const r=yield o.getUnlockedExoticArmor(s.Response.characterCollectibles.data??{});let d=s.Response.profileInventory.data?.items||[];for(let v in s.Response.characterEquipment.data)d=d.concat(s.Response.characterEquipment.data[v].items);for(let v in s.Response.characterInventories.data)d=d.concat(s.Response.characterInventories.data[v].items);var p=d.filter(v=>[3853748946,4257549984,4257549985,3467984096].indexOf(v.itemHash)>-1).reduce((v,dt)=>(dt.itemHash.toString()in v||(v[dt.itemHash]=0),v[dt.itemHash]+=dt.quantity,v),{});let A=s.Response.profileCurrencies.data?.items.filter(v=>3159615086==v.itemHash)||[];p[3159615086]=A.length>0?A[0].quantity:0,localStorage.setItem("stored-materials",JSON.stringify(p));const m=new Set(d.map(v=>v.itemHash));r.forEach(v=>m.add(v));let S=yield o.db.manifestArmor.toArray();const q=S.filter(v=>m.has(v.hash)),$=S.filter(v=>19==v.itemType);let tt=Object.fromEntries(q.map(v=>[v.hash,v])),lt=Object.fromEntries($.map(v=>[v.hash,v])),O=d.filter(v=>!!v.itemInstanceId).filter(v=>3284755031!==v.bucketHash).filter(v=>!!((s.Response.itemComponents.stats.data||{})[v.itemInstanceId||""]?.stats||{})[392767087]).filter(v=>!!((s.Response.itemComponents.instances.data||{})[v.itemInstanceId||""]||{}).energy).map(v=>{let nt=(s.Response.itemComponents.instances.data||{})[v.itemInstanceId||""]||{};if(!tt[v.itemHash])return console.warn("Missing manifest item for item hash",v.itemHash),null;let Q=ut(tt[v.itemHash],v.itemInstanceId||"",B.Inventory);Q.masterworked=!!nt.energy&&10==nt.energy.energyCapacity,Q.energyLevel=nt.energy?nt.energy.energyCapacity:0;const ce=(s.Response.itemComponents.sockets.data||{})[v.itemInstanceId]?.sockets.map($t=>$t.plugHash)??[];return Ot(Q,tt[v.itemHash]?.investmentStats??[],ce,lt),Q.perk==c.Pn.SlotArtifice?(((s.Response.itemComponents.perks.data||{})[v.itemInstanceId||""]||{}).perks||[]).filter(xe=>229248542==xe.perkHash).length>0||(Q.perk=c.Pn.None):Q.isExotic&&ce.filter(oe=>720825311==oe).length>0&&(Q.perk=c.Pn.SlotArtifice),Q}).filter(Boolean);const V=Array.from(r).map(v=>{const dt=tt[v];if(!dt)return console.error("Couldn't find manifest item for exotic",v),null;const nt=ut(dt,`c${dt.hash}`,B.Collections);return Ot(nt,dt.investmentStats,dt.socketEntries.map(Q=>Q.singleInitialItemHash),lt),nt}).filter(Boolean);return O=O.concat(V),O=O.filter(v=>!v.statPlugHashes||null!=v.statPlugHashes[0]),yield o.updateDatabaseItems(O),localStorage.setItem("LastArmorUpdate",Date.now().toString()),localStorage.setItem("last-armor-db-name",o.db.inventoryArmor.db.name),o.status.clearApiError(),O})()}updateDatabaseItems(e){var o=this;return(0,y.Z)(function*(){yield o.db.inventoryArmor.filter(r=>r.source==B.Inventory).delete();const s=(yield o.db.inventoryArmor.toArray()).filter(r=>null==r.source||null==r.source).map(r=>r.id);yield o.db.inventoryArmor.bulkDelete(s),yield o.db.inventoryArmor.bulkAdd(e)})()}getArmorPerk(e){if(g.N.featureFlags.enableGuardianGamesFeatures&&(1013401891===e.hash||366019830===e.hash||537041732==e.hash))return c.Pn.GuardianGamesClassItem;const o=e.sockets?.socketEntries??[];if(o.find(a=>1402==a.reusablePlugSetHash)||o.find(a=>1403==a.reusablePlugSetHash))return c.Pn.SlotArtifice;for(const a of o){let s=a.singleInitialItemHash;if(!s)continue;s=c.ED[s]||s;const r=Object.entries(c.DH).find(d=>d[1]==s);if(r)return parseInt(r[0])}return c.Pn.None}updateVendorNames(e){var o=this;return(0,y.Z)(function*(){const s=Object.values(e.DestinyVendorDefinition).map(r=>({vendorId:r.hash,vendorName:r.displayProperties.name}));yield o.db.vendorNames.clear(),yield o.db.vendorNames.bulkAdd(s)})()}updateAbilities(e){return(0,y.Z)(function*(){const o=Object.values(e.DestinyInventoryItemDefinition).filter(a=>a.plug?.plugCategoryIdentifier?.match(/\.(supers|grenades|class_abilities|melee|aspects|fragments)$/));localStorage.setItem("allAbilities",JSON.stringify(o))})()}updateExoticCollectibles(e){var o=this;return(0,y.Z)(function*(){const a=Object.entries(e.DestinyCollectibleDefinition).filter(([s,r])=>{const d=e.DestinyInventoryItemDefinition[r.itemHash];return"Exotic"==d?.inventory?.tierTypeName&&2==d?.itemType}).map(([s,r])=>({hash:parseInt(s),itemHash:r.itemHash}));console.log("Storing",a.length,"exotic armor hashes"),yield o.db.manifestCollectibles.clear(),yield o.db.manifestCollectibles.bulkPut(a)})()}updateManifest(e=!1){var o=this;return(0,y.Z)(function*(){if(g.N.offlineMode)return void console.info("BungieApiService","updateManifest","offline mode, skipping");const a=o.db.lastManifestUpdate();let s=null;if(a&&!e){if(Date.now()-a.updatedAt>9e5&&(s=yield(0,h.KN)(m=>o.http.$httpWithoutKey(m)),a.version==s.Response.version))return void console.debug("bungieApiService - updateManifest","Abort updateManifest due to fitting ManifestVersion");if(Date.now()-a.updatedAt<864e5)return void console.debug("bungieApiService - updateManifest","Abort updateManifest due to fitting Date")}null==s&&(s=yield(0,h.KN)(A=>o.http.$httpWithoutKey(A)));const r=s.Response.version,d=yield(0,L.xG)(A=>o.http.$httpWithoutKey(A),{destinyManifest:s.Response,tableNames:["DestinyInventoryItemDefinition","DestinyCollectibleDefinition","DestinyVendorDefinition"],language:"en"});console.log("manifestTables.DestinyInventoryItemDefinition",d.DestinyInventoryItemDefinition),yield o.updateExoticCollectibles(d),yield o.updateVendorNames(d),yield o.updateAbilities(d);let p=Object.entries(d.DestinyInventoryItemDefinition).filter(([A,m])=>19==m.itemType||2==m.itemType||3448274439==m.inventory?.bucketTypeHash||3551918588==m.inventory?.bucketTypeHash||14239492==m.inventory?.bucketTypeHash||20886954==m.inventory?.bucketTypeHash||1585787867==m.inventory?.bucketTypeHash&&6==m.inventory.tierType).map(([A,m])=>{let S=T.y.ArmorSlotNone;(m.itemCategoryHashes?.indexOf(45)||-1)>-1&&(S=T.y.ArmorSlotHelmet),(m.itemCategoryHashes?.indexOf(46)||-1)>-1&&(S=T.y.ArmorSlotGauntlet),(m.itemCategoryHashes?.indexOf(47)||-1)>-1&&(S=T.y.ArmorSlotChest),(m.itemCategoryHashes?.indexOf(48)||-1)>-1&&(S=T.y.ArmorSlotLegs),(m.itemCategoryHashes?.indexOf(49)||-1)>-1&&(S=T.y.ArmorSlotClass);const q=(m.sockets?.socketEntries.filter(V=>2512726577==V.socketTypeHash||1108765570==V.socketTypeHash||959256494==V.socketTypeHash||2512726577==V.socketTypeHash||3219375296==V.socketTypeHash||968742181==V.socketTypeHash)||[]).length>0,$="Exotic"==m.inventory?.tierTypeName?1:0;let tt=null;$&&(tt=(m.sockets?.socketEntries.filter(v=>965959289==v.socketTypeHash).map(v=>v.singleInitialItemHash)||[])[0]);var lt=[1862490585,1862490584,1862490584,1862490583,2471437758],O=m.quality?.versions.filter(V=>lt.includes(V.powerCapHash)).length==m.quality?.versions.length;return{hash:m.hash,icon:m.displayProperties.icon,watermarkIcon:(m.quality?.displayVersionWatermarkIcons||[null])[0],name:m.displayProperties.name,description:m.displayProperties.description,clazz:m.classType,armor2:q,slot:S,isExotic:$,isSunset:O,rarity:m.inventory?.tierType,exoticPerkHash:tt,itemType:m.itemType,itemSubType:m.itemSubType,investmentStats:m.investmentStats,perk:o.getArmorPerk(m),socketEntries:m.sockets?.socketEntries??[]}});return yield o.db.writeManifestArmor(p,r),d})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(vt),t.LFG(z),t.LFG(w),t.LFG(X),t.LFG(Ut))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();const qt="vendor-next-refresh-time",Yt=[{vendorHash:"3751514131",parentHash:"2190858386"}];let Wt=(()=>{class n{constructor(e,o,a,s){this.membership=e,this.http=o,this.db=a,this.auth=s,this.auth.logoutEvent.subscribe(r=>this.clearCachedData())}clearCachedData(){localStorage.removeItem(qt),this.db.inventoryArmor.where({source:B.Vendor}).delete()}getVendorArmorItemsForCharacter(e,o,a){var s=this;return(0,y.Z)(function*(){const r=yield(0,h.dH)(tt=>s.http.$http(tt,!1),{components:[400,402],characterId:a,membershipType:o.membershipType,destinyMembershipId:o.membershipId,filter:0}),d=Object.entries(r.Response.vendors.data),p=new Map(d),m=d.filter(([tt,lt])=>lt.enabled).filter(([tt,lt])=>{const O=Yt.find(V=>V.vendorHash==tt)?.parentHash;return null==O||(console.debug(`${tt} has parent ${O} with value ${p.get(O)?.enabled}`),p.get(O)?.enabled??!1)}).filter(([tt,lt])=>void 0!==Object.entries(r.Response.sales.data?.[tt]?.saleItems??{}).find(([O,V])=>1==e[V.itemHash]?.armor2)).map(([tt,lt])=>({vendorHash:tt,refreshDate:new Date(lt.nextRefreshDate).getTime()})),S=[],q=Math.min(...m.map(tt=>tt.refreshDate)),$=m.map(tt=>{let lt=tt.vendorHash;return(0,h.wZ)(O=>s.http.$http(O,!1),{components:[304],characterId:a,membershipType:o.membershipType,destinyMembershipId:o.membershipId,vendorHash:parseInt(lt)}).then(O=>{const V=r.Response.sales.data?.[lt]?.saleItems??{},v=O.Response.itemComponents.stats.data??{};for(const[dt,nt]of Object.entries(V)){const Q=e[nt.itemHash],he=v[parseInt(dt)];if(128==(128&nt.augments)||!Q||!he)return;const ce=Object.values(he.stats).reduce((oe,{statHash:Ue,value:xe})=>(oe[Ue]=xe,oe),{}),$t=ut(Q,`v${lt}-${nt.itemHash}`,B.Vendor);it($t,ce),S.push($t)}},O=>{console.error(`Failed to get vendor: ${O}`)})});return yield Promise.all($),console.log(`Collected ${S.length} vendor armor items for character ${a}`),{items:S,nextRefreshDate:q}})()}isVendorCacheValid(){const e=localStorage.getItem(qt);if(!e)return!1;const o=new Date(e);return!!isFinite(o.getTime())&&(console.log("VENDOR C",{nextVendorRefresh:o,finite:isFinite(o.getTime()),ok:o>new Date,now:new Date}),o>new Date)}writeVendorCache(e,o){var a=this;return(0,y.Z)(function*(){console.log(`Writing new vendor cache (${e.length} items), valid until ${o.toISOString()}`),yield a.db.inventoryArmor.where({source:B.Vendor}).delete(),yield a.db.inventoryArmor.bulkPut(e),localStorage.setItem(qt,o.toISOString())})()}updateVendorArmorItemsCache(){var e=this;return(0,y.Z)(function*(){if(e.isVendorCacheValid())return console.log("Using vendor items cache"),!1;const o=yield e.membership.getMembershipDataForCurrentUser(),a=yield e.membership.getCharacters(),s=(yield e.db.manifestArmor.toArray()).filter(r=>2==r.itemType).reduce((r,d)=>(r[d.hash]=d,r),{});try{const r=yield Promise.all(a.map(({characterId:A})=>e.getVendorArmorItemsForCharacter(s,o,A))),d=r.flatMap(({items:A})=>A),p=Math.max(Math.min(...r.map(({nextRefreshDate:A})=>A)),Date.now()+6e5);return e.writeVendorCache(d,new Date(p)),!0}catch(r){console.error("Failed to update vendor armor items cache",r);const d=new Date;return d.setMinutes(d.getMinutes()+5),e.writeVendorCache([],new Date(d)),!1}})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Ut),t.LFG(z),t.LFG(w),t.LFG(gt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),Tt=(()=>{class n{constructor(e,o,a,s,r,d,p){var A=this;this.db=e,this.config=o,this.status=a,this.api=s,this.auth=r,this.router=d,this.vendors=p,this.allArmorResults=[],this.currentClass=3,this._calculationProgress=new R.xQ,this.calculationProgress=this._calculationProgress.asObservable(),this._config=Z.buildEmptyConfiguration(),this.results=[],this.totalPermutationCount=0,this.resultMaximumTiers=[],this.resultStatCombo3x100=new Set,this.resultStatCombo4x100=new Set,this.selectedExotics=[],this.itemz=[],this.items=[],this.endResults=[],this.refreshing=!1,this._inventory=new b.t(1),this.inventory=this._inventory.asObservable(),this._manifest=new b.t(1),this.manifest=this._manifest.asObservable(),this._armorResults=new Mt.X({results:this.allArmorResults}),this.armorResults=this._armorResults.asObservable(),this.workers=[];let m=!1;d.events.pipe((0,J.b)(5)).subscribe(function(){var S=(0,y.Z)(function*(q){A.auth.refreshTokenExpired||(yield A.auth.autoRegenerateTokens()),r.isAuthenticated()&&q instanceof ot.m2&&(A.killWorkers(),A.clearResults(),console.debug("Trigger refreshAll due to router.events"),yield A.refreshAll(!m),m=!0)});return function(q){return S.apply(this,arguments)}}()),this.config.configuration.pipe((0,J.b)(500)).subscribe(function(){var S=(0,y.Z)(function*(q){A.auth.refreshTokenExpired||(yield A.auth.autoRegenerateTokens()),r.isAuthenticated()&&(A._config=q,console.debug("Trigger refreshAll due to config change"),yield A.refreshAll(!m),m=!0)});return function(q){return S.apply(this,arguments)}}())}clearResults(){this.allArmorResults=[],this._armorResults.next({results:this.allArmorResults,totalResults:0,totalTime:0,itemCount:0,maximumPossibleTiers:[0,0,0,0,0,0],statCombo3x100:[],statCombo4x100:[]})}shouldCalculateResults(){return"/"==this.router.url}refreshAll(e=!1,o=!1){var a=this;return(0,y.Z)(function*(){if(!a.refreshing){console.debug("Execute refreshAll");try{a.refreshing=!0;let s=!1;try{let r=yield a.updateManifest(o);s=yield a.updateInventoryItems(r||e),a.updateVendorsAsync()}catch(r){console.error(r)}yield a.triggerArmorUpdateAndUpdateResults(s)}finally{a.refreshing=!1}}})()}triggerArmorUpdateAndUpdateResults(e=!1,o=!0){var a=this;return(0,y.Z)(function*(){e&&a._inventory.next(null),a.shouldCalculateResults()&&(yield a.updateResults())})()}updateVendorsAsync(){this.status.getStatus().updatingVendors||this.vendors.isVendorCacheValid()||(this.status.modifyStatus(e=>e.updatingVendors=!0),this.vendors.updateVendorArmorItemsCache().then(e=>{!e||this.triggerArmorUpdateAndUpdateResults(e,this._config.includeVendorRolls)}).finally(()=>{this.status.modifyStatus(e=>e.updatingVendors=!1)}))}killWorkers(){console.log("killing workers"),this.workers.forEach(e=>{e.terminate()}),this.workers=[]}estimateCombinationsToBeChecked(e,o,a,s){let r=0;const d=e.filter(lt=>lt.isExotic).length,p=e.length-d,A=o.filter(lt=>lt.isExotic).length,m=o.length-A,S=a.filter(lt=>lt.isExotic).length,q=a.length-S,$=s.filter(lt=>lt.isExotic).length,tt=s.length-$;return r+=d*m*q*tt,r+=p*A*q*tt,r+=p*m*S*tt,r+=p*m*q*$,r+=p*m*q*tt,r}updateResults(e=3){var o=this;return(0,y.Z)(function*(){o.clearResults(),o.killWorkers();try{console.time("updateResults with WebWorker"),o.status.modifyStatus(m=>m.calculatingResults=!0);let a=0;o.results=[],o.totalPermutationCount=0,o.resultMaximumTiers=[],o.resultStatCombo3x100=new Set,o.resultStatCombo4x100=new Set;const s=Date.now();let r=o._config;o.selectedExotics=yield Promise.all(r.selectedExotics.filter(m=>m!=D.Io).map(function(){var m=(0,y.Z)(function*(S){return yield o.db.manifestArmor.where("hash").equals(S).first()});return function(S){return m.apply(this,arguments)}}())),o.selectedExotics=o.selectedExotics.filter(m=>!!m),o.itemz=yield o.db.inventoryArmor.where("clazz").equals(r.characterClass).distinct().toArray(),o.itemz=o.itemz.filter(m=>m.slot!=T.y.ArmorSlotNone).filter(m=>-1==r.disabledItems.indexOf(m.itemInstanceId)).filter(m=>{switch(m.source){case B.Collections:return r.includeCollectionRolls;case B.Vendor:return r.includeVendorRolls;default:return!0}}).filter(m=>-1==r.selectedExotics.indexOf(D.Io)||!m.isExotic).filter(m=>1!=o.selectedExotics.length||m.isExotic&&o.selectedExotics[0].hash==m.hash||!m.isExotic&&o.selectedExotics[0].slot!=m.slot).filter(m=>!r.onlyUseMasterworkedExotics||!(6==m.rarity&&!m.masterworked)).filter(m=>!r.onlyUseMasterworkedLegendaries||!(5==m.rarity&&!m.masterworked)).filter(m=>r.allowBlueArmorPieces||6==m.rarity||5==m.rarity).filter(m=>!r.ignoreSunsetArmor||!m.isSunset).filter(m=>m.isExotic||!r.armorPerks[m.slot].fixed||r.armorPerks[m.slot].value==c.Pn.None||r.armorPerks[m.slot].value==m.perk),o.itemz=o.itemz.filter(m=>m.source===B.Inventory||void 0===o.itemz.find(q=>q.source===B.Inventory&&function Zt(n,i){return n.slot===i.slot&&n.hash===i.hash&&n.mobility===i.mobility&&n.resilience===i.resilience&&n.recovery===i.recovery&&n.discipline===i.discipline&&n.intellect===i.intellect&&n.strength===i.strength}(m,q))),o.items=o.itemz.map(m=>({id:m.id,hash:m.hash,slot:m.slot,clazz:m.clazz,perk:m.perk,isExotic:!!m.isExotic,rarity:m.rarity,isSunset:m.isSunset,masterworked:m.masterworked,mobility:m.mobility,resilience:m.resilience,recovery:m.recovery,discipline:m.discipline,intellect:m.intellect,strength:m.strength,source:m.source})),e=o.estimateRequiredThreads(),console.log("nthreads for calculation",e);const d=[...Array(e).keys()].map(()=>0),p=[...Array(e).keys()].map(()=>0);let A=0;o.items=o.items.sort((m,S)=>xt(S)-xt(m)),o._calculationProgress.next(0);for(let m=0;mO+V,0),lt=p.reduce((O,V)=>O+V,0);if(p[0]>0&&p[1]>0&&p[2]>0){const O=lt/tt*100;O>A+.25&&(A=O,o._calculationProgress.next(O))}if(null!=$.runtime){if(o.results.push(...$.results),1==$.done){a++,o.totalPermutationCount+=$.stats.permutationCount,o.resultMaximumTiers.push($.runtime.maximumPossibleTiers);for(let O of $.runtime.statCombo3x100)o.resultStatCombo3x100.add(O);for(let O of $.runtime.statCombo4x100)o.resultStatCombo4x100.add(O)}if(1==$.done&&a==e){o.status.modifyStatus(O=>O.calculatingResults=!1),o._calculationProgress.next(0),o.endResults=[];for(let O of o.results){let V=O.armor.map(nt=>o.itemz.find(Q=>Q.id==nt)),v=V.find(nt=>nt.isExotic),dt={exotic:null==v?[]:[{icon:v?.icon,watermark:v?.watermarkIcon,name:v?.name,hash:v?.hash}],artifice:O.usedArtifice,modCount:O.usedMods.length,modCost:O.usedMods.reduce((nt,Q)=>nt+c.K9[Q][2],0),mods:O.usedMods,stats:O.statsWithMods,statsNoMods:O.statsWithoutMods,tiers:(0,It.jG)(O.statsWithMods),waste:(0,It._1)(O.statsWithMods),items:V.reduce((nt,Q)=>(nt[Q.slot-1].push({energyLevel:Q.energyLevel,hash:Q.hash,itemInstanceId:Q.itemInstanceId,name:Q.name,exotic:!!Q.isExotic,masterworked:Q.masterworked,mayBeBugged:Q.mayBeBugged,slot:Q.slot,perk:Q.perk,transferState:0,stats:[Q.mobility,Q.resilience,Q.recovery,Q.discipline,Q.intellect,Q.strength],source:Q.source}),nt),[[],[],[],[],[]]),classItem:O.classItemPerk,usesCollectionRoll:V.some(nt=>nt.source===B.Collections),usesVendorRoll:V.some(nt=>nt.source===B.Vendor)};o.endResults.push(dt)}o._armorResults.next({results:o.endResults,totalResults:o.totalPermutationCount,itemCount:$.stats.itemCount,totalTime:Date.now()-s,maximumPossibleTiers:o.resultMaximumTiers.reduce((O,V)=>{for(let v=0;v<6;v++)O[v]Math.floor(Math.min(100,O)/10)),statCombo3x100:Array.from(o.resultStatCombo3x100).map(O=>{let V=[];for(let v=0;v<6;v++)(O&1<0&&V.push(v);return V})||[],statCombo4x100:Array.from(o.resultStatCombo4x100).map(O=>{let V=[];for(let v=0;v<6;v++)(O&1<0&&V.push(v);return V},[])||[]}),console.timeEnd("updateResults with WebWorker"),o.workers[m].terminate()}else 1==$.done&&a!=e&&o.workers[m].terminate()}});return function(q){return S.apply(this,arguments)}}(),o.workers[m].onerror=S=>{o.workers[m].terminate()},o.workers[m].postMessage({currentClass:o.currentClass,config:o._config,threadSplit:{count:e,current:m},items:o.items,selectedExotics:o.selectedExotics})}finally{}})()}estimateRequiredThreads(){const e=this.items.filter(q=>q.slot==T.y.ArmorSlotHelmet),o=this.items.filter(q=>q.slot==T.y.ArmorSlotGauntlet),a=this.items.filter(q=>q.slot==T.y.ArmorSlotChest),s=this.items.filter(q=>q.slot==T.y.ArmorSlotLegs),r=this.estimateCombinationsToBeChecked(e,o,a,s),d=Math.max(e.length,o.length,a.length,s.length);let p=1;this._config.tryLimitWastedStats&&this._config.modOptimizationStrategy!=K.w.None&&(p=.7);let m=25e4*p;return Math.max(3,Math.min(Math.max(1,Math.ceil(r/(5e4*p))),Math.ceil(r/m),Math.floor(.75*(navigator.hardwareConcurrency||2)),20,d))}getItemCountForClass(e,o){var a=this;return(0,y.Z)(function*(){let s=yield a.db.inventoryArmor.where("clazz").equals(e).toArray();return o&&(s=s.filter(r=>r.slot==o)),s=s.filter(r=>r.source==B.Inventory),s.length})()}getExoticsForClass(e,o){var a=this;return(0,y.Z)(function*(){let s=yield a.db.inventoryArmor.where("isExotic").equals(1).toArray();s=s.filter(d=>d.clazz==e&&d.armor2&&(!o||d.slot==o));let r=yield a.db.manifestArmor.where("isExotic").equals(1).toArray();return r=r.filter(d=>d.clazz==e&&d.armor2&&(!o||d.slot==o)),r.map(d=>{const p=s.filter(A=>A.hash==d.hash);return{item:d,inCollection:void 0!==p.find(A=>A.source===B.Collections),inInventory:void 0!==p.find(A=>A.source===B.Inventory),inVendor:void 0!==p.find(A=>A.source===B.Vendor)}})})()}updateManifest(e=!1){var o=this;return(0,y.Z)(function*(){if(o.status.getStatus().updatingManifest)return console.error("Already updating the manifest - abort"),!1;o.status.modifyStatus(s=>s.updatingManifest=!0);let a=yield o.api.updateManifest(e).finally(()=>{o.status.modifyStatus(s=>s.updatingManifest=!1)});return a&&o._manifest.next(null),!!a})()}updateInventoryItems(e=!1,o=0){var a=this;return(0,y.Z)(function*(){a.status.modifyStatus(s=>s.updatingInventory=!0);try{return!!(yield a.api.updateArmorItems(e).finally(()=>{a.status.modifyStatus(r=>r.updatingInventory=!1)}))}catch(s){return o>3?(alert("You encountered a strange error with the inventory update. Please log out and log in again. If that does not fix it, please message Mijago."),!1):(a.status.modifyStatus(r=>r.updatingInventory=!1),console.error(s),yield a.updateManifest(!0),yield a.updateInventoryItems(!0,o++))}})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(w),t.LFG(X),t.LFG(vt),t.LFG(bt),t.LFG(gt),t.LFG(ot.F0),t.LFG(Wt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();const ie="https://Database-Clarity.github.io/Character-Stats",Ft=`${ie}/versions/1.9/CharacterStatInfo-NI.json`,Xt=`${ie}/update.json`,jt="clarity-character-stats-version",Bt="clarity-character-stats";let me=(()=>{class n{constructor(e,o){this.http=e,this.inv=o,this._characterStats=new Mt.X(null),this.characterStats=this._characterStats.asObservable(),this.inv.manifest.subscribe(a=>this.load())}load(){var e=this;return(0,y.Z)(function*(){try{yield e.loadCharacterStats()}catch(o){console.warn("Error loading Clarity data",o)}})()}fetchUpdateData(){var e=this;return(0,y.Z)(function*(){return e.http.get(Xt).toPromise()})()}loadCharacterStats(){var e=this;return(0,y.Z)(function*(){const o=localStorage.getItem(Bt);o&&e._characterStats.next(JSON.parse(o));const a=yield e.fetchUpdateData(),s=parseInt(localStorage.getItem(jt)||"0");a&&a.lastUpdate>s&&("1.9"!==a.schemaVersion?console.warn("Unsupported live character stats schema version",a.schemaVersion):a&&void 0!==a.lastUpdate&&(yield e.fetchLiveCharacterStats().then(r=>{localStorage.setItem(Bt,JSON.stringify(r)),localStorage.setItem(jt,a.lastUpdate.toString()),e._characterStats.next(r)})))})()}fetchLiveCharacterStats(){var e=this;return(0,y.Z)(function*(){return e.http.get(Ft).toPromise()})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(Et.eN),t.LFG(Tt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var mt=(()=>{return(n=mt||(mt={}))[n.Speed=1]="Speed",n[n.Percentage=2]="Percentage",n[n.Time=3]="Time",n[n.TimeMMSS=4]="TimeMMSS",n[n.PercentagePerSecond=5]="PercentagePerSecond",mt;var n})();let ae=(()=>{class n{constructor(e){this.clarity=e,this.allStatEntries={},this.overrides=[],this.clarity.characterStats.subscribe(o=>{o&&this.updateCharacterStats(o)})}loadCharacterStats(){this.clarity.load()}updateCharacterStats(e){const o=(JSON.parse(window.localStorage.getItem("allAbilities"))||[]).reduce((a,s)=>(a.set(s.hash,s),a),new Map);this.overrides=Object.values(e).map(a=>a.Overrides).flat(),this.allStatEntries={Mobility:this.generateEntries(e.Mobility,o,[{key:"WalkSpeed",name:"Walk Speed",valueType:mt.Speed},{key:"StrafeSpeed",name:"Strafe Speed",valueType:mt.Speed},{key:"CrouchSpeed",name:"Crouch Speed",valueType:mt.Speed}]),Resilience:this.generateEntries(e.Resilience,o,[{key:"ShieldHP",name:"Shield HP"},{key:"PvEDamageResistance",name:"PvE Damage Resistance",valueType:mt.Percentage},{key:"FlinchResistance",name:"Flinch Resistance",valueType:mt.Percentage}]),Recovery:this.generateEntries(e.Recovery,o,[{key:"TotalRegenTime",name:"Total Regen Time",valueType:mt.Time},{key:"HealthRegenDelay",name:"Health Regen Delay",valueType:mt.Time},{key:"HealthRegenSpeed",name:"Health Regen Speed",valueType:mt.PercentagePerSecond},{key:"ShieldRegenDelay",name:"Shield Regen Delay",valueType:mt.Time},{key:"ShieldRegenSpeed",name:"Shield Regen Speed",valueType:mt.PercentagePerSecond}]),Discipline:this.generateEntries(e.Discipline,o),Intellect:this.generateEntries(e.Intellect,o),Strength:this.generateEntries(e.Strength,o)}}get(e,o,a,s=[]){const r=this.allStatEntries[e]??[],d=this.overrides.filter(p=>s.includes(p.Hash));return r.filter(p=>!(void 0!==o&&void 0!==p.characterClass&&p.characterClass!==o||void 0!==a&&void 0!==p.element&&p.element!==a)).map(p=>d.reduce((A,m)=>function De(n,i){if(!n.hash||!i.Requirements.includes(n.hash))return n;const e={...n,overrideIcons:[...n.overrideIcons??[],i.Hash]};if(i.CooldownOverride)return{...e,values:i.CooldownOverride};if(i.Scalar){const o=i.Requirements.indexOf(n.hash),a=i.Scalar[o];return{...e,values:e.values.map(s=>s*a)}}return console.log("Unhandled override",i),n}(A,m),p))}generateEntries(e,o,a=[]){const s=a.map(({key:d,...p})=>({values:e[d].Array,...p}));return("Abilities"in e?e.Abilities:"SuperAbilities"in e?e.SuperAbilities:[]).forEach(d=>{const p=o.get(d.Hash);if(!p)return;const{characterClass:A,element:m}=function Vt(n){let i,e;const o=n.plug?.plugCategoryIdentifier?.split(".");if(3!==o?.length)return{characterClass:i,element:e};const[a,s,r]=o;return"warlock"===a?i=2:"hunter"===a?i=1:"titan"===a&&(i=0),"arc"===s?e=k.O.Arc:"solar"===s?e=k.O.Solar:"void"===s?e=k.O.Void:"stasis"===s?e=k.O.Stasis:"strand"===s?e=k.O.Strand:"prism"===s&&(e=k.O.Prismatic),{characterClass:i,element:e}}(p);s.push({hash:p.hash,name:p.displayProperties.name,icon:p.displayProperties.icon,values:d.Cooldowns,valueType:mt.TimeMMSS,characterClass:A,element:m})}),s}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(me))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var l=(()=>{return(n=l||(l={}))[n.ADD=0]="ADD",n[n.REMOVE=1]="REMOVE",n[n.MODIFIED=2]="MODIFIED",l;var n})();const ye=[{version:"2.6.2",date:"July 7, 2024",entries:[{type:l.ADD,text:"Added option to ignore existing exotic artifice slots. This is useful for the exotic class item.",issues:[]},{type:l.MODIFIED,text:"Prismatic fragments are now correctly added to the DIM export.",issues:[]},{type:l.MODIFIED,text:"The 'Ignored Items' section is now filtered by the selected class, grouped into armor slots and ordered by item type.",issues:[]},{type:l.MODIFIED,text:"Minor change for the vendor API handling. Thanks nznaza!",issues:[]},{type:l.MODIFIED,text:"Minor change for the manifest API handling.",issues:[]},{type:l.MODIFIED,text:"Mostly minor bugfixes and code improvements.",issues:[]}]},{version:"2.6.1",date:"June 17, 2024",entries:[{type:l.ADD,text:"Add exotic class items.",issues:[]},{type:l.ADD,text:"Added Salvation's Edge Raid modslot and the Echoes of Glory perk.",issues:[]},{type:l.MODIFIED,text:"Changed the way minor mods are displayed. Minor mods are now 25% smaller.",issues:[]},{type:l.MODIFIED,text:"Corrected the description of Facet of Grace.",issues:[]},{type:l.MODIFIED,text:"Added Whisper of Torment, as it now has a -10 in Discipline.",issues:[]},{type:l.REMOVE,text:"Removed old armor modslots (and perks) that no longer exist or function.",issues:[]}]},{version:"2.6.0",date:"June 4, 2024",entries:[{type:l.ADD,text:"Added prismatic fragments.",issues:[]},{type:l.ADD,text:"Added a progressbar that shows the progress of the calculation process.",issues:[]},{type:l.ADD,text:"Added an advanced setting to replace the stat selection boxes with text fields. While it does not look quite nice (as of now), it will allow you to select any value you want. Go get your 6x69 builds done (but don't forget, D2AP still does not add fragments by itself ....YET?!? BUT VERY SOON!)!",issues:[]},{type:l.ADD,text:"Added an 'Assume every exotic has an artifice slot' setting in preparation for the changes in the upcoming expansion. Real artifice exotics should work out-of-the-box at the first day of the expansion, BUT it may happen that I need to update some internal structures. Have fun exploring your options, though!",issues:[]},{type:l.ADD,text:"Added an 'Assume every legendary class item is an artifice armor' setting to allow finer control over the artifice armor assumption.",issues:[]},{type:l.MODIFIED,text:"You will no longer be logged out when the API is offline. The app will use the last known data until the API is back online.",issues:[]},{type:l.MODIFIED,text:"Reworked how calculation workers are spawned, thus improving performance. Thanks to nznaza.",issues:[]},{type:l.MODIFIED,text:"Improved Mod optimisation, leading in drastically reduced runtime when paired with 'Add mods to reduce waste'.",issues:[]},{type:l.MODIFIED,text:"Improved 'Reduce Waste' optimisation. Smarter, better, faster, stronger.",issues:[]},{type:l.MODIFIED,text:"Changing the configuration during a running calculation now restarts the calculation process. Outdated results are a thing of the past!",issues:[]},{type:l.MODIFIED,text:"The amount of workers is now variable and depends on the workload at hand. This should help the insane armor hoarders to reduce the calculation time.",issues:[]},{type:l.MODIFIED,text:"Prepared the vendor API for upcoming Bungie API changes. Thanks to nznaza.",issues:[]},{type:l.MODIFIED,text:"Added 'Exotic Cipher' to the resource overview and removed legendary shards.",issues:[]},{type:l.MODIFIED,text:"Modified the inventory update procedure to be more efficient. This may result in a few hiccups in the first stage - if you encounter any issues, please let me know!",issues:[]},{type:l.MODIFIED,text:"Vendor data is now updated asynchronously. This means that the page will load faster, but the vendor data may be outdated for a few seconds.",issues:[]},{type:l.MODIFIED,text:"The progress notifications are now color-coded and on the right. If there are multiple notifications, then they are stacked.",issues:[]},{type:l.MODIFIED,text:"The display of the used mods is now color-coded to make it easier to distinguish between the different mod types in a single glance.",issues:[]},{type:l.MODIFIED,text:"Locked locks are now red. Mainly because adisypher wouldn't stop asking.",issues:[]},{type:l.MODIFIED,text:"Minor bugfixes and performance optimisation.",issues:[]}]},{version:"2.5.4",date:"April 10, 2024",entries:[{type:l.MODIFIED,text:"Fixed a minor issue where the vendor api may be disabled and block the entire page.",issues:[]}]},{version:"2.5.3",date:"April 5, 2024",entries:[{type:l.MODIFIED,text:"Adapted the logic to parse the new Clarity data format. Thanks to ciar\xe1n!",issues:[]}]},{version:"2.5.2",date:"November 29, 2023",entries:[{type:l.ADD,text:"Split the 'Assume all items are masterworked' switch into 'legendary' and 'exotic' switches. Thanks to Mojo!",issues:[]},{type:l.ADD,text:"Added the 'Ascendant Protector' Perk. Thanks to Mojo!",issues:[]},{type:l.MODIFIED,text:"Fixed artifice mods, again. Thanks to Mojo!",issues:[]},{type:l.MODIFIED,text:"Fixed 'Ghost Items' from the vendor import. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"Updated the values and descriptions for Subclass Fragments. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"Artifice Mods are now correctly added to the DIM export. Thanks to nznaza!",issues:[]}]},{version:"2.5.1",date:"October 29, 2023",entries:[{type:l.ADD,text:"Added the 'Exhumed Excess' Perk. The modslot limitations are now ordered. Thanks to Mojo!",issues:[]},{type:l.MODIFIED,text:"Added a solution for the stat distances 63, 64 and 65. You probably won't ever see it, as this is 'five artifice and five major mods'.",issues:[]},{type:l.MODIFIED,text:"'Fix wasted points' is now ignored for stats that are locked.",issues:[]}]},{version:"2.5.0",date:"October 14, 2023",entries:[{type:l.ADD,text:"The stat cooldowns and values are now automatically updated from the Clarity database. Thanks to ciar\xe1n!",issues:[]},{type:l.ADD,text:"The new modslots/perks are now available in the dropdown.",issues:[]},{type:l.MODIFIED,text:"The stat cooldowns now show icons. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"The fragments now show their icons. Thanks to ciar\xe1n!",issues:[]},{type:l.MODIFIED,text:"Minor internal updates for DIM references. Thanks to bhollis!",issues:[]},{type:l.MODIFIED,text:"Improved the wasted stats selection, again!",issues:[]}]},{version:"2.4.2",date:"July 11, 2023",entries:[{type:l.ADD,text:"Added the ability to use collection roll armor. This is disabled by default. Thanks to ciar\xe1n!",issues:[]},{type:l.ADD,text:"Added the ability to use vendor armor, including Xur. This is disabled by default. Thanks to ciar\xe1n!",issues:[]},{type:l.ADD,text:"Added the ability to select the optimisation strategy. You can now choose between 'Reduce waste', 'Reduce used mods' and 'Reduce used modslots'. The default is 'Reduce waste'.",issues:[]},{type:l.ADD,text:"Re-added the reduce wasted stats feature. It is now disabled by default. It is a bit slower and not really necessary for most people.",issues:[]},{type:l.MODIFIED,text:"Zero Waste is no longer dependent on the 'Reduce wasted stats' setting. In fact, it practically overwrites it.",issues:[]},{type:l.REMOVE,text:"Removed the 'Extra optimisation steps' setting. It is now always enabled.",issues:[]}]},{version:"2.4.0",date:"May 23, 2023",entries:[{type:l.MODIFIED,text:"Rewrote the internal algorithm. It makes stuff faster and gives better results.",issues:[]},{type:l.ADD,text:"Added a 'Perform further optimisation' setting. This will give you better results, but it will take a bit longer.",issues:[]},{type:l.ADD,text:"Added Icons to the Stat Selection to make it easier to see which row is which perk.",issues:[]},{type:l.ADD,text:"Added button to download results as JSON.",issues:[]},{type:l.ADD,text:"Added Sonar Amplifier perk.",issues:[]},{type:l.MODIFIED,text:"Enabled Modslot limitation.",issues:[]},{type:l.MODIFIED,text:"Enabled the 3x100 and 4x100 buttons.",issues:[]},{type:l.MODIFIED,text:"Enabled Zero-Waste mode.",issues:[]},{type:l.MODIFIED,text:"Temporarily disabled 'Reduce Wasted Stats'. It will be back soon.",issues:[]}]},{version:"2.3.2",date:"May 7, 2023",entries:[{type:l.ADD,text:"Feature: Added 'Guardian Games' class item type to the dropdown. ",issues:[]},{type:l.MODIFIED,text:"Reformatted every file in the codebase and improved the code workflow. You should not really see this on your end, but it will allow everyone to easily contribute to this open source project!",issues:[]}]},{version:"2.3.1",date:"April 2, 2023",entries:[{type:l.ADD,text:"Feature: Added the possibility to only show builds that contain an exotic.",issues:[]},{type:l.ADD,text:"Added 'Root of Nightmares' modslot filter.",issues:[]},{type:l.ADD,text:"Added 'Queen's Favor' seasonal perk filter.",issues:[]},{type:l.ADD,text:"Added text indicating that only fragments that affect stats are shown.",issues:[]},{type:l.MODIFIED,text:"Fixed deprecated mods being sent when opening the loadout in DIM. Also adds artifice mods now.",issues:[]},{type:l.MODIFIED,text:"Fixed an issue where the tool did not put artifice mods on the class item if you forced the class item to be artifice.....",issues:[]},{type:l.MODIFIED,text:"Fixed an issue where the default selection was the titan class, even if you had no titan characters.",issues:[]}]},{version:"2.3.0",date:"March 14, 2023",entries:[{type:l.ADD,text:"Automatically adds artifice mods to your armor. This replaces minor and major mods where possible.",issues:[]},{type:l.ADD,text:"Added the amount of used artifice mods to the result table overview (next to the mods). They are not calculated into the 'mod cost' column.",issues:[]},{type:l.ADD,text:"Added new fragments, including Strand.",issues:[]},{type:l.MODIFIED,text:"Adapted modslot cost of Resilience and Recovery mods.",issues:[]},{type:l.MODIFIED,text:"Introduced more modules for asynchronous loading. This is more a speed improvement than a feature.",issues:[]},{type:l.MODIFIED,text:"Reduced the maximum limit of reported results from 50,000 to 30,000. Note that D2AP still calculates every result, it just does not report them. This is a major speedup, and you usually should not even realize the change.",issues:[]},{type:l.MODIFIED,text:"Increased the visual contrast of major mods in the results table. This means it is now easier to distinguish major from minor mods.",issues:[]},{type:l.REMOVE,text:"Removed the elemental affinity completely.",issues:[]},{type:l.REMOVE,text:"DISABLED the 'Zero Waste' feature. It will be re-enabled in the future.",issues:[]},{type:l.REMOVE,text:"DISABLED the 'Modslot Limitation' feature. It will be re-enabled in the future.",issues:[]}]},{version:"2.2.16",date:"December 7, 2022",entries:[{type:l.ADD,text:"Added Ember of Torches (with -10 Discipline).",issues:[]},{type:l.ADD,text:"Added Retrofit mods (mobility and resilience).",issues:[]},{type:l.ADD,text:"Added armor perk 'Seraph Sensor Array' to the dropdown.",issues:[]},{type:l.ADD,text:"Added a Game2Give message. Let's support the little lights together!",issues:[]},{type:l.MODIFIED,text:"Fixed artifice modslot.",issues:[]},{type:l.MODIFIED,text:"Membership data is cached longer to make things faster and to ease the Bungie API.",issues:[]}]},{version:"2.2.15",date:"October 18, 2022",entries:[{type:l.ADD,text:"Added FOTL masks.",issues:[]}]},{version:"2.2.13",date:"September 23, 2022",entries:[{type:l.ADD,text:"Added an advanced setting to replace the 'Tiers' column with a 'Max Tiers' column. This is adds the amount of open modslots to the column, but ignores mod limitations at the moment. A T32 build without mods will now show T37.",issues:[]}]},{version:"2.2.12",date:"September 11, 2022",entries:[{type:l.MODIFIED,text:"Changed the layout to force the settings (left) and results (right) to be next to each other. This means that the page is more mobile approachable. This is also the first step to a more flexible layout.",issues:[]}]},{version:"2.2.11",date:"September 10, 2022",entries:[{type:l.ADD,text:"Added a display for your owned upgrade materials in the character overview.",issues:[]},{type:l.ADD,text:"Added a notification to warn you when you create a modslot limitation that yields no results. Note that this will not (yet) show invalid combinations over all armor, just for the given slot you selected it in.",issues:[]},{type:l.MODIFIED,text:"Reduced size of exotic icons so that the left side will not grow on Titan class.",issues:[]},{type:l.MODIFIED,text:"The 'Performance Optimisation' settings will now always re-enable after a reload to prevent your browser being stuck in a crash-loop. (This is for you, iOS Safari users)",issues:[]},{type:l.MODIFIED,text:"Changed wording of the 'Performance Optimisation' setting to prevent people from using it incorrectly.",issues:[]}]},{version:"2.2.10",date:"September 2, 2022",entries:[{type:l.MODIFIED,text:"Updated Artifice Modslot Hash after the most recent hotfix.",issues:[]}]},{version:"2.2.9",date:"September 1, 2022",entries:[{type:l.MODIFIED,text:"Tooltips do now not obstruct the clicks of stats. This fixes the iOS stat selection issue.",issues:[]}]},{version:"2.2.8c",date:"August 24, 2022",entries:[{type:l.MODIFIED,text:"The manifest is now (again) automatically updated on version changes. This fixes your artifice problems at the beginning of a new season.",issues:[]},{type:l.MODIFIED,text:"Added subclass hashes for Arc. This means that it now transfers to DIM.",issues:[]}]},{version:"2.2.8b",date:"August 24, 2022",entries:[{type:l.MODIFIED,text:"Fixed Artifice modslots. You might need to wait a bit, alternatively delete the database (Account section) or re-log.",issues:[]}]},{version:"2.2.8a",date:"August 23, 2022",entries:[{type:l.MODIFIED,text:"Updated grenade and melee cooldowns for arc.",issues:[]}]},{version:"2.2.8",date:"August 23, 2022",entries:[{type:l.ADD,text:"Added Arc 3.0 fragments.",issues:[]},{type:l.MODIFIED,text:"Fixed tooltip issues on iOS devices.",issues:[]},{type:l.MODIFIED,text:"Fixed an infinite loading issue.",issues:[]}]},{version:"2.2.7",date:"June 25, 2022",entries:[{type:l.ADD,text:"Added a link to my Discord bot Crayon.",issues:[]},{type:l.MODIFIED,text:"Fixed an issue where a large number of stored configurations would drastically slow down the app.",issues:[]}]},{version:"2.2.6",date:"June 8, 2022",entries:[{type:l.MODIFIED,text:"Fixed an issue where the elemental selection would not give the correct results under very specific conditions.",issues:[]}]},{version:"2.2.5",date:"June 7, 2022",entries:[{type:l.ADD,text:"Added all of the new ability cooldowns.",issues:[]},{type:l.MODIFIED,text:"Completely reworked the ability cooldown tooltips. They now show the difference to the currently selected tier.",issues:[]}]},{version:"2.2.4",date:"June 3, 2022",entries:[{type:l.MODIFIED,text:"Fixed the export to DIM. Thanks to bhollis for the fix!",issues:[]},{type:l.MODIFIED,text:"The manifest now automatically updates when Bungie updated it too, except just after a fixed timespan.",issues:[]}]},{version:"2.2.3",date:"May 24, 2022",entries:[{type:l.ADD,text:"Added Solar 3.0",issues:[]},{type:l.MODIFIED,text:"Adapted artifice armor to the new Season.",issues:[]}]},{version:"2.2.2",date:"Mar 9, 2022",entries:[{type:l.ADD,text:"See what mods do by hovering over their name.",issues:["D2AP-41"]},{type:l.ADD,text:"Added Vow of the Disciple armor.",issues:["D2AP-35"]},{type:l.ADD,text:"Added 'Uniformed Officer' armor.",issues:["D2AP-35"]},{type:l.MODIFIED,text:"Fixed Scatter grenades being Tier 3 (were T4 before).",issues:["D2AP-39"]},{type:l.MODIFIED,text:"Changed the color of the login button.",issues:["D2AP-37"]},{type:l.MODIFIED,text:"When a selected character class does not exist, the tool will now select the first available class as default."}]},{version:"2.2.1",date:"Feb 22, 2022",entries:[{type:l.ADD,text:"Added a switch to select between Stasis and Void 3.0 fragments. Stasis is enabled per default to ensure backwards compatibility of saved configurations.",issues:["D2AP-10"]},{type:l.ADD,text:"Added a debug section to the (new) account settings page. The account settings page does not do much yet, I just wanted to deploy the debug functions.",issues:["D2AP-23"]},{type:l.MODIFIED,text:"Modified super cooldowns for Witch Queen."},{type:l.MODIFIED,text:"Added a minor text to the exotic overview that explains that exotics not in the inventory are shown in grayscale. You can also no longer select those.",issues:["D2AP-17"]},{type:l.MODIFIED,text:"Minor changes in how the database behaves on logout. It now deletes the inventory when you log out, but still keeps the manifest.",issues:["D2AP-27"]},{type:l.MODIFIED,text:"Users are now logged out when the Bungie.Net API is down.",issues:["D2AP-34"]},{type:l.MODIFIED,text:"Fixed Charge Harvester and Echo of Persistence incorrectly reducing Discipline instead of recovery when used on a Warlock."}]},{version:"2.2.0",date:"Feb 09, 2022",entries:[{type:l.ADD,text:"Added the ability to select armor perks and 5th slots. Just like the elements you can optionally enforce it to be on a certain slot. Useful if you want to build Iron Banner armor or utilize artifice modslots."},{type:l.ADD,text:"Added the ability to limit the available points on each armor item for stat mods. This allows you to limit the kind of stat mods that are usable. You can now say 'do not use major intellect mods'."},{type:l.ADD,text:"Added the ability to lock stat tiers. Previously you could only set 'Use Tier 3 or higher', now you can optionally set 'Enforce Tier 3'. This is useful for example if you want to enforce T3 mobility on a Titan."},{type:l.ADD,text:"Added a summary of important configuration choices to the result header to improve readability."},{type:l.ADD,text:"Added a button to open the DIM Loadout Builder with the current settings."},{type:l.ADD,text:"Added an option that forces the correct element on non-masterworked armor pieces. This is per default enabled."},{type:l.ADD,text:"Added cooldowns for class abilities (Dodge, Barricade, Rift)."},{type:l.ADD,text:"Added visual indicators for minor and major mods in the overview table. The whole visualization is also more compact now."},{type:l.ADD,text:"Added visual cursor indicator to every clickable input, e.g. in the exotic, element and perk/mod selection."},{type:l.ADD,text:"Added a (very basic) item tooltip."},{type:l.ADD,text:"Show the required material cost for each item. Note that this ignores your class item."},{type:l.ADD,text:"Added a stat summary table to the stat detail view. This allows you to easily share a stat distribution with others."},{type:l.ADD,text:"Added 'Clear this section' button to each configuration section."},{type:l.ADD,text:"Added support for your class items. You won't see a lot of this, except when you use the slot and element limitation in specific ways."},{type:l.ADD,text:"Detailed information is now in expandable containers to improve readability."},{type:l.ADD,text:"Show the seasonal icon for every item too."},{type:l.ADD,text:"Added info text to the table headers."},{type:l.ADD,text:"The character selection now shows the existing characters - and their emblems too!"},{type:l.ADD,text:"Added Discord and another Ko-Fi link. You can find them in the character selection."},{type:l.ADD,text:"Added a changelog popup right at the start of the page. It only appears when a new update occured. You can always trigger it by clicking the current version number."},{type:l.ADD,text:"Now utilizes three webworkers instead of one. The process is simple, but generally speeds up the results by a huge margin."},{type:l.ADD,text:"Added an Armor Investigation tab for data scientists."},{type:l.ADD,text:"Added a sidenav for smaller devices and reworked the top menubar."},{type:l.ADD,text:"The detailed result table now shows the perk of an selected item, if it has one. This also applies to class items, if necessary."},{type:l.ADD,text:"Hovering over exotics in the exotic selection now displays their perk description."},{type:l.ADD,text:"Added an advanced setting to disable white, green and blue armor."},{type:l.ADD,text:"Added an advanced setting to ignore sunset armor."},{type:l.MODIFIED,text:"Changed the word 'Permutation' to 'Combination' wherever it has been used."},{type:l.MODIFIED,text:"Clicking on a setting that is already set does not re-trigger the calculation now. For example, selecting T3 recovery when it is already at T3 now does nothing."},{type:l.MODIFIED,text:"The default for all stats is now tier 0 instead of tier 1, to make it consistent with the clear buttons."},{type:l.MODIFIED,text:"The default setting for 'ignore non masterworked elements' is now 'off'."},{type:l.MODIFIED,text:"The 'time required' number now measures the time from before the webworkers are spawned until all webworkers are done. Previously it only monitored the time required INSIDE the webworker, so it may show slower times."},{type:l.MODIFIED,text:"Fixed the width of the 'Exotic' header in the results table. This means that it is now farther away from the 'Mobility' column."},{type:l.MODIFIED,text:"Completely reworked the elemental affinity selection. Per default it is now not fixed to a certain armor slot, but using a toggle button you can simply do so again."},{type:l.MODIFIED,text:"The results header now screams at you in bright red letters when no results are found."},{type:l.MODIFIED,text:"The alternating rows of the results details table have now a lighter color to make it easier to read."},{type:l.MODIFIED,text:"Fixed ability cooldowns for melee and grenade at tier 7 and tier 8."},{type:l.MODIFIED,text:"Cooldowns now are shown in MM:SS instead of plain seconds."},{type:l.MODIFIED,text:"Completely rewrote the core logic of D2ArmorPicker for the changes mentioned above."},{type:l.MODIFIED,text:"Exotics you do not have in your vault or inventory are now greyed out."},{type:l.MODIFIED,text:"Fixed an issue where exotics were not shown at your first login."},{type:l.MODIFIED,text:"Changed the color of important buttons so that they are easier to read."},{type:l.MODIFIED,text:"The icons of items in the results are now loaded asynchronous from their hashes. This saves a lot of memory, as I do not have to send two icon URLs for each item - for each result. I will further improve this in a later version."},{type:l.MODIFIED,text:"Maximum table output is now limited to 50 results (instead of 200). It still defaults to 20.}"},{type:l.MODIFIED,text:"Completely reworked the visuals of the changelog. It is now more pleasing to the eye."}]},{version:"2.1.4",date:"Dec 29, 2021",entries:[{type:l.MODIFIED,text:"Item stats are now built from their plugs and InvestmentStats (in case of some exotics). This fixes potentially invalid item stats when you use mods like Powerful Friends or Protective Light. A big thanks to u/deangaudet for reminding me that the API also reports the plugs of an item."},{type:l.MODIFIED,text:"Only save necessary item types of the manifest (namely mods and armor). Also, save twhe investmentStats now."},{type:l.MODIFIED,text:"Sped up the item update step."}]},{version:"2.1.3",date:"Dec 16, 2021",entries:[{type:l.MODIFIED,text:"Added new stat cooldowns"}]},{version:"2.1.2",date:"Dec 1, 2021",entries:[{type:l.MODIFIED,text:"The changelog is now in a scrollable box."},{type:l.MODIFIED,text:"Changed buymeacoffee to a ko-fi link. This way we can keep the PayPal support!"}]},{version:"2.1.1",date:"Nov 3, 2021",entries:[{type:l.REMOVE,text:"Removed the HALLOWEEN SPECIAL feature. Maybe something like this will return some day?"},{type:l.ADD,text:"Added tooltip to the item icons in the detailed overview to show the name of the item."},{type:l.MODIFIED,text:"Fixed an issue where the list of exotics did not load at the first login."},{type:l.MODIFIED,text:"Saved configurations now contain the current software version for future reference."},{type:l.MODIFIED,text:"Minor code quality improvements"}]},{version:"2.1.0 (major)",date:"Oct 29, 2021",entries:[{type:l.REMOVE,text:"Completely removed V1 of the tool. If you had any problems with V2, you had over three months to report them."},{type:l.ADD,text:"The stat selection now displays which stat tiers are added by stat mods (PF/RL) or stasis fragments in the configuration."},{type:l.ADD,text:"You can now export (and import) individual configurations as well as all stored configurations at once."},{type:l.ADD,text:"Added a navigation bar to the title bar. On smaller screens it is replaced by two buttons in the character selection."},{type:l.ADD,text:"Added more details to the last step of the 'What to do now?' section. It now lists the fragments and mods you selected."},{type:l.MODIFIED,text:"Optimized code and reduced overall page size."}]},{version:"2.0.16",date:"Oct 26, 2021",entries:[{type:l.MODIFIED,text:"Completely rewrote the core logic in order to fix the memory issues. The tool will now no longer crash when you have many armor items, but it's slightly slower than the previous approach. I tested it with 600 items - it works and does not crash, but takes up to a minute. Make sure to never get that much armor and to lock an exotic right away."},{type:l.MODIFIED,text:"The rewrite also fixed the issue where the tool did not work in Safari, or more generally, on Mac and iPhone."},{type:l.MODIFIED,text:"The rewrite also fixed an issue where items could not be found when an result update was triggered while the inventory was updated."}]},{version:"2.0.15",date:"Oct 24, 2021",entries:[{type:l.MODIFIED,text:"Updated the visual display of the cluster page. It displays the stats in a better way now."},{type:l.MODIFIED,text:"Fixed an issue with login, where you were automatically logged in again and could not switch accounts."}]},{version:"2.0.14",date:"Oct 21, 2021",entries:[{type:l.MODIFIED,text:"Updated URLs to the mobility, resilience and recovery images, as Bungie decided to change their URLs in today's hotfix."}]},{version:"2.0.13",date:"Oct 20, 2021",entries:[{type:l.ADD,text:"Added a chart to the armor clustering page, showing each clusters average stats."},{type:l.MODIFIED,text:"Stats over 100 are now seen as wasted."}]},{version:"2.0.12",date:"Oct 18, 2021",entries:[{type:l.ADD,text:"Added an experimental armor clustering feature."}]},{version:"2.0.11",date:"Oct 13, 2021",entries:[{type:l.ADD,text:"HALLOWEEN SPECIAL! Added (temporary) filter for halloween masks! This will be removed after the event."},{type:l.MODIFIED,text:"Fix: Clear the results if you switch character and no possible permutations can be found."}]},{version:"2.0.10",date:"Oct 10, 2021",entries:[{type:l.ADD,text:"Added 'Equip Items' button to the detailed item overview."}]},{version:"2.0.9",date:"Oct 6, 2021",entries:[{type:l.ADD,text:"Added a detailed description of the steps required to build a selected result."},{type:l.ADD,text:"Added a button to disable all four armor pieces at once."},{type:l.MODIFIED,text:"Fixed an issue where the permutations were not updated after 'Ignore armor elemental affinities on masterworked armor' was changed."}]},{version:"2.0.8",date:"Oct 5, 2021",entries:[{type:l.ADD,text:"Added this changelog to the help page."},{type:l.ADD,text:"Added 'Move to Inventory' button (beta)."},{type:l.ADD,text:"Split up 'Assume items are masterworked' into three settings: Class Items, Legendaries, Exotics"},{type:l.MODIFIED,text:"'Try to optimize wasted stats' is now active per default."},{type:l.MODIFIED,text:"Introduced an item buffer in the results component to further reduce memory usage."}]}];let Ce=(()=>{class n{constructor(e){this.changelog=e}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(se))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-changelog-dialog"]],decls:9,vars:2,consts:[["mat-dialog-title","",1,"title"],[1,"mat-typography"],["align","end"],["cdkFocusInitial","","color","primary","mat-raised-button","",3,"mat-dialog-close"]],template:function(e,o){1&e&&(t.TgZ(0,"h2",0),t._uU(1),t.qZA(),t.TgZ(2,"mat-dialog-content",1)(3,"div"),t._uU(4," Hi! There has been a new version of D2ArmorPicker! The following list shows all the relevant changes. Note that you can always look at the changelogs in the Help tab. "),t.qZA(),t._UZ(5,"app-changelog-list"),t.qZA(),t.TgZ(6,"mat-dialog-actions",2)(7,"button",3),t._uU(8,"Thanks, I saw it!"),t.qZA()()),2&e&&(t.xp6(1),t.hij("D2ArmorPicker Changelog for Version ",o.changelog.changelogData[0].version,""),t.xp6(6),t.Q6J("mat-dialog-close",!0))},styles:[".title[_ngcontent-%COMP%]{text-decoration:underline;-webkit-text-decoration-color:#0059ff;text-decoration-color:#0059ff}"]}),n})();var kt=_(5412);let se=(()=>{class n{constructor(e){this.dialog=e}setChangelogSeenFlag(){return localStorage.setItem("last-changelog-version",this.changelogData[0].version)}get lastViewedChangelog(){return localStorage.getItem("last-changelog-version")}get mustShowChangelog(){return this.changelogData[0].version!==this.lastViewedChangelog}get changelogData(){return ye}openChangelogDialog(){this.dialog.open(Ce).afterClosed().subscribe(o=>{this.setChangelogSeenFlag()})}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(kt.uw))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();var pt=_(266),Pe=_(3162),St=_(7392),Gt=_(6338),Te=_(3848),Re=_(3267);let zt=(()=>{class n{constructor(e,o){this.templateRef=e,this.vcRef=o,this.context={$implicit:null,ngVar:null},this.hasView=!1}set ngVar(e){this.context.$implicit=this.context.ngVar=e,this.hasView||(this.vcRef.createEmbeddedView(this.templateRef,this.context),this.hasView=!0)}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.Rgc),t.Y36(t.s_b))},n.\u0275dir=t.lG2({type:n,selectors:[["","ngVar",""]],inputs:{ngVar:"ngVar"}}),n})(),Ne=(()=>{class n{constructor(e){this.changelog=e}ngAfterViewInit(){this.changelog.mustShowChangelog&&this.changelog.openChangelogDialog()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(se))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-changelog-dialog-controller"]],decls:0,vars:0,template:function(e,o){},encapsulation:2}),n})();function qe(n,i){1&n&&(t.TgZ(0,"mat-toolbar",31),t._UZ(1,"span",20),t._uU(2," The API is unavailable. The app will work with the data it has available right now. "),t._UZ(3,"span",20),t.qZA())}function Fe(n,i){1&n&&(t.TgZ(0,"mat-toolbar",31),t._UZ(1,"span",20),t._uU(2," There was an error with the authentication. The API may be down, or your session timed out. "),t._UZ(3,"span",20),t.qZA())}function Je(n,i){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,Fe,4,0,"mat-toolbar",1),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.authError)}}function Le(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"a",32),t.NdJ("click",function(){t.CHM(e),t.oxw();const a=t.MAs(5);return t.KtG(a.toggle())}),t._uU(1),t.qZA()}if(2&n){const e=i.$implicit,o=i.index,a=t.oxw(2);t.ekj("active",a.activeLinkIndex===o),t.Q6J("routerLink",e.link),t.xp6(1),t.hij(" ",e.name," ")}}function Ye(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",33),t.NdJ("click",function(){t.CHM(e),t.oxw();const a=t.MAs(5);return t.KtG(a.toggle())}),t.TgZ(1,"mat-icon",5),t._uU(2,"menu"),t.qZA()()}}function Be(n,i){if(1&n&&(t.TgZ(0,"a",34),t._uU(1),t.qZA()),2&n){const e=i.$implicit,o=i.index,a=t.oxw(2);t.Q6J("active",a.activeLinkIndex===o)("routerLink",e.link),t.xp6(1),t.hij(" ",e.name," ")}}function Ve(n,i){1&n&&t._UZ(0,"mat-progress-bar",36)}function Qe(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Ve,1,0,"mat-progress-bar",35),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.updatingResultsTable||e.calculatingResults||e.calculatingPermutations||e.updatingInventory||e.updatingVendors||e.updatingManifest)}}function He(n,i){1&n&&(t.TgZ(0,"mat-card",43),t._uU(1," Updating vendor information inventory in the background. "),t.qZA())}function We(n,i){1&n&&(t.TgZ(0,"mat-card",44),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3," Updating the cached manifest."),t.qZA())}function je(n,i){1&n&&(t.TgZ(0,"mat-card",45),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3," Updating the cached inventory."),t.qZA())}function Ge(n,i){if(1&n&&(t.TgZ(0,"mat-card",46),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3," Calculating possible results. "),t._UZ(4,"mat-progress-bar",47),t.qZA()),2&n){const e=t.oxw(3);t.xp6(4),t.Q6J("value",e.computationProgress)}}function ze(n,i){1&n&&(t.TgZ(0,"mat-card",48),t._uU(1," Please wait:"),t._UZ(2,"br"),t._uU(3,"Updating the result display table."),t.qZA())}function Ke(n,i){if(1&n&&(t.TgZ(0,"div",37),t.YNc(1,He,2,0,"mat-card",38),t.YNc(2,We,4,0,"mat-card",39),t.YNc(3,je,4,0,"mat-card",40),t.YNc(4,Ge,5,1,"mat-card",41),t.YNc(5,ze,4,0,"mat-card",42),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.updatingVendors),t.xp6(1),t.Q6J("ngIf",e.updatingManifest),t.xp6(1),t.Q6J("ngIf",e.updatingInventory),t.xp6(1),t.Q6J("ngIf",e.calculatingResults),t.xp6(1),t.Q6J("ngIf",e.updatingResultsTable)}}function $e(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div"),t.YNc(1,qe,4,0,"mat-toolbar",1),t.YNc(2,Je,2,1,"div",0),t.ALo(3,"async"),t.TgZ(4,"mat-sidenav",2,3),t.ALo(6,"async"),t.TgZ(7,"mat-toolbar")(8,"button",4),t.NdJ("click",function(){t.CHM(e);const a=t.MAs(5);return t.KtG(a.toggle())}),t.TgZ(9,"mat-icon",5),t._uU(10,"menu"),t.qZA(),t._uU(11," Close Menu "),t.qZA()(),t._UZ(12,"hr"),t.TgZ(13,"mat-nav-list"),t.YNc(14,Le,2,4,"a",6),t._UZ(15,"hr"),t.TgZ(16,"a",7)(17,"a",8)(18,"mat-icon",9),t._uU(19,"attach_money"),t.qZA(),t._uU(20," Buy me a coffee! "),t.qZA()(),t.TgZ(21,"a",10),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.changelog.openChangelogDialog())}),t.TgZ(22,"a",11),t._uU(23," Open changelog "),t.qZA()(),t._UZ(24,"hr"),t.qZA()(),t.TgZ(25,"mat-toolbar",12),t.YNc(26,Ye,3,0,"button",13),t.ALo(27,"async"),t.TgZ(28,"span"),t._uU(29,"D2ArmorPicker "),t.TgZ(30,"small"),t._uU(31," by Mijago"),t.qZA(),t.TgZ(32,"a",14),t._UZ(33,"img",15),t.qZA(),t.TgZ(34,"a",16),t._UZ(35,"img",17),t.qZA(),t.TgZ(36,"a",18),t._UZ(37,"img",19),t.qZA()(),t._UZ(38,"span",20),t.TgZ(39,"div",21)(40,"nav",22),t.YNc(41,Be,2,3,"a",23),t.qZA()(),t._UZ(42,"span",20),t.TgZ(43,"div",24)(44,"span",25)(45,"a",26),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.changelog.openChangelogDialog())}),t._uU(46),t.qZA()(),t.TgZ(47,"a",27)(48,"mat-icon",9),t._uU(49,"attach_money"),t.qZA(),t._uU(50," Buy me a coffee! "),t.qZA(),t.TgZ(51,"button",28),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.refreshAll(!0))}),t.TgZ(52,"mat-icon"),t._uU(53,"refresh"),t.qZA()(),t.TgZ(54,"button",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.logout())}),t.TgZ(55,"mat-icon"),t._uU(56,"logout"),t.qZA()()()(),t._UZ(57,"router-outlet"),t.YNc(58,Qe,2,1,"span",0),t.ALo(59,"async"),t.YNc(60,Ke,6,5,"div",30),t.ALo(61,"async"),t._UZ(62,"app-changelog-dialog-controller"),t.qZA()}if(2&n){const e=i.ngVar,o=t.oxw();t.xp6(1),t.Q6J("ngIf",e.apiError),t.xp6(1),t.Q6J("ngVar",t.lcZ(3,10,o.status.status)),t.xp6(2),t.Q6J("opened",!1),t.uIk("role",t.lcZ(6,12,o.isHandset$)?"dialog":"navigation"),t.xp6(10),t.Q6J("ngForOf",o.navLinks),t.xp6(12),t.Q6J("ngIf",t.lcZ(27,14,o.isHandset$)),t.xp6(15),t.Q6J("ngForOf",o.navLinks),t.xp6(5),t.hij("v",o.version,"\xa0"),t.xp6(12),t.Q6J("ngVar",t.lcZ(59,16,o.status.status)),t.xp6(2),t.Q6J("ngVar",t.lcZ(61,18,o.status.status))}}let Xe=(()=>{class n{constructor(e,o,a,s,r,d,p){this.status=e,this.breakpointObserver=o,this.inv=a,this.auth=s,this.router=r,this.characterStats=d,this.changelog=p,this.version=g.N.version,this.activeLinkIndex=0,this.computationProgress=0,this.navLinks=[{link:"/",name:"Home"},{link:"/cluster",name:"Clustering"},{link:"/help",name:"Help"},{link:"/investigate",name:"Armor Investigation"},{link:"/account",name:"Account"}],this.isHandset$=this.breakpointObserver.observe([U.u3.Handset,U.u3.Small,U.u3.XSmall]).pipe((0,E.U)(A=>A.matches),(0,F.d)())}ngOnInit(){this.activeLinkIndex=this.navLinks.indexOf(this.navLinks.find(e=>e.link===this.router.url)),this.router.events.subscribe(e=>{e instanceof ot.m2&&(this.activeLinkIndex=this.navLinks.indexOf(this.navLinks.find(o=>o.link===this.router.url)))}),this.characterStats.loadCharacterStats(),this.inv.calculationProgress.subscribe(e=>{this.computationProgress=e})}refreshAll(e){var o=this;return(0,y.Z)(function*(){console.debug("Trigger refreshAll due to button press"),yield o.inv.refreshAll(e)})()}logout(){this.auth.logout()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(vt),t.Y36(U.Yg),t.Y36(Tt),t.Y36(gt),t.Y36(ot.F0),t.Y36(ae),t.Y36(se))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-app-v2-core"]],decls:2,vars:3,consts:[[4,"ngVar"],["color","warn","class","bar-api-warn",4,"ngIf"],["fixedInViewport","","mode","over",1,"sidenav",3,"opened"],["drawer",""],["aria-label","Toggle sidenav","mat-stroked-button","","type","button",3,"click"],["aria-label","Side nav toggle icon"],["mat-list-item","",3,"active","routerLink","click",4,"ngFor","ngForOf"],["href","https://ko-fi.com/mijago","mat-list-item",""],["color","primary","mat-raised-button","","matTooltip","You like my work? This leads you to ko-fi.com, where you can easily support me!","target","_blank"],["inline",""],["mat-list-item","",3,"click"],["mat-raised-button",""],["id","header","role","heading"],["aria-label","Toggle sidenav","mat-icon-button","","type","button",3,"click",4,"ngIf"],["href","https://twitter.com/MijagoCoding/","matTooltip","Birb App","target","_blank"],["alt","Me on twitter","src","assets/logo-twitter.png",1,"logo-twitter"],["href","https://ko-fi.com/mijago","matTooltip","If you like my work, you can always buy me a coffee!","target","_blank"],["alt","Ko-Fi","src","assets/logo-kofi.png",1,"logo-twitter"],["href","http://discord.d2armorpicker.com/","matTooltip","Visit me at the development & support discord.","target","_blank"],["alt","Discord","src","assets/logo-discord.png",1,"logo-twitter"],[1,"header-spacer"],["fxHide.lt-md","true","fxShow","true"],["id","navbar","mat-tab-nav-bar",""],["mat-tab-link","",3,"active","routerLink",4,"ngFor","ngForOf"],["id","buttonContainer"],["fxShow","false","fxShow.gt-md","true","matTooltip","Click to show the changelog dialog.",1,"changelogText"],[3,"click"],["color","accent","fxHide.lt-md","true","fxShow","true","href","https://ko-fi.com/mijago","mat-stroked-button","","matTooltip","You like my work? This leads you to ko-fi.com, where you can easily support me!","target","_blank"],["aria-label","Refresh","mat-icon-button","","matTooltip","Reload all items from the API.",1,"example-icon",3,"click"],["aria-label","Logout","color","warn","mat-icon-button","","matTooltip","Logout",1,"example-icon",3,"click"],["class","info-container",4,"ngVar"],["color","warn",1,"bar-api-warn"],["mat-list-item","",3,"routerLink","click"],["aria-label","Toggle sidenav","mat-icon-button","","type","button",3,"click"],["mat-tab-link","",3,"active","routerLink"],["id","loading","mode","indeterminate",4,"ngIf"],["id","loading","mode","indeterminate"],[1,"info-container"],["class","info info-updating-vendor",4,"ngIf"],["class","info info-updating-manifest",4,"ngIf"],["class","info info-updating-inventory",4,"ngIf"],["class","info info-calculating-results",4,"ngIf"],["class","info info-updating-results",4,"ngIf"],[1,"info","info-updating-vendor"],[1,"info","info-updating-manifest"],[1,"info","info-updating-inventory"],[1,"info","info-calculating-results"],[3,"value"],[1,"info","info-updating-results"]],template:function(e,o){1&e&&(t.YNc(0,$e,63,20,"div",0),t.ALo(1,"async")),2&e&&t.Q6J("ngVar",t.lcZ(1,1,o.status.status))},dependencies:[I.sg,I.O5,M.b8,st.lW,st.zs,Y.a8,pt.gM,Pe.pW,St.Hw,wt.Ye,Gt.Hk,Gt.Tg,Te.BU,Te.Nj,Re.JX,ot.lC,ot.yS,zt,Ne,I.Ov],styles:[".loading[_ngcontent-%COMP%]{cursor:progress}.info-container[_ngcontent-%COMP%]{z-index:1000;position:fixed;top:37px;right:0;display:flex;flex-direction:column;justify-content:center;align-items:center;flex-wrap:wrap;padding:10px;overflow:auto;pointer-events:none}@media (min-width: 1650px){.info-container[_ngcontent-%COMP%]{left:1380px;right:auto}}.info[_ngcontent-%COMP%]{width:200px;margin-bottom:5px;border:antiquewhite 1px solid}.info.info-updating-manifest[_ngcontent-%COMP%]{border-color:#f09c4e}.info.info-updating-inventory[_ngcontent-%COMP%]{border-color:#f0ad4e}.info.info-updating-vendor[_ngcontent-%COMP%]{border-color:#f0e54e}.info.info-calculating-permutations[_ngcontent-%COMP%]{border-color:#5cb85c}.info.info-calculating-results[_ngcontent-%COMP%]{border-color:#89b85c}.info.info-updating-results[_ngcontent-%COMP%]{border-color:#5cb85c}.sidenav-container[_ngcontent-%COMP%]{position:fixed;top:0;left:0;height:100%;z-index:20}.sidenav[_ngcontent-%COMP%]{width:200px;position:fixed;top:0;left:0;height:100%;z-index:20}.sidenav[_ngcontent-%COMP%] .mat-toolbar[_ngcontent-%COMP%]{background:inherit}.sidenav[_ngcontent-%COMP%] .active[_ngcontent-%COMP%]{background-color:#ffffff12;color:#b8c4dc}.mat-toolbar.mat-primary[_ngcontent-%COMP%]{position:sticky;top:0;z-index:1}#header[_ngcontent-%COMP%]{position:relative;height:42px;margin-bottom:5px}.header-spacer[_ngcontent-%COMP%]{flex:1 1 auto}.changelogText[_ngcontent-%COMP%]{cursor:pointer}#loading[_ngcontent-%COMP%]{position:fixed;top:0;width:100%;z-index:1000}.d2ap-router-link[_ngcontent-%COMP%]{cursor:pointer}[_nghost-%COMP%] .mat-tab-link{min-width:75px;opacity:1}.bar-api-warn[_ngcontent-%COMP%]{background-color:#f0894e;position:relative;height:20px;margin-bottom:2px;font-size:16px}"]}),n})();var G=_(2143),ve=_(8739),de=_(6308),yt=_(7340),Ct=_(7625);function tn(n,i){1&n&&(t.ynx(0),t._uU(1," Click on a row to expand it and to see the list of the items required for this build."),t._UZ(2,"br"),t.BQk())}function en(n,i){1&n&&(t.ynx(0),t.TgZ(1,"div",59),t._UZ(2,"img",60),t._uU(3,"\xa0 "),t.qZA(),t.TgZ(4,"span",61)(5,"b"),t._uU(6,"No combinations found."),t.qZA()(),t._uU(7," You should loosen your settings a bit. "),t.BQk())}function nn(n,i){if(1&n&&(t.TgZ(0,"mat-icon",62,63),t.ALo(2,"number"),t._uU(3,"report_problem "),t.qZA()),2&n){const e=t.oxw();t.MGl("matTooltip","Note: To speed up the whole process, only ",t.lcZ(2,1,e.parsedResults)," results are listed in this table.\n If you need more entries, disable the limitation in the advanced settings.")}}function on(n,i){if(1&n&&(t.TgZ(0,"mat-icon",62,63),t.ALo(2,"number"),t._uU(3,"report_problem "),t.qZA()),2&n){const e=t.oxw();t.MGl("matTooltip","Note: To prevent Out-Of-Memory crashes, only ",t.lcZ(2,1,e.parsedResults)," results are listed in this table.\n You should narrow down your settings a bit.")}}function an(n,i){1&n&&(t.TgZ(0,"mat-chip",64,63),t._uU(2,"No Exotic "),t.qZA())}function sn(n,i){1&n&&(t.TgZ(0,"mat-chip",65,63),t._uU(2,"Exotic "),t.qZA())}function rn(n,i){1&n&&(t.TgZ(0,"mat-chip",66,63),t._uU(2," Multiple Exotics "),t.qZA())}function ln(n,i){1&n&&(t.TgZ(0,"mat-chip",67,63),t._uU(2,"No stat mods "),t.qZA())}function cn(n,i){1&n&&(t.TgZ(0,"mat-chip",68,63),t._uU(2,"Reduce wasted stats "),t.qZA())}function mn(n,i){1&n&&(t.TgZ(0,"mat-chip",69,63),t._uU(2,"Stat Mod Limitation "),t.qZA())}function dn(n,i){1&n&&(t.TgZ(0,"mat-chip",70,63),t._uU(2," Armor Perk or Slot "),t.qZA())}function un(n,i){1&n&&(t.TgZ(0,"mat-chip",71,63),t._uU(2,"Zero Waste "),t.qZA())}function pn(n,i){1&n&&(t.TgZ(0,"mat-chip",72,63)(2,"mat-icon",73),t._uU(3,"report_problem"),t.qZA(),t._uU(4," \xa0Assume legendaries are artifice\xa0 "),t.TgZ(5,"mat-icon",73),t._uU(6,"report_problem"),t.qZA()())}function gn(n,i){1&n&&(t.TgZ(0,"mat-chip",74,63)(2,"mat-icon",73),t._uU(3,"report_problem"),t.qZA(),t._uU(4," \xa0Assume exotics are artifice\xa0 "),t.TgZ(5,"mat-icon",73),t._uU(6,"report_problem"),t.qZA()())}function _n(n,i){1&n&&(t.TgZ(0,"mat-chip",75,63)(2,"mat-icon",73),t._uU(3,"report_problem"),t.qZA(),t._uU(4," \xa0Ignoring existing artifice slots on exotic items\xa0 "),t.TgZ(5,"mat-icon",73),t._uU(6,"report_problem"),t.qZA()())}function fn(n,i){1&n&&(t.TgZ(0,"mat-chip",76,63),t._uU(2," Masterworked Exotics Only "),t.qZA())}function hn(n,i){1&n&&(t.TgZ(0,"mat-chip",77,63),t._uU(2," Masterworked Legendaries Only "),t.qZA())}function xn(n,i){1&n&&(t.TgZ(0,"mat-chip",78,63),t._uU(2," Masterwork Assumption "),t.qZA())}function yn(n,i){1&n&&(t.TgZ(0,"mat-chip",79,63),t._uU(2," Include Collection Rolls "),t.qZA())}function Cn(n,i){1&n&&(t.TgZ(0,"mat-chip",80,63),t._uU(2," Include Vendor Items "),t.qZA())}function Tn(n,i){1&n&&(t.TgZ(0,"th",81),t._uU(1,"Mobility "),t.qZA())}function vn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",83),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Mobility]," ")}}function bn(n,i){1&n&&(t.TgZ(0,"th",84),t._uU(1," Resilience "),t.qZA())}function An(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",85),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Resilience]," ")}}function wn(n,i){1&n&&(t.TgZ(0,"th",86),t._uU(1," Recovery "),t.qZA())}function Zn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",87),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Recovery]," ")}}function In(n,i){1&n&&(t.TgZ(0,"th",88),t._uU(1," Discipline "),t.qZA())}function Sn(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",89),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Discipline]," ")}}function Mn(n,i){1&n&&(t.TgZ(0,"th",90),t._uU(1," Intellect "),t.qZA())}function On(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",91),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Intellect]," ")}}function kn(n,i){1&n&&(t.TgZ(0,"th",92),t._uU(1,"Strength "),t.qZA())}function En(n,i){if(1&n&&(t.TgZ(0,"td",82),t._uU(1),t._UZ(2,"img",93),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.hij("",e.stats[o.ArmorStat.Strength]," ")}}function Un(n,i){1&n&&(t.TgZ(0,"th",94),t._uU(1," Used Mods "),t.qZA())}function Dn(n,i){if(1&n&&(t.TgZ(0,"td",95),t._UZ(1,"app-table-mod-display",96),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("mods",e.mods)("artifice",e.artifice)}}function Pn(n,i){1&n&&(t.TgZ(0,"th",97),t._uU(1," Exotic"),t.qZA())}function Rn(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"img",100,63)(3,"img",101),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.s9C("matTooltip",e.name),t.MGl("src","https://bungie.net/",e.icon,"",t.LSH),t.xp6(2),t.MGl("src","https://bungie.net/",e.watermark,"",t.LSH)}}function Nn(n,i){1&n&&t._UZ(0,"img",102)}function qn(n,i){if(1&n&&(t.TgZ(0,"td",95),t.YNc(1,Rn,4,3,"ng-container",98),t.YNc(2,Nn,1,0,"img",99),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e.exotic),t.xp6(1),t.Q6J("ngIf",0===e.exotic.length)}}function Fn(n,i){1&n&&(t.TgZ(0,"th",97),t._uU(1,"Sources"),t.qZA())}function Jn(n,i){1&n&&t._UZ(0,"img",106)}function Ln(n,i){1&n&&t._UZ(0,"img",107)}function Yn(n,i){if(1&n&&(t.TgZ(0,"td",95)(1,"span",103),t.YNc(2,Jn,1,0,"img",104),t.YNc(3,Ln,1,0,"img",105),t.qZA()()),2&n){const e=i.$implicit;t.xp6(2),t.Q6J("ngIf",!!e.usesCollectionRoll),t.xp6(1),t.Q6J("ngIf",!!e.usesVendorRoll)}}function Bn(n,i){1&n&&t._UZ(0,"th",97)}function Vn(n,i){1&n&&(t.TgZ(0,"mat-icon",111),t._uU(1," expand_more "),t.qZA())}function Qn(n,i){1&n&&(t.TgZ(0,"mat-icon",112),t._uU(1," expand_less "),t.qZA())}function Hn(n,i){1&n&&(t.TgZ(0,"mat-icon",113,63),t._uU(2," report_problem "),t.qZA())}function Wn(n,i){if(1&n&&(t.TgZ(0,"td",95),t.YNc(1,Vn,2,0,"mat-icon",108),t.YNc(2,Qn,2,0,"mat-icon",109),t.YNc(3,Hn,3,0,"mat-icon",110),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.Q6J("ngIf",o.expandedElement!==e),t.xp6(1),t.Q6J("ngIf",o.expandedElement===e),t.xp6(1),t.Q6J("ngIf",o.checkIfAnyItemsMayBeInvalid(e))}}function jn(n,i){1&n&&(t.TgZ(0,"th",114),t._uU(1,"Tiers "),t.qZA())}function Gn(n,i){if(1&n&&(t.TgZ(0,"td",95),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.tiers," ")}}function zn(n,i){1&n&&(t.TgZ(0,"th",115),t._uU(1,"Max Tiers "),t.qZA())}function Kn(n,i){if(1&n&&(t.TgZ(0,"td",95),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.tiers+(5-e.modCount)," ")}}function $n(n,i){1&n&&(t.TgZ(0,"th",116),t._uU(1,"Wasted "),t.qZA())}function Xn(n,i){if(1&n&&(t.TgZ(0,"td",95),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.waste," ")}}function to(n,i){if(1&n&&(t.TgZ(0,"td",95)(1,"div",117),t._UZ(2,"app-expanded-result-content",118),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw();t.uIk("colspan",o.shownColumns.length),t.xp6(1),t.Q6J("@detailExpand",e===o.expandedElement?"expanded":"collapsed"),t.xp6(1),t.Q6J("element",e)}}function eo(n,i){1&n&&t._UZ(0,"tr",119)}function no(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr",120),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.expandedElement=r.expandedElement===s?null:s)}),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw();t.ekj("example-expanded-row",o.expandedElement===e)}}function oo(n,i){1&n&&t._UZ(0,"tr",121)}function io(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-card-actions"),t._UZ(1,"span",122),t.TgZ(2,"button",123),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.saveBuilds())}),t._uU(3,"Download results as JSON"),t.qZA()()}}const ao=function(){return["expandedDetail"]},so=function(){return[10,20,50]};var Qt=(()=>{return(n=Qt||(Qt={}))[n.TRANSFER_NONE=0]="TRANSFER_NONE",n[n.WAITING_FOR_TRANSFER=1]="WAITING_FOR_TRANSFER",n[n.TRANSFERRING=2]="TRANSFERRING",n[n.TRANSFERRED=3]="TRANSFERRED",n[n.ERROR_DURING_TRANSFER=4]="ERROR_DURING_TRANSFER",Qt;var n})();let be=(()=>{class n{constructor(e,o,a){this.inventory=e,this.config=o,this.status=a,this.ArmorStat=c.WB,this.StatModifier=c.iV,this._results=[],this._config_assumeLegendariesMasterworked=!1,this._config_assumeExoticsMasterworked=!1,this._config_assumeClassItemMasterworked=!1,this._config_maximumStatMods=5,this._config_selectedExotics=[],this._config_tryLimitWastedStats=!1,this._config_onlyUseMasterworkedExotics=!1,this._config_onlyUseMasterworkedLegendaries=!1,this._config_includeCollectionRolls=!1,this._config_includeVendorRolls=!1,this._config_onlyShowResultsWithNoWastedStats=!1,this._config_assumeEveryLegendaryIsArtifice=!1,this._config_assumeEveryExoticIsArtifice=!1,this._config_ignoreExistingExoticArtificeSlots=!1,this._config_modslotLimitation=[],this._config_armorPerkLimitation=[],this.tableDataSource=new G.by,this.paginator=null,this.sort=null,this.expandedElement=null,this.shownColumns=["exotic","mobility","resilience","recovery","discipline","intellect","strength","tiers","mods","dropdown"],this.selectedClass=3,this.totalTime=0,this.itemCount=0,this.totalResults=0,this.parsedResults=0,this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(o=>{this.selectedClass=o.characterClass,this._config_assumeLegendariesMasterworked=o.assumeLegendariesMasterworked,this._config_assumeExoticsMasterworked=o.assumeExoticsMasterworked,this._config_assumeClassItemMasterworked=o.assumeClassItemMasterworked,this._config_tryLimitWastedStats=o.tryLimitWastedStats,this._config_maximumStatMods=o.maximumStatMods,this._config_onlyUseMasterworkedExotics=o.onlyUseMasterworkedExotics,this._config_onlyUseMasterworkedLegendaries=o.onlyUseMasterworkedLegendaries,this._config_includeCollectionRolls=o.includeCollectionRolls,this._config_includeVendorRolls=o.includeVendorRolls,this._config_onlyShowResultsWithNoWastedStats=o.onlyShowResultsWithNoWastedStats,this._config_assumeEveryLegendaryIsArtifice=o.assumeEveryLegendaryIsArtifice,this._config_assumeEveryExoticIsArtifice=o.assumeEveryExoticIsArtifice,this._config_ignoreExistingExoticArtificeSlots=o.ignoreExistingExoticArtificeSlots,this._config_selectedExotics=o.selectedExotics,this._config_armorPerkLimitation=Object.entries(o.armorPerks).filter(s=>s[1].value!=c.Pn.None).map(s=>s[1]),this._config_modslotLimitation=Object.entries(o.maximumModSlots).filter(s=>s[1].value<5).map(s=>s[1]);let a=["exotic","mobility","resilience","recovery","discipline","intellect","strength",o.showPotentialTierColumn?"potential_tiers":"tiers","mods"];o.showWastedStatsColumn&&a.push("waste"),(o.includeVendorRolls||o.includeCollectionRolls)&&a.push("source"),a.push("dropdown"),this.shownColumns=a}),this.inventory.armorResults.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,y.Z)(function*(a){e._results=a.results,e.itemCount=a.itemCount,e.totalTime=a.totalTime,e.totalResults=a.totalResults,e.parsedResults=e._results.length,e.status.modifyStatus(s=>s.updatingResultsTable=!0),yield e.updateData(),e.status.modifyStatus(s=>s.updatingResultsTable=!1)});return function(a){return o.apply(this,arguments)}}()),this.tableDataSource.paginator=this.paginator,this.tableDataSource.sort=this.sort,this.tableDataSource.sortingDataAccessor=(o,a)=>{switch(a){case"Mobility":return o.stats[c.WB.Mobility];case"Resilience":return o.stats[c.WB.Resilience];case"Recovery":return o.stats[c.WB.Recovery];case"Discipline":return o.stats[c.WB.Discipline];case"Intellect":return o.stats[c.WB.Intellect];case"Strength":return o.stats[c.WB.Strength];case"Tiers":return o.tiers;case"Max Tiers":return 10*(o.tiers+(5-o.modCount));case"Waste":return o.waste;case"Mods":return 100*o.modCount+o.modCost}return 0}}updateData(){var e=this;return(0,y.Z)(function*(){console.time("Update Table Data"),e.tableDataSource.paginator=e.paginator,e.tableDataSource.sort=e.sort,e.tableDataSource.data=e._results,console.timeEnd("Update Table Data")})()}checkIfAnyItemsMayBeInvalid(e){return(e?.items.filter(o=>o.filter(a=>a.mayBeBugged).length>0).length||0)>0}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}saveBuilds(){let e={configCompressed:this.config.getCurrentConfigBase64Compressed(),config:this.config.readonlyConfigurationSnapshot,results:this._results.map(r=>{let d=Object.assign({},r);return d.items=d.items.filter(p=>!!p[0]).map(p=>({hash:p[0].hash,instance:p[0].itemInstanceId})),delete d.exotic,d})};document.createElement("a").download="builds.json";const a=window.URL.createObjectURL(new Blob([JSON.stringify(e,null,2)])),s=document.createElement("a");s.href=a,s.setAttribute("download","d2ap_results.json"),document.body.appendChild(s),s.click()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Tt),t.Y36(X),t.Y36(vt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-results"]],viewQuery:function(e,o){if(1&e&&(t.Gf(ve.NW,5),t.Gf(de.YE,5)),2&e){let a;t.iGM(a=t.CRH())&&(o.paginator=a.first),t.iGM(a=t.CRH())&&(o.sort=a.first)}},decls:98,vars:37,consts:[["id","card-results"],[4,"ngIf"],["fxLayout","row","fxLayoutAlign","start center","fxLayoutGap","5px",1,"config-summary-box"],["appearance","outline","fxFlex","",1,"info-box"],["matInput","","readonly","",3,"value"],["class","report-problem-icon","matSuffix","",3,"matTooltip",4,"ngIf"],["appearance","outline","disabled","",1,"config-summary-box"],["matInput","","readonly","","value","\xa0",1,"hidden-input"],["aria-label","Configuration Summary"],["disableRipple","","matTooltip","This setting enforces that all exotics are ignored.",4,"ngIf"],["disableRipple","","matTooltip","This setting enforces that only one specific exotic is used.",4,"ngIf"],["disableRipple","","matTooltip","The tool will try to fulfill your settings for all the selected exotics. If you select exotics in different slots then it will search for legendary items to allow hotswapping with the same stats.",4,"ngIf"],["disableRipple","","matTooltip","You enforced that no stat mods are used.",4,"ngIf"],["disableRipple","","matTooltip","The tool will add minor stat mods to reduce wasted stats.",4,"ngIf"],["disableRipple","","matTooltip","This setting limits available stat mod types, like major Intellect or Recovery.",4,"ngIf"],["disableRipple","","matTooltip","This setting enforces an specific armor perk or modslot for a specific armor slot.",4,"ngIf"],["disableRipple","","matTooltip","This setting means that only builds with no wasted stats are shown.","selected","",4,"ngIf"],["disableRipple","","matTooltip","EVERY legendary is assumed to be artifice.","selected","","color","warn",4,"ngIf"],["disableRipple","","matTooltip","EVERY exotic is assumed to be artifice.","selected","","color","warn",4,"ngIf"],["disableRipple","","matTooltip","Ignoring existing artifice slots on exotic items.","selected","","color","warn",4,"ngIf"],["disableRipple","","matTooltip","This setting means that only exotic armor pieces that are already masterworked are used.","selected","",4,"ngIf"],["disableRipple","","matTooltip","This setting means that only legendary armor pieces are already masterworked are used.","selected","",4,"ngIf"],["disableRipple","","matTooltip","Some masterwork assumptions are in place. This means that you may have to masterwork items. Look at your advanced settings to see which ones are activated.",4,"ngIf"],["disableRipple","","matTooltip","Collection Exotic rolls will be included in the search.",4,"ngIf"],["disableRipple","","matTooltip","Currently available Vendor items will be included in the search.",4,"ngIf"],[1,"hint-text"],["aria-hidden","false","inline",""],["mat-table","","matSort","","matSortActive","Mods","matSortDirection","asc","multiTemplateDataRows","",1,"result-table",3,"dataSource"],["matColumnDef","mobility"],["mat-header-cell","","mat-sort-header","Mobility","matTooltip","The mobility of this armor combination.",4,"matHeaderCellDef"],["class","statColumn","mat-cell","",4,"matCellDef"],["matColumnDef","resilience"],["mat-header-cell","","mat-sort-header","Resilience","matTooltip","The resilience of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","recovery"],["mat-header-cell","","mat-sort-header","Recovery","matTooltip","The recovery of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","discipline"],["mat-header-cell","","mat-sort-header","Discipline","matTooltip","The discipline of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","intellect"],["mat-header-cell","","mat-sort-header","Intellect","matTooltip","The intellect of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","strength"],["mat-header-cell","","mat-sort-header","Strength","matTooltip","The strength of this armor combination.",4,"matHeaderCellDef"],["matColumnDef","mods"],["mat-header-cell","","mat-sort-header","Mods","matTooltip","The amount of mods required for each combination. Sorting after this takes the mod cost into account.",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","exotic"],["mat-header-cell","",4,"matHeaderCellDef"],["matColumnDef","source"],["matColumnDef","dropdown"],["matColumnDef","tiers"],["mat-header-cell","","mat-sort-header","Tiers","matTooltip","The amount of Tiers in this build. A tier is each successful 10-step of any stat.",4,"matHeaderCellDef"],["matColumnDef","potential_tiers"],["mat-header-cell","","mat-sort-header","Max Tiers","matTooltip","The potential reachable stat tiers with all N stat mods used. As of now, this does NOT take mod filters into consideration.",4,"matHeaderCellDef"],["matColumnDef","waste"],["mat-header-cell","","mat-sort-header","Waste","matTooltip","How many points are wasted. Any stat not ending in 0 adds to this value.",4,"matHeaderCellDef"],["matColumnDef","expandedDetail"],["mat-header-row","",4,"matHeaderRowDef"],["class","example-element-row","mat-row","",3,"example-expanded-row","click",4,"matRowDef","matRowDefColumns"],["class","example-detail-row","mat-row","",4,"matRowDef","matRowDefColumns"],["aria-label","Select page of periodic elements","pageSize","20","showFirstLastButtons","",3,"pageSizeOptions"],[1,"no-found-sadcat-container"],["src","assets/status/emoji/sadcat.png",1,"no-found-sadcat"],[1,"warning-none-found"],["matSuffix","",1,"report-problem-icon",3,"matTooltip"],["tooltip","matTooltip"],["disableRipple","","matTooltip","This setting enforces that all exotics are ignored."],["disableRipple","","matTooltip","This setting enforces that only one specific exotic is used."],["disableRipple","","matTooltip","The tool will try to fulfill your settings for all the selected exotics. If you select exotics in different slots then it will search for legendary items to allow hotswapping with the same stats."],["disableRipple","","matTooltip","You enforced that no stat mods are used."],["disableRipple","","matTooltip","The tool will add minor stat mods to reduce wasted stats."],["disableRipple","","matTooltip","This setting limits available stat mod types, like major Intellect or Recovery."],["disableRipple","","matTooltip","This setting enforces an specific armor perk or modslot for a specific armor slot."],["disableRipple","","matTooltip","This setting means that only builds with no wasted stats are shown.","selected",""],["disableRipple","","matTooltip","EVERY legendary is assumed to be artifice.","selected","","color","warn"],["inline","",2,"height","100%"],["disableRipple","","matTooltip","EVERY exotic is assumed to be artifice.","selected","","color","warn"],["disableRipple","","matTooltip","Ignoring existing artifice slots on exotic items.","selected","","color","warn"],["disableRipple","","matTooltip","This setting means that only exotic armor pieces that are already masterworked are used.","selected",""],["disableRipple","","matTooltip","This setting means that only legendary armor pieces are already masterworked are used.","selected",""],["disableRipple","","matTooltip","Some masterwork assumptions are in place. This means that you may have to masterwork items. Look at your advanced settings to see which ones are activated."],["disableRipple","","matTooltip","Collection Exotic rolls will be included in the search."],["disableRipple","","matTooltip","Currently available Vendor items will be included in the search."],["mat-header-cell","","mat-sort-header","Mobility","matTooltip","The mobility of this armor combination."],["mat-cell","",1,"statColumn"],["alt","Mobility","src","https://www.bungie.net/common/destiny2_content/icons/e26e0e93a9daf4fdd21bf64eb9246340.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Resilience","matTooltip","The resilience of this armor combination."],["alt","Resilience","src","https://www.bungie.net/common/destiny2_content/icons/202ecc1c6febeb6b97dafc856e863140.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Recovery","matTooltip","The recovery of this armor combination."],["alt","Recovery","src","https://www.bungie.net/common/destiny2_content/icons/128eee4ee7fc127851ab32eac6ca91cf.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Discipline","matTooltip","The discipline of this armor combination."],["alt","Discipline","src","https://www.bungie.net/common/destiny2_content/icons/79be2d4adef6a19203f7385e5c63b45b.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Intellect","matTooltip","The intellect of this armor combination."],["alt","Intellect","src","https://www.bungie.net/common/destiny2_content/icons/d1c154469670e9a592c9d4cbdcae5764.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Strength","matTooltip","The strength of this armor combination."],["alt","Strength","src","https://www.bungie.net/common/destiny2_content/icons/ea5af04ccd6a3470a44fd7bb0f66e2f7.png",1,"statIcon"],["mat-header-cell","","mat-sort-header","Mods","matTooltip","The amount of mods required for each combination. Sorting after this takes the mod cost into account."],["mat-cell",""],[1,"modPreview",3,"mods","artifice"],["mat-header-cell",""],[4,"ngFor","ngForOf"],["class","itemIcon","src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png",4,"ngIf"],[1,"itemIcon",3,"matTooltip","src"],[1,"itemIconWatermark",3,"src"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png",1,"itemIcon"],[1,"source-column"],["matTooltip","This build uses a collection exotic. You have to collect it before you can use it.","class","collectionIcon","src","https://www.bungie.net/common/destiny2_content/icons/1d01287dd47af97fef16fa6acbac23ba.png",4,"ngIf"],["matTooltip","This build uses a vendor item. You have to collect it before you can use it.","class","vendorIcon","src","https://www.bungie.net/common/destiny2_content/icons/8ef4b5bd32277dba9aee7c368404ad5d.jpg",4,"ngIf"],["matTooltip","This build uses a collection exotic. You have to collect it before you can use it.","src","https://www.bungie.net/common/destiny2_content/icons/1d01287dd47af97fef16fa6acbac23ba.png",1,"collectionIcon"],["matTooltip","This build uses a vendor item. You have to collect it before you can use it.","src","https://www.bungie.net/common/destiny2_content/icons/8ef4b5bd32277dba9aee7c368404ad5d.jpg",1,"vendorIcon"],["matTooltip","Click to show details for this build.",4,"ngIf"],["matTooltip","Click to hide details for this build.",4,"ngIf"],["aria-hidden","false","aria-label","Error","class","report-problem-icon","inline","","matTooltip","The stats of this build may be incorrect. Make sure that you remove every positive or negative stat modifier from the marked items.",4,"ngIf"],["matTooltip","Click to show details for this build."],["matTooltip","Click to hide details for this build."],["aria-hidden","false","aria-label","Error","inline","","matTooltip","The stats of this build may be incorrect. Make sure that you remove every positive or negative stat modifier from the marked items.",1,"report-problem-icon"],["mat-header-cell","","mat-sort-header","Tiers","matTooltip","The amount of Tiers in this build. A tier is each successful 10-step of any stat."],["mat-header-cell","","mat-sort-header","Max Tiers","matTooltip","The potential reachable stat tiers with all N stat mods used. As of now, this does NOT take mod filters into consideration."],["mat-header-cell","","mat-sort-header","Waste","matTooltip","How many points are wasted. Any stat not ending in 0 adds to this value."],[1,"example-element-detail"],[3,"element"],["mat-header-row",""],["mat-row","",1,"example-element-row",3,"click"],["mat-row","",1,"example-detail-row"],[1,"flex-spacer"],["mat-raised-button","","color","primary",3,"click"]],template:function(e,o){1&e&&(t.TgZ(0,"mat-card",0)(1,"mat-card-title"),t._uU(2,"Results"),t.qZA(),t.TgZ(3,"mat-card-subtitle"),t.YNc(4,tn,3,0,"ng-container",1),t.YNc(5,en,8,0,"ng-container",1),t.qZA(),t.TgZ(6,"mat-card-content")(7,"div")(8,"div",2)(9,"mat-form-field",3)(10,"mat-label"),t._uU(11,"Items Used"),t.qZA(),t._UZ(12,"input",4),t.ALo(13,"number"),t.qZA(),t.TgZ(14,"mat-form-field",3)(15,"mat-label"),t._uU(16,"Combinations generated"),t.qZA(),t._UZ(17,"input",4),t.ALo(18,"number"),t.YNc(19,nn,4,3,"mat-icon",5),t.YNc(20,on,4,3,"mat-icon",5),t.qZA(),t.TgZ(21,"mat-form-field",3)(22,"mat-label"),t._uU(23,"Time required"),t.qZA(),t._UZ(24,"input",4),t.ALo(25,"number"),t.qZA()(),t.TgZ(26,"mat-form-field",6)(27,"mat-label"),t._uU(28,"Summary of important configuration choices"),t.qZA(),t._UZ(29,"input",7),t.TgZ(30,"mat-chip-list",8),t.YNc(31,an,3,0,"mat-chip",9),t.YNc(32,sn,3,0,"mat-chip",10),t.YNc(33,rn,3,0,"mat-chip",11),t.YNc(34,ln,3,0,"mat-chip",12),t.YNc(35,cn,3,0,"mat-chip",13),t.YNc(36,mn,3,0,"mat-chip",14),t.YNc(37,dn,3,0,"mat-chip",15),t.YNc(38,un,3,0,"mat-chip",16),t.YNc(39,pn,7,0,"mat-chip",17),t.YNc(40,gn,7,0,"mat-chip",18),t.YNc(41,_n,7,0,"mat-chip",19),t.YNc(42,fn,3,0,"mat-chip",20),t.YNc(43,hn,3,0,"mat-chip",21),t.YNc(44,xn,3,0,"mat-chip",22),t.YNc(45,yn,3,0,"mat-chip",23),t.YNc(46,Cn,3,0,"mat-chip",24),t.qZA()(),t.TgZ(47,"div",25)(48,"mat-icon",26),t._uU(49,"info"),t.qZA(),t._uU(50," Note that you can change the sort column and order of the table by clicking on the headers. "),t.qZA(),t.TgZ(51,"table",27),t.ynx(52,28),t.YNc(53,Tn,2,0,"th",29),t.YNc(54,vn,3,1,"td",30),t.BQk(),t.ynx(55,31),t.YNc(56,bn,2,0,"th",32),t.YNc(57,An,3,1,"td",30),t.BQk(),t.ynx(58,33),t.YNc(59,wn,2,0,"th",34),t.YNc(60,Zn,3,1,"td",30),t.BQk(),t.ynx(61,35),t.YNc(62,In,2,0,"th",36),t.YNc(63,Sn,3,1,"td",30),t.BQk(),t.ynx(64,37),t.YNc(65,Mn,2,0,"th",38),t.YNc(66,On,3,1,"td",30),t.BQk(),t.ynx(67,39),t.YNc(68,kn,2,0,"th",40),t.YNc(69,En,3,1,"td",30),t.BQk(),t.ynx(70,41),t.YNc(71,Un,2,0,"th",42),t.YNc(72,Dn,2,2,"td",43),t.BQk(),t.ynx(73,44),t.YNc(74,Pn,2,0,"th",45),t.YNc(75,qn,3,2,"td",43),t.BQk(),t.ynx(76,46),t.YNc(77,Fn,2,0,"th",45),t.YNc(78,Yn,4,2,"td",43),t.BQk(),t.ynx(79,47),t.YNc(80,Bn,1,0,"th",45),t.YNc(81,Wn,4,3,"td",43),t.BQk(),t.ynx(82,48),t.YNc(83,jn,2,0,"th",49),t.YNc(84,Gn,2,1,"td",43),t.BQk(),t.ynx(85,50),t.YNc(86,zn,2,0,"th",51),t.YNc(87,Kn,2,1,"td",43),t.BQk(),t.ynx(88,52),t.YNc(89,$n,2,0,"th",53),t.YNc(90,Xn,2,1,"td",43),t.BQk(),t.ynx(91,54),t.YNc(92,to,3,3,"td",43),t.BQk(),t.YNc(93,eo,1,0,"tr",55),t.YNc(94,no,1,2,"tr",56),t.YNc(95,oo,1,0,"tr",57),t.qZA(),t._UZ(96,"mat-paginator",58),t.qZA()(),t.YNc(97,io,4,0,"mat-card-actions",1),t.qZA()),2&e&&(t.xp6(4),t.Q6J("ngIf",o.totalResults>0),t.xp6(1),t.Q6J("ngIf",0===o.totalResults),t.xp6(7),t.s9C("value",t.lcZ(13,29,o.itemCount)),t.xp6(5),t.s9C("value",t.lcZ(18,31,o.totalResults)),t.xp6(2),t.Q6J("ngIf",o.parsedResults!==o.totalResults&&5e4===o.parsedResults),t.xp6(1),t.Q6J("ngIf",o.parsedResults!==o.totalResults&&1e6===o.parsedResults),t.xp6(4),t.MGl("value","",t.lcZ(25,33,o.totalTime),"ms"),t.xp6(7),t.Q6J("ngIf",o._config_selectedExotics.indexOf(-1)>-1),t.xp6(1),t.Q6J("ngIf",1===o._config_selectedExotics.length&&-1===o._config_selectedExotics.indexOf(-1)),t.xp6(1),t.Q6J("ngIf",o._config_selectedExotics.length>1&&-1===o._config_selectedExotics.indexOf(-1)),t.xp6(1),t.Q6J("ngIf",0===o._config_maximumStatMods),t.xp6(1),t.Q6J("ngIf",o._config_tryLimitWastedStats),t.xp6(1),t.Q6J("ngIf",o._config_modslotLimitation.length>0),t.xp6(1),t.Q6J("ngIf",o._config_armorPerkLimitation.length>0),t.xp6(1),t.Q6J("ngIf",o._config_onlyShowResultsWithNoWastedStats),t.xp6(1),t.Q6J("ngIf",o._config_assumeEveryLegendaryIsArtifice),t.xp6(1),t.Q6J("ngIf",o._config_assumeEveryExoticIsArtifice),t.xp6(1),t.Q6J("ngIf",o._config_ignoreExistingExoticArtificeSlots),t.xp6(1),t.Q6J("ngIf",o._config_onlyUseMasterworkedExotics),t.xp6(1),t.Q6J("ngIf",o._config_onlyUseMasterworkedLegendaries),t.xp6(1),t.Q6J("ngIf",!o._config_onlyUseMasterworkedExotics&&!o._config_onlyUseMasterworkedLegendaries&&(o._config_assumeLegendariesMasterworked||o._config_assumeExoticsMasterworked||o._config_assumeClassItemMasterworked)),t.xp6(1),t.Q6J("ngIf",o._config_includeCollectionRolls),t.xp6(1),t.Q6J("ngIf",o._config_includeVendorRolls),t.xp6(5),t.Q6J("dataSource",o.tableDataSource),t.xp6(42),t.Q6J("matHeaderRowDef",o.shownColumns),t.xp6(1),t.Q6J("matRowDefColumns",o.shownColumns),t.xp6(1),t.Q6J("matRowDefColumns",t.DdM(35,ao)),t.xp6(1),t.Q6J("pageSizeOptions",t.DdM(36,so)),t.xp6(1),t.Q6J("ngIf",o.totalResults>0))},styles:["#card-results[_ngcontent-%COMP%]{display:inline-block;vertical-align:top;white-space:normal;width:-moz-fit-content;width:fit-content;margin-left:3px}.statColumn[_ngcontent-%COMP%]{position:relative}.statIcon[_ngcontent-%COMP%]{position:absolute;height:22px;margin-left:2px;top:11px}.itemIcon[_ngcontent-%COMP%]{width:32px;height:32px;margin-right:3px}.itemIconWatermark[_ngcontent-%COMP%]{width:32px;height:32px;margin-right:3px;margin-left:-35px;pointer-events:none}.source-column[_ngcontent-%COMP%]{float:left}.source-column[_ngcontent-%COMP%] img[_ngcontent-%COMP%]:nth-of-type(2){margin-top:5px;margin-bottom:-3px}.collectionIcon[_ngcontent-%COMP%], .vendorIcon[_ngcontent-%COMP%]{width:32px;margin-left:3px;display:block}tr.example-element-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom-width:0}tr.example-detail-row[_ngcontent-%COMP%]{height:0!important}.example-element-detail[_ngcontent-%COMP%]{overflow:hidden;display:flex}.report-problem-icon[_ngcontent-%COMP%]{color:#f08080}.hint-text[_ngcontent-%COMP%]{font-size:small;color:#d5d5d5}[_nghost-%COMP%] .info-box .mat-form-field-wrapper{padding-bottom:5px!important;cursor:default}.hidden-input[_ngcontent-%COMP%]{display:none}.config-summary-box[_ngcontent-%COMP%]{width:100%}.result-table[_ngcontent-%COMP%] tr.example-element-row[_ngcontent-%COMP%]{cursor:pointer}.mat-row[_ngcontent-%COMP%]:nth-child(4n+3){background-color:#7474741a}.warning-none-found[_ngcontent-%COMP%]{color:red}.no-found-sadcat-container[_ngcontent-%COMP%]{width:20px;position:relative;display:inline-block}.no-found-sadcat[_ngcontent-%COMP%]{position:absolute;width:18px;top:-1px}.cdk-column-exotic[_ngcontent-%COMP%]{min-width:45px}.cdk-column-waste[_ngcontent-%COMP%]{padding-left:5px}"],data:{animation:[(0,yt.X$)("detailExpand",[(0,yt.SB)("collapsed, void",(0,yt.oB)({height:"0px"})),(0,yt.SB)("expanded",(0,yt.oB)({height:"*"})),(0,yt.eR)("expanded <=> collapsed",(0,yt.jt)("225ms cubic-bezier(0.4, 0.0, 0.2, 1)")),(0,yt.eR)("expanded <=> void",(0,yt.jt)("225ms cubic-bezier(0.4, 0.0, 0.2, 1)"))])]}}),n})();const ro={2:{shards:1,glimmer:500,core:0,prism:0,ascshard:0},3:{shards:1,glimmer:500,core:0,prism:0,ascshard:0},4:{shards:2,glimmer:500,core:0,prism:0,ascshard:0},5:{shards:2,glimmer:1e3,core:0,prism:0,ascshard:0},6:{shards:3,glimmer:1e3,core:1,prism:0,ascshard:0},7:{shards:3,glimmer:2500,core:2,prism:0,ascshard:0},8:{shards:4,glimmer:3e3,core:0,prism:1,ascshard:0},9:{shards:4,glimmer:3e3,core:0,prism:2,ascshard:0},10:{shards:5,glimmer:4e3,core:0,prism:0,ascshard:1}},lo={2:{shards:1,glimmer:500,core:0,prism:0,ascshard:0},3:{shards:2,glimmer:1e3,core:0,prism:0,ascshard:0},4:{shards:2,glimmer:1e3,core:0,prism:0,ascshard:0},5:{shards:3,glimmer:2500,core:0,prism:0,ascshard:0},6:{shards:3,glimmer:3e3,core:2,prism:0,ascshard:0},7:{shards:4,glimmer:3e3,core:3,prism:0,ascshard:0},8:{shards:4,glimmer:4e3,core:0,prism:2,ascshard:0},9:{shards:5,glimmer:4e3,core:0,prism:3,ascshard:0},10:{shards:6,glimmer:5e3,core:0,prism:0,ascshard:3}};var ue=_(7009),co=_(1572),te=_(4425),re=_(4080);const mo={[B.Inventory]:"Inventory",[B.Collections]:"Collections",[B.Vendor]:"Vendor"};let uo=(()=>{class n{constructor(e){this.database=e}transform(e){var o=this;return(0,y.Z)(function*(){return(yield o.database.vendorNames.where("vendorId").equals(e).first())?.vendorName??"Unknown Vendor"})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(w,16))},n.\u0275pipe=t.Yjl({name:"getVendorName",type:n,pure:!0}),n})(),po=(()=>{class n{constructor(){}transform(e){if(!e||!e.startsWith("v"))return-1;const o=parseInt(e.substring(1).split("-")[0]);return isNaN(o)?-1:o}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275pipe=t.Yjl({name:"getVendorIdFromItemId",type:n,pure:!0}),n})();function go(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Vendor"),t.qZA(),t.TgZ(3,"td",2),t._uU(4),t.ALo(5,"async"),t.ALo(6,"getVendorName"),t.ALo(7,"getVendorIdFromItemId"),t.qZA()()),2&n){const e=t.oxw();t.xp6(4),t.Oqu(t.lcZ(5,1,t.lcZ(6,3,t.lcZ(7,5,e.itemTooltip.itemInstanceId))))}}function _o(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Oqu(e)}}function fo(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Oqu(e+2)}}function ho(n,i){if(1&n&&(t.TgZ(0,"div",8),t._uU(1,"\xa0"),t.qZA()),2&n){const e=t.oxw(2);t.Udp("width",e.getWidth(2))}}function xo(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t.YNc(4,_o,2,1,"span",3),t.YNc(5,fo,2,1,"span",3),t.qZA(),t.TgZ(6,"td")(7,"div",5)(8,"div",6),t._uU(9,"\xa0"),t.qZA(),t.YNc(10,ho,2,2,"div",7),t.qZA()()()),2&n){const e=i.$implicit,o=i.index,a=t.oxw();t.xp6(2),t.Oqu(a.getArmorStatName(o)),t.xp6(2),t.Q6J("ngIf",!(null!=a.itemTooltip&&a.itemTooltip.masterworked)),t.xp6(1),t.Q6J("ngIf",null==a.itemTooltip?null:a.itemTooltip.masterworked),t.xp6(3),t.Udp("width",a.getWidth(e)),t.xp6(2),t.Q6J("ngIf",null==a.itemTooltip?null:a.itemTooltip.masterworked)}}let yo=(()=>{class n{constructor(){}getSourceText(){return this.itemTooltip?mo[this.itemTooltip.source]:""}getArmorStatName(e){return c.Mi[e]}getWidth(e){return Math.min(100,e/32*100)+"%"}getTotalStats(){return this.itemTooltip?.stats.reduce((e,o)=>e+o,0)||0}get isVendorItem(){return this.itemTooltip?.source===B.Vendor}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-tooltip-component"]],inputs:{itemTooltip:"itemTooltip"},decls:21,vars:5,consts:[[1,"tooltip-container"],["colspan","3"],["colspan","2"],[4,"ngIf"],[4,"ngFor","ngForOf"],[1,"stat-display"],[1,"stat-display-bar"],["class","stat-display-bar masterwork",3,"width",4,"ngIf"],[1,"stat-display-bar","masterwork"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t._uU(5),t.qZA()(),t.TgZ(6,"tr")(7,"td"),t._uU(8,"Source"),t.qZA(),t.TgZ(9,"td",2),t._uU(10),t.qZA()(),t.YNc(11,go,8,7,"tr",3),t.TgZ(12,"tr")(13,"td"),t._uU(14,"Current stats:"),t.qZA()(),t.YNc(15,xo,11,6,"tr",4),t.TgZ(16,"tr")(17,"td"),t._uU(18,"Total base stats:"),t.qZA(),t.TgZ(19,"td"),t._uU(20),t.qZA()()()()()),2&e&&(t.xp6(5),t.Oqu(null==o.itemTooltip?null:o.itemTooltip.name),t.xp6(5),t.Oqu(o.getSourceText()),t.xp6(1),t.Q6J("ngIf",o.isVendorItem&&o.itemTooltip),t.xp6(4),t.Q6J("ngForOf",null==o.itemTooltip?null:o.itemTooltip.stats),t.xp6(5),t.hij(" ",o.getTotalStats()," "))},dependencies:[I.sg,I.O5,I.Ov,po,uo],styles:[".tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.stat-display[_ngcontent-%COMP%]{width:70px;height:20px;background-color:#2c2c2c}.stat-display-bar[_ngcontent-%COMP%]{height:100%;background-color:#a1a1a1;float:left}.masterwork[_ngcontent-%COMP%]{background-color:#eedb9e}"]}),n})();var Jt=_(8184);let Co=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a,this.showToolTip=!0}ngOnInit(){if(!this.showToolTip)return;const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){this._overlayRef&&!this._overlayRef.hasAttached()&&(this._overlayRef.attach(new re.C5(yo)).instance.itemTooltip=this.itemTooltip)}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Jt.aV),t.Y36(Jt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","itemTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{showToolTip:"showToolTip",itemTooltip:"itemTooltip",contentTemplate:"contentTemplate"}}),n})(),pe=(()=>{class n{constructor(e){this.db=e,this.itemLookup=new Map}getItemCached(e){var o=this;return(0,y.Z)(function*(){if(o.itemLookup.has(e))return o.itemLookup.get(e)||void 0;const a=yield o.db.manifestArmor.where("hash").equals(e).first();return o.itemLookup.set(e,a),a})()}getExoticPerkDescription(e){var o=this;return(0,y.Z)(function*(){return e.exoticPerkHash?(yield o.getItemCached(e.exoticPerkHash))??null:null})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(w))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function To(n,i){if(1&n&&t._UZ(0,"img",6,7),2&n){const e=t.oxw(2);t.MGl("src","https://bungie.net/",e.item.icon,"",t.LSH),t.s9C("matTooltip",e.item.name)}}function vo(n,i){if(1&n&&t._UZ(0,"img",8),2&n){const e=t.oxw(2);t.MGl("src","https://bungie.net/",e.item.watermarkIcon,"",t.LSH)}}function bo(n,i){if(1&n&&t._UZ(0,"div",9),2&n){const e=t.oxw(2);t.ekj("vendor-item",e.isFromVendor)("collection-item",e.isFromCollection)}}function Ao(n,i){1&n&&t._UZ(0,"div",10)}function wo(n,i){if(1&n&&(t.TgZ(0,"div",1),t.YNc(1,To,2,2,"img",2),t.YNc(2,vo,1,1,"img",3),t.YNc(3,bo,1,4,"div",4),t.YNc(4,Ao,1,0,"div",5),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",e.item.icon),t.xp6(1),t.Q6J("ngIf",e.item.watermarkIcon),t.xp6(1),t.Q6J("ngIf",e.isFromVendor||e.isFromCollection),t.xp6(1),t.Q6J("ngIf",e.masterworked)}}let ge=(()=>{class n{constructor(e){this.iconService=e,this.itemHash=0,this.masterworked=!1,this.source=B.Inventory,this.isFromVendor=!1,this.isFromCollection=!1,this.item=void 0}ngAfterViewInit(){var e=this;return(0,y.Z)(function*(){e.item=yield e.iconService.getItemCached(e.itemHash),e.isFromVendor=e.source===B.Vendor,e.isFromCollection=e.source===B.Collections})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(pe))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-item-icon"]],inputs:{itemHash:"itemHash",masterworked:"masterworked",source:"source"},decls:1,vars:1,consts:[["class","item-icon-container",4,"ngIf"],[1,"item-icon-container"],["class","item-icon",3,"src","matTooltip",4,"ngIf"],["class","item-icon-overlay",3,"src",4,"ngIf"],["class","item-source-overlay",3,"vendor-item","collection-item",4,"ngIf"],["class","item-icon-masterwork-overlay",4,"ngIf"],[1,"item-icon",3,"src","matTooltip"],["tooltip","matTooltip"],[1,"item-icon-overlay",3,"src"],[1,"item-source-overlay"],[1,"item-icon-masterwork-overlay"]],template:function(e,o){1&e&&t.YNc(0,wo,5,4,"div",0),2&e&&t.Q6J("ngIf",o.item)},dependencies:[I.O5,pt.gM],styles:["[_nghost-%COMP%]{height:22px;width:22px;display:block}.item-icon-masterwork-overlay[_ngcontent-%COMP%]{pointer-events:none;box-sizing:border-box;top:-1px;left:-1px;border-width:0;height:24px;width:24px;position:absolute;background-repeat:no-repeat;background-position:center;background-size:22px 22px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAJgklEQVR4AWI8t87oBYCd8rBuGAZi6N1JUQbIrJkiY6bM4EoE1EHvqb+WHsPvG5AJU522JQ/znpY03GzJ3YTovcvcVFcO5WbU8eH/OZ8R91B241c6wEzowJUUZnqlXMiZufrJSs1XUjNBUb6OcvUFF8190fzkGxS2J0ChGPQZDnYAQObJWHbNlCvZIXKxqvHN8KBp22SubByb9EKFGM2hzgyNa47vUzvKvnUToHPOINMFHG6Oo6hb6lhmMump4wROtxSMee8yjC6YI9jOnBYcGn5TZnTdBMB7d0+HB52AeKEb5QL2hQKx8RLk5IkE6eymz9CJFPJIQKxdWZKO5M1u+gw9kPvVJUjqyAt5Z98OMBAI4igO9x97koAAnSY6YHSaAB2nAiyswTbMq+/HAiHv0+4k3Ww1pOvnOvYews1Ow2rGnldEAAAIAAABACAAAAQAgAAAEAAAAgAgPwACAEAAAKiyAfJ7AXALEgAAAuAU5BMgAADki9j/BQCAlkN459OlNu6v0/V43vsAocOvq9kh1n/LX35h+B6EU9DI8fuVh/D48WMRWv742Qgtf/xshBY+fm1cMQgtefwdI5ffA/a9+frC68ox9M3enehIkvJAAC5D9vs/8F+Z/HugkfXJrOfec6QSJBi6O8IO2znX1zdZro39if/K0B8ftp2Hxxfa/vcu6DO8P5x/AaDrvwj4/uDPJDtjP09+ntDze9L+i4DRSEqwtgoQZ9rL3r9Ye/51L+Pw9tF6YuHFPJ/uWBDk2eXZvfb8YyMAwHvg673Z7AvmSF4POeSHmtDnb0xAD3qzN5gLfHsHIOvhktBJ4vOXJqABvJcZnqs5z54R7FF5ODaRiOkIGcXX+OZG7PqJnh6Ev3uOI52Z7tdRUCbdB6AFXHCDcZ3kkf2fGwEN+HGe+3xcE5yBB3umIvk5JnVIggDtnx/1u27XD5CajhBt8tqj9gMahDSan+7C629sxx6DiGmTcxOF304AwOud/SuABnTsZtNABWfaygUynjR3Ld+/GokZp4TO/JsJsEON1uN7OTEPaO9nVFHhHXizTdcN8Fl6BlER5gHk6lghYV8Tgd31DeCPL2icmhISYGsS9P7R9AErAT9JwlWCnuyFsmRuEQurKcBuqyBB72WkXtfmTCD7Au4a4/H7yYAl0N9VY0eERBqRr+Ov51yqCkTEYuuqjL4A+D4p1nvazLzOncHLt1dByhIwqpsHDzcShpIEkM4HZ5+zDEtoRLoKAgrwvwF41/WuAeg+z/1hDzk6VyGPkYW8aLfwarEwr0RJCDr/LUm4+42N8WX6z76Am3R9RoIkGGDvRN7i677TupIhqVZI7vmzPnr+1xLgwT6Bek6QtOE89rMmAGk6d8PhaG9ghSOgeLaAW1FFmYz9viLitcgBCFAgQ2dJ6dcEyLvcKxMuH2za3wW7AeOpqh/k6raz9l49XOIlQozX6pNwNCDnfde6Ckfb2SdeSejLUCXp+L3SPyAlj9FghVVHWV2etlVQ482MNfBHzwe4igSAj7T+4VnmtfdvwBJ5dxoXay/6hrc5gqrnyQCzX5H3fHYVhNd35eOrIWD4zDjZG2ntSmt8CpKTzCAnSEmp6Y7TDthyE9vbjhz7OOYAODg3THqfwEmMIJ29f1TaDwkX+8ckTCf8JAl6EjBviFo70m7v0vtTdD72EqzNgjwIgCJBr+aMRoTzbQMxzBlHIoY5JFCrA9xIZedIZLzZiwScpe1ij/vLyDu8b9p5IH2/V/4hfg+SGIUHr7oSAVhIwgbwIALpgYgLcvokvLU9gfsmgv+37117brJ90PrlHKAtWY24OWLO5/WORGWYAyJeQy8fjceHoOYz5gkTLeAPgL7YU57mHzRBQwA2Cff+5L3s1e9kn8Cuy1hAf9D/EN5YYySVKyQo4tyNSog6XucApWOZeA+Vz6UMNaXotLEiCZsgY4M9KVc/9lmBffwNHSonyQp1H/kpknDEiFeM/U2UybWRmcuEe5IcSPgAqOuQB2b3OiKBMrLumzy33dzy86HG84Z0KCtp/wL4kc7NfFdEDIucK9em8eskRl3q4bUAYc6YXalZJue6/LwkoClD9cYsP5G8d5pkT/U+Cfdd5gpI4jn2EL87eEQiID5tboPq9e+rBLvOA47D/doGj6+lKJpiQC+88WDP33h8JMADL36naIUYJYocsO+NGLOIAJJEjJnWhx7fyM0obAXLta7hmjxfp3dB5IF3AvRJwL3tzG3cjKJ8PkncBPgBocPyNXYEHAkI/md8CFA+eu8/jMiOVc1lpQRBEq38rKTNN/khkJHJXtjE8TW8T50fJO6RxvXaOSBer1j594Rjf5HfNyMSCCFoR43HBtKsirSFSCXILrh/G1p0vRdVSX4vdJvEkZYK+EVu4W0qtluCYtvGHq89MQImAApsLUHniBC0cbjXuclXcvR+o2Dq9ThXzhl3AtCcoabnHPBRdL1vCEwR30hQRAw985hwAZR1IyVcJ3o8p97HqSnE0xz1zpszAfgvSKm634e5tf9HVfaOGNcTJwLiUye2BJrnSk5OEiVZ3unv/7o/zvLT/sGshRy8i4hdyVtvk6mlaNoz4f6/dGvJkRqKgVXuDyuWLLkSZ+CiXIQVZ2CF0h0XbblkRU+hESIjq+yqZ2emJtKbZNK54vlfUBRAgl1A0BUuiyAvmdo/ff/x7QsZF5PsYY2uKw20EKA1NLpuzaNnBmddSCIZqrxIz2ydiEpprucWzrk8WzrZAGQQ5LyL4hJCqhCQ+zOVLFP5Cslzrc88KeGk0LWam1mSprc196WeH8mY/QZcngWxZ3/Y9fhsiiRjcpCzdKjhHSTHqDnCdatee/wFzF40+ph85GP9Ht7969BGjXlj0nBjbkoZJBPAbv+WB2sqWitvZXLrkrGprgluPsf5HvBr+/l1CpD4+8F/4NdnIreI64MMgFf0PUrhDRE3FjLuYLy4y9184Z1eY73w6rr7e2bNu4gvBE9fim7ftEOZkJ5I7TfkY1M+oHyiMF/R9YbcNzW3QfuLk/leIzXWLM/cgcp19FzCemU6cIz/MB9890UWjBGadM7N9QMtlCqqJiFwOjUhdaDQXQCdEwNOpzhYwMpBDrfcFpEXIsjiGJw+9jqidHo7O3+3QVO7+QpIf7ji9cbst7ogrVf8UXTDBslUgkxCCSilwjFdSAkBkSo1EcjSIBXWWvsN9SxF5ebWH3woEIS629sLNhsPabYekYTY/VR0znB/jBdcErKAavL8+A1ICXvgoqroDgAAAABJRU5ErkJggg==)}.item-icon-container[_ngcontent-%COMP%]{position:relative;transition:opacity .2s,transform .2s;width:100%;--icon-size: 22px}.item-icon-overlay[_ngcontent-%COMP%], .item-icon[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:100%;pointer-events:none}.item-source-overlay[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:0;pointer-events:none;border-top:calc(var(--icon-size) / 2) solid transparent;border-right:calc(var(--icon-size) / 2) solid transparent}.item-source-overlay.vendor-item[_ngcontent-%COMP%]{border-top-color:#00f}.item-source-overlay.collection-item[_ngcontent-%COMP%]{border-top-color:#90ee90}"]}),n})();function Zo(n,i){if(1&n&&t._UZ(0,"img",5),2&n){const e=t.oxw(2);t.s9C("src",e.url,t.LSH)}}function Io(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"img",2,3),t.YNc(3,Zo,1,1,"img",4),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.s9C("matTooltip",e.name),t.xp6(2),t.Q6J("ngIf",e.customIconMods.indexOf(e.perk)>-1)}}function So(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"img",6,3),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.s9C("matTooltip",e.name),t.s9C("src",e.url,t.LSH)}}let _e=(()=>{class n{constructor(){this.ArmorPerkOrSlot=c.Pn,this.customIconMods=[c.Pn.SlotCrotasEnd,c.Pn.SlotRootOfNightmares,c.Pn.SlotKingsFall,c.Pn.SlotVowOfTheDisciple,c.Pn.SlotArtifice],this.perk=c.Pn.None}get name(){return c.cM[this.perk]}get url(){return c.X9[this.perk]}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-perk-icon"]],inputs:{perk:"perk"},decls:3,vars:2,consts:[[1,"overlay-icon-container"],[4,"ngIf"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png",1,"element-icon",3,"matTooltip"],["tooltip","matTooltip"],["class","overlay-icon",3,"src",4,"ngIf"],[1,"overlay-icon",3,"src"],[1,"element-icon",3,"matTooltip","src"]],template:function(e,o){1&e&&(t.TgZ(0,"span",0),t.YNc(1,Io,4,2,"ng-container",1),t.YNc(2,So,3,2,"ng-container",1),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngIf",o.customIconMods.indexOf(o.perk)>-1),t.xp6(1),t.Q6J("ngIf",-1===o.customIconMods.indexOf(o.perk)))},dependencies:[I.O5,pt.gM],styles:[".element-icon[_ngcontent-%COMP%]{height:100%;width:100%}.element-icon.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:default;pointer-events:none}.overlay-icon-container[_ngcontent-%COMP%]{position:relative}.overlay-icon-container[_ngcontent-%COMP%] .overlay-icon[_ngcontent-%COMP%]{width:66%;position:absolute;left:17%;top:17%;pointer-events:none}[_nghost-%COMP%]{display:inline-flex;height:30px;width:30px}"]}),n})(),Ae=(()=>{class n{transform(e,o=null){return e.filter(a=>null==o||a==o).length}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275pipe=t.Yjl({name:"count",type:n,pure:!0}),n})();function Mo(n,i){1&n&&(t.TgZ(0,"mat-toolbar",24),t._uU(1," Warning: The stats of one or more items used for this build may be invalid."),t._UZ(2,"br"),t._uU(3," Please remove all negative/positive stat modifiers from the marked items. "),t.qZA())}function Oo(n,i){if(1&n&&(t.TgZ(0,"u",34,35),t._uU(2),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(2),t.Oqu(e.name)}}function ko(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Oqu(e.name)}}function Eo(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"td",36)(2,"span",37),t._uU(3),t.qZA()(),t.TgZ(4,"td",36)(5,"span",37),t._uU(6),t.qZA()(),t.TgZ(7,"td",36)(8,"span",37),t._uU(9),t.qZA()(),t.TgZ(10,"td",36)(11,"span",37),t._uU(12),t.qZA()(),t.TgZ(13,"td",36)(14,"span",37),t._uU(15),t.qZA()(),t.TgZ(16,"td",36)(17,"span",37),t._uU(18),t.qZA()(),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().$implicit,a=t.oxw(2);t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Mobility]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Resilience]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Recovery]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Discipline]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Intellect]+e),t.xp6(2),t.ekj("text-mw",o.masterworked),t.xp6(1),t.Oqu(o.stats[a.ArmorStat.Strength]+e)}}function Uo(n,i){1&n&&(t.TgZ(0,"td",27),t._UZ(1,"mat-progress-spinner",38),t.qZA())}function Do(n,i){1&n&&(t.TgZ(0,"td")(1,"mat-icon",39,35),t._uU(3," check_circle_outline "),t.qZA()())}function Po(n,i){1&n&&(t.TgZ(0,"td")(1,"mat-icon",40,35),t._uU(3," error_outline "),t.qZA()())}function Ro(n,i){1&n&&(t.TgZ(0,"td")(1,"mat-icon",41,35),t._uU(3," report_problem "),t.qZA()())}function No(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td"),t.YNc(2,Oo,3,1,"u",26),t.YNc(3,ko,2,1,"span",3),t.qZA(),t.YNc(4,Eo,19,18,"ng-container",8),t.TgZ(5,"td",27)(6,"div",28),t._UZ(7,"app-item-icon",29),t.qZA()(),t.TgZ(8,"td",27)(9,"div",30),t._UZ(10,"app-armor-perk-icon",31),t.qZA()(),t.TgZ(11,"td",27)(12,"button",32),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw(2);return t.KtG(r.disableItem(s.itemInstanceId))}),t.TgZ(13,"mat-icon"),t._uU(14,"block"),t.qZA()()(),t.YNc(15,Uo,2,0,"td",33),t.YNc(16,Do,4,0,"td",3),t.YNc(17,Po,4,0,"td",3),t.YNc(18,Ro,4,0,"td",3),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw().$implicit,a=t.oxw();t.ekj("highlight-row",o[0].slot%2==0),t.xp6(2),t.Q6J("ngIf",e.masterworked),t.xp6(1),t.Q6J("ngIf",!e.masterworked),t.xp6(1),t.Q6J("ngVar",e.masterworked||!e.exotic&&a.config_assumeLegendariesMasterworked||e.exotic&&a.config_assumeExoticsMasterworked?2:0),t.xp6(2),t.Q6J("itemTooltip",e),t.xp6(1),t.Q6J("itemHash",e.hash)("masterworked",e.masterworked)("source",e.source),t.xp6(3),t.Q6J("perk",e.perk||0),t.xp6(5),t.Q6J("ngIf",1===e.transferState||2===e.transferState),t.xp6(1),t.Q6J("ngIf",3===e.transferState),t.xp6(1),t.Q6J("ngIf",4===e.transferState),t.xp6(1),t.Q6J("ngIf",e.mayBeBugged)}}function qo(n,i){if(1&n&&(t.ynx(0),t.YNc(1,No,19,14,"tr",25),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function Fo(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td",42,35),t._uU(3,"Any Class Item"),t.qZA(),t.TgZ(4,"td",43),t._uU(5),t.qZA(),t.TgZ(6,"td",43),t._uU(7),t.qZA(),t.TgZ(8,"td",43),t._uU(9),t.qZA(),t.TgZ(10,"td",43),t._uU(11),t.qZA(),t.TgZ(12,"td",43),t._uU(13),t.qZA(),t.TgZ(14,"td",43),t._uU(15),t.qZA(),t._UZ(16,"td"),t.TgZ(17,"td")(18,"div",30),t._UZ(19,"app-armor-perk-icon",31),t.qZA()(),t.TgZ(20,"td")(21,"button",44),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableAllItems())}),t.TgZ(22,"mat-icon"),t._uU(23,"block"),t.qZA()()()()}if(2&n){const e=t.oxw();t.xp6(5),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(2),t.Oqu(2),t.xp6(4),t.Q6J("perk",(null==e.element||null==e.element.classItem?null:e.element.classItem.perk)||0)}}function Jo(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td"),t._uU(2,"Any Class Item"),t.qZA(),t.TgZ(3,"td",45),t._uU(4,"You chose to use non-masterworked class items."),t.qZA(),t._UZ(5,"td")(6,"td"),t.TgZ(7,"td")(8,"button",44),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableAllItems())}),t.TgZ(9,"mat-icon"),t._uU(10,"block"),t.qZA()()()()}}function Lo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",47),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Mobility]," ")}}function Yo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",48),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Resilience]," ")}}function Bo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",49),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Recovery]," ")}}function Vo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",50),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Discipline]," ")}}function Qo(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",51),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Intellect]," ")}}function Ho(n,i){if(1&n&&(t.TgZ(0,"td"),t._uU(1),t._UZ(2,"img",52),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(1),t.hij(" ",e[o.ArmorStat.Strength]," ")}}function Wo(n,i){if(1&n&&(t.TgZ(0,"tr",46)(1,"td"),t._uU(2,"Total (armor)"),t.qZA(),t.YNc(3,Lo,3,1,"td",3),t.YNc(4,Yo,3,1,"td",3),t.YNc(5,Bo,3,1,"td",3),t.YNc(6,Vo,3,1,"td",3),t.YNc(7,Qo,3,1,"td",3),t.YNc(8,Ho,3,1,"td",3),t.qZA()),2&n){const e=i.ngVar;t.xp6(3),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e),t.xp6(1),t.Q6J("ngIf",!!e)}}function jo(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function Go(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,jo,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Mobility]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Mobility]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Mobility]," ")}}function zo(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function Ko(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,zo,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Resilience]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Resilience]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Resilience]," ")}}function $o(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function Xo(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,$o,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Recovery]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Recovery]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Recovery]," ")}}function ti(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function ei(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,ti,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Discipline]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Discipline]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Discipline]," ")}}function ni(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function oi(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,ni,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Intellect]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Intellect]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Intellect]," ")}}function ii(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"+"),t.qZA())}function ai(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,ii,2,0,"span",3),t._uU(2),t.qZA()),2&n){const e=t.oxw();t.Tol(e.configValues[e.ArmorStat.Strength]>0?"positive":"negative"),t.xp6(1),t.Q6J("ngIf",e.configValues[e.ArmorStat.Strength]>0),t.xp6(1),t.hij("",e.configValues[e.ArmorStat.Strength]," ")}}function si(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function ri(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,si,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function li(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function ci(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,li,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function mi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function di(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,mi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function ui(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function pi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,ui,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function gi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function _i(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,gi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function fi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd75")}}function hi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,fi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function xi(n,i){if(1&n&&(t.TgZ(0,"tr",53)(1,"td"),t._uU(2,"Minor Mods"),t.qZA(),t.YNc(3,ri,2,1,"td",8),t.ALo(4,"count"),t.YNc(5,ci,2,1,"td",8),t.ALo(6,"count"),t.YNc(7,di,2,1,"td",8),t.ALo(8,"count"),t.YNc(9,pi,2,1,"td",8),t.ALo(10,"count"),t.YNc(11,_i,2,1,"td",8),t.ALo(12,"count"),t.YNc(13,hi,2,1,"td",8),t.ALo(14,"count"),t.qZA()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(3),t.Q6J("ngVar",t.xi3(4,6,e,o.StatModifier.MINOR_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(6,9,e,o.StatModifier.MINOR_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(8,12,e,o.StatModifier.MINOR_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(10,15,e,o.StatModifier.MINOR_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(12,18,e,o.StatModifier.MINOR_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(14,21,e,o.StatModifier.MINOR_STRENGTH))}}function yi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Ci(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,yi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ti(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function vi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ti,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function bi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Ai(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,bi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function wi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Zi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,wi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ii(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Si(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ii,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Mi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd710")}}function Oi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Mi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function ki(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Major Mods"),t.qZA(),t.YNc(3,Ci,2,1,"td",8),t.ALo(4,"count"),t.YNc(5,vi,2,1,"td",8),t.ALo(6,"count"),t.YNc(7,Ai,2,1,"td",8),t.ALo(8,"count"),t.YNc(9,Zi,2,1,"td",8),t.ALo(10,"count"),t.YNc(11,Si,2,1,"td",8),t.ALo(12,"count"),t.YNc(13,Oi,2,1,"td",8),t.ALo(14,"count"),t.qZA()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(3),t.Q6J("ngVar",t.xi3(4,6,e,o.StatModifier.MAJOR_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(6,9,e,o.StatModifier.MAJOR_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(8,12,e,o.StatModifier.MAJOR_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(10,15,e,o.StatModifier.MAJOR_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(12,18,e,o.StatModifier.MAJOR_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(14,21,e,o.StatModifier.MAJOR_STRENGTH))}}function Ei(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Ui(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ei,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Di(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Pi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Di,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ri(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Ni(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ri,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function qi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Fi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,qi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Ji(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Li(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Ji,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Yi(n,i){if(1&n&&(t.TgZ(0,"span",55),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("",e,"\xd73")}}function Bi(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,Yi,2,1,"span",54),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Vi(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"tr")(2,"td"),t._uU(3,"Artifice Mods"),t.qZA(),t.YNc(4,Ui,2,1,"td",8),t.ALo(5,"count"),t.YNc(6,Pi,2,1,"td",8),t.ALo(7,"count"),t.YNc(8,Ni,2,1,"td",8),t.ALo(9,"count"),t.YNc(10,Fi,2,1,"td",8),t.ALo(11,"count"),t.YNc(12,Li,2,1,"td",8),t.ALo(13,"count"),t.YNc(14,Bi,2,1,"td",8),t.ALo(15,"count"),t.qZA(),t.BQk()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(4),t.Q6J("ngVar",t.xi3(5,6,e,o.StatModifier.ARTIFICE_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(7,9,e,o.StatModifier.ARTIFICE_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(9,12,e,o.StatModifier.ARTIFICE_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(11,15,e,o.StatModifier.ARTIFICE_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(13,18,e,o.StatModifier.ARTIFICE_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(15,21,e,o.StatModifier.ARTIFICE_STRENGTH))}}function Qi(n,i){if(1&n&&(t.TgZ(0,"tr",56)(1,"td"),t._uU(2,"Total"),t.qZA(),t.TgZ(3,"td"),t._uU(4),t._UZ(5,"img",47),t.qZA(),t.TgZ(6,"td"),t._uU(7),t._UZ(8,"img",48),t.qZA(),t.TgZ(9,"td"),t._uU(10),t._UZ(11,"img",49),t.qZA(),t.TgZ(12,"td"),t._uU(13),t._UZ(14,"img",50),t.qZA(),t.TgZ(15,"td"),t._uU(16),t._UZ(17,"img",51),t.qZA(),t.TgZ(18,"td"),t._uU(19),t._UZ(20,"img",52),t.qZA()()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(4),t.hij(" ",e[o.ArmorStat.Mobility]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Resilience]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Recovery]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Discipline]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Intellect]," "),t.xp6(3),t.hij(" ",e[o.ArmorStat.Strength]," ")}}function Hi(n,i){if(1&n&&(t.TgZ(0,"span",63),t._UZ(1,"img",64),t._uU(2),t.ALo(3,"number"),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",t.lcZ(3,1,e.glimmer)," ")}}function Wi(n,i){if(1&n&&(t.TgZ(0,"span",65),t._UZ(1,"img",66),t._uU(2),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",e.core," ")}}function ji(n,i){if(1&n&&(t.TgZ(0,"span",67),t._UZ(1,"img",68),t._uU(2),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",e.prism," ")}}function Gi(n,i){if(1&n&&(t.TgZ(0,"span",69),t._UZ(1,"img",70),t._uU(2),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(2),t.hij(" ",e.ascshard," ")}}function zi(n,i){if(1&n&&(t.TgZ(0,"div",58),t._uU(1," Total material cost: "),t.YNc(2,Hi,4,3,"span",59),t.YNc(3,Wi,3,1,"span",60),t.YNc(4,ji,3,1,"span",61),t.YNc(5,Gi,3,1,"span",62),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(2),t.Q6J("ngIf",e.glimmer>0),t.xp6(1),t.Q6J("ngIf",e.core>0),t.xp6(1),t.Q6J("ngIf",e.prism>0),t.xp6(1),t.Q6J("ngIf",e.ascshard>0)}}function Ki(n,i){if(1&n&&(t.ynx(0),t.YNc(1,zi,6,4,"div",57),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.total>0)}}function $i(n,i){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"button",71),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.openSnackBar("Copied the DIM search query to your clipboard."))}),t._uU(2," Copy DIM query to clipboard "),t.qZA(),t.BQk()}if(2&n){const e=i.ngVar;t.xp6(1),t.Q6J("cdkCopyToClipboard",e)}}function Xi(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1," and use a masterworked class item"),t.qZA())}function ta(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",e.name," ")}}function ea(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1," Masterwork these items: "),t.TgZ(2,"ul"),t.YNc(3,ta,2,1,"li",2),t.qZA()()),2&n){const e=t.oxw().ngVar;t.xp6(3),t.Q6J("ngForOf",e)}}function na(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ea,4,1,"li",3),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e.length>0)}}function oa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function ia(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function aa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function sa(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function ra(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,oa,2,1,"span",3),t.YNc(2,ia,2,0,"ng-container",3),t.YNc(3,aa,2,1,"span",3),t._uU(4," Mobility Mod"),t.YNc(5,sa,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function la(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ra,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function ca(n,i){if(1&n&&(t.ynx(0),t.YNc(1,la,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_MOBILITY))}}function ma(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function da(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function ua(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function pa(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function ga(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,ma,2,1,"span",3),t.YNc(2,da,2,0,"ng-container",3),t.YNc(3,ua,2,1,"span",3),t._uU(4," Resilience Mod"),t.YNc(5,pa,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function _a(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ga,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function fa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,_a,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_RESILIENCE))}}function ha(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function xa(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function ya(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Ca(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Ta(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,ha,2,1,"span",3),t.YNc(2,xa,2,0,"ng-container",3),t.YNc(3,ya,2,1,"span",3),t._uU(4," Recovery Mod"),t.YNc(5,Ca,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function va(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ta,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function ba(n,i){if(1&n&&(t.ynx(0),t.YNc(1,va,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_RECOVERY))}}function Aa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function wa(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function Za(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Ia(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Sa(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,Aa,2,1,"span",3),t.YNc(2,wa,2,0,"ng-container",3),t.YNc(3,Za,2,1,"span",3),t._uU(4," Discipline Mod"),t.YNc(5,Ia,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function Ma(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Sa,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function Oa(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ma,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_DISCIPLINE))}}function ka(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function Ea(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function Ua(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function Da(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Pa(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,ka,2,1,"span",3),t.YNc(2,Ea,2,0,"ng-container",3),t.YNc(3,Ua,2,1,"span",3),t._uU(4," Intellect Mod"),t.YNc(5,Da,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function Ra(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Pa,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function Na(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ra,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_INTELLECT))}}function qa(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3).ngVar;t.xp6(1),t.hij("",e," minor")}}function Fa(n,i){1&n&&(t.ynx(0),t._uU(1," and"),t.BQk())}function Ja(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).ngVar;t.xp6(1),t.hij(" ",e," major ")}}function La(n,i){1&n&&(t.ynx(0),t._uU(1,"s"),t.BQk())}function Ya(n,i){if(1&n&&(t.TgZ(0,"li",55),t.YNc(1,qa,2,1,"span",3),t.YNc(2,Fa,2,0,"ng-container",3),t.YNc(3,Ja,2,1,"span",3),t._uU(4," Strength Mod"),t.YNc(5,La,2,0,"ng-container",3),t.qZA()),2&n){const e=t.oxw().ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o>0),t.xp6(1),t.Q6J("ngIf",o>0&&e>0),t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(2),t.Q6J("ngIf",o+e>1)}}function Ba(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ya,6,4,"li",54),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngIf",o+e>0)}}function Va(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ba,2,1,"ng-container",8),t.ALo(2,"count"),t.BQk()),2&n){const e=t.oxw().ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,e,o.StatModifier.MAJOR_STRENGTH))}}function Qa(n,i){if(1&n&&(t.TgZ(0,"ul"),t.YNc(1,ca,3,4,"ng-container",8),t.ALo(2,"count"),t.YNc(3,fa,3,4,"ng-container",8),t.ALo(4,"count"),t.YNc(5,ba,3,4,"ng-container",8),t.ALo(6,"count"),t.YNc(7,Oa,3,4,"ng-container",8),t.ALo(8,"count"),t.YNc(9,Na,3,4,"ng-container",8),t.ALo(10,"count"),t.YNc(11,Va,3,4,"ng-container",8),t.ALo(12,"count"),t.qZA()),2&n){const e=i.ngVar,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",t.xi3(2,6,e,o.StatModifier.MINOR_MOBILITY)),t.xp6(2),t.Q6J("ngVar",t.xi3(4,9,e,o.StatModifier.MINOR_RESILIENCE)),t.xp6(2),t.Q6J("ngVar",t.xi3(6,12,e,o.StatModifier.MINOR_RECOVERY)),t.xp6(2),t.Q6J("ngVar",t.xi3(8,15,e,o.StatModifier.MINOR_DISCIPLINE)),t.xp6(2),t.Q6J("ngVar",t.xi3(10,18,e,o.StatModifier.MINOR_INTELLECT)),t.xp6(2),t.Q6J("ngVar",t.xi3(12,21,e,o.StatModifier.MINOR_STRENGTH))}}function Ha(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1,"Equip the following stat mods: "),t.YNc(2,Qa,13,24,"ul",8),t.qZA()),2&n){const e=t.oxw();t.xp6(2),t.Q6J("ngVar",null==e.element?null:e.element.mods)}}function Wa(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij(" Equip the mod ",e.name," ")}}function ja(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Wa,2,1,"li",3),t.BQk()),2&n){const e=i.ngVar,o=t.oxw(3);t.xp6(1),t.Q6J("ngIf",e.type===o.ModifierType.CombatStyleMod)}}function Ga(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ja,2,1,"ng-container",8),t.BQk()),2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",o.ModInformation[e])}}function za(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij(" Equip the stasis fragment ",e.name," ")}}function Ka(n,i){if(1&n&&(t.ynx(0),t.YNc(1,za,2,1,"li",3),t.BQk()),2&n){const e=i.ngVar,o=t.oxw(3);t.xp6(1),t.Q6J("ngIf",e.type===o.ModifierType.Stasis)}}function $a(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ka,2,1,"ng-container",8),t.BQk()),2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("ngVar",o.ModInformation[e])}}function Xa(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1," Equip any mods and fragments that you enabled in the configuration: "),t.TgZ(2,"ul"),t.YNc(3,Ga,2,1,"ng-container",2),t.YNc(4,$a,2,1,"ng-container",2),t.qZA()()),2&n){const e=t.oxw();t.xp6(3),t.Q6J("ngForOf",e.config_enabledMods),t.xp6(1),t.Q6J("ngForOf",e.config_enabledMods)}}function ts(n,i){if(1&n&&t._UZ(0,"div",75),2&n){const e=t.oxw().$implicit;t.Tol(e)}}function es(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,ts,1,2,"div",74),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",!!e)}}function ns(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t._UZ(4,"img",72),t.qZA(),t.YNc(5,es,2,1,"td",2),t.TgZ(6,"td",73),t._uU(7),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.Oqu(o.ArmorStatNames[e]),t.xp6(2),t.s9C("alt",o.ArmorStatNames[e]),t.s9C("src",o.ArmorStatIconUrls[e],t.LSH),t.xp6(1),t.Q6J("ngForOf",o.getColumnForStat(e)),t.xp6(2),t.Oqu(o.getTiersForStat(e))}}function os(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Exotic:"),t.qZA(),t.TgZ(3,"td",76),t._uU(4),t.qZA(),t.TgZ(5,"td",77)(6,"div",78),t._UZ(7,"img",79)(8,"img",80),t.qZA()()()),2&n){const e=t.oxw().ngVar;t.xp6(4),t.Oqu(e[0].name),t.xp6(3),t.MGl("src","https://bungie.net/",e[0].icon,"",t.LSH),t.xp6(1),t.MGl("src","https://bungie.net/",e[0].watermark,"",t.LSH)}}function is(n,i){if(1&n&&(t.ynx(0),t.YNc(1,os,9,3,"tr",3),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e[0])}}let as=(()=>{class n{constructor(e,o,a,s){this.config=e,this._snackBar=o,this.bungieApi=a,this.membership=s,this.showGenericClassItemRow=!1,this.armorStatIds=[0,1,2,3,4,5],this.ModifierType=k.O,this.ModInformation=N.F,this.ArmorStatNames=c.Mi,this.ArmorStatIconUrls=c.lp,this.ArmorStat=c.WB,this.StatModifier=c.iV,this.config_characterClass=0,this.config_assumeLegendariesMasterworked=!1,this.config_assumeExoticsMasterworked=!1,this.config_assumeClassItemMasterworked=!1,this.config_enabledMods=[],this.DIMUrl="",this.configValues=[0,0,0,0,0,0],this.element=null,this.ngUnsubscribe=new R.xQ}buildItemIdString(e){if(!e)return"";let o=e.items.flat().filter(r=>r.slot!=T.y.ArmorSlotClass).map(r=>`id:'${r.itemInstanceId}'`).join(" or "),a=["is:classitem"],s=e.items.flat().filter(r=>r.slot==T.y.ArmorSlotClass).map(r=>`exactname:'${r.name}'`).join(" or ");return s.length>0&&(a=[s]),e.classItem.perk!=c.Pn.None&&e.classItem.perk!=c.Pn.COUNT&&a.push(c.ID[e.classItem.perk||0]),a.length>1&&(o+=` or (${a.join(" ")})`),o}openSnackBar(e){this._snackBar.open(e,"",{duration:2500,politeness:"polite"})}ngOnInit(){this.showGenericClassItemRow=(this.element?.items.filter(e=>e.length>0).length||0)<=4,this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(e=>{this.config_characterClass=e.characterClass,this.config_assumeLegendariesMasterworked=e.assumeLegendariesMasterworked,this.config_assumeExoticsMasterworked=e.assumeExoticsMasterworked,this.config_assumeClassItemMasterworked=e.assumeClassItemMasterworked,this.config_enabledMods=e.enabledMods,this.configValues=e.enabledMods.reduce((o,a)=>o.concat(N.F[a].bonus),[]).reduce((o,a)=>(a.stat==c.AR.ClassAbilityRegenerationStat?o[[1,0,2][e.characterClass]]+=a.value:o[a.stat]+=a.value,o),[0,0,0,0,0,0]),this.DIMUrl=this.generateDIMLink(e)})}disableAllItems(){this.config.modifyConfiguration(e=>{for(let o of this.element?.items.flat())e.disabledItems.push(o.itemInstanceId)})}disableItem(e){this.config.modifyConfiguration(o=>{o.disabledItems.push(e)})}get mayAnyItemBeBugged(){return(this.element?.items.flat().filter(e=>e.mayBeBugged).length||0)>0}getCharacterId(){var e=this;return(0,y.Z)(function*(){let o=yield e.membership.getCharacters();return o=o.filter(a=>a.clazz==e.config_characterClass),0==o.length?(e.openSnackBar("Error: Could not find a character to move the items to."),null):o[0].characterId})()}moveItems(e=!1){var o=this;return(0,y.Z)(function*(){for(let d of(o.element?.items||[]).flat())d.transferState=Qt.WAITING_FOR_TRANSFER;let a=yield o.getCharacterId();if(!a)return;let s=!0,r=(o.element?.items||[]).flat().sort(d=>d.exotic?1:-1);for(let d of r){d.transferState=Qt.TRANSFERRING;let p=yield o.bungieApi.transferItem(d.itemInstanceId,a,e);d.transferState=p?Qt.TRANSFERRED:Qt.ERROR_DURING_TRANSFER,p||(s=!1)}o.openSnackBar(s?"Success! Moved all the items.":"Some of the items could not be moved. Make sure that there is enough space in the specific slot. This tool will not move items out of your inventory.")})()}getItemsThatMustBeMasterworked(){return this.element?.items.flat().filter(e=>!(e.masterworked||e.exotic&&!this.config_assumeExoticsMasterworked||!e.exotic&&!this.config_assumeLegendariesMasterworked))}calculateRequiredMasterworkCost(){let e={shards:0,glimmer:0,core:0,prism:0,ascshard:0,total:0},o=this.element?.items.flat()||[];o=o.filter(a=>a.energyLevel<10&&(a.exotic&&this.config_assumeExoticsMasterworked||!a.exotic&&this.config_assumeLegendariesMasterworked));for(let a of o){let s=a.exotic?lo:ro;for(let r=a.energyLevel;r<10;r++)for(let d in s[r+1])e[d]+=s[r+1][d],e.total++}return e}generateDIMLink(e){const o=[],a=[];for(let m of this.config_enabledMods){const S=N.F[m];S.type===k.O.CombatStyleMod?o.push(S.hash):a.push(S.hash)}if(this.element){for(let m of this.element?.mods||[])o.push(c.K9[m][3]);for(let m of this.element?.artifice||[])o.push(c.K9[m][3])}var s={statConstraints:[],mods:o,assumeArmorMasterwork:e.assumeLegendariesMasterworked?e.assumeExoticsMasterworked?3:2:1};for(let m of this.armorStatIds)s.statConstraints.push({statHash:c.kw[m],minTier:e.minimumStatTiers[m].value,maxTier:e.minimumStatTiers[m].fixed?e.minimumStatTiers[m].value:10});if(1==e.selectedExotics.length)s.exoticArmorHash=e.selectedExotics[0];else{var r=this.element?.exotic;if(r&&1==r.length){var d=r[0].hash;d&&(s.exoticArmorHash=parseInt(d,10))}}const p={id:"d2ap",name:"D2ArmorPicker Loadout",classType:e.characterClass,parameters:s,equipped:(this.element?.items||[]).filter(m=>m.length>0).map(([m])=>({id:m.itemInstanceId,hash:m.hash})),unequipped:[],clearSpace:!1};if(a.length){const m=a.reduce((S,q,$)=>(S[$+7]=q,S),{});if(3!=e.characterClass&&e.selectedModElement!=k.O.CombatStyleMod){const q=c.Bd[e.characterClass][e.selectedModElement];q&&p.equipped.push({id:"12345",hash:q,socketOverrides:m})}}return"https://app.destinyitemmanager.com/loadouts?loadout="+encodeURIComponent(JSON.stringify(p))}goToDIM(){window.open(this.DIMUrl,"blank")}getTiersForStat(e){return Math.floor((this.element?.stats[e]||0)/10)}getColumnForStat(e){var o=Math.floor(this.configValues[e]/10);let a=[],s=0,r=Math.ceil((5*(this.element?.mods.filter(p=>p==1+2*e)||[]).length+10*(this.element?.mods.filter(p=>p==2+2*e)||[]).length)/10);var d=this.getTiersForStat(e)-o-r;for(let p=0;p10?" over100":""));for(let p=0;p10?" over100":""));for(let p=0;p10?" over100":""));for(;s++<10;)a.push("");return a}getRequiredMasterworkBonus(){return 2*(this.element?.items.filter(e=>!e[0].masterworked&&!e[0].exotic&&this.config_assumeLegendariesMasterworked||e[0].exotic&&this.config_assumeExoticsMasterworked)||[]).length}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(ue.ux),t.Y36(bt),t.Y36(Ut))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-expanded-result-content"]],inputs:{element:"element"},decls:124,vars:26,consts:[["class","invalid-item-box mat-elevation-z4","color","warn",4,"ngIf"],[1,"specificStatTable"],[4,"ngFor","ngForOf"],[4,"ngIf"],["class","result-total-gear result-total highlight-row",4,"ngVar"],[1,"result-config"],[3,"class",4,"ngIf"],["class","highlight-row",4,"ngVar"],[4,"ngVar"],["class","result-total-all result-total highlight-row",4,"ngVar"],[1,"buttonContainer"],["color","primary","mat-raised-button","","matTooltip","Use this button to open this build as a DIM Loadout.",3,"click"],["mat-stroked-button","","matTooltip","Click this button to move Items to your inventory. Make sure that you have enough space in your inventory. This tool will not move any items out of your inventory.",3,"click"],["mat-stroked-button","","matTooltip","Click this button to equip the Items. Make sure that you have enough space in your inventory. This tool will not move any items out of your inventory.",3,"click"],[1,"mat-elevation-z6"],[1,"stat-preview"],["colspan","2"],[1,"tier-column"],[1,"legend"],[1,"energy-bar","normal"],["colspan","3"],[1,"energy-bar","mod"],["colspan","4"],[1,"energy-bar","config"],["color","warn",1,"invalid-item-box","mat-elevation-z4"],[3,"highlight-row",4,"ngFor","ngForOf"],["class","item-name-mw","matTooltip","This item is already masterworked.",4,"ngIf"],[1,"icon-column"],[1,"item-icon-container",3,"itemTooltip"],[1,"item-icon",3,"itemHash","masterworked","source"],[2,"position","relative","width","25px"],[3,"perk"],["mat-icon-button","","matTooltip","Disable this item from the results. It will not be used to generate results anymore, but you can always undo this.",1,"item-info-menu-btn",3,"click"],["class","icon-column",4,"ngIf"],["matTooltip","This item is already masterworked.",1,"item-name-mw"],["tooltip","matTooltip"],[1,"item-stat-container"],[1,"item-stat-value"],["color","primary","diameter","22","mode","indeterminate",1,"item-loading-spinner"],["aria-hidden","false","aria-label","Success","inline","","matTooltip","Item successfully moved to inventory.",1,"item-moved-icon"],["aria-hidden","false","aria-label","Error","inline","","matTooltip","This item could not be moved. Make sure that there is enough space on your character. This tool will not move items out of your inventory.",1,"report-problem-icon"],["aria-hidden","false","aria-label","Error","inline","","matTooltip","The stats of this item may be incorrect. Make sure that you remove every positive or negative stat modifier from this item.",1,"report-problem-icon"],["matTooltip","Class item should be masterworked.",1,"item-name-mw"],[1,"text-mw"],["mat-icon-button","","matTooltip","Disable all four items above from the results. They will not be used to generate results anymore, but you can always undo this.",1,"item-info-menu-btn","report-problem-icon",3,"click"],["colspan","6",1,"text-centered"],[1,"result-total-gear","result-total","highlight-row"],["alt","Mobility","src","https://www.bungie.net/common/destiny2_content/icons/e26e0e93a9daf4fdd21bf64eb9246340.png",1,"statIcon"],["alt","Resilience","src","https://www.bungie.net/common/destiny2_content/icons/202ecc1c6febeb6b97dafc856e863140.png",1,"statIcon"],["alt","Recovery","src","https://www.bungie.net/common/destiny2_content/icons/128eee4ee7fc127851ab32eac6ca91cf.png",1,"statIcon"],["alt","Discipline","src","https://www.bungie.net/common/destiny2_content/icons/79be2d4adef6a19203f7385e5c63b45b.png",1,"statIcon"],["alt","Intellect","src","https://www.bungie.net/common/destiny2_content/icons/d1c154469670e9a592c9d4cbdcae5764.png",1,"statIcon"],["alt","Strength","src","https://www.bungie.net/common/destiny2_content/icons/ea5af04ccd6a3470a44fd7bb0f66e2f7.png",1,"statIcon"],[1,"highlight-row"],["class","positive",4,"ngIf"],[1,"positive"],[1,"result-total-all","result-total","highlight-row"],["style","margin-top: 10px",4,"ngIf"],[2,"margin-top","10px"],["class","currency-icon-container","matTooltip","Glimmer",4,"ngIf"],["class","currency-icon-container","matTooltip","Enhancement Cores",4,"ngIf"],["class","currency-icon-container","matTooltip","Enhancement Prism",4,"ngIf"],["class","currency-icon-container","matTooltip","Ascendant Shard",4,"ngIf"],["matTooltip","Glimmer",1,"currency-icon-container"],["alt","Glimmer","src","https://www.bungie.net/common/destiny2_content/icons/88993eaeedad32f42072df6f77f47311.png",1,"currency-icon"],["matTooltip","Enhancement Cores",1,"currency-icon-container"],["alt","Enhancement Cores","src","https://www.bungie.net/common/destiny2_content/icons/0a4eb695ed55b4e720ddc401460cc0f9.jpg",1,"currency-icon"],["matTooltip","Enhancement Prism",1,"currency-icon-container"],["alt","Enhancement Prism","src","https://www.bungie.net/common/destiny2_content/icons/dea2a35badf7466d4c2c2697ce6e8d87.jpg",1,"currency-icon"],["matTooltip","Ascendant Shard",1,"currency-icon-container"],["alt","Ascendant Shard","src","https://www.bungie.net/common/destiny2_content/icons/0271d214fc3ec91b3def799a4b286b46.jpg",1,"currency-icon"],["color","primary","mat-raised-button","","matTooltip","Use this button to copy a DIM search query to your clip board. It allows you to search the given items in DIM.",3,"cdkCopyToClipboard","click"],[2,"height","18px",3,"alt","src"],[1,"sum-tiers"],["class","energy-bar",3,"class",4,"ngIf"],[1,"energy-bar"],["colspan","10"],["colspan","1"],[1,"item-icon-container"],[1,"item-icon",3,"src"],[1,"item-icon-overlay",3,"src"]],template:function(e,o){1&e&&(t.TgZ(0,"div"),t.YNc(1,Mo,4,0,"mat-toolbar",0),t._uU(2," This table shows you the expected stats of any item: "),t.TgZ(3,"table",1)(4,"thead")(5,"tr")(6,"th"),t._uU(7,"Name"),t.qZA(),t.TgZ(8,"th"),t._uU(9,"Mobility"),t.qZA(),t.TgZ(10,"th"),t._uU(11,"Resilience"),t.qZA(),t.TgZ(12,"th"),t._uU(13,"Recovery"),t.qZA(),t.TgZ(14,"th"),t._uU(15,"Discipline"),t.qZA(),t.TgZ(16,"th"),t._uU(17,"Intellect"),t.qZA(),t.TgZ(18,"th"),t._uU(19,"Strength"),t.qZA(),t._UZ(20,"th")(21,"th"),t.qZA()(),t.YNc(22,qo,2,1,"ng-container",2),t.YNc(23,Fo,24,7,"tr",3),t.YNc(24,Jo,11,0,"tr",3),t.YNc(25,Wo,9,6,"tr",4),t.TgZ(26,"tr",5)(27,"td"),t._uU(28,"Configuration"),t.qZA(),t.TgZ(29,"td"),t.YNc(30,Go,3,4,"span",6),t.qZA(),t.TgZ(31,"td"),t.YNc(32,Ko,3,4,"span",6),t.qZA(),t.TgZ(33,"td"),t.YNc(34,Xo,3,4,"span",6),t.qZA(),t.TgZ(35,"td"),t.YNc(36,ei,3,4,"span",6),t.qZA(),t.TgZ(37,"td"),t.YNc(38,oi,3,4,"span",6),t.qZA(),t.TgZ(39,"td"),t.YNc(40,ai,3,4,"span",6),t.qZA()(),t.YNc(41,xi,15,24,"tr",7),t.YNc(42,ki,15,24,"tr",8),t.YNc(43,Vi,16,24,"ng-container",8),t.YNc(44,Qi,21,6,"tr",9),t.qZA()(),t.YNc(45,Ki,2,1,"ng-container",8),t.TgZ(46,"div",10),t.YNc(47,$i,3,1,"ng-container",8),t.TgZ(48,"button",11),t.NdJ("click",function(){return o.goToDIM()}),t._uU(49," Open Loadout in DIM "),t.qZA(),t._UZ(50,"br"),t.TgZ(51,"small"),t._uU(52,"The following two buttons may not work for some at the moment:"),t.qZA(),t._UZ(53,"br"),t.TgZ(54,"button",12),t.NdJ("click",function(){return o.moveItems()}),t._uU(55," Move items to inventory (beta) "),t.qZA(),t.TgZ(56,"button",13),t.NdJ("click",function(){return o.moveItems(!0)}),t._uU(57," Equip Items (beta) "),t.qZA()(),t.TgZ(58,"mat-accordion")(59,"mat-expansion-panel",14)(60,"mat-expansion-panel-header")(61,"mat-panel-title"),t._uU(62," What to do now? "),t.qZA(),t.TgZ(63,"mat-panel-description"),t._uU(64," Detailed Instructions of to get your loadout ready. "),t.qZA()(),t.TgZ(65,"div")(66,"ol")(67,"li"),t._uU(68," Move all related items into your inventory "),t.YNc(69,Xi,2,0,"span",3),t._uU(70,". "),t.qZA(),t.YNc(71,na,2,1,"ng-container",8),t.YNc(72,Ha,3,1,"li",3),t.ALo(73,"count"),t.YNc(74,Xa,5,2,"li",3),t.qZA()()(),t.TgZ(75,"mat-expansion-panel",14)(76,"mat-expansion-panel-header")(77,"mat-panel-title"),t._uU(78," Stat overview "),t.qZA(),t.TgZ(79,"mat-panel-description"),t._uU(80," Shows a summary of all the stats and where they come from. "),t.qZA()(),t.TgZ(81,"table",15)(82,"tr")(83,"td",16),t._uU(84,"Stat"),t.qZA(),t.TgZ(85,"td",17),t._uU(86,"1"),t.qZA(),t.TgZ(87,"td",17),t._uU(88,"2"),t.qZA(),t.TgZ(89,"td",17),t._uU(90,"3"),t.qZA(),t.TgZ(91,"td",17),t._uU(92,"4"),t.qZA(),t.TgZ(93,"td",17),t._uU(94,"5"),t.qZA(),t.TgZ(95,"td",17),t._uU(96,"6"),t.qZA(),t.TgZ(97,"td",17),t._uU(98,"7"),t.qZA(),t.TgZ(99,"td",17),t._uU(100,"8"),t.qZA(),t.TgZ(101,"td",17),t._uU(102,"9"),t.qZA(),t.TgZ(103,"td",17),t._uU(104,"10"),t.qZA(),t.TgZ(105,"td"),t._uU(106,"Tiers"),t.qZA()(),t.YNc(107,ns,8,5,"tr",2),t.TgZ(108,"tr",18)(109,"td",16),t._uU(110,"Armor"),t.qZA(),t.TgZ(111,"td"),t._UZ(112,"div",19),t.qZA(),t.TgZ(113,"td",20),t._uU(114,"Stat Mod"),t.qZA(),t.TgZ(115,"td"),t._UZ(116,"div",21),t.qZA(),t.TgZ(117,"td",22),t._uU(118,"Fragments & Mods"),t.qZA(),t.TgZ(119,"td"),t._UZ(120,"div",23),t.qZA()(),t.YNc(121,is,2,1,"ng-container",8),t.qZA()()(),t._UZ(122,"br")(123,"br")),2&e&&(t.xp6(1),t.Q6J("ngIf",o.mayAnyItemBeBugged),t.xp6(21),t.Q6J("ngForOf",null==o.element?null:o.element.items),t.xp6(1),t.Q6J("ngIf",o.showGenericClassItemRow&&o.config_assumeClassItemMasterworked),t.xp6(1),t.Q6J("ngIf",o.showGenericClassItemRow&&!o.config_assumeClassItemMasterworked),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.statsNoMods),t.xp6(5),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Mobility]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Resilience]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Recovery]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Discipline]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Intellect]),t.xp6(2),t.Q6J("ngIf",0!==o.configValues[o.ArmorStat.Strength]),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.mods),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.mods),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.artifice),t.xp6(1),t.Q6J("ngVar",null==o.element?null:o.element.stats),t.xp6(1),t.Q6J("ngVar",o.calculateRequiredMasterworkCost()),t.xp6(2),t.Q6J("ngVar",o.buildItemIdString(o.element)),t.xp6(22),t.Q6J("ngIf",o.config_assumeClassItemMasterworked),t.xp6(2),t.Q6J("ngVar",o.getItemsThatMustBeMasterworked()),t.xp6(1),t.Q6J("ngIf",(null==o.element?null:o.element.mods).length>0&&t.xi3(73,23,null==o.element?null:o.element.mods,o.StatModifier.NONE)<5),t.xp6(2),t.Q6J("ngIf",o.config_enabledMods.length>0),t.xp6(33),t.Q6J("ngForOf",o.armorStatIds),t.xp6(14),t.Q6J("ngVar",null==o.element?null:o.element.exotic))},dependencies:[I.sg,I.O5,st.lW,pt.gM,St.Hw,wt.Ye,ct.pp,ct.ib,ct.yz,ct.yK,ct.u4,co.Ou,te.i3,zt,Co,ge,_e,I.JJ,Ae],styles:[".element-icon[_ngcontent-%COMP%]{width:22px}.element-icon-mini[_ngcontent-%COMP%]{height:12px}.item-loading-spinner[_ngcontent-%COMP%]{width:22px;height:22px;margin-bottom:6px}.item-icon[_ngcontent-%COMP%]{width:22px}.item-icon-overlay[_ngcontent-%COMP%]{width:22px;margin-left:-22px}.item-icon-container[_ngcontent-%COMP%]{position:relative;contain:layout paint style;box-sizing:border-box;width:var(--item-size);transition:opacity .2s,transform .2s;margin-top:-4px}.item-icon-masterwork-overlay[_ngcontent-%COMP%]{pointer-events:none;box-sizing:border-box;top:-1px;left:-1px;border-width:0;height:24px;width:24px;position:absolute;background-repeat:no-repeat;background-position:center;background-size:22px 22px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAJgklEQVR4AWI8t87oBYCd8rBuGAZi6N1JUQbIrJkiY6bM4EoE1EHvqb+WHsPvG5AJU522JQ/znpY03GzJ3YTovcvcVFcO5WbU8eH/OZ8R91B241c6wEzowJUUZnqlXMiZufrJSs1XUjNBUb6OcvUFF8190fzkGxS2J0ChGPQZDnYAQObJWHbNlCvZIXKxqvHN8KBp22SubByb9EKFGM2hzgyNa47vUzvKvnUToHPOINMFHG6Oo6hb6lhmMump4wROtxSMee8yjC6YI9jOnBYcGn5TZnTdBMB7d0+HB52AeKEb5QL2hQKx8RLk5IkE6eymz9CJFPJIQKxdWZKO5M1u+gw9kPvVJUjqyAt5Z98OMBAI4igO9x97koAAnSY6YHSaAB2nAiyswTbMq+/HAiHv0+4k3Ww1pOvnOvYews1Ow2rGnldEAAAIAAABACAAAAQAgAAAEAAAAgAgPwACAEAAAKiyAfJ7AXALEgAAAuAU5BMgAADki9j/BQCAlkN459OlNu6v0/V43vsAocOvq9kh1n/LX35h+B6EU9DI8fuVh/D48WMRWv742Qgtf/xshBY+fm1cMQgtefwdI5ffA/a9+frC68ox9M3enehIkvJAAC5D9vs/8F+Z/HugkfXJrOfec6QSJBi6O8IO2znX1zdZro39if/K0B8ftp2Hxxfa/vcu6DO8P5x/AaDrvwj4/uDPJDtjP09+ntDze9L+i4DRSEqwtgoQZ9rL3r9Ye/51L+Pw9tF6YuHFPJ/uWBDk2eXZvfb8YyMAwHvg673Z7AvmSF4POeSHmtDnb0xAD3qzN5gLfHsHIOvhktBJ4vOXJqABvJcZnqs5z54R7FF5ODaRiOkIGcXX+OZG7PqJnh6Ev3uOI52Z7tdRUCbdB6AFXHCDcZ3kkf2fGwEN+HGe+3xcE5yBB3umIvk5JnVIggDtnx/1u27XD5CajhBt8tqj9gMahDSan+7C629sxx6DiGmTcxOF304AwOud/SuABnTsZtNABWfaygUynjR3Ld+/GokZp4TO/JsJsEON1uN7OTEPaO9nVFHhHXizTdcN8Fl6BlER5gHk6lghYV8Tgd31DeCPL2icmhISYGsS9P7R9AErAT9JwlWCnuyFsmRuEQurKcBuqyBB72WkXtfmTCD7Au4a4/H7yYAl0N9VY0eERBqRr+Ov51yqCkTEYuuqjL4A+D4p1nvazLzOncHLt1dByhIwqpsHDzcShpIEkM4HZ5+zDEtoRLoKAgrwvwF41/WuAeg+z/1hDzk6VyGPkYW8aLfwarEwr0RJCDr/LUm4+42N8WX6z76Am3R9RoIkGGDvRN7i677TupIhqVZI7vmzPnr+1xLgwT6Bek6QtOE89rMmAGk6d8PhaG9ghSOgeLaAW1FFmYz9viLitcgBCFAgQ2dJ6dcEyLvcKxMuH2za3wW7AeOpqh/k6raz9l49XOIlQozX6pNwNCDnfde6Ckfb2SdeSejLUCXp+L3SPyAlj9FghVVHWV2etlVQ482MNfBHzwe4igSAj7T+4VnmtfdvwBJ5dxoXay/6hrc5gqrnyQCzX5H3fHYVhNd35eOrIWD4zDjZG2ntSmt8CpKTzCAnSEmp6Y7TDthyE9vbjhz7OOYAODg3THqfwEmMIJ29f1TaDwkX+8ckTCf8JAl6EjBviFo70m7v0vtTdD72EqzNgjwIgCJBr+aMRoTzbQMxzBlHIoY5JFCrA9xIZedIZLzZiwScpe1ij/vLyDu8b9p5IH2/V/4hfg+SGIUHr7oSAVhIwgbwIALpgYgLcvokvLU9gfsmgv+37117brJ90PrlHKAtWY24OWLO5/WORGWYAyJeQy8fjceHoOYz5gkTLeAPgL7YU57mHzRBQwA2Cff+5L3s1e9kn8Cuy1hAf9D/EN5YYySVKyQo4tyNSog6XucApWOZeA+Vz6UMNaXotLEiCZsgY4M9KVc/9lmBffwNHSonyQp1H/kpknDEiFeM/U2UybWRmcuEe5IcSPgAqOuQB2b3OiKBMrLumzy33dzy86HG84Z0KCtp/wL4kc7NfFdEDIucK9em8eskRl3q4bUAYc6YXalZJue6/LwkoClD9cYsP5G8d5pkT/U+Cfdd5gpI4jn2EL87eEQiID5tboPq9e+rBLvOA47D/doGj6+lKJpiQC+88WDP33h8JMADL36naIUYJYocsO+NGLOIAJJEjJnWhx7fyM0obAXLta7hmjxfp3dB5IF3AvRJwL3tzG3cjKJ8PkncBPgBocPyNXYEHAkI/md8CFA+eu8/jMiOVc1lpQRBEq38rKTNN/khkJHJXtjE8TW8T50fJO6RxvXaOSBer1j594Rjf5HfNyMSCCFoR43HBtKsirSFSCXILrh/G1p0vRdVSX4vdJvEkZYK+EVu4W0qtluCYtvGHq89MQImAApsLUHniBC0cbjXuclXcvR+o2Dq9ThXzhl3AtCcoabnHPBRdL1vCEwR30hQRAw985hwAZR1IyVcJ3o8p97HqSnE0xz1zpszAfgvSKm634e5tf9HVfaOGNcTJwLiUye2BJrnSk5OEiVZ3unv/7o/zvLT/sGshRy8i4hdyVtvk6mlaNoz4f6/dGvJkRqKgVXuDyuWLLkSZ+CiXIQVZ2CF0h0XbblkRU+hESIjq+yqZ2emJtKbZNK54vlfUBRAgl1A0BUuiyAvmdo/ff/x7QsZF5PsYY2uKw20EKA1NLpuzaNnBmddSCIZqrxIz2ydiEpprucWzrk8WzrZAGQQ5LyL4hJCqhCQ+zOVLFP5Cslzrc88KeGk0LWam1mSprc196WeH8mY/QZcngWxZ3/Y9fhsiiRjcpCzdKjhHSTHqDnCdatee/wFzF40+ph85GP9Ht7969BGjXlj0nBjbkoZJBPAbv+WB2sqWitvZXLrkrGprgluPsf5HvBr+/l1CpD4+8F/4NdnIreI64MMgFf0PUrhDRE3FjLuYLy4y9184Z1eY73w6rr7e2bNu4gvBE9fim7ftEOZkJ5I7TfkY1M+oHyiMF/R9YbcNzW3QfuLk/leIzXWLM/cgcp19FzCemU6cIz/MB9890UWjBGadM7N9QMtlCqqJiFwOjUhdaDQXQCdEwNOpzhYwMpBDrfcFpEXIsjiGJw+9jqidHo7O3+3QVO7+QpIf7ji9cbst7ogrVf8UXTDBslUgkxCCSilwjFdSAkBkSo1EcjSIBXWWvsN9SxF5ebWH3woEIS629sLNhsPabYekYTY/VR0znB/jBdcErKAavL8+A1ICXvgoqroDgAAAABJRU5ErkJggg==)}.negative[_ngcontent-%COMP%]{color:#f08080}.positive[_ngcontent-%COMP%]{color:#6495ed}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{text-align:right}table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:not(:last-child) td[_ngcontent-%COMP%]{border-bottom:rgba(240,248,255,.08) solid .5px}.result-total-gear[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:aliceblue solid 1px!important}.result-total-all[_ngcontent-%COMP%] > td[_ngcontent-%COMP%], .result-total-gear[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]{border-top:aliceblue double}.buttonContainer[_ngcontent-%COMP%]{margin-top:10px;margin-bottom:10px}.buttonContainer[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:not(:last-of-type){margin-right:6px;margin-bottom:3px}.result-total[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{position:relative;padding-right:14px}.statIcon[_ngcontent-%COMP%]{position:absolute;height:14px;margin-left:2px;top:3px}.item-info-menu-btn[_ngcontent-%COMP%]{height:22px!important;width:22px!important;line-height:22px!important;top:-4px;left:-4px}.item-info-menu-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:22px}.item-moved-icon[_ngcontent-%COMP%]{color:#7fffd4}.report-problem-icon[_ngcontent-%COMP%]{color:#f08080}.invalid-item-box[_ngcontent-%COMP%]{text-align:center;margin-right:auto;margin-left:auto;width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content;font-size:15px;line-height:20px}.text-centered[_ngcontent-%COMP%]{text-align:center!important}.specificStatTable[_ngcontent-%COMP%]{border-collapse:separate;border-spacing:0 0}.highlight-row[_ngcontent-%COMP%]{background-color:#6e6e6e21}tr.legend[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-top:3px}.tier-column[_ngcontent-%COMP%]{min-width:27px}.energy-bar[_ngcontent-%COMP%]{width:25px;height:10px;border:white solid 2px;position:relative}.energy-bar.normal[_ngcontent-%COMP%]{background-color:#fff}.energy-bar.mod[_ngcontent-%COMP%]{background-color:gray;border:white ridge 2px}.energy-bar.config[_ngcontent-%COMP%]{background-color:#a3b1c2;border:white ridge 2px}.energy-bar.over100[_ngcontent-%COMP%]{border-color:#ff5e5e;width:10px}.item-stat-container[_ngcontent-%COMP%]{position:relative}.item-stat-bonus[_ngcontent-%COMP%]{position:absolute;right:20px;font-size:x-small}.item-name-mw[_ngcontent-%COMP%]{text-decoration:underline;-webkit-text-decoration-color:#ffbc00;text-decoration-color:#ffbc00}.text-mw[_ngcontent-%COMP%], .item-stat-bonus[_ngcontent-%COMP%]{color:#ffd86a}app-armor-perk-icon[_ngcontent-%COMP%]{width:23px;height:23px;position:absolute;top:-14px;left:0}td.sum-tiers[_ngcontent-%COMP%]{text-align:center!important;border-left:#6e6e6e solid 1px}.currency-icon[_ngcontent-%COMP%]{width:16px;position:absolute;left:0}.currency-icon-container[_ngcontent-%COMP%]{position:relative;padding-left:19px;padding-right:10px}.icon-column[_ngcontent-%COMP%]{padding-left:4px}"]}),n})();var we=_(3238),ss=_(8729);function rs(n,i){1&n&&(t.TgZ(0,"mat-icon",6),t._uU(1,"add_circle_outline "),t.qZA())}function ls(n,i){1&n&&(t.TgZ(0,"mat-icon",7),t._uU(1,"remove_circle_outline "),t.qZA())}function cs(n,i){1&n&&(t.TgZ(0,"mat-icon",8),t._uU(1,"change_history "),t.qZA())}function ms(n,i){if(1&n&&(t.TgZ(0,"mat-list-item"),t.YNc(1,rs,2,0,"mat-icon",2),t.YNc(2,ls,2,0,"mat-icon",3),t.YNc(3,cs,2,0,"mat-icon",4),t.TgZ(4,"div",5)(5,"p"),t._uU(6),t.qZA()()()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",0===e.type),t.xp6(1),t.Q6J("ngIf",1===e.type),t.xp6(1),t.Q6J("ngIf",2===e.type),t.xp6(3),t.Oqu(e.text)}}function ds(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"div",1),t._uU(2),t.qZA(),t.YNc(3,ms,7,4,"mat-list-item",0),t.TgZ(4,"mat-list-item"),t._UZ(5,"br")(6,"mat-divider"),t.qZA(),t.BQk()),2&n){const e=i.$implicit;t.xp6(2),t.AsE("",e.version,", released on ",e.date,""),t.xp6(1),t.Q6J("ngForOf",e.entries)}}let Ze=(()=>{class n{constructor(e){this.changelog=e}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(se))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-changelog-list"]],decls:2,vars:1,consts:[[4,"ngFor","ngForOf"],["mat-subheader","",1,"title"],["mat-list-icon","","matTooltip","A new function has been added.",4,"ngIf"],["mat-list-icon","","matTooltip","A function has been removed.",4,"ngIf"],["mat-list-icon","","matTooltip","Something has been modified.",4,"ngIf"],["mat-line","",1,"e"],["mat-list-icon","","matTooltip","A new function has been added."],["mat-list-icon","","matTooltip","A function has been removed."],["mat-list-icon","","matTooltip","Something has been modified."]],template:function(e,o){1&e&&(t.TgZ(0,"mat-list"),t.YNc(1,ds,7,3,"ng-container",0),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngForOf",o.changelog.changelogData))},dependencies:[I.sg,I.O5,pt.gM,St.Hw,Gt.i$,Gt.Tg,we.X2,Gt.Nh,Gt.gs,ss.d],styles:["[_nghost-%COMP%] .mat-line{word-wrap:break-word!important;white-space:pre-wrap!important}[_nghost-%COMP%] .mat-list .mat-list-item{height:initial!important}.title[_ngcontent-%COMP%]{text-decoration:underline;font-size:20px}.e[_ngcontent-%COMP%] > p[_ngcontent-%COMP%]:first-child{padding-top:12px}"]}),n})();function us(n,i){if(1&n&&(t.TgZ(0,"li"),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Oqu(e)}}let ps=(()=>{class n{constructor(){this.knownIssues=["When you click buttons on the page too fast are able to select an invalid state with no results. Just undo your changed settings. And be patient - the calculation is an expensive task.","Sometimes duplicate results are given. This happens when the inventory got updated twice (Race Condition). Only reported once, and not really a problem."],this.changelog=ye}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-help-page"]],decls:116,vars:1,consts:[["id","help-container"],["color","primary","fxShow","false","fxShow.lt-md","true","mat-raised-button","","routerLink","/",1,"returnbutton"],["href","https://twitter.com/MijagoCoding/","target","_blank","matTooltip","Birb App"],["alt","Me on twitter","src","assets/logo-twitter.png",1,"logo-twitter"],["href","https://ko-fi.com/mijago","target","_blank","matTooltip","If you like my work, you can always buy me a coffee!"],["alt","Ko-Fi","src","assets/logo-kofi.png",1,"logo-twitter"],["href","http://discord.d2armorpicker.com/","target","_blank","matTooltip","Visit me at the development & support discord."],["alt","Discord","src","assets/logo-discord.png",1,"logo-twitter"],["href","https://github.com/Mijago/D2-Gear-Calculator","target","_blank"],["href","https://mijago.github.io/D2GearCalculator/","target","_blank"],["href","https://twitter.com/MijagoCoding/","target","_blank"],["href","https://ko-fi.com/mijago","target","_blank"],[1,"preview-image-container"],["alt","Preview of the results table","src","assets/armor-images/preview_result_details.png",1,"preview-image"],["fxLayout","row","id","armor-image-container"],["src","assets/armor-images/kabrs_battlecage.png"],["src","assets/armor-images/lightkin_gauntlets.png"],["src","assets/armor-images/phobos_warden_helm.png"],["src","assets/armor-images/wild_hunt_vest.png"],[4,"ngFor","ngForOf"],[1,"changelog-table-container"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0)(1,"a",1),t._uU(2," Return to D2ArmorPicker "),t.qZA(),t.TgZ(3,"mat-card")(4,"mat-card-title")(5,"span"),t._uU(6,"About D2ArmorPicker "),t.TgZ(7,"small"),t._uU(8," by Mijago"),t.qZA(),t.TgZ(9,"a",2),t._UZ(10,"img",3),t.qZA(),t.TgZ(11,"a",4),t._UZ(12,"img",5),t.qZA(),t.TgZ(13,"a",6),t._UZ(14,"img",7),t.qZA()()(),t.TgZ(15,"mat-card-content"),t._uU(16," D2ArmorPicker (or short D2AP) is a small web-app to quickly find armor that fits your desired stat requirements. It uses the armor in your vault, inventory and postmaster, calculates every possible variation and shows only those that fulfill the given requirements. "),t._UZ(17,"br")(18,"br"),t._uU(19," As I raided a lot and I mainly play meme builds, I wanted to be able to switch exotics and have decent stats without being a burden on my team. That's why I developed the "),t.TgZ(20,"a",8),t._uU(21,"first version of this tool"),t.qZA(),t._uU(22," in Python. After a few days I started to translate this tool "),t.TgZ(23,"a",9),t._uU(24,"into a webpage"),t.qZA(),t._uU(25,". My friends liked it, but it didn't have API access. Thus I created the first version of D2ArmorPicker, and after people started using and liking it, I started to completely rewrite it - that's Version\xa02! "),t._UZ(26,"br")(27,"br"),t._uU(28," I keep updating and improving this tool, but beware that it takes a bit, as I work on it on my spare time. Feel free to follow me on Twitter "),t.TgZ(29,"a",10),t._UZ(30,"img",3),t.qZA(),t._uU(31,", I occasionally post updates there. If you like my tools and want to support me, head to "),t.TgZ(32,"a",11),t._uU(33,"ko-fi.com"),t.qZA(),t._uU(34," and buy me a coffee! \u2764 "),t.qZA()(),t.TgZ(35,"mat-card")(36,"mat-card-title"),t._uU(37," How do I use D2ArmorPicker? "),t.qZA(),t.TgZ(38,"mat-card-content"),t._uU(39," Follow these few steps: "),t.TgZ(40,"ol")(41,"li"),t._uU(42,"Login. You already did this!"),t.qZA(),t.TgZ(43,"li"),t._uU(44," [Optional] Pick an exotic you want to use. The tool will only display results for this exotic. You can always undo this. "),t.qZA(),t.TgZ(45,"li"),t._uU(46," [Optional] Select additional mods/fragments that give a bonus (or penalty). These are important if you want certain stat combinations even if you have penalties on your gear. "),t.qZA(),t.TgZ(47,"li"),t._uU(48," Select the stat distribution you seek. This is the heart of D2ArmorPicker. You just click 100 recovery and it will display you builds that have 100 recovery. "),t.TgZ(49,"i"),t._uU(50,"Note that it automatically adds stat mods if necessary."),t.qZA()(),t.TgZ(51,"li"),t._uU(52," Now look to the result table. On a normal desktop it should be on the right, on smaller devices it might move below the configuration. The table lists multiple results and you can sort it by your requirements."),t._UZ(53,"br"),t.TgZ(54,"b"),t._uU(55,"Click"),t.qZA(),t._uU(56," on an entry to open look the detailed view: "),t.TgZ(57,"div",12),t._UZ(58,"img",13),t.qZA(),t._uU(59," The example above shows a build that utilizes Dunemarchers and a zero-waste-build. To achieve it, I have to move all the items in my inventory and equip them. After this, I "),t.TgZ(60,"i"),t._uU(61,"masterwork"),t.qZA(),t._uU(62," them and "),t.TgZ(63,"i"),t._uU(64,"add the mods"),t.qZA(),t._uU(65," as the table displays them: "),t.TgZ(66,"ul")(67,"li")(68,"b"),t._uU(69,"Discipline:"),t.qZA(),t._uU(70," One major mod, one minor mod;"),t.qZA(),t.TgZ(71,"li")(72,"b"),t._uU(73,"Intellect:"),t.qZA(),t._uU(74," One major mod, one minor mod;"),t.qZA(),t.TgZ(75,"li")(76,"b"),t._uU(77,"Strength:"),t.qZA(),t._uU(78," One major mod;"),t.qZA(),t.TgZ(79,"li"),t._uU(80,"I also add Powerful Friends and Radiant Light, as I chose them in the configuration."),t.qZA()()()()()(),t.TgZ(81,"mat-card")(82,"mat-card-title"),t._uU(83," Where can I grind high stat armor? "),t.qZA(),t.TgZ(84,"mat-card-content"),t._uU(85," There are many spots that give you mediocre armor, but for the really good builds you need the correct armor. Here I provide a list of high-stat armor sources. It may not be complete, but a good starting point. "),t.TgZ(86,"i"),t._uU(87,"Last updated February 8, 2022."),t.qZA(),t.TgZ(88,"ul")(89,"li"),t._uU(90," Farm legendary Dares!"),t.qZA(),t.TgZ(91,"li"),t._uU(92," Clear Pit of Heresy Dungeon, the boss drop guarantees two stats to be 16 (or higher)."),t.qZA(),t.TgZ(93,"li"),t._uU(94," Farm a bunch of Spoils, go into Master Vault of Glass and buy armor at the final chest."),t.qZA(),t.TgZ(95,"li"),t._uU(96," The list will be extended sometime in Witch Queen!"),t.qZA()(),t._uU(97," Some good armor rolls may look like these: "),t.TgZ(98,"div",14),t._UZ(99,"img",15)(100,"img",16)(101,"img",17)(102,"img",18),t.qZA()()(),t.TgZ(103,"mat-card")(104,"mat-card-title"),t._uU(105,"Known Issues"),t.qZA(),t.TgZ(106,"mat-card-content")(107,"ul"),t.YNc(108,us,2,1,"li",19),t.qZA()()(),t.TgZ(109,"mat-card")(110,"mat-card-title"),t._uU(111,"Changelog"),t.qZA(),t.TgZ(112,"mat-card-content",20),t._UZ(113,"app-changelog-list"),t.qZA()(),t.TgZ(114,"a",1),t._uU(115," Return to D2ArmorPicker "),t.qZA()()),2&e&&(t.xp6(108),t.Q6J("ngForOf",o.knownIssues))},dependencies:[I.sg,_t.xw,M.b8,st.zs,Y.a8,Y.dn,Y.n5,pt.gM,ot.yS,Ze],styles:["#help-container[_ngcontent-%COMP%]{max-width:800px;margin-left:auto;margin-right:auto}.changelog-table-container[_ngcontent-%COMP%]{max-height:700px;overflow-y:scroll}mat-card[_ngcontent-%COMP%]{margin-bottom:8px}#armor-image-container[_ngcontent-%COMP%]{overflow:auto}#armor-image-container[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]:not(:last-of-type){margin-right:20px}#armor-image-container[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]{max-height:300px}.preview-image-container[_ngcontent-%COMP%]{max-width:600px}.preview-image[_ngcontent-%COMP%]{max-width:100%}.returnbutton[_ngcontent-%COMP%]{margin-top:5px;margin-bottom:15px;width:100%}.changelog-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:first-of-type{min-width:80px}.changelog-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:nth-of-type(2){min-width:40px}.changelog-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-top:#6e6e6e solid 1px}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}"]}),n})();var At=_(4006),ee=_(455),Kt=_(3217),Dt=_(811),Pt=_(9549),ne=_(4144);function fs(n,i){if(1&n&&(t.TgZ(0,"th",5),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.hij("\u2206 Tier ",e.differenceTier,"")}}function hs(n,i){if(1&n&&t._UZ(0,"img",9),2&n){const e=t.oxw(3).$implicit;t.MGl("src","https://www.bungie.net/",e.icon,"",t.LSH)}}function xs(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=i.ngVar,o=t.oxw(6).$implicit,a=t.oxw();t.ekj("good",a.differenceTiera.tier),t.xp6(1),t.AsE(" ",e>0?"+":"","",a.formatEntry(o,e)," ")}}function ys(n,i){if(1&n&&(t.TgZ(0,"td"),t.YNc(1,xs,2,6,"span",10),t.qZA()),2&n){const e=t.oxw(2).ngVar,o=t.oxw().ngVar;t.xp6(1),t.Q6J("ngVar",-(e-o))}}function Cs(n,i){if(1&n&&(t.TgZ(0,"td")(1,"span"),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=t.oxw().ngVar,o=t.oxw(5);t.xp6(1),t.ekj("good",o.differenceTiero.tier),t.xp6(1),t.AsE(" (",e>0?"+":"","",t.xi3(3,6,100*e,"1.0-0"),"%) ")}}function Ts(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ys,2,1,"td",6),t.YNc(2,Cs,4,9,"td",6),t.BQk()),2&n){const e=t.oxw(5);t.xp6(1),t.Q6J("ngIf",e.differenceTier!==e.tier),t.xp6(1),t.Q6J("ngIf",e.differenceTier!==e.tier)}}function vs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ts,3,2,"ng-container",7),t.BQk()),2&n){const e=i.ngVar,o=t.oxw().ngVar,a=t.oxw(3);t.xp6(1),t.Q6J("ngVar",a.getPercentageDifference(o,e))}}function bs(n,i){if(1&n&&(t.ynx(0),t._UZ(1,"app-item-icon",11),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("itemHash",e)}}function As(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"td"),t.YNc(2,hs,1,1,"img",8),t._uU(3),t.qZA(),t.TgZ(4,"td"),t._uU(5),t.qZA(),t.YNc(6,vs,2,1,"ng-container",7),t.TgZ(7,"td"),t.YNc(8,bs,2,1,"ng-container",4),t._uU(9),t.qZA(),t.BQk()),2&n){const e=i.ngVar,o=t.oxw(2).$implicit,a=t.oxw();t.xp6(2),t.Q6J("ngIf",o.icon),t.xp6(1),t.hij(" ",o.name," "),t.xp6(2),t.Oqu(a.formatEntry(o,e)),t.xp6(1),t.Q6J("ngVar",a.valueFunction(o,a.differenceTier)),t.xp6(2),t.Q6J("ngForOf",o.overrideIcons),t.xp6(1),t.hij(" ",o.description," ")}}function ws(n,i){if(1&n&&(t.TgZ(0,"tr"),t.YNc(1,As,10,6,"ng-container",7),t.qZA()),2&n){const e=t.oxw().$implicit,o=t.oxw();t.xp6(1),t.Q6J("ngVar",o.valueFunction(e,o.tier))}}function Zs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,ws,2,1,"tr",6),t.BQk()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.Q6J("ngIf",null==e.description||!!e.description[o.characterClass])}}let Os=(()=>{class n{constructor(e,o){this.config=e,this.characterStats=o,this.ArmorStatNames=c.Mi,this.tier=0,this.differenceTier=0,this.stat=c.WB.Mobility,this.entries=[]}get characterClass(){return this.config.readonlyConfigurationSnapshot.characterClass}ngOnInit(){this.entries=this.characterStats.get(c.Mi[this.stat],this.config.readonlyConfigurationSnapshot.characterClass,this.config.readonlyConfigurationSnapshot.selectedModElement,this.config.readonlyConfigurationSnapshot.selectedExotics)}formatEntry(e,o){return o=parseFloat(o.toFixed(2)),e.valueType===mt.Speed?(n=>(Math.round(100*n)/100).toFixed(2)+"m/s")(o):e.valueType===mt.Percentage?`${o}%`:e.valueType===mt.PercentagePerSecond?`${o}%/s`:e.valueType===mt.TimeMMSS?function Ss(n){var i=function gs(n){n=Math.abs(n);var i=Math.floor(n/60),e=Math.floor(n-60*i);return`${i}:${e<10?"0":""}${e}`}(n);return n<0&&(i="- "+i),i}(o):e.valueType===mt.Time?function Ms(n){var i=function _s(n){n=Math.abs(n);var i=Math.floor(10*n%10),e=Math.floor(n/60),o=Math.floor(n-60*e);let a=`${o}s`;return i>0&&(a=`${o}.${i}s`),e>0&&(a=`${e}m ${a}`),a}(n);return n<0&&(i="- "+i),i}(o):o}valueFunction(e,o){return e.values[o]}getPercentageDifference(e,o){return(e-o)/Math.max(1,o)}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(ae))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-stat-cooldown-tooltip"]],inputs:{tier:"tier",differenceTier:"differenceTier",stat:"stat"},decls:13,vars:5,consts:[[1,"tooltip-container"],["colspan","3",1,"exotic-name"],[2,"min-width","50px"],["style","min-width: 50px","colspan","2",4,"ngIf"],[4,"ngFor","ngForOf"],["colspan","2",2,"min-width","50px"],[4,"ngIf"],[4,"ngVar"],[3,"src",4,"ngIf"],[3,"src"],[3,"good","bad",4,"ngVar"],[3,"itemHash"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t._uU(5),t.qZA()(),t.TgZ(6,"tr")(7,"th",2),t._uU(8,"Stat"),t.qZA(),t.TgZ(9,"th",2),t._uU(10),t.qZA(),t.YNc(11,fs,2,1,"th",3),t.qZA(),t.YNc(12,Zs,2,1,"ng-container",4),t.qZA()()()),2&e&&(t.xp6(5),t.AsE("",o.ArmorStatNames[o.stat]," at Tier ",o.tier,""),t.xp6(5),t.hij("Tier ",o.tier,""),t.xp6(1),t.Q6J("ngIf",o.differenceTier!==o.tier),t.xp6(1),t.Q6J("ngForOf",o.entries))},dependencies:[I.sg,I.O5,zt,ge,I.JJ],styles:["[_nghost-%COMP%]{max-width:420px}.tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.exotic-name[_ngcontent-%COMP%]{color:#eedb9e}.good[_ngcontent-%COMP%]{color:#58b458}.bad[_ngcontent-%COMP%]{color:#ff6b6b}table[_ngcontent-%COMP%]{border-collapse:separate;border-spacing:7px 3px}th[_ngcontent-%COMP%]{white-space:nowrap}img[_ngcontent-%COMP%]{width:24px;height:24px;float:left;margin-right:3px}tr[_ngcontent-%COMP%]{line-height:24px}"]}),n})(),ks=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a,this.showToolTip=!0,this.tooltipTier=0,this.tooltipStat=c.WB.Mobility,this.tooltipDifferenceTier=0}ngOnInit(){if(!this.showToolTip)return;const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){if(this._overlayRef&&!this._overlayRef.hasAttached()){const e=this._overlayRef.attach(new re.C5(Os));e.instance.tier=this.tooltipTier,e.instance.differenceTier=this.tooltipDifferenceTier,e.instance.stat=this.tooltipStat}}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Jt.aV),t.Y36(Jt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","statCooldownTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{showToolTip:"showToolTip",tooltipTier:"tooltipTier",tooltipStat:"tooltipStat",tooltipDifferenceTier:"tooltipDifferenceTier",contentTemplate:"contentTemplate"}}),n})();function Es(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-button-toggle",5),t.NdJ("click",function(){const s=t.CHM(e).index,r=t.oxw(2);return t.KtG(r.setValue(s))}),t.TgZ(1,"div",6),t._uU(2),t.qZA()()}if(2&n){const e=i.index,o=t.oxw(2);t.ekj("isFromMod",o.isAddedByConfigMods(e))("mat-button-toggle-checked",o.selectedTier>=e)("not-checked",o.selectedTier{class n{constructor(){this.TierRange=new Array(11),this.allowExactStats=!1,this.stat=c.WB.Mobility,this.statsByMods=0,this.maximumAvailableTier=10,this.selectedTier=0,this.locked=!1,this.selectedTierChange=new t.vpe,this.lockedChange=new t.vpe}setValue(e){e<=this.maximumAvailableTier&&(this.selectedTier=e,this.selectedTierChange.emit(e))}setValueMob(e){let o=parseInt(e.target.value);o=Math.min(Math.max(o,0),100),this.setValue(o/10)}isAddedByConfigMods(e){return e>0&&(this.selectedTier-e>=0&&this.selectedTier-e{class n{constructor(){this.ArmorStatNames=c.Mi,this.ArmorStatIconUrls=c.lp,this.stat=c.WB.Mobility}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-stat-icon"]],inputs:{stat:"stat"},decls:2,vars:2,consts:[[1,"statContainerWrapper"],[1,"dialogStatIcon",3,"src","alt"]],template:function(e,o){1&e&&(t.TgZ(0,"span",0),t._UZ(1,"img",1),t.qZA()),2&e&&(t.xp6(1),t.Q6J("src",o.ArmorStatIconUrls[o.stat],t.LSH)("alt",o.ArmorStatNames[o.stat]))},styles:[".dialogStatIcon[_ngcontent-%COMP%]{position:relative;width:25px;margin-right:3px;top:4px}"]}),n})();function qs(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t._UZ(4,"app-stat-icon",15),t.qZA(),t.TgZ(5,"td")(6,"app-stat-tier-selection",16),t.NdJ("selectedTierChange",function(a){const r=t.CHM(e).$implicit,d=t.oxw();return t.KtG(d.setSelectedTier(r.value,a))})("lockedChange",function(a){const r=t.CHM(e).$implicit,d=t.oxw();return t.KtG(d.setLockState(r.value,a))}),t.qZA()()()}if(2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.hij(" ",e.name," "),t.xp6(2),t.Q6J("stat",e.value),t.xp6(2),t.Q6J("stat",e.value)("allowExactStats",o.config_allowExactStats)("statsByMods",o.statsByMods[e.value])("maximumAvailableTier",o.maximumPossibleTiers[e.value])("selectedTier",o.minimumStatTiers[e.value].value)("locked",o.minimumStatTiers[e.value].fixed)}}function Fs(n,i){1&n&&t._UZ(0,"app-stat-icon",19),2&n&&t.Q6J("stat",i.$implicit)}function Js(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",17),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.useStatPreset(s))}),t.YNc(1,Fs,1,1,"app-stat-icon",18),t.qZA()}if(2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function Ls(n,i){1&n&&t._UZ(0,"app-stat-icon",19),2&n&&t.Q6J("stat",i.$implicit)}function Ys(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",17),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.useStatPreset(s))}),t.YNc(1,Ls,1,1,"app-stat-icon",18),t.qZA()}if(2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function Ie(n){let i=0;for(let e of n)i+=Math.pow(10,6-e);return i}let Bs=(()=>{class n{constructor(e,o){this.config=e,this.inventory=o,this.minimumStatTiers=H(1),this.maximumPossibleTiers=[10,10,10,10,10,10],this.statsByMods=[0,0,0,0,0,0],this._statCombo4x100=[],this._statCombo3x100=[],this.config_zero_waste=!1,this.config_mod_strategy=K.w.None,this.config_reduce_waste=!1,this.config_allowExactStats=!1,this.ngUnsubscribe=new R.xQ,this.stats=Object.keys(c.WB).filter(a=>!isNaN(Number(a))).map(a=>({name:c.WB[a],value:+a}))}ngOnInit(){this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(e=>{const o=[0,0,0,0,0,0];for(let a of e.enabledMods)for(let s of N.F[a].bonus)o[s.stat]+=s.value/10;this.statsByMods=o,this.minimumStatTiers=e.minimumStatTiers,this.config_zero_waste=e.onlyShowResultsWithNoWastedStats,this.config_mod_strategy=e.modOptimizationStrategy,this.config_reduce_waste=e.tryLimitWastedStats,this.config_allowExactStats=e.allowExactStats}),this.inventory.armorResults.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(e=>{const o=e.maximumPossibleTiers||[10,10,10,10,10,10];console.log("d.maximumPossibleTiers",o),o.filter(a=>0==a).length<6&&(this.maximumPossibleTiers=o),this._statCombo3x100=(e.statCombo3x100||[]).sort((a,s)=>Ie(s)-Ie(a)),this._statCombo4x100=e.statCombo4x100||[]})}setSelectedTier(e,o){this.config.modifyConfiguration(a=>{a.minimumStatTiers[e].value=o})}clearStatSelection(){this.config.modifyConfiguration(e=>{for(let o=0;o<6;o++)e.minimumStatTiers[o]={fixed:!1,value:0}})}useStatPreset(e){0!=e.filter(o=>10!=this.config.readonlyConfigurationSnapshot.minimumStatTiers[o].value).length&&this.config.modifyConfiguration(o=>{for(let a of e)o.minimumStatTiers[a].value=10})}setLockState(e,o){this.config.modifyConfiguration(a=>{a.minimumStatTiers[e].fixed=o})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}setModOptimizationStrategy(){this.config.modifyConfiguration(e=>{e.modOptimizationStrategy=this.config_mod_strategy})}toggleReduceWaste(){this.config.modifyConfiguration(e=>{e.tryLimitWastedStats=!this.config_reduce_waste})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(Tt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-stat-selection"]],decls:43,vars:12,consts:[[4,"ngFor","ngForOf"],["id","tierSelectButtonContainer"],[1,"tierSelectButton"],["mat-stroked-button","","color","warn","id","clearStatButton",3,"click"],["mat-stroked-button","","aria-label","Select builds with three stats at tier 10.",1,"selectStatDistributionButton",3,"matMenuTriggerFor","disabled"],["menu",""],["menu1","matMenu"],["mat-menu-item","",3,"click",4,"ngFor","ngForOf"],["mat-stroked-button","","aria-label","Select builds with four stats at tier 10.",3,"matMenuTriggerFor","disabled"],["menu2","matMenu"],[3,"ngModel","ngModelChange","change"],["matTooltip","Fast. Will result in good and fast results. Some better results *may* be skipped.",3,"value"],["matTooltip","Slower. Reduces the amount of used mods. This means that it will try to give you 4 mods instead of 5 whenever possible.",3,"value"],["matTooltip","Slower. Reduces the total cost of mods. This will result in less Intellect mods, for example.",3,"value"],["color","primary",3,"checked","change"],[3,"stat"],[3,"stat","allowExactStats","statsByMods","maximumAvailableTier","selectedTier","locked","selectedTierChange","lockedChange"],["mat-menu-item","",3,"click"],["class","dialogStatIcon",3,"stat",4,"ngFor","ngForOf"],[1,"dialogStatIcon",3,"stat"]],template:function(e,o){if(1&e&&(t.TgZ(0,"table"),t.YNc(1,qs,7,8,"tr",0),t.qZA(),t.TgZ(2,"span",1)(3,"span",2)(4,"button",3),t.NdJ("click",function(){return o.clearStatSelection()}),t._uU(5,"Clear"),t.qZA()(),t.TgZ(6,"span",2)(7,"button",4)(8,"mat-icon"),t._uU(9,"expand_more"),t.qZA(),t._uU(10," Select 3x T10 Builds "),t.qZA(),t.TgZ(11,"mat-menu",5,6),t.YNc(13,Js,2,1,"button",7),t.qZA()(),t.TgZ(14,"span",2)(15,"button",8)(16,"mat-icon"),t._uU(17,"expand_more"),t.qZA(),t._uU(18," Select 4x T10 Builds "),t.qZA(),t.TgZ(19,"mat-menu",null,9),t.YNc(21,Ys,2,1,"button",7),t.qZA()()(),t._UZ(22,"br")(23,"br"),t.TgZ(24,"div")(25,"div")(26,"b"),t._uU(27,"Mod optimization strategy:"),t.qZA()(),t.TgZ(28,"div"),t._uU(29,"You can choose if the algorithm should keep an eye on amount or the cost of mods."),t.qZA(),t.TgZ(30,"div"),t._uU(31,"These settings are extremely expensive when paired with the reduced waste feature."),t.qZA(),t.TgZ(32,"mat-button-toggle-group",10),t.NdJ("ngModelChange",function(s){return o.config_mod_strategy=s})("change",function(){return o.setModOptimizationStrategy()}),t.TgZ(33,"mat-button-toggle",11),t._uU(34,"No extra logic (fast)"),t.qZA(),t.TgZ(35,"mat-button-toggle",12),t._uU(36,"Fewer mods, high cost (slow)"),t.qZA(),t.TgZ(37,"mat-button-toggle",13),t._uU(38,"Many mods, low cost (slow)"),t.qZA()()(),t._UZ(39,"br"),t.TgZ(40,"div")(41,"mat-slide-toggle",14),t.NdJ("change",function(){return o.toggleReduceWaste()}),t._uU(42," Add mods to reduce wasted stats (slower) "),t.qZA()()),2&e){const a=t.MAs(12),s=t.MAs(20);t.xp6(1),t.Q6J("ngForOf",o.stats),t.xp6(6),t.Q6J("matMenuTriggerFor",a)("disabled",0===o._statCombo3x100.length),t.xp6(6),t.Q6J("ngForOf",o._statCombo3x100),t.xp6(2),t.Q6J("matMenuTriggerFor",s)("disabled",0===o._statCombo4x100.length),t.xp6(6),t.Q6J("ngForOf",o._statCombo4x100),t.xp6(11),t.Q6J("ngModel",o.config_mod_strategy),t.xp6(1),t.Q6J("value",0),t.xp6(2),t.Q6J("value",1),t.xp6(2),t.Q6J("value",2),t.xp6(4),t.Q6J("checked",o.config_reduce_waste)}},dependencies:[I.sg,At.JJ,At.On,st.lW,ee.Rr,pt.gM,St.Hw,Kt.VK,Kt.OP,Kt.p6,Dt.A9,Dt.Yi,Ns,fe],styles:["#tierSelectButtonContainer[_ngcontent-%COMP%] > .tierSelectButton[_ngcontent-%COMP%]:not(:last-child){margin-right:5px}.dialogStatIcon[_ngcontent-%COMP%]{height:35px}.warn[_ngcontent-%COMP%]{background-color:#8b0000;padding-left:15px;padding-right:15px}"]}),n})();function Vs(n,i){if(1&n&&(t.TgZ(0,"div",4,5),t._UZ(2,"img",6),t.TgZ(3,"span",7),t._uU(4),t.qZA()()),2&n){const e=t.oxw().ngVar,o=t.oxw();t.xp6(2),t.Q6J("src",o.artificeUrl,t.LSH),t.xp6(2),t.hij("\xd7",e,"")}}function Qs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Vs,5,2,"div",3),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function Hs(n,i){if(1&n&&(t.TgZ(0,"div",9,5),t._UZ(2,"img",10),t.TgZ(3,"span",11),t._uU(4),t.qZA()()),2&n){const e=t.oxw().ngVar,o=t.oxw().$implicit,a=t.oxw().$implicit,s=t.oxw();t.Q6J("matTooltip",s.getStatName(a)),t.xp6(2),t.Gre("modIcon modIcon_",s.getStatName(a),""),t.ekj("minor",1===o),t.Q6J("src",s.ModUrl[o+3*a],t.LSH),t.xp6(1),t.ekj("minor",1===o),t.xp6(1),t.hij("\xd7",e,"")}}function Ws(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Hs,5,10,"div",8),t.BQk()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0)}}function js(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ws,2,1,"ng-container",1),t.ALo(2,"count"),t.BQk()),2&n){const e=i.$implicit,o=t.oxw().$implicit,a=t.oxw();t.xp6(1),t.Q6J("ngVar",t.xi3(2,1,a.mods,e+3*o))}}function Gs(n,i){if(1&n&&(t.ynx(0),t.YNc(1,js,3,4,"ng-container",2),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngForOf",e.modTypeIndex)}}const Se={[c.iV.MINOR_MOBILITY]:"https://www.bungie.net/common/destiny2_content/icons/a5d9a778feddb2a9036588490a4818b0.png",[c.iV.MAJOR_MOBILITY]:"https://www.bungie.net/common/destiny2_content/icons/db4b34c79c834d3cf36b592c688ed22d.png",[c.iV.ARTIFICE_MOBILITY]:"https://www.bungie.net/common/destiny2_content/icons/a5d9a778feddb2a9036588490a4818b0.png",[c.iV.MINOR_RESILIENCE]:"https://www.bungie.net/common/destiny2_content/icons/1b4eec255df03ae088db1eb251654316.png",[c.iV.MAJOR_RESILIENCE]:"https://www.bungie.net/common/destiny2_content/icons/db6c438e9ff1a21b03a1f0488560e6a3.png",[c.iV.ARTIFICE_RESILIENCE]:"https://www.bungie.net/common/destiny2_content/icons/1b4eec255df03ae088db1eb251654316.png",[c.iV.MINOR_RECOVERY]:"https://www.bungie.net/common/destiny2_content/icons/51d46295defdf93d77a62e3e895df5cd.png",[c.iV.MAJOR_RECOVERY]:"https://www.bungie.net/common/destiny2_content/icons/f42cc43389f147d25f0ee2946f1ff1bd.png",[c.iV.ARTIFICE_RECOVERY]:"https://www.bungie.net/common/destiny2_content/icons/51d46295defdf93d77a62e3e895df5cd.png",[c.iV.MINOR_DISCIPLINE]:"https://www.bungie.net/common/destiny2_content/icons/9ba335d570610d1ae9cffa071d5bcb8e.png",[c.iV.MAJOR_DISCIPLINE]:"https://www.bungie.net/common/destiny2_content/icons/e54f6af6a4577e4d66396e5285bb73c0.png",[c.iV.ARTIFICE_DISCIPLINE]:"https://www.bungie.net/common/destiny2_content/icons/9ba335d570610d1ae9cffa071d5bcb8e.png",[c.iV.MINOR_INTELLECT]:"https://www.bungie.net/common/destiny2_content/icons/a8808e7528b16474f8c9c65b4e53b52b.png",[c.iV.MAJOR_INTELLECT]:"https://www.bungie.net/common/destiny2_content/icons/2399dff2dc6952ea65c2b8c594d00658.png",[c.iV.ARTIFICE_INTELLECT]:"https://www.bungie.net/common/destiny2_content/icons/a8808e7528b16474f8c9c65b4e53b52b.png",[c.iV.MINOR_STRENGTH]:"https://www.bungie.net/common/destiny2_content/icons/6b45221fccade87ee39f3a03efc6e9b9.png",[c.iV.MAJOR_STRENGTH]:"https://www.bungie.net/common/destiny2_content/icons/66714f030b79a1517c657f1378216cca.png",[c.iV.ARTIFICE_STRENGTH]:"https://www.bungie.net/common/destiny2_content/icons/6b45221fccade87ee39f3a03efc6e9b9.png"};let zs=(()=>{class n{constructor(){this.artificeUrl=c.X9[c.Pn.SlotArtifice],this.modIndex=[0,1,2,3,4,5],this.modTypeIndex=[1,2],this.ModUrl=Se,this.mods=[],this.artifice=[]}getStatName(e){return c.Mi[e]}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-table-mod-display"]],inputs:{mods:"mods",artifice:"artifice"},decls:4,vars:4,consts:[[1,"row-mod"],[4,"ngVar"],[4,"ngFor","ngForOf"],["class","container","matTooltip","Artifice",4,"ngIf"],["matTooltip","Artifice",1,"container"],["tooltip","matTooltip"],[1,"artificeIcon","artifice",3,"src"],[1,"modText","artifice"],["class","container",3,"matTooltip",4,"ngIf"],[1,"container",3,"matTooltip"],[3,"src"],[1,"modText"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Qs,2,1,"ng-container",1),t.ALo(2,"count"),t.YNc(3,Gs,2,1,"ng-container",2),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngVar",t.lcZ(2,2,o.artifice)),t.xp6(2),t.Q6J("ngForOf",o.modIndex))},dependencies:[I.sg,I.O5,pt.gM,zt,Ae],styles:[".container[_ngcontent-%COMP%]{display:inline-block;width:32px;height:30px;position:relative}.modIcon[_ngcontent-%COMP%]{position:absolute;top:-12px;left:-12px;width:50px;height:50px;filter:contrast(2.3);border:#00000000 solid 2px;-webkit-mask-image:url(modmask.f03dde91561a62d6.svg);mask-image:image(url(modmask.f03dde91561a62d6.svg),black)}.modIcon_Mobility[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(0deg) brightness(100%) saturate(320%)}.modIcon_Resilience[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(60deg) brightness(100%) saturate(320%)}.modIcon_Recovery[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(120deg) brightness(100%) saturate(320%)}.modIcon_Discipline[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(180deg) brightness(100%) saturate(320%)}.modIcon_Intellect[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(240deg) brightness(100%) saturate(320%)}.modIcon_Strength[_ngcontent-%COMP%]{filter:contrast(2.3) sepia(100%) hue-rotate(300deg) brightness(100%) saturate(320%)}.modIcon.minor[_ngcontent-%COMP%]{opacity:.8;scale:.75}.artificeIcon[_ngcontent-%COMP%]{height:28px;width:28px;filter:saturate(40) hue-rotate(40deg)}.selected[_ngcontent-%COMP%]{border:red solid 2px}[_nghost-%COMP%]{position:relative}.modText[_ngcontent-%COMP%]{position:absolute;text-shadow:0 0 6px #000000;font-size:smaller;color:#f5f5f5;bottom:-6px;right:-1px}"]}),n})();function Ks(n,i){if(1&n&&(t.TgZ(0,"div")(1,"div",22),t._UZ(2,"img",23)(3,"img",24),t.O4$(),t.TgZ(4,"svg",25)(5,"text",26),t._uU(6,"3"),t.qZA()(),t.TgZ(7,"svg",27)(8,"text",26),t._uU(9,"1"),t.qZA()(),t.kcU(),t._UZ(10,"div",28),t.qZA(),t.TgZ(11,"div",22),t._UZ(12,"img",23)(13,"img",24),t.O4$(),t.TgZ(14,"svg",25)(15,"text",26),t._uU(16,"4"),t.qZA()(),t.TgZ(17,"svg",27)(18,"text",26),t._uU(19,"2"),t.qZA()(),t.kcU(),t._UZ(20,"div",28),t.qZA(),t.TgZ(21,"div",22),t._UZ(22,"img",23)(23,"img",24),t.O4$(),t.TgZ(24,"svg",25)(25,"text",26),t._uU(26,"3"),t.qZA()(),t.TgZ(27,"svg",27)(28,"text",26),t._uU(29,"1"),t.qZA()(),t.kcU(),t._UZ(30,"div",28),t.qZA(),t.TgZ(31,"div",22),t._UZ(32,"img",23)(33,"img",24),t.O4$(),t.TgZ(34,"svg",25)(35,"text",26),t._uU(36,"3"),t.qZA()(),t.TgZ(37,"svg",27)(38,"text",26),t._uU(39,"1"),t.qZA()(),t.kcU(),t._UZ(40,"div",28),t.qZA(),t.TgZ(41,"div",22),t._UZ(42,"img",23)(43,"img",24),t.O4$(),t.TgZ(44,"svg",25)(45,"text",26),t._uU(46,"4"),t.qZA()(),t.TgZ(47,"svg",27)(48,"text",26),t._uU(49,"2"),t.qZA()(),t.kcU(),t._UZ(50,"div",28),t.qZA(),t.TgZ(51,"div",22),t._UZ(52,"img",23)(53,"img",24),t.O4$(),t.TgZ(54,"svg",25)(55,"text",26),t._uU(56,"4"),t.qZA()(),t.TgZ(57,"svg",27)(58,"text",26),t._uU(59,"2"),t.qZA()(),t.kcU(),t._UZ(60,"div",28),t.qZA()()),2&n){const e=i.ngVar,o=t.oxw();t.xp6(1),t.ekj("major",e>=3)("minor",e>=1&&e<3),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_MOBILITY],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_MOBILITY],t.LSH),t.xp6(8),t.ekj("major",e>=4)("minor",e>=2&&e<4),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_RESILIENCE],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_RESILIENCE],t.LSH),t.xp6(8),t.ekj("major",e>=3)("minor",e>=1&&e<3),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_DISCIPLINE],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_DISCIPLINE],t.LSH),t.xp6(8),t.ekj("major",e>=3)("minor",e>=1&&e<3),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_STRENGTH],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_STRENGTH],t.LSH),t.xp6(8),t.ekj("major",e>=4)("minor",e>=2&&e<4),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_RECOVERY],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_RECOVERY],t.LSH),t.xp6(8),t.ekj("major",e>=4)("minor",e>=2&&e<4),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MAJOR_INTELLECT],t.LSH),t.xp6(1),t.Q6J("src",o.ModUrls[o.StatModifier.MINOR_INTELLECT],t.LSH)}}function $s(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-button-toggle",29),t.NdJ("click",function(){const s=t.CHM(e).index,r=t.oxw();return t.KtG(r.setValue(s))}),t._uU(1),t.qZA()}if(2&n){const e=i.index,o=t.oxw();t.Gre("select-button ",o.selection>=e?"mat-button-toggle-checked":"",""),t.Q6J("value",e),t.xp6(1),t.Oqu(e)}}function Xs(n,i){1&n&&(t.TgZ(0,"mat-icon"),t._uU(1,"lock_open"),t.qZA())}function tr(n,i){1&n&&(t.TgZ(0,"mat-icon"),t._uU(1,"lock"),t.qZA())}function er(n,i){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"button",30),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.setArmorPerk(s))}),t._UZ(2,"app-armor-perk-icon",31),t.TgZ(3,"span",32),t._uU(4),t.qZA()(),t.BQk()}if(2&n){const e=i.$implicit,o=t.oxw();t.xp6(1),t.ekj("selected-menu",e===o.armorPerk),t.xp6(1),t.Q6J("perk",e),t.xp6(2),t.Oqu(o.ArmorPerkOrSlotNames[e])}}function nr(n,i){if(1&n&&t._UZ(0,"img",33,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function or(n,i){if(1&n&&t._UZ(0,"img",35,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function ir(n,i){if(1&n&&t._UZ(0,"img",36,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function ar(n,i){if(1&n&&t._UZ(0,"img",37,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}function sr(n,i){if(1&n&&t._UZ(0,"img",38,34),2&n){const e=t.oxw();t.MGl("matTooltip","If you enable the lock on the settings on the right they will be forced to exist on a ",e.slotName,".")}}let rr=(()=>{class n{constructor(e,o,a,s){this.config=e,this.inventory=o,this.iconService=a,this.db=s,this.featureDisabled=!g.N.featureFlags.enableModslotLimitation,this.ModUrls=Se,this.StatModifier=c.iV,this.ArmorSlot=T.y,this.ArmorPerkOrSlotNames=c.cM,this.ArmorPerkOrSlot=c.Pn,this.ModRange=new Array(D.Qj+1),this.selection=D.Qj,this.slot=T.y.ArmorSlotHelmet,this.possible=new t.vpe,this.fixedExoticInThisSlot=!1,this.isPossible=!0,this.configSelectedClass=0,this.configAssumeLegendaryIsArtifice=!1,this.configSelectedExoticSum=0,this.configSelectedExotic=[],this.configAssumeClassItemIsArtifice=!1,this.configAssumeExoticIsArtifice=!1,this.armorPerk=c.Pn.None,this.armorPerkLock=!1,this.maximumModSlots=5,this.hoveredSlot=-1,this.disabled=!1,this.availableArmorPerks=[c.Pn.None,c.Pn.SlotSalvationsEdge,c.Pn.SlotCrotasEnd,c.Pn.SlotRootOfNightmares,c.Pn.SlotKingsFall,c.Pn.SlotVowOfTheDisciple,c.Pn.SlotVaultOfGlass,c.Pn.SlotDeepStoneCrypt,c.Pn.SlotGardenOfSalvation,c.Pn.SlotLastWish,c.Pn.SlotArtifice,c.Pn.PerkEchoesOfGlory,c.Pn.PerkIronBanner,c.Pn.SlotNightmare],this.ngUnsubscribe=new R.xQ}runPossibilityCheck(){var e=this;return(0,y.Z)(function*(){if(e.configAssumeLegendaryIsArtifice||e.slot==T.y.ArmorSlotClass&&e.configAssumeClassItemIsArtifice)e.isPossible=!0;else{let a=0;e.armorPerkLock&&e.armorPerk!=c.Pn.None?e.fixedExoticInThisSlot?e.armorPerk==c.Pn.SlotArtifice&&e.configAssumeExoticIsArtifice?a+=1:e.configSelectedExotic.forEach(function(){var s=(0,y.Z)(function*(r){var d=yield e.db.inventoryArmor.where("clazz").equals(e.configSelectedClass).and(p=>p.perk==e.armorPerk).and(p=>p.hash==r).and(p=>1==p.isExotic).count();a+=d,e.isPossible=a>0,e.possible.next(e.isPossible)});return function(r){return s.apply(this,arguments)}}()):(a+=(yield e.db.inventoryArmor.where("clazz").equals(e.configSelectedClass).and(s=>0==e.configSelectedExoticSum||0==s.isExotic).and(s=>s.slot==e.slot).and(s=>s.perk==e.armorPerk).count()),e.isPossible=a>0):e.isPossible=!0}e.possible.next(e.isPossible)})()}get slotName(){switch(this.slot){case T.y.ArmorSlotHelmet:return"Helmet";case T.y.ArmorSlotGauntlet:return"Gauntlet";case T.y.ArmorSlotChest:return"Chest";case T.y.ArmorSlotLegs:return"Leg";case T.y.ArmorSlotClass:return"Class Item";default:return""}}ngOnInit(){var e=this;this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,y.Z)(function*(a){const s=a.selectedExotics.reduce((d,p)=>d+p,0);var r=e.configSelectedClass!=a.characterClass||e.configAssumeLegendaryIsArtifice!=a.assumeEveryLegendaryIsArtifice||e.configAssumeExoticIsArtifice!=a.assumeEveryExoticIsArtifice||e.configAssumeClassItemIsArtifice!=a.assumeClassItemIsArtifice||e.selection!=a.maximumModSlots[e.slot].value||e.armorPerk!=a.armorPerks[e.slot].value||e.armorPerkLock!=a.armorPerks[e.slot].fixed||e.configSelectedExoticSum!=s||e.maximumModSlots!=a.maximumModSlots[e.slot].value;e.configAssumeLegendaryIsArtifice=a.assumeEveryLegendaryIsArtifice,e.configAssumeExoticIsArtifice=a.assumeEveryExoticIsArtifice,e.configAssumeClassItemIsArtifice=a.assumeClassItemIsArtifice,e.configSelectedClass=a.characterClass,e.selection=a.maximumModSlots[e.slot].value,e.armorPerk=a.armorPerks[e.slot].value,e.armorPerkLock=a.armorPerks[e.slot].fixed,e.maximumModSlots=a.maximumModSlots[e.slot].value,e.configSelectedExoticSum=s,e.configSelectedExotic=a.selectedExotics,e.fixedExoticInThisSlot=(yield e.inventory.getExoticsForClass(a.characterClass)).filter(d=>a.selectedExotics.indexOf(d.item.hash)>-1).map(d=>d.item.slot).indexOf(e.slot)>-1,r&&(yield e.runPossibilityCheck())});return function(a){return o.apply(this,arguments)}}())}ngAfterViewInit(){g.N.featureFlags.enableGuardianGamesFeatures&&this.slot===T.y.ArmorSlotClass&&this.availableArmorPerks.splice(1,0,c.Pn.GuardianGamesClassItem)}toggleArmorPerkLock(){this.config.modifyConfiguration(e=>{e.armorPerks[this.slot].fixed=!e.armorPerks[this.slot].fixed})}setArmorPerk(e){this.armorPerk!=e&&this.config.modifyConfiguration(o=>{o.armorPerks[this.slot].value=e})}setValue(e){this.featureDisabled||this.maximumModSlots!=e&&(this.maximumModSlots=e,this.config.modifyConfiguration(o=>o.maximumModSlots[this.slot].value=e))}getStatIconUrl(e){var o=this;return(0,y.Z)(function*(){return(yield o.iconService.getItemCached(e))?.icon})()}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(Tt),t.Y36(pe),t.Y36(w))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-slot-limitation-selection"]],inputs:{slot:"slot"},outputs:{possible:"possible"},decls:35,vars:58,consts:[[1,"container"],[1,"energy"],[1,"energy-container",3,"mouseout"],[1,"energy-bar","blocked",3,"click","mouseover"],[1,"energy-bar",3,"click","mouseover"],[4,"ngVar"],["appearance","standard","name","fontStyle",2,"display","none"],[3,"value","class","click",4,"ngFor","ngForOf"],[1,"selector-slots"],["value","bold",3,"matMenuTriggerFor"],[3,"perk"],["disabled","",3,"disabled","matTooltip","click"],[4,"ngIf"],[1,"modslot-select-scroll-menu"],["dropdownArmorModslot","matMenu"],[4,"ngFor","ngForOf"],[1,"slot-icon-container"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M24.77 7.03c-8.15.38-14.42 7.41-14.42 15.57v16.06c0 .23.13.44.34.53l10.33 4.68c.78.35 1.66-.22 1.66-1.07V31.9c0-.39-.19-.75-.52-.97l-5.39-3.64c-.87-.52-1.43-1.5-1.34-2.61.13-1.46 1.46-2.52 2.93-2.52h4.36c.65 0 1.17.53 1.17 1.17v6.71s0 .61 1.61.61 1.61-.61 1.61-.61v-6.71c0-.65.52-1.17 1.17-1.17h4.36c1.47 0 2.8 1.06 2.93 2.52.1 1.11-.47 2.09-1.34 2.61l-5.39 3.64c-.32.22-.52.58-.52.97v10.91c0 .85.88 1.42 1.66 1.07l10.33-4.68c.21-.1.34-.3.34-.53v-16.5c.01-8.61-7.18-15.55-15.88-15.14z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M40.1 30.03c.39-.47.59-1.11.42-1.8-.18-.76-.81-1.39-1.58-1.55-.81-.17-1.54.14-2.01.68 0 0-.03.04-.05.07l-.12.15c-.47.61-1.95 2.37-3.29 2.45-1.62.1 2.51-16.14 2.51-16.14h-.01c.04-.15.07-.31.07-.48 0-.98-.79-1.77-1.77-1.77-.81 0-1.49.55-1.69 1.29h-.01s-.01.03-.01.05l-.03.15c-.24 1.21-1.68 8.2-2.81 8.89-1.24.75-1.22-13.23-1.22-13.23 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 0-.35 12.85-1.73 12.73-1.37-.12-2.47-10.67-2.47-10.67 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 .15.02.28.06.42.27 2.06 1.36 11.12-.06 11.12-1.6 0-3.68-6.35-3.68-6.35a1.62 1.62 0 0 0-3.14.56c0 .09.01.17.03.25l-.03.01s.02.07.07.19c.02.09.05.17.09.25.99 2.71 6.28 17.46 7.26 26.23.03.25.24.44.49.44H30.5a.5.5 0 0 0 .5-.45c.1-1.04.52-3.68 2.09-5.54 1.8-2.14 6.06-6.89 6.86-7.79.02-.02.03-.04.05-.06.07-.06.11-.1.1-.1z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M42.49 13.55c-1.06-1.51-4.05-5.05-9.52-6.49a.635.635 0 0 0-.78.5c-.35 2.04-1.78 8.08-6.69 8.08s-6.34-6.04-6.69-8.08a.635.635 0 0 0-.78-.5c-5.47 1.44-8.46 4.98-9.52 6.49-.24.34-.09.8.3.94 2.01.7 7.34 2.94 7.34 7.01 0 4.24-4.47 6.89-5.87 7.61-.25.13-.38.4-.33.67 1.44 7.62 7.55 13.09 8.67 14.04.11.1.25.15.4.15h12.94c.15 0 .29-.05.4-.15 1.12-.95 7.23-6.42 8.67-14.04a.624.624 0 0 0-.33-.67c-1.4-.72-5.87-3.37-5.87-7.61 0-4.08 5.33-6.32 7.34-7.01.41-.14.56-.61.32-.94z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M13 7.6h13.96c1.73 0 2.99 1.64 2.54 3.32l-5.44 20.46c-.07.28.03.57.28.72.99.62 4.64 2.57 8.15 5.78.12.11 2.92-.03 3.09-.01 2.31.2 3.97-.08 5.05 4.7.09.42-.21.82-.64.82H11.82c-.34 0-.63-.26-.66-.61-.15-1.82-.4-7.23 1.74-9.32a.62.62 0 0 0 .2-.6c-.39-1.74-2.09-9.83-2.74-22.48-.07-1.5 1.12-2.78 2.64-2.78z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],["class","slot-icon","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M43.12 7.12c-4.13 2.33-17.62 1.9-17.62 1.9s-13.49.43-17.62-1.9c-.37-.21-.85-.03-.94.39-.36 1.49-.87 4.42.09 5.86.09.13.22.21.38.25 1.23.3 7.36 1.65 18.09 1.65s16.86-1.35 18.09-1.65c.15-.04.29-.12.38-.25.96-1.44.45-4.37.1-5.86-.1-.42-.58-.6-.95-.39zM9.27 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.73c-1.93-.22-3.45-.45-4.55-.65v13.26zM16.3 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.24c-1.66-.06-3.18-.16-4.55-.27V34.8zM37.18 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.08c-1.09.2-2.61.44-4.55.65v12.61zM30.15 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.97c-1.36.11-2.88.21-4.55.27V34.8zM23.23 16.31v25.31s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.31c-.74.01-1.49.02-2.27.02-.78.01-1.54 0-2.27-.02z'/%3e%3c/svg%3e",3,"matTooltip",4,"ngIf"],[1,"mod-info"],[1,"mod-icon","mod-major",3,"src"],[1,"mod-icon","mod-minor",3,"src"],["viewBox","0 0 100 100",1,"mod-number","mod-major"],["font-size","25px","text-anchor","end","x","87","y","30"],["viewBox","0 0 100 100",1,"mod-number","mod-minor"],[1,"overlay"],[3,"value","click"],["mat-menu-item","",3,"click"],[1,"menuArmorIcon",3,"perk"],[1,"menuArmorText"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M24.77 7.03c-8.15.38-14.42 7.41-14.42 15.57v16.06c0 .23.13.44.34.53l10.33 4.68c.78.35 1.66-.22 1.66-1.07V31.9c0-.39-.19-.75-.52-.97l-5.39-3.64c-.87-.52-1.43-1.5-1.34-2.61.13-1.46 1.46-2.52 2.93-2.52h4.36c.65 0 1.17.53 1.17 1.17v6.71s0 .61 1.61.61 1.61-.61 1.61-.61v-6.71c0-.65.52-1.17 1.17-1.17h4.36c1.47 0 2.8 1.06 2.93 2.52.1 1.11-.47 2.09-1.34 2.61l-5.39 3.64c-.32.22-.52.58-.52.97v10.91c0 .85.88 1.42 1.66 1.07l10.33-4.68c.21-.1.34-.3.34-.53v-16.5c.01-8.61-7.18-15.55-15.88-15.14z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["tooltip","matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M40.1 30.03c.39-.47.59-1.11.42-1.8-.18-.76-.81-1.39-1.58-1.55-.81-.17-1.54.14-2.01.68 0 0-.03.04-.05.07l-.12.15c-.47.61-1.95 2.37-3.29 2.45-1.62.1 2.51-16.14 2.51-16.14h-.01c.04-.15.07-.31.07-.48 0-.98-.79-1.77-1.77-1.77-.81 0-1.49.55-1.69 1.29h-.01s-.01.03-.01.05l-.03.15c-.24 1.21-1.68 8.2-2.81 8.89-1.24.75-1.22-13.23-1.22-13.23 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 0-.35 12.85-1.73 12.73-1.37-.12-2.47-10.67-2.47-10.67 0-.98-.79-1.77-1.77-1.77s-1.77.79-1.77 1.77c0 .15.02.28.06.42.27 2.06 1.36 11.12-.06 11.12-1.6 0-3.68-6.35-3.68-6.35a1.62 1.62 0 0 0-3.14.56c0 .09.01.17.03.25l-.03.01s.02.07.07.19c.02.09.05.17.09.25.99 2.71 6.28 17.46 7.26 26.23.03.25.24.44.49.44H30.5a.5.5 0 0 0 .5-.45c.1-1.04.52-3.68 2.09-5.54 1.8-2.14 6.06-6.89 6.86-7.79.02-.02.03-.04.05-.06.07-.06.11-.1.1-.1z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M42.49 13.55c-1.06-1.51-4.05-5.05-9.52-6.49a.635.635 0 0 0-.78.5c-.35 2.04-1.78 8.08-6.69 8.08s-6.34-6.04-6.69-8.08a.635.635 0 0 0-.78-.5c-5.47 1.44-8.46 4.98-9.52 6.49-.24.34-.09.8.3.94 2.01.7 7.34 2.94 7.34 7.01 0 4.24-4.47 6.89-5.87 7.61-.25.13-.38.4-.33.67 1.44 7.62 7.55 13.09 8.67 14.04.11.1.25.15.4.15h12.94c.15 0 .29-.05.4-.15 1.12-.95 7.23-6.42 8.67-14.04a.624.624 0 0 0-.33-.67c-1.4-.72-5.87-3.37-5.87-7.61 0-4.08 5.33-6.32 7.34-7.01.41-.14.56-.61.32-.94z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M13 7.6h13.96c1.73 0 2.99 1.64 2.54 3.32l-5.44 20.46c-.07.28.03.57.28.72.99.62 4.64 2.57 8.15 5.78.12.11 2.92-.03 3.09-.01 2.31.2 3.97-.08 5.05 4.7.09.42-.21.82-.64.82H11.82c-.34 0-.63-.26-.66-.61-.15-1.82-.4-7.23 1.74-9.32a.62.62 0 0 0 .2-.6c-.39-1.74-2.09-9.83-2.74-22.48-.07-1.5 1.12-2.78 2.64-2.78z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"],["src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M43.12 7.12c-4.13 2.33-17.62 1.9-17.62 1.9s-13.49.43-17.62-1.9c-.37-.21-.85-.03-.94.39-.36 1.49-.87 4.42.09 5.86.09.13.22.21.38.25 1.23.3 7.36 1.65 18.09 1.65s16.86-1.35 18.09-1.65c.15-.04.29-.12.38-.25.96-1.44.45-4.37.1-5.86-.1-.42-.58-.6-.95-.39zM9.27 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.73c-1.93-.22-3.45-.45-4.55-.65v13.26zM16.3 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.24c-1.66-.06-3.18-.16-4.55-.27V34.8zM37.18 28.34s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.08c-1.09.2-2.61.44-4.55.65v12.61zM30.15 34.8s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V15.97c-1.36.11-2.88.21-4.55.27V34.8zM23.23 16.31v25.31s0 2.34 2.27 2.34 2.27-2.34 2.27-2.34V16.31c-.74.01-1.49.02-2.27.02-.78.01-1.54 0-2.27-.02z'/%3e%3c/svg%3e",1,"slot-icon",3,"matTooltip"]],template:function(e,o){if(1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"div",2),t.NdJ("mouseout",function(){return o.hoveredSlot=-1}),t.TgZ(3,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(4,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(5,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(6,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(7,"div",3),t.NdJ("click",function(){return o.setValue(5)})("mouseover",function(){return o.hoveredSlot=0}),t.qZA(),t.TgZ(8,"div",4),t.NdJ("click",function(){return o.setValue(4)})("mouseover",function(){return o.hoveredSlot=1}),t.qZA(),t.TgZ(9,"div",4),t.NdJ("click",function(){return o.setValue(3)})("mouseover",function(){return o.hoveredSlot=2}),t.qZA(),t.TgZ(10,"div",4),t.NdJ("click",function(){return o.setValue(2)})("mouseover",function(){return o.hoveredSlot=3}),t.qZA(),t.TgZ(11,"div",4),t.NdJ("click",function(){return o.setValue(1)})("mouseover",function(){return o.hoveredSlot=4}),t.qZA(),t.TgZ(12,"div",4),t.NdJ("click",function(){return o.setValue(0)})("mouseover",function(){return o.hoveredSlot=5}),t.qZA()(),t._UZ(13,"br"),t.YNc(14,Ks,61,36,"div",5),t.qZA(),t.TgZ(15,"mat-button-toggle-group",6),t.YNc(16,$s,2,5,"mat-button-toggle",7),t.qZA(),t.TgZ(17,"div",8)(18,"mat-button-toggle-group")(19,"mat-button-toggle",9),t._UZ(20,"app-armor-perk-icon",10),t.TgZ(21,"mat-icon"),t._uU(22,"arrow_drop_down"),t.qZA()(),t.TgZ(23,"mat-button-toggle",11),t.NdJ("click",function(s){return o.toggleArmorPerkLock(),s.stopPropagation()}),t.YNc(24,Xs,2,0,"mat-icon",12),t.YNc(25,tr,2,0,"mat-icon",12),t.qZA()(),t.TgZ(26,"mat-menu",13,14),t.YNc(28,er,5,4,"ng-container",15),t.qZA()(),t.TgZ(29,"span",16),t.YNc(30,nr,2,1,"img",17),t.YNc(31,or,2,1,"img",18),t.YNc(32,ir,2,1,"img",19),t.YNc(33,ar,2,1,"img",20),t.YNc(34,sr,2,1,"img",21),t.qZA()()),2&e){const a=t.MAs(27);t.ekj("disabled",o.disabled),t.xp6(8),t.ekj("active",5-o.maximumModSlots>=1)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<1)("hovered",o.hoveredSlot>=1)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots>=2)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<2)("hovered",o.hoveredSlot>=2)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots>=3)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<3)("hovered",o.hoveredSlot>=3)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots>=4)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<4)("hovered",o.hoveredSlot>=4)("blocked",o.featureDisabled),t.xp6(1),t.ekj("active",5-o.maximumModSlots==5)("hovered-higher",o.hoveredSlot>-1&&o.hoveredSlot<5)("hovered",5===o.hoveredSlot)("blocked",o.featureDisabled),t.xp6(2),t.Q6J("ngVar",o.hoveredSlot>-1?5-o.hoveredSlot:o.maximumModSlots),t.xp6(2),t.Q6J("ngForOf",o.ModRange),t.xp6(2),t.ekj("impossible",!o.isPossible),t.xp6(1),t.Q6J("matMenuTriggerFor",a),t.xp6(1),t.Q6J("perk",o.armorPerk),t.xp6(3),t.MGl("matTooltip","Force the selected perk or slot to be on a ",o.slotName,"."),t.Q6J("disabled",o.disabled),t.xp6(1),t.Q6J("ngIf",!o.armorPerkLock),t.xp6(1),t.Q6J("ngIf",o.armorPerkLock),t.xp6(3),t.Q6J("ngForOf",o.availableArmorPerks),t.xp6(2),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotHelmet),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotGauntlet),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotChest),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotLegs),t.xp6(1),t.Q6J("ngIf",o.slot===o.ArmorSlot.ArmorSlotClass)}},dependencies:[I.sg,I.O5,pt.gM,St.Hw,Kt.VK,Kt.OP,Kt.p6,Dt.A9,Dt.Yi,zt,_e],styles:[".slot-icon-container[_ngcontent-%COMP%]{float:right;position:relative}.slot-icon-container[_ngcontent-%COMP%] .slot-icon[_ngcontent-%COMP%]{height:30px;position:absolute;left:-30px;filter:invert(1) drop-shadow(1px 1px 3px rgba(0,0,0,.25))!important}.container[_ngcontent-%COMP%]{height:60px}.select-button[_ngcontent-%COMP%]{min-width:40px}.selector-element[_ngcontent-%COMP%]{position:relative;float:right;width:90px;height:70px;top:-21px}.selector-element[_ngcontent-%COMP%] .lock[_ngcontent-%COMP%]{position:absolute;bottom:2px;left:60px}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%]{float:left;width:70px;padding-left:5px}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon[_ngcontent-%COMP%]{border:rgba(0,0,0,0) solid 2px;height:26px;width:26px;margin-right:1px;margin-bottom:1px;margin-top:1px;cursor:pointer;filter:grayscale(.4)}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon[_ngcontent-%COMP%]:hover{filter:grayscale(.2)}.selector-element[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon.selected[_ngcontent-%COMP%]{filter:grayscale(0)}[_nghost-%COMP%] .selector-slots .mat-button-toggle{background-color:inherit}.modslot-selection[_ngcontent-%COMP%]{width:180px}.selector-slots[_ngcontent-%COMP%]{position:relative;float:right;top:-10px}.selector-slots[_ngcontent-%COMP%] .lock[_ngcontent-%COMP%]{position:absolute;bottom:2px;left:140px}.selector-slots[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%]{float:left;height:70px;width:175px;padding-left:5px}.selector-slots[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon[_ngcontent-%COMP%]{height:30px;width:30px;border:rgba(0,0,0,0) solid 2px;margin-right:1px;margin-top:-2px;cursor:pointer}.selector-slots[_ngcontent-%COMP%] .element-list[_ngcontent-%COMP%] .element-icon.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:default;border:rgba(0,0,0,0) solid 2px!important}.impossible[_ngcontent-%COMP%]{background-color:#ff00004d;cursor:help}.left_line[_ngcontent-%COMP%]{pointer-events:none;height:15px;width:100%;border-left:1px solid white;border-bottom:1px solid white;position:absolute;bottom:0px;left:0}.overlay-icon-container[_ngcontent-%COMP%]{position:relative}.overlay-icon-container[_ngcontent-%COMP%] .overlay-icon[_ngcontent-%COMP%]{width:20px;position:absolute;left:7px;bottom:11px;pointer-events:none}.element-icon[_ngcontent-%COMP%]:hover{border:cornflowerblue solid 2px!important}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%]:hover{background-color:#89b2ff3d;border:#0059ff solid 2px!important}.energy-container[_ngcontent-%COMP%] .energy-bar[_ngcontent-%COMP%]{float:left;margin-right:3px;width:20px;height:10px;border:white solid 2px;cursor:pointer}.energy-container[_ngcontent-%COMP%] .energy-bar.none[_ngcontent-%COMP%]{border:indianred solid 2px}.energy-container[_ngcontent-%COMP%] .energy-bar[_ngcontent-%COMP%]:hover, .energy-container[_ngcontent-%COMP%] .hovered[_ngcontent-%COMP%]{background-color:#6e6e6e}.energy-container[_ngcontent-%COMP%] .hovered-higher[_ngcontent-%COMP%]{background-color:#0000!important}.energy-container[_ngcontent-%COMP%] .energy-bar.active[_ngcontent-%COMP%]{background-color:#fff}.energy-container[_ngcontent-%COMP%] .energy-bar.blocked[_ngcontent-%COMP%]{border:#606060 solid 2px;background-color:#6e6e6e}.mod-info[_ngcontent-%COMP%]{position:relative;float:left;height:40px;width:40px;margin-right:5px}.mod-info[_ngcontent-%COMP%] .mod-number[_ngcontent-%COMP%]{position:absolute;top:1px;bottom:1px;right:1px;left:1px;pointer-events:none;fill:#e0e0e0}.mod-info[_ngcontent-%COMP%] .mod-minor[_ngcontent-%COMP%]{display:none}.mod-info[_ngcontent-%COMP%] .overlay[_ngcontent-%COMP%]{position:absolute;top:0px;width:100%;height:100%;background:linear-gradient(to top left,rgba(0,0,0,0) 0%,rgba(0,0,0,0) calc(50% - .8px),rgb(0,0,0) 50%,rgba(0,0,0,0) calc(50% + .8px),rgba(0,0,0,0) 100%),linear-gradient(to top right,rgba(0,0,0,0) 0%,rgba(0,0,0,0) calc(50% - .8px),rgb(0,0,0) 50%,rgba(0,0,0,0) calc(50% + .8px),rgba(0,0,0,0) 100%)}.mod-info[_ngcontent-%COMP%] .mod-icon[_ngcontent-%COMP%]{width:40px;height:40px}.mod-info[_ngcontent-%COMP%] .mod-minor[_ngcontent-%COMP%]{border:rgba(0,0,0,0) solid 3px;width:34px;height:34px}.mod-info.major[_ngcontent-%COMP%] .overlay[_ngcontent-%COMP%], .mod-info.minor[_ngcontent-%COMP%] .overlay[_ngcontent-%COMP%]{display:none}.mod-info.minor[_ngcontent-%COMP%] .mod-minor[_ngcontent-%COMP%]{display:block}.mod-info.minor[_ngcontent-%COMP%] .mod-major[_ngcontent-%COMP%]{display:none}.menuArmorIcon[_ngcontent-%COMP%]{position:absolute;top:8px}.menuArmorText[_ngcontent-%COMP%]{padding-left:35px}.selected-menu[_ngcontent-%COMP%]{background-color:#89b2ff3d}.selected-menu[_ngcontent-%COMP%]:hover{background-color:#89b2ff4d} .modslot-select-scroll-menu{overflow-y:auto;max-height:250px!important}"]}),n})(),lr=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-slot-limitation-title"]],decls:5,vars:0,consts:[[1,"energy"],[1,"selector-slots"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0),t._uU(2," Energy "),t.qZA(),t.TgZ(3,"span",1),t._uU(4," Modslots "),t.qZA()())},styles:[".energy[_ngcontent-%COMP%]{border-bottom:#a1a1a1 1px solid;margin-bottom:6px}.selector-element[_ngcontent-%COMP%]{position:relative;float:right;width:90px;top:-26px}.selector-slots[_ngcontent-%COMP%]{position:relative;float:right;width:155px;top:-26px;text-align:center}"]}),n})();function cr(n,i){1&n&&(t.TgZ(0,"mat-toolbar",13),t._uU(1," Some of your chosen limitations contain no armor pieces and will yield no results.\n"),t.qZA())}function mr(n,i){1&n&&(t.TgZ(0,"mat-toolbar",13),t._uU(1," The mod cost limitation is currently disabled. Modslot filtering still works.\n"),t.qZA())}let dr=(()=>{class n{constructor(e){this.config=e,this.ArmorSlot=T.y,this.ArmorPerkOrSlot=c.Pn,this.possibilityList=[!0,!0,!0,!0,!0],this.allPossible=!0,this.disabledSlotLimitation=!g.N.featureFlags.enableModslotLimitation}updatePossibility(e,o){this.possibilityList[e]=o,this.allPossible=5==this.possibilityList.filter(a=>!!a).length}clear(){this.config.modifyConfiguration(e=>{for(let o=0;o<5;o++)e.armorPerks[o+1]={fixed:!0,value:0},e.maximumModSlots[o+1]={fixed:!0,value:5}})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-mod-selection"]],decls:129,vars:16,consts:[["color","warn","class","mat-elevation-z4 impossible-container",4,"ngIf"],[1,"container"],[3,"slot","possible"],["id","clear-container"],["color","warn","mat-stroked-button","",3,"click"],[1,"minispace"],[1,"mat-elevation-z6"],["aria-hidden","false","inline",""],["id","explanation-description"],[1,"text-highlight"],[1,"example-usecase"],[1,"modslot-legend"],[3,"perk"],["color","warn",1,"mat-elevation-z4","impossible-container"]],template:function(e,o){1&e&&(t.YNc(0,cr,2,0,"mat-toolbar",0),t.TgZ(1,"div",1),t._UZ(2,"app-slot-limitation-title"),t.TgZ(3,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(0,s)}),t.qZA(),t._UZ(4,"br"),t.TgZ(5,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(1,s)}),t.qZA(),t._UZ(6,"br"),t.TgZ(7,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(2,s)}),t.qZA(),t._UZ(8,"br"),t.TgZ(9,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(3,s)}),t.qZA(),t._UZ(10,"br"),t.TgZ(11,"app-slot-limitation-selection",2),t.NdJ("possible",function(s){return o.updatePossibility(4,s)}),t.qZA()(),t.TgZ(12,"div",3)(13,"button",4),t.NdJ("click",function(){return o.clear()}),t._uU(14,"Clear the whole selection"),t.qZA()(),t._UZ(15,"div",5),t.YNc(16,mr,2,0,"mat-toolbar",0),t._UZ(17,"div",5),t.TgZ(18,"mat-accordion")(19,"mat-expansion-panel",6)(20,"mat-expansion-panel-header")(21,"mat-panel-title")(22,"mat-icon",7),t._uU(23,"info"),t.qZA(),t._uU(24," Explanation "),t.qZA(),t.TgZ(25,"mat-panel-description"),t._uU(26," Detailed instructions for this section. "),t.qZA()(),t.TgZ(27,"div",8),t._uU(28," This section allows you to further finetune the results to your requirements."),t._UZ(29,"br")(30,"div",5),t.TgZ(31,"u"),t._uU(32,"Limitation of available stat mod types"),t.qZA(),t._UZ(33,"br"),t._uU(34," First off, you are able to "),t.TgZ(35,"span",9),t._uU(36,"select the kind and amount of stat mods"),t.qZA(),t._uU(37," you want. By filling the bars you "),t.TgZ(38,"span",9),t._uU(39,"specify how many modslots are already occupied"),t.qZA(),t._uU(40," and thus the tool knows how much space it is able to use for your builds. Hover over the bars, it will show you which mods are available after you changed your selection. "),t._UZ(41,"div",5),t.TgZ(42,"div",10),t._uU(43,' Example Use Case: "On one item I can only use up to four recovery mods, no major intellect mod. One item can not hold any mods". In this scenario you would set one slot to 10 used slots, and the rest to 6. '),t.qZA(),t._UZ(44,"br"),t.TgZ(45,"u"),t._uU(46,"Filter for Elemental Affinity and Armor Perk/Slot"),t.qZA(),t._UZ(47,"br"),t._uU(48," This allows you to super-finetune your elemental and armor-perk requirements. You can change the settings for "),t.TgZ(49,"span",9),t._uU(50,"each armor slot"),t.qZA(),t._uU(51,". There are two modes per armor slot: "),t.TgZ(52,"span",9),t._uU(53,"Locked"),t.qZA(),t._uU(54," and "),t.TgZ(55,"span",9),t._uU(56,"Unlocked"),t.qZA(),t._uU(57,". Per default each entry is in the "),t.TgZ(58,"span",9),t._uU(59,"Locked"),t.qZA(),t._uU(60," mode. "),t._UZ(61,"div",5),t.TgZ(62,"span",9),t._uU(63,"Locked"),t.qZA(),t._uU(64," means that "),t.TgZ(65,"span",9),t._uU(66,"this armor slot must have"),t.qZA(),t._uU(67," the selected element or perk. "),t._UZ(68,"div",5),t.TgZ(69,"span",9),t._uU(70,"Unlocked"),t.qZA(),t._uU(71," means that the perk must exist, but "),t.TgZ(72,"span",9),t._uU(73,"the exact armor slot is irrelevant"),t.qZA(),t._uU(74,". That means that the tool can decide where it puts the desired element or perk. "),t._UZ(75,"div",5),t.TgZ(76,"div",10),t._uU(77,' Example Use Case: "The Class Item and Gauntlet '),t.TgZ(78,"span",9),t._uU(79,"must be stasis"),t.qZA(),t._uU(80,'. Oh, and I need two solar and one arc modslots, but the position does not matter". In this scenario, Class Item and Gauntlet would be '),t.TgZ(81,"span",9),t._uU(82,"Locked"),t.qZA(),t._uU(83," and the rest would be "),t.TgZ(84,"span",9),t._uU(85,"Unlocked"),t.qZA(),t._uU(86,". "),t.qZA(),t._UZ(87,"br"),t._uU(88," Legend: "),t.TgZ(89,"table",11)(90,"tr")(91,"td"),t._UZ(92,"app-armor-perk-icon",12),t.qZA(),t.TgZ(93,"td"),t._uU(94,"Vault of Glass"),t.qZA(),t.TgZ(95,"td"),t._UZ(96,"app-armor-perk-icon",12),t.qZA(),t.TgZ(97,"td"),t._uU(98,"Deep Stone Crypt"),t.qZA(),t.TgZ(99,"td"),t._UZ(100,"app-armor-perk-icon",12),t.qZA(),t.TgZ(101,"td"),t._uU(102,"Garden of Salvation"),t.qZA()(),t.TgZ(103,"tr")(104,"td"),t._UZ(105,"app-armor-perk-icon",12),t.qZA(),t.TgZ(106,"td"),t._uU(107,"Last Wish"),t.qZA(),t.TgZ(108,"td"),t._UZ(109,"app-armor-perk-icon",12),t.qZA(),t.TgZ(110,"td"),t._uU(111,"Vow of the Disciple"),t.qZA(),t.TgZ(112,"td"),t._UZ(113,"app-armor-perk-icon",12),t.qZA(),t.TgZ(114,"td"),t._uU(115,"Nightmare Modslot"),t.qZA()(),t.TgZ(116,"tr")(117,"td"),t._UZ(118,"app-armor-perk-icon",12),t.qZA(),t.TgZ(119,"td"),t._uU(120,"Artifice Modslot"),t.qZA(),t.TgZ(121,"td"),t._UZ(122,"app-armor-perk-icon",12),t.qZA(),t.TgZ(123,"td"),t._uU(124,"Iron Banner Perk"),t.qZA(),t.TgZ(125,"td"),t._UZ(126,"app-armor-perk-icon",12),t.qZA(),t.TgZ(127,"td"),t._uU(128,"Echoes of Glory Perk"),t.qZA()()()()()()),2&e&&(t.Q6J("ngIf",!o.allPossible),t.xp6(3),t.Q6J("slot",o.ArmorSlot.ArmorSlotHelmet),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotGauntlet),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotChest),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotLegs),t.xp6(2),t.Q6J("slot",o.ArmorSlot.ArmorSlotClass),t.xp6(5),t.Q6J("ngIf",o.disabledSlotLimitation),t.xp6(76),t.Q6J("perk",o.ArmorPerkOrSlot.SlotVaultOfGlass),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotDeepStoneCrypt),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotGardenOfSalvation),t.xp6(5),t.Q6J("perk",o.ArmorPerkOrSlot.SlotLastWish),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotVowOfTheDisciple),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.SlotNightmare),t.xp6(5),t.Q6J("perk",o.ArmorPerkOrSlot.SlotArtifice),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.PerkIronBanner),t.xp6(4),t.Q6J("perk",o.ArmorPerkOrSlot.PerkEchoesOfGlory))},dependencies:[I.O5,st.lW,St.Hw,wt.Ye,ct.pp,ct.ib,ct.yz,ct.yK,ct.u4,rr,_e,lr],styles:[".container[_ngcontent-%COMP%]{margin-bottom:10px}.impossible-container[_ngcontent-%COMP%]{text-align:center;margin-right:auto;margin-left:auto;width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content;font-size:15px;line-height:20px;margin-bottom:10px}.element-icon[_ngcontent-%COMP%]{height:30px;width:30px}.element-icon.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:default;pointer-events:none}.overlay-icon-container[_ngcontent-%COMP%]{position:relative}.overlay-icon-container[_ngcontent-%COMP%] .overlay-icon[_ngcontent-%COMP%]{width:20px;position:absolute;left:5px;bottom:9px;pointer-events:none}.modslot-legend[_ngcontent-%COMP%]{border-collapse:separate;border-spacing:0 0;width:100%}.modslot-legend[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:0}#explanation-description[_ngcontent-%COMP%]{width:520px}.minispace[_ngcontent-%COMP%]{height:7px}.text-highlight[_ngcontent-%COMP%]{color:#cddcef}.example-usecase[_ngcontent-%COMP%]{font-size:small;line-height:normal}"]}),n})();function ur(n,i){if(1&n&&t._UZ(0,"img",6),2&n){const e=t.oxw();t.s9C("alt",e.exoticPerk.name),t.MGl("src","https://bungie.net/",e.exoticPerk.icon,"",t.LSH)}}function pr(n,i){1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"Loading exotic perk.."),t.qZA()())}function gr(n,i){1&n&&(t.TgZ(0,"tr")(1,"td"),t._uU(2,"No (fixed) exotic perk available."),t.qZA()())}function _r(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td")(2,"span"),t._uU(3),t.qZA()()()),2&n){const e=t.oxw();t.xp6(3),t.Oqu(e.exoticPerk.name)}}function fr(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td",7),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.hij(" ",e.exoticPerk.description," ")}}function hr(n,i){1&n&&(t.ynx(0),t._uU(1," and "),t.BQk())}function xr(n,i){if(1&n&&(t.ynx(0),t._uU(1," in your collection "),t.YNc(2,hr,2,0,"ng-container",4),t.BQk()),2&n){const e=t.oxw(2);t.xp6(2),t.Q6J("ngIf",e.vendor)}}function yr(n,i){1&n&&(t.ynx(0),t._uU(1,"available at a vendor"),t.BQk())}function Cr(n,i){if(1&n&&(t.TgZ(0,"tr",8)(1,"td",7),t._uU(2," This exotic is not in your inventory but it is "),t.YNc(3,xr,3,1,"ng-container",4),t.YNc(4,yr,2,0,"ng-container",4),t._uU(5,". You can still generate a loadout with this exotic, but you will have to grab it by yourself. "),t.qZA()()),2&n){const e=t.oxw();t.xp6(3),t.Q6J("ngIf",e.collection),t.xp6(1),t.Q6J("ngIf",e.vendor)}}let Tr=(()=>{class n{constructor(e,o){this.inv=e,this.iconService=o,this.vendor=!1,this.collection=!1,this.exoticPerkNotThere=!1}ngOnInit(){var e=this;return(0,y.Z)(function*(){e.exoticPerk=yield e.iconService.getItemCached(e.armor?.exoticPerkHash??0),e.exoticPerkNotThere=null==e.exoticPerk})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Tt),t.Y36(pe))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-exotic-perk-tooltip"]],inputs:{armor:"armor",vendor:"vendor",collection:"collection"},decls:13,vars:7,consts:[[1,"tooltip-container"],["rowspan","2",1,"perk-icon-col"],["class","perk-icon",3,"alt","src",4,"ngIf"],[1,"exotic-name"],[4,"ngIf"],["class","collection-roll-info",4,"ngIf"],[1,"perk-icon",3,"alt","src"],["colspan","2"],[1,"collection-roll-info"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t.YNc(5,ur,1,2,"img",2),t.qZA(),t.TgZ(6,"td",3),t._uU(7),t.qZA()(),t.YNc(8,pr,3,0,"tr",4),t.YNc(9,gr,3,0,"tr",4),t.YNc(10,_r,4,1,"tr",4),t.YNc(11,fr,3,1,"tr",4),t.YNc(12,Cr,6,2,"tr",5),t.qZA()()()),2&e&&(t.xp6(5),t.Q6J("ngIf",o.exoticPerk),t.xp6(2),t.Oqu(null==o.armor?null:o.armor.name),t.xp6(1),t.Q6J("ngIf",!o.exoticPerk&&!o.exoticPerkNotThere),t.xp6(1),t.Q6J("ngIf",!o.exoticPerk&&o.exoticPerkNotThere),t.xp6(1),t.Q6J("ngIf",o.exoticPerk),t.xp6(1),t.Q6J("ngIf",o.exoticPerk),t.xp6(1),t.Q6J("ngIf",o.collection||o.vendor))},dependencies:[I.O5],styles:["[_nghost-%COMP%]{width:350px}.tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.perk-icon[_ngcontent-%COMP%]{width:50px;height:50px}.perk-icon-col[_ngcontent-%COMP%]{width:55px}.exotic-name[_ngcontent-%COMP%]{color:#eedb9e}.collection-roll-info[_ngcontent-%COMP%]{color:#5cc3ec;font-size:12px;margin-top:5px}"]}),n})(),vr=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a,this.showToolTip=!0,this.exoticTooltipInVendor=!1,this.exoticTooltipInCollection=!1}ngOnInit(){if(!this.showToolTip)return;const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){if(this._overlayRef&&!this._overlayRef.hasAttached()){const e=this._overlayRef.attach(new re.C5(Tr));e.instance.collection=this.exoticTooltipInCollection,e.instance.vendor=this.exoticTooltipInVendor,e.instance.armor=this.exoticTooltip}}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Jt.aV),t.Y36(Jt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","exoticTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{showToolTip:"showToolTip",exoticTooltip:"exoticTooltip",exoticTooltipInVendor:"exoticTooltipInVendor",exoticTooltipInCollection:"exoticTooltipInCollection",contentTemplate:"contentTemplate"}}),n})();function br(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"img",7,8),t.NdJ("click",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.selectExotic(-2,a))}),t.qZA()}if(2&n){const e=t.oxw(2);t.Gre("exoticIcon ",e.selectedExotics.indexOf(-2)>-1?"selected":"","")}}function Ar(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"img",9,8),t.NdJ("click",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.selectExotic(-1,a))}),t.qZA()}if(2&n){const e=t.oxw(2);t.Gre("exoticIcon ",e.selectedExotics.indexOf(-1)>-1?"selected":"","")}}function wr(n,i){if(1&n&&t._UZ(0,"img",14),2&n){const e=t.oxw().$implicit;t.MGl("src","https://www.bungie.net/",e.item.watermarkIcon,"",t.LSH)}}function Zr(n,i){if(1&n&&t._UZ(0,"div",15),2&n){const e=t.oxw().$implicit,o=t.oxw(2);t.ekj("vendor-item",o.includeVendorRolls&&e.inVendor)("collection-item",o.includeCollectionRolls&&e.inCollection)}}function Ir(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"span",10)(1,"img",11),t.NdJ("click",function(a){const r=t.CHM(e).$implicit,d=t.oxw(2);return t.KtG((r.inInventory||d.includeCollectionRolls&&r.inCollection)&&d.selectExotic(r.item.hash,a))}),t.qZA(),t.YNc(2,wr,1,1,"img",12),t.YNc(3,Zr,1,4,"div",13),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Gre("exoticIcon ",o.selectedExotics.indexOf(e.item.hash)>-1?"selected":"",""),t.ekj("vendor-item",!e.inInventory&&o.includeVendorRolls&&e.inVendor)("collection-item",!e.inInventory&&o.includeCollectionRolls&&e.inCollection)("disabled",!(e.inInventory||o.includeCollectionRolls&&e.inCollection||o.includeVendorRolls&&e.inVendor)),t.MGl("src","https://www.bungie.net/",e.item.icon,"",t.LSH),t.Q6J("exoticTooltip",e.item)("exoticTooltipInVendor",!e.inInventory&&o.includeVendorRolls&&e.inVendor)("exoticTooltipInCollection",!e.inInventory&&o.includeCollectionRolls&&e.inCollection),t.xp6(1),t.Q6J("ngIf",e.item.watermarkIcon),t.xp6(1),t.Q6J("ngIf",!e.inInventory)}}function Sr(n,i){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,br,2,3,"img",4),t.YNc(2,Ar,2,3,"img",5),t.YNc(3,Ir,4,15,"span",6),t.qZA()),2&n){const e=i.$implicit,o=i.index;t.Q6J("@listAnimation",e.length),t.xp6(1),t.Q6J("ngIf",0===o),t.xp6(1),t.Q6J("ngIf",0===o),t.xp6(1),t.Q6J("ngForOf",e)}}function Mr(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",16),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.refreshAll())}),t._uU(1," Manually refresh manifest and inventory "),t.qZA()}}const Or=(0,yt.X$)("listAnimation",[(0,yt.eR)("* <=> *",[(0,yt.IO)(":enter",[(0,yt.oB)({opacity:0}),(0,yt.EY)("30ms",(0,yt.jt)("350ms ease-out",(0,yt.oB)({opacity:1})))],{optional:!0})])]);let kr=(()=>{class n{constructor(e,o){this.inventory=e,this.config=o,this.selectedExotics=[],this.includeCollectionRolls=!1,this.includeVendorRolls=!1,this.ignoreSunsetArmor=!1,this.ignoreExistingExoticArtificeSlots=!1,this.allowBlueArmorPieces=!1,this.currentClass=0,this.exotics=[],this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,y.Z)(function*(a){(a.characterClass!=e.currentClass||0==e.exotics.length)&&(e.currentClass=a.characterClass,yield e.updateExoticsForClass()),e.includeCollectionRolls=a.includeCollectionRolls,e.includeVendorRolls=a.includeVendorRolls,e.selectedExotics=a.selectedExotics,e.ignoreSunsetArmor=a.ignoreSunsetArmor,e.allowBlueArmorPieces=a.allowBlueArmorPieces,e.ignoreExistingExoticArtificeSlots=a.ignoreExistingExoticArtificeSlots});return function(a){return o.apply(this,arguments)}}()),this.inventory.manifest.pipe((0,J.b)(10),(0,Ct.R)(this.ngUnsubscribe)).subscribe((0,y.Z)(function*(){yield e.updateExoticsForClass()})),this.inventory.inventory.pipe((0,J.b)(10),(0,Ct.R)(this.ngUnsubscribe)).subscribe((0,y.Z)(function*(){yield e.updateExoticsForClass()}))}updateExoticsForClass(){var e=this;return(0,y.Z)(function*(){const o=yield e.inventory.getExoticsForClass(e.currentClass);function a(s){var r={};return s.filter(function(d){var p=d.item.hash;return!r.hasOwnProperty(p)&&(r[p]=!0)})}e.exotics=[a(o.filter(s=>s.item.slot==T.y.ArmorSlotHelmet)),a(o.filter(s=>s.item.slot==T.y.ArmorSlotGauntlet)),a(o.filter(s=>s.item.slot==T.y.ArmorSlotChest)),a(o.filter(s=>s.item.slot==T.y.ArmorSlotLegs)),a(o.filter(s=>s.item.slot==T.y.ArmorSlotClass))]})()}setAllowCollectionRolls(e){this.config.modifyConfiguration(o=>{o.includeCollectionRolls=e})}setAllowVendorItems(e){this.config.modifyConfiguration(o=>{o.includeVendorRolls=e})}setAllowBlueArmorPieces(e){this.config.modifyConfiguration(o=>{o.allowBlueArmorPieces=e})}setIgnoreSunsetArmor(e){this.config.modifyConfiguration(o=>{o.ignoreSunsetArmor=e})}setIgnoreExistingExoticArtificeSlots(e){this.config.modifyConfiguration(o=>{o.ignoreExistingExoticArtificeSlots=e})}selectExotic(e,o){const a=this.selectedExotics.indexOf(e);a>-1?this.selectedExotics.splice(a,1):e==D.Io?this.selectedExotics=[D.Io]:(0==this.selectedExotics.length||!o.shiftKey)&&(this.selectedExotics=[e]),this.config.modifyConfiguration(s=>{s.selectedExotics=this.selectedExotics})}refreshAll(){var e=this;return(0,y.Z)(function*(){yield e.inventory.refreshAll(!0,!0)})()}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Tt),t.Y36(X))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-exotic-selection"]],decls:24,vars:7,consts:[[4,"ngFor","ngForOf"],["mat-raised-button","","color","warn",3,"click",4,"ngIf"],["color","primary",3,"checked","change"],["color","warn",3,"checked","change"],["src","https://www.bungie.net/common/destiny2_content/icons/763634b78eb22168ac707500588b7333.jpg","matTooltip","Force to use ANY exotic (that is NOT a class item)",3,"class","click",4,"ngIf"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png","matTooltip","Force to use NO exotic at all",3,"class","click",4,"ngIf"],["class","container",4,"ngFor","ngForOf"],["src","https://www.bungie.net/common/destiny2_content/icons/763634b78eb22168ac707500588b7333.jpg","matTooltip","Force to use ANY exotic (that is NOT a class item)",3,"click"],["tooltip","matTooltip"],["src","https://www.bungie.net/common/destiny2_content/icons/b4d05ef69d0c3227a7d4f7f35bbc2848.png","matTooltip","Force to use NO exotic at all",3,"click"],[1,"container"],[3,"src","exoticTooltip","exoticTooltipInVendor","exoticTooltipInCollection","click"],["class","watermarkIcon",3,"src",4,"ngIf"],["class","item-source-overlay",3,"vendor-item","collection-item",4,"ngIf"],[1,"watermarkIcon",3,"src"],[1,"item-source-overlay"],["mat-raised-button","","color","warn",3,"click"]],template:function(e,o){1&e&&(t.YNc(0,Sr,4,4,"div",0),t.TgZ(1,"div"),t.YNc(2,Mr,2,0,"button",1),t.qZA(),t.TgZ(3,"div")(4,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setAllowCollectionRolls(s.checked)}),t._uU(5," Include "),t.TgZ(6,"u"),t._uU(7,"exotic"),t.qZA(),t._uU(8," collection rolls "),t.qZA()(),t.TgZ(9,"div")(10,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setAllowVendorItems(s.checked)}),t._uU(11," Include "),t.TgZ(12,"u"),t._uU(13,"legendary and exotic"),t.qZA(),t._uU(14," vendor armor (slower) "),t.qZA()(),t.TgZ(15,"div")(16,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setAllowBlueArmorPieces(s.checked)}),t._uU(17," Include white, blue and green items "),t.qZA()(),t.TgZ(18,"div")(19,"mat-slide-toggle",2),t.NdJ("change",function(s){return o.setIgnoreSunsetArmor(!s.checked)}),t._uU(20," Include sunset armor "),t.qZA()(),t.TgZ(21,"div")(22,"mat-slide-toggle",3),t.NdJ("change",function(s){return o.setIgnoreExistingExoticArtificeSlots(s.checked)}),t._uU(23," Ignore existing artifice slots on exotics (useful for the exotic class item) "),t.qZA()()),2&e&&(t.Q6J("ngForOf",o.exotics),t.xp6(2),t.Q6J("ngIf",0===o.exotics.length||0===o.exotics[0].length),t.xp6(2),t.Q6J("checked",o.includeCollectionRolls),t.xp6(6),t.Q6J("checked",o.includeVendorRolls),t.xp6(6),t.Q6J("checked",o.allowBlueArmorPieces),t.xp6(3),t.Q6J("checked",!o.ignoreSunsetArmor),t.xp6(3),t.Q6J("checked",o.ignoreExistingExoticArtificeSlots))},dependencies:[I.sg,I.O5,st.lW,ee.Rr,pt.gM,vr],styles:[".container[_ngcontent-%COMP%]{display:inline-block;position:relative;--icon-size: 36px}.exoticIcon[_ngcontent-%COMP%]{width:36px;height:36px;margin-right:3px;border:rgba(0,0,0,0) solid 2px;cursor:pointer}.watermarkIcon[_ngcontent-%COMP%]{width:36px;height:36px;margin-left:-41px;margin-top:2px;position:absolute;pointer-events:none}.exoticIcon[_ngcontent-%COMP%]:hover{border:cornflowerblue solid 2px}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%]:hover{border:#0059ff solid 2px}[_nghost-%COMP%]{position:relative}.exoticText[_ngcontent-%COMP%]{position:absolute;text-shadow:0 0 6px #000000;background:rgba(33,33,33,.51);color:#f5f5f5;bottom:4px;right:5px}.disabled[_ngcontent-%COMP%]{filter:grayscale(1) contrast(.6)}.disabled[_ngcontent-%COMP%]:hover{cursor:default}.item-source-overlay[_ngcontent-%COMP%]{margin:2px}.item-source-overlay[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:0;pointer-events:none;border-top:calc(var(--icon-size) / 2) solid transparent;border-right:calc(var(--icon-size) / 2) solid transparent}.item-source-overlay.vendor-item[_ngcontent-%COMP%]{border-top-color:#00f}.item-source-overlay.collection-item[_ngcontent-%COMP%]{border-top-color:#90ee90}"],data:{animation:[Or]}}),n})(),Er=(()=>{class n{constructor(e,o,a){var s=this;this.auth=e,this.membership=o,this.inventory=a,this.characters=[],this.loadCachedData(),this.auth.logoutEvent.subscribe(r=>this.clearCachedData()),this.inventory.inventory.subscribe((0,y.Z)(function*(){yield s.updateCharacterData()}))}clearCachedData(){this.characters=[],localStorage.removeItem("cachedCharacters")}loadCachedData(){let e=localStorage.getItem("cachedCharacters")||"[]";this.characters=JSON.parse(e)}updateCharacterData(){var e=this;return(0,y.Z)(function*(){e.characters=yield e.membership.getCharacters(),localStorage.setItem("cachedCharacters",JSON.stringify(e.characters))})()}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(gt),t.LFG(Ut),t.LFG(Tt))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})();function Ur(n,i){1&n&&(t.TgZ(0,"div",11),t._uU(1," Loading characters.. "),t.qZA())}function Dr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Titan"),t.qZA())}function Pr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Hunter"),t.qZA())}function Rr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Warlock"),t.qZA())}function Nr(n,i){if(1&n&&(t.TgZ(0,"div"),t._UZ(1,"img",14),t.TgZ(2,"span",15),t._uU(3),t.qZA()()),2&n){const e=t.oxw().$implicit,o=t.oxw();t.xp6(3),t.hij("\xd7",o.itemCounts[e.clazz],"")}}function qr(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",12),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.selectClass(s.clazz))}),t.TgZ(1,"div",13),t.YNc(2,Dr,2,0,"span",3),t.YNc(3,Pr,2,0,"span",3),t.YNc(4,Rr,2,0,"span",3),t.qZA(),t.YNc(5,Nr,4,1,"div",3),t.qZA()}if(2&n){const e=i.$implicit,o=i.index,a=t.oxw();t.Udp("background-image","url(https://bungie.net/"+e.emblemUrl+")"),t.ekj("selected",a.selectedClass===e.clazz),t.xp6(2),t.Q6J("ngIf",0===e.clazz),t.xp6(1),t.Q6J("ngIf",1===e.clazz),t.xp6(1),t.Q6J("ngIf",2===e.clazz),t.xp6(1),t.Q6J("ngIf",!!a.itemCounts[o])}}function Fr(n,i){if(1&n&&(t.TgZ(0,"div")(1,"span",16),t._UZ(2,"img",17),t._uU(3),t.ALo(4,"number"),t.qZA(),t.TgZ(5,"span",16),t._UZ(6,"img",18),t._uU(7),t.ALo(8,"number"),t.qZA(),t.TgZ(9,"span",16),t._UZ(10,"img",19),t._uU(11),t.ALo(12,"number"),t.qZA(),t.TgZ(13,"span",16),t._UZ(14,"img",20),t._uU(15),t.ALo(16,"number"),t.qZA(),t.TgZ(17,"span",16),t._UZ(18,"img",21),t._uU(19),t.ALo(20,"number"),t.qZA()()),2&n){const e=t.oxw();t.xp6(1),t.MGl("matTooltip","Exotic Cipher: ",e.storedMaterials[3467984096],""),t.xp6(2),t.hij(" ",t.xi3(4,10,e.storedMaterials[3467984096],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Ascendant Shards: ",e.storedMaterials[4257549985],""),t.xp6(2),t.hij(" ",t.xi3(8,13,e.storedMaterials[4257549985],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Enhancement Prisms: ",e.storedMaterials[4257549984],""),t.xp6(2),t.hij(" ",t.xi3(12,16,e.storedMaterials[4257549984],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Enhancement Cores: ",e.storedMaterials[3853748946],""),t.xp6(2),t.hij(" ",t.xi3(16,19,e.storedMaterials[3853748946],"1.0-0")," "),t.xp6(2),t.MGl("matTooltip","Glimmer: ",e.storedMaterials[3159615086],""),t.xp6(2),t.hij(" ",t.xi3(20,22,e.storedMaterials[3159615086],"1.0-0")," ")}}let Jr=(()=>{class n{constructor(e,o,a){this.config=e,this.userdata=o,this.inv=a,this.itemCounts=[null,null,null],this.selectedClass=-1,this.storedMaterials=null,this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(o=>{this.selectedClass=o.characterClass;const a=-1!=this.userdata.characters.findIndex(s=>s.clazz==o.characterClass);this.userdata.characters.length>0&&!a&&this.config.modifyConfiguration(s=>{s.characterClass=this.userdata.characters[0].clazz,s.selectedExotics=[]})}),this.inv.inventory.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,y.Z)(function*(a){yield e.loadStoredMaterials(),yield e.updateItemCount()});return function(a){return o.apply(this,arguments)}}())}selectClass(e){this.config.readonlyConfigurationSnapshot.characterClass!=e&&this.config.modifyConfiguration(o=>{o.characterClass=e,o.selectedExotics=[]})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}updateItemCount(){var e=this;return(0,y.Z)(function*(){for(let o=0;o<3;o++)e.itemCounts[o]=yield e.inv.getItemCountForClass(o)})()}loadStoredMaterials(){var e=this;return(0,y.Z)(function*(){var o=JSON.parse(localStorage.getItem("stored-materials")||"{}");"3853748946"in o||(o[3853748946]=0),"4257549984"in o||(o[4257549984]=0),"4257549985"in o||(o[4257549985]=0),"3159615086"in o||(o[3159615086]=0),"3467984096"in o||(o[3467984096]=0),e.storedMaterials=o})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(Er),t.Y36(Tt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-class-selection"]],decls:22,vars:3,consts:[[1,"character-container"],["class","character-entry",4,"ngIf"],["class","character-entry","style","float: left",3,"selected","background-image","click",4,"ngFor","ngForOf"],[4,"ngIf"],["color","primary","fxShow","false","fxShow.lt-md","true","mat-flat-button","","routerLink","/help",2,"margin-left","15px"],["inline",""],["color","accent","href","https://ko-fi.com/mijago","matTooltip","You like my work? This leads you to ko-fi.com, where you can easily support me!","target","_blank"],["color","accent","href","http://discord.d2armorpicker.com","target","_blank"],[1,"crayon_logo_container"],["alt","","src","https://cdn.discordapp.com/emojis/917423317139480586.webp?size=96&quality=lossless",1,"crayon_logo"],["href","https://mijago.github.io/Crayon","target","_blank"],[1,"character-entry"],[1,"character-entry",2,"float","left",3,"click"],[1,"class-text"],["matTooltip","Amount of armor pieces for this class.","src","data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 51 51'%3e%3cpath d='M24.77 7.03c-8.15.38-14.42 7.41-14.42 15.57v16.06c0 .23.13.44.34.53l10.33 4.68c.78.35 1.66-.22 1.66-1.07V31.9c0-.39-.19-.75-.52-.97l-5.39-3.64c-.87-.52-1.43-1.5-1.34-2.61.13-1.46 1.46-2.52 2.93-2.52h4.36c.65 0 1.17.53 1.17 1.17v6.71s0 .61 1.61.61 1.61-.61 1.61-.61v-6.71c0-.65.52-1.17 1.17-1.17h4.36c1.47 0 2.8 1.06 2.93 2.52.1 1.11-.47 2.09-1.34 2.61l-5.39 3.64c-.32.22-.52.58-.52.97v10.91c0 .85.88 1.42 1.66 1.07l10.33-4.68c.21-.1.34-.3.34-.53v-16.5c.01-8.61-7.18-15.55-15.88-15.14z'/%3e%3c/svg%3e",1,"head-icon"],["matTooltip","Amount of armor pieces for this class.",1,"armor-text"],[1,"material-listing",3,"matTooltip"],["src","https://www.bungie.net/common/destiny2_content/icons/9970631fe1052642c268132dfc30e16b.jpg","alt","Exotic Cipher"],["src","https://www.bungie.net/common/destiny2_content/icons/0271d214fc3ec91b3def799a4b286b46.jpg","alt","Ascendant Shard"],["src","https://www.bungie.net/common/destiny2_content/icons/dea2a35badf7466d4c2c2697ce6e8d87.jpg","alt","Enhancement Prism"],["src","https://www.bungie.net/common/destiny2_content/icons/0a4eb695ed55b4e720ddc401460cc0f9.jpg","alt","Enhancement Core"],["src","https://www.bungie.net/common/destiny2_content/icons/88993eaeedad32f42072df6f77f47311.png","alt","Glimmer"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Ur,2,0,"div",1),t.YNc(2,qr,6,8,"div",2),t.qZA(),t.YNc(3,Fr,21,25,"div",3),t.TgZ(4,"a",4)(5,"mat-icon",5),t._uU(6,"help"),t.qZA(),t._uU(7," Help and Information about D2ArmorPicker\n"),t.qZA(),t.TgZ(8,"div"),t._uU(9," If you like my work, you can "),t.TgZ(10,"a",6),t._uU(11," support me here."),t.qZA(),t._uU(12," You can also "),t.TgZ(13,"a",7),t._uU(14," join my dev Discord! "),t.qZA(),t.TgZ(15,"div"),t._uU(16," Also check out my Discord-Bot "),t.TgZ(17,"div",8),t._UZ(18,"img",9),t.qZA(),t.TgZ(19,"a",10),t._uU(20,"Crayon"),t.qZA(),t._uU(21,", for all your item information needs! "),t.qZA()()),2&e&&(t.xp6(1),t.Q6J("ngIf",0===o.userdata.characters.length),t.xp6(1),t.Q6J("ngForOf",o.userdata.characters),t.xp6(1),t.Q6J("ngIf",null!==o.storedMaterials))},dependencies:[I.sg,I.O5,M.b8,st.zs,pt.gM,St.Hw,ot.yS,I.JJ],styles:[".discord-btn[_ngcontent-%COMP%]{margin-left:15px}.material-listing[_ngcontent-%COMP%]{position:relative;padding-left:22px;padding-right:10px}.material-listing[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:20px;position:absolute;top:-2px;left:0}.crayon_logo_container[_ngcontent-%COMP%]{position:relative;width:22px;display:inline-block;margin-right:3px}.crayon_logo_container[_ngcontent-%COMP%] .crayon_logo[_ngcontent-%COMP%]{position:absolute;width:22px;top:-14px} .mat-option-text{color:#fff}.character-container[_ngcontent-%COMP%]{height:50px}.character-entry[_ngcontent-%COMP%]{color:#fff;background-size:cover;background-position:left center;background-repeat:no-repeat;width:180px;height:36px;position:relative;margin-right:7px;margin-bottom:7px;border:rgba(255,255,255,0) solid 2px;opacity:.75;cursor:pointer}.character-entry[_ngcontent-%COMP%]:hover{border:rgba(255,255,255,.41) solid 2px;opacity:.98}.character-entry.selected[_ngcontent-%COMP%]{cursor:default;opacity:1;border:white solid 2px}.class-text[_ngcontent-%COMP%]{position:absolute;left:35px;top:8px;font-size:x-large;text-shadow:0 0 6px #000000}.head-icon[_ngcontent-%COMP%]{height:25px;top:6px;right:30px;position:absolute;filter:invert(1) drop-shadow(1px 1px 3px rgba(0,0,0,.25))!important}.armor-text[_ngcontent-%COMP%]{position:absolute;right:4px;top:9px;text-shadow:0 0 6px #000000;font-size:small}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}"]}),n})();var Lr=_(7580);let Yr=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-mod-description-tooltip"]],inputs:{mod:"mod"},decls:9,vars:2,consts:[[1,"tooltip-container"],[1,"exotic-name"]],template:function(e,o){1&e&&(t.TgZ(0,"div")(1,"div",0)(2,"table")(3,"tr")(4,"td",1),t._uU(5),t.qZA()(),t.TgZ(6,"tr")(7,"td"),t._uU(8),t.qZA()()()()()),2&e&&(t.xp6(5),t.Oqu(null==o.mod?null:o.mod.name),t.xp6(3),t.Oqu(null==o.mod?null:o.mod.description))},styles:["[_nghost-%COMP%]{width:350px}.tooltip-container[_ngcontent-%COMP%]{border:1px solid gray;padding:1px 5px 4px;background:linear-gradient(#484848 0px,#2c2c2c 100%)}.exotic-name[_ngcontent-%COMP%]{color:#eedb9e}"]}),n})(),Br=(()=>{class n{constructor(e,o,a){this._overlay=e,this._overlayPositionBuilder=o,this._elementRef=a}ngOnInit(){const e=this._overlayPositionBuilder.flexibleConnectedTo(this._elementRef).withPositions([{originX:"center",originY:"bottom",overlayX:"center",overlayY:"top",offsetY:5},{originX:"center",originY:"top",overlayX:"center",overlayY:"bottom",offsetY:-5}]);this._overlayRef=this._overlay.create({positionStrategy:e}),this._overlayRef.addPanelClass("overlay-no-pointer-event")}show(){this._overlayRef&&!this._overlayRef.hasAttached()&&(this._overlayRef.attach(new re.C5(Yr)).instance.mod=this.mod)}hide(){this.closeToolTip()}ngOnDestroy(){this.closeToolTip()}closeToolTip(){this._overlayRef&&this._overlayRef.detach()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Jt.aV),t.Y36(Jt.wJ),t.Y36(t.SBq))},n.\u0275dir=t.lG2({type:n,selectors:[["","modTooltip",""]],hostBindings:function(e,o){1&e&&t.NdJ("mouseenter",function(){return o.show()})("mouseleave",function(){return o.hide()})},inputs:{mod:["modTooltip","mod"]}}),n})();function Vr(n,i){if(1&n){const e=t.EpF();t.ynx(0),t._UZ(1,"br"),t.TgZ(2,"mat-button-toggle-group",4)(3,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Arc))}),t._uU(4," Arc "),t.qZA(),t.TgZ(5,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Solar))}),t._uU(6," Solar "),t.qZA(),t.TgZ(7,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Void))}),t._uU(8," Void "),t.qZA(),t.TgZ(9,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Stasis))}),t._uU(10," Stasis "),t.qZA(),t.TgZ(11,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Strand))}),t._uU(12," Strand "),t.qZA(),t.TgZ(13,"mat-button-toggle",5),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.setElement(a.ModifierType.Prismatic))}),t._uU(14," Prismatic "),t.qZA()(),t.BQk()}if(2&n){const e=t.oxw(2);t.xp6(2),t.Q6J("value",e.selectedElement),t.xp6(1),t.Q6J("value",e.ModifierType.Arc),t.xp6(2),t.Q6J("value",e.ModifierType.Solar),t.xp6(2),t.Q6J("value",e.ModifierType.Void),t.xp6(2),t.Q6J("value",e.ModifierType.Stasis),t.xp6(2),t.Q6J("value",e.ModifierType.Strand),t.xp6(2),t.Q6J("value",e.ModifierType.Prismatic)}}function Qr(n,i){if(1&n&&(t.TgZ(0,"h3",8),t._uU(1),t.qZA()),2&n){const e=t.oxw(2).$implicit;t.xp6(1),t.Oqu(e.name)}}function Hr(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"There are no fragments configured yet. Please be patient."),t.qZA())}function Wr(n,i){1&n&&(t.TgZ(0,"th",22),t._uU(1,"Name"),t.qZA())}function jr(n,i){if(1&n&&(t.TgZ(0,"td",23)(1,"mat-slide-toggle",24),t._UZ(2,"app-item-icon",25),t._uU(3),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw(4);t.Q6J("modTooltip",e),t.xp6(1),t.Q6J("checked",o.selectedMods.indexOf(e.id)>-1),t.xp6(1),t.Q6J("itemHash",e.hash),t.xp6(1),t.hij(" ",e.name," ")}}function Gr(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",0))}function zr(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function Kr(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function $r(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,zr,2,1,"span",29),t.YNc(2,Kr,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function Xr(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,$r,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,0))}}function tl(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",1))}function el(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function nl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function ol(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,el,2,1,"span",29),t.YNc(2,nl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function il(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,ol,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,1))}}function al(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",2))}function sl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function rl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function ll(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,sl,2,1,"span",29),t.YNc(2,rl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function cl(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,ll,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,2))}}function ml(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",3))}function dl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function ul(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function pl(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,dl,2,1,"span",29),t.YNc(2,ul,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function gl(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,pl,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,3))}}function _l(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",4))}function fl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function hl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function xl(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,fl,2,1,"span",29),t.YNc(2,hl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function yl(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,xl,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,4))}}function Cl(n,i){1&n&&(t.TgZ(0,"th",22),t._UZ(1,"app-stat-icon",26),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",5))}function Tl(n,i){if(1&n&&(t.TgZ(0,"span",31),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.hij("+",e,"")}}function vl(n,i){if(1&n&&(t.TgZ(0,"span",32),t._uU(1),t.qZA()),2&n){const e=t.oxw().ngVar;t.xp6(1),t.Oqu(e)}}function bl(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Tl,2,1,"span",29),t.YNc(2,vl,2,1,"span",30),t.qZA()),2&n){const e=i.ngVar;t.xp6(1),t.Q6J("ngIf",e>0),t.xp6(1),t.Q6J("ngIf",e<0)}}function Al(n,i){if(1&n&&(t.TgZ(0,"td",27),t.YNc(1,bl,3,2,"span",28),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(4);t.xp6(1),t.Q6J("ngVar",o.getModifierTextForValue(e.bonus,5))}}function wl(n,i){1&n&&t._UZ(0,"tr",33)}function Zl(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"tr",34),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw(4);return t.KtG(r.handleRowClick(s))}),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw(4);t.ekj("selected",o.selectedMods.indexOf(e.id)>-1)}}function Il(n,i){if(1&n&&(t.TgZ(0,"table",9),t.ynx(1,10),t.YNc(2,Wr,2,0,"th",11),t.YNc(3,jr,4,4,"td",12),t.BQk(),t.ynx(4,13),t.YNc(5,Gr,2,1,"th",11),t.YNc(6,Xr,2,1,"td",14),t.BQk(),t.ynx(7,15),t.YNc(8,tl,2,1,"th",11),t.YNc(9,il,2,1,"td",14),t.BQk(),t.ynx(10,16),t.YNc(11,al,2,1,"th",11),t.YNc(12,cl,2,1,"td",14),t.BQk(),t.ynx(13,17),t.YNc(14,ml,2,1,"th",11),t.YNc(15,gl,2,1,"td",14),t.BQk(),t.ynx(16,18),t.YNc(17,_l,2,1,"th",11),t.YNc(18,yl,2,1,"td",14),t.BQk(),t.ynx(19,19),t.YNc(20,Cl,2,1,"th",11),t.YNc(21,Al,2,1,"td",14),t.BQk(),t.YNc(22,wl,1,0,"tr",20),t.YNc(23,Zl,1,2,"tr",21),t.qZA()),2&n){const e=t.oxw(2).$implicit,o=t.oxw();t.Q6J("dataSource",e.data),t.xp6(22),t.Q6J("matHeaderRowDef",o.displayedColumns),t.xp6(1),t.Q6J("matRowDefColumns",o.displayedColumns)}}function Sl(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Qr,2,1,"h3",6),t.YNc(2,Hr,2,0,"span",3),t.YNc(3,Il,24,3,"table",7),t.BQk()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngIf",!e.group),t.xp6(1),t.Q6J("ngIf",0===e.data.length),t.xp6(1),t.Q6J("ngIf",e.data.length>0)}}function Ml(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Vr,15,7,"ng-container",3),t.YNc(2,Sl,4,3,"ng-container",3),t.qZA()),2&n){const e=i.$implicit,o=i.index,a=t.oxw();t.xp6(1),t.Q6J("ngIf",0===o),t.xp6(1),t.Q6J("ngIf",!e.group||e.type===a.selectedElement)}}let Ol=(()=>{class n{constructor(e){this.config=e,this.ModifierType=k.O,this.ModOrAbility=Lr.U,this.displayedColumns=["name","mobility","resilience","recovery","discipline","intellect","strength"],this.selectedClass=3,this.selectedMods=[],this.selectedElement=k.O.Solar,this.ngUnsubscribe=new R.xQ;const o=Object.values(N.F).sort((a,s)=>a.name.toLowerCase()s.name.toLowerCase()?1:0);this.data=[{name:"Stasis Fragments",data:o.filter(a=>a.type==k.O.Stasis),group:!0,type:k.O.Stasis},{name:"Void Fragments",data:o.filter(a=>a.type==k.O.Void),group:!0,type:k.O.Void},{name:"Solar Fragments",data:o.filter(a=>a.type==k.O.Solar),group:!0,type:k.O.Solar},{name:"Arc Fragments",data:o.filter(a=>a.type==k.O.Arc),group:!0,type:k.O.Arc},{name:"Strand Fragments",data:o.filter(a=>a.type==k.O.Strand),group:!0,type:k.O.Strand},{name:"Prismatic Fragments",data:o.filter(a=>a.type==k.O.Prismatic),group:!0,type:k.O.Prismatic}],this.dataSource=o}ngOnInit(){this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(e=>{this.selectedMods=e.enabledMods,this.selectedClass=e.characterClass,this.selectedElement=e.selectedModElement})}getModifierTextForValue(e,o){return e.filter(a=>a.stat==o||a.stat==c.AR.ClassAbilityRegenerationStat&&(0==this.selectedClass&&o==c.WB.Resilience||1==this.selectedClass&&o==c.WB.Mobility||2==this.selectedClass&&o==c.WB.Recovery)).reduce((a,s)=>a+s.value,0)}handleRowClick(e){this.config.modifyConfiguration(o=>{const a=o.enabledMods.indexOf(e.id);a>-1?o.enabledMods.splice(a,1):o.enabledMods.push(e.id)})}clear(){this.config.modifyConfiguration(e=>{e.enabledMods=[]})}setElement(e){this.selectedElement!=e&&this.config.modifyConfiguration(o=>{const a=o.enabledMods.filter(s=>N.F[s].type!=k.O.CombatStyleMod&&N.F[s].type!=e);o.selectedModElement=e;for(let s of a){const r=o.enabledMods.indexOf(s);o.enabledMods.splice(r,1)}})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-desired-mods-selection"]],features:[t._Bn([{provide:ee.HT,useValue:{disableToggleValue:!1,disableDragValue:!0}}])],decls:4,vars:1,consts:[[4,"ngFor","ngForOf"],["id","clear-container"],["color","warn","mat-stroked-button","",3,"click"],[4,"ngIf"],[3,"value"],[3,"value","click"],["class","stat-part-title",4,"ngIf"],["mat-table","",3,"dataSource",4,"ngIf"],[1,"stat-part-title"],["mat-table","",3,"dataSource"],["matColumnDef","name"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",3,"modTooltip",4,"matCellDef"],["matColumnDef","mobility"],["mat-cell","",4,"matCellDef"],["matColumnDef","resilience"],["matColumnDef","recovery"],["matColumnDef","discipline"],["matColumnDef","intellect"],["matColumnDef","strength"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",3,"selected","click",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell","",3,"modTooltip"],["color","primary","disabled","",2,"cursor","pointer !important",3,"checked"],[3,"itemHash"],[3,"stat"],["mat-cell",""],[4,"ngVar"],["class","stat-positive",4,"ngIf"],["class","stat-negative",4,"ngIf"],[1,"stat-positive"],[1,"stat-negative"],["mat-header-row",""],["mat-row","",3,"click"]],template:function(e,o){1&e&&(t.YNc(0,Ml,3,2,"span",0),t.TgZ(1,"div",1)(2,"button",2),t.NdJ("click",function(){return o.clear()}),t._uU(3,"Clear the whole selection"),t.qZA()()),2&e&&t.Q6J("ngForOf",o.data)},dependencies:[I.sg,I.O5,st.lW,ee.Rr,G.BZ,G.fO,G.as,G.w1,G.Dz,G.nj,G.ge,G.ev,G.XQ,G.Gk,Dt.A9,Dt.Yi,fe,zt,ge,Br],styles:[".mat-slide-toggle.mat-disabled[_ngcontent-%COMP%]{opacity:1}.stat-part-title[_ngcontent-%COMP%]{margin-top:10px;margin-bottom:5px}.modTable[_ngcontent-%COMP%]{width:100%}.mat-header-row[_ngcontent-%COMP%], .mat-row[_ngcontent-%COMP%]{height:30px}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-resilience[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-discipline[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%], .mat-column-strength[_ngcontent-%COMP%], .mat-column-cost[_ngcontent-%COMP%]{min-width:40px;text-align:center}.mat-row[_ngcontent-%COMP%]:hover{background-color:#494949}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%]{background-color:#464646}.mat-column-name[_ngcontent-%COMP%]{padding-right:4px;border-right:1px solid currentColor;min-width:150px}.mat-column-name[_ngcontent-%COMP%] app-item-icon[_ngcontent-%COMP%]{float:left;margin-right:5px}.mat-row[_ngcontent-%COMP%]{cursor:pointer}th.mat-header-cell[_ngcontent-%COMP%]:last-of-type, td.mat-cell[_ngcontent-%COMP%]:last-of-type, td.mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.mat-cell[_ngcontent-%COMP%]:last-of-type, .mat-header-cell[_ngcontent-%COMP%]:last-of-type, .mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.stat-negative[_ngcontent-%COMP%], .stat-positive[_ngcontent-%COMP%]{margin-right:3px}.stat-negative[_ngcontent-%COMP%]{color:#f08080}.stat-positive[_ngcontent-%COMP%]{color:#b6cbfc}.stat-display[_ngcontent-%COMP%]{width:60px;float:left;align-content:end;text-align:right}.mat-row[_ngcontent-%COMP%]:hover, .mat-row[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#494949}.mat-row.selected[_ngcontent-%COMP%]:hover, .mat-row.selected[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#89b2ff30}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-mobility[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-recovery[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-intellect[_ngcontent-%COMP%]{background-color:#89b2ff1c}.mat-column-name[_ngcontent-%COMP%]{min-width:190px}.element-icon[_ngcontent-%COMP%]{width:22px}#clear-container[_ngcontent-%COMP%]{padding-top:10px}#retrofit-table[_ngcontent-%COMP%] .rft-icon-container[_ngcontent-%COMP%]{width:22px;display:inline-block}#retrofit-table[_ngcontent-%COMP%] .rft-icon-container[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{position:relative}#retrofit-table[_ngcontent-%COMP%] .rft-icon-container[_ngcontent-%COMP%] app-stat-icon[_ngcontent-%COMP%]{position:absolute;top:-22px;left:-10px}"]}),n})();function kl(n,i){if(1&n&&(t.TgZ(0,"mat-icon",8,9),t._uU(2," help "),t.qZA()),2&n){const e=t.oxw().$implicit;t.s9C("matTooltip",e.help)}}function El(n,i){1&n&&(t.TgZ(0,"mat-icon",10,9),t._uU(2," report_problem "),t.qZA())}function Ul(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",4)(1,"mat-slide-toggle",5),t.NdJ("change",function(a){const r=t.CHM(e).$implicit;return t.KtG(r.cp(a.checked))}),t._uU(2),t.qZA(),t.YNc(3,kl,3,1,"mat-icon",6),t.YNc(4,El,3,0,"mat-icon",7),t.qZA()}if(2&n){const e=i.$implicit;t.xp6(1),t.Q6J("disabled",e.disabled)("checked",e.value),t.xp6(1),t.hij(" ",e.name," "),t.xp6(1),t.Q6J("ngIf",e.help),t.xp6(1),t.Q6J("ngIf",e.impactsResultCount)}}function Dl(n,i){if(1&n&&(t.TgZ(0,"div")(1,"span",1),t._uU(2),t.qZA(),t.YNc(3,Ul,5,5,"div",2),t._UZ(4,"div",3),t.qZA()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.Oqu(e),t.xp6(1),t.Q6J("ngForOf",o.fields2[e])}}let Pl=(()=>{class n{constructor(e){this.config=e,this.fields2={},this.fieldKeys=[],this.ngUnsubscribe=new R.xQ}ngOnInit(){this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(e=>{this.fields2={Events:[{name:"Enforce the usage of a Festival of the Lost Mask.",cp:o=>this.config.modifyConfiguration(a=>a.useFotlArmor=o),value:e.useFotlArmor,disabled:!1,impactsResultCount:!0,help:"Only use a FotL masks. You will not get results if you do not own the mask."}],Masterwork:[{name:"Assume all legendary items are masterworked",cp:o=>this.config.modifyConfiguration(a=>a.assumeLegendariesMasterworked=o),value:e.assumeLegendariesMasterworked,disabled:!1,impactsResultCount:!1,help:void 0},{name:"Assume all legendary class items are masterworked",cp:o=>this.config.modifyConfiguration(a=>a.assumeClassItemMasterworked=o),value:e.assumeClassItemMasterworked,disabled:!1,impactsResultCount:!1,help:"If this setting is enabled, a plain +2 is added to every stat. This means that your Class Item must be masterworked. Ignored if you select an exotic class item."},{name:"Assume all exotic items are masterworked",cp:o=>this.config.modifyConfiguration(a=>a.assumeExoticsMasterworked=o),value:e.assumeExoticsMasterworked,disabled:!1,impactsResultCount:!1,help:"If this setting is enabled, the tool will treat non-masterworked exotic armor as if it were masterworked-."},{name:"Only use already masterworked exotic items",cp:o=>this.config.modifyConfiguration(a=>a.onlyUseMasterworkedExotics=o),value:e.onlyUseMasterworkedExotics,disabled:!1,impactsResultCount:!0,help:void 0},{name:"Only use already masterworked legendary items",cp:o=>this.config.modifyConfiguration(a=>a.onlyUseMasterworkedLegendaries=o),value:e.onlyUseMasterworkedLegendaries,disabled:!1,impactsResultCount:!0,help:void 0}],"Artifice Slots":[{name:"Assume every legendary class item is an artifice armor.",cp:o=>this.config.modifyConfiguration(a=>a.assumeClassItemIsArtifice=o),value:e.assumeClassItemIsArtifice||e.assumeEveryLegendaryIsArtifice,disabled:e.assumeEveryLegendaryIsArtifice,impactsResultCount:!0,help:"This is for debugging purposes. No support if you enable this."},{name:"Assume every legendary is an artifice armor.",cp:o=>this.config.modifyConfiguration(a=>a.assumeEveryLegendaryIsArtifice=o),value:e.assumeEveryLegendaryIsArtifice,disabled:!1,impactsResultCount:!0,help:"This is for debugging purposes. No support if you enable this."},{name:"Assume every exotic has an artifice slot.",cp:o=>this.config.modifyConfiguration(a=>a.assumeEveryExoticIsArtifice=o),value:e.assumeEveryExoticIsArtifice,disabled:!1,impactsResultCount:!0,help:"Preparation for the upcoming Artifice Mod Slot for exotics."}],"Performance Optimization":[{name:"Use security features to prevent app crashes (resets on reload).",cp:o=>this.config.modifyConfiguration(a=>a.limitParsedResults=o),value:e.limitParsedResults,disabled:!1,impactsResultCount:!0,help:"Only parse the first 30,000 results. Deactivating this may crash your browser. The results will still be limited to 1,000,000 entries. Note that you will not miss any significant results by leaving this enabled."}],"Extra Columns":[{name:"Show maximum reachable tiers in the Tiers-Column instead of real Tiers.",cp:o=>this.config.modifyConfiguration(a=>a.showPotentialTierColumn=o),value:e.showPotentialTierColumn,disabled:!1,impactsResultCount:!1,help:"Shows an additional column in the table that shows how many tiers this build would have, if all stat mods were used. This is important when builds do not use all 5 stat mods."},{name:"Show the wasted stats in an extra column.",cp:o=>this.config.modifyConfiguration(a=>a.showWastedStatsColumn=o),value:e.showWastedStatsColumn,disabled:!1,impactsResultCount:!1,help:"Shows an additional column in the table that shows how many stats are wasted in a build."}],"Wasted Stats":[{name:"Try to optimize wasted stats (slower)",cp:o=>this.config.modifyConfiguration(a=>a.tryLimitWastedStats=o),value:e.tryLimitWastedStats,disabled:!1,impactsResultCount:!1,help:"The tool will try to add minor stat mods to minimize wasted stats. This only works for combinations that fulfill your desired stat combination with enough mods so at least one mod slot is still open."},{name:"Only show builds with no wasted stats",cp:o=>this.config.modifyConfiguration(a=>a.onlyShowResultsWithNoWastedStats=o),value:g.N.featureFlags.enableZeroWaste&&e.onlyShowResultsWithNoWastedStats,disabled:!g.N.featureFlags.enableZeroWaste,impactsResultCount:!0,help:"Only show builds with zero wasted stats - this means, its highly likely that you won't get any results."}],"Data-Science":[{name:"Add a constant +1 resilience to the results with non-exotic chests (resets on reload).",cp:o=>this.config.modifyConfiguration(a=>a.addConstent1Resilience=o),value:e.addConstent1Resilience,disabled:!1,impactsResultCount:!1,help:"You usually do not want to use this."},{name:"Replace the tier selection with text fields for exact stat values.",cp:o=>this.config.modifyConfiguration(a=>{if(a.allowExactStats=o,!o)for(let s of Object.values(a.minimumStatTiers))s.value=Math.floor(s.value)}),value:e.allowExactStats,disabled:!1,impactsResultCount:!0,help:"This is a beta feature. Usability and quality may vary a lot."}]},this.fieldKeys=Object.keys(this.fields2)})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-advanced-settings"]],decls:1,vars:1,consts:[[4,"ngFor","ngForOf"],[1,"category-header"],["class","adv-settings",4,"ngFor","ngForOf"],[1,"category-spacer"],[1,"adv-settings"],["color","primary",3,"disabled","checked","change"],["inline","","aria-hidden","false","aria-label","Help",3,"matTooltip",4,"ngIf"],["inline","","aria-hidden","false","aria-label","Help","class","report-problem-icon","matTooltip","This setting might impact the amount of results. It may happen that you won't get any results if you change this setting. In this case, simply switch it back to its default state.",4,"ngIf"],["inline","","aria-hidden","false","aria-label","Help",3,"matTooltip"],["tooltip","matTooltip"],["inline","","aria-hidden","false","aria-label","Help","matTooltip","This setting might impact the amount of results. It may happen that you won't get any results if you change this setting. In this case, simply switch it back to its default state.",1,"report-problem-icon"]],template:function(e,o){1&e&&t.YNc(0,Dl,5,2,"div",0),2&e&&t.Q6J("ngForOf",o.fieldKeys)},dependencies:[I.sg,I.O5,ee.Rr,pt.gM,St.Hw],styles:[".category-spacer[_ngcontent-%COMP%]{height:3px}.category-header[_ngcontent-%COMP%]{font-style:italic}.adv-settings[_ngcontent-%COMP%]{margin-left:20px}.report-problem-icon[_ngcontent-%COMP%]{color:#f08080}"]}),n})(),le=(()=>{class n{constructor(e,o){this.dialogRef=e,this.data=o}onNoClick(){this.dialogRef.close()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(kt.so),t.Y36(kt.WI))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-confirm-dialog"]],decls:10,vars:2,consts:[["mat-dialog-title",""],["mat-dialog-content",""],["mat-dialog-actions",""],["mat-button","",3,"click"],["mat-raised-button","","color","primary",3,"mat-dialog-close"]],template:function(e,o){1&e&&(t.TgZ(0,"h1",0),t._uU(1,"Confirm"),t.qZA(),t.TgZ(2,"div",1)(3,"p"),t._uU(4),t.qZA()(),t.TgZ(5,"div",2)(6,"button",3),t.NdJ("click",function(){return o.onNoClick()}),t._uU(7,"No Thanks"),t.qZA(),t.TgZ(8,"button",4),t._uU(9,"Ok"),t.qZA()()),2&e&&(t.xp6(4),t.Oqu(o.data.description),t.xp6(4),t.Q6J("mat-dialog-close",!0))},dependencies:[st.lW,kt.ZT,kt.uh,kt.xY,kt.H8]}),n})();var Rl=_(4385);function Nl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Titan"),t.qZA())}function ql(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Hunter"),t.qZA())}function Fl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Warlock"),t.qZA())}function Jl(n,i){if(1&n&&(t.TgZ(0,"mat-option",30)(1,"span"),t._uU(2,"("),t.YNc(3,Nl,2,0,"span",26),t.YNc(4,ql,2,0,"span",26),t.YNc(5,Fl,2,0,"span",26),t._uU(6,") "),t.qZA(),t.TgZ(7,"span"),t._uU(8),t.qZA()()),2&n){const e=i.$implicit;t.Q6J("value",e.name),t.xp6(3),t.Q6J("ngIf",0===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",1===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",2===e.configuration.characterClass),t.xp6(3),t.hij(" ",e.name,"")}}function Ll(n,i){1&n&&(t.TgZ(0,"th",31),t._uU(1,"Name"),t.qZA())}function Yl(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij("",e.name," ")}}function Bl(n,i){1&n&&(t.TgZ(0,"th",31),t._uU(1," Class "),t.qZA())}function Vl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Titan"),t.qZA())}function Ql(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Hunter"),t.qZA())}function Hl(n,i){1&n&&(t.TgZ(0,"span"),t._uU(1,"Warlock"),t.qZA())}function Wl(n,i){if(1&n&&(t.TgZ(0,"td",32),t.YNc(1,Vl,2,0,"span",26),t.YNc(2,Ql,2,0,"span",26),t.YNc(3,Hl,2,0,"span",26),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",0===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",1===e.configuration.characterClass),t.xp6(1),t.Q6J("ngIf",2===e.configuration.characterClass)}}function jl(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",0))}function Gl(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[0].value," ")}}function zl(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",1))}function Kl(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[1].value," ")}}function $l(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",2))}function Xl(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[2].value," ")}}function tc(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",3))}function ec(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[3].value," ")}}function nc(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",4))}function oc(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[4].value," ")}}function ic(n,i){1&n&&(t.TgZ(0,"th",31),t._UZ(1,"app-stat-icon",33),t.qZA()),2&n&&(t.xp6(1),t.Q6J("stat",5))}function ac(n,i){if(1&n&&(t.TgZ(0,"td",32),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",10*e.configuration.minimumStatTiers[5].value," ")}}function sc(n,i){1&n&&t._UZ(0,"th",31)}function rc(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"td",32)(1,"button",34),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.delete(s.name))}),t.TgZ(2,"mat-icon"),t._uU(3,"delete_forever"),t.qZA()(),t.TgZ(4,"button",35),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.load(s.name))}),t.TgZ(5,"mat-icon"),t._uU(6,"check_circle_outline"),t.qZA()(),t.TgZ(7,"button",36),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw();return t.KtG(r.copySingleSettingToClipboard(s))}),t.TgZ(8,"mat-icon"),t._uU(9,"get_app"),t.qZA()()()}}function lc(n,i){1&n&&t._UZ(0,"tr",37)}function cc(n,i){1&n&&t._UZ(0,"tr",38)}function mc(n,i){if(1&n){const e=t.EpF();t.ynx(0),t._UZ(1,"br"),t.TgZ(2,"button",39),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.copyAllSettingsToClipboard())}),t._uU(3," Copy all saved configurations to the clipboard "),t.qZA(),t.BQk()}}let dc=(()=>{class n{constructor(e,o,a,s,r){this.config=e,this.formBuilder=o,this.dialog=a,this._snackBar=s,this.clipboard=r,this.selectedEntry="",this.storedConfigs=[],this.displayedColumns=["name","class","mobility","resilience","recovery","discipline","intellect","strength","delete"],this.ngUnsubscribe=new R.xQ,this.settingsNameForm=this.formBuilder.group({name:[null]}),this.importTextForm=this.formBuilder.group({content:[null]})}ngOnInit(){this.config.storedConfigurations.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(e=>this.storedConfigs=e)}submit(){const e=this.settingsNameForm.get("name")?.value;!e||(this.config.doesSavedConfigurationExist(e)?this.dialog.open(le,{width:"300px",data:{description:"Do you want to overwrite this configuration?"}}).afterClosed().subscribe(a=>{a&&(this.config.saveCurrentConfigurationToName(e),this.settingsNameForm.reset(),this.selectedEntry=e)}):(this.config.saveCurrentConfigurationToName(e),this.settingsNameForm.reset(),this.selectedEntry=e))}delete(e){this.dialog.open(le,{width:"300px",data:{description:"Do you want to delete this configuration?"}}).afterClosed().subscribe(a=>{a&&this.config.deleteStoredConfiguration(e)})}clearEverything(){this.dialog.open(le,{width:"300px",data:{description:"Do you want to clear all settings?"}}).afterClosed().subscribe(o=>{o&&this.config.resetCurrentConfiguration()})}load(e){this.dialog.open(le,{width:"300px",data:{description:"Do you want to load this preset?"}}).afterClosed().subscribe(a=>{a&&this.config.loadSavedConfiguration(e)})}runImport(){const e=this.importTextForm.get("content")?.value;if(!e)return this.openSnackBar("Invalid input.");try{const o=P.decompress(e,{inputEncoding:"Base64"}),a="["==o.substr(0,1);let s=JSON.parse(o);a||(s=[s]),console.log("Incoming json:",s);for(let r of s)this.config.checkAndFixOldSavedConfigurations(r),r.hasOwnProperty("name")?a?this.config.saveConfiguration(r.name,r.configuration):this.config.saveCurrentConfiguration(r.configuration):this.config.saveCurrentConfiguration(r);this.openSnackBar("Successfully loaded this configuration"),this.importTextForm.get("content")?.reset()}catch(o){this.openSnackBar("Invalid input."),console.error(o)}}copySingleSettingToClipboard(e){this.clipboard.copy(this.config.getStoredConfigurationBase64Compressed(e.name)),this.openSnackBar("Copied the configuration to your clipboard. You can share it with your friends.")}copyAllSettingsToClipboard(){this.clipboard.copy(this.config.getAllStoredConfigurationsBase64Compressed()),this.openSnackBar("Exported all configurations to the clipboard. You can then save and share them.")}openSnackBar(e){this._snackBar.open(e,"",{duration:2500,politeness:"polite"})}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(At.QS),t.Y36(kt.uw),t.Y36(ue.ux),t.Y36(te.TU))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-load-and-save-settings"]],decls:78,vars:13,consts:[[3,"formGroup","submit"],["id","settings"],["appearance","outline"],["formControlName","name","matInput","","maxlength","30","minlength","4","placeholder","Awesome Discipline Build 4"],["color","primary","mat-raised-button","","type","submit",3,"disabled"],["color","warn","mat-raised-button","","matTooltip","Clears the ENTIRE configuration and uses the default settings. Use with caution.",3,"click"],["color","primary","mat-raised-button","","matTooltip","Copy your current configuration into your clipboard. You will be able to share it with others and import it later.",3,"cdkCopyToClipboard","click"],[2,"display","none"],[3,"value","disabled","valueChange"],[3,"value",4,"ngFor","ngForOf"],["color","primary","mat-raised-button","","matTooltip","Load the currently selected configuration.",3,"disabled","click"],["color","warn","mat-stroked-button","","matTooltip","Delete the currently selected configuration. Can not be undone.",3,"disabled","click"],["mat-table","",3,"dataSource"],["matColumnDef","name"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","class"],["matColumnDef","mobility"],["matColumnDef","resilience"],["matColumnDef","recovery"],["matColumnDef","discipline"],["matColumnDef","intellect"],["matColumnDef","strength"],["matColumnDef","delete"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],[4,"ngIf"],[3,"formGroup"],["formControlName","content","matInput",""],["color","primary","mat-raised-button","","matTooltip","Import the given configuration",3,"click"],[3,"value"],["mat-header-cell",""],["mat-cell",""],[3,"stat"],["color","warn","mat-icon-button","","matTooltip","Delete this configuration permanently.",3,"click"],["color","primary","mat-icon-button","","matTooltip","Load this configuration. Your current settings will be overwritten.",3,"click"],["color","primary","mat-icon-button","","matTooltip","Copy this configuration into your clipboard. You will be able to share it with others and import it later.",3,"click"],["mat-header-row",""],["mat-row",""],["color","primary","mat-raised-button","","matTooltip","Export all configurations to the clipboard. You can then save and share them.",3,"click"]],template:function(e,o){if(1&e&&(t.TgZ(0,"form",0),t.NdJ("submit",function(){return o.submit()}),t.TgZ(1,"table",1)(2,"tr")(3,"td")(4,"mat-form-field",2)(5,"mat-label"),t._uU(6,"Name to save the configuration"),t.qZA(),t._UZ(7,"input",3),t.qZA()(),t.TgZ(8,"td")(9,"button",4),t._uU(10," Save current "),t.qZA()(),t.TgZ(11,"td")(12,"button",5),t.NdJ("click",function(){return o.clearEverything()}),t._uU(13,"Clear everything "),t.qZA()(),t.TgZ(14,"td")(15,"button",6),t.NdJ("click",function(){return o.openSnackBar("Copied the configuration to your clipboard. You can share it with your friends.")}),t._uU(16," Copy Current "),t.qZA()()(),t.TgZ(17,"tr",7)(18,"td")(19,"mat-form-field",2)(20,"mat-label"),t._uU(21,"Load saved configuration"),t.qZA(),t.TgZ(22,"mat-select",8),t.NdJ("valueChange",function(s){return o.selectedEntry=s}),t.YNc(23,Jl,9,5,"mat-option",9),t.qZA()()(),t.TgZ(24,"td")(25,"button",10),t.NdJ("click",function(){return o.load(o.selectedEntry)}),t._uU(26,"Load "),t.qZA()(),t.TgZ(27,"td")(28,"button",11),t.NdJ("click",function(){return o.delete(o.selectedEntry)}),t._uU(29,"Delete "),t.qZA()()()()(),t._UZ(30,"br"),t.TgZ(31,"table",12),t.ynx(32,13),t.YNc(33,Ll,2,0,"th",14),t.YNc(34,Yl,2,1,"td",15),t.BQk(),t.ynx(35,16),t.YNc(36,Bl,2,0,"th",14),t.YNc(37,Wl,4,3,"td",15),t.BQk(),t.ynx(38,17),t.YNc(39,jl,2,1,"th",14),t.YNc(40,Gl,2,1,"td",15),t.BQk(),t.ynx(41,18),t.YNc(42,zl,2,1,"th",14),t.YNc(43,Kl,2,1,"td",15),t.BQk(),t.ynx(44,19),t.YNc(45,$l,2,1,"th",14),t.YNc(46,Xl,2,1,"td",15),t.BQk(),t.ynx(47,20),t.YNc(48,tc,2,1,"th",14),t.YNc(49,ec,2,1,"td",15),t.BQk(),t.ynx(50,21),t.YNc(51,nc,2,1,"th",14),t.YNc(52,oc,2,1,"td",15),t.BQk(),t.ynx(53,22),t.YNc(54,ic,2,1,"th",14),t.YNc(55,ac,2,1,"td",15),t.BQk(),t.ynx(56,23),t.YNc(57,sc,1,0,"th",14),t.YNc(58,rc,10,0,"td",15),t.BQk(),t.YNc(59,lc,1,0,"tr",24),t.YNc(60,cc,1,0,"tr",25),t.qZA(),t.YNc(61,mc,4,0,"ng-container",26),t._UZ(62,"br"),t.TgZ(63,"div"),t._UZ(64,"hr"),t.TgZ(65,"h2"),t._uU(66,"Import a previously exported configuration"),t.qZA(),t.TgZ(67,"form",27)(68,"table")(69,"tr")(70,"td")(71,"mat-form-field",2)(72,"mat-label"),t._uU(73,"Copied configuration"),t.qZA(),t._UZ(74,"input",28),t.qZA()(),t.TgZ(75,"td")(76,"button",29),t.NdJ("click",function(){return o.runImport()}),t._uU(77," Start the import "),t.qZA()()()()()()),2&e){let a;t.Q6J("formGroup",o.settingsNameForm),t.xp6(9),t.Q6J("disabled",!(null!=(a=o.settingsNameForm.get("name"))&&a.value)||(null==(a=o.settingsNameForm.get("name"))?null:a.value.length)<4||(null==(a=o.settingsNameForm.get("name"))?null:a.value.length)>30),t.xp6(6),t.Q6J("cdkCopyToClipboard",o.config.getCurrentConfigBase64Compressed()),t.xp6(7),t.Q6J("value",o.selectedEntry)("disabled",0===o.storedConfigs.length),t.xp6(1),t.Q6J("ngForOf",o.storedConfigs),t.xp6(2),t.Q6J("disabled",!o.selectedEntry||0===o.storedConfigs.length),t.xp6(3),t.Q6J("disabled",!o.selectedEntry||0===o.storedConfigs.length),t.xp6(3),t.Q6J("dataSource",o.storedConfigs),t.xp6(28),t.Q6J("matHeaderRowDef",o.displayedColumns),t.xp6(1),t.Q6J("matRowDefColumns",o.displayedColumns),t.xp6(1),t.Q6J("ngIf",o.storedConfigs.length>0),t.xp6(6),t.Q6J("formGroup",o.importTextForm)}},dependencies:[I.sg,I.O5,At._Y,At.Fj,At.JJ,At.JL,At.wO,At.nD,At.sg,At.u,st.lW,Pt.KE,Pt.hX,Rl.gD,we.ey,ne.Nt,G.BZ,G.fO,G.as,G.w1,G.Dz,G.nj,G.ge,G.ev,G.XQ,G.Gk,pt.gM,St.Hw,te.i3,fe],styles:[".modTable[_ngcontent-%COMP%]{width:100%}.mat-header-row[_ngcontent-%COMP%], .mat-row[_ngcontent-%COMP%]{height:30px}.mat-column-class[_ngcontent-%COMP%]{min-width:55px;padding-right:2px;padding-left:2px;text-align:center;border-right:1px solid currentColor}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-resilience[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-discipline[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%], .mat-column-strength[_ngcontent-%COMP%]{min-width:40px;text-align:center}.mat-row[_ngcontent-%COMP%]:hover{background-color:#494949}.mat-column-mobility[_ngcontent-%COMP%], .mat-column-recovery[_ngcontent-%COMP%], .mat-column-intellect[_ngcontent-%COMP%]{background-color:#464646}.mat-column-name[_ngcontent-%COMP%]{padding-right:4px;border-right:1px solid currentColor;min-width:150px}th.mat-header-cell[_ngcontent-%COMP%]:last-of-type, td.mat-cell[_ngcontent-%COMP%]:last-of-type, td.mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.mat-cell[_ngcontent-%COMP%]:last-of-type, .mat-header-cell[_ngcontent-%COMP%]:last-of-type, .mat-footer-cell[_ngcontent-%COMP%]:last-of-type{padding-right:0}.stat-negative[_ngcontent-%COMP%], .stat-positive[_ngcontent-%COMP%]{margin-right:3px}.stat-negative[_ngcontent-%COMP%]{color:#f08080}.stat-positive[_ngcontent-%COMP%]{color:#6495ed}.stat-display[_ngcontent-%COMP%]{width:60px;float:left;align-content:end;text-align:right}.mat-row[_ngcontent-%COMP%]:hover, .mat-row[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#494949}.mat-row.selected[_ngcontent-%COMP%]:hover, .mat-row.selected[_ngcontent-%COMP%]:hover .mat-cell[_ngcontent-%COMP%]{background-color:#89b2ff30}.selected[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-mobility[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-recovery[_ngcontent-%COMP%], .selected[_ngcontent-%COMP%] .mat-column-intellect[_ngcontent-%COMP%]{background-color:#89b2ff1c}.mat-column-load[_ngcontent-%COMP%], .mat-column-delete[_ngcontent-%COMP%]{padding-left:3px;padding-right:3px}[_nghost-%COMP%] .mat-form-field-wrapper{margin:0!important;padding:0}"]}),n})();function uc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Helmets"),t.qZA())}function pc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Gauntlets"),t.qZA())}function gc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Chest Pieces"),t.qZA())}function _c(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Legs"),t.qZA())}function fc(n,i){1&n&&(t.TgZ(0,"div"),t._uU(1,"Class Items"),t.qZA())}function hc(n,i){1&n&&t._UZ(0,"br")}function xc(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"span",5)(1,"img",6),t.NdJ("click",function(){const s=t.CHM(e).$implicit,r=t.oxw(3);return t.KtG(r.enableItem(s.itemInstanceId))}),t.qZA(),t.YNc(2,hc,1,0,"br",3),t.qZA()}if(2&n){const e=i.$implicit,o=i.index,a=t.oxw(3);t.xp6(1),t.MGl("src","https://bungie.net/",e.icon,"",t.LSH),t.Q6J("matTooltip",a.generateTooltip(e)),t.xp6(1),t.Q6J("ngIf",(o+1)%10==0)}}function yc(n,i){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,uc,2,0,"div",3),t.YNc(2,pc,2,0,"div",3),t.YNc(3,gc,2,0,"div",3),t.YNc(4,_c,2,0,"div",3),t.YNc(5,fc,2,0,"div",3),t.YNc(6,xc,3,3,"span",4),t.qZA()),2&n){const e=i.$implicit,o=i.index;t.xp6(1),t.Q6J("ngIf",1===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",2===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",3===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",4===o&&e.length>0),t.xp6(1),t.Q6J("ngIf",5===o&&e.length>0),t.xp6(1),t.Q6J("ngForOf",e)}}function Cc(n,i){if(1&n&&(t.TgZ(0,"div",1),t.YNc(1,yc,7,6,"div",2),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngForOf",e.disabledItems)}}let Tc=(()=>{class n{constructor(e,o){this.config=e,this.db=o,this.disabledItems=[],this.characterClass=null,this.ngUnsubscribe=new R.xQ}enableItem(e){this.config.modifyConfiguration(o=>{o.disabledItems.splice(o.disabledItems.indexOf(e),1)})}generateTooltip(e){return"Click this icon to activate this item again.\r\n"+e.name+" "+(e.mobility+(e.masterworked?2:0))+"/"+(e.resilience+(e.masterworked?2:0))+"/"+(e.recovery+(e.masterworked?2:0))+"/"+(e.discipline+(e.masterworked?2:0))+"/"+(e.intellect+(e.masterworked?2:0))+"/"+(e.strength+(e.masterworked?2:0))}ngOnInit(){var e=this;this.config.configuration.pipe((0,Ct.R)(this.ngUnsubscribe)).subscribe(function(){var o=(0,y.Z)(function*(a){e.characterClass=null;const s=[[],[],[],[],[],[]];let r=[];for(let d of a.disabledItems){let p=yield e.db.inventoryArmor.where("itemInstanceId").equals(d).first();p&&r.push(p)}for(let d of r)s[d.slot].push(d);e.characterClass=a.characterClass;for(let d of s)d.sort((p,A)=>p.hash-A.hash);e.disabledItems=s});return function(a){return o.apply(this,arguments)}}())}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(X),t.Y36(w))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-ignored-items-list"]],decls:1,vars:1,consts:[["class","item-icon-container",4,"ngIf"],[1,"item-icon-container"],[4,"ngFor","ngForOf"],[4,"ngIf"],["class","item-sub",4,"ngFor","ngForOf"],[1,"item-sub"],["matTooltipClass","allow-cr",1,"item-icon",3,"src","matTooltip","click"]],template:function(e,o){1&e&&t.YNc(0,Cc,2,1,"div",0),2&e&&t.Q6J("ngIf",null!==o.characterClass)},dependencies:[I.sg,I.O5,pt.gM],styles:[".item-icon[_ngcontent-%COMP%]{width:40px}.item-icon[_ngcontent-%COMP%]:hover{filter:brightness(.8) hue-rotate(350deg) saturate(3) blur(2px) contrast(.6);cursor:not-allowed}.item-sub[_ngcontent-%COMP%]{margin-right:3px}.item-icon-container[_ngcontent-%COMP%]{position:relative;contain:layout paint style;box-sizing:border-box;width:var(--item-size);transition:opacity .2s,transform .2s}"]}),n})(),vc=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-settings"]],decls:71,vars:0,consts:[["id","card-config"],["id","content-char-selection"],["inline","","aria-hidden","false","aria-label","Help","matTooltip","Cooldowns and Stats provided by Clarity."],["tooltip","matTooltip"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0)(1,"mat-card")(2,"mat-card-title"),t._uU(3,"Character Selection"),t.qZA(),t.TgZ(4,"mat-card-content",1),t._UZ(5,"app-desired-class-selection"),t.qZA()(),t.TgZ(6,"mat-card")(7,"mat-card-title"),t._uU(8,"Select the stats you want to achieve"),t.qZA(),t.TgZ(9,"mat-card-subtitle"),t._uU(10,"The heart of this tool. Select the stats you want! "),t.TgZ(11,"mat-icon",2,3),t._uU(13," info "),t.qZA()(),t.TgZ(14,"mat-card-content"),t._UZ(15,"app-desired-stat-selection"),t.qZA()(),t.TgZ(16,"mat-card")(17,"mat-card-title"),t._uU(18,"Armor Selection"),t.qZA(),t.TgZ(19,"mat-card-subtitle"),t._uU(20," This section allows you to limit the armor pieces that are used in the buildcrafting process."),t._UZ(21,"br"),t._uU(22," If you want, limit all results to one exotic. "),t._UZ(23,"br"),t._uU(24," Exotics you do not have in the inventory or vault are grayed out. "),t.qZA(),t.TgZ(25,"mat-card-content"),t._UZ(26,"app-desired-exotic-selection"),t.qZA()(),t.TgZ(27,"mat-card")(28,"mat-card-title"),t._uU(29,"Armor limitation"),t.qZA(),t.TgZ(30,"mat-card-subtitle"),t._uU(31," This section allows you to further specify what kind of armor and mods you want. "),t.qZA(),t.TgZ(32,"mat-card-content"),t._UZ(33,"app-desired-mod-selection"),t.qZA()(),t.TgZ(34,"mat-card")(35,"mat-card-title"),t._uU(36,"Stat-Boost Selection"),t.qZA(),t.TgZ(37,"mat-card-subtitle"),t._uU(38,"Select Mods and Skills that affect your overall stats."),t._UZ(39,"br"),t._uU(40," Please note that D2AP also allows theoretical, but impossible input."),t._UZ(41,"br"),t.TgZ(42,"b"),t._uU(43,"Only fragments that affect stats are shown."),t.qZA()(),t.TgZ(44,"mat-card-content"),t._UZ(45,"app-desired-mods-selection"),t.qZA()(),t.TgZ(46,"mat-card")(47,"mat-card-title"),t._uU(48,"Advanced Settings"),t.qZA(),t.TgZ(49,"mat-card-subtitle"),t._uU(50,"More settings! Use them to fine-tune your buildcrafting process."),t.qZA(),t.TgZ(51,"mat-card-content"),t._UZ(52,"app-advanced-settings"),t.qZA()(),t.TgZ(53,"mat-card")(54,"mat-card-title"),t._uU(55,"Disabled Armor Pieces"),t.qZA(),t.TgZ(56,"mat-card-subtitle"),t._uU(57," These armor pieces are disabled. Click them to enable them again."),t._UZ(58,"br"),t._uU(59," They won't show up in any results."),t._UZ(60,"br"),t._uU(61," You can disable items in the detailed result overview. "),t.qZA(),t.TgZ(62,"mat-card-content"),t._UZ(63,"app-ignored-items-list"),t.qZA()(),t.TgZ(64,"mat-card")(65,"mat-card-title"),t._uU(66,"Configuration Management"),t.qZA(),t.TgZ(67,"mat-card-subtitle"),t._uU(68,"Save and load your buildcrafting settings for another day!"),t.qZA(),t.TgZ(69,"mat-card-content"),t._UZ(70,"app-load-and-save-settings"),t.qZA()()())},dependencies:[Y.a8,Y.dn,Y.n5,Y.$j,pt.gM,St.Hw,Bs,dr,kr,Jr,Ol,Pl,dc,Tc],styles:["#card-config[_ngcontent-%COMP%]{width:-moz-fit-content;width:fit-content;display:inline-block;vertical-align:top;white-space:normal;margin-bottom:20px;margin-left:3px;margin-right:3px}#card-config[_ngcontent-%COMP%] > mat-card[_ngcontent-%COMP%]{margin-bottom:4px}#content-char-selection[_ngcontent-%COMP%]{margin-bottom:0}"]}),n})(),bc=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-picker-page"]],decls:3,vars:0,consts:[["id","container"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t._UZ(1,"app-settings")(2,"app-results"),t.qZA())},dependencies:[vc,be],styles:["#container[_ngcontent-%COMP%]{width:-moz-fit-content;width:fit-content;margin-right:3px;white-space:nowrap}"]}),n})();const Me=function(){return["","Mobility","Resilience","Recovery","Discipline","Intellect","Strength"]};function Ac(n,i){if(1&n&&(t.TgZ(0,"tr",27)(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td",22)(4,"div",28),t._UZ(5,"div",29),t.TgZ(6,"span",30),t._uU(7),t.ALo(8,"number"),t.qZA()()()()),2&n){const e=t.oxw().index,o=t.oxw(2).index,a=t.oxw();t.Q6J("matTooltip",t.DdM(9,Me)[e]),t.xp6(2),t.hij(" ",t.DdM(10,Me)[e]," "),t.xp6(3),t.Jzz("width:",a.clusterInformation[o].mean[e]/32*100,"%"),t.xp6(2),t.hij(" ",t.xi3(8,6,a.clusterInformation[o].mean[e],"1.0-0")," ")}}function wc(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Ac,9,11,"tr",26),t.BQk()),2&n){const e=i.index;t.xp6(1),t.Q6J("ngIf",e>0)}}function Zc(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-card",21)(1,"mat-card-title"),t._uU(2),t.qZA(),t.TgZ(3,"mat-card-subtitle"),t._uU(4),t.qZA(),t.TgZ(5,"mat-card-content")(6,"div")(7,"table",22),t.YNc(8,wc,2,1,"ng-container",18),t.qZA()(),t.TgZ(9,"mat-form-field",23)(10,"mat-label"),t._uU(11,"DIM Search Query"),t.qZA(),t._UZ(12,"input",24),t.qZA(),t.TgZ(13,"button",25),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.openSnackBar("Copied the DIM search query to your clipboard."))}),t._uU(14," Copy DIM query to clipboard "),t.qZA()()()}if(2&n){const e=t.oxw(),o=e.index,a=e.$implicit,s=t.oxw();t.xp6(2),t.hij(" Cluster ",o+1," "),t.xp6(2),t.AsE(" Contains ",a.length," item",a.length>1?"s":""," "),t.xp6(4),t.Q6J("ngForOf",s.clusterInformation[o].mean),t.xp6(4),t.Q6J("value",s.getDIMStringForCluster(a)),t.xp6(1),t.Q6J("cdkCopyToClipboard",s.getDIMStringForCluster(a))}}function Ic(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Zc,15,6,"mat-card",20),t.BQk()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf",e.length>0)}}var Oe=[{id:0,size:214,centroids:[5.242990654205609,3.4392523364485994,23.074766355140188,4.52336448598131,17.99532710280374,8.074766355140188],std:[3.262185500658884,3.137958193527344,2.0745611905196912,3.223158380401712,2.6478649185881147,3.356022774004607,3.3823650213485315],mean:[62.350467289719624,5.242990654205608,3.439252336448598,23.074766355140188,4.5233644859813085,17.99532710280374,8.074766355140186]},{id:1,size:264,centroids:[13.613636363636365,3.060606060606063,14.431818181818182,6.731060606060606,12.575757575757574,10.575757575757576],std:[4.915624932359143,2.735897756946947,1.897597343200423,3.036390647550984,3.2253188618447473,3.0097969617389406,3.1372197425220545],mean:[60.98863636363637,13.613636363636363,3.0606060606060606,14.431818181818182,6.731060606060606,12.575757575757576,10.575757575757576]},{id:2,size:220,centroids:[5.209090909090909,15.586363636363636,10.936363636363636,13.281818181818181,13.604545454545452,3.8818181818181836],std:[3.3631090204013643,2.931782865076046,2.9200605883727038,3.289049973803757,2.6349662061268395,2.6591750828428204,2.395703224398619],mean:[62.5,5.209090909090909,15.586363636363636,10.936363636363636,13.281818181818181,13.604545454545455,3.881818181818182]},{id:3,size:230,centroids:[8.6,15.330434782608698,6.943478260869563,6.408695652173913,5.578260869565216,18.26086956521739],std:[4.27370926113142,3.855014315301441,3.2487061290912984,3.5081098914433078,3.559587955581114,3.1761194803539676,3.596667444705349],mean:[61.12173913043478,8.6,15.330434782608696,6.943478260869565,6.408695652173913,5.578260869565217,18.26086956521739]},{id:4,size:261,centroids:[11.74712643678161,5.655172413793104,13.873563218390803,11.022988505747126,16.57088122605364,3.0038314176245224],std:[3.5878146263573103,2.8197860971981994,2.9890605143791737,2.9825309245974925,2.7497287061744258,2.8324620286123516,1.8428616632651005],mean:[61.87356321839081,11.74712643678161,5.655172413793103,13.873563218390805,11.022988505747126,16.57088122605364,3.003831417624521]},{id:5,size:249,centroids:[6.598393574297189,7.2289156626506035,7.674698795180722,6.831325301204822,5.995983935742974,7.425702811244981],std:[12.188382924990831,3.7780346472852226,3.7855581933977014,3.9659084518463055,3.2508780840166134,2.4288222155150856,3.23718036285365],mean:[41.75502008032129,6.598393574297189,7.228915662650603,7.674698795180723,6.831325301204819,5.995983935742972,7.42570281124498]},{id:6,size:241,centroids:[4.580912863070541,10.62655601659751,15.72199170124481,20.186721991701248,5.7634854771784205,4.8672199170124495],std:[4.0360666526825675,2.5776864620318327,2.726712032141287,2.7236414380869185,3.4135743182998106,3.164594939982558,2.8952195061747896],mean:[61.74688796680498,4.580912863070539,10.62655601659751,15.721991701244812,20.186721991701244,5.763485477178423,4.867219917012448]},{id:7,size:352,centroids:[4.96875,10.849431818181818,15.676136363636362,5.085227272727275,13.079545454545453,12.113636363636365],std:[3.864447558701623,2.876694966732471,2.825917840642513,2.8500410080793133,2.604753041986593,2.753797030174534,3.084495990290069],mean:[61.77272727272727,4.96875,10.849431818181818,15.676136363636363,5.0852272727272725,13.079545454545455,12.113636363636363]},{id:8,size:219,centroids:[21.401826484018265,4.529680365296804,4.954337899543379,14.022831050228312,7.168949771689496,6.8036529680365305],std:[7.654498360234386,3.856746305047457,3.0774088630224354,3.486239910130717,4.509361233853425,3.691515724130434,3.433882092856456],mean:[58.881278538812786,21.401826484018265,4.529680365296803,4.954337899543379,14.02283105022831,7.168949771689498,6.80365296803653]},{id:9,size:183,centroids:[4.448087431693989,22.114754098360656,4.868852459016392,7.459016393442623,11.240437158469945,9.765027322404372],std:[7.900837110469869,3.265921971202623,3.896032191192026,3.424902708986657,3.3556927380910535,3.7206143627650876,3.9564220813839577],mean:[59.89617486338798,4.448087431693989,22.114754098360656,4.868852459016393,7.459016393442623,11.240437158469945,9.765027322404372]},{id:10,size:197,centroids:[13.563451776649746,10.761421319796954,6.527918781725887,20.654822335025383,4.934010152284262,5.18274111675127],std:[4.239153654030002,3.3077343290831713,2.8924486501981233,2.9338771160608355,3.5098461495889413,3.192898794854312,2.920215710334156],mean:[61.6243654822335,13.563451776649746,10.761421319796954,6.527918781725888,20.65482233502538,4.934010152284264,5.182741116751269]},{id:11,size:176,centroids:[8.255681818181818,16.181818181818183,7.11931818181818,4.619318181818182,21.0625,5.505681818181819],std:[3.349621998445128,3.4620343467651815,3.3296776490755446,2.945693532873097,2.7583580190103967,3.126214049887545,3.078027492852078],mean:[62.74431818181818,8.255681818181818,16.181818181818183,7.119318181818182,4.619318181818182,21.0625,5.505681818181818]},{id:12,size:194,centroids:[3.5670103092783503,14.773195876288659,13.036082474226804,13.185567010309278,4.979381443298967,12.144329896907218],std:[3.89886364980042,2.255251632823776,2.5893570716174388,3.248552824613239,3.1004926799108317,2.8845824993776903,2.8864151735009584],mean:[61.68556701030928,3.5670103092783507,14.77319587628866,13.036082474226804,13.185567010309278,4.979381443298969,12.144329896907216]},{id:13,size:302,centroids:[5.311258278145695,4.4701986754966905,21.897350993377486,10.688741721854305,6.834437086092715,12.605960264900663],std:[5.1142628152416245,2.9920946350614983,2.6882491851253567,3.071581172564087,2.99431450280505,3.116626644660552,2.58548804104293],mean:[61.80794701986755,5.311258278145695,4.470198675496689,21.897350993377483,10.688741721854305,6.8344370860927155,12.605960264900663]},{id:14,size:364,centroids:[12.263736263736265,11.32967032967033,5.936813186813188,8.524725274725274,12.07142857142857,7.782967032967034],std:[6.666392881793753,2.8942239993391565,2.947866371540881,3.041289192757803,3.0876888182534996,2.4540644069260296,2.6803305558675676],mean:[57.90934065934066,12.263736263736265,11.32967032967033,5.936813186813187,8.524725274725276,12.071428571428571,7.782967032967033]},{id:15,size:219,centroids:[6.981735159817351,5.9908675799086755,18.127853881278536,4.97716894977169,5.182648401826483,20.89041095890411],std:[4.3335830659244685,3.5503759593138464,3.5270785628911785,4.123339305032141,2.7998081886699646,3.283747903424203,2.8311584355558064],mean:[62.15068493150685,6.981735159817352,5.9908675799086755,18.12785388127854,4.9771689497716896,5.1826484018264845,20.89041095890411]},{id:16,size:147,centroids:[6.285714285714285,20.836734693877553,4.8639455782312915,17.510204081632654,5.897959183673469,7.394557823129253],std:[3.358145469360083,3.4877476344546254,3.2245649941865486,3.0557367019327,4.0937094190209065,3.1136788219952605,3.842013283457479],mean:[62.7891156462585,6.285714285714286,20.836734693877553,4.863945578231292,17.510204081632654,5.8979591836734695,7.394557823129252]},{id:17,size:202,centroids:[18.425742574257423,6.871287128712871,6.678217821782177,5.06930693069307,20.40594059405941,5.876237623762377],std:[3.0226636827682554,3.292828132097339,3.518715749263091,3.4627255810748356,3.075363266145594,3.5804283293104753,3.315804113390658],mean:[63.32673267326733,18.425742574257427,6.871287128712871,6.678217821782178,5.069306930693069,20.405940594059405,5.876237623762377]},{id:18,size:286,centroids:[11.22027972027972,7.073426573426573,12.65034965034965,12.594405594405593,4.209790209790211,13.220279720279722],std:[4.720510224882134,2.8685361372318168,2.6005789112305338,3.052197922484291,2.451602446915686,2.7244266014541174,2.7638787756329526],mean:[60.96853146853147,11.22027972027972,7.073426573426573,12.65034965034965,12.594405594405595,4.20979020979021,13.22027972027972]},{id:19,size:197,centroids:[6.263959390862944,8.568527918781726,16.80710659898477,4.000000000000003,22.593908629441625,4.883248730964468],std:[2.7333118141791917,3.3626657547151964,3.4540163497542435,2.646397291854302,2.565469285152567,3.018237668617547,2.8287109641017594],mean:[63.11675126903553,6.2639593908629445,8.568527918781726,16.80710659898477,4,22.593908629441625,4.883248730964467]},{id:20,size:279,centroids:[18.025089605734767,6.150537634408602,6.161290322580646,5.767025089605736,7.999999999999998,15.602150537634408],std:[6.590788110639117,3.6436721401086296,3.165505073725202,3.13700467469825,2.7769973891540207,3.4672154149710614,4.017425492621824],mean:[59.70609318996416,18.025089605734767,6.150537634408602,6.161290322580645,5.767025089605735,8,15.602150537634408]},{id:21,size:78,centroids:[15.96153846153846,16.85897435897436,16.807692307692307,3552713678800501e-30,5329070518200751e-30,-5329070518200751e-30],std:[2.095815090231219,7.438828122504502,7.482836393563639,8.12413063050432,0,0,0],mean:[49.62820512820513,15.961538461538462,16.858974358974358,16.807692307692307,0,0,0]},{id:22,size:137,centroids:[4.525547445255475,3.583941605839417,23.532846715328468,19.948905109489054,4.3576642335766405,6.248175182481752],std:[2.9351806639916567,2.7575572416084317,2.2707939003224227,2.908029186302962,3.3306093063017315,2.6644092885703916,3.4848010785869454],mean:[62.197080291970806,4.525547445255475,3.5839416058394162,23.532846715328468,19.94890510948905,4.357664233576642,6.248175182481752]},{id:23,size:194,centroids:[13.242268041237114,3.5103092783505163,14.675257731958762,19.55154639175258,6.139175257731957,5.092783505154641],std:[3.810494814771566,2.886105181640385,2.0818477512276696,2.6197152448917316,3.409818599464837,3.0311357231629183,2.9733966349516936],mean:[62.21134020618557,13.242268041237113,3.5103092783505154,14.675257731958762,19.551546391752577,6.139175257731959,5.092783505154639]},{id:24,size:239,centroids:[5.569037656903766,5.401673640167365,20.92468619246862,13.09205020920502,13.497907949790793,4.096234309623432],std:[3.8502204432228733,3.071015816571908,3.081143061480697,2.79904271710946,2.169280265760518,2.62802363192924,2.3450167178621983],mean:[62.58158995815899,5.569037656903766,5.401673640167364,20.92468619246862,13.092050209205022,13.497907949790795,4.096234309623431]}];let Sc=(()=>{class n{constructor(e,o,a){this.db=e,this._snackBar=o,this.inventory=a,this.clusterInformation=Oe,this.items=[],this.clusters=[],this.exoticFilter=0,this.masterworkFilter=0,this.classFilter=-1,this.clusterInformation=Oe.sort((s,r)=>r.mean[3]-s.mean[3])}ngAfterViewInit(){var e=this;return(0,y.Z)(function*(){e.inventory.inventory.pipe((0,J.b)(200)).subscribe((0,y.Z)(function*(){yield e.Update(),e.openSnackBar("Clusters were updated.")}))})()}Update(){var e=this;return(0,y.Z)(function*(){var o=(yield e.db.inventoryArmor.toArray()).filter(r=>r.source===B.Inventory),a=[];for(let r=0;r`id:'${o.itemInstanceId}'`).join(" or ")}vectorDistance(e,o){return Math.sqrt(e.reduce((a,s,r)=>a+Math.pow(s-o[r],2),0))}getClusterid(e){var o=Number.MAX_VALUE,a=-1;for(let r=0;r=3?3:0),"")}}const ke=function(){return["Mobility","Resilience","Recovery","Discipline","Intellect","Strength"]};function kc(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"tr",16)(2,"td"),t._uU(3),t.qZA(),t.TgZ(4,"td"),t._uU(5),t.ALo(6,"number"),t.qZA(),t.TgZ(7,"td",17)(8,"div",18),t.YNc(9,Oc,1,6,"div",19),t.qZA()()(),t.BQk()),2&n){const e=i.$implicit,o=i.index,a=t.oxw().$implicit;t.xp6(1),t.Q6J("matTooltip",t.DdM(7,ke)[o]),t.xp6(2),t.hij(" ",t.DdM(8,ke)[o]," "),t.xp6(2),t.Oqu(t.xi3(6,4,a.totalStats[o],"1.0-0")),t.xp6(4),t.Q6J("ngForOf",e)}}function Ec(n,i){if(1&n&&(t.TgZ(0,"tr")(1,"td")(2,"a",20),t._UZ(3,"img",15),t.qZA(),t._uU(4),t.qZA(),t.TgZ(5,"td",21),t._uU(6),t.qZA(),t.TgZ(7,"td"),t._uU(8),t.qZA()()),2&n){const e=i.$implicit,o=t.oxw(3);t.xp6(2),t.MGl("href","https://data.destinysets.com/i/InventoryItem:",e,"",t.LSH),t.xp6(2),t.hij(" ",e,""),t.xp6(2),t.Oqu(o.getPlugSum(e)),t.xp6(2),t.Oqu(o.getPlugString(e))}}const Uc=function(n,i,e,o,a,s){return[n,i,e,o,a,s]};function Dc(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"mat-card",12)(2,"mat-card-title"),t._uU(3),t.qZA(),t.TgZ(4,"mat-card-content")(5,"table")(6,"tr")(7,"td",13),t._uU(8,"Hash:"),t.qZA(),t.TgZ(9,"td")(10,"a",14),t._UZ(11,"img",15),t.qZA(),t._uU(12),t.qZA()(),t.TgZ(13,"tr")(14,"td",13),t._uU(15,"ItemInstanceId:"),t.qZA(),t.TgZ(16,"td"),t._uU(17),t.qZA()(),t.TgZ(18,"tr")(19,"td",13),t._uU(20,"Sunset?"),t.qZA(),t.TgZ(21,"td"),t._uU(22),t.qZA()(),t.TgZ(23,"tr")(24,"td"),t._uU(25,"Total"),t.qZA(),t.TgZ(26,"td"),t._uU(27),t.qZA()(),t.YNc(28,kc,10,9,"ng-container",10),t.qZA()(),t.TgZ(29,"mat-card-content"),t._uU(30," Plugs: "),t.TgZ(31,"table")(32,"tr")(33,"td"),t._uU(34,"Plug"),t.qZA(),t.TgZ(35,"td"),t._uU(36,"Total"),t.qZA(),t.TgZ(37,"td"),t._uU(38,"Values"),t.qZA()(),t.YNc(39,Ec,9,4,"tr",10),t.qZA()()(),t.BQk()),2&n){const e=i.$implicit;t.xp6(3),t.hij(" ",e.name," "),t.xp6(7),t.MGl("href","https://data.destinysets.com/i/InventoryItem:",e.hash,"",t.LSH),t.xp6(2),t.hij(" ",e.hash,""),t.xp6(5),t.Oqu(e.itemInstanceId),t.xp6(5),t.Oqu(e.isSunset),t.xp6(5),t.Oqu(e.totalSum),t.xp6(1),t.Q6J("ngForOf",t.HTZ(8,Uc,e.mobility,e.resilience,e.recovery,e.discipline,e.intellect,e.strength)),t.xp6(11),t.Q6J("ngForOf",e.statPlugHashes)}}function Pc(n,i){if(1&n&&(t.ynx(0),t.TgZ(1,"mat-toolbar"),t._uU(2),t.qZA(),t._UZ(3,"br"),t.TgZ(4,"div",11),t.YNc(5,Dc,40,15,"ng-container",10),t.qZA(),t.BQk()),2&n){const e=i.$implicit,o=t.oxw();t.xp6(2),t.hij(" ",o.getCategoryName(e.key)," "),t.xp6(3),t.Q6J("ngForOf",e.value)}}let Rc=(()=>{class n{constructor(e,o){this.inventory=e,this.db=o,this.minMobility=0,this.minResilience=0,this.minRecovery=0,this.minDiscipline=0,this.minIntellect=0,this.minStrength=0,this.anyPlugWithN=0,this.anyPlugBelowN=17,this.allPlugsWithN=0,this.allPlugsBelowN=17,this.armorName="",this.armorHash="",this.armorId="",this.armorItemsPerSlot=new Map,this.plugData={},this.ngUnsubscribe=new R.xQ}ngOnInit(){var e=this;this.inventory.inventory.pipe((0,J.b)(10),(0,Ct.R)(this.ngUnsubscribe)).subscribe((0,y.Z)(function*(){e.updateItems()}))}getPlugString(e){var o=this.plugData[e];let a=[0,0,0,0,0,0];for(let s of o.investmentStats)switch(s.statTypeHash){case 2996146975:a[0]+=s.value;break;case 392767087:a[1]+=s.value;break;case 1943323491:a[2]+=s.value;break;case 1735777505:a[3]+=s.value;break;case 144602215:a[4]+=s.value;break;case 4244567218:a[5]+=s.value}return"["+a.join(" ")+"]"}updateItems(){var e=this;return(0,y.Z)(function*(){const a=(yield e.db.manifestArmor.toArray()).filter(d=>19==d.itemType);let s=Object.fromEntries(a.map(d=>[d.hash,d]));e.plugData=s;let r=(yield e.db.inventoryArmor.toArray()).filter(d=>d.source===B.Inventory).sort((d,p)=>(""+d.name).localeCompare(p.name)).map(d=>{var p={name:d.name,hash:d.hash,isSunset:d.isSunset,itemInstanceId:d.itemInstanceId,statPlugHashes:d.statPlugHashes,mobility:[],resilience:[],recovery:[],discipline:[],intellect:[],strength:[],totalStats:[0,0,0,0,0,0],totalSum:0,slot:d.slot};if(d.statPlugHashes)for(let m of d.statPlugHashes){var A=s[m];for(let S of A.investmentStats)switch(S.statTypeHash){case 2996146975:p.mobility.push(S.value),p.totalStats[0]+=S.value;break;case 392767087:p.resilience.push(S.value),p.totalStats[1]+=S.value;break;case 1943323491:p.recovery.push(S.value),p.totalStats[2]+=S.value;break;case 1735777505:p.discipline.push(S.value),p.totalStats[3]+=S.value;break;case 144602215:p.intellect.push(S.value),p.totalStats[4]+=S.value;break;case 4244567218:p.strength.push(S.value),p.totalStats[5]+=S.value}}if(d.investmentStats)for(let m of d.investmentStats)switch(m.statTypeHash){case 2996146975:p.mobility.push(m.value),p.totalStats[0]+=m.value;break;case 392767087:p.resilience.push(m.value),p.totalStats[1]+=m.value;break;case 1943323491:p.recovery.push(m.value),p.totalStats[2]+=m.value;break;case 1735777505:p.discipline.push(m.value),p.totalStats[3]+=m.value;break;case 144602215:p.intellect.push(m.value),p.totalStats[4]+=m.value;break;case 4244567218:p.strength.push(m.value),p.totalStats[5]+=m.value}for(let m of p.totalStats)p.totalSum+=m;return p});r=e.filterItems(r),e.armorItemsPerSlot=r.reduce((d,p)=>{const A=p.slot?p.slot:10;return d.has(A)||d.set(A,[]),d.get(A)?.push(p),d},new Map)})()}ngOnDestroy(){this.ngUnsubscribe.next(),this.ngUnsubscribe.complete()}getCategoryName(e){switch(e){case 1:return"Helmets";case 2:return"Gauntlets";case 3:return"Chest Pieces";case 4:return"Legs";case 5:return"Class Items"}return"Unknown Category"}getPlugSum(e){var o=this.plugData[e],a=0;for(let s of o.investmentStats)switch(s.statTypeHash){case 2996146975:case 392767087:case 1943323491:case 1735777505:case 144602215:case 4244567218:a+=s.value}return a}clear(){this.armorName="",this.armorHash="",this.armorId="",this.minMobility=0,this.minResilience=0,this.minRecovery=0,this.minDiscipline=0,this.minIntellect=0,this.minStrength=0,this.anyPlugWithN=0,this.anyPlugBelowN=17}filterItems(e){return this.armorName&&(e=e.filter(o=>o.name.toLowerCase().indexOf(this.armorName)>-1)),this.armorHash&&(e=e.filter(o=>(o.hash||0).toString().indexOf(this.armorHash)>-1)),this.armorId&&(e=e.filter(o=>(o.itemInstanceId||0).toString().indexOf(this.armorId)>-1)),e=(e=(e=(e=(e=(e=e.filter(o=>o.totalStats[0]>=(this.minMobility||0))).filter(o=>o.totalStats[1]>=(this.minResilience||0))).filter(o=>o.totalStats[2]>=(this.minRecovery||0))).filter(o=>o.totalStats[3]>=(this.minDiscipline||0))).filter(o=>o.totalStats[4]>=(this.minIntellect||0))).filter(o=>o.totalStats[5]>=(this.minStrength||0)),(this.anyPlugWithN??0)>0&&(e=e.filter(o=>(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)>=(this.anyPlugWithN||0)).length>0)),(this.anyPlugBelowN??0)<17&&(e=e.filter(o=>(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)<=(this.anyPlugBelowN||0)).length>0)),(this.allPlugsWithN??0)>0&&(e=e.filter(o=>0==(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)<(this.allPlugsWithN||0)).length)),(this.allPlugsBelowN??0)<17&&(e=e.filter(o=>0==(o.statPlugHashes||[]).filter(a=>this.getPlugSum(a)>(this.allPlugsBelowN||0)).length)),e}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Tt),t.Y36(w))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-armor-investigation-page"]],decls:112,vars:26,consts:[["id","description"],["href","https://www.reddit.com/r/DestinyTheGame/comments/mpaopq/how_armor_stats_roll_an_advanced_insight_into/","target","_blank"],["colspan","3"],["appearance","outline"],["matInput","","placeholder","Stronghold",3,"ngModel","ngModelChange"],["matInput","",3,"ngModel","ngModelChange"],["max","32","min","0","step","1","thumbLabel","","tickInterval","1",3,"value","valueChange"],["max","17","min","0","step","1","thumbLabel","","tickInterval","1",3,"value","valueChange"],["mat-raised-button","","color","primary",3,"click"],["mat-raised-button","","color","warn",3,"click"],[4,"ngFor","ngForOf"],["fxLayout","row","fxLayout.xs","column","fxLayoutGap","10px",1,"armor-container"],[1,"cluster-item"],["colspan","2"],["alt","This armor on data.destinysets.com","target","_blank",3,"href"],["src","https://data.destinysets.com/static/media/logo.556bd7bd.svg",2,"width","15px"],[3,"matTooltip"],["width","100%"],[1,"stat-range"],[3,"class","style",4,"ngFor","ngForOf"],["alt","This plug on data.destinysets.com","target","_blank",3,"href"],[1,"plug-sum-col"]],template:function(e,o){1&e&&(t.TgZ(0,"mat-card",0)(1,"mat-card-title"),t._uU(2," Armor Investigation "),t.qZA(),t.TgZ(3,"mat-card-subtitle"),t._uU(4," A visualization tool for data scientists. "),t.qZA(),t.TgZ(5,"mat-card-content"),t._uU(6," This part of the D2ArmorPicker lists all of your armor items. For each armor it shows how it is generated. It shows every used "),t.TgZ(7,"i"),t._uU(8,'"plug"'),t.qZA(),t._uU(9,", as well as the intrinsic stats of exotics. For more information about plugs, see "),t.TgZ(10,"a",1),t._uU(11,"here"),t.qZA(),t._uU(12,". Make sure to give the author an upvote for the hard work! "),t._UZ(13,"br")(14,"br"),t._uU(15," Please note that this feature is mainly targeted for data nerds and people interested in the basic stats of armor. It is just a data visualization. Mobile layout and a search function "),t.TgZ(16,"i"),t._uU(17,"may"),t.qZA(),t._uU(18," happen in the future. "),t.qZA(),t.TgZ(19,"mat-card-title"),t._uU(20," Filters "),t.qZA(),t.TgZ(21,"mat-card-subtitle"),t._uU(22," Some filters. Nothing fancy but it works. Sorry ;) "),t.qZA(),t.TgZ(23,"mat-card-content")(24,"table")(25,"tr")(26,"td",2)(27,"mat-form-field",3)(28,"mat-label"),t._uU(29,"Item Name"),t.qZA(),t.TgZ(30,"input",4),t.NdJ("ngModelChange",function(s){return o.armorName=s}),t.qZA()()(),t.TgZ(31,"td",2)(32,"mat-form-field",3)(33,"mat-label"),t._uU(34,"Item Hash"),t.qZA(),t.TgZ(35,"input",5),t.NdJ("ngModelChange",function(s){return o.armorHash=s}),t.qZA()()(),t.TgZ(36,"td",2)(37,"mat-form-field",3)(38,"mat-label"),t._uU(39,"Item ID"),t.qZA(),t.TgZ(40,"input",5),t.NdJ("ngModelChange",function(s){return o.armorId=s}),t.qZA()()()(),t.TgZ(41,"tr")(42,"td"),t._uU(43," Mobility: "),t.qZA(),t.TgZ(44,"td"),t._uU(45),t.qZA(),t.TgZ(46,"td")(47,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minMobility=s}),t.qZA()(),t.TgZ(48,"td"),t._uU(49," Resilience: "),t.qZA(),t.TgZ(50,"td"),t._uU(51),t.qZA(),t.TgZ(52,"td")(53,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minResilience=s}),t.qZA()(),t.TgZ(54,"td"),t._uU(55," Recovery: "),t.qZA(),t.TgZ(56,"td"),t._uU(57),t.qZA(),t.TgZ(58,"td")(59,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minRecovery=s}),t.qZA()()(),t.TgZ(60,"tr")(61,"td"),t._uU(62," Discipline: "),t.qZA(),t.TgZ(63,"td"),t._uU(64),t.qZA(),t.TgZ(65,"td")(66,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minDiscipline=s}),t.qZA()(),t.TgZ(67,"td"),t._uU(68," Intellect: "),t.qZA(),t.TgZ(69,"td"),t._uU(70),t.qZA(),t.TgZ(71,"td")(72,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minIntellect=s}),t.qZA()(),t.TgZ(73,"td"),t._uU(74," Strength: "),t.qZA(),t.TgZ(75,"td"),t._uU(76),t.qZA(),t.TgZ(77,"td")(78,"mat-slider",6),t.NdJ("valueChange",function(s){return o.minStrength=s}),t.qZA()()(),t.TgZ(79,"tr")(80,"td"),t._uU(81," Any plug >=: "),t.qZA(),t.TgZ(82,"td"),t._uU(83),t.qZA(),t.TgZ(84,"td")(85,"mat-slider",7),t.NdJ("valueChange",function(s){return o.anyPlugWithN=s}),t.qZA()(),t.TgZ(86,"td"),t._uU(87," Any Plug <=: "),t.qZA(),t.TgZ(88,"td"),t._uU(89),t.qZA(),t.TgZ(90,"td")(91,"mat-slider",7),t.NdJ("valueChange",function(s){return o.anyPlugBelowN=s}),t.qZA()()(),t.TgZ(92,"tr")(93,"td"),t._uU(94," All plugs >=: "),t.qZA(),t.TgZ(95,"td"),t._uU(96),t.qZA(),t.TgZ(97,"td")(98,"mat-slider",7),t.NdJ("valueChange",function(s){return o.allPlugsWithN=s}),t.qZA()(),t.TgZ(99,"td"),t._uU(100," All Plugs <=: "),t.qZA(),t.TgZ(101,"td"),t._uU(102),t.qZA(),t.TgZ(103,"td")(104,"mat-slider",7),t.NdJ("valueChange",function(s){return o.allPlugsBelowN=s}),t.qZA()()()(),t.TgZ(105,"a",8),t.NdJ("click",function(){return o.updateItems()}),t._uU(106,"Update"),t.qZA(),t._uU(107,"\xa0 "),t.TgZ(108,"a",9),t.NdJ("click",function(){return o.clear()}),t._uU(109,"Clear"),t.qZA()()(),t.YNc(110,Pc,6,2,"ng-container",10),t.ALo(111,"keyvalue")),2&e&&(t.xp6(30),t.Q6J("ngModel",o.armorName),t.xp6(5),t.Q6J("ngModel",o.armorHash),t.xp6(5),t.Q6J("ngModel",o.armorId),t.xp6(5),t.hij(" ",o.minMobility,""),t.xp6(2),t.Q6J("value",o.minMobility),t.xp6(4),t.hij(" ",o.minResilience,""),t.xp6(2),t.Q6J("value",o.minResilience),t.xp6(4),t.hij(" ",o.minRecovery,""),t.xp6(2),t.Q6J("value",o.minRecovery),t.xp6(5),t.hij(" ",o.minDiscipline,""),t.xp6(2),t.Q6J("value",o.minDiscipline),t.xp6(4),t.hij(" ",o.minIntellect,""),t.xp6(2),t.Q6J("value",o.minIntellect),t.xp6(4),t.Oqu(o.minStrength),t.xp6(2),t.Q6J("value",o.minStrength),t.xp6(5),t.Oqu(o.anyPlugWithN),t.xp6(2),t.Q6J("value",o.anyPlugWithN),t.xp6(4),t.Oqu(o.anyPlugBelowN),t.xp6(2),t.Q6J("value",o.anyPlugBelowN),t.xp6(5),t.Oqu(o.allPlugsWithN),t.xp6(2),t.Q6J("value",o.allPlugsWithN),t.xp6(4),t.Oqu(o.allPlugsBelowN),t.xp6(2),t.Q6J("value",o.allPlugsBelowN),t.xp6(6),t.Q6J("ngForOf",t.lcZ(111,24,o.armorItemsPerSlot)))},dependencies:[I.sg,_t.xw,_t.SQ,At.Fj,At.JJ,At.On,st.zs,Pt.KE,Pt.hX,Mc.pH,ne.Nt,Y.a8,Y.dn,Y.n5,Y.$j,pt.gM,wt.Ye,I.JJ,I.Nd],styles:["#description[_ngcontent-%COMP%], #filter[_ngcontent-%COMP%]{max-width:700px;margin-bottom:10px;margin-left:auto;margin-right:auto}.cluster-item[_ngcontent-%COMP%]{flex-grow:1;flex-basis:0;min-width:250px;max-width:350px;margin-bottom:10px}.armor-container[_ngcontent-%COMP%], .plug-sum-col[_ngcontent-%COMP%]{padding-left:5px}.armor-container[_ngcontent-%COMP%]{flex-wrap:wrap}.stat-range[_ngcontent-%COMP%]{height:20px;width:100%;margin-bottom:3px;float:left;background-color:gray}.stat-range-bar[_ngcontent-%COMP%]{height:100%;float:left;background-color:#fff}.stat-range-bar0[_ngcontent-%COMP%]{background-color:#acfff1}.stat-range-bar1[_ngcontent-%COMP%]{background-color:#5e9eff}.stat-range-bar3[_ngcontent-%COMP%]{background-color:#ffc2ac}.stat-range-bar4[_ngcontent-%COMP%]{background-color:#ffb45e}.stat-range-bar2[_ngcontent-%COMP%], .stat-range-bar5[_ngcontent-%COMP%]{background-color:#c246ff}a[_ngcontent-%COMP%]{color:#99afe3}a[_ngcontent-%COMP%]:visited{color:#7294dc}"]}),n})(),Nc=(()=>{class n{constructor(e,o,a){this.db=e,this.inv=o,this.loginService=a}downloadArmorInformation(){var e=this;return(0,y.Z)(function*(){const o=yield e.db.inventoryArmor.toArray(),a=window.URL.createObjectURL(new Blob([JSON.stringify(o,null,2)])),s=document.createElement("a");s.href=a,s.setAttribute("download","d2ap_armor.json"),document.body.appendChild(s),s.click()})()}downloadManifestInformation(){var e=this;return(0,y.Z)(function*(){const o=yield e.db.manifestArmor.toArray(),a=window.URL.createObjectURL(new Blob([JSON.stringify(o,null,1)])),s=document.createElement("a");s.href=a,s.setAttribute("download","d2ap_manifest.json"),document.body.appendChild(s),s.click()})()}resetDatabase(){var e=this;return(0,y.Z)(function*(){yield e.db.resetDatabase(),yield e.inv.refreshAll(!0,!0)})()}resetEverything(){var e=this;return(0,y.Z)(function*(){localStorage.clear(),yield e.db.resetDatabase(),yield e.loginService.logout()})()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(w),t.Y36(Tt),t.Y36(gt))},n.\u0275cmp=t.Xpm({type:n,selectors:[["app-account-config-page"]],decls:35,vars:0,consts:[["id","account-config-container"],["color","primary","fxShow","false","fxShow.lt-md","true","mat-raised-button","","routerLink","/",1,"returnbutton"],["color","primary","mat-raised-button","",1,"btn-download",3,"click"],["color","warn","mat-raised-button","",1,"btn-download",3,"click"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0)(1,"a",1),t._uU(2," Return to D2ArmorPicker "),t.qZA(),t.TgZ(3,"mat-card")(4,"mat-card-title"),t._uU(5," Account Configuration "),t.qZA(),t.TgZ(6,"mat-card-subtitle"),t._uU(7," The configuration on this page will not be reset when you reset your build settings. "),t.qZA(),t.TgZ(8,"mat-card-content"),t._uU(9,' This will come in a future update. Right now, I just wanted to push the "Debugging" section out. '),t.qZA()(),t.TgZ(10,"mat-card")(11,"mat-card-title"),t._uU(12," Debugging "),t.qZA(),t.TgZ(13,"mat-card-subtitle"),t._uU(14," Some options for debugging purposes. "),t.qZA(),t.TgZ(15,"mat-card-content"),t._uU(16," If the team asks you to send some specific data, you can find it here:"),t._UZ(17,"br"),t.TgZ(18,"a",2),t.NdJ("click",function(){return o.downloadArmorInformation()}),t._uU(19," Download armor information (d2ap_armor.json) "),t.qZA(),t.TgZ(20,"a",2),t.NdJ("click",function(){return o.downloadManifestInformation()}),t._uU(21," Download manifest information (d2ap_manifest.json) "),t.qZA(),t._UZ(22,"br")(23,"br"),t._uU(24," If you experience issues with the local database - for example, exotics not being found, try this:"),t._UZ(25,"br"),t.TgZ(26,"a",3),t.NdJ("click",function(){return o.resetDatabase()}),t._uU(27," Delete Database "),t.qZA(),t._UZ(28,"br"),t._uU(29," If you really want to reset EVERYTHING, use this: "),t._UZ(30,"br"),t.TgZ(31,"a",3),t.NdJ("click",function(){return o.resetEverything()}),t._uU(32," Reset the whole application "),t.qZA()()(),t.TgZ(33,"a",1),t._uU(34," Return to D2ArmorPicker "),t.qZA()())},dependencies:[M.b8,st.zs,Y.a8,Y.dn,Y.n5,Y.$j,ot.yS],styles:[".returnbutton[_ngcontent-%COMP%]{margin-top:5px;margin-bottom:15px;width:100%}#account-config-container[_ngcontent-%COMP%]{max-width:800px;margin-left:auto;margin-right:auto}mat-card[_ngcontent-%COMP%]{margin-bottom:8px}.btn-download[_ngcontent-%COMP%]{margin-right:10px}"]}),n})();var qc=_(4661),Ee=_(7331);const Fc=[{path:"",component:Xe,canActivate:[f],children:[{path:"",component:bc},{path:"help",component:ps},{path:"cluster",component:Sc},{path:"investigate",component:Rc},{path:"theory",loadChildren:()=>_.e(613).then(_.bind(_,8613)).then(n=>n.TheorizerPageModule)},{path:"account",component:Nc}]},{path:"login",component:Ht,canActivate:[C]},{path:"login-bungie",component:Rt},{path:"**",redirectTo:"/"}];let Jc=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n,bootstrap:[x]}),n.\u0275inj=t.cJS({imports:[I.ez,qc.V,u.b2,Lt.PW,Et.JF,ot.Bz.forRoot(Fc,{useHash:!0}),te.Iq,U.xu]}),n})();t.B6R(be,function(){return[I.sg,I.O5,_t.xw,_t.SQ,_t.Wh,_t.yH,st.lW,Pt.KE,Pt.hX,Pt.R9,ne.Nt,G.BZ,G.fO,G.as,G.w1,G.Dz,G.nj,G.ge,G.ev,G.XQ,G.Gk,Y.a8,Y.dn,Y.n5,Y.$j,Y.hq,pt.gM,St.Hw,de.YE,de.nU,ve.NW,Ee.qn,Ee.HS,as,zs]},function(){return[I.JJ]}),t.B6R(Ce,function(){return[st.lW,kt.ZT,kt.uh,kt.xY,kt.H8,Ze]},[]),g.N.production&&(0,t.G48)(),u.q6().bootstrapModule(Jc).catch(n=>console.error(n))}},ht=>{ht.O(0,[736],()=>ht(ht.s=1379)),ht.O()}]); \ No newline at end of file