diff --git a/dist/commonmark.49fe3127.js b/dist/commonmark.49fe3127.js new file mode 100644 index 000000000..83a6ba236 --- /dev/null +++ b/dist/commonmark.49fe3127.js @@ -0,0 +1,3 @@ +function e(e){switch(e._type){case"document":case"block_quote":case"list":case"item":case"paragraph":case"heading":case"emph":case"strong":case"link":case"image":case"custom_inline":case"custom_block":return!0;default:return!1}}var t=function(e,t){this.current=e,this.entering=!0===t},r=function(){var t=this.current,r=this.entering;if(null===t)return null;var i=e(t);return r&&i?t._firstChild?(this.current=t._firstChild,this.entering=!0):this.entering=!1:t===this.root?this.current=null:null===t._next?(this.current=t._parent,this.entering=!1):(this.current=t._next,this.entering=!0),{entering:r,node:t}},i=function(e){return{current:e,root:e,entering:!0,next:r,resumeAt:t}},n=function(e,t){this._type=e,this._parent=null,this._firstChild=null,this._lastChild=null,this._prev=null,this._next=null,this._sourcepos=t,this._lastLineBlank=!1,this._lastLineChecked=!1,this._open=!0,this._string_content=null,this._literal=null,this._listData={},this._info=null,this._destination=null,this._title=null,this._isFenced=!1,this._fenceChar=null,this._fenceLength=0,this._fenceOffset=null,this._level=null,this._onEnter=null,this._onExit=null};exports.Node=n;var s=n.prototype;Object.defineProperty(s,"isContainer",{get:function(){return e(this)}}),Object.defineProperty(s,"type",{get:function(){return this._type}}),Object.defineProperty(s,"firstChild",{get:function(){return this._firstChild}}),Object.defineProperty(s,"lastChild",{get:function(){return this._lastChild}}),Object.defineProperty(s,"next",{get:function(){return this._next}}),Object.defineProperty(s,"prev",{get:function(){return this._prev}}),Object.defineProperty(s,"parent",{get:function(){return this._parent}}),Object.defineProperty(s,"sourcepos",{get:function(){return this._sourcepos}}),Object.defineProperty(s,"literal",{get:function(){return this._literal},set:function(e){this._literal=e}}),Object.defineProperty(s,"destination",{get:function(){return this._destination},set:function(e){this._destination=e}}),Object.defineProperty(s,"title",{get:function(){return this._title},set:function(e){this._title=e}}),Object.defineProperty(s,"info",{get:function(){return this._info},set:function(e){this._info=e}}),Object.defineProperty(s,"level",{get:function(){return this._level},set:function(e){this._level=e}}),Object.defineProperty(s,"listType",{get:function(){return this._listData.type},set:function(e){this._listData.type=e}}),Object.defineProperty(s,"listTight",{get:function(){return this._listData.tight},set:function(e){this._listData.tight=e}}),Object.defineProperty(s,"listStart",{get:function(){return this._listData.start},set:function(e){this._listData.start=e}}),Object.defineProperty(s,"listDelimiter",{get:function(){return this._listData.delimiter},set:function(e){this._listData.delimiter=e}}),Object.defineProperty(s,"onEnter",{get:function(){return this._onEnter},set:function(e){this._onEnter=e}}),Object.defineProperty(s,"onExit",{get:function(){return this._onExit},set:function(e){this._onExit=e}}),n.prototype.appendChild=function(e){e.unlink(),e._parent=this,this._lastChild?(this._lastChild._next=e,e._prev=this._lastChild,this._lastChild=e):(this._firstChild=e,this._lastChild=e)},n.prototype.prependChild=function(e){e.unlink(),e._parent=this,this._firstChild?(this._firstChild._prev=e,e._next=this._firstChild,this._firstChild=e):(this._firstChild=e,this._lastChild=e)},n.prototype.unlink=function(){this._prev?this._prev._next=this._next:this._parent&&(this._parent._firstChild=this._next),this._next?this._next._prev=this._prev:this._parent&&(this._parent._lastChild=this._prev),this._parent=null,this._next=null,this._prev=null},n.prototype.insertAfter=function(e){e.unlink(),e._next=this._next,e._next&&(e._next._prev=e),e._prev=this,this._next=e,e._parent=this._parent,e._next||(e._parent._lastChild=e)},n.prototype.insertBefore=function(e){e.unlink(),e._prev=this._prev,e._prev&&(e._prev._next=e),e._next=this,this._prev=e,e._parent=this._parent,e._prev||(e._parent._firstChild=e)},n.prototype.walker=function(){return new i(this)};var a,o={};function l(e,t,r){var i,n,s,a,c,u="";for("string"!=typeof t&&(r=t,t=l.defaultChars),void 0===r&&(r=!0),c=function(e){var t,r,i=o[e];if(i)return i;for(i=o[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),/^[0-9a-z]$/i.test(r)?i.push(r):i.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t=55296&&s<=57343){if(s>=55296&&s<=56319&&i+1=56320&&a<=57343){u+=encodeURIComponent(e[i]+e[i+1]),i++;continue}u+="%EF%BF%BD"}else u+=encodeURIComponent(e[i]);return u}l.defaultChars=";/?:@&=+$,-_.!~*'()#",l.componentChars="-_.!~*'()",a=l;var c={};Object.defineProperty(c,"__esModule",{value:!0});var u=(z=void 0,V=c.decode=z,c.decodeStrict=V);c.encode=u;var p={},h=p&&p.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(p,"__esModule",{value:!0});var d=(x=void 0,w=p.decodeXML=x,p.decodeHTMLStrict=w);p.decodeHTML=d;var f,g,m=h(f=JSON.parse('{"Aacute":"Á","aacute":"á","Abreve":"Ă","abreve":"ă","ac":"∾","acd":"∿","acE":"∾̳","Acirc":"Â","acirc":"â","acute":"´","Acy":"А","acy":"а","AElig":"Æ","aelig":"æ","af":"⁡","Afr":"𝔄","afr":"𝔞","Agrave":"À","agrave":"à","alefsym":"ℵ","aleph":"ℵ","Alpha":"Α","alpha":"α","Amacr":"Ā","amacr":"ā","amalg":"⨿","amp":"&","AMP":"&","andand":"⩕","And":"⩓","and":"∧","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angmsd":"∡","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","Aogon":"Ą","aogon":"ą","Aopf":"𝔸","aopf":"𝕒","apacir":"⩯","ap":"≈","apE":"⩰","ape":"≊","apid":"≋","apos":"\'","ApplyFunction":"⁡","approx":"≈","approxeq":"≊","Aring":"Å","aring":"å","Ascr":"𝒜","ascr":"𝒶","Assign":"≔","ast":"*","asymp":"≈","asympeq":"≍","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","awconint":"∳","awint":"⨑","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","Backslash":"∖","Barv":"⫧","barvee":"⊽","barwed":"⌅","Barwed":"⌆","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","Bcy":"Б","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","Because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","Bernoullis":"ℬ","Beta":"Β","beta":"β","beth":"ℶ","between":"≬","Bfr":"𝔅","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bNot":"⫭","bnot":"⌐","Bopf":"𝔹","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxbox":"⧉","boxdl":"┐","boxdL":"╕","boxDl":"╖","boxDL":"╗","boxdr":"┌","boxdR":"╒","boxDr":"╓","boxDR":"╔","boxh":"─","boxH":"═","boxhd":"┬","boxHd":"╤","boxhD":"╥","boxHD":"╦","boxhu":"┴","boxHu":"╧","boxhU":"╨","boxHU":"╩","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxul":"┘","boxuL":"╛","boxUl":"╜","boxUL":"╝","boxur":"└","boxuR":"╘","boxUr":"╙","boxUR":"╚","boxv":"│","boxV":"║","boxvh":"┼","boxvH":"╪","boxVh":"╫","boxVH":"╬","boxvl":"┤","boxvL":"╡","boxVl":"╢","boxVL":"╣","boxvr":"├","boxvR":"╞","boxVr":"╟","boxVR":"╠","bprime":"‵","breve":"˘","Breve":"˘","brvbar":"¦","bscr":"𝒷","Bscr":"ℬ","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsolb":"⧅","bsol":"\\\\","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","Bumpeq":"≎","bumpeq":"≏","Cacute":"Ć","cacute":"ć","capand":"⩄","capbrcup":"⩉","capcap":"⩋","cap":"∩","Cap":"⋒","capcup":"⩇","capdot":"⩀","CapitalDifferentialD":"ⅅ","caps":"∩︀","caret":"⁁","caron":"ˇ","Cayleys":"ℭ","ccaps":"⩍","Ccaron":"Č","ccaron":"č","Ccedil":"Ç","ccedil":"ç","Ccirc":"Ĉ","ccirc":"ĉ","Cconint":"∰","ccups":"⩌","ccupssm":"⩐","Cdot":"Ċ","cdot":"ċ","cedil":"¸","Cedilla":"¸","cemptyv":"⦲","cent":"¢","centerdot":"·","CenterDot":"·","cfr":"𝔠","Cfr":"ℭ","CHcy":"Ч","chcy":"ч","check":"✓","checkmark":"✓","Chi":"Χ","chi":"χ","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","CircleDot":"⊙","circledR":"®","circledS":"Ⓢ","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","cir":"○","cirE":"⧃","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","clubs":"♣","clubsuit":"♣","colon":":","Colon":"∷","Colone":"⩴","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","Congruent":"≡","conint":"∮","Conint":"∯","ContourIntegral":"∮","copf":"𝕔","Copf":"ℂ","coprod":"∐","Coproduct":"∐","copy":"©","COPY":"©","copysr":"℗","CounterClockwiseContourIntegral":"∳","crarr":"↵","cross":"✗","Cross":"⨯","Cscr":"𝒞","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cupbrcap":"⩈","cupcap":"⩆","CupCap":"≍","cup":"∪","Cup":"⋓","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dagger":"†","Dagger":"‡","daleth":"ℸ","darr":"↓","Darr":"↡","dArr":"⇓","dash":"‐","Dashv":"⫤","dashv":"⊣","dbkarow":"⤏","dblac":"˝","Dcaron":"Ď","dcaron":"ď","Dcy":"Д","dcy":"д","ddagger":"‡","ddarr":"⇊","DD":"ⅅ","dd":"ⅆ","DDotrahd":"⤑","ddotseq":"⩷","deg":"°","Del":"∇","Delta":"Δ","delta":"δ","demptyv":"⦱","dfisht":"⥿","Dfr":"𝔇","dfr":"𝔡","dHar":"⥥","dharl":"⇃","dharr":"⇂","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","diam":"⋄","diamond":"⋄","Diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","DifferentialD":"ⅆ","digamma":"ϝ","disin":"⋲","div":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","DJcy":"Ђ","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","Dopf":"𝔻","dopf":"𝕕","Dot":"¨","dot":"˙","DotDot":"⃜","doteq":"≐","doteqdot":"≑","DotEqual":"≐","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrowBar":"⤓","downarrow":"↓","DownArrow":"↓","Downarrow":"⇓","DownArrowUpArrow":"⇵","DownBreve":"̑","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVectorBar":"⥖","DownLeftVector":"↽","DownRightTeeVector":"⥟","DownRightVectorBar":"⥗","DownRightVector":"⇁","DownTeeArrow":"↧","DownTee":"⊤","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","Dscr":"𝒟","dscr":"𝒹","DScy":"Ѕ","dscy":"ѕ","dsol":"⧶","Dstrok":"Đ","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","DZcy":"Џ","dzcy":"џ","dzigrarr":"⟿","Eacute":"É","eacute":"é","easter":"⩮","Ecaron":"Ě","ecaron":"ě","Ecirc":"Ê","ecirc":"ê","ecir":"≖","ecolon":"≕","Ecy":"Э","ecy":"э","eDDot":"⩷","Edot":"Ė","edot":"ė","eDot":"≑","ee":"ⅇ","efDot":"≒","Efr":"𝔈","efr":"𝔢","eg":"⪚","Egrave":"È","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","Element":"∈","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","Emacr":"Ē","emacr":"ē","empty":"∅","emptyset":"∅","EmptySmallSquare":"◻","emptyv":"∅","EmptyVerySmallSquare":"▫","emsp13":" ","emsp14":" ","emsp":" ","ENG":"Ŋ","eng":"ŋ","ensp":" ","Eogon":"Ę","eogon":"ę","Eopf":"𝔼","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","Epsilon":"Ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","Equal":"⩵","equals":"=","EqualTilde":"≂","equest":"≟","Equilibrium":"⇌","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erarr":"⥱","erDot":"≓","escr":"ℯ","Escr":"ℰ","esdot":"≐","Esim":"⩳","esim":"≂","Eta":"Η","eta":"η","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","euro":"€","excl":"!","exist":"∃","Exists":"∃","expectation":"ℰ","exponentiale":"ⅇ","ExponentialE":"ⅇ","fallingdotseq":"≒","Fcy":"Ф","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","Ffr":"𝔉","ffr":"𝔣","filig":"fi","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","Fopf":"𝔽","fopf":"𝕗","forall":"∀","ForAll":"∀","fork":"⋔","forkv":"⫙","Fouriertrf":"ℱ","fpartint":"⨍","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","Fscr":"ℱ","gacute":"ǵ","Gamma":"Γ","gamma":"γ","Gammad":"Ϝ","gammad":"ϝ","gap":"⪆","Gbreve":"Ğ","gbreve":"ğ","Gcedil":"Ģ","Gcirc":"Ĝ","gcirc":"ĝ","Gcy":"Г","gcy":"г","Gdot":"Ġ","gdot":"ġ","ge":"≥","gE":"≧","gEl":"⪌","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","gescc":"⪩","ges":"⩾","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","Gfr":"𝔊","gfr":"𝔤","gg":"≫","Gg":"⋙","ggg":"⋙","gimel":"ℷ","GJcy":"Ѓ","gjcy":"ѓ","gla":"⪥","gl":"≷","glE":"⪒","glj":"⪤","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gnE":"≩","gneq":"⪈","gneqq":"≩","gnsim":"⋧","Gopf":"𝔾","gopf":"𝕘","grave":"`","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","gtcc":"⪧","gtcir":"⩺","gt":">","GT":">","Gt":"≫","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","Hacek":"ˇ","hairsp":" ","half":"½","hamilt":"ℋ","HARDcy":"Ъ","hardcy":"ъ","harrcir":"⥈","harr":"↔","hArr":"⇔","harrw":"↭","Hat":"^","hbar":"ℏ","Hcirc":"Ĥ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","Hfr":"ℌ","HilbertSpace":"ℋ","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","Hopf":"ℍ","horbar":"―","HorizontalLine":"─","hscr":"𝒽","Hscr":"ℋ","hslash":"ℏ","Hstrok":"Ħ","hstrok":"ħ","HumpDownHump":"≎","HumpEqual":"≏","hybull":"⁃","hyphen":"‐","Iacute":"Í","iacute":"í","ic":"⁣","Icirc":"Î","icirc":"î","Icy":"И","icy":"и","Idot":"İ","IEcy":"Е","iecy":"е","iexcl":"¡","iff":"⇔","ifr":"𝔦","Ifr":"ℑ","Igrave":"Ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","IJlig":"IJ","ijlig":"ij","Imacr":"Ī","imacr":"ī","image":"ℑ","ImaginaryI":"ⅈ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","Im":"ℑ","imof":"⊷","imped":"Ƶ","Implies":"⇒","incare":"℅","in":"∈","infin":"∞","infintie":"⧝","inodot":"ı","intcal":"⊺","int":"∫","Int":"∬","integers":"ℤ","Integral":"∫","intercal":"⊺","Intersection":"⋂","intlarhk":"⨗","intprod":"⨼","InvisibleComma":"⁣","InvisibleTimes":"⁢","IOcy":"Ё","iocy":"ё","Iogon":"Į","iogon":"į","Iopf":"𝕀","iopf":"𝕚","Iota":"Ι","iota":"ι","iprod":"⨼","iquest":"¿","iscr":"𝒾","Iscr":"ℐ","isin":"∈","isindot":"⋵","isinE":"⋹","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"⁢","Itilde":"Ĩ","itilde":"ĩ","Iukcy":"І","iukcy":"і","Iuml":"Ï","iuml":"ï","Jcirc":"Ĵ","jcirc":"ĵ","Jcy":"Й","jcy":"й","Jfr":"𝔍","jfr":"𝔧","jmath":"ȷ","Jopf":"𝕁","jopf":"𝕛","Jscr":"𝒥","jscr":"𝒿","Jsercy":"Ј","jsercy":"ј","Jukcy":"Є","jukcy":"є","Kappa":"Κ","kappa":"κ","kappav":"ϰ","Kcedil":"Ķ","kcedil":"ķ","Kcy":"К","kcy":"к","Kfr":"𝔎","kfr":"𝔨","kgreen":"ĸ","KHcy":"Х","khcy":"х","KJcy":"Ќ","kjcy":"ќ","Kopf":"𝕂","kopf":"𝕜","Kscr":"𝒦","kscr":"𝓀","lAarr":"⇚","Lacute":"Ĺ","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","Lambda":"Λ","lambda":"λ","lang":"⟨","Lang":"⟪","langd":"⦑","langle":"⟨","lap":"⪅","Laplacetrf":"ℒ","laquo":"«","larrb":"⇤","larrbfs":"⤟","larr":"←","Larr":"↞","lArr":"⇐","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","latail":"⤙","lAtail":"⤛","lat":"⪫","late":"⪭","lates":"⪭︀","lbarr":"⤌","lBarr":"⤎","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","Lcaron":"Ľ","lcaron":"ľ","Lcedil":"Ļ","lcedil":"ļ","lceil":"⌈","lcub":"{","Lcy":"Л","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","lE":"≦","LeftAngleBracket":"⟨","LeftArrowBar":"⇤","leftarrow":"←","LeftArrow":"←","Leftarrow":"⇐","LeftArrowRightArrow":"⇆","leftarrowtail":"↢","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVectorBar":"⥙","LeftDownVector":"⇃","LeftFloor":"⌊","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","LeftRightArrow":"↔","Leftrightarrow":"⇔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","LeftRightVector":"⥎","LeftTeeArrow":"↤","LeftTee":"⊣","LeftTeeVector":"⥚","leftthreetimes":"⋋","LeftTriangleBar":"⧏","LeftTriangle":"⊲","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVectorBar":"⥘","LeftUpVector":"↿","LeftVectorBar":"⥒","LeftVector":"↼","lEg":"⪋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","lescc":"⪨","les":"⩽","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","lessgtr":"≶","LessLess":"⪡","lesssim":"≲","LessSlantEqual":"⩽","LessTilde":"≲","lfisht":"⥼","lfloor":"⌊","Lfr":"𝔏","lfr":"𝔩","lg":"≶","lgE":"⪑","lHar":"⥢","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","LJcy":"Љ","ljcy":"љ","llarr":"⇇","ll":"≪","Ll":"⋘","llcorner":"⌞","Lleftarrow":"⇚","llhard":"⥫","lltri":"◺","Lmidot":"Ŀ","lmidot":"ŀ","lmoustache":"⎰","lmoust":"⎰","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lnE":"≨","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","LongLeftArrow":"⟵","Longleftarrow":"⟸","longleftrightarrow":"⟷","LongLeftRightArrow":"⟷","Longleftrightarrow":"⟺","longmapsto":"⟼","longrightarrow":"⟶","LongRightArrow":"⟶","Longrightarrow":"⟹","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","Lopf":"𝕃","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","LowerLeftArrow":"↙","LowerRightArrow":"↘","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"‎","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","Lscr":"ℒ","lsh":"↰","Lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","Lstrok":"Ł","lstrok":"ł","ltcc":"⪦","ltcir":"⩹","lt":"<","LT":"<","Lt":"≪","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltri":"◃","ltrie":"⊴","ltrif":"◂","ltrPar":"⦖","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","macr":"¯","male":"♂","malt":"✠","maltese":"✠","Map":"⤅","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","Mcy":"М","mcy":"м","mdash":"—","mDDot":"∺","measuredangle":"∡","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","mfr":"𝔪","mho":"℧","micro":"µ","midast":"*","midcir":"⫰","mid":"∣","middot":"·","minusb":"⊟","minus":"−","minusd":"∸","minusdu":"⨪","MinusPlus":"∓","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","Mopf":"𝕄","mopf":"𝕞","mp":"∓","mscr":"𝓂","Mscr":"ℳ","mstpos":"∾","Mu":"Μ","mu":"μ","multimap":"⊸","mumap":"⊸","nabla":"∇","Nacute":"Ń","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natural":"♮","naturals":"ℕ","natur":"♮","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","Ncaron":"Ň","ncaron":"ň","Ncedil":"Ņ","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","Ncy":"Н","ncy":"н","ndash":"–","nearhk":"⤤","nearr":"↗","neArr":"⇗","nearrow":"↗","ne":"≠","nedot":"≐̸","NegativeMediumSpace":"​","NegativeThickSpace":"​","NegativeThinSpace":"​","NegativeVeryThinSpace":"​","nequiv":"≢","nesear":"⤨","nesim":"≂̸","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","nexist":"∄","nexists":"∄","Nfr":"𝔑","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","nGg":"⋙̸","ngsim":"≵","nGt":"≫⃒","ngt":"≯","ngtr":"≯","nGtv":"≫̸","nharr":"↮","nhArr":"⇎","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","NJcy":"Њ","njcy":"њ","nlarr":"↚","nlArr":"⇍","nldr":"‥","nlE":"≦̸","nle":"≰","nleftarrow":"↚","nLeftarrow":"⇍","nleftrightarrow":"↮","nLeftrightarrow":"⇎","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nLl":"⋘̸","nlsim":"≴","nLt":"≪⃒","nlt":"≮","nltri":"⋪","nltrie":"⋬","nLtv":"≪̸","nmid":"∤","NoBreak":"⁠","NonBreakingSpace":" ","nopf":"𝕟","Nopf":"ℕ","Not":"⫬","not":"¬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","notin":"∉","notindot":"⋵̸","notinE":"⋹̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","NotLeftTriangleBar":"⧏̸","NotLeftTriangle":"⋪","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangleBar":"⧐̸","NotRightTriangle":"⋫","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","nparallel":"∦","npar":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","nprec":"⊀","npreceq":"⪯̸","npre":"⪯̸","nrarrc":"⤳̸","nrarr":"↛","nrArr":"⇏","nrarrw":"↝̸","nrightarrow":"↛","nRightarrow":"⇏","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","Nscr":"𝒩","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","Ntilde":"Ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","Nu":"Ν","nu":"ν","num":"#","numero":"№","numsp":" ","nvap":"≍⃒","nvdash":"⊬","nvDash":"⊭","nVdash":"⊮","nVDash":"⊯","nvge":"≥⃒","nvgt":">⃒","nvHarr":"⤄","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwarhk":"⤣","nwarr":"↖","nwArr":"⇖","nwarrow":"↖","nwnear":"⤧","Oacute":"Ó","oacute":"ó","oast":"⊛","Ocirc":"Ô","ocirc":"ô","ocir":"⊚","Ocy":"О","ocy":"о","odash":"⊝","Odblac":"Ő","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","OElig":"Œ","oelig":"œ","ofcir":"⦿","Ofr":"𝔒","ofr":"𝔬","ogon":"˛","Ograve":"Ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","Omacr":"Ō","omacr":"ō","Omega":"Ω","omega":"ω","Omicron":"Ο","omicron":"ο","omid":"⦶","ominus":"⊖","Oopf":"𝕆","oopf":"𝕠","opar":"⦷","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","operp":"⦹","oplus":"⊕","orarr":"↻","Or":"⩔","or":"∨","ord":"⩝","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oS":"Ⓢ","Oscr":"𝒪","oscr":"ℴ","Oslash":"Ø","oslash":"ø","osol":"⊘","Otilde":"Õ","otilde":"õ","otimesas":"⨶","Otimes":"⨷","otimes":"⊗","Ouml":"Ö","ouml":"ö","ovbar":"⌽","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","para":"¶","parallel":"∥","par":"∥","parsim":"⫳","parsl":"⫽","part":"∂","PartialD":"∂","Pcy":"П","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","Pfr":"𝔓","pfr":"𝔭","Phi":"Φ","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","Pi":"Π","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plus":"+","plusdo":"∔","plusdu":"⨥","pluse":"⩲","PlusMinus":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","Poincareplane":"ℌ","pointint":"⨕","popf":"𝕡","Popf":"ℙ","pound":"£","prap":"⪷","Pr":"⪻","pr":"≺","prcue":"≼","precapprox":"⪷","prec":"≺","preccurlyeq":"≼","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","pre":"⪯","prE":"⪳","precsim":"≾","prime":"′","Prime":"″","primes":"ℙ","prnap":"⪹","prnE":"⪵","prnsim":"⋨","prod":"∏","Product":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","Proportional":"∝","Proportion":"∷","propto":"∝","prsim":"≾","prurel":"⊰","Pscr":"𝒫","pscr":"𝓅","Psi":"Ψ","psi":"ψ","puncsp":" ","Qfr":"𝔔","qfr":"𝔮","qint":"⨌","qopf":"𝕢","Qopf":"ℚ","qprime":"⁗","Qscr":"𝒬","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quot":"\\"","QUOT":"\\"","rAarr":"⇛","race":"∽̱","Racute":"Ŕ","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","Rang":"⟫","rangd":"⦒","range":"⦥","rangle":"⟩","raquo":"»","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarr":"→","Rarr":"↠","rArr":"⇒","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","Rarrtl":"⤖","rarrtl":"↣","rarrw":"↝","ratail":"⤚","rAtail":"⤜","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rBarr":"⤏","RBarr":"⤐","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","Rcaron":"Ř","rcaron":"ř","Rcedil":"Ŗ","rcedil":"ŗ","rceil":"⌉","rcub":"}","Rcy":"Р","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","Re":"ℜ","rect":"▭","reg":"®","REG":"®","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","Rfr":"ℜ","rHar":"⥤","rhard":"⇁","rharu":"⇀","rharul":"⥬","Rho":"Ρ","rho":"ρ","rhov":"ϱ","RightAngleBracket":"⟩","RightArrowBar":"⇥","rightarrow":"→","RightArrow":"→","Rightarrow":"⇒","RightArrowLeftArrow":"⇄","rightarrowtail":"↣","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVectorBar":"⥕","RightDownVector":"⇂","RightFloor":"⌋","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","RightTeeArrow":"↦","RightTee":"⊢","RightTeeVector":"⥛","rightthreetimes":"⋌","RightTriangleBar":"⧐","RightTriangle":"⊳","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVectorBar":"⥔","RightUpVector":"↾","RightVectorBar":"⥓","RightVector":"⇀","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"‏","rmoustache":"⎱","rmoust":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","Ropf":"ℝ","roplus":"⨮","rotimes":"⨵","RoundImplies":"⥰","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","Rrightarrow":"⇛","rsaquo":"›","rscr":"𝓇","Rscr":"ℛ","rsh":"↱","Rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","RuleDelayed":"⧴","ruluhar":"⥨","rx":"℞","Sacute":"Ś","sacute":"ś","sbquo":"‚","scap":"⪸","Scaron":"Š","scaron":"š","Sc":"⪼","sc":"≻","sccue":"≽","sce":"⪰","scE":"⪴","Scedil":"Ş","scedil":"ş","Scirc":"Ŝ","scirc":"ŝ","scnap":"⪺","scnE":"⪶","scnsim":"⋩","scpolint":"⨓","scsim":"≿","Scy":"С","scy":"с","sdotb":"⊡","sdot":"⋅","sdote":"⩦","searhk":"⤥","searr":"↘","seArr":"⇘","searrow":"↘","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","Sfr":"𝔖","sfr":"𝔰","sfrown":"⌢","sharp":"♯","SHCHcy":"Щ","shchcy":"щ","SHcy":"Ш","shcy":"ш","ShortDownArrow":"↓","ShortLeftArrow":"←","shortmid":"∣","shortparallel":"∥","ShortRightArrow":"→","ShortUpArrow":"↑","shy":"­","Sigma":"Σ","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","SmallCircle":"∘","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","SOFTcy":"Ь","softcy":"ь","solbar":"⌿","solb":"⧄","sol":"/","Sopf":"𝕊","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","Sqrt":"√","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","square":"□","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","squarf":"▪","squ":"□","squf":"▪","srarr":"→","Sscr":"𝒮","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","Star":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","Sub":"⋐","subdot":"⪽","subE":"⫅","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","Subset":"⋐","subseteq":"⊆","subseteqq":"⫅","SubsetEqual":"⊆","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succapprox":"⪸","succ":"≻","succcurlyeq":"≽","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","SuchThat":"∋","sum":"∑","Sum":"∑","sung":"♪","sup1":"¹","sup2":"²","sup3":"³","sup":"⊃","Sup":"⋑","supdot":"⪾","supdsub":"⫘","supE":"⫆","supe":"⊇","supedot":"⫄","Superset":"⊃","SupersetEqual":"⊇","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","Supset":"⋑","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swarhk":"⤦","swarr":"↙","swArr":"⇙","swarrow":"↙","swnwar":"⤪","szlig":"ß","Tab":"\\t","target":"⌖","Tau":"Τ","tau":"τ","tbrk":"⎴","Tcaron":"Ť","tcaron":"ť","Tcedil":"Ţ","tcedil":"ţ","Tcy":"Т","tcy":"т","tdot":"⃛","telrec":"⌕","Tfr":"𝔗","tfr":"𝔱","there4":"∴","therefore":"∴","Therefore":"∴","Theta":"Θ","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","ThickSpace":"  ","ThinSpace":" ","thinsp":" ","thkap":"≈","thksim":"∼","THORN":"Þ","thorn":"þ","tilde":"˜","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","timesbar":"⨱","timesb":"⊠","times":"×","timesd":"⨰","tint":"∭","toea":"⤨","topbot":"⌶","topcir":"⫱","top":"⊤","Topf":"𝕋","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","TRADE":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","TripleDot":"⃛","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","Tscr":"𝒯","tscr":"𝓉","TScy":"Ц","tscy":"ц","TSHcy":"Ћ","tshcy":"ћ","Tstrok":"Ŧ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","Uacute":"Ú","uacute":"ú","uarr":"↑","Uarr":"↟","uArr":"⇑","Uarrocir":"⥉","Ubrcy":"Ў","ubrcy":"ў","Ubreve":"Ŭ","ubreve":"ŭ","Ucirc":"Û","ucirc":"û","Ucy":"У","ucy":"у","udarr":"⇅","Udblac":"Ű","udblac":"ű","udhar":"⥮","ufisht":"⥾","Ufr":"𝔘","ufr":"𝔲","Ugrave":"Ù","ugrave":"ù","uHar":"⥣","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","Umacr":"Ū","umacr":"ū","uml":"¨","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","uogon":"ų","Uopf":"𝕌","uopf":"𝕦","UpArrowBar":"⤒","uparrow":"↑","UpArrow":"↑","Uparrow":"⇑","UpArrowDownArrow":"⇅","updownarrow":"↕","UpDownArrow":"↕","Updownarrow":"⇕","UpEquilibrium":"⥮","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","UpperLeftArrow":"↖","UpperRightArrow":"↗","upsi":"υ","Upsi":"ϒ","upsih":"ϒ","Upsilon":"Υ","upsilon":"υ","UpTeeArrow":"↥","UpTee":"⊥","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","Uring":"Ů","uring":"ů","urtri":"◹","Uscr":"𝒰","uscr":"𝓊","utdot":"⋰","Utilde":"Ũ","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","Uuml":"Ü","uuml":"ü","uwangle":"⦧","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","vArr":"⇕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vBar":"⫨","Vbar":"⫫","vBarv":"⫩","Vcy":"В","vcy":"в","vdash":"⊢","vDash":"⊨","Vdash":"⊩","VDash":"⊫","Vdashl":"⫦","veebar":"⊻","vee":"∨","Vee":"⋁","veeeq":"≚","vellip":"⋮","verbar":"|","Verbar":"‖","vert":"|","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","Vopf":"𝕍","vopf":"𝕧","vprop":"∝","vrtri":"⊳","Vscr":"𝒱","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","Vvdash":"⊪","vzigzag":"⦚","Wcirc":"Ŵ","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","Wedge":"⋀","wedgeq":"≙","weierp":"℘","Wfr":"𝔚","wfr":"𝔴","Wopf":"𝕎","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","Wscr":"𝒲","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","Xfr":"𝔛","xfr":"𝔵","xharr":"⟷","xhArr":"⟺","Xi":"Ξ","xi":"ξ","xlarr":"⟵","xlArr":"⟸","xmap":"⟼","xnis":"⋻","xodot":"⨀","Xopf":"𝕏","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrarr":"⟶","xrArr":"⟹","Xscr":"𝒳","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","Yacute":"Ý","yacute":"ý","YAcy":"Я","yacy":"я","Ycirc":"Ŷ","ycirc":"ŷ","Ycy":"Ы","ycy":"ы","yen":"¥","Yfr":"𝔜","yfr":"𝔶","YIcy":"Ї","yicy":"ї","Yopf":"𝕐","yopf":"𝕪","Yscr":"𝒴","yscr":"𝓎","YUcy":"Ю","yucy":"ю","yuml":"ÿ","Yuml":"Ÿ","Zacute":"Ź","zacute":"ź","Zcaron":"Ž","zcaron":"ž","Zcy":"З","zcy":"з","Zdot":"Ż","zdot":"ż","zeetrf":"ℨ","ZeroWidthSpace":"​","Zeta":"Ζ","zeta":"ζ","zfr":"𝔷","Zfr":"ℨ","ZHcy":"Ж","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","Zopf":"ℤ","Zscr":"𝒵","zscr":"𝓏","zwj":"‍","zwnj":"‌"}')),b=h(JSON.parse('{"Aacute":"Á","aacute":"á","Acirc":"Â","acirc":"â","acute":"´","AElig":"Æ","aelig":"æ","Agrave":"À","agrave":"à","amp":"&","AMP":"&","Aring":"Å","aring":"å","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","brvbar":"¦","Ccedil":"Ç","ccedil":"ç","cedil":"¸","cent":"¢","copy":"©","COPY":"©","curren":"¤","deg":"°","divide":"÷","Eacute":"É","eacute":"é","Ecirc":"Ê","ecirc":"ê","Egrave":"È","egrave":"è","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","frac12":"½","frac14":"¼","frac34":"¾","gt":">","GT":">","Iacute":"Í","iacute":"í","Icirc":"Î","icirc":"î","iexcl":"¡","Igrave":"Ì","igrave":"ì","iquest":"¿","Iuml":"Ï","iuml":"ï","laquo":"«","lt":"<","LT":"<","macr":"¯","micro":"µ","middot":"·","nbsp":" ","not":"¬","Ntilde":"Ñ","ntilde":"ñ","Oacute":"Ó","oacute":"ó","Ocirc":"Ô","ocirc":"ô","Ograve":"Ò","ograve":"ò","ordf":"ª","ordm":"º","Oslash":"Ø","oslash":"ø","Otilde":"Õ","otilde":"õ","Ouml":"Ö","ouml":"ö","para":"¶","plusmn":"±","pound":"£","quot":"\\"","QUOT":"\\"","raquo":"»","reg":"®","REG":"®","sect":"§","shy":"­","sup1":"¹","sup2":"²","sup3":"³","szlig":"ß","THORN":"Þ","thorn":"þ","times":"×","Uacute":"Ú","uacute":"ú","Ucirc":"Û","ucirc":"û","Ugrave":"Ù","ugrave":"ù","uml":"¨","Uuml":"Ü","uuml":"ü","Yacute":"Ý","yacute":"ý","yen":"¥","yuml":"ÿ"}')),v=h(g=JSON.parse('{"amp":"&","apos":"\'","gt":">","lt":"<","quot":"\\""}')),_={},y=_&&_.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_,"__esModule",{value:!0});var k=y(JSON.parse('{"0":65533,"128":8364,"130":8218,"131":402,"132":8222,"133":8230,"134":8224,"135":8225,"136":710,"137":8240,"138":352,"139":8249,"140":338,"142":381,"145":8216,"146":8217,"147":8220,"148":8221,"149":8226,"150":8211,"151":8212,"152":732,"153":8482,"154":353,"155":8250,"156":339,"158":382,"159":376}'));var D=function(e){if(e>=55296&&e<=57343||e>1114111)return"�";e in k.default&&(e=k.default[e]);var t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|1023&e),t+=String.fromCharCode(e)};_.default=D;var C=h(_),x=L(v.default);p.decodeXML=x;var w=L(m.default);function L(e){var t=Object.keys(e).join("|"),r=A(e),i=new RegExp("&(?:"+(t+="|#[xX][\\da-fA-F]+|#\\d+")+");","g");return function(e){return String(e).replace(i,r)}}p.decodeHTMLStrict=w;var q=function(e,t){return e`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*/?>|]|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|[<][?][\\s\\S]*?[?][>]|]*>|)"),J=/[\\&]/,Y=new RegExp("\\\\[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]|&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});","gi"),Q=new RegExp('[&<>"]',"g"),K=function(e){return 92===e.charCodeAt(0)?e.charAt(1):c.decodeHTML(e)},W=function(e){return J.test(e)?e.replace(Y,K):e},ee=(I=a)&&I.__esModule?I.default:I,te=function(e){switch(e){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";default:return e}},re=function(e){return Q.test(e)?e.replace(Q,te):e};function ie(e){return G(e)}if(String.fromCodePoint)G=function(e){try{return String.fromCodePoint(e)}catch(e){if(e instanceof RangeError)return String.fromCharCode(65533);throw e}};else{var ne=String.fromCharCode,se=Math.floor;G=function(){var e,t,r=16384,i=[],n=-1,s=arguments.length;if(!s)return"";for(var a="";++n1114111||se(o)!==o)return String.fromCharCode(65533);o<=65535?i.push(o):(e=55296+((o-=65536)>>10),t=o%1024+56320,i.push(e,t)),(n+1===s||i.length>r)&&(a+=ne.apply(null,i),i.length=0)}return a}} +/*! http://mths.be/repeat v0.2.0 by @mathias */String.prototype.repeat||(Z=function(){try{var e={},t=Object.defineProperty,r=t(e,e,e)&&t}catch(e){}return r}(),$=function(e){if(null==this)throw TypeError();var t=String(this),r=e?Number(e):0;if(r!=r&&(r=0),r<0||r==1/0)throw RangeError();for(var i="";r;)r%2==1&&(i+=t),r>1&&(t+=t),r>>=1;return i},Z?Z(String.prototype,"repeat",{value:$,configurable:!0,writable:!0}):String.prototype.repeat=$);var ae=function(e){try{return ee(e)}catch(t){return e}},oe=W,le=X,ce=new RegExp(/[!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/),ue=new RegExp("^(?:\"(\\\\[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]|[^\"\\x00])*\"|'(\\\\[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]|[^'\\x00])*'|\\((\\\\[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]|[^()\\x00])*\\))"),pe=/^(?:<(?:[^<>\n\\\x00]|\\.)*>)/,he=new RegExp("^[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]"),de=new RegExp("^&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});","i"),fe=/`+/,ge=/^`+/,me=/\.\.\./g,be=/--+/g,ve=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,_e=/^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*>/i,ye=/^ *(?:\n *)?/,ke=/^[ \t\n\x0b\x0c\x0d]/,De=/^\s/,Ce=/ *$/,xe=/^ */,we=/^ *(?:\n|$)/,Le=/^\[(?:[^\\\[\]]|\\.){0,1000}\]/,qe=/^[^\n`\[\]\\!<&*_'"]+/m,Ae=function(e){var t=new n("text");return t._literal=e,t},Ee=function(e){return e.slice(1,e.length-1).trim().replace(/[ \t\r\n]+/," ").toLowerCase().toUpperCase()},Fe=function(e){var t=e.exec(this.subject.slice(this.pos));return null===t?null:(this.pos+=t.index+t[0].length,t[0])},Te=function(){return this.pos0&&null!==s.match(/[^ ]/)&&" "==s[0]&&" "==s[s.length-1]?i._literal=s.slice(1,s.length-1):i._literal=s,e.appendChild(i),!0;return this.pos=a,e.appendChild(Ae(t)),!0},Be=function(e){var t,r=this.subject;return this.pos+=1,10===this.peek()?(this.pos+=1,t=new n("linebreak"),e.appendChild(t)):he.test(r.charAt(this.pos))?(e.appendChild(Ae(r.charAt(this.pos))),this.pos+=1):e.appendChild(Ae("\\")),!0},Oe=function(e){var t,r,i;return(t=this.match(ve))?(r=t.slice(1,t.length-1),(i=new n("link"))._destination=ae("mailto:"+r),i._title="",i.appendChild(Ae(r)),e.appendChild(i),!0):!!(t=this.match(_e))&&(r=t.slice(1,t.length-1),(i=new n("link"))._destination=ae(r),i._title="",i.appendChild(Ae(r)),e.appendChild(i),!0)},Re=function(e){var t=this.match(le);if(null===t)return!1;var r=new n("html_inline");return r._literal=t,e.appendChild(r),!0},je=function(e){var t,r,i,n,s,a,o,l,c,u,p,h=0,d=this.pos;if(39===e||34===e)h++,this.pos++;else for(;this.peek()===e;)h++,this.pos++;return 0===h?null:(t=0===d?"\n":this.subject.charAt(d-1),r=-1===(i=this.peek())?"\n":ie(i),l=De.test(r),c=ce.test(r),u=De.test(t),p=ce.test(t),n=!l&&(!c||u||p),s=!u&&(!p||l||c),95===e?(a=n&&(!s||p),o=s&&(!n||c)):39===e||34===e?(a=n&&!s,o=s):(a=n,o=s),this.pos=d,{numdelims:h,can_open:a,can_close:o})},Pe=function(e,t){var r=this.scanDelims(e);if(!r)return!1;var i,n=r.numdelims,s=this.pos;this.pos+=n,i=39===e?"’":34===e?"“":this.subject.slice(s,this.pos);var a=Ae(i);return t.appendChild(a),(r.can_open||r.can_close)&&(this.options.smart||39!==e&&34!==e)&&(this.delimiters={cc:e,numdelims:n,origdelims:n,node:a,previous:this.delimiters,next:null,can_open:r.can_open,can_close:r.can_close},null!==this.delimiters.previous&&(this.delimiters.previous.next=this.delimiters)),!0},Ue=function(e){null!==e.previous&&(e.previous.next=e.next),null===e.next?this.delimiters=e.previous:e.next.previous=e.previous},He=function(e){for(var t,r,i,s,a,o,l,c,u,p,h,d,f=[[],[],[]],g=!1,m=0;m<3;m++)f[m][95]=e,f[m][42]=e,f[m][39]=e,f[m][34]=e;for(r=this.delimiters;null!==r&&r.previous!==e;)r=r.previous;for(;null!==r;){var b=r.cc;if(r.can_close){for(t=r.previous,p=!1;null!==t&&t!==e&&t!==f[r.origdelims%3][b];){if(g=(r.can_open||t.can_close)&&r.origdelims%3!=0&&(t.origdelims+r.origdelims)%3==0,t.cc===r.cc&&t.can_open&&!g){p=!0;break}t=t.previous}if(i=r,42===b||95===b)if(p){l=r.numdelims>=2&&t.numdelims>=2?2:1,s=t.node,a=r.node,t.numdelims-=l,r.numdelims-=l,s._literal=s._literal.slice(0,s._literal.length-l),a._literal=a._literal.slice(0,a._literal.length-l);var v=new n(1===l?"emph":"strong");for(c=s._next;c&&c!==a;)u=c._next,c.unlink(),v.appendChild(c),c=u;s.insertAfter(v),d=r,(h=t).next!==d&&(h.next=d,d.previous=h),0===t.numdelims&&(s.unlink(),this.removeDelimiter(t)),0===r.numdelims&&(a.unlink(),o=r.next,this.removeDelimiter(r),r=o)}else r=r.next;else 39===b?(r.node._literal="’",p&&(t.node._literal="‘"),r=r.next):34===b&&(r.node._literal="”",p&&(t.node.literal="“"),r=r.next);p||(f[i.origdelims%3][b]=i.previous,i.can_open||this.removeDelimiter(i))}else r=r.next}for(;null!==this.delimiters&&this.delimiters!==e;)this.removeDelimiter(this.delimiters)},Me=function(){var e=this.match(ue);return null===e?null:oe(e.substr(1,e.length-2))},ze=function(){var e=this.match(pe);if(null===e){if(60===this.peek())return null;for(var t,r=this.pos,i=0;-1!==(t=this.peek());)if(92===t&&he.test(this.subject.charAt(this.pos+1)))this.pos+=1,-1!==this.peek()&&(this.pos+=1);else if(40===t)this.pos+=1,i+=1;else if(41===t){if(i<1)break;this.pos+=1,i-=1}else{if(null!==ke.exec(ie(t)))break;this.pos+=1}return this.pos===r&&41!==t||0!==i?null:(e=this.subject.substr(r,this.pos-r),ae(oe(e)))}return ae(oe(e.substr(1,e.length-2)))},Ve=function(){var e=this.match(Le);return null===e||e.length>1001?0:e.length},Ie=function(e){var t=this.pos;this.pos+=1;var r=Ae("[");return e.appendChild(r),this.addBracket(r,t,!1),!0},Ge=function(e){var t=this.pos;if(this.pos+=1,91===this.peek()){this.pos+=1;var r=Ae("![");e.appendChild(r),this.addBracket(r,t+1,!0)}else e.appendChild(Ae("!"));return!0},Ze=function(e){var t,r,i,s,a,o,l=!1;if(this.pos+=1,t=this.pos,null===(o=this.brackets))return e.appendChild(Ae("]")),!0;if(!o.active)return e.appendChild(Ae("]")),this.removeBracket(),!0;r=o.image;var c=this.pos;if(40===this.peek()&&(this.pos++,this.spnl()&&null!==(i=this.parseLinkDestination())&&this.spnl()&&(ke.test(this.subject.charAt(this.pos-1))&&(s=this.parseLinkTitle()),1)&&this.spnl()&&41===this.peek()?(this.pos+=1,l=!0):this.pos=c),!l){var u=this.pos,p=this.parseLinkLabel();if(p>2?a=this.subject.slice(u,u+p):o.bracketAfter||(a=this.subject.slice(o.index,t)),0===p&&(this.pos=c),a){var h=this.refmap[Ee(a)];h&&(i=h.destination,s=h.title,l=!0)}}if(l){var d,f,g=new n(r?"image":"link");for(g._destination=i,g._title=s||"",d=o.node._next;d;)f=d._next,d.unlink(),g.appendChild(d),d=f;if(e.appendChild(g),this.processEmphasis(o.previousDelimiter),this.removeBracket(),o.node.unlink(),!r)for(o=this.brackets;null!==o;)o.image||(o.active=!1),o=o.previous;return!0}return this.removeBracket(),this.pos=t,e.appendChild(Ae("]")),!0},$e=function(e,t,r){null!==this.brackets&&(this.brackets.bracketAfter=!0),this.brackets={node:e,previous:this.brackets,previousDelimiter:this.delimiters,index:t,image:r,active:!0}},Xe=function(){this.brackets=this.brackets.previous},Je=function(e){var t;return!!(t=this.match(de))&&(e.appendChild(Ae(c.decodeHTML(t))),!0)},Ye=function(e){var t;return!!(t=this.match(qe))&&(this.options.smart?e.appendChild(Ae(t.replace(me,"…").replace(be,(function(e){var t=0,r=0;return e.length%3==0?r=e.length/3:e.length%2==0?t=e.length/2:e.length%3==2?(t=1,r=(e.length-2)/3):(t=2,r=(e.length-4)/3),"—".repeat(r)+"–".repeat(t)})))):e.appendChild(Ae(t)),!0)},Qe=function(e){this.pos+=1;var t=e._lastChild;if(t&&"text"===t.type&&" "===t._literal[t._literal.length-1]){var r=" "===t._literal[t._literal.length-2];t._literal=t._literal.replace(Ce,""),e.appendChild(new n(r?"linebreak":"softbreak"))}else e.appendChild(new n("softbreak"));return this.match(xe),!0},Ke=function(e,t){var r,i,n,s;this.subject=e,this.pos=0;var a=this.pos;if(0===(s=this.parseLinkLabel()))return 0;if(r=this.subject.substr(0,s),58!==this.peek())return this.pos=a,0;if(this.pos++,this.spnl(),null===(i=this.parseLinkDestination()))return this.pos=a,0;var o=this.pos;this.spnl(),this.pos!==o&&(n=this.parseLinkTitle()),null===n&&(n="",this.pos=o);var l=!0;if(null===this.match(we)&&(""===n?l=!1:(n="",this.pos=o,l=null!==this.match(we))),!l)return this.pos=a,0;var c=Ee(r);return""===c?(this.pos=a,0):(t[c]||(t[c]={destination:i,title:n}),this.pos-a)},We=function(e){var t=!1,r=this.peek();if(-1===r)return!1;switch(r){case 10:t=this.parseNewline(e);break;case 92:t=this.parseBackslash(e);break;case 96:t=this.parseBackticks(e);break;case 42:case 95:t=this.handleDelim(r,e);break;case 39:case 34:t=this.options.smart&&this.handleDelim(r,e);break;case 91:t=this.parseOpenBracket(e);break;case 33:t=this.parseBang(e);break;case 93:t=this.parseCloseBracket(e);break;case 60:t=this.parseAutolink(e)||this.parseHtmlTag(e);break;case 38:t=this.parseEntity(e);break;default:t=this.parseString(e)}return t||(this.pos+=1,e.appendChild(Ae(ie(r)))),!0},et=function(e){for(this.subject=e._string_content.trim(),this.pos=0,this.delimiters=null,this.brackets=null;this.parseInline(e););e._string_content=null,this.processEmphasis(null)};function tt(e){return{subject:"",delimiters:null,brackets:null,pos:0,refmap:{},match:Fe,peek:Te,spnl:Ne,parseBackticks:Se,parseBackslash:Be,parseAutolink:Oe,parseHtmlTag:Re,scanDelims:je,handleDelim:Pe,parseLinkTitle:Me,parseLinkDestination:ze,parseLinkLabel:Ve,parseOpenBracket:Ie,parseBang:Ge,parseCloseBracket:Ze,addBracket:$e,removeBracket:Xe,parseEntity:Je,parseString:Ye,parseNewline:Qe,parseReference:Ke,parseInline:We,processEmphasis:He,removeDelimiter:Ue,options:e||{},parse:et}}var rt=[/./,/^<(?:script|pre|textarea|style)(?:\s|>|$)/i,/^/,/\?>/,/>/,/\]\]>/],nt=/^(?:(?:\*[ \t]*){3,}|(?:_[ \t]*){3,}|(?:-[ \t]*){3,})[ \t]*$/,st=/^[#`~*+_=<>0-9-]/,at=/[^ \t\f\v\r\n]/,ot=/^[*+-]/,lt=/^(\d{1,9})([.)])/,ct=/^#{1,6}(?:[ \t]+|$)/,ut=/^`{3,}(?!.*`)|^~{3,}/,pt=/^(?:`{3,}|~{3,})(?= *$)/,ht=/^(?:=+|-+)[ \t]*$/,dt=/\r\n|\n|\r/,ft=function(e){return 32===e||9===e},gt=function(e,t){return t=t._listData.markerOffset+t._listData.padding))return 1;e.advanceOffset(t._listData.markerOffset+t._listData.padding,!0)}return 0},finalize:function(){},canContain:function(e){return"item"!==e},acceptsLines:!1},heading:{continue:function(){return 1},finalize:function(){},canContain:function(){return!1},acceptsLines:!1},thematic_break:{continue:function(){return 1},finalize:function(){},canContain:function(){return!1},acceptsLines:!1},code_block:{continue:function(e,t){var r=e.currentLine,i=e.indent;if(t._isFenced){var n=i<=3&&r.charAt(e.nextNonspace)===t._fenceChar&&r.slice(e.nextNonspace).match(pt);if(n&&n[0].length>=t._fenceLength)return e.lastLineLength=e.offset+i+n[0].length,e.finalize(t,e.lineNumber),2;for(var s=t._fenceOffset;s>0&&ft(gt(r,e.offset));)e.advanceOffset(1,!0),s--}else if(i>=4)e.advanceOffset(4,!0);else{if(!e.blank)return 1;e.advanceNextNonspace()}return 0},finalize:function(e,t){if(t._isFenced){var r=t._string_content,i=r.indexOf("\n"),n=r.slice(0,i),s=r.slice(i+1);t.info=W(n.trim()),t._literal=s}else t._literal=t._string_content.replace(/(\n *)+$/,"\n");t._string_content=null},canContain:function(){return!1},acceptsLines:!0},html_block:{continue:function(e,t){return!e.blank||6!==t._htmlBlockType&&7!==t._htmlBlockType?0:1},finalize:function(e,t){t._literal=t._string_content.replace(/(\n *)+$/,""),t._string_content=null},canContain:function(){return!1},acceptsLines:!0},paragraph:{continue:function(e){return e.blank?1:0},finalize:function(e,t){for(var r,i,n=!1;91===gt(t._string_content,0)&&(r=e.inlineParser.parseReference(t._string_content,e.refmap));)t._string_content=t._string_content.slice(r),n=!0;n&&(i=t._string_content,!at.test(i))&&t.unlink()},canContain:function(){return!1},acceptsLines:!0}},kt=[function(e){return e.indented||62!==gt(e.currentLine,e.nextNonspace)?0:(e.advanceNextNonspace(),e.advanceOffset(1,!1),ft(gt(e.currentLine,e.offset))&&e.advanceOffset(1,!0),e.closeUnmatchedBlocks(),e.addChild("block_quote",e.nextNonspace),1)},function(e){var t;if(!e.indented&&(t=e.currentLine.slice(e.nextNonspace).match(ct))){e.advanceNextNonspace(),e.advanceOffset(t[0].length,!1),e.closeUnmatchedBlocks();var r=e.addChild("heading",e.nextNonspace);return r.level=t[0].trim().length,r._string_content=e.currentLine.slice(e.offset).replace(/^[ \t]*#+[ \t]*$/,"").replace(/[ \t]+#+[ \t]*$/,""),e.advanceOffset(e.currentLine.length-e.offset),2}return 0},function(e){var t;if(!e.indented&&(t=e.currentLine.slice(e.nextNonspace).match(ut))){var r=t[0].length;e.closeUnmatchedBlocks();var i=e.addChild("code_block",e.nextNonspace);return i._isFenced=!0,i._fenceLength=r,i._fenceChar=t[0][0],i._fenceOffset=e.indent,e.advanceNextNonspace(),e.advanceOffset(r,!1),2}return 0},function(e,t){if(!e.indented&&60===gt(e.currentLine,e.nextNonspace)){var r,i=e.currentLine.slice(e.nextNonspace);for(r=1;r<=7;r++){if(rt[r].test(i)&&(r<7||"paragraph"!==t.type))return e.closeUnmatchedBlocks(),e.addChild("html_block",e.offset)._htmlBlockType=r,2}}return 0},function(e,t){var r;if(!e.indented&&"paragraph"===t.type&&(r=e.currentLine.slice(e.nextNonspace).match(ht))){var i;for(e.closeUnmatchedBlocks();91===gt(t._string_content,0)&&(i=e.inlineParser.parseReference(t._string_content,e.refmap));)t._string_content=t._string_content.slice(i);if(t._string_content.length>0){var s=new n("heading",t.sourcepos);return s.level="="===r[0][0]?1:2,s._string_content=t._string_content,t.insertAfter(s),t.unlink(),e.tip=s,e.advanceOffset(e.currentLine.length-e.offset,!1),2}return 0}return 0},function(e){return!e.indented&&nt.test(e.currentLine.slice(e.nextNonspace))?(e.closeUnmatchedBlocks(),e.addChild("thematic_break",e.nextNonspace),e.advanceOffset(e.currentLine.length-e.offset,!1),2):0},function(e,t){var r,i,n;return e.indented&&"list"!==t.type||!(r=function(e,t){var r,i,n,s,a=e.currentLine.slice(e.nextNonspace),o={type:null,tight:!0,bulletChar:null,start:null,delimiter:null,padding:null,markerOffset:e.indent};if(e.indent>=4)return null;if(r=a.match(ot))o.type="bullet",o.bulletChar=r[0][0];else{if(!(r=a.match(lt))||"paragraph"===t.type&&"1"!==r[1])return null;o.type="ordered",o.start=parseInt(r[1]),o.delimiter=r[2]}if(-1!==(i=gt(e.currentLine,e.nextNonspace+r[0].length))&&9!==i&&32!==i)return null;if("paragraph"===t.type&&!e.currentLine.slice(e.nextNonspace+r[0].length).match(at))return null;e.advanceNextNonspace(),e.advanceOffset(r[0].length,!0),n=e.column,s=e.offset;do{e.advanceOffset(1,!0),i=gt(e.currentLine,e.offset)}while(e.column-n<5&&ft(i));var l=-1===gt(e.currentLine,e.offset),c=e.column-n;return c>=5||c<1||l?(o.padding=r[0].length+1,e.column=n,e.offset=s,ft(gt(e.currentLine,e.offset))&&e.advanceOffset(1,!0)):o.padding=r[0].length+c,o}(e,t))?0:(e.closeUnmatchedBlocks(),"list"===e.tip.type&&(i=t._listData,n=r,i.type===n.type&&i.delimiter===n.delimiter&&i.bulletChar===n.bulletChar)||((t=e.addChild("list",e.nextNonspace))._listData=r),(t=e.addChild("item",e.nextNonspace))._listData=r,1)},function(e){return e.indented&&"paragraph"!==e.tip.type&&!e.blank?(e.advanceOffset(4,!0),e.closeUnmatchedBlocks(),e.addChild("code_block",e.offset),2):0}],Dt=function(e,t){for(var r,i,n,s=this.currentLine;e>0&&(n=s[this.offset]);)"\t"===n?(r=4-this.column%4,t?(this.partiallyConsumedTab=r>e,i=r>e?e:r,this.column+=i,this.offset+=this.partiallyConsumedTab?0:1,e-=i):(this.partiallyConsumedTab=!1,this.column+=r,this.offset+=1,e-=1)):(this.partiallyConsumedTab=!1,this.offset+=1,this.column+=1,e-=1)},Ct=function(){this.offset=this.nextNonspace,this.column=this.nextNonspaceColumn,this.partiallyConsumedTab=!1},xt=function(){for(var e,t=this.currentLine,r=this.offset,i=this.column;""!==(e=t.charAt(r));)if(" "===e)r++,i++;else{if("\t"!==e)break;r++,i+=4-i%4}this.blank="\n"===e||"\r"===e||""===e,this.nextNonspace=r,this.nextNonspaceColumn=i,this.indent=this.nextNonspaceColumn-this.column,this.indented=this.indent>=4},wt=function(e){var t,r,i=!0,n=this.doc;for(this.oldtip=this.tip,this.offset=0,this.column=0,this.blank=!1,this.partiallyConsumedTab=!1,this.lineNumber+=1,-1!==e.indexOf("\0")&&(e=e.replace(/\0/g,"�")),this.currentLine=e;(r=n._lastChild)&&r._open;){switch(n=r,this.findNextNonspace(),this.blocks[n.type].continue(this,n)){case 0:break;case 1:i=!1;break;case 2:return;default:throw"continue returned illegal value, must be 0, 1, or 2"}if(!i){n=n._parent;break}}this.allClosed=n===this.oldtip,this.lastMatchedContainer=n;for(var s="paragraph"!==n.type&&yt[n.type].acceptsLines,a=this.blockStarts,o=a.length;!s;){if(this.findNextNonspace(),!this.indented&&!st.test(e.slice(this.nextNonspace))){this.advanceNextNonspace();break}for(var l=0;l=1&&n._htmlBlockType<=5&&it[n._htmlBlockType].test(this.currentLine.slice(this.offset))&&(this.lastLineLength=e.length,this.finalize(n,this.lineNumber))):this.offset')))},Bt.prototype.emph=function(e,t){this.tag(t?"em":"/em")},Bt.prototype.strong=function(e,t){this.tag(t?"strong":"/strong")},Bt.prototype.paragraph=function(e,t){var r=e.parent.parent,i=this.attrs(e);null!==r&&"list"===r.type&&r.listTight||(t?(this.cr(),this.tag("p",i)):(this.tag("/p"),this.cr()))},Bt.prototype.heading=function(e,t){var r="h"+e.level,i=this.attrs(e);t?(this.cr(),this.tag(r,i)):(this.tag("/"+r),this.cr())},Bt.prototype.code=function(e){this.tag("code"),this.out(e.literal),this.tag("/code")},Bt.prototype.code_block=function(e){var t=e.info?e.info.split(/\s+/):[],r=this.attrs(e);t.length>0&&t[0].length>0&&r.push(["class","language-"+this.esc(t[0])]),this.cr(),this.tag("pre"),this.tag("code",r),this.out(e.literal),this.tag("/code"),this.tag("/pre"),this.cr()},Bt.prototype.thematic_break=function(e){var t=this.attrs(e);this.cr(),this.tag("hr",t,!0),this.cr()},Bt.prototype.block_quote=function(e,t){var r=this.attrs(e);t?(this.cr(),this.tag("blockquote",r),this.cr()):(this.cr(),this.tag("/blockquote"),this.cr())},Bt.prototype.list=function(e,t){var r="bullet"===e.listType?"ul":"ol",i=this.attrs(e);if(t){var n=e.listStart;null!==n&&1!==n&&i.push(["start",n.toString()]),this.cr(),this.tag(r,i),this.cr()}else this.cr(),this.tag("/"+r),this.cr()},Bt.prototype.item=function(e,t){var r=this.attrs(e);t?this.tag("li",r):(this.tag("/li"),this.cr())},Bt.prototype.custom_inline=function(e,t){t&&e.onEnter?this.lit(e.onEnter):!t&&e.onExit&&this.lit(e.onExit)},Bt.prototype.custom_block=function(e,t){this.cr(),t&&e.onEnter?this.lit(e.onEnter):!t&&e.onExit&&this.lit(e.onExit),this.cr()},Bt.prototype.esc=re,Bt.prototype.out=function(e){this.lit(this.esc(e))},Bt.prototype.tag=function(e,t,r){if(!(this.disableTags>0)){if(this.buffer+="<"+e,t&&t.length>0)for(var i,n=0;void 0!==(i=t[n]);)this.buffer+=" "+i[0]+'="'+i[1]+'"',n++;r&&(this.buffer+=" /"),this.buffer+=">",this.lastOut=">"}},Bt.prototype.attrs=function(e){var t=[];if(this.options.sourcepos){var r=e.sourcepos;r&&t.push(["data-sourcepos",String(r[0][0])+":"+String(r[0][1])+"-"+String(r[1][0])+":"+String(r[1][1])])}return t};var Ot=/\<[^>]*\>/;function Rt(e){e=e||{},this.disableTags=0,this.lastOut="\n",this.indentLevel=0,this.indent=" ",this.options=e}exports.XmlRenderer=Rt,Rt.prototype=Object.create(Ft.prototype),Rt.prototype.render=function(e){var t,r;this.buffer="";var i,n,s,a,o,l,c=e.walker(),u=this.options;for(u.time&&console.time("rendering"),this.buffer+='\n',this.buffer+='\n';i=c.next();)if(s=i.entering,l=(n=i.node).type,a=n.isContainer,o="thematic_break"===l||"linebreak"===l||"softbreak"===l,r=l.replace(/([a-z])([A-Z])/g,"$1_$2").toLowerCase(),s){switch(t=[],l){case"document":t.push(["xmlns","http://commonmark.org/xml/1.0"]);break;case"list":null!==n.listType&&t.push(["type",n.listType.toLowerCase()]),null!==n.listStart&&t.push(["start",String(n.listStart)]),null!==n.listTight&&t.push(["tight",n.listTight?"true":"false"]);var p=n.listDelimiter;if(null!==p){var h="";h="."===p?"period":"paren",t.push(["delimiter",h])}break;case"code_block":n.info&&t.push(["info",n.info]);break;case"heading":t.push(["level",String(n.level)]);break;case"link":case"image":t.push(["destination",n.destination]),t.push(["title",n.title]);break;case"custom_inline":case"custom_block":t.push(["on_enter",n.onEnter]),t.push(["on_exit",n.onExit])}if(u.sourcepos){var d=n.sourcepos;d&&t.push(["sourcepos",String(d[0][0])+":"+String(d[0][1])+"-"+String(d[1][0])+":"+String(d[1][1])])}if(this.cr(),this.out(this.tag(r,t,o)),a)this.indentLevel+=1;else if(!a&&!o){var f=n.literal;f&&this.out(this.esc(f)),this.out(this.tag("/"+r))}}else this.indentLevel-=1,this.cr(),this.out(this.tag("/"+r));return u.time&&console.timeEnd("rendering"),this.buffer+="\n",this.buffer},Rt.prototype.out=function(e){this.disableTags>0?this.buffer+=e.replace(Ot,""):this.buffer+=e,this.lastOut=e},Rt.prototype.cr=function(){if("\n"!==this.lastOut){this.buffer+="\n",this.lastOut="\n";for(var e=this.indentLevel;e>0;e--)this.buffer+=this.indent}},Rt.prototype.tag=function(e,t,r){var i="<"+e;if(t&&t.length>0)for(var n,s=0;void 0!==(n=t[s]);)i+=" "+n[0]+'="'+this.esc(n[1])+'"',s++;return r&&(i+=" /"),i+=">"},Rt.prototype.esc=re; +//# sourceMappingURL=commonmark.49fe3127.js.map diff --git a/dist/commonmark.49fe3127.js.map b/dist/commonmark.49fe3127.js.map new file mode 100644 index 000000000..03ff462f3 --- /dev/null +++ b/dist/commonmark.49fe3127.js.map @@ -0,0 +1 @@ +{"mappings":"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","sources":["./node_modules/commonmark/lib/node.js","./node_modules/mdurl/encode.js","./node_modules/entities/lib/index.js","./node_modules/entities/lib/decode.js","./node_modules/entities/lib/maps/entities.json","./node_modules/entities/lib/maps/legacy.json","./node_modules/entities/lib/maps/xml.json","./node_modules/entities/lib/decode_codepoint.js","./node_modules/entities/lib/maps/decode.json","./node_modules/entities/lib/encode.js","./node_modules/commonmark/lib/common.js","./node_modules/@parcel/scope-hoisting/lib/helpers.js","./node_modules/commonmark/lib/from-code-point.js","./node_modules/string.prototype.repeat/repeat.js","./node_modules/commonmark/lib/inlines.js","./node_modules/commonmark/lib/blocks.js","./node_modules/commonmark/lib/render/renderer.js","./node_modules/commonmark/lib/render/html.js","./node_modules/commonmark/lib/render/xml.js"],"sourcesContent":["\"use strict\";\n\nfunction isContainer(node) {\n switch (node._type) {\n case \"document\":\n case \"block_quote\":\n case \"list\":\n case \"item\":\n case \"paragraph\":\n case \"heading\":\n case \"emph\":\n case \"strong\":\n case \"link\":\n case \"image\":\n case \"custom_inline\":\n case \"custom_block\":\n return true;\n default:\n return false;\n }\n}\n\nvar resumeAt = function(node, entering) {\n this.current = node;\n this.entering = entering === true;\n};\n\nvar next = function() {\n var cur = this.current;\n var entering = this.entering;\n\n if (cur === null) {\n return null;\n }\n\n var container = isContainer(cur);\n\n if (entering && container) {\n if (cur._firstChild) {\n this.current = cur._firstChild;\n this.entering = true;\n } else {\n // stay on node but exit\n this.entering = false;\n }\n } else if (cur === this.root) {\n this.current = null;\n } else if (cur._next === null) {\n this.current = cur._parent;\n this.entering = false;\n } else {\n this.current = cur._next;\n this.entering = true;\n }\n\n return { entering: entering, node: cur };\n};\n\nvar NodeWalker = function(root) {\n return {\n current: root,\n root: root,\n entering: true,\n next: next,\n resumeAt: resumeAt\n };\n};\n\nvar Node = function(nodeType, sourcepos) {\n this._type = nodeType;\n this._parent = null;\n this._firstChild = null;\n this._lastChild = null;\n this._prev = null;\n this._next = null;\n this._sourcepos = sourcepos;\n this._lastLineBlank = false;\n this._lastLineChecked = false;\n this._open = true;\n this._string_content = null;\n this._literal = null;\n this._listData = {};\n this._info = null;\n this._destination = null;\n this._title = null;\n this._isFenced = false;\n this._fenceChar = null;\n this._fenceLength = 0;\n this._fenceOffset = null;\n this._level = null;\n this._onEnter = null;\n this._onExit = null;\n};\n\nvar proto = Node.prototype;\n\nObject.defineProperty(proto, \"isContainer\", {\n get: function() {\n return isContainer(this);\n }\n});\n\nObject.defineProperty(proto, \"type\", {\n get: function() {\n return this._type;\n }\n});\n\nObject.defineProperty(proto, \"firstChild\", {\n get: function() {\n return this._firstChild;\n }\n});\n\nObject.defineProperty(proto, \"lastChild\", {\n get: function() {\n return this._lastChild;\n }\n});\n\nObject.defineProperty(proto, \"next\", {\n get: function() {\n return this._next;\n }\n});\n\nObject.defineProperty(proto, \"prev\", {\n get: function() {\n return this._prev;\n }\n});\n\nObject.defineProperty(proto, \"parent\", {\n get: function() {\n return this._parent;\n }\n});\n\nObject.defineProperty(proto, \"sourcepos\", {\n get: function() {\n return this._sourcepos;\n }\n});\n\nObject.defineProperty(proto, \"literal\", {\n get: function() {\n return this._literal;\n },\n set: function(s) {\n this._literal = s;\n }\n});\n\nObject.defineProperty(proto, \"destination\", {\n get: function() {\n return this._destination;\n },\n set: function(s) {\n this._destination = s;\n }\n});\n\nObject.defineProperty(proto, \"title\", {\n get: function() {\n return this._title;\n },\n set: function(s) {\n this._title = s;\n }\n});\n\nObject.defineProperty(proto, \"info\", {\n get: function() {\n return this._info;\n },\n set: function(s) {\n this._info = s;\n }\n});\n\nObject.defineProperty(proto, \"level\", {\n get: function() {\n return this._level;\n },\n set: function(s) {\n this._level = s;\n }\n});\n\nObject.defineProperty(proto, \"listType\", {\n get: function() {\n return this._listData.type;\n },\n set: function(t) {\n this._listData.type = t;\n }\n});\n\nObject.defineProperty(proto, \"listTight\", {\n get: function() {\n return this._listData.tight;\n },\n set: function(t) {\n this._listData.tight = t;\n }\n});\n\nObject.defineProperty(proto, \"listStart\", {\n get: function() {\n return this._listData.start;\n },\n set: function(n) {\n this._listData.start = n;\n }\n});\n\nObject.defineProperty(proto, \"listDelimiter\", {\n get: function() {\n return this._listData.delimiter;\n },\n set: function(delim) {\n this._listData.delimiter = delim;\n }\n});\n\nObject.defineProperty(proto, \"onEnter\", {\n get: function() {\n return this._onEnter;\n },\n set: function(s) {\n this._onEnter = s;\n }\n});\n\nObject.defineProperty(proto, \"onExit\", {\n get: function() {\n return this._onExit;\n },\n set: function(s) {\n this._onExit = s;\n }\n});\n\nNode.prototype.appendChild = function(child) {\n child.unlink();\n child._parent = this;\n if (this._lastChild) {\n this._lastChild._next = child;\n child._prev = this._lastChild;\n this._lastChild = child;\n } else {\n this._firstChild = child;\n this._lastChild = child;\n }\n};\n\nNode.prototype.prependChild = function(child) {\n child.unlink();\n child._parent = this;\n if (this._firstChild) {\n this._firstChild._prev = child;\n child._next = this._firstChild;\n this._firstChild = child;\n } else {\n this._firstChild = child;\n this._lastChild = child;\n }\n};\n\nNode.prototype.unlink = function() {\n if (this._prev) {\n this._prev._next = this._next;\n } else if (this._parent) {\n this._parent._firstChild = this._next;\n }\n if (this._next) {\n this._next._prev = this._prev;\n } else if (this._parent) {\n this._parent._lastChild = this._prev;\n }\n this._parent = null;\n this._next = null;\n this._prev = null;\n};\n\nNode.prototype.insertAfter = function(sibling) {\n sibling.unlink();\n sibling._next = this._next;\n if (sibling._next) {\n sibling._next._prev = sibling;\n }\n sibling._prev = this;\n this._next = sibling;\n sibling._parent = this._parent;\n if (!sibling._next) {\n sibling._parent._lastChild = sibling;\n }\n};\n\nNode.prototype.insertBefore = function(sibling) {\n sibling.unlink();\n sibling._prev = this._prev;\n if (sibling._prev) {\n sibling._prev._next = sibling;\n }\n sibling._next = this;\n this._prev = sibling;\n sibling._parent = this._parent;\n if (!sibling._prev) {\n sibling._parent._firstChild = sibling;\n }\n};\n\nNode.prototype.walker = function() {\n var walker = new NodeWalker(this);\n return walker;\n};\n\nexport default Node;\n\n/* Example of use of walker:\n\n var walker = w.walker();\n var event;\n\n while (event = walker.next()) {\n console.log(event.entering, event.node.type);\n }\n\n */\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = require(\"./decode\");\nvar encode_1 = require(\"./encode\");\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n */\nfunction decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n */\nfunction encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = require(\"./encode\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\n// Legacy aliases\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = require(\"./decode\");\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var keys = Object.keys(map).join(\"|\");\n var replace = getReplacer(map);\n keys += \"|#[xX][\\\\da-fA-F]+|#\\\\d+\";\n var re = new RegExp(\"&(?:\" + keys + \");\", \"g\");\n return function (str) { return String(str).replace(re, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n //TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n return map[str.slice(1, -1)];\n };\n}\n","{ \"Aacute\": \"\\u00C1\", \"aacute\": \"\\u00E1\", \"Abreve\": \"\\u0102\", \"abreve\": \"\\u0103\", \"ac\": \"\\u223E\", \"acd\": \"\\u223F\", \"acE\": \"\\u223E\\u0333\", \"Acirc\": \"\\u00C2\", \"acirc\": \"\\u00E2\", \"acute\": \"\\u00B4\", \"Acy\": \"\\u0410\", \"acy\": \"\\u0430\", \"AElig\": \"\\u00C6\", \"aelig\": \"\\u00E6\", \"af\": \"\\u2061\", \"Afr\": \"\\uD835\\uDD04\", \"afr\": \"\\uD835\\uDD1E\", \"Agrave\": \"\\u00C0\", \"agrave\": \"\\u00E0\", \"alefsym\": \"\\u2135\", \"aleph\": \"\\u2135\", \"Alpha\": \"\\u0391\", \"alpha\": \"\\u03B1\", \"Amacr\": \"\\u0100\", \"amacr\": \"\\u0101\", \"amalg\": \"\\u2A3F\", \"amp\": \"&\", \"AMP\": \"&\", \"andand\": \"\\u2A55\", \"And\": \"\\u2A53\", \"and\": \"\\u2227\", \"andd\": \"\\u2A5C\", \"andslope\": \"\\u2A58\", \"andv\": \"\\u2A5A\", \"ang\": \"\\u2220\", \"ange\": \"\\u29A4\", \"angle\": \"\\u2220\", \"angmsdaa\": \"\\u29A8\", \"angmsdab\": \"\\u29A9\", \"angmsdac\": \"\\u29AA\", \"angmsdad\": \"\\u29AB\", \"angmsdae\": \"\\u29AC\", \"angmsdaf\": \"\\u29AD\", \"angmsdag\": \"\\u29AE\", \"angmsdah\": \"\\u29AF\", \"angmsd\": \"\\u2221\", \"angrt\": \"\\u221F\", \"angrtvb\": \"\\u22BE\", \"angrtvbd\": \"\\u299D\", \"angsph\": \"\\u2222\", \"angst\": \"\\u00C5\", \"angzarr\": \"\\u237C\", \"Aogon\": \"\\u0104\", \"aogon\": \"\\u0105\", \"Aopf\": \"\\uD835\\uDD38\", \"aopf\": \"\\uD835\\uDD52\", \"apacir\": \"\\u2A6F\", \"ap\": \"\\u2248\", \"apE\": \"\\u2A70\", \"ape\": \"\\u224A\", \"apid\": \"\\u224B\", \"apos\": \"'\", \"ApplyFunction\": \"\\u2061\", \"approx\": \"\\u2248\", \"approxeq\": \"\\u224A\", \"Aring\": \"\\u00C5\", \"aring\": \"\\u00E5\", \"Ascr\": \"\\uD835\\uDC9C\", \"ascr\": \"\\uD835\\uDCB6\", \"Assign\": \"\\u2254\", \"ast\": \"*\", \"asymp\": \"\\u2248\", \"asympeq\": \"\\u224D\", \"Atilde\": \"\\u00C3\", \"atilde\": \"\\u00E3\", \"Auml\": \"\\u00C4\", \"auml\": \"\\u00E4\", \"awconint\": \"\\u2233\", \"awint\": \"\\u2A11\", \"backcong\": \"\\u224C\", \"backepsilon\": \"\\u03F6\", \"backprime\": \"\\u2035\", \"backsim\": \"\\u223D\", \"backsimeq\": \"\\u22CD\", \"Backslash\": \"\\u2216\", \"Barv\": \"\\u2AE7\", \"barvee\": \"\\u22BD\", \"barwed\": \"\\u2305\", \"Barwed\": \"\\u2306\", \"barwedge\": \"\\u2305\", \"bbrk\": \"\\u23B5\", \"bbrktbrk\": \"\\u23B6\", \"bcong\": \"\\u224C\", \"Bcy\": \"\\u0411\", \"bcy\": \"\\u0431\", \"bdquo\": \"\\u201E\", \"becaus\": \"\\u2235\", \"because\": \"\\u2235\", \"Because\": \"\\u2235\", \"bemptyv\": \"\\u29B0\", \"bepsi\": \"\\u03F6\", \"bernou\": \"\\u212C\", \"Bernoullis\": \"\\u212C\", \"Beta\": \"\\u0392\", \"beta\": \"\\u03B2\", \"beth\": \"\\u2136\", \"between\": \"\\u226C\", \"Bfr\": \"\\uD835\\uDD05\", \"bfr\": \"\\uD835\\uDD1F\", \"bigcap\": \"\\u22C2\", \"bigcirc\": \"\\u25EF\", \"bigcup\": \"\\u22C3\", \"bigodot\": \"\\u2A00\", \"bigoplus\": \"\\u2A01\", \"bigotimes\": \"\\u2A02\", \"bigsqcup\": \"\\u2A06\", \"bigstar\": \"\\u2605\", \"bigtriangledown\": \"\\u25BD\", \"bigtriangleup\": \"\\u25B3\", \"biguplus\": \"\\u2A04\", \"bigvee\": \"\\u22C1\", \"bigwedge\": \"\\u22C0\", \"bkarow\": \"\\u290D\", \"blacklozenge\": \"\\u29EB\", \"blacksquare\": \"\\u25AA\", \"blacktriangle\": \"\\u25B4\", \"blacktriangledown\": \"\\u25BE\", \"blacktriangleleft\": \"\\u25C2\", \"blacktriangleright\": \"\\u25B8\", \"blank\": \"\\u2423\", \"blk12\": \"\\u2592\", \"blk14\": \"\\u2591\", \"blk34\": \"\\u2593\", \"block\": \"\\u2588\", \"bne\": \"=\\u20E5\", \"bnequiv\": \"\\u2261\\u20E5\", \"bNot\": \"\\u2AED\", \"bnot\": \"\\u2310\", \"Bopf\": \"\\uD835\\uDD39\", \"bopf\": \"\\uD835\\uDD53\", \"bot\": \"\\u22A5\", \"bottom\": \"\\u22A5\", \"bowtie\": \"\\u22C8\", \"boxbox\": \"\\u29C9\", \"boxdl\": \"\\u2510\", \"boxdL\": \"\\u2555\", \"boxDl\": \"\\u2556\", \"boxDL\": \"\\u2557\", \"boxdr\": \"\\u250C\", \"boxdR\": \"\\u2552\", \"boxDr\": \"\\u2553\", \"boxDR\": \"\\u2554\", \"boxh\": \"\\u2500\", \"boxH\": \"\\u2550\", \"boxhd\": \"\\u252C\", \"boxHd\": \"\\u2564\", \"boxhD\": \"\\u2565\", \"boxHD\": \"\\u2566\", \"boxhu\": \"\\u2534\", \"boxHu\": \"\\u2567\", \"boxhU\": \"\\u2568\", \"boxHU\": \"\\u2569\", \"boxminus\": \"\\u229F\", \"boxplus\": \"\\u229E\", \"boxtimes\": \"\\u22A0\", \"boxul\": \"\\u2518\", \"boxuL\": \"\\u255B\", \"boxUl\": \"\\u255C\", \"boxUL\": \"\\u255D\", \"boxur\": \"\\u2514\", \"boxuR\": \"\\u2558\", \"boxUr\": \"\\u2559\", \"boxUR\": \"\\u255A\", \"boxv\": \"\\u2502\", \"boxV\": \"\\u2551\", \"boxvh\": \"\\u253C\", \"boxvH\": \"\\u256A\", \"boxVh\": \"\\u256B\", \"boxVH\": \"\\u256C\", \"boxvl\": \"\\u2524\", \"boxvL\": \"\\u2561\", \"boxVl\": \"\\u2562\", \"boxVL\": \"\\u2563\", \"boxvr\": \"\\u251C\", \"boxvR\": \"\\u255E\", \"boxVr\": \"\\u255F\", \"boxVR\": \"\\u2560\", \"bprime\": \"\\u2035\", \"breve\": \"\\u02D8\", \"Breve\": \"\\u02D8\", \"brvbar\": \"\\u00A6\", \"bscr\": \"\\uD835\\uDCB7\", \"Bscr\": \"\\u212C\", \"bsemi\": \"\\u204F\", \"bsim\": \"\\u223D\", \"bsime\": \"\\u22CD\", \"bsolb\": \"\\u29C5\", \"bsol\": \"\\\\\", \"bsolhsub\": \"\\u27C8\", \"bull\": \"\\u2022\", \"bullet\": \"\\u2022\", \"bump\": \"\\u224E\", \"bumpE\": \"\\u2AAE\", \"bumpe\": \"\\u224F\", \"Bumpeq\": \"\\u224E\", \"bumpeq\": \"\\u224F\", \"Cacute\": \"\\u0106\", \"cacute\": \"\\u0107\", \"capand\": \"\\u2A44\", \"capbrcup\": \"\\u2A49\", \"capcap\": \"\\u2A4B\", \"cap\": \"\\u2229\", \"Cap\": \"\\u22D2\", \"capcup\": \"\\u2A47\", \"capdot\": \"\\u2A40\", \"CapitalDifferentialD\": \"\\u2145\", \"caps\": \"\\u2229\\uFE00\", \"caret\": \"\\u2041\", \"caron\": \"\\u02C7\", \"Cayleys\": \"\\u212D\", \"ccaps\": \"\\u2A4D\", \"Ccaron\": \"\\u010C\", \"ccaron\": \"\\u010D\", \"Ccedil\": \"\\u00C7\", \"ccedil\": \"\\u00E7\", \"Ccirc\": \"\\u0108\", \"ccirc\": \"\\u0109\", \"Cconint\": \"\\u2230\", \"ccups\": \"\\u2A4C\", \"ccupssm\": \"\\u2A50\", \"Cdot\": \"\\u010A\", \"cdot\": \"\\u010B\", \"cedil\": \"\\u00B8\", \"Cedilla\": \"\\u00B8\", \"cemptyv\": \"\\u29B2\", \"cent\": \"\\u00A2\", \"centerdot\": \"\\u00B7\", \"CenterDot\": \"\\u00B7\", \"cfr\": \"\\uD835\\uDD20\", \"Cfr\": \"\\u212D\", \"CHcy\": \"\\u0427\", \"chcy\": \"\\u0447\", \"check\": \"\\u2713\", \"checkmark\": \"\\u2713\", \"Chi\": \"\\u03A7\", \"chi\": \"\\u03C7\", \"circ\": \"\\u02C6\", \"circeq\": \"\\u2257\", \"circlearrowleft\": \"\\u21BA\", \"circlearrowright\": \"\\u21BB\", \"circledast\": \"\\u229B\", \"circledcirc\": \"\\u229A\", \"circleddash\": \"\\u229D\", \"CircleDot\": \"\\u2299\", \"circledR\": \"\\u00AE\", \"circledS\": \"\\u24C8\", \"CircleMinus\": \"\\u2296\", \"CirclePlus\": \"\\u2295\", \"CircleTimes\": \"\\u2297\", \"cir\": \"\\u25CB\", \"cirE\": \"\\u29C3\", \"cire\": \"\\u2257\", \"cirfnint\": \"\\u2A10\", \"cirmid\": \"\\u2AEF\", \"cirscir\": \"\\u29C2\", \"ClockwiseContourIntegral\": \"\\u2232\", \"CloseCurlyDoubleQuote\": \"\\u201D\", \"CloseCurlyQuote\": \"\\u2019\", \"clubs\": \"\\u2663\", \"clubsuit\": \"\\u2663\", \"colon\": \":\", \"Colon\": \"\\u2237\", \"Colone\": \"\\u2A74\", \"colone\": \"\\u2254\", \"coloneq\": \"\\u2254\", \"comma\": \",\", \"commat\": \"@\", \"comp\": \"\\u2201\", \"compfn\": \"\\u2218\", \"complement\": \"\\u2201\", \"complexes\": \"\\u2102\", \"cong\": \"\\u2245\", \"congdot\": \"\\u2A6D\", \"Congruent\": \"\\u2261\", \"conint\": \"\\u222E\", \"Conint\": \"\\u222F\", \"ContourIntegral\": \"\\u222E\", \"copf\": \"\\uD835\\uDD54\", \"Copf\": \"\\u2102\", \"coprod\": \"\\u2210\", \"Coproduct\": \"\\u2210\", \"copy\": \"\\u00A9\", \"COPY\": \"\\u00A9\", \"copysr\": \"\\u2117\", \"CounterClockwiseContourIntegral\": \"\\u2233\", \"crarr\": \"\\u21B5\", \"cross\": \"\\u2717\", \"Cross\": \"\\u2A2F\", \"Cscr\": \"\\uD835\\uDC9E\", \"cscr\": \"\\uD835\\uDCB8\", \"csub\": \"\\u2ACF\", \"csube\": \"\\u2AD1\", \"csup\": \"\\u2AD0\", \"csupe\": \"\\u2AD2\", \"ctdot\": \"\\u22EF\", \"cudarrl\": \"\\u2938\", \"cudarrr\": \"\\u2935\", \"cuepr\": \"\\u22DE\", \"cuesc\": \"\\u22DF\", \"cularr\": \"\\u21B6\", \"cularrp\": \"\\u293D\", \"cupbrcap\": \"\\u2A48\", \"cupcap\": \"\\u2A46\", \"CupCap\": \"\\u224D\", \"cup\": \"\\u222A\", \"Cup\": \"\\u22D3\", \"cupcup\": \"\\u2A4A\", \"cupdot\": \"\\u228D\", \"cupor\": \"\\u2A45\", \"cups\": \"\\u222A\\uFE00\", \"curarr\": \"\\u21B7\", \"curarrm\": \"\\u293C\", \"curlyeqprec\": \"\\u22DE\", \"curlyeqsucc\": \"\\u22DF\", \"curlyvee\": \"\\u22CE\", \"curlywedge\": \"\\u22CF\", \"curren\": \"\\u00A4\", \"curvearrowleft\": \"\\u21B6\", \"curvearrowright\": \"\\u21B7\", \"cuvee\": \"\\u22CE\", \"cuwed\": \"\\u22CF\", \"cwconint\": \"\\u2232\", \"cwint\": \"\\u2231\", \"cylcty\": \"\\u232D\", \"dagger\": \"\\u2020\", \"Dagger\": \"\\u2021\", \"daleth\": \"\\u2138\", \"darr\": \"\\u2193\", \"Darr\": \"\\u21A1\", \"dArr\": \"\\u21D3\", \"dash\": \"\\u2010\", \"Dashv\": \"\\u2AE4\", \"dashv\": \"\\u22A3\", \"dbkarow\": \"\\u290F\", \"dblac\": \"\\u02DD\", \"Dcaron\": \"\\u010E\", \"dcaron\": \"\\u010F\", \"Dcy\": \"\\u0414\", \"dcy\": \"\\u0434\", \"ddagger\": \"\\u2021\", \"ddarr\": \"\\u21CA\", \"DD\": \"\\u2145\", \"dd\": \"\\u2146\", \"DDotrahd\": \"\\u2911\", \"ddotseq\": \"\\u2A77\", \"deg\": \"\\u00B0\", \"Del\": \"\\u2207\", \"Delta\": \"\\u0394\", \"delta\": \"\\u03B4\", \"demptyv\": \"\\u29B1\", \"dfisht\": \"\\u297F\", \"Dfr\": \"\\uD835\\uDD07\", \"dfr\": \"\\uD835\\uDD21\", \"dHar\": \"\\u2965\", \"dharl\": \"\\u21C3\", \"dharr\": \"\\u21C2\", \"DiacriticalAcute\": \"\\u00B4\", \"DiacriticalDot\": \"\\u02D9\", \"DiacriticalDoubleAcute\": \"\\u02DD\", \"DiacriticalGrave\": \"`\", \"DiacriticalTilde\": \"\\u02DC\", \"diam\": \"\\u22C4\", \"diamond\": \"\\u22C4\", \"Diamond\": \"\\u22C4\", \"diamondsuit\": \"\\u2666\", \"diams\": \"\\u2666\", \"die\": \"\\u00A8\", \"DifferentialD\": \"\\u2146\", \"digamma\": \"\\u03DD\", \"disin\": \"\\u22F2\", \"div\": \"\\u00F7\", \"divide\": \"\\u00F7\", \"divideontimes\": \"\\u22C7\", \"divonx\": \"\\u22C7\", \"DJcy\": \"\\u0402\", \"djcy\": \"\\u0452\", \"dlcorn\": \"\\u231E\", \"dlcrop\": \"\\u230D\", \"dollar\": \"$\", \"Dopf\": \"\\uD835\\uDD3B\", \"dopf\": \"\\uD835\\uDD55\", \"Dot\": \"\\u00A8\", \"dot\": \"\\u02D9\", \"DotDot\": \"\\u20DC\", \"doteq\": \"\\u2250\", \"doteqdot\": \"\\u2251\", \"DotEqual\": \"\\u2250\", \"dotminus\": \"\\u2238\", \"dotplus\": \"\\u2214\", \"dotsquare\": \"\\u22A1\", \"doublebarwedge\": \"\\u2306\", \"DoubleContourIntegral\": \"\\u222F\", \"DoubleDot\": \"\\u00A8\", \"DoubleDownArrow\": \"\\u21D3\", \"DoubleLeftArrow\": \"\\u21D0\", \"DoubleLeftRightArrow\": \"\\u21D4\", \"DoubleLeftTee\": \"\\u2AE4\", \"DoubleLongLeftArrow\": \"\\u27F8\", \"DoubleLongLeftRightArrow\": \"\\u27FA\", \"DoubleLongRightArrow\": \"\\u27F9\", \"DoubleRightArrow\": \"\\u21D2\", \"DoubleRightTee\": \"\\u22A8\", \"DoubleUpArrow\": \"\\u21D1\", \"DoubleUpDownArrow\": \"\\u21D5\", \"DoubleVerticalBar\": \"\\u2225\", \"DownArrowBar\": \"\\u2913\", \"downarrow\": \"\\u2193\", \"DownArrow\": \"\\u2193\", \"Downarrow\": \"\\u21D3\", \"DownArrowUpArrow\": \"\\u21F5\", \"DownBreve\": \"\\u0311\", \"downdownarrows\": \"\\u21CA\", \"downharpoonleft\": \"\\u21C3\", \"downharpoonright\": \"\\u21C2\", \"DownLeftRightVector\": \"\\u2950\", \"DownLeftTeeVector\": \"\\u295E\", \"DownLeftVectorBar\": \"\\u2956\", \"DownLeftVector\": \"\\u21BD\", \"DownRightTeeVector\": \"\\u295F\", \"DownRightVectorBar\": \"\\u2957\", \"DownRightVector\": \"\\u21C1\", \"DownTeeArrow\": \"\\u21A7\", \"DownTee\": \"\\u22A4\", \"drbkarow\": \"\\u2910\", \"drcorn\": \"\\u231F\", \"drcrop\": \"\\u230C\", \"Dscr\": \"\\uD835\\uDC9F\", \"dscr\": \"\\uD835\\uDCB9\", \"DScy\": \"\\u0405\", \"dscy\": \"\\u0455\", \"dsol\": \"\\u29F6\", \"Dstrok\": \"\\u0110\", \"dstrok\": \"\\u0111\", \"dtdot\": \"\\u22F1\", \"dtri\": \"\\u25BF\", \"dtrif\": \"\\u25BE\", \"duarr\": \"\\u21F5\", \"duhar\": \"\\u296F\", \"dwangle\": \"\\u29A6\", \"DZcy\": \"\\u040F\", \"dzcy\": \"\\u045F\", \"dzigrarr\": \"\\u27FF\", \"Eacute\": \"\\u00C9\", \"eacute\": \"\\u00E9\", \"easter\": \"\\u2A6E\", \"Ecaron\": \"\\u011A\", \"ecaron\": \"\\u011B\", \"Ecirc\": \"\\u00CA\", \"ecirc\": \"\\u00EA\", \"ecir\": \"\\u2256\", \"ecolon\": \"\\u2255\", \"Ecy\": \"\\u042D\", \"ecy\": \"\\u044D\", \"eDDot\": \"\\u2A77\", \"Edot\": \"\\u0116\", \"edot\": \"\\u0117\", \"eDot\": \"\\u2251\", \"ee\": \"\\u2147\", \"efDot\": \"\\u2252\", \"Efr\": \"\\uD835\\uDD08\", \"efr\": \"\\uD835\\uDD22\", \"eg\": \"\\u2A9A\", \"Egrave\": \"\\u00C8\", \"egrave\": \"\\u00E8\", \"egs\": \"\\u2A96\", \"egsdot\": \"\\u2A98\", \"el\": \"\\u2A99\", \"Element\": \"\\u2208\", \"elinters\": \"\\u23E7\", \"ell\": \"\\u2113\", \"els\": \"\\u2A95\", \"elsdot\": \"\\u2A97\", \"Emacr\": \"\\u0112\", \"emacr\": \"\\u0113\", \"empty\": \"\\u2205\", \"emptyset\": \"\\u2205\", \"EmptySmallSquare\": \"\\u25FB\", \"emptyv\": \"\\u2205\", \"EmptyVerySmallSquare\": \"\\u25AB\", \"emsp13\": \"\\u2004\", \"emsp14\": \"\\u2005\", \"emsp\": \"\\u2003\", \"ENG\": \"\\u014A\", \"eng\": \"\\u014B\", \"ensp\": \"\\u2002\", \"Eogon\": \"\\u0118\", \"eogon\": \"\\u0119\", \"Eopf\": \"\\uD835\\uDD3C\", \"eopf\": \"\\uD835\\uDD56\", \"epar\": \"\\u22D5\", \"eparsl\": \"\\u29E3\", \"eplus\": \"\\u2A71\", \"epsi\": \"\\u03B5\", \"Epsilon\": \"\\u0395\", \"epsilon\": \"\\u03B5\", \"epsiv\": \"\\u03F5\", \"eqcirc\": \"\\u2256\", \"eqcolon\": \"\\u2255\", \"eqsim\": \"\\u2242\", \"eqslantgtr\": \"\\u2A96\", \"eqslantless\": \"\\u2A95\", \"Equal\": \"\\u2A75\", \"equals\": \"=\", \"EqualTilde\": \"\\u2242\", \"equest\": \"\\u225F\", \"Equilibrium\": \"\\u21CC\", \"equiv\": \"\\u2261\", \"equivDD\": \"\\u2A78\", \"eqvparsl\": \"\\u29E5\", \"erarr\": \"\\u2971\", \"erDot\": \"\\u2253\", \"escr\": \"\\u212F\", \"Escr\": \"\\u2130\", \"esdot\": \"\\u2250\", \"Esim\": \"\\u2A73\", \"esim\": \"\\u2242\", \"Eta\": \"\\u0397\", \"eta\": \"\\u03B7\", \"ETH\": \"\\u00D0\", \"eth\": \"\\u00F0\", \"Euml\": \"\\u00CB\", \"euml\": \"\\u00EB\", \"euro\": \"\\u20AC\", \"excl\": \"!\", \"exist\": \"\\u2203\", \"Exists\": \"\\u2203\", \"expectation\": \"\\u2130\", \"exponentiale\": \"\\u2147\", \"ExponentialE\": \"\\u2147\", \"fallingdotseq\": \"\\u2252\", \"Fcy\": \"\\u0424\", \"fcy\": \"\\u0444\", \"female\": \"\\u2640\", \"ffilig\": \"\\uFB03\", \"fflig\": \"\\uFB00\", \"ffllig\": \"\\uFB04\", \"Ffr\": \"\\uD835\\uDD09\", \"ffr\": \"\\uD835\\uDD23\", \"filig\": \"\\uFB01\", \"FilledSmallSquare\": \"\\u25FC\", \"FilledVerySmallSquare\": \"\\u25AA\", \"fjlig\": \"fj\", \"flat\": \"\\u266D\", \"fllig\": \"\\uFB02\", \"fltns\": \"\\u25B1\", \"fnof\": \"\\u0192\", \"Fopf\": \"\\uD835\\uDD3D\", \"fopf\": \"\\uD835\\uDD57\", \"forall\": \"\\u2200\", \"ForAll\": \"\\u2200\", \"fork\": \"\\u22D4\", \"forkv\": \"\\u2AD9\", \"Fouriertrf\": \"\\u2131\", \"fpartint\": \"\\u2A0D\", \"frac12\": \"\\u00BD\", \"frac13\": \"\\u2153\", \"frac14\": \"\\u00BC\", \"frac15\": \"\\u2155\", \"frac16\": \"\\u2159\", \"frac18\": \"\\u215B\", \"frac23\": \"\\u2154\", \"frac25\": \"\\u2156\", \"frac34\": \"\\u00BE\", \"frac35\": \"\\u2157\", \"frac38\": \"\\u215C\", \"frac45\": \"\\u2158\", \"frac56\": \"\\u215A\", \"frac58\": \"\\u215D\", \"frac78\": \"\\u215E\", \"frasl\": \"\\u2044\", \"frown\": \"\\u2322\", \"fscr\": \"\\uD835\\uDCBB\", \"Fscr\": \"\\u2131\", \"gacute\": \"\\u01F5\", \"Gamma\": \"\\u0393\", \"gamma\": \"\\u03B3\", \"Gammad\": \"\\u03DC\", \"gammad\": \"\\u03DD\", \"gap\": \"\\u2A86\", \"Gbreve\": \"\\u011E\", \"gbreve\": \"\\u011F\", \"Gcedil\": \"\\u0122\", \"Gcirc\": \"\\u011C\", \"gcirc\": \"\\u011D\", \"Gcy\": \"\\u0413\", \"gcy\": \"\\u0433\", \"Gdot\": \"\\u0120\", \"gdot\": \"\\u0121\", \"ge\": \"\\u2265\", \"gE\": \"\\u2267\", \"gEl\": \"\\u2A8C\", \"gel\": \"\\u22DB\", \"geq\": \"\\u2265\", \"geqq\": \"\\u2267\", \"geqslant\": \"\\u2A7E\", \"gescc\": \"\\u2AA9\", \"ges\": \"\\u2A7E\", \"gesdot\": \"\\u2A80\", \"gesdoto\": \"\\u2A82\", \"gesdotol\": \"\\u2A84\", \"gesl\": \"\\u22DB\\uFE00\", \"gesles\": \"\\u2A94\", \"Gfr\": \"\\uD835\\uDD0A\", \"gfr\": \"\\uD835\\uDD24\", \"gg\": \"\\u226B\", \"Gg\": \"\\u22D9\", \"ggg\": \"\\u22D9\", \"gimel\": \"\\u2137\", \"GJcy\": \"\\u0403\", \"gjcy\": \"\\u0453\", \"gla\": \"\\u2AA5\", \"gl\": \"\\u2277\", \"glE\": \"\\u2A92\", \"glj\": \"\\u2AA4\", \"gnap\": \"\\u2A8A\", \"gnapprox\": \"\\u2A8A\", \"gne\": \"\\u2A88\", \"gnE\": \"\\u2269\", \"gneq\": \"\\u2A88\", \"gneqq\": \"\\u2269\", \"gnsim\": \"\\u22E7\", \"Gopf\": \"\\uD835\\uDD3E\", \"gopf\": \"\\uD835\\uDD58\", \"grave\": \"`\", \"GreaterEqual\": \"\\u2265\", \"GreaterEqualLess\": \"\\u22DB\", \"GreaterFullEqual\": \"\\u2267\", \"GreaterGreater\": \"\\u2AA2\", \"GreaterLess\": \"\\u2277\", \"GreaterSlantEqual\": \"\\u2A7E\", \"GreaterTilde\": \"\\u2273\", \"Gscr\": \"\\uD835\\uDCA2\", \"gscr\": \"\\u210A\", \"gsim\": \"\\u2273\", \"gsime\": \"\\u2A8E\", \"gsiml\": \"\\u2A90\", \"gtcc\": \"\\u2AA7\", \"gtcir\": \"\\u2A7A\", \"gt\": \">\", \"GT\": \">\", \"Gt\": \"\\u226B\", \"gtdot\": \"\\u22D7\", \"gtlPar\": \"\\u2995\", \"gtquest\": \"\\u2A7C\", \"gtrapprox\": \"\\u2A86\", \"gtrarr\": \"\\u2978\", \"gtrdot\": \"\\u22D7\", \"gtreqless\": \"\\u22DB\", \"gtreqqless\": \"\\u2A8C\", \"gtrless\": \"\\u2277\", \"gtrsim\": \"\\u2273\", \"gvertneqq\": \"\\u2269\\uFE00\", \"gvnE\": \"\\u2269\\uFE00\", \"Hacek\": \"\\u02C7\", \"hairsp\": \"\\u200A\", \"half\": \"\\u00BD\", \"hamilt\": \"\\u210B\", \"HARDcy\": \"\\u042A\", \"hardcy\": \"\\u044A\", \"harrcir\": \"\\u2948\", \"harr\": \"\\u2194\", \"hArr\": \"\\u21D4\", \"harrw\": \"\\u21AD\", \"Hat\": \"^\", \"hbar\": \"\\u210F\", \"Hcirc\": \"\\u0124\", \"hcirc\": \"\\u0125\", \"hearts\": \"\\u2665\", \"heartsuit\": \"\\u2665\", \"hellip\": \"\\u2026\", \"hercon\": \"\\u22B9\", \"hfr\": \"\\uD835\\uDD25\", \"Hfr\": \"\\u210C\", \"HilbertSpace\": \"\\u210B\", \"hksearow\": \"\\u2925\", \"hkswarow\": \"\\u2926\", \"hoarr\": \"\\u21FF\", \"homtht\": \"\\u223B\", \"hookleftarrow\": \"\\u21A9\", \"hookrightarrow\": \"\\u21AA\", \"hopf\": \"\\uD835\\uDD59\", \"Hopf\": \"\\u210D\", \"horbar\": \"\\u2015\", \"HorizontalLine\": \"\\u2500\", \"hscr\": \"\\uD835\\uDCBD\", \"Hscr\": \"\\u210B\", \"hslash\": \"\\u210F\", \"Hstrok\": \"\\u0126\", \"hstrok\": \"\\u0127\", \"HumpDownHump\": \"\\u224E\", \"HumpEqual\": \"\\u224F\", \"hybull\": \"\\u2043\", \"hyphen\": \"\\u2010\", \"Iacute\": \"\\u00CD\", \"iacute\": \"\\u00ED\", \"ic\": \"\\u2063\", \"Icirc\": \"\\u00CE\", \"icirc\": \"\\u00EE\", \"Icy\": \"\\u0418\", \"icy\": \"\\u0438\", \"Idot\": \"\\u0130\", \"IEcy\": \"\\u0415\", \"iecy\": \"\\u0435\", \"iexcl\": \"\\u00A1\", \"iff\": \"\\u21D4\", \"ifr\": \"\\uD835\\uDD26\", \"Ifr\": \"\\u2111\", \"Igrave\": \"\\u00CC\", \"igrave\": \"\\u00EC\", \"ii\": \"\\u2148\", \"iiiint\": \"\\u2A0C\", \"iiint\": \"\\u222D\", \"iinfin\": \"\\u29DC\", \"iiota\": \"\\u2129\", \"IJlig\": \"\\u0132\", \"ijlig\": \"\\u0133\", \"Imacr\": \"\\u012A\", \"imacr\": \"\\u012B\", \"image\": \"\\u2111\", \"ImaginaryI\": \"\\u2148\", \"imagline\": \"\\u2110\", \"imagpart\": \"\\u2111\", \"imath\": \"\\u0131\", \"Im\": \"\\u2111\", \"imof\": \"\\u22B7\", \"imped\": \"\\u01B5\", \"Implies\": \"\\u21D2\", \"incare\": \"\\u2105\", \"in\": \"\\u2208\", \"infin\": \"\\u221E\", \"infintie\": \"\\u29DD\", \"inodot\": \"\\u0131\", \"intcal\": \"\\u22BA\", \"int\": \"\\u222B\", \"Int\": \"\\u222C\", \"integers\": \"\\u2124\", \"Integral\": \"\\u222B\", \"intercal\": \"\\u22BA\", \"Intersection\": \"\\u22C2\", \"intlarhk\": \"\\u2A17\", \"intprod\": \"\\u2A3C\", \"InvisibleComma\": \"\\u2063\", \"InvisibleTimes\": \"\\u2062\", \"IOcy\": \"\\u0401\", \"iocy\": \"\\u0451\", \"Iogon\": \"\\u012E\", \"iogon\": \"\\u012F\", \"Iopf\": \"\\uD835\\uDD40\", \"iopf\": \"\\uD835\\uDD5A\", \"Iota\": \"\\u0399\", \"iota\": \"\\u03B9\", \"iprod\": \"\\u2A3C\", \"iquest\": \"\\u00BF\", \"iscr\": \"\\uD835\\uDCBE\", \"Iscr\": \"\\u2110\", \"isin\": \"\\u2208\", \"isindot\": \"\\u22F5\", \"isinE\": \"\\u22F9\", \"isins\": \"\\u22F4\", \"isinsv\": \"\\u22F3\", \"isinv\": \"\\u2208\", \"it\": \"\\u2062\", \"Itilde\": \"\\u0128\", \"itilde\": \"\\u0129\", \"Iukcy\": \"\\u0406\", \"iukcy\": \"\\u0456\", \"Iuml\": \"\\u00CF\", \"iuml\": \"\\u00EF\", \"Jcirc\": \"\\u0134\", \"jcirc\": \"\\u0135\", \"Jcy\": \"\\u0419\", \"jcy\": \"\\u0439\", \"Jfr\": \"\\uD835\\uDD0D\", \"jfr\": \"\\uD835\\uDD27\", \"jmath\": \"\\u0237\", \"Jopf\": \"\\uD835\\uDD41\", \"jopf\": \"\\uD835\\uDD5B\", \"Jscr\": \"\\uD835\\uDCA5\", \"jscr\": \"\\uD835\\uDCBF\", \"Jsercy\": \"\\u0408\", \"jsercy\": \"\\u0458\", \"Jukcy\": \"\\u0404\", \"jukcy\": \"\\u0454\", \"Kappa\": \"\\u039A\", \"kappa\": \"\\u03BA\", \"kappav\": \"\\u03F0\", \"Kcedil\": \"\\u0136\", \"kcedil\": \"\\u0137\", \"Kcy\": \"\\u041A\", \"kcy\": \"\\u043A\", \"Kfr\": \"\\uD835\\uDD0E\", \"kfr\": \"\\uD835\\uDD28\", \"kgreen\": \"\\u0138\", \"KHcy\": \"\\u0425\", \"khcy\": \"\\u0445\", \"KJcy\": \"\\u040C\", \"kjcy\": \"\\u045C\", \"Kopf\": \"\\uD835\\uDD42\", \"kopf\": \"\\uD835\\uDD5C\", \"Kscr\": \"\\uD835\\uDCA6\", \"kscr\": \"\\uD835\\uDCC0\", \"lAarr\": \"\\u21DA\", \"Lacute\": \"\\u0139\", \"lacute\": \"\\u013A\", \"laemptyv\": \"\\u29B4\", \"lagran\": \"\\u2112\", \"Lambda\": \"\\u039B\", \"lambda\": \"\\u03BB\", \"lang\": \"\\u27E8\", \"Lang\": \"\\u27EA\", \"langd\": \"\\u2991\", \"langle\": \"\\u27E8\", \"lap\": \"\\u2A85\", \"Laplacetrf\": \"\\u2112\", \"laquo\": \"\\u00AB\", \"larrb\": \"\\u21E4\", \"larrbfs\": \"\\u291F\", \"larr\": \"\\u2190\", \"Larr\": \"\\u219E\", \"lArr\": \"\\u21D0\", \"larrfs\": \"\\u291D\", \"larrhk\": \"\\u21A9\", \"larrlp\": \"\\u21AB\", \"larrpl\": \"\\u2939\", \"larrsim\": \"\\u2973\", \"larrtl\": \"\\u21A2\", \"latail\": \"\\u2919\", \"lAtail\": \"\\u291B\", \"lat\": \"\\u2AAB\", \"late\": \"\\u2AAD\", \"lates\": \"\\u2AAD\\uFE00\", \"lbarr\": \"\\u290C\", \"lBarr\": \"\\u290E\", \"lbbrk\": \"\\u2772\", \"lbrace\": \"{\", \"lbrack\": \"[\", \"lbrke\": \"\\u298B\", \"lbrksld\": \"\\u298F\", \"lbrkslu\": \"\\u298D\", \"Lcaron\": \"\\u013D\", \"lcaron\": \"\\u013E\", \"Lcedil\": \"\\u013B\", \"lcedil\": \"\\u013C\", \"lceil\": \"\\u2308\", \"lcub\": \"{\", \"Lcy\": \"\\u041B\", \"lcy\": \"\\u043B\", \"ldca\": \"\\u2936\", \"ldquo\": \"\\u201C\", \"ldquor\": \"\\u201E\", \"ldrdhar\": \"\\u2967\", \"ldrushar\": \"\\u294B\", \"ldsh\": \"\\u21B2\", \"le\": \"\\u2264\", \"lE\": \"\\u2266\", \"LeftAngleBracket\": \"\\u27E8\", \"LeftArrowBar\": \"\\u21E4\", \"leftarrow\": \"\\u2190\", \"LeftArrow\": \"\\u2190\", \"Leftarrow\": \"\\u21D0\", \"LeftArrowRightArrow\": \"\\u21C6\", \"leftarrowtail\": \"\\u21A2\", \"LeftCeiling\": \"\\u2308\", \"LeftDoubleBracket\": \"\\u27E6\", \"LeftDownTeeVector\": \"\\u2961\", \"LeftDownVectorBar\": \"\\u2959\", \"LeftDownVector\": \"\\u21C3\", \"LeftFloor\": \"\\u230A\", \"leftharpoondown\": \"\\u21BD\", \"leftharpoonup\": \"\\u21BC\", \"leftleftarrows\": \"\\u21C7\", \"leftrightarrow\": \"\\u2194\", \"LeftRightArrow\": \"\\u2194\", \"Leftrightarrow\": \"\\u21D4\", \"leftrightarrows\": \"\\u21C6\", \"leftrightharpoons\": \"\\u21CB\", \"leftrightsquigarrow\": \"\\u21AD\", \"LeftRightVector\": \"\\u294E\", \"LeftTeeArrow\": \"\\u21A4\", \"LeftTee\": \"\\u22A3\", \"LeftTeeVector\": \"\\u295A\", \"leftthreetimes\": \"\\u22CB\", \"LeftTriangleBar\": \"\\u29CF\", \"LeftTriangle\": \"\\u22B2\", \"LeftTriangleEqual\": \"\\u22B4\", \"LeftUpDownVector\": \"\\u2951\", \"LeftUpTeeVector\": \"\\u2960\", \"LeftUpVectorBar\": \"\\u2958\", \"LeftUpVector\": \"\\u21BF\", \"LeftVectorBar\": \"\\u2952\", \"LeftVector\": \"\\u21BC\", \"lEg\": \"\\u2A8B\", \"leg\": \"\\u22DA\", \"leq\": \"\\u2264\", \"leqq\": \"\\u2266\", \"leqslant\": \"\\u2A7D\", \"lescc\": \"\\u2AA8\", \"les\": \"\\u2A7D\", \"lesdot\": \"\\u2A7F\", \"lesdoto\": \"\\u2A81\", \"lesdotor\": \"\\u2A83\", \"lesg\": \"\\u22DA\\uFE00\", \"lesges\": \"\\u2A93\", \"lessapprox\": \"\\u2A85\", \"lessdot\": \"\\u22D6\", \"lesseqgtr\": \"\\u22DA\", \"lesseqqgtr\": \"\\u2A8B\", \"LessEqualGreater\": \"\\u22DA\", \"LessFullEqual\": \"\\u2266\", \"LessGreater\": \"\\u2276\", \"lessgtr\": \"\\u2276\", \"LessLess\": \"\\u2AA1\", \"lesssim\": \"\\u2272\", \"LessSlantEqual\": \"\\u2A7D\", \"LessTilde\": \"\\u2272\", \"lfisht\": \"\\u297C\", \"lfloor\": \"\\u230A\", \"Lfr\": \"\\uD835\\uDD0F\", \"lfr\": \"\\uD835\\uDD29\", \"lg\": \"\\u2276\", \"lgE\": \"\\u2A91\", \"lHar\": \"\\u2962\", \"lhard\": \"\\u21BD\", \"lharu\": \"\\u21BC\", \"lharul\": \"\\u296A\", \"lhblk\": \"\\u2584\", \"LJcy\": \"\\u0409\", \"ljcy\": \"\\u0459\", \"llarr\": \"\\u21C7\", \"ll\": \"\\u226A\", \"Ll\": \"\\u22D8\", \"llcorner\": \"\\u231E\", \"Lleftarrow\": \"\\u21DA\", \"llhard\": \"\\u296B\", \"lltri\": \"\\u25FA\", \"Lmidot\": \"\\u013F\", \"lmidot\": \"\\u0140\", \"lmoustache\": \"\\u23B0\", \"lmoust\": \"\\u23B0\", \"lnap\": \"\\u2A89\", \"lnapprox\": \"\\u2A89\", \"lne\": \"\\u2A87\", \"lnE\": \"\\u2268\", \"lneq\": \"\\u2A87\", \"lneqq\": \"\\u2268\", \"lnsim\": \"\\u22E6\", \"loang\": \"\\u27EC\", \"loarr\": \"\\u21FD\", \"lobrk\": \"\\u27E6\", \"longleftarrow\": \"\\u27F5\", \"LongLeftArrow\": \"\\u27F5\", \"Longleftarrow\": \"\\u27F8\", \"longleftrightarrow\": \"\\u27F7\", \"LongLeftRightArrow\": \"\\u27F7\", \"Longleftrightarrow\": \"\\u27FA\", \"longmapsto\": \"\\u27FC\", \"longrightarrow\": \"\\u27F6\", \"LongRightArrow\": \"\\u27F6\", \"Longrightarrow\": \"\\u27F9\", \"looparrowleft\": \"\\u21AB\", \"looparrowright\": \"\\u21AC\", \"lopar\": \"\\u2985\", \"Lopf\": \"\\uD835\\uDD43\", \"lopf\": \"\\uD835\\uDD5D\", \"loplus\": \"\\u2A2D\", \"lotimes\": \"\\u2A34\", \"lowast\": \"\\u2217\", \"lowbar\": \"_\", \"LowerLeftArrow\": \"\\u2199\", \"LowerRightArrow\": \"\\u2198\", \"loz\": \"\\u25CA\", \"lozenge\": \"\\u25CA\", \"lozf\": \"\\u29EB\", \"lpar\": \"(\", \"lparlt\": \"\\u2993\", \"lrarr\": \"\\u21C6\", \"lrcorner\": \"\\u231F\", \"lrhar\": \"\\u21CB\", \"lrhard\": \"\\u296D\", \"lrm\": \"\\u200E\", \"lrtri\": \"\\u22BF\", \"lsaquo\": \"\\u2039\", \"lscr\": \"\\uD835\\uDCC1\", \"Lscr\": \"\\u2112\", \"lsh\": \"\\u21B0\", \"Lsh\": \"\\u21B0\", \"lsim\": \"\\u2272\", \"lsime\": \"\\u2A8D\", \"lsimg\": \"\\u2A8F\", \"lsqb\": \"[\", \"lsquo\": \"\\u2018\", \"lsquor\": \"\\u201A\", \"Lstrok\": \"\\u0141\", \"lstrok\": \"\\u0142\", \"ltcc\": \"\\u2AA6\", \"ltcir\": \"\\u2A79\", \"lt\": \"<\", \"LT\": \"<\", \"Lt\": \"\\u226A\", \"ltdot\": \"\\u22D6\", \"lthree\": \"\\u22CB\", \"ltimes\": \"\\u22C9\", \"ltlarr\": \"\\u2976\", \"ltquest\": \"\\u2A7B\", \"ltri\": \"\\u25C3\", \"ltrie\": \"\\u22B4\", \"ltrif\": \"\\u25C2\", \"ltrPar\": \"\\u2996\", \"lurdshar\": \"\\u294A\", \"luruhar\": \"\\u2966\", \"lvertneqq\": \"\\u2268\\uFE00\", \"lvnE\": \"\\u2268\\uFE00\", \"macr\": \"\\u00AF\", \"male\": \"\\u2642\", \"malt\": \"\\u2720\", \"maltese\": \"\\u2720\", \"Map\": \"\\u2905\", \"map\": \"\\u21A6\", \"mapsto\": \"\\u21A6\", \"mapstodown\": \"\\u21A7\", \"mapstoleft\": \"\\u21A4\", \"mapstoup\": \"\\u21A5\", \"marker\": \"\\u25AE\", \"mcomma\": \"\\u2A29\", \"Mcy\": \"\\u041C\", \"mcy\": \"\\u043C\", \"mdash\": \"\\u2014\", \"mDDot\": \"\\u223A\", \"measuredangle\": \"\\u2221\", \"MediumSpace\": \"\\u205F\", \"Mellintrf\": \"\\u2133\", \"Mfr\": \"\\uD835\\uDD10\", \"mfr\": \"\\uD835\\uDD2A\", \"mho\": \"\\u2127\", \"micro\": \"\\u00B5\", \"midast\": \"*\", \"midcir\": \"\\u2AF0\", \"mid\": \"\\u2223\", \"middot\": \"\\u00B7\", \"minusb\": \"\\u229F\", \"minus\": \"\\u2212\", \"minusd\": \"\\u2238\", \"minusdu\": \"\\u2A2A\", \"MinusPlus\": \"\\u2213\", \"mlcp\": \"\\u2ADB\", \"mldr\": \"\\u2026\", \"mnplus\": \"\\u2213\", \"models\": \"\\u22A7\", \"Mopf\": \"\\uD835\\uDD44\", \"mopf\": \"\\uD835\\uDD5E\", \"mp\": \"\\u2213\", \"mscr\": \"\\uD835\\uDCC2\", \"Mscr\": \"\\u2133\", \"mstpos\": \"\\u223E\", \"Mu\": \"\\u039C\", \"mu\": \"\\u03BC\", \"multimap\": \"\\u22B8\", \"mumap\": \"\\u22B8\", \"nabla\": \"\\u2207\", \"Nacute\": \"\\u0143\", \"nacute\": \"\\u0144\", \"nang\": \"\\u2220\\u20D2\", \"nap\": \"\\u2249\", \"napE\": \"\\u2A70\\u0338\", \"napid\": \"\\u224B\\u0338\", \"napos\": \"\\u0149\", \"napprox\": \"\\u2249\", \"natural\": \"\\u266E\", \"naturals\": \"\\u2115\", \"natur\": \"\\u266E\", \"nbsp\": \"\\u00A0\", \"nbump\": \"\\u224E\\u0338\", \"nbumpe\": \"\\u224F\\u0338\", \"ncap\": \"\\u2A43\", \"Ncaron\": \"\\u0147\", \"ncaron\": \"\\u0148\", \"Ncedil\": \"\\u0145\", \"ncedil\": \"\\u0146\", \"ncong\": \"\\u2247\", \"ncongdot\": \"\\u2A6D\\u0338\", \"ncup\": \"\\u2A42\", \"Ncy\": \"\\u041D\", \"ncy\": \"\\u043D\", \"ndash\": \"\\u2013\", \"nearhk\": \"\\u2924\", \"nearr\": \"\\u2197\", \"neArr\": \"\\u21D7\", \"nearrow\": \"\\u2197\", \"ne\": \"\\u2260\", \"nedot\": \"\\u2250\\u0338\", \"NegativeMediumSpace\": \"\\u200B\", \"NegativeThickSpace\": \"\\u200B\", \"NegativeThinSpace\": \"\\u200B\", \"NegativeVeryThinSpace\": \"\\u200B\", \"nequiv\": \"\\u2262\", \"nesear\": \"\\u2928\", \"nesim\": \"\\u2242\\u0338\", \"NestedGreaterGreater\": \"\\u226B\", \"NestedLessLess\": \"\\u226A\", \"NewLine\": \"\\n\", \"nexist\": \"\\u2204\", \"nexists\": \"\\u2204\", \"Nfr\": \"\\uD835\\uDD11\", \"nfr\": \"\\uD835\\uDD2B\", \"ngE\": \"\\u2267\\u0338\", \"nge\": \"\\u2271\", \"ngeq\": \"\\u2271\", \"ngeqq\": \"\\u2267\\u0338\", \"ngeqslant\": \"\\u2A7E\\u0338\", \"nges\": \"\\u2A7E\\u0338\", \"nGg\": \"\\u22D9\\u0338\", \"ngsim\": \"\\u2275\", \"nGt\": \"\\u226B\\u20D2\", \"ngt\": \"\\u226F\", \"ngtr\": \"\\u226F\", \"nGtv\": \"\\u226B\\u0338\", \"nharr\": \"\\u21AE\", \"nhArr\": \"\\u21CE\", \"nhpar\": \"\\u2AF2\", \"ni\": \"\\u220B\", \"nis\": \"\\u22FC\", \"nisd\": \"\\u22FA\", \"niv\": \"\\u220B\", \"NJcy\": \"\\u040A\", \"njcy\": \"\\u045A\", \"nlarr\": \"\\u219A\", \"nlArr\": \"\\u21CD\", \"nldr\": \"\\u2025\", \"nlE\": \"\\u2266\\u0338\", \"nle\": \"\\u2270\", \"nleftarrow\": \"\\u219A\", \"nLeftarrow\": \"\\u21CD\", \"nleftrightarrow\": \"\\u21AE\", \"nLeftrightarrow\": \"\\u21CE\", \"nleq\": \"\\u2270\", \"nleqq\": \"\\u2266\\u0338\", \"nleqslant\": \"\\u2A7D\\u0338\", \"nles\": \"\\u2A7D\\u0338\", \"nless\": \"\\u226E\", \"nLl\": \"\\u22D8\\u0338\", \"nlsim\": \"\\u2274\", \"nLt\": \"\\u226A\\u20D2\", \"nlt\": \"\\u226E\", \"nltri\": \"\\u22EA\", \"nltrie\": \"\\u22EC\", \"nLtv\": \"\\u226A\\u0338\", \"nmid\": \"\\u2224\", \"NoBreak\": \"\\u2060\", \"NonBreakingSpace\": \"\\u00A0\", \"nopf\": \"\\uD835\\uDD5F\", \"Nopf\": \"\\u2115\", \"Not\": \"\\u2AEC\", \"not\": \"\\u00AC\", \"NotCongruent\": \"\\u2262\", \"NotCupCap\": \"\\u226D\", \"NotDoubleVerticalBar\": \"\\u2226\", \"NotElement\": \"\\u2209\", \"NotEqual\": \"\\u2260\", \"NotEqualTilde\": \"\\u2242\\u0338\", \"NotExists\": \"\\u2204\", \"NotGreater\": \"\\u226F\", \"NotGreaterEqual\": \"\\u2271\", \"NotGreaterFullEqual\": \"\\u2267\\u0338\", \"NotGreaterGreater\": \"\\u226B\\u0338\", \"NotGreaterLess\": \"\\u2279\", \"NotGreaterSlantEqual\": \"\\u2A7E\\u0338\", \"NotGreaterTilde\": \"\\u2275\", \"NotHumpDownHump\": \"\\u224E\\u0338\", \"NotHumpEqual\": \"\\u224F\\u0338\", \"notin\": \"\\u2209\", \"notindot\": \"\\u22F5\\u0338\", \"notinE\": \"\\u22F9\\u0338\", \"notinva\": \"\\u2209\", \"notinvb\": \"\\u22F7\", \"notinvc\": \"\\u22F6\", \"NotLeftTriangleBar\": \"\\u29CF\\u0338\", \"NotLeftTriangle\": \"\\u22EA\", \"NotLeftTriangleEqual\": \"\\u22EC\", \"NotLess\": \"\\u226E\", \"NotLessEqual\": \"\\u2270\", \"NotLessGreater\": \"\\u2278\", \"NotLessLess\": \"\\u226A\\u0338\", \"NotLessSlantEqual\": \"\\u2A7D\\u0338\", \"NotLessTilde\": \"\\u2274\", \"NotNestedGreaterGreater\": \"\\u2AA2\\u0338\", \"NotNestedLessLess\": \"\\u2AA1\\u0338\", \"notni\": \"\\u220C\", \"notniva\": \"\\u220C\", \"notnivb\": \"\\u22FE\", \"notnivc\": \"\\u22FD\", \"NotPrecedes\": \"\\u2280\", \"NotPrecedesEqual\": \"\\u2AAF\\u0338\", \"NotPrecedesSlantEqual\": \"\\u22E0\", \"NotReverseElement\": \"\\u220C\", \"NotRightTriangleBar\": \"\\u29D0\\u0338\", \"NotRightTriangle\": \"\\u22EB\", \"NotRightTriangleEqual\": \"\\u22ED\", \"NotSquareSubset\": \"\\u228F\\u0338\", \"NotSquareSubsetEqual\": \"\\u22E2\", \"NotSquareSuperset\": \"\\u2290\\u0338\", \"NotSquareSupersetEqual\": \"\\u22E3\", \"NotSubset\": \"\\u2282\\u20D2\", \"NotSubsetEqual\": \"\\u2288\", \"NotSucceeds\": \"\\u2281\", \"NotSucceedsEqual\": \"\\u2AB0\\u0338\", \"NotSucceedsSlantEqual\": \"\\u22E1\", \"NotSucceedsTilde\": \"\\u227F\\u0338\", \"NotSuperset\": \"\\u2283\\u20D2\", \"NotSupersetEqual\": \"\\u2289\", \"NotTilde\": \"\\u2241\", \"NotTildeEqual\": \"\\u2244\", \"NotTildeFullEqual\": \"\\u2247\", \"NotTildeTilde\": \"\\u2249\", \"NotVerticalBar\": \"\\u2224\", \"nparallel\": \"\\u2226\", \"npar\": \"\\u2226\", \"nparsl\": \"\\u2AFD\\u20E5\", \"npart\": \"\\u2202\\u0338\", \"npolint\": \"\\u2A14\", \"npr\": \"\\u2280\", \"nprcue\": \"\\u22E0\", \"nprec\": \"\\u2280\", \"npreceq\": \"\\u2AAF\\u0338\", \"npre\": \"\\u2AAF\\u0338\", \"nrarrc\": \"\\u2933\\u0338\", \"nrarr\": \"\\u219B\", \"nrArr\": \"\\u21CF\", \"nrarrw\": \"\\u219D\\u0338\", \"nrightarrow\": \"\\u219B\", \"nRightarrow\": \"\\u21CF\", \"nrtri\": \"\\u22EB\", \"nrtrie\": \"\\u22ED\", \"nsc\": \"\\u2281\", \"nsccue\": \"\\u22E1\", \"nsce\": \"\\u2AB0\\u0338\", \"Nscr\": \"\\uD835\\uDCA9\", \"nscr\": \"\\uD835\\uDCC3\", \"nshortmid\": \"\\u2224\", \"nshortparallel\": \"\\u2226\", \"nsim\": \"\\u2241\", \"nsime\": \"\\u2244\", \"nsimeq\": \"\\u2244\", \"nsmid\": \"\\u2224\", \"nspar\": \"\\u2226\", \"nsqsube\": \"\\u22E2\", \"nsqsupe\": \"\\u22E3\", \"nsub\": \"\\u2284\", \"nsubE\": \"\\u2AC5\\u0338\", \"nsube\": \"\\u2288\", \"nsubset\": \"\\u2282\\u20D2\", \"nsubseteq\": \"\\u2288\", \"nsubseteqq\": \"\\u2AC5\\u0338\", \"nsucc\": \"\\u2281\", \"nsucceq\": \"\\u2AB0\\u0338\", \"nsup\": \"\\u2285\", \"nsupE\": \"\\u2AC6\\u0338\", \"nsupe\": \"\\u2289\", \"nsupset\": \"\\u2283\\u20D2\", \"nsupseteq\": \"\\u2289\", \"nsupseteqq\": \"\\u2AC6\\u0338\", \"ntgl\": \"\\u2279\", \"Ntilde\": \"\\u00D1\", \"ntilde\": \"\\u00F1\", \"ntlg\": \"\\u2278\", \"ntriangleleft\": \"\\u22EA\", \"ntrianglelefteq\": \"\\u22EC\", \"ntriangleright\": \"\\u22EB\", \"ntrianglerighteq\": \"\\u22ED\", \"Nu\": \"\\u039D\", \"nu\": \"\\u03BD\", \"num\": \"#\", \"numero\": \"\\u2116\", \"numsp\": \"\\u2007\", \"nvap\": \"\\u224D\\u20D2\", \"nvdash\": \"\\u22AC\", \"nvDash\": \"\\u22AD\", \"nVdash\": \"\\u22AE\", \"nVDash\": \"\\u22AF\", \"nvge\": \"\\u2265\\u20D2\", \"nvgt\": \">\\u20D2\", \"nvHarr\": \"\\u2904\", \"nvinfin\": \"\\u29DE\", \"nvlArr\": \"\\u2902\", \"nvle\": \"\\u2264\\u20D2\", \"nvlt\": \"<\\u20D2\", \"nvltrie\": \"\\u22B4\\u20D2\", \"nvrArr\": \"\\u2903\", \"nvrtrie\": \"\\u22B5\\u20D2\", \"nvsim\": \"\\u223C\\u20D2\", \"nwarhk\": \"\\u2923\", \"nwarr\": \"\\u2196\", \"nwArr\": \"\\u21D6\", \"nwarrow\": \"\\u2196\", \"nwnear\": \"\\u2927\", \"Oacute\": \"\\u00D3\", \"oacute\": \"\\u00F3\", \"oast\": \"\\u229B\", \"Ocirc\": \"\\u00D4\", \"ocirc\": \"\\u00F4\", \"ocir\": \"\\u229A\", \"Ocy\": \"\\u041E\", \"ocy\": \"\\u043E\", \"odash\": \"\\u229D\", \"Odblac\": \"\\u0150\", \"odblac\": \"\\u0151\", \"odiv\": \"\\u2A38\", \"odot\": \"\\u2299\", \"odsold\": \"\\u29BC\", \"OElig\": \"\\u0152\", \"oelig\": \"\\u0153\", \"ofcir\": \"\\u29BF\", \"Ofr\": \"\\uD835\\uDD12\", \"ofr\": \"\\uD835\\uDD2C\", \"ogon\": \"\\u02DB\", \"Ograve\": \"\\u00D2\", \"ograve\": \"\\u00F2\", \"ogt\": \"\\u29C1\", \"ohbar\": \"\\u29B5\", \"ohm\": \"\\u03A9\", \"oint\": \"\\u222E\", \"olarr\": \"\\u21BA\", \"olcir\": \"\\u29BE\", \"olcross\": \"\\u29BB\", \"oline\": \"\\u203E\", \"olt\": \"\\u29C0\", \"Omacr\": \"\\u014C\", \"omacr\": \"\\u014D\", \"Omega\": \"\\u03A9\", \"omega\": \"\\u03C9\", \"Omicron\": \"\\u039F\", \"omicron\": \"\\u03BF\", \"omid\": \"\\u29B6\", \"ominus\": \"\\u2296\", \"Oopf\": \"\\uD835\\uDD46\", \"oopf\": \"\\uD835\\uDD60\", \"opar\": \"\\u29B7\", \"OpenCurlyDoubleQuote\": \"\\u201C\", \"OpenCurlyQuote\": \"\\u2018\", \"operp\": \"\\u29B9\", \"oplus\": \"\\u2295\", \"orarr\": \"\\u21BB\", \"Or\": \"\\u2A54\", \"or\": \"\\u2228\", \"ord\": \"\\u2A5D\", \"order\": \"\\u2134\", \"orderof\": \"\\u2134\", \"ordf\": \"\\u00AA\", \"ordm\": \"\\u00BA\", \"origof\": \"\\u22B6\", \"oror\": \"\\u2A56\", \"orslope\": \"\\u2A57\", \"orv\": \"\\u2A5B\", \"oS\": \"\\u24C8\", \"Oscr\": \"\\uD835\\uDCAA\", \"oscr\": \"\\u2134\", \"Oslash\": \"\\u00D8\", \"oslash\": \"\\u00F8\", \"osol\": \"\\u2298\", \"Otilde\": \"\\u00D5\", \"otilde\": \"\\u00F5\", \"otimesas\": \"\\u2A36\", \"Otimes\": \"\\u2A37\", \"otimes\": \"\\u2297\", \"Ouml\": \"\\u00D6\", \"ouml\": \"\\u00F6\", \"ovbar\": \"\\u233D\", \"OverBar\": \"\\u203E\", \"OverBrace\": \"\\u23DE\", \"OverBracket\": \"\\u23B4\", \"OverParenthesis\": \"\\u23DC\", \"para\": \"\\u00B6\", \"parallel\": \"\\u2225\", \"par\": \"\\u2225\", \"parsim\": \"\\u2AF3\", \"parsl\": \"\\u2AFD\", \"part\": \"\\u2202\", \"PartialD\": \"\\u2202\", \"Pcy\": \"\\u041F\", \"pcy\": \"\\u043F\", \"percnt\": \"%\", \"period\": \".\", \"permil\": \"\\u2030\", \"perp\": \"\\u22A5\", \"pertenk\": \"\\u2031\", \"Pfr\": \"\\uD835\\uDD13\", \"pfr\": \"\\uD835\\uDD2D\", \"Phi\": \"\\u03A6\", \"phi\": \"\\u03C6\", \"phiv\": \"\\u03D5\", \"phmmat\": \"\\u2133\", \"phone\": \"\\u260E\", \"Pi\": \"\\u03A0\", \"pi\": \"\\u03C0\", \"pitchfork\": \"\\u22D4\", \"piv\": \"\\u03D6\", \"planck\": \"\\u210F\", \"planckh\": \"\\u210E\", \"plankv\": \"\\u210F\", \"plusacir\": \"\\u2A23\", \"plusb\": \"\\u229E\", \"pluscir\": \"\\u2A22\", \"plus\": \"+\", \"plusdo\": \"\\u2214\", \"plusdu\": \"\\u2A25\", \"pluse\": \"\\u2A72\", \"PlusMinus\": \"\\u00B1\", \"plusmn\": \"\\u00B1\", \"plussim\": \"\\u2A26\", \"plustwo\": \"\\u2A27\", \"pm\": \"\\u00B1\", \"Poincareplane\": \"\\u210C\", \"pointint\": \"\\u2A15\", \"popf\": \"\\uD835\\uDD61\", \"Popf\": \"\\u2119\", \"pound\": \"\\u00A3\", \"prap\": \"\\u2AB7\", \"Pr\": \"\\u2ABB\", \"pr\": \"\\u227A\", \"prcue\": \"\\u227C\", \"precapprox\": \"\\u2AB7\", \"prec\": \"\\u227A\", \"preccurlyeq\": \"\\u227C\", \"Precedes\": \"\\u227A\", \"PrecedesEqual\": \"\\u2AAF\", \"PrecedesSlantEqual\": \"\\u227C\", \"PrecedesTilde\": \"\\u227E\", \"preceq\": \"\\u2AAF\", \"precnapprox\": \"\\u2AB9\", \"precneqq\": \"\\u2AB5\", \"precnsim\": \"\\u22E8\", \"pre\": \"\\u2AAF\", \"prE\": \"\\u2AB3\", \"precsim\": \"\\u227E\", \"prime\": \"\\u2032\", \"Prime\": \"\\u2033\", \"primes\": \"\\u2119\", \"prnap\": \"\\u2AB9\", \"prnE\": \"\\u2AB5\", \"prnsim\": \"\\u22E8\", \"prod\": \"\\u220F\", \"Product\": \"\\u220F\", \"profalar\": \"\\u232E\", \"profline\": \"\\u2312\", \"profsurf\": \"\\u2313\", \"prop\": \"\\u221D\", \"Proportional\": \"\\u221D\", \"Proportion\": \"\\u2237\", \"propto\": \"\\u221D\", \"prsim\": \"\\u227E\", \"prurel\": \"\\u22B0\", \"Pscr\": \"\\uD835\\uDCAB\", \"pscr\": \"\\uD835\\uDCC5\", \"Psi\": \"\\u03A8\", \"psi\": \"\\u03C8\", \"puncsp\": \"\\u2008\", \"Qfr\": \"\\uD835\\uDD14\", \"qfr\": \"\\uD835\\uDD2E\", \"qint\": \"\\u2A0C\", \"qopf\": \"\\uD835\\uDD62\", \"Qopf\": \"\\u211A\", \"qprime\": \"\\u2057\", \"Qscr\": \"\\uD835\\uDCAC\", \"qscr\": \"\\uD835\\uDCC6\", \"quaternions\": \"\\u210D\", \"quatint\": \"\\u2A16\", \"quest\": \"?\", \"questeq\": \"\\u225F\", \"quot\": \"\\\"\", \"QUOT\": \"\\\"\", \"rAarr\": \"\\u21DB\", \"race\": \"\\u223D\\u0331\", \"Racute\": \"\\u0154\", \"racute\": \"\\u0155\", \"radic\": \"\\u221A\", \"raemptyv\": \"\\u29B3\", \"rang\": \"\\u27E9\", \"Rang\": \"\\u27EB\", \"rangd\": \"\\u2992\", \"range\": \"\\u29A5\", \"rangle\": \"\\u27E9\", \"raquo\": \"\\u00BB\", \"rarrap\": \"\\u2975\", \"rarrb\": \"\\u21E5\", \"rarrbfs\": \"\\u2920\", \"rarrc\": \"\\u2933\", \"rarr\": \"\\u2192\", \"Rarr\": \"\\u21A0\", \"rArr\": \"\\u21D2\", \"rarrfs\": \"\\u291E\", \"rarrhk\": \"\\u21AA\", \"rarrlp\": \"\\u21AC\", \"rarrpl\": \"\\u2945\", \"rarrsim\": \"\\u2974\", \"Rarrtl\": \"\\u2916\", \"rarrtl\": \"\\u21A3\", \"rarrw\": \"\\u219D\", \"ratail\": \"\\u291A\", \"rAtail\": \"\\u291C\", \"ratio\": \"\\u2236\", \"rationals\": \"\\u211A\", \"rbarr\": \"\\u290D\", \"rBarr\": \"\\u290F\", \"RBarr\": \"\\u2910\", \"rbbrk\": \"\\u2773\", \"rbrace\": \"}\", \"rbrack\": \"]\", \"rbrke\": \"\\u298C\", \"rbrksld\": \"\\u298E\", \"rbrkslu\": \"\\u2990\", \"Rcaron\": \"\\u0158\", \"rcaron\": \"\\u0159\", \"Rcedil\": \"\\u0156\", \"rcedil\": \"\\u0157\", \"rceil\": \"\\u2309\", \"rcub\": \"}\", \"Rcy\": \"\\u0420\", \"rcy\": \"\\u0440\", \"rdca\": \"\\u2937\", \"rdldhar\": \"\\u2969\", \"rdquo\": \"\\u201D\", \"rdquor\": \"\\u201D\", \"rdsh\": \"\\u21B3\", \"real\": \"\\u211C\", \"realine\": \"\\u211B\", \"realpart\": \"\\u211C\", \"reals\": \"\\u211D\", \"Re\": \"\\u211C\", \"rect\": \"\\u25AD\", \"reg\": \"\\u00AE\", \"REG\": \"\\u00AE\", \"ReverseElement\": \"\\u220B\", \"ReverseEquilibrium\": \"\\u21CB\", \"ReverseUpEquilibrium\": \"\\u296F\", \"rfisht\": \"\\u297D\", \"rfloor\": \"\\u230B\", \"rfr\": \"\\uD835\\uDD2F\", \"Rfr\": \"\\u211C\", \"rHar\": \"\\u2964\", \"rhard\": \"\\u21C1\", \"rharu\": \"\\u21C0\", \"rharul\": \"\\u296C\", \"Rho\": \"\\u03A1\", \"rho\": \"\\u03C1\", \"rhov\": \"\\u03F1\", \"RightAngleBracket\": \"\\u27E9\", \"RightArrowBar\": \"\\u21E5\", \"rightarrow\": \"\\u2192\", \"RightArrow\": \"\\u2192\", \"Rightarrow\": \"\\u21D2\", \"RightArrowLeftArrow\": \"\\u21C4\", \"rightarrowtail\": \"\\u21A3\", \"RightCeiling\": \"\\u2309\", \"RightDoubleBracket\": \"\\u27E7\", \"RightDownTeeVector\": \"\\u295D\", \"RightDownVectorBar\": \"\\u2955\", \"RightDownVector\": \"\\u21C2\", \"RightFloor\": \"\\u230B\", \"rightharpoondown\": \"\\u21C1\", \"rightharpoonup\": \"\\u21C0\", \"rightleftarrows\": \"\\u21C4\", \"rightleftharpoons\": \"\\u21CC\", \"rightrightarrows\": \"\\u21C9\", \"rightsquigarrow\": \"\\u219D\", \"RightTeeArrow\": \"\\u21A6\", \"RightTee\": \"\\u22A2\", \"RightTeeVector\": \"\\u295B\", \"rightthreetimes\": \"\\u22CC\", \"RightTriangleBar\": \"\\u29D0\", \"RightTriangle\": \"\\u22B3\", \"RightTriangleEqual\": \"\\u22B5\", \"RightUpDownVector\": \"\\u294F\", \"RightUpTeeVector\": \"\\u295C\", \"RightUpVectorBar\": \"\\u2954\", \"RightUpVector\": \"\\u21BE\", \"RightVectorBar\": \"\\u2953\", \"RightVector\": \"\\u21C0\", \"ring\": \"\\u02DA\", \"risingdotseq\": \"\\u2253\", \"rlarr\": \"\\u21C4\", \"rlhar\": \"\\u21CC\", \"rlm\": \"\\u200F\", \"rmoustache\": \"\\u23B1\", \"rmoust\": \"\\u23B1\", \"rnmid\": \"\\u2AEE\", \"roang\": \"\\u27ED\", \"roarr\": \"\\u21FE\", \"robrk\": \"\\u27E7\", \"ropar\": \"\\u2986\", \"ropf\": \"\\uD835\\uDD63\", \"Ropf\": \"\\u211D\", \"roplus\": \"\\u2A2E\", \"rotimes\": \"\\u2A35\", \"RoundImplies\": \"\\u2970\", \"rpar\": \")\", \"rpargt\": \"\\u2994\", \"rppolint\": \"\\u2A12\", \"rrarr\": \"\\u21C9\", \"Rrightarrow\": \"\\u21DB\", \"rsaquo\": \"\\u203A\", \"rscr\": \"\\uD835\\uDCC7\", \"Rscr\": \"\\u211B\", \"rsh\": \"\\u21B1\", \"Rsh\": \"\\u21B1\", \"rsqb\": \"]\", \"rsquo\": \"\\u2019\", \"rsquor\": \"\\u2019\", \"rthree\": \"\\u22CC\", \"rtimes\": \"\\u22CA\", \"rtri\": \"\\u25B9\", \"rtrie\": \"\\u22B5\", \"rtrif\": \"\\u25B8\", \"rtriltri\": \"\\u29CE\", \"RuleDelayed\": \"\\u29F4\", \"ruluhar\": \"\\u2968\", \"rx\": \"\\u211E\", \"Sacute\": \"\\u015A\", \"sacute\": \"\\u015B\", \"sbquo\": \"\\u201A\", \"scap\": \"\\u2AB8\", \"Scaron\": \"\\u0160\", \"scaron\": \"\\u0161\", \"Sc\": \"\\u2ABC\", \"sc\": \"\\u227B\", \"sccue\": \"\\u227D\", \"sce\": \"\\u2AB0\", \"scE\": \"\\u2AB4\", \"Scedil\": \"\\u015E\", \"scedil\": \"\\u015F\", \"Scirc\": \"\\u015C\", \"scirc\": \"\\u015D\", \"scnap\": \"\\u2ABA\", \"scnE\": \"\\u2AB6\", \"scnsim\": \"\\u22E9\", \"scpolint\": \"\\u2A13\", \"scsim\": \"\\u227F\", \"Scy\": \"\\u0421\", \"scy\": \"\\u0441\", \"sdotb\": \"\\u22A1\", \"sdot\": \"\\u22C5\", \"sdote\": \"\\u2A66\", \"searhk\": \"\\u2925\", \"searr\": \"\\u2198\", \"seArr\": \"\\u21D8\", \"searrow\": \"\\u2198\", \"sect\": \"\\u00A7\", \"semi\": \";\", \"seswar\": \"\\u2929\", \"setminus\": \"\\u2216\", \"setmn\": \"\\u2216\", \"sext\": \"\\u2736\", \"Sfr\": \"\\uD835\\uDD16\", \"sfr\": \"\\uD835\\uDD30\", \"sfrown\": \"\\u2322\", \"sharp\": \"\\u266F\", \"SHCHcy\": \"\\u0429\", \"shchcy\": \"\\u0449\", \"SHcy\": \"\\u0428\", \"shcy\": \"\\u0448\", \"ShortDownArrow\": \"\\u2193\", \"ShortLeftArrow\": \"\\u2190\", \"shortmid\": \"\\u2223\", \"shortparallel\": \"\\u2225\", \"ShortRightArrow\": \"\\u2192\", \"ShortUpArrow\": \"\\u2191\", \"shy\": \"\\u00AD\", \"Sigma\": \"\\u03A3\", \"sigma\": \"\\u03C3\", \"sigmaf\": \"\\u03C2\", \"sigmav\": \"\\u03C2\", \"sim\": \"\\u223C\", \"simdot\": \"\\u2A6A\", \"sime\": \"\\u2243\", \"simeq\": \"\\u2243\", \"simg\": \"\\u2A9E\", \"simgE\": \"\\u2AA0\", \"siml\": \"\\u2A9D\", \"simlE\": \"\\u2A9F\", \"simne\": \"\\u2246\", \"simplus\": \"\\u2A24\", \"simrarr\": \"\\u2972\", \"slarr\": \"\\u2190\", \"SmallCircle\": \"\\u2218\", \"smallsetminus\": \"\\u2216\", \"smashp\": \"\\u2A33\", \"smeparsl\": \"\\u29E4\", \"smid\": \"\\u2223\", \"smile\": \"\\u2323\", \"smt\": \"\\u2AAA\", \"smte\": \"\\u2AAC\", \"smtes\": \"\\u2AAC\\uFE00\", \"SOFTcy\": \"\\u042C\", \"softcy\": \"\\u044C\", \"solbar\": \"\\u233F\", \"solb\": \"\\u29C4\", \"sol\": \"/\", \"Sopf\": \"\\uD835\\uDD4A\", \"sopf\": \"\\uD835\\uDD64\", \"spades\": \"\\u2660\", \"spadesuit\": \"\\u2660\", \"spar\": \"\\u2225\", \"sqcap\": \"\\u2293\", \"sqcaps\": \"\\u2293\\uFE00\", \"sqcup\": \"\\u2294\", \"sqcups\": \"\\u2294\\uFE00\", \"Sqrt\": \"\\u221A\", \"sqsub\": \"\\u228F\", \"sqsube\": \"\\u2291\", \"sqsubset\": \"\\u228F\", \"sqsubseteq\": \"\\u2291\", \"sqsup\": \"\\u2290\", \"sqsupe\": \"\\u2292\", \"sqsupset\": \"\\u2290\", \"sqsupseteq\": \"\\u2292\", \"square\": \"\\u25A1\", \"Square\": \"\\u25A1\", \"SquareIntersection\": \"\\u2293\", \"SquareSubset\": \"\\u228F\", \"SquareSubsetEqual\": \"\\u2291\", \"SquareSuperset\": \"\\u2290\", \"SquareSupersetEqual\": \"\\u2292\", \"SquareUnion\": \"\\u2294\", \"squarf\": \"\\u25AA\", \"squ\": \"\\u25A1\", \"squf\": \"\\u25AA\", \"srarr\": \"\\u2192\", \"Sscr\": \"\\uD835\\uDCAE\", \"sscr\": \"\\uD835\\uDCC8\", \"ssetmn\": \"\\u2216\", \"ssmile\": \"\\u2323\", \"sstarf\": \"\\u22C6\", \"Star\": \"\\u22C6\", \"star\": \"\\u2606\", \"starf\": \"\\u2605\", \"straightepsilon\": \"\\u03F5\", \"straightphi\": \"\\u03D5\", \"strns\": \"\\u00AF\", \"sub\": \"\\u2282\", \"Sub\": \"\\u22D0\", \"subdot\": \"\\u2ABD\", \"subE\": \"\\u2AC5\", \"sube\": \"\\u2286\", \"subedot\": \"\\u2AC3\", \"submult\": \"\\u2AC1\", \"subnE\": \"\\u2ACB\", \"subne\": \"\\u228A\", \"subplus\": \"\\u2ABF\", \"subrarr\": \"\\u2979\", \"subset\": \"\\u2282\", \"Subset\": \"\\u22D0\", \"subseteq\": \"\\u2286\", \"subseteqq\": \"\\u2AC5\", \"SubsetEqual\": \"\\u2286\", \"subsetneq\": \"\\u228A\", \"subsetneqq\": \"\\u2ACB\", \"subsim\": \"\\u2AC7\", \"subsub\": \"\\u2AD5\", \"subsup\": \"\\u2AD3\", \"succapprox\": \"\\u2AB8\", \"succ\": \"\\u227B\", \"succcurlyeq\": \"\\u227D\", \"Succeeds\": \"\\u227B\", \"SucceedsEqual\": \"\\u2AB0\", \"SucceedsSlantEqual\": \"\\u227D\", \"SucceedsTilde\": \"\\u227F\", \"succeq\": \"\\u2AB0\", \"succnapprox\": \"\\u2ABA\", \"succneqq\": \"\\u2AB6\", \"succnsim\": \"\\u22E9\", \"succsim\": \"\\u227F\", \"SuchThat\": \"\\u220B\", \"sum\": \"\\u2211\", \"Sum\": \"\\u2211\", \"sung\": \"\\u266A\", \"sup1\": \"\\u00B9\", \"sup2\": \"\\u00B2\", \"sup3\": \"\\u00B3\", \"sup\": \"\\u2283\", \"Sup\": \"\\u22D1\", \"supdot\": \"\\u2ABE\", \"supdsub\": \"\\u2AD8\", \"supE\": \"\\u2AC6\", \"supe\": \"\\u2287\", \"supedot\": \"\\u2AC4\", \"Superset\": \"\\u2283\", \"SupersetEqual\": \"\\u2287\", \"suphsol\": \"\\u27C9\", \"suphsub\": \"\\u2AD7\", \"suplarr\": \"\\u297B\", \"supmult\": \"\\u2AC2\", \"supnE\": \"\\u2ACC\", \"supne\": \"\\u228B\", \"supplus\": \"\\u2AC0\", \"supset\": \"\\u2283\", \"Supset\": \"\\u22D1\", \"supseteq\": \"\\u2287\", \"supseteqq\": \"\\u2AC6\", \"supsetneq\": \"\\u228B\", \"supsetneqq\": \"\\u2ACC\", \"supsim\": \"\\u2AC8\", \"supsub\": \"\\u2AD4\", \"supsup\": \"\\u2AD6\", \"swarhk\": \"\\u2926\", \"swarr\": \"\\u2199\", \"swArr\": \"\\u21D9\", \"swarrow\": \"\\u2199\", \"swnwar\": \"\\u292A\", \"szlig\": \"\\u00DF\", \"Tab\": \"\\t\", \"target\": \"\\u2316\", \"Tau\": \"\\u03A4\", \"tau\": \"\\u03C4\", \"tbrk\": \"\\u23B4\", \"Tcaron\": \"\\u0164\", \"tcaron\": \"\\u0165\", \"Tcedil\": \"\\u0162\", \"tcedil\": \"\\u0163\", \"Tcy\": \"\\u0422\", \"tcy\": \"\\u0442\", \"tdot\": \"\\u20DB\", \"telrec\": \"\\u2315\", \"Tfr\": \"\\uD835\\uDD17\", \"tfr\": \"\\uD835\\uDD31\", \"there4\": \"\\u2234\", \"therefore\": \"\\u2234\", \"Therefore\": \"\\u2234\", \"Theta\": \"\\u0398\", \"theta\": \"\\u03B8\", \"thetasym\": \"\\u03D1\", \"thetav\": \"\\u03D1\", \"thickapprox\": \"\\u2248\", \"thicksim\": \"\\u223C\", \"ThickSpace\": \"\\u205F\\u200A\", \"ThinSpace\": \"\\u2009\", \"thinsp\": \"\\u2009\", \"thkap\": \"\\u2248\", \"thksim\": \"\\u223C\", \"THORN\": \"\\u00DE\", \"thorn\": \"\\u00FE\", \"tilde\": \"\\u02DC\", \"Tilde\": \"\\u223C\", \"TildeEqual\": \"\\u2243\", \"TildeFullEqual\": \"\\u2245\", \"TildeTilde\": \"\\u2248\", \"timesbar\": \"\\u2A31\", \"timesb\": \"\\u22A0\", \"times\": \"\\u00D7\", \"timesd\": \"\\u2A30\", \"tint\": \"\\u222D\", \"toea\": \"\\u2928\", \"topbot\": \"\\u2336\", \"topcir\": \"\\u2AF1\", \"top\": \"\\u22A4\", \"Topf\": \"\\uD835\\uDD4B\", \"topf\": \"\\uD835\\uDD65\", \"topfork\": \"\\u2ADA\", \"tosa\": \"\\u2929\", \"tprime\": \"\\u2034\", \"trade\": \"\\u2122\", \"TRADE\": \"\\u2122\", \"triangle\": \"\\u25B5\", \"triangledown\": \"\\u25BF\", \"triangleleft\": \"\\u25C3\", \"trianglelefteq\": \"\\u22B4\", \"triangleq\": \"\\u225C\", \"triangleright\": \"\\u25B9\", \"trianglerighteq\": \"\\u22B5\", \"tridot\": \"\\u25EC\", \"trie\": \"\\u225C\", \"triminus\": \"\\u2A3A\", \"TripleDot\": \"\\u20DB\", \"triplus\": \"\\u2A39\", \"trisb\": \"\\u29CD\", \"tritime\": \"\\u2A3B\", \"trpezium\": \"\\u23E2\", \"Tscr\": \"\\uD835\\uDCAF\", \"tscr\": \"\\uD835\\uDCC9\", \"TScy\": \"\\u0426\", \"tscy\": \"\\u0446\", \"TSHcy\": \"\\u040B\", \"tshcy\": \"\\u045B\", \"Tstrok\": \"\\u0166\", \"tstrok\": \"\\u0167\", \"twixt\": \"\\u226C\", \"twoheadleftarrow\": \"\\u219E\", \"twoheadrightarrow\": \"\\u21A0\", \"Uacute\": \"\\u00DA\", \"uacute\": \"\\u00FA\", \"uarr\": \"\\u2191\", \"Uarr\": \"\\u219F\", \"uArr\": \"\\u21D1\", \"Uarrocir\": \"\\u2949\", \"Ubrcy\": \"\\u040E\", \"ubrcy\": \"\\u045E\", \"Ubreve\": \"\\u016C\", \"ubreve\": \"\\u016D\", \"Ucirc\": \"\\u00DB\", \"ucirc\": \"\\u00FB\", \"Ucy\": \"\\u0423\", \"ucy\": \"\\u0443\", \"udarr\": \"\\u21C5\", \"Udblac\": \"\\u0170\", \"udblac\": \"\\u0171\", \"udhar\": \"\\u296E\", \"ufisht\": \"\\u297E\", \"Ufr\": \"\\uD835\\uDD18\", \"ufr\": \"\\uD835\\uDD32\", \"Ugrave\": \"\\u00D9\", \"ugrave\": \"\\u00F9\", \"uHar\": \"\\u2963\", \"uharl\": \"\\u21BF\", \"uharr\": \"\\u21BE\", \"uhblk\": \"\\u2580\", \"ulcorn\": \"\\u231C\", \"ulcorner\": \"\\u231C\", \"ulcrop\": \"\\u230F\", \"ultri\": \"\\u25F8\", \"Umacr\": \"\\u016A\", \"umacr\": \"\\u016B\", \"uml\": \"\\u00A8\", \"UnderBar\": \"_\", \"UnderBrace\": \"\\u23DF\", \"UnderBracket\": \"\\u23B5\", \"UnderParenthesis\": \"\\u23DD\", \"Union\": \"\\u22C3\", \"UnionPlus\": \"\\u228E\", \"Uogon\": \"\\u0172\", \"uogon\": \"\\u0173\", \"Uopf\": \"\\uD835\\uDD4C\", \"uopf\": \"\\uD835\\uDD66\", \"UpArrowBar\": \"\\u2912\", \"uparrow\": \"\\u2191\", \"UpArrow\": \"\\u2191\", \"Uparrow\": \"\\u21D1\", \"UpArrowDownArrow\": \"\\u21C5\", \"updownarrow\": \"\\u2195\", \"UpDownArrow\": \"\\u2195\", \"Updownarrow\": \"\\u21D5\", \"UpEquilibrium\": \"\\u296E\", \"upharpoonleft\": \"\\u21BF\", \"upharpoonright\": \"\\u21BE\", \"uplus\": \"\\u228E\", \"UpperLeftArrow\": \"\\u2196\", \"UpperRightArrow\": \"\\u2197\", \"upsi\": \"\\u03C5\", \"Upsi\": \"\\u03D2\", \"upsih\": \"\\u03D2\", \"Upsilon\": \"\\u03A5\", \"upsilon\": \"\\u03C5\", \"UpTeeArrow\": \"\\u21A5\", \"UpTee\": \"\\u22A5\", \"upuparrows\": \"\\u21C8\", \"urcorn\": \"\\u231D\", \"urcorner\": \"\\u231D\", \"urcrop\": \"\\u230E\", \"Uring\": \"\\u016E\", \"uring\": \"\\u016F\", \"urtri\": \"\\u25F9\", \"Uscr\": \"\\uD835\\uDCB0\", \"uscr\": \"\\uD835\\uDCCA\", \"utdot\": \"\\u22F0\", \"Utilde\": \"\\u0168\", \"utilde\": \"\\u0169\", \"utri\": \"\\u25B5\", \"utrif\": \"\\u25B4\", \"uuarr\": \"\\u21C8\", \"Uuml\": \"\\u00DC\", \"uuml\": \"\\u00FC\", \"uwangle\": \"\\u29A7\", \"vangrt\": \"\\u299C\", \"varepsilon\": \"\\u03F5\", \"varkappa\": \"\\u03F0\", \"varnothing\": \"\\u2205\", \"varphi\": \"\\u03D5\", \"varpi\": \"\\u03D6\", \"varpropto\": \"\\u221D\", \"varr\": \"\\u2195\", \"vArr\": \"\\u21D5\", \"varrho\": \"\\u03F1\", \"varsigma\": \"\\u03C2\", \"varsubsetneq\": \"\\u228A\\uFE00\", \"varsubsetneqq\": \"\\u2ACB\\uFE00\", \"varsupsetneq\": \"\\u228B\\uFE00\", \"varsupsetneqq\": \"\\u2ACC\\uFE00\", \"vartheta\": \"\\u03D1\", \"vartriangleleft\": \"\\u22B2\", \"vartriangleright\": \"\\u22B3\", \"vBar\": \"\\u2AE8\", \"Vbar\": \"\\u2AEB\", \"vBarv\": \"\\u2AE9\", \"Vcy\": \"\\u0412\", \"vcy\": \"\\u0432\", \"vdash\": \"\\u22A2\", \"vDash\": \"\\u22A8\", \"Vdash\": \"\\u22A9\", \"VDash\": \"\\u22AB\", \"Vdashl\": \"\\u2AE6\", \"veebar\": \"\\u22BB\", \"vee\": \"\\u2228\", \"Vee\": \"\\u22C1\", \"veeeq\": \"\\u225A\", \"vellip\": \"\\u22EE\", \"verbar\": \"|\", \"Verbar\": \"\\u2016\", \"vert\": \"|\", \"Vert\": \"\\u2016\", \"VerticalBar\": \"\\u2223\", \"VerticalLine\": \"|\", \"VerticalSeparator\": \"\\u2758\", \"VerticalTilde\": \"\\u2240\", \"VeryThinSpace\": \"\\u200A\", \"Vfr\": \"\\uD835\\uDD19\", \"vfr\": \"\\uD835\\uDD33\", \"vltri\": \"\\u22B2\", \"vnsub\": \"\\u2282\\u20D2\", \"vnsup\": \"\\u2283\\u20D2\", \"Vopf\": \"\\uD835\\uDD4D\", \"vopf\": \"\\uD835\\uDD67\", \"vprop\": \"\\u221D\", \"vrtri\": \"\\u22B3\", \"Vscr\": \"\\uD835\\uDCB1\", \"vscr\": \"\\uD835\\uDCCB\", \"vsubnE\": \"\\u2ACB\\uFE00\", \"vsubne\": \"\\u228A\\uFE00\", \"vsupnE\": \"\\u2ACC\\uFE00\", \"vsupne\": \"\\u228B\\uFE00\", \"Vvdash\": \"\\u22AA\", \"vzigzag\": \"\\u299A\", \"Wcirc\": \"\\u0174\", \"wcirc\": \"\\u0175\", \"wedbar\": \"\\u2A5F\", \"wedge\": \"\\u2227\", \"Wedge\": \"\\u22C0\", \"wedgeq\": \"\\u2259\", \"weierp\": \"\\u2118\", \"Wfr\": \"\\uD835\\uDD1A\", \"wfr\": \"\\uD835\\uDD34\", \"Wopf\": \"\\uD835\\uDD4E\", \"wopf\": \"\\uD835\\uDD68\", \"wp\": \"\\u2118\", \"wr\": \"\\u2240\", \"wreath\": \"\\u2240\", \"Wscr\": \"\\uD835\\uDCB2\", \"wscr\": \"\\uD835\\uDCCC\", \"xcap\": \"\\u22C2\", \"xcirc\": \"\\u25EF\", \"xcup\": \"\\u22C3\", \"xdtri\": \"\\u25BD\", \"Xfr\": \"\\uD835\\uDD1B\", \"xfr\": \"\\uD835\\uDD35\", \"xharr\": \"\\u27F7\", \"xhArr\": \"\\u27FA\", \"Xi\": \"\\u039E\", \"xi\": \"\\u03BE\", \"xlarr\": \"\\u27F5\", \"xlArr\": \"\\u27F8\", \"xmap\": \"\\u27FC\", \"xnis\": \"\\u22FB\", \"xodot\": \"\\u2A00\", \"Xopf\": \"\\uD835\\uDD4F\", \"xopf\": \"\\uD835\\uDD69\", \"xoplus\": \"\\u2A01\", \"xotime\": \"\\u2A02\", \"xrarr\": \"\\u27F6\", \"xrArr\": \"\\u27F9\", \"Xscr\": \"\\uD835\\uDCB3\", \"xscr\": \"\\uD835\\uDCCD\", \"xsqcup\": \"\\u2A06\", \"xuplus\": \"\\u2A04\", \"xutri\": \"\\u25B3\", \"xvee\": \"\\u22C1\", \"xwedge\": \"\\u22C0\", \"Yacute\": \"\\u00DD\", \"yacute\": \"\\u00FD\", \"YAcy\": \"\\u042F\", \"yacy\": \"\\u044F\", \"Ycirc\": \"\\u0176\", \"ycirc\": \"\\u0177\", \"Ycy\": \"\\u042B\", \"ycy\": \"\\u044B\", \"yen\": \"\\u00A5\", \"Yfr\": \"\\uD835\\uDD1C\", \"yfr\": \"\\uD835\\uDD36\", \"YIcy\": \"\\u0407\", \"yicy\": \"\\u0457\", \"Yopf\": \"\\uD835\\uDD50\", \"yopf\": \"\\uD835\\uDD6A\", \"Yscr\": \"\\uD835\\uDCB4\", \"yscr\": \"\\uD835\\uDCCE\", \"YUcy\": \"\\u042E\", \"yucy\": \"\\u044E\", \"yuml\": \"\\u00FF\", \"Yuml\": \"\\u0178\", \"Zacute\": \"\\u0179\", \"zacute\": \"\\u017A\", \"Zcaron\": \"\\u017D\", \"zcaron\": \"\\u017E\", \"Zcy\": \"\\u0417\", \"zcy\": \"\\u0437\", \"Zdot\": \"\\u017B\", \"zdot\": \"\\u017C\", \"zeetrf\": \"\\u2128\", \"ZeroWidthSpace\": \"\\u200B\", \"Zeta\": \"\\u0396\", \"zeta\": \"\\u03B6\", \"zfr\": \"\\uD835\\uDD37\", \"Zfr\": \"\\u2128\", \"ZHcy\": \"\\u0416\", \"zhcy\": \"\\u0436\", \"zigrarr\": \"\\u21DD\", \"zopf\": \"\\uD835\\uDD6B\", \"Zopf\": \"\\u2124\", \"Zscr\": \"\\uD835\\uDCB5\", \"zscr\": \"\\uD835\\uDCCF\", \"zwj\": \"\\u200D\", \"zwnj\": \"\\u200C\" }\n","{ \"Aacute\": \"\\u00C1\", \"aacute\": \"\\u00E1\", \"Acirc\": \"\\u00C2\", \"acirc\": \"\\u00E2\", \"acute\": \"\\u00B4\", \"AElig\": \"\\u00C6\", \"aelig\": \"\\u00E6\", \"Agrave\": \"\\u00C0\", \"agrave\": \"\\u00E0\", \"amp\": \"&\", \"AMP\": \"&\", \"Aring\": \"\\u00C5\", \"aring\": \"\\u00E5\", \"Atilde\": \"\\u00C3\", \"atilde\": \"\\u00E3\", \"Auml\": \"\\u00C4\", \"auml\": \"\\u00E4\", \"brvbar\": \"\\u00A6\", \"Ccedil\": \"\\u00C7\", \"ccedil\": \"\\u00E7\", \"cedil\": \"\\u00B8\", \"cent\": \"\\u00A2\", \"copy\": \"\\u00A9\", \"COPY\": \"\\u00A9\", \"curren\": \"\\u00A4\", \"deg\": \"\\u00B0\", \"divide\": \"\\u00F7\", \"Eacute\": \"\\u00C9\", \"eacute\": \"\\u00E9\", \"Ecirc\": \"\\u00CA\", \"ecirc\": \"\\u00EA\", \"Egrave\": \"\\u00C8\", \"egrave\": \"\\u00E8\", \"ETH\": \"\\u00D0\", \"eth\": \"\\u00F0\", \"Euml\": \"\\u00CB\", \"euml\": \"\\u00EB\", \"frac12\": \"\\u00BD\", \"frac14\": \"\\u00BC\", \"frac34\": \"\\u00BE\", \"gt\": \">\", \"GT\": \">\", \"Iacute\": \"\\u00CD\", \"iacute\": \"\\u00ED\", \"Icirc\": \"\\u00CE\", \"icirc\": \"\\u00EE\", \"iexcl\": \"\\u00A1\", \"Igrave\": \"\\u00CC\", \"igrave\": \"\\u00EC\", \"iquest\": \"\\u00BF\", \"Iuml\": \"\\u00CF\", \"iuml\": \"\\u00EF\", \"laquo\": \"\\u00AB\", \"lt\": \"<\", \"LT\": \"<\", \"macr\": \"\\u00AF\", \"micro\": \"\\u00B5\", \"middot\": \"\\u00B7\", \"nbsp\": \"\\u00A0\", \"not\": \"\\u00AC\", \"Ntilde\": \"\\u00D1\", \"ntilde\": \"\\u00F1\", \"Oacute\": \"\\u00D3\", \"oacute\": \"\\u00F3\", \"Ocirc\": \"\\u00D4\", \"ocirc\": \"\\u00F4\", \"Ograve\": \"\\u00D2\", \"ograve\": \"\\u00F2\", \"ordf\": \"\\u00AA\", \"ordm\": \"\\u00BA\", \"Oslash\": \"\\u00D8\", \"oslash\": \"\\u00F8\", \"Otilde\": \"\\u00D5\", \"otilde\": \"\\u00F5\", \"Ouml\": \"\\u00D6\", \"ouml\": \"\\u00F6\", \"para\": \"\\u00B6\", \"plusmn\": \"\\u00B1\", \"pound\": \"\\u00A3\", \"quot\": \"\\\"\", \"QUOT\": \"\\\"\", \"raquo\": \"\\u00BB\", \"reg\": \"\\u00AE\", \"REG\": \"\\u00AE\", \"sect\": \"\\u00A7\", \"shy\": \"\\u00AD\", \"sup1\": \"\\u00B9\", \"sup2\": \"\\u00B2\", \"sup3\": \"\\u00B3\", \"szlig\": \"\\u00DF\", \"THORN\": \"\\u00DE\", \"thorn\": \"\\u00FE\", \"times\": \"\\u00D7\", \"Uacute\": \"\\u00DA\", \"uacute\": \"\\u00FA\", \"Ucirc\": \"\\u00DB\", \"ucirc\": \"\\u00FB\", \"Ugrave\": \"\\u00D9\", \"ugrave\": \"\\u00F9\", \"uml\": \"\\u00A8\", \"Uuml\": \"\\u00DC\", \"uuml\": \"\\u00FC\", \"Yacute\": \"\\u00DD\", \"yacute\": \"\\u00FD\", \"yen\": \"\\u00A5\", \"yuml\": \"\\u00FF\" }\n","{ \"amp\": \"&\", \"apos\": \"'\", \"gt\": \">\", \"lt\": \"<\", \"quot\": \"\\\"\" }\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault(require(\"./maps/decode.json\"));\n// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n}\nexports.default = decodeCodePoint;\n","{\n \"0\": 65533,\n \"128\": 8364,\n \"130\": 8218,\n \"131\": 402,\n \"132\": 8222,\n \"133\": 8230,\n \"134\": 8224,\n \"135\": 8225,\n \"136\": 710,\n \"137\": 8240,\n \"138\": 352,\n \"139\": 8249,\n \"140\": 338,\n \"142\": 381,\n \"145\": 8216,\n \"146\": 8217,\n \"147\": 8220,\n \"148\": 8221,\n \"149\": 8226,\n \"150\": 8211,\n \"151\": 8212,\n \"152\": 732,\n \"153\": 8482,\n \"154\": 353,\n \"155\": 8250,\n \"156\": 339,\n \"158\": 382,\n \"159\": 376\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escape = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\nexports.encodeXML = getInverse(inverseXML, xmlReplacer);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nfunction singleCharReplacer(c) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return \"&#x\" + c.codePointAt(0).toString(16).toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reXmlChars = getInverseReplacer(inverseXML);\nfunction escape(data) {\n return data\n .replace(reXmlChars, singleCharReplacer)\n .replace(reNonASCII, singleCharReplacer);\n}\nexports.escape = escape;\n","\"use strict\";\n\nimport encode from \"mdurl/encode.js\";\nimport { decodeHTML } from \"entities\";\n\nvar C_BACKSLASH = 92;\n\nvar ENTITY = \"&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});\";\n\nvar TAGNAME = \"[A-Za-z][A-Za-z0-9-]*\";\nvar ATTRIBUTENAME = \"[a-zA-Z_:][a-zA-Z0-9:._-]*\";\nvar UNQUOTEDVALUE = \"[^\\\"'=<>`\\\\x00-\\\\x20]+\";\nvar SINGLEQUOTEDVALUE = \"'[^']*'\";\nvar DOUBLEQUOTEDVALUE = '\"[^\"]*\"';\nvar ATTRIBUTEVALUE =\n \"(?:\" +\n UNQUOTEDVALUE +\n \"|\" +\n SINGLEQUOTEDVALUE +\n \"|\" +\n DOUBLEQUOTEDVALUE +\n \")\";\nvar ATTRIBUTEVALUESPEC = \"(?:\" + \"\\\\s*=\" + \"\\\\s*\" + ATTRIBUTEVALUE + \")\";\nvar ATTRIBUTE = \"(?:\" + \"\\\\s+\" + ATTRIBUTENAME + ATTRIBUTEVALUESPEC + \"?)\";\nvar OPENTAG = \"<\" + TAGNAME + ATTRIBUTE + \"*\" + \"\\\\s*/?>\";\nvar CLOSETAG = \"]\";\nvar HTMLCOMMENT = \"|\";\nvar PROCESSINGINSTRUCTION = \"[<][?][\\\\s\\\\S]*?[?][>]\";\nvar DECLARATION = \"]*>\";\nvar CDATA = \"\";\nvar HTMLTAG =\n \"(?:\" +\n OPENTAG +\n \"|\" +\n CLOSETAG +\n \"|\" +\n HTMLCOMMENT +\n \"|\" +\n PROCESSINGINSTRUCTION +\n \"|\" +\n DECLARATION +\n \"|\" +\n CDATA +\n \")\";\nvar reHtmlTag = new RegExp(\"^\" + HTMLTAG);\n\nvar reBackslashOrAmp = /[\\\\&]/;\n\nvar ESCAPABLE = \"[!\\\"#$%&'()*+,./:;<=>?@[\\\\\\\\\\\\]^_`{|}~-]\";\n\nvar reEntityOrEscapedChar = new RegExp(\"\\\\\\\\\" + ESCAPABLE + \"|\" + ENTITY, \"gi\");\n\nvar XMLSPECIAL = '[&<>\"]';\n\nvar reXmlSpecial = new RegExp(XMLSPECIAL, \"g\");\n\nvar unescapeChar = function(s) {\n if (s.charCodeAt(0) === C_BACKSLASH) {\n return s.charAt(1);\n } else {\n return decodeHTML(s);\n }\n};\n\n// Replace entities and backslash escapes with literal characters.\nvar unescapeString = function(s) {\n if (reBackslashOrAmp.test(s)) {\n return s.replace(reEntityOrEscapedChar, unescapeChar);\n } else {\n return s;\n }\n};\n\nvar normalizeURI = function(uri) {\n try {\n return encode(uri);\n } catch (err) {\n return uri;\n }\n};\n\nvar replaceUnsafeChar = function(s) {\n switch (s) {\n case \"&\":\n return \"&\";\n case \"<\":\n return \"<\";\n case \">\":\n return \">\";\n case '\"':\n return \""\";\n default:\n return s;\n }\n};\n\nvar escapeXml = function(s) {\n if (reXmlSpecial.test(s)) {\n return s.replace(reXmlSpecial, replaceUnsafeChar);\n } else {\n return s;\n }\n};\n\nexport {\n unescapeString,\n normalizeURI,\n escapeXml,\n reHtmlTag,\n OPENTAG,\n CLOSETAG,\n ENTITY,\n ESCAPABLE\n};\n","function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","\"use strict\";\n\n// derived from https://github.com/mathiasbynens/String.fromCodePoint\n/*! http://mths.be/fromcodepoint v0.2.1 by @mathias */\n\nvar _fromCodePoint;\n\nexport default function fromCodePoint(_) {\n return _fromCodePoint(_);\n}\n\nif (String.fromCodePoint) {\n _fromCodePoint = function(_) {\n try {\n return String.fromCodePoint(_);\n } catch (e) {\n if (e instanceof RangeError) {\n return String.fromCharCode(0xfffd);\n }\n throw e;\n }\n };\n} else {\n var stringFromCharCode = String.fromCharCode;\n var floor = Math.floor;\n _fromCodePoint = function() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n if (!length) {\n return \"\";\n }\n var result = \"\";\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n return String.fromCharCode(0xfffd);\n }\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint);\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xd800;\n lowSurrogate = (codePoint % 0x400) + 0xdc00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n}\n","/*! http://mths.be/repeat v0.2.0 by @mathias */\nif (!String.prototype.repeat) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar repeat = function(count) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tvar string = String(this);\n\t\t\t// `ToInteger`\n\t\t\tvar n = count ? Number(count) : 0;\n\t\t\tif (n != n) { // better `isNaN`\n\t\t\t\tn = 0;\n\t\t\t}\n\t\t\t// Account for out-of-bounds indices\n\t\t\tif (n < 0 || n == Infinity) {\n\t\t\t\tthrow RangeError();\n\t\t\t}\n\t\t\tvar result = '';\n\t\t\twhile (n) {\n\t\t\t\tif (n % 2 == 1) {\n\t\t\t\t\tresult += string;\n\t\t\t\t}\n\t\t\t\tif (n > 1) {\n\t\t\t\t\tstring += string;\n\t\t\t\t}\n\t\t\t\tn >>= 1;\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'repeat', {\n\t\t\t\t'value': repeat,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.repeat = repeat;\n\t\t}\n\t}());\n}\n","\"use strict\";\n\nimport Node from \"./node.js\";\nimport * as common from \"./common.js\";\nimport fromCodePoint from \"./from-code-point.js\";\nimport { decodeHTML } from \"entities\";\nimport \"string.prototype.repeat\"; // Polyfill for String.prototype.repeat\n\nvar normalizeURI = common.normalizeURI;\nvar unescapeString = common.unescapeString;\n\n// Constants for character codes:\n\nvar C_NEWLINE = 10;\nvar C_ASTERISK = 42;\nvar C_UNDERSCORE = 95;\nvar C_BACKTICK = 96;\nvar C_OPEN_BRACKET = 91;\nvar C_CLOSE_BRACKET = 93;\nvar C_LESSTHAN = 60;\nvar C_BANG = 33;\nvar C_BACKSLASH = 92;\nvar C_AMPERSAND = 38;\nvar C_OPEN_PAREN = 40;\nvar C_CLOSE_PAREN = 41;\nvar C_COLON = 58;\nvar C_SINGLEQUOTE = 39;\nvar C_DOUBLEQUOTE = 34;\n\n// Some regexps used in inline parser:\n\nvar ESCAPABLE = common.ESCAPABLE;\nvar ESCAPED_CHAR = \"\\\\\\\\\" + ESCAPABLE;\n\nvar ENTITY = common.ENTITY;\nvar reHtmlTag = common.reHtmlTag;\n\nvar rePunctuation = new RegExp(\n /[!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDF3C-\\uDF3E]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]/\n);\n\nvar reLinkTitle = new RegExp(\n '^(?:\"(' +\n ESCAPED_CHAR +\n '|[^\"\\\\x00])*\"' +\n \"|\" +\n \"'(\" +\n ESCAPED_CHAR +\n \"|[^'\\\\x00])*'\" +\n \"|\" +\n \"\\\\((\" +\n ESCAPED_CHAR +\n \"|[^()\\\\x00])*\\\\))\"\n);\n\nvar reLinkDestinationBraces = /^(?:<(?:[^<>\\n\\\\\\x00]|\\\\.)*>)/;\n\nvar reEscapable = new RegExp(\"^\" + ESCAPABLE);\n\nvar reEntityHere = new RegExp(\"^\" + ENTITY, \"i\");\n\nvar reTicks = /`+/;\n\nvar reTicksHere = /^`+/;\n\nvar reEllipses = /\\.\\.\\./g;\n\nvar reDash = /--+/g;\n\nvar reEmailAutolink = /^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;\n\nvar reAutolink = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\\x00-\\x20]*>/i;\n\nvar reSpnl = /^ *(?:\\n *)?/;\n\nvar reWhitespaceChar = /^[ \\t\\n\\x0b\\x0c\\x0d]/;\n\nvar reUnicodeWhitespaceChar = /^\\s/;\n\nvar reFinalSpace = / *$/;\n\nvar reInitialSpace = /^ */;\n\nvar reSpaceAtEndOfLine = /^ *(?:\\n|$)/;\n\nvar reLinkLabel = /^\\[(?:[^\\\\\\[\\]]|\\\\.){0,1000}\\]/;\n\n// Matches a string of non-special characters.\nvar reMain = /^[^\\n`\\[\\]\\\\!<&*_'\"]+/m;\n\nvar text = function(s) {\n var node = new Node(\"text\");\n node._literal = s;\n return node;\n};\n\n// normalize a reference in reference link (remove []s, trim,\n// collapse internal space, unicode case fold.\n// See commonmark/commonmark.js#168.\nvar normalizeReference = function(string) {\n return string\n .slice(1, string.length - 1)\n .trim()\n .replace(/[ \\t\\r\\n]+/, \" \")\n .toLowerCase()\n .toUpperCase();\n};\n\n// INLINE PARSER\n\n// These are methods of an InlineParser object, defined below.\n// An InlineParser keeps track of a subject (a string to be\n// parsed) and a position in that subject.\n\n// If re matches at current position in the subject, advance\n// position in subject and return the match; otherwise return null.\nvar match = function(re) {\n var m = re.exec(this.subject.slice(this.pos));\n if (m === null) {\n return null;\n } else {\n this.pos += m.index + m[0].length;\n return m[0];\n }\n};\n\n// Returns the code for the character at the current subject position, or -1\n// there are no more characters.\nvar peek = function() {\n if (this.pos < this.subject.length) {\n return this.subject.charCodeAt(this.pos);\n } else {\n return -1;\n }\n};\n\n// Parse zero or more space characters, including at most one newline\nvar spnl = function() {\n this.match(reSpnl);\n return true;\n};\n\n// All of the parsers below try to match something at the current position\n// in the subject. If they succeed in matching anything, they\n// return the inline matched, advancing the subject.\n\n// Attempt to parse backticks, adding either a backtick code span or a\n// literal sequence of backticks.\nvar parseBackticks = function(block) {\n var ticks = this.match(reTicksHere);\n if (ticks === null) {\n return false;\n }\n var afterOpenTicks = this.pos;\n var matched;\n var node;\n var contents;\n while ((matched = this.match(reTicks)) !== null) {\n if (matched === ticks) {\n node = new Node(\"code\");\n contents = this.subject\n .slice(afterOpenTicks, this.pos - ticks.length)\n .replace(/\\n/gm, \" \");\n if (\n contents.length > 0 &&\n contents.match(/[^ ]/) !== null &&\n contents[0] == \" \" &&\n contents[contents.length - 1] == \" \"\n ) {\n node._literal = contents.slice(1, contents.length - 1);\n } else {\n node._literal = contents;\n }\n block.appendChild(node);\n return true;\n }\n }\n // If we got here, we didn't match a closing backtick sequence.\n this.pos = afterOpenTicks;\n block.appendChild(text(ticks));\n return true;\n};\n\n// Parse a backslash-escaped special character, adding either the escaped\n// character, a hard line break (if the backslash is followed by a newline),\n// or a literal backslash to the block's children. Assumes current character\n// is a backslash.\nvar parseBackslash = function(block) {\n var subj = this.subject;\n var node;\n this.pos += 1;\n if (this.peek() === C_NEWLINE) {\n this.pos += 1;\n node = new Node(\"linebreak\");\n block.appendChild(node);\n } else if (reEscapable.test(subj.charAt(this.pos))) {\n block.appendChild(text(subj.charAt(this.pos)));\n this.pos += 1;\n } else {\n block.appendChild(text(\"\\\\\"));\n }\n return true;\n};\n\n// Attempt to parse an autolink (URL or email in pointy brackets).\nvar parseAutolink = function(block) {\n var m;\n var dest;\n var node;\n if ((m = this.match(reEmailAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = new Node(\"link\");\n node._destination = normalizeURI(\"mailto:\" + dest);\n node._title = \"\";\n node.appendChild(text(dest));\n block.appendChild(node);\n return true;\n } else if ((m = this.match(reAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = new Node(\"link\");\n node._destination = normalizeURI(dest);\n node._title = \"\";\n node.appendChild(text(dest));\n block.appendChild(node);\n return true;\n } else {\n return false;\n }\n};\n\n// Attempt to parse a raw HTML tag.\nvar parseHtmlTag = function(block) {\n var m = this.match(reHtmlTag);\n if (m === null) {\n return false;\n } else {\n var node = new Node(\"html_inline\");\n node._literal = m;\n block.appendChild(node);\n return true;\n }\n};\n\n// Scan a sequence of characters with code cc, and return information about\n// the number of delimiters and whether they are positioned such that\n// they can open and/or close emphasis or strong emphasis. A utility\n// function for strong/emph parsing.\nvar scanDelims = function(cc) {\n var numdelims = 0;\n var char_before, char_after, cc_after;\n var startpos = this.pos;\n var left_flanking, right_flanking, can_open, can_close;\n var after_is_whitespace,\n after_is_punctuation,\n before_is_whitespace,\n before_is_punctuation;\n\n if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n numdelims++;\n this.pos++;\n } else {\n while (this.peek() === cc) {\n numdelims++;\n this.pos++;\n }\n }\n\n if (numdelims === 0) {\n return null;\n }\n\n char_before = startpos === 0 ? \"\\n\" : this.subject.charAt(startpos - 1);\n\n cc_after = this.peek();\n if (cc_after === -1) {\n char_after = \"\\n\";\n } else {\n char_after = fromCodePoint(cc_after);\n }\n\n after_is_whitespace = reUnicodeWhitespaceChar.test(char_after);\n after_is_punctuation = rePunctuation.test(char_after);\n before_is_whitespace = reUnicodeWhitespaceChar.test(char_before);\n before_is_punctuation = rePunctuation.test(char_before);\n\n left_flanking =\n !after_is_whitespace &&\n (!after_is_punctuation ||\n before_is_whitespace ||\n before_is_punctuation);\n right_flanking =\n !before_is_whitespace &&\n (!before_is_punctuation || after_is_whitespace || after_is_punctuation);\n if (cc === C_UNDERSCORE) {\n can_open = left_flanking && (!right_flanking || before_is_punctuation);\n can_close = right_flanking && (!left_flanking || after_is_punctuation);\n } else if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n can_open = left_flanking && !right_flanking;\n can_close = right_flanking;\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n this.pos = startpos;\n return { numdelims: numdelims, can_open: can_open, can_close: can_close };\n};\n\n// Handle a delimiter marker for emphasis or a quote.\nvar handleDelim = function(cc, block) {\n var res = this.scanDelims(cc);\n if (!res) {\n return false;\n }\n var numdelims = res.numdelims;\n var startpos = this.pos;\n var contents;\n\n this.pos += numdelims;\n if (cc === C_SINGLEQUOTE) {\n contents = \"\\u2019\";\n } else if (cc === C_DOUBLEQUOTE) {\n contents = \"\\u201C\";\n } else {\n contents = this.subject.slice(startpos, this.pos);\n }\n var node = text(contents);\n block.appendChild(node);\n\n // Add entry to stack for this opener\n if (\n (res.can_open || res.can_close) &&\n (this.options.smart || (cc !== C_SINGLEQUOTE && cc !== C_DOUBLEQUOTE))\n ) {\n this.delimiters = {\n cc: cc,\n numdelims: numdelims,\n origdelims: numdelims,\n node: node,\n previous: this.delimiters,\n next: null,\n can_open: res.can_open,\n can_close: res.can_close\n };\n if (this.delimiters.previous !== null) {\n this.delimiters.previous.next = this.delimiters;\n }\n }\n\n return true;\n};\n\nvar removeDelimiter = function(delim) {\n if (delim.previous !== null) {\n delim.previous.next = delim.next;\n }\n if (delim.next === null) {\n // top of stack\n this.delimiters = delim.previous;\n } else {\n delim.next.previous = delim.previous;\n }\n};\n\nvar removeDelimitersBetween = function(bottom, top) {\n if (bottom.next !== top) {\n bottom.next = top;\n top.previous = bottom;\n }\n};\n\nvar processEmphasis = function(stack_bottom) {\n var opener, closer, old_closer;\n var opener_inl, closer_inl;\n var tempstack;\n var use_delims;\n var tmp, next;\n var opener_found;\n var openers_bottom = [[], [], []];\n var odd_match = false;\n\n for (var i = 0; i < 3; i++) {\n openers_bottom[i][C_UNDERSCORE] = stack_bottom;\n openers_bottom[i][C_ASTERISK] = stack_bottom;\n openers_bottom[i][C_SINGLEQUOTE] = stack_bottom;\n openers_bottom[i][C_DOUBLEQUOTE] = stack_bottom;\n }\n // find first closer above stack_bottom:\n closer = this.delimiters;\n while (closer !== null && closer.previous !== stack_bottom) {\n closer = closer.previous;\n }\n // move forward, looking for closers, and handling each\n while (closer !== null) {\n var closercc = closer.cc;\n if (!closer.can_close) {\n closer = closer.next;\n } else {\n // found emphasis closer. now look back for first matching opener:\n opener = closer.previous;\n opener_found = false;\n while (\n opener !== null &&\n opener !== stack_bottom &&\n opener !== openers_bottom[closer.origdelims % 3][closercc]\n ) {\n odd_match =\n (closer.can_open || opener.can_close) &&\n closer.origdelims % 3 !== 0 &&\n (opener.origdelims + closer.origdelims) % 3 === 0;\n if (opener.cc === closer.cc && opener.can_open && !odd_match) {\n opener_found = true;\n break;\n }\n opener = opener.previous;\n }\n old_closer = closer;\n\n if (closercc === C_ASTERISK || closercc === C_UNDERSCORE) {\n if (!opener_found) {\n closer = closer.next;\n } else {\n // calculate actual number of delimiters used from closer\n use_delims =\n closer.numdelims >= 2 && opener.numdelims >= 2 ? 2 : 1;\n\n opener_inl = opener.node;\n closer_inl = closer.node;\n\n // remove used delimiters from stack elts and inlines\n opener.numdelims -= use_delims;\n closer.numdelims -= use_delims;\n opener_inl._literal = opener_inl._literal.slice(\n 0,\n opener_inl._literal.length - use_delims\n );\n closer_inl._literal = closer_inl._literal.slice(\n 0,\n closer_inl._literal.length - use_delims\n );\n\n // build contents for new emph element\n var emph = new Node(use_delims === 1 ? \"emph\" : \"strong\");\n\n tmp = opener_inl._next;\n while (tmp && tmp !== closer_inl) {\n next = tmp._next;\n tmp.unlink();\n emph.appendChild(tmp);\n tmp = next;\n }\n\n opener_inl.insertAfter(emph);\n\n // remove elts between opener and closer in delimiters stack\n removeDelimitersBetween(opener, closer);\n\n // if opener has 0 delims, remove it and the inline\n if (opener.numdelims === 0) {\n opener_inl.unlink();\n this.removeDelimiter(opener);\n }\n\n if (closer.numdelims === 0) {\n closer_inl.unlink();\n tempstack = closer.next;\n this.removeDelimiter(closer);\n closer = tempstack;\n }\n }\n } else if (closercc === C_SINGLEQUOTE) {\n closer.node._literal = \"\\u2019\";\n if (opener_found) {\n opener.node._literal = \"\\u2018\";\n }\n closer = closer.next;\n } else if (closercc === C_DOUBLEQUOTE) {\n closer.node._literal = \"\\u201D\";\n if (opener_found) {\n opener.node.literal = \"\\u201C\";\n }\n closer = closer.next;\n }\n if (!opener_found) {\n // Set lower bound for future searches for openers:\n openers_bottom[old_closer.origdelims % 3][closercc] =\n old_closer.previous;\n if (!old_closer.can_open) {\n // We can remove a closer that can't be an opener,\n // once we've seen there's no matching opener:\n this.removeDelimiter(old_closer);\n }\n }\n }\n }\n\n // remove all delimiters\n while (this.delimiters !== null && this.delimiters !== stack_bottom) {\n this.removeDelimiter(this.delimiters);\n }\n};\n\n// Attempt to parse link title (sans quotes), returning the string\n// or null if no match.\nvar parseLinkTitle = function() {\n var title = this.match(reLinkTitle);\n if (title === null) {\n return null;\n } else {\n // chop off quotes from title and unescape:\n return unescapeString(title.substr(1, title.length - 2));\n }\n};\n\n// Attempt to parse link destination, returning the string or\n// null if no match.\nvar parseLinkDestination = function() {\n var res = this.match(reLinkDestinationBraces);\n if (res === null) {\n if (this.peek() === C_LESSTHAN) {\n return null;\n }\n // TODO handrolled parser; res should be null or the string\n var savepos = this.pos;\n var openparens = 0;\n var c;\n while ((c = this.peek()) !== -1) {\n if (\n c === C_BACKSLASH &&\n reEscapable.test(this.subject.charAt(this.pos + 1))\n ) {\n this.pos += 1;\n if (this.peek() !== -1) {\n this.pos += 1;\n }\n } else if (c === C_OPEN_PAREN) {\n this.pos += 1;\n openparens += 1;\n } else if (c === C_CLOSE_PAREN) {\n if (openparens < 1) {\n break;\n } else {\n this.pos += 1;\n openparens -= 1;\n }\n } else if (reWhitespaceChar.exec(fromCodePoint(c)) !== null) {\n break;\n } else {\n this.pos += 1;\n }\n }\n if (this.pos === savepos && c !== C_CLOSE_PAREN) {\n return null;\n }\n if (openparens !== 0) {\n return null;\n }\n res = this.subject.substr(savepos, this.pos - savepos);\n return normalizeURI(unescapeString(res));\n } else {\n // chop off surrounding <..>:\n return normalizeURI(unescapeString(res.substr(1, res.length - 2)));\n }\n};\n\n// Attempt to parse a link label, returning number of characters parsed.\nvar parseLinkLabel = function() {\n var m = this.match(reLinkLabel);\n if (m === null || m.length > 1001) {\n return 0;\n } else {\n return m.length;\n }\n};\n\n// Add open bracket to delimiter stack and add a text node to block's children.\nvar parseOpenBracket = function(block) {\n var startpos = this.pos;\n this.pos += 1;\n\n var node = text(\"[\");\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.addBracket(node, startpos, false);\n return true;\n};\n\n// IF next character is [, and ! delimiter to delimiter stack and\n// add a text node to block's children. Otherwise just add a text node.\nvar parseBang = function(block) {\n var startpos = this.pos;\n this.pos += 1;\n if (this.peek() === C_OPEN_BRACKET) {\n this.pos += 1;\n\n var node = text(\"![\");\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.addBracket(node, startpos + 1, true);\n } else {\n block.appendChild(text(\"!\"));\n }\n return true;\n};\n\n// Try to match close bracket against an opening in the delimiter\n// stack. Add either a link or image, or a plain [ character,\n// to block's children. If there is a matching delimiter,\n// remove it from the delimiter stack.\nvar parseCloseBracket = function(block) {\n var startpos;\n var is_image;\n var dest;\n var title;\n var matched = false;\n var reflabel;\n var opener;\n\n this.pos += 1;\n startpos = this.pos;\n\n // get last [ or ![\n opener = this.brackets;\n\n if (opener === null) {\n // no matched opener, just return a literal\n block.appendChild(text(\"]\"));\n return true;\n }\n\n if (!opener.active) {\n // no matched opener, just return a literal\n block.appendChild(text(\"]\"));\n // take opener off brackets stack\n this.removeBracket();\n return true;\n }\n\n // If we got here, open is a potential opener\n is_image = opener.image;\n\n // Check to see if we have a link/image\n\n var savepos = this.pos;\n\n // Inline link?\n if (this.peek() === C_OPEN_PAREN) {\n this.pos++;\n if (\n this.spnl() &&\n (dest = this.parseLinkDestination()) !== null &&\n this.spnl() &&\n // make sure there's a space before the title:\n ((reWhitespaceChar.test(this.subject.charAt(this.pos - 1)) &&\n (title = this.parseLinkTitle())) ||\n true) &&\n this.spnl() &&\n this.peek() === C_CLOSE_PAREN\n ) {\n this.pos += 1;\n matched = true;\n } else {\n this.pos = savepos;\n }\n }\n\n if (!matched) {\n // Next, see if there's a link label\n var beforelabel = this.pos;\n var n = this.parseLinkLabel();\n if (n > 2) {\n reflabel = this.subject.slice(beforelabel, beforelabel + n);\n } else if (!opener.bracketAfter) {\n // Empty or missing second label means to use the first label as the reference.\n // The reference must not contain a bracket. If we know there's a bracket, we don't even bother checking it.\n reflabel = this.subject.slice(opener.index, startpos);\n }\n if (n === 0) {\n // If shortcut reference link, rewind before spaces we skipped.\n this.pos = savepos;\n }\n\n if (reflabel) {\n // lookup rawlabel in refmap\n var link = this.refmap[normalizeReference(reflabel)];\n if (link) {\n dest = link.destination;\n title = link.title;\n matched = true;\n }\n }\n }\n\n if (matched) {\n var node = new Node(is_image ? \"image\" : \"link\");\n node._destination = dest;\n node._title = title || \"\";\n\n var tmp, next;\n tmp = opener.node._next;\n while (tmp) {\n next = tmp._next;\n tmp.unlink();\n node.appendChild(tmp);\n tmp = next;\n }\n block.appendChild(node);\n this.processEmphasis(opener.previousDelimiter);\n this.removeBracket();\n opener.node.unlink();\n\n // We remove this bracket and processEmphasis will remove later delimiters.\n // Now, for a link, we also deactivate earlier link openers.\n // (no links in links)\n if (!is_image) {\n opener = this.brackets;\n while (opener !== null) {\n if (!opener.image) {\n opener.active = false; // deactivate this opener\n }\n opener = opener.previous;\n }\n }\n\n return true;\n } else {\n // no match\n\n this.removeBracket(); // remove this opener from stack\n this.pos = startpos;\n block.appendChild(text(\"]\"));\n return true;\n }\n};\n\nvar addBracket = function(node, index, image) {\n if (this.brackets !== null) {\n this.brackets.bracketAfter = true;\n }\n this.brackets = {\n node: node,\n previous: this.brackets,\n previousDelimiter: this.delimiters,\n index: index,\n image: image,\n active: true\n };\n};\n\nvar removeBracket = function() {\n this.brackets = this.brackets.previous;\n};\n\n// Attempt to parse an entity.\nvar parseEntity = function(block) {\n var m;\n if ((m = this.match(reEntityHere))) {\n block.appendChild(text(decodeHTML(m)));\n return true;\n } else {\n return false;\n }\n};\n\n// Parse a run of ordinary characters, or a single character with\n// a special meaning in markdown, as a plain string.\nvar parseString = function(block) {\n var m;\n if ((m = this.match(reMain))) {\n if (this.options.smart) {\n block.appendChild(\n text(\n m\n .replace(reEllipses, \"\\u2026\")\n .replace(reDash, function(chars) {\n var enCount = 0;\n var emCount = 0;\n if (chars.length % 3 === 0) {\n // If divisible by 3, use all em dashes\n emCount = chars.length / 3;\n } else if (chars.length % 2 === 0) {\n // If divisible by 2, use all en dashes\n enCount = chars.length / 2;\n } else if (chars.length % 3 === 2) {\n // If 2 extra dashes, use en dash for last 2; em dashes for rest\n enCount = 1;\n emCount = (chars.length - 2) / 3;\n } else {\n // Use en dashes for last 4 hyphens; em dashes for rest\n enCount = 2;\n emCount = (chars.length - 4) / 3;\n }\n return (\n \"\\u2014\".repeat(emCount) +\n \"\\u2013\".repeat(enCount)\n );\n })\n )\n );\n } else {\n block.appendChild(text(m));\n }\n return true;\n } else {\n return false;\n }\n};\n\n// Parse a newline. If it was preceded by two spaces, return a hard\n// line break; otherwise a soft line break.\nvar parseNewline = function(block) {\n this.pos += 1; // assume we're at a \\n\n // check previous node for trailing spaces\n var lastc = block._lastChild;\n if (\n lastc &&\n lastc.type === \"text\" &&\n lastc._literal[lastc._literal.length - 1] === \" \"\n ) {\n var hardbreak = lastc._literal[lastc._literal.length - 2] === \" \";\n lastc._literal = lastc._literal.replace(reFinalSpace, \"\");\n block.appendChild(new Node(hardbreak ? \"linebreak\" : \"softbreak\"));\n } else {\n block.appendChild(new Node(\"softbreak\"));\n }\n this.match(reInitialSpace); // gobble leading spaces in next line\n return true;\n};\n\n// Attempt to parse a link reference, modifying refmap.\nvar parseReference = function(s, refmap) {\n this.subject = s;\n this.pos = 0;\n var rawlabel;\n var dest;\n var title;\n var matchChars;\n var startpos = this.pos;\n\n // label:\n matchChars = this.parseLinkLabel();\n if (matchChars === 0) {\n return 0;\n } else {\n rawlabel = this.subject.substr(0, matchChars);\n }\n\n // colon:\n if (this.peek() === C_COLON) {\n this.pos++;\n } else {\n this.pos = startpos;\n return 0;\n }\n\n // link url\n this.spnl();\n\n dest = this.parseLinkDestination();\n if (dest === null) {\n this.pos = startpos;\n return 0;\n }\n\n var beforetitle = this.pos;\n this.spnl();\n if (this.pos !== beforetitle) {\n title = this.parseLinkTitle();\n }\n if (title === null) {\n title = \"\";\n // rewind before spaces\n this.pos = beforetitle;\n }\n\n // make sure we're at line end:\n var atLineEnd = true;\n if (this.match(reSpaceAtEndOfLine) === null) {\n if (title === \"\") {\n atLineEnd = false;\n } else {\n // the potential title we found is not at the line end,\n // but it could still be a legal link reference if we\n // discard the title\n title = \"\";\n // rewind before spaces\n this.pos = beforetitle;\n // and instead check if the link URL is at the line end\n atLineEnd = this.match(reSpaceAtEndOfLine) !== null;\n }\n }\n\n if (!atLineEnd) {\n this.pos = startpos;\n return 0;\n }\n\n var normlabel = normalizeReference(rawlabel);\n if (normlabel === \"\") {\n // label must contain non-whitespace characters\n this.pos = startpos;\n return 0;\n }\n\n if (!refmap[normlabel]) {\n refmap[normlabel] = { destination: dest, title: title };\n }\n return this.pos - startpos;\n};\n\n// Parse the next inline element in subject, advancing subject position.\n// On success, add the result to block's children and return true.\n// On failure, return false.\nvar parseInline = function(block) {\n var res = false;\n var c = this.peek();\n if (c === -1) {\n return false;\n }\n switch (c) {\n case C_NEWLINE:\n res = this.parseNewline(block);\n break;\n case C_BACKSLASH:\n res = this.parseBackslash(block);\n break;\n case C_BACKTICK:\n res = this.parseBackticks(block);\n break;\n case C_ASTERISK:\n case C_UNDERSCORE:\n res = this.handleDelim(c, block);\n break;\n case C_SINGLEQUOTE:\n case C_DOUBLEQUOTE:\n res = this.options.smart && this.handleDelim(c, block);\n break;\n case C_OPEN_BRACKET:\n res = this.parseOpenBracket(block);\n break;\n case C_BANG:\n res = this.parseBang(block);\n break;\n case C_CLOSE_BRACKET:\n res = this.parseCloseBracket(block);\n break;\n case C_LESSTHAN:\n res = this.parseAutolink(block) || this.parseHtmlTag(block);\n break;\n case C_AMPERSAND:\n res = this.parseEntity(block);\n break;\n default:\n res = this.parseString(block);\n break;\n }\n if (!res) {\n this.pos += 1;\n block.appendChild(text(fromCodePoint(c)));\n }\n\n return true;\n};\n\n// Parse string content in block into inline children,\n// using refmap to resolve references.\nvar parseInlines = function(block) {\n this.subject = block._string_content.trim();\n this.pos = 0;\n this.delimiters = null;\n this.brackets = null;\n while (this.parseInline(block)) {}\n block._string_content = null; // allow raw string to be garbage collected\n this.processEmphasis(null);\n};\n\n// The InlineParser object.\nfunction InlineParser(options) {\n return {\n subject: \"\",\n delimiters: null, // used by handleDelim method\n brackets: null,\n pos: 0,\n refmap: {},\n match: match,\n peek: peek,\n spnl: spnl,\n parseBackticks: parseBackticks,\n parseBackslash: parseBackslash,\n parseAutolink: parseAutolink,\n parseHtmlTag: parseHtmlTag,\n scanDelims: scanDelims,\n handleDelim: handleDelim,\n parseLinkTitle: parseLinkTitle,\n parseLinkDestination: parseLinkDestination,\n parseLinkLabel: parseLinkLabel,\n parseOpenBracket: parseOpenBracket,\n parseBang: parseBang,\n parseCloseBracket: parseCloseBracket,\n addBracket: addBracket,\n removeBracket: removeBracket,\n parseEntity: parseEntity,\n parseString: parseString,\n parseNewline: parseNewline,\n parseReference: parseReference,\n parseInline: parseInline,\n processEmphasis: processEmphasis,\n removeDelimiter: removeDelimiter,\n options: options || {},\n parse: parseInlines\n };\n}\n\nexport default InlineParser;\n","\"use strict\";\n\nimport Node from \"./node.js\";\nimport { unescapeString, OPENTAG, CLOSETAG } from \"./common.js\";\nimport InlineParser from \"./inlines.js\";\n\nvar CODE_INDENT = 4;\n\nvar C_TAB = 9;\nvar C_NEWLINE = 10;\nvar C_GREATERTHAN = 62;\nvar C_LESSTHAN = 60;\nvar C_SPACE = 32;\nvar C_OPEN_BRACKET = 91;\n\nvar reHtmlBlockOpen = [\n /./, // dummy for 0\n /^<(?:script|pre|textarea|style)(?:\\s|>|$)/i,\n /^/,\n /\\?>/,\n />/,\n /\\]\\]>/\n];\n\nvar reThematicBreak = /^(?:(?:\\*[ \\t]*){3,}|(?:_[ \\t]*){3,}|(?:-[ \\t]*){3,})[ \\t]*$/;\n\nvar reMaybeSpecial = /^[#`~*+_=<>0-9-]/;\n\nvar reNonSpace = /[^ \\t\\f\\v\\r\\n]/;\n\nvar reBulletListMarker = /^[*+-]/;\n\nvar reOrderedListMarker = /^(\\d{1,9})([.)])/;\n\nvar reATXHeadingMarker = /^#{1,6}(?:[ \\t]+|$)/;\n\nvar reCodeFence = /^`{3,}(?!.*`)|^~{3,}/;\n\nvar reClosingCodeFence = /^(?:`{3,}|~{3,})(?= *$)/;\n\nvar reSetextHeadingLine = /^(?:=+|-+)[ \\t]*$/;\n\nvar reLineEnding = /\\r\\n|\\n|\\r/;\n\n// Returns true if string contains only space characters.\nvar isBlank = function(s) {\n return !reNonSpace.test(s);\n};\n\nvar isSpaceOrTab = function(c) {\n return c === C_SPACE || c === C_TAB;\n};\n\nvar peek = function(ln, pos) {\n if (pos < ln.length) {\n return ln.charCodeAt(pos);\n } else {\n return -1;\n }\n};\n\n// DOC PARSER\n\n// These are methods of a Parser object, defined below.\n\n// Returns true if block ends with a blank line, descending if needed\n// into lists and sublists.\nvar endsWithBlankLine = function(block) {\n while (block) {\n if (block._lastLineBlank) {\n return true;\n }\n var t = block.type;\n if (!block._lastLineChecked && (t === \"list\" || t === \"item\")) {\n block._lastLineChecked = true;\n block = block._lastChild;\n } else {\n block._lastLineChecked = true;\n break;\n }\n }\n return false;\n};\n\n// Add a line to the block at the tip. We assume the tip\n// can accept lines -- that check should be done before calling this.\nvar addLine = function() {\n if (this.partiallyConsumedTab) {\n this.offset += 1; // skip over tab\n // add space characters:\n var charsToTab = 4 - (this.column % 4);\n this.tip._string_content += \" \".repeat(charsToTab);\n }\n this.tip._string_content += this.currentLine.slice(this.offset) + \"\\n\";\n};\n\n// Add block of type tag as a child of the tip. If the tip can't\n// accept children, close and finalize it and try its parent,\n// and so on til we find a block that can accept children.\nvar addChild = function(tag, offset) {\n while (!this.blocks[this.tip.type].canContain(tag)) {\n this.finalize(this.tip, this.lineNumber - 1);\n }\n\n var column_number = offset + 1; // offset 0 = column 1\n var newBlock = new Node(tag, [\n [this.lineNumber, column_number],\n [0, 0]\n ]);\n newBlock._string_content = \"\";\n this.tip.appendChild(newBlock);\n this.tip = newBlock;\n return newBlock;\n};\n\n// Parse a list marker and return data on the marker (type,\n// start, delimiter, bullet character, padding) or null.\nvar parseListMarker = function(parser, container) {\n var rest = parser.currentLine.slice(parser.nextNonspace);\n var match;\n var nextc;\n var spacesStartCol;\n var spacesStartOffset;\n var data = {\n type: null,\n tight: true, // lists are tight by default\n bulletChar: null,\n start: null,\n delimiter: null,\n padding: null,\n markerOffset: parser.indent\n };\n if (parser.indent >= 4) {\n return null;\n }\n if ((match = rest.match(reBulletListMarker))) {\n data.type = \"bullet\";\n data.bulletChar = match[0][0];\n } else if (\n (match = rest.match(reOrderedListMarker)) &&\n (container.type !== \"paragraph\" || match[1] === \"1\")\n ) {\n data.type = \"ordered\";\n data.start = parseInt(match[1]);\n data.delimiter = match[2];\n } else {\n return null;\n }\n // make sure we have spaces after\n nextc = peek(parser.currentLine, parser.nextNonspace + match[0].length);\n if (!(nextc === -1 || nextc === C_TAB || nextc === C_SPACE)) {\n return null;\n }\n\n // if it interrupts paragraph, make sure first line isn't blank\n if (\n container.type === \"paragraph\" &&\n !parser.currentLine\n .slice(parser.nextNonspace + match[0].length)\n .match(reNonSpace)\n ) {\n return null;\n }\n\n // we've got a match! advance offset and calculate padding\n parser.advanceNextNonspace(); // to start of marker\n parser.advanceOffset(match[0].length, true); // to end of marker\n spacesStartCol = parser.column;\n spacesStartOffset = parser.offset;\n do {\n parser.advanceOffset(1, true);\n nextc = peek(parser.currentLine, parser.offset);\n } while (parser.column - spacesStartCol < 5 && isSpaceOrTab(nextc));\n var blank_item = peek(parser.currentLine, parser.offset) === -1;\n var spaces_after_marker = parser.column - spacesStartCol;\n if (spaces_after_marker >= 5 || spaces_after_marker < 1 || blank_item) {\n data.padding = match[0].length + 1;\n parser.column = spacesStartCol;\n parser.offset = spacesStartOffset;\n if (isSpaceOrTab(peek(parser.currentLine, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n } else {\n data.padding = match[0].length + spaces_after_marker;\n }\n return data;\n};\n\n// Returns true if the two list items are of the same type,\n// with the same delimiter and bullet character. This is used\n// in agglomerating list items into lists.\nvar listsMatch = function(list_data, item_data) {\n return (\n list_data.type === item_data.type &&\n list_data.delimiter === item_data.delimiter &&\n list_data.bulletChar === item_data.bulletChar\n );\n};\n\n// Finalize and close any unmatched blocks.\nvar closeUnmatchedBlocks = function() {\n if (!this.allClosed) {\n // finalize any blocks not matched\n while (this.oldtip !== this.lastMatchedContainer) {\n var parent = this.oldtip._parent;\n this.finalize(this.oldtip, this.lineNumber - 1);\n this.oldtip = parent;\n }\n this.allClosed = true;\n }\n};\n\n// 'finalize' is run when the block is closed.\n// 'continue' is run to check whether the block is continuing\n// at a certain line and offset (e.g. whether a block quote\n// contains a `>`. It returns 0 for matched, 1 for not matched,\n// and 2 for \"we've dealt with this line completely, go to next.\"\nvar blocks = {\n document: {\n continue: function() {\n return 0;\n },\n finalize: function() {\n return;\n },\n canContain: function(t) {\n return t !== \"item\";\n },\n acceptsLines: false\n },\n list: {\n continue: function() {\n return 0;\n },\n finalize: function(parser, block) {\n var item = block._firstChild;\n while (item) {\n // check for non-final list item ending with blank line:\n if (endsWithBlankLine(item) && item._next) {\n block._listData.tight = false;\n break;\n }\n // recurse into children of list item, to see if there are\n // spaces between any of them:\n var subitem = item._firstChild;\n while (subitem) {\n if (\n endsWithBlankLine(subitem) &&\n (item._next || subitem._next)\n ) {\n block._listData.tight = false;\n break;\n }\n subitem = subitem._next;\n }\n item = item._next;\n }\n },\n canContain: function(t) {\n return t === \"item\";\n },\n acceptsLines: false\n },\n block_quote: {\n continue: function(parser) {\n var ln = parser.currentLine;\n if (\n !parser.indented &&\n peek(ln, parser.nextNonspace) === C_GREATERTHAN\n ) {\n parser.advanceNextNonspace();\n parser.advanceOffset(1, false);\n if (isSpaceOrTab(peek(ln, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n } else {\n return 1;\n }\n return 0;\n },\n finalize: function() {\n return;\n },\n canContain: function(t) {\n return t !== \"item\";\n },\n acceptsLines: false\n },\n item: {\n continue: function(parser, container) {\n if (parser.blank) {\n if (container._firstChild == null) {\n // Blank line after empty list item\n return 1;\n } else {\n parser.advanceNextNonspace();\n }\n } else if (\n parser.indent >=\n container._listData.markerOffset + container._listData.padding\n ) {\n parser.advanceOffset(\n container._listData.markerOffset +\n container._listData.padding,\n true\n );\n } else {\n return 1;\n }\n return 0;\n },\n finalize: function() {\n return;\n },\n canContain: function(t) {\n return t !== \"item\";\n },\n acceptsLines: false\n },\n heading: {\n continue: function() {\n // a heading can never container > 1 line, so fail to match:\n return 1;\n },\n finalize: function() {\n return;\n },\n canContain: function() {\n return false;\n },\n acceptsLines: false\n },\n thematic_break: {\n continue: function() {\n // a thematic break can never container > 1 line, so fail to match:\n return 1;\n },\n finalize: function() {\n return;\n },\n canContain: function() {\n return false;\n },\n acceptsLines: false\n },\n code_block: {\n continue: function(parser, container) {\n var ln = parser.currentLine;\n var indent = parser.indent;\n if (container._isFenced) {\n // fenced\n var match =\n indent <= 3 &&\n ln.charAt(parser.nextNonspace) === container._fenceChar &&\n ln.slice(parser.nextNonspace).match(reClosingCodeFence);\n if (match && match[0].length >= container._fenceLength) {\n // closing fence - we're at end of line, so we can return\n parser.lastLineLength =\n parser.offset + indent + match[0].length;\n parser.finalize(container, parser.lineNumber);\n return 2;\n } else {\n // skip optional spaces of fence offset\n var i = container._fenceOffset;\n while (i > 0 && isSpaceOrTab(peek(ln, parser.offset))) {\n parser.advanceOffset(1, true);\n i--;\n }\n }\n } else {\n // indented\n if (indent >= CODE_INDENT) {\n parser.advanceOffset(CODE_INDENT, true);\n } else if (parser.blank) {\n parser.advanceNextNonspace();\n } else {\n return 1;\n }\n }\n return 0;\n },\n finalize: function(parser, block) {\n if (block._isFenced) {\n // fenced\n // first line becomes info string\n var content = block._string_content;\n var newlinePos = content.indexOf(\"\\n\");\n var firstLine = content.slice(0, newlinePos);\n var rest = content.slice(newlinePos + 1);\n block.info = unescapeString(firstLine.trim());\n block._literal = rest;\n } else {\n // indented\n block._literal = block._string_content.replace(\n /(\\n *)+$/,\n \"\\n\"\n );\n }\n block._string_content = null; // allow GC\n },\n canContain: function() {\n return false;\n },\n acceptsLines: true\n },\n html_block: {\n continue: function(parser, container) {\n return parser.blank &&\n (container._htmlBlockType === 6 ||\n container._htmlBlockType === 7)\n ? 1\n : 0;\n },\n finalize: function(parser, block) {\n block._literal = block._string_content.replace(/(\\n *)+$/, \"\");\n block._string_content = null; // allow GC\n },\n canContain: function() {\n return false;\n },\n acceptsLines: true\n },\n paragraph: {\n continue: function(parser) {\n return parser.blank ? 1 : 0;\n },\n finalize: function(parser, block) {\n var pos;\n var hasReferenceDefs = false;\n\n // try parsing the beginning as link reference definitions:\n while (\n peek(block._string_content, 0) === C_OPEN_BRACKET &&\n (pos = parser.inlineParser.parseReference(\n block._string_content,\n parser.refmap\n ))\n ) {\n block._string_content = block._string_content.slice(pos);\n hasReferenceDefs = true;\n }\n if (hasReferenceDefs && isBlank(block._string_content)) {\n block.unlink();\n }\n },\n canContain: function() {\n return false;\n },\n acceptsLines: true\n }\n};\n\n// block start functions. Return values:\n// 0 = no match\n// 1 = matched container, keep going\n// 2 = matched leaf, no more block starts\nvar blockStarts = [\n // block quote\n function(parser) {\n if (\n !parser.indented &&\n peek(parser.currentLine, parser.nextNonspace) === C_GREATERTHAN\n ) {\n parser.advanceNextNonspace();\n parser.advanceOffset(1, false);\n // optional following space\n if (isSpaceOrTab(peek(parser.currentLine, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n parser.closeUnmatchedBlocks();\n parser.addChild(\"block_quote\", parser.nextNonspace);\n return 1;\n } else {\n return 0;\n }\n },\n\n // ATX heading\n function(parser) {\n var match;\n if (\n !parser.indented &&\n (match = parser.currentLine\n .slice(parser.nextNonspace)\n .match(reATXHeadingMarker))\n ) {\n parser.advanceNextNonspace();\n parser.advanceOffset(match[0].length, false);\n parser.closeUnmatchedBlocks();\n var container = parser.addChild(\"heading\", parser.nextNonspace);\n container.level = match[0].trim().length; // number of #s\n // remove trailing ###s:\n container._string_content = parser.currentLine\n .slice(parser.offset)\n .replace(/^[ \\t]*#+[ \\t]*$/, \"\")\n .replace(/[ \\t]+#+[ \\t]*$/, \"\");\n parser.advanceOffset(parser.currentLine.length - parser.offset);\n return 2;\n } else {\n return 0;\n }\n },\n\n // Fenced code block\n function(parser) {\n var match;\n if (\n !parser.indented &&\n (match = parser.currentLine\n .slice(parser.nextNonspace)\n .match(reCodeFence))\n ) {\n var fenceLength = match[0].length;\n parser.closeUnmatchedBlocks();\n var container = parser.addChild(\"code_block\", parser.nextNonspace);\n container._isFenced = true;\n container._fenceLength = fenceLength;\n container._fenceChar = match[0][0];\n container._fenceOffset = parser.indent;\n parser.advanceNextNonspace();\n parser.advanceOffset(fenceLength, false);\n return 2;\n } else {\n return 0;\n }\n },\n\n // HTML block\n function(parser, container) {\n if (\n !parser.indented &&\n peek(parser.currentLine, parser.nextNonspace) === C_LESSTHAN\n ) {\n var s = parser.currentLine.slice(parser.nextNonspace);\n var blockType;\n\n for (blockType = 1; blockType <= 7; blockType++) {\n if (\n reHtmlBlockOpen[blockType].test(s) &&\n (blockType < 7 || container.type !== \"paragraph\")\n ) {\n parser.closeUnmatchedBlocks();\n // We don't adjust parser.offset;\n // spaces are part of the HTML block:\n var b = parser.addChild(\"html_block\", parser.offset);\n b._htmlBlockType = blockType;\n return 2;\n }\n }\n }\n\n return 0;\n },\n\n // Setext heading\n function(parser, container) {\n var match;\n if (\n !parser.indented &&\n container.type === \"paragraph\" &&\n (match = parser.currentLine\n .slice(parser.nextNonspace)\n .match(reSetextHeadingLine))\n ) {\n parser.closeUnmatchedBlocks();\n // resolve reference link definitiosn\n var pos;\n while (\n peek(container._string_content, 0) === C_OPEN_BRACKET &&\n (pos = parser.inlineParser.parseReference(\n container._string_content,\n parser.refmap\n ))\n ) {\n container._string_content = container._string_content.slice(\n pos\n );\n }\n if (container._string_content.length > 0) {\n var heading = new Node(\"heading\", container.sourcepos);\n heading.level = match[0][0] === \"=\" ? 1 : 2;\n heading._string_content = container._string_content;\n container.insertAfter(heading);\n container.unlink();\n parser.tip = heading;\n parser.advanceOffset(\n parser.currentLine.length - parser.offset,\n false\n );\n return 2;\n } else {\n return 0;\n }\n } else {\n return 0;\n }\n },\n\n // thematic break\n function(parser) {\n if (\n !parser.indented &&\n reThematicBreak.test(parser.currentLine.slice(parser.nextNonspace))\n ) {\n parser.closeUnmatchedBlocks();\n parser.addChild(\"thematic_break\", parser.nextNonspace);\n parser.advanceOffset(\n parser.currentLine.length - parser.offset,\n false\n );\n return 2;\n } else {\n return 0;\n }\n },\n\n // list item\n function(parser, container) {\n var data;\n\n if (\n (!parser.indented || container.type === \"list\") &&\n (data = parseListMarker(parser, container))\n ) {\n parser.closeUnmatchedBlocks();\n\n // add the list if needed\n if (\n parser.tip.type !== \"list\" ||\n !listsMatch(container._listData, data)\n ) {\n container = parser.addChild(\"list\", parser.nextNonspace);\n container._listData = data;\n }\n\n // add the list item\n container = parser.addChild(\"item\", parser.nextNonspace);\n container._listData = data;\n return 1;\n } else {\n return 0;\n }\n },\n\n // indented code block\n function(parser) {\n if (\n parser.indented &&\n parser.tip.type !== \"paragraph\" &&\n !parser.blank\n ) {\n // indented code\n parser.advanceOffset(CODE_INDENT, true);\n parser.closeUnmatchedBlocks();\n parser.addChild(\"code_block\", parser.offset);\n return 2;\n } else {\n return 0;\n }\n }\n];\n\nvar advanceOffset = function(count, columns) {\n var currentLine = this.currentLine;\n var charsToTab, charsToAdvance;\n var c;\n while (count > 0 && (c = currentLine[this.offset])) {\n if (c === \"\\t\") {\n charsToTab = 4 - (this.column % 4);\n if (columns) {\n this.partiallyConsumedTab = charsToTab > count;\n charsToAdvance = charsToTab > count ? count : charsToTab;\n this.column += charsToAdvance;\n this.offset += this.partiallyConsumedTab ? 0 : 1;\n count -= charsToAdvance;\n } else {\n this.partiallyConsumedTab = false;\n this.column += charsToTab;\n this.offset += 1;\n count -= 1;\n }\n } else {\n this.partiallyConsumedTab = false;\n this.offset += 1;\n this.column += 1; // assume ascii; block starts are ascii\n count -= 1;\n }\n }\n};\n\nvar advanceNextNonspace = function() {\n this.offset = this.nextNonspace;\n this.column = this.nextNonspaceColumn;\n this.partiallyConsumedTab = false;\n};\n\nvar findNextNonspace = function() {\n var currentLine = this.currentLine;\n var i = this.offset;\n var cols = this.column;\n var c;\n\n while ((c = currentLine.charAt(i)) !== \"\") {\n if (c === \" \") {\n i++;\n cols++;\n } else if (c === \"\\t\") {\n i++;\n cols += 4 - (cols % 4);\n } else {\n break;\n }\n }\n this.blank = c === \"\\n\" || c === \"\\r\" || c === \"\";\n this.nextNonspace = i;\n this.nextNonspaceColumn = cols;\n this.indent = this.nextNonspaceColumn - this.column;\n this.indented = this.indent >= CODE_INDENT;\n};\n\n// Analyze a line of text and update the document appropriately.\n// We parse markdown text by calling this on each line of input,\n// then finalizing the document.\nvar incorporateLine = function(ln) {\n var all_matched = true;\n var t;\n\n var container = this.doc;\n this.oldtip = this.tip;\n this.offset = 0;\n this.column = 0;\n this.blank = false;\n this.partiallyConsumedTab = false;\n this.lineNumber += 1;\n\n // replace NUL characters for security\n if (ln.indexOf(\"\\u0000\") !== -1) {\n ln = ln.replace(/\\0/g, \"\\uFFFD\");\n }\n\n this.currentLine = ln;\n\n // For each containing block, try to parse the associated line start.\n // Bail out on failure: container will point to the last matching block.\n // Set all_matched to false if not all containers match.\n var lastChild;\n while ((lastChild = container._lastChild) && lastChild._open) {\n container = lastChild;\n\n this.findNextNonspace();\n\n switch (this.blocks[container.type].continue(this, container)) {\n case 0: // we've matched, keep going\n break;\n case 1: // we've failed to match a block\n all_matched = false;\n break;\n case 2: // we've hit end of line for fenced code close and can return\n return;\n default:\n throw \"continue returned illegal value, must be 0, 1, or 2\";\n }\n if (!all_matched) {\n container = container._parent; // back up to last matching block\n break;\n }\n }\n\n this.allClosed = container === this.oldtip;\n this.lastMatchedContainer = container;\n\n var matchedLeaf =\n container.type !== \"paragraph\" && blocks[container.type].acceptsLines;\n var starts = this.blockStarts;\n var startsLen = starts.length;\n // Unless last matched container is a code block, try new container starts,\n // adding children to the last matched container:\n while (!matchedLeaf) {\n this.findNextNonspace();\n\n // this is a little performance optimization:\n if (\n !this.indented &&\n !reMaybeSpecial.test(ln.slice(this.nextNonspace))\n ) {\n this.advanceNextNonspace();\n break;\n }\n\n var i = 0;\n while (i < startsLen) {\n var res = starts[i](this, container);\n if (res === 1) {\n container = this.tip;\n break;\n } else if (res === 2) {\n container = this.tip;\n matchedLeaf = true;\n break;\n } else {\n i++;\n }\n }\n\n if (i === startsLen) {\n // nothing matched\n this.advanceNextNonspace();\n break;\n }\n }\n\n // What remains at the offset is a text line. Add the text to the\n // appropriate container.\n\n // First check for a lazy paragraph continuation:\n if (!this.allClosed && !this.blank && this.tip.type === \"paragraph\") {\n // lazy paragraph continuation\n this.addLine();\n } else {\n // not a lazy continuation\n\n // finalize any blocks not matched\n this.closeUnmatchedBlocks();\n if (this.blank && container.lastChild) {\n container.lastChild._lastLineBlank = true;\n }\n\n t = container.type;\n\n // Block quote lines are never blank as they start with >\n // and we don't count blanks in fenced code for purposes of tight/loose\n // lists or breaking out of lists. We also don't set _lastLineBlank\n // on an empty list item, or if we just closed a fenced block.\n var lastLineBlank =\n this.blank &&\n !(\n t === \"block_quote\" ||\n (t === \"code_block\" && container._isFenced) ||\n (t === \"item\" &&\n !container._firstChild &&\n container.sourcepos[0][0] === this.lineNumber)\n );\n\n // propagate lastLineBlank up through parents:\n var cont = container;\n while (cont) {\n cont._lastLineBlank = lastLineBlank;\n cont = cont._parent;\n }\n\n if (this.blocks[t].acceptsLines) {\n this.addLine();\n // if HtmlBlock, check for end condition\n if (\n t === \"html_block\" &&\n container._htmlBlockType >= 1 &&\n container._htmlBlockType <= 5 &&\n reHtmlBlockClose[container._htmlBlockType].test(\n this.currentLine.slice(this.offset)\n )\n ) {\n this.lastLineLength = ln.length;\n this.finalize(container, this.lineNumber);\n }\n } else if (this.offset < ln.length && !this.blank) {\n // create paragraph container for line\n container = this.addChild(\"paragraph\", this.offset);\n this.advanceNextNonspace();\n this.addLine();\n }\n }\n this.lastLineLength = ln.length;\n};\n\n// Finalize a block. Close it and do any necessary postprocessing,\n// e.g. creating string_content from strings, setting the 'tight'\n// or 'loose' status of a list, and parsing the beginnings\n// of paragraphs for reference definitions. Reset the tip to the\n// parent of the closed block.\nvar finalize = function(block, lineNumber) {\n var above = block._parent;\n block._open = false;\n block.sourcepos[1] = [lineNumber, this.lastLineLength];\n\n this.blocks[block.type].finalize(this, block);\n\n this.tip = above;\n};\n\n// Walk through a block & children recursively, parsing string content\n// into inline content where appropriate.\nvar processInlines = function(block) {\n var node, event, t;\n var walker = block.walker();\n this.inlineParser.refmap = this.refmap;\n this.inlineParser.options = this.options;\n while ((event = walker.next())) {\n node = event.node;\n t = node.type;\n if (!event.entering && (t === \"paragraph\" || t === \"heading\")) {\n this.inlineParser.parse(node);\n }\n }\n};\n\nvar Document = function() {\n var doc = new Node(\"document\", [\n [1, 1],\n [0, 0]\n ]);\n return doc;\n};\n\n// The main parsing function. Returns a parsed document AST.\nvar parse = function(input) {\n this.doc = new Document();\n this.tip = this.doc;\n this.refmap = {};\n this.lineNumber = 0;\n this.lastLineLength = 0;\n this.offset = 0;\n this.column = 0;\n this.lastMatchedContainer = this.doc;\n this.currentLine = \"\";\n if (this.options.time) {\n console.time(\"preparing input\");\n }\n var lines = input.split(reLineEnding);\n var len = lines.length;\n if (input.charCodeAt(input.length - 1) === C_NEWLINE) {\n // ignore last blank line created by final newline\n len -= 1;\n }\n if (this.options.time) {\n console.timeEnd(\"preparing input\");\n }\n if (this.options.time) {\n console.time(\"block parsing\");\n }\n for (var i = 0; i < len; i++) {\n this.incorporateLine(lines[i]);\n }\n while (this.tip) {\n this.finalize(this.tip, len);\n }\n if (this.options.time) {\n console.timeEnd(\"block parsing\");\n }\n if (this.options.time) {\n console.time(\"inline parsing\");\n }\n this.processInlines(this.doc);\n if (this.options.time) {\n console.timeEnd(\"inline parsing\");\n }\n return this.doc;\n};\n\n// The Parser object.\nfunction Parser(options) {\n return {\n doc: new Document(),\n blocks: blocks,\n blockStarts: blockStarts,\n tip: this.doc,\n oldtip: this.doc,\n currentLine: \"\",\n lineNumber: 0,\n offset: 0,\n column: 0,\n nextNonspace: 0,\n nextNonspaceColumn: 0,\n indent: 0,\n indented: false,\n blank: false,\n partiallyConsumedTab: false,\n allClosed: true,\n lastMatchedContainer: this.doc,\n refmap: {},\n lastLineLength: 0,\n inlineParser: new InlineParser(options),\n findNextNonspace: findNextNonspace,\n advanceOffset: advanceOffset,\n advanceNextNonspace: advanceNextNonspace,\n addLine: addLine,\n addChild: addChild,\n incorporateLine: incorporateLine,\n finalize: finalize,\n processInlines: processInlines,\n closeUnmatchedBlocks: closeUnmatchedBlocks,\n parse: parse,\n options: options || {}\n };\n}\n\nexport default Parser;\n","\"use strict\";\n\nfunction Renderer() {}\n\n/**\n * Walks the AST and calls member methods for each Node type.\n *\n * @param ast {Node} The root of the abstract syntax tree.\n */\nfunction render(ast) {\n var walker = ast.walker(),\n event,\n type;\n\n this.buffer = \"\";\n this.lastOut = \"\\n\";\n\n while ((event = walker.next())) {\n type = event.node.type;\n if (this[type]) {\n this[type](event.node, event.entering);\n }\n }\n return this.buffer;\n}\n\n/**\n * Concatenate a literal string to the buffer.\n *\n * @param str {String} The string to concatenate.\n */\nfunction lit(str) {\n this.buffer += str;\n this.lastOut = str;\n}\n\n/**\n * Output a newline to the buffer.\n */\nfunction cr() {\n if (this.lastOut !== \"\\n\") {\n this.lit(\"\\n\");\n }\n}\n\n/**\n * Concatenate a string to the buffer possibly escaping the content.\n *\n * Concrete renderer implementations should override this method.\n *\n * @param str {String} The string to concatenate.\n */\nfunction out(str) {\n this.lit(str);\n}\n\n/**\n * Escape a string for the target renderer.\n *\n * Abstract function that should be implemented by concrete\n * renderer implementations.\n *\n * @param str {String} The string to escape.\n */\nfunction esc(str) {\n return str;\n}\n\nRenderer.prototype.render = render;\nRenderer.prototype.out = out;\nRenderer.prototype.lit = lit;\nRenderer.prototype.cr = cr;\nRenderer.prototype.esc = esc;\n\nexport default Renderer;\n","\"use strict\";\n\nimport { escapeXml } from \"../common.js\";\nimport Renderer from \"./renderer.js\";\n\nvar reUnsafeProtocol = /^javascript:|vbscript:|file:|data:/i;\nvar reSafeDataProtocol = /^data:image\\/(?:png|gif|jpeg|webp)/i;\n\nvar potentiallyUnsafe = function(url) {\n return reUnsafeProtocol.test(url) && !reSafeDataProtocol.test(url);\n};\n\n// Helper function to produce an HTML tag.\nfunction tag(name, attrs, selfclosing) {\n if (this.disableTags > 0) {\n return;\n }\n this.buffer += \"<\" + name;\n if (attrs && attrs.length > 0) {\n var i = 0;\n var attrib;\n while ((attrib = attrs[i]) !== undefined) {\n this.buffer += \" \" + attrib[0] + '=\"' + attrib[1] + '\"';\n i++;\n }\n }\n if (selfclosing) {\n this.buffer += \" /\";\n }\n this.buffer += \">\";\n this.lastOut = \">\";\n}\n\nfunction HtmlRenderer(options) {\n options = options || {};\n // by default, soft breaks are rendered as newlines in HTML\n options.softbreak = options.softbreak || \"\\n\";\n // set to \"
\" to make them hard breaks\n // set to \" \" if you want to ignore line wrapping in source\n\n this.disableTags = 0;\n this.lastOut = \"\\n\";\n this.options = options;\n}\n\n/* Node methods */\n\nfunction text(node) {\n this.out(node.literal);\n}\n\nfunction softbreak() {\n this.lit(this.options.softbreak);\n}\n\nfunction linebreak() {\n this.tag(\"br\", [], true);\n this.cr();\n}\n\nfunction link(node, entering) {\n var attrs = this.attrs(node);\n if (entering) {\n if (!(this.options.safe && potentiallyUnsafe(node.destination))) {\n attrs.push([\"href\", this.esc(node.destination)]);\n }\n if (node.title) {\n attrs.push([\"title\", this.esc(node.title)]);\n }\n this.tag(\"a\", attrs);\n } else {\n this.tag(\"/a\");\n }\n}\n\nfunction image(node, entering) {\n if (entering) {\n if (this.disableTags === 0) {\n if (this.options.safe && potentiallyUnsafe(node.destination)) {\n this.lit('\"');\n');\n }\n }\n}\n\nfunction emph(node, entering) {\n this.tag(entering ? \"em\" : \"/em\");\n}\n\nfunction strong(node, entering) {\n this.tag(entering ? \"strong\" : \"/strong\");\n}\n\nfunction paragraph(node, entering) {\n var grandparent = node.parent.parent,\n attrs = this.attrs(node);\n if (grandparent !== null && grandparent.type === \"list\") {\n if (grandparent.listTight) {\n return;\n }\n }\n if (entering) {\n this.cr();\n this.tag(\"p\", attrs);\n } else {\n this.tag(\"/p\");\n this.cr();\n }\n}\n\nfunction heading(node, entering) {\n var tagname = \"h\" + node.level,\n attrs = this.attrs(node);\n if (entering) {\n this.cr();\n this.tag(tagname, attrs);\n } else {\n this.tag(\"/\" + tagname);\n this.cr();\n }\n}\n\nfunction code(node) {\n this.tag(\"code\");\n this.out(node.literal);\n this.tag(\"/code\");\n}\n\nfunction code_block(node) {\n var info_words = node.info ? node.info.split(/\\s+/) : [],\n attrs = this.attrs(node);\n if (info_words.length > 0 && info_words[0].length > 0) {\n attrs.push([\"class\", \"language-\" + this.esc(info_words[0])]);\n }\n this.cr();\n this.tag(\"pre\");\n this.tag(\"code\", attrs);\n this.out(node.literal);\n this.tag(\"/code\");\n this.tag(\"/pre\");\n this.cr();\n}\n\nfunction thematic_break(node) {\n var attrs = this.attrs(node);\n this.cr();\n this.tag(\"hr\", attrs, true);\n this.cr();\n}\n\nfunction block_quote(node, entering) {\n var attrs = this.attrs(node);\n if (entering) {\n this.cr();\n this.tag(\"blockquote\", attrs);\n this.cr();\n } else {\n this.cr();\n this.tag(\"/blockquote\");\n this.cr();\n }\n}\n\nfunction list(node, entering) {\n var tagname = node.listType === \"bullet\" ? \"ul\" : \"ol\",\n attrs = this.attrs(node);\n\n if (entering) {\n var start = node.listStart;\n if (start !== null && start !== 1) {\n attrs.push([\"start\", start.toString()]);\n }\n this.cr();\n this.tag(tagname, attrs);\n this.cr();\n } else {\n this.cr();\n this.tag(\"/\" + tagname);\n this.cr();\n }\n}\n\nfunction item(node, entering) {\n var attrs = this.attrs(node);\n if (entering) {\n this.tag(\"li\", attrs);\n } else {\n this.tag(\"/li\");\n this.cr();\n }\n}\n\nfunction html_inline(node) {\n if (this.options.safe) {\n this.lit(\"\");\n } else {\n this.lit(node.literal);\n }\n}\n\nfunction html_block(node) {\n this.cr();\n if (this.options.safe) {\n this.lit(\"\");\n } else {\n this.lit(node.literal);\n }\n this.cr();\n}\n\nfunction custom_inline(node, entering) {\n if (entering && node.onEnter) {\n this.lit(node.onEnter);\n } else if (!entering && node.onExit) {\n this.lit(node.onExit);\n }\n}\n\nfunction custom_block(node, entering) {\n this.cr();\n if (entering && node.onEnter) {\n this.lit(node.onEnter);\n } else if (!entering && node.onExit) {\n this.lit(node.onExit);\n }\n this.cr();\n}\n\n/* Helper methods */\n\nfunction out(s) {\n this.lit(this.esc(s));\n}\n\nfunction attrs(node) {\n var att = [];\n if (this.options.sourcepos) {\n var pos = node.sourcepos;\n if (pos) {\n att.push([\n \"data-sourcepos\",\n String(pos[0][0]) +\n \":\" +\n String(pos[0][1]) +\n \"-\" +\n String(pos[1][0]) +\n \":\" +\n String(pos[1][1])\n ]);\n }\n }\n return att;\n}\n\n// quick browser-compatible inheritance\nHtmlRenderer.prototype = Object.create(Renderer.prototype);\n\nHtmlRenderer.prototype.text = text;\nHtmlRenderer.prototype.html_inline = html_inline;\nHtmlRenderer.prototype.html_block = html_block;\nHtmlRenderer.prototype.softbreak = softbreak;\nHtmlRenderer.prototype.linebreak = linebreak;\nHtmlRenderer.prototype.link = link;\nHtmlRenderer.prototype.image = image;\nHtmlRenderer.prototype.emph = emph;\nHtmlRenderer.prototype.strong = strong;\nHtmlRenderer.prototype.paragraph = paragraph;\nHtmlRenderer.prototype.heading = heading;\nHtmlRenderer.prototype.code = code;\nHtmlRenderer.prototype.code_block = code_block;\nHtmlRenderer.prototype.thematic_break = thematic_break;\nHtmlRenderer.prototype.block_quote = block_quote;\nHtmlRenderer.prototype.list = list;\nHtmlRenderer.prototype.item = item;\nHtmlRenderer.prototype.custom_inline = custom_inline;\nHtmlRenderer.prototype.custom_block = custom_block;\n\nHtmlRenderer.prototype.esc = escapeXml;\n\nHtmlRenderer.prototype.out = out;\nHtmlRenderer.prototype.tag = tag;\nHtmlRenderer.prototype.attrs = attrs;\n\nexport default HtmlRenderer;\n","\"use strict\";\n\nimport Renderer from \"./renderer.js\";\nimport { escapeXml } from \"../common.js\";\n\nvar reXMLTag = /\\<[^>]*\\>/;\n\nfunction toTagName(s) {\n return s.replace(/([a-z])([A-Z])/g, \"$1_$2\").toLowerCase();\n}\n\nfunction XmlRenderer(options) {\n options = options || {};\n\n this.disableTags = 0;\n this.lastOut = \"\\n\";\n\n this.indentLevel = 0;\n this.indent = \" \";\n\n this.options = options;\n}\n\nfunction render(ast) {\n this.buffer = \"\";\n\n var attrs;\n var tagname;\n var walker = ast.walker();\n var event, node, entering;\n var container;\n var selfClosing;\n var nodetype;\n\n var options = this.options;\n\n if (options.time) {\n console.time(\"rendering\");\n }\n\n this.buffer += '\\n';\n this.buffer += '\\n';\n\n while ((event = walker.next())) {\n entering = event.entering;\n node = event.node;\n nodetype = node.type;\n\n container = node.isContainer;\n\n selfClosing =\n nodetype === \"thematic_break\" ||\n nodetype === \"linebreak\" ||\n nodetype === \"softbreak\";\n\n tagname = toTagName(nodetype);\n\n if (entering) {\n attrs = [];\n\n switch (nodetype) {\n case \"document\":\n attrs.push([\"xmlns\", \"http://commonmark.org/xml/1.0\"]);\n break;\n case \"list\":\n if (node.listType !== null) {\n attrs.push([\"type\", node.listType.toLowerCase()]);\n }\n if (node.listStart !== null) {\n attrs.push([\"start\", String(node.listStart)]);\n }\n if (node.listTight !== null) {\n attrs.push([\n \"tight\",\n node.listTight ? \"true\" : \"false\"\n ]);\n }\n var delim = node.listDelimiter;\n if (delim !== null) {\n var delimword = \"\";\n if (delim === \".\") {\n delimword = \"period\";\n } else {\n delimword = \"paren\";\n }\n attrs.push([\"delimiter\", delimword]);\n }\n break;\n case \"code_block\":\n if (node.info) {\n attrs.push([\"info\", node.info]);\n }\n break;\n case \"heading\":\n attrs.push([\"level\", String(node.level)]);\n break;\n case \"link\":\n case \"image\":\n attrs.push([\"destination\", node.destination]);\n attrs.push([\"title\", node.title]);\n break;\n case \"custom_inline\":\n case \"custom_block\":\n attrs.push([\"on_enter\", node.onEnter]);\n attrs.push([\"on_exit\", node.onExit]);\n break;\n default:\n break;\n }\n if (options.sourcepos) {\n var pos = node.sourcepos;\n if (pos) {\n attrs.push([\n \"sourcepos\",\n String(pos[0][0]) +\n \":\" +\n String(pos[0][1]) +\n \"-\" +\n String(pos[1][0]) +\n \":\" +\n String(pos[1][1])\n ]);\n }\n }\n\n this.cr();\n this.out(this.tag(tagname, attrs, selfClosing));\n if (container) {\n this.indentLevel += 1;\n } else if (!container && !selfClosing) {\n var lit = node.literal;\n if (lit) {\n this.out(this.esc(lit));\n }\n this.out(this.tag(\"/\" + tagname));\n }\n } else {\n this.indentLevel -= 1;\n this.cr();\n this.out(this.tag(\"/\" + tagname));\n }\n }\n if (options.time) {\n console.timeEnd(\"rendering\");\n }\n this.buffer += \"\\n\";\n return this.buffer;\n}\n\nfunction out(s) {\n if (this.disableTags > 0) {\n this.buffer += s.replace(reXMLTag, \"\");\n } else {\n this.buffer += s;\n }\n this.lastOut = s;\n}\n\nfunction cr() {\n if (this.lastOut !== \"\\n\") {\n this.buffer += \"\\n\";\n this.lastOut = \"\\n\";\n for (var i = this.indentLevel; i > 0; i--) {\n this.buffer += this.indent;\n }\n }\n}\n\n// Helper function to produce an XML tag.\nfunction tag(name, attrs, selfclosing) {\n var result = \"<\" + name;\n if (attrs && attrs.length > 0) {\n var i = 0;\n var attrib;\n while ((attrib = attrs[i]) !== undefined) {\n result += \" \" + attrib[0] + '=\"' + this.esc(attrib[1]) + '\"';\n i++;\n }\n }\n if (selfclosing) {\n result += \" /\";\n }\n result += \">\";\n return result;\n}\n\n// quick browser-compatible inheritance\nXmlRenderer.prototype = Object.create(Renderer.prototype);\n\nXmlRenderer.prototype.render = render;\nXmlRenderer.prototype.out = out;\nXmlRenderer.prototype.cr = cr;\nXmlRenderer.prototype.tag = tag;\nXmlRenderer.prototype.esc = escapeXml;\n\nexport default XmlRenderer;\n"],"names":["isContainer","node","_type","resumeAt","entering","this","current","next","cur","container","_firstChild","root","_next","_parent","NodeWalker","Node","nodeType","sourcepos","_lastChild","_prev","_sourcepos","_lastLineBlank","_lastLineChecked","_open","_string_content","_literal","_listData","_info","_destination","_title","_isFenced","_fenceChar","_fenceLength","_fenceOffset","_level","_onEnter","_onExit","proto","prototype","Object","defineProperty","get","set","s","type","t","tight","start","n","delimiter","delim","appendChild","child","unlink","prependChild","insertAfter","sibling","insertBefore","walker","encodeCache","encode","string","exclude","keepEscaped","i","l","code","nextCode","cache","result","defaultChars","ch","String","fromCharCode","test","push","toString","toUpperCase","slice","length","charCodeAt","getEncodeCache","encodeURIComponent","componentChars","$fca801bbc3ce454c5521ca26ef2f171$exports","$df9b7643534f8c8124c138da0c2c0f79$exports","value","decode","$df9b7643534f8c8124c138da0c2c0f79$export$decode","decodeStrict","$df9b7643534f8c8124c138da0c2c0f79$export$decodeStrict","$df9b7643534f8c8124c138da0c2c0f79$export$encode","__importDefault","$ee1cf05f19c7302be17bf6d38bdd6f51$exports","mod","__esModule","default","decodeXML","$ee1cf05f19c7302be17bf6d38bdd6f51$export$decodeXML","decodeHTMLStrict","$ee1cf05f19c7302be17bf6d38bdd6f51$export$decodeHTMLStrict","decodeHTML","$ee1cf05f19c7302be17bf6d38bdd6f51$export$decodeHTML","entities_json_1","$cc0e6a351f5c08374528e9f61218$exports","JSON","parse","legacy_json_1","xml_json_1","$f67cf6f68e6c4c17e214386bc0466b3a$exports","$f00896b93557ab26e2d6be3c92fc09c$exports","decode_json_1","codePoint","output","$f00896b93557ab26e2d6be3c92fc09c$export$default","decode_codepoint_1","getStrictDecoder","map","keys","join","replace","getReplacer","re","RegExp","str","sorter","a","b","charAt","secondChar","parseInt","substr","legacy","sort","j","replacer","$a834eda89a4b490628ea2c9a8494dcf0$exports","encodeXML","$a834eda89a4b490628ea2c9a8494dcf0$export$encodeXML","encodeHTML","$a834eda89a4b490628ea2c9a8494dcf0$export$encodeHTML","escape","$a834eda89a4b490628ea2c9a8494dcf0$export$escape","inverseXML","getInverseObj","getInverse","getInverseReplacer","inverseHTML","obj","reduce","inverse","name","single","multiple","_i","_a","k","end","count","splice","unshift","reNonASCII","singleCharReplacer","c","codePointAt","data","reXmlChars","level","enumerable","_fromCodePoint","repeat","reHtmlTag","reBackslashOrAmp","reEntityOrEscapedChar","reXmlSpecial","unescapeChar","unescapeString","replaceUnsafeChar","escapeXml","fromCodePoint","_","e","RangeError","stringFromCharCode","floor","Math","highSurrogate","lowSurrogate","MAX_SIZE","codeUnits","index","arguments","Number","isFinite","apply","object","$defineProperty","error","TypeError","Infinity","configurable","writable","normalizeURI","uri","$fca801bbc3ce454c5521ca26ef2f171$$interop$default","err","$e6b3ce5fb6b6068c8caa134c7fbfe419$export$unescapeString","$e6b3ce5fb6b6068c8caa134c7fbfe419$export$reHtmlTag","rePunctuation","reLinkTitle","reLinkDestinationBraces","reEscapable","reEntityHere","reTicks","reTicksHere","reEllipses","reDash","reEmailAutolink","reAutolink","reSpnl","reWhitespaceChar","reUnicodeWhitespaceChar","reFinalSpace","reInitialSpace","reSpaceAtEndOfLine","reLinkLabel","reMain","text","normalizeReference","trim","toLowerCase","match","m","exec","subject","pos","peek","spnl","parseBackticks","block","ticks","matched","contents","afterOpenTicks","parseBackslash","subj","parseAutolink","dest","parseHtmlTag","scanDelims","cc","char_before","char_after","cc_after","left_flanking","right_flanking","can_open","can_close","after_is_whitespace","after_is_punctuation","before_is_whitespace","before_is_punctuation","numdelims","startpos","$eb72f3ec07eaca019f3aee07fc4f6b$export$default","handleDelim","res","options","smart","delimiters","origdelims","previous","removeDelimiter","processEmphasis","stack_bottom","opener","closer","old_closer","opener_inl","closer_inl","tempstack","use_delims","tmp","opener_found","bottom","top","openers_bottom","odd_match","closercc","emph","literal","parseLinkTitle","title","parseLinkDestination","savepos","openparens","parseLinkLabel","parseOpenBracket","addBracket","parseBang","parseCloseBracket","is_image","reflabel","brackets","active","removeBracket","image","beforelabel","bracketAfter","link","refmap","destination","previousDelimiter","parseEntity","parseString","chars","enCount","emCount","parseNewline","lastc","hardbreak","parseReference","rawlabel","matchChars","beforetitle","atLineEnd","normlabel","parseInline","parseInlines","InlineParser","reHtmlBlockOpen","reHtmlBlockClose","reThematicBreak","reMaybeSpecial","reNonSpace","reBulletListMarker","reOrderedListMarker","reATXHeadingMarker","reCodeFence","reClosingCodeFence","reSetextHeadingLine","reLineEnding","isSpaceOrTab","ln","endsWithBlankLine","addLine","partiallyConsumedTab","offset","charsToTab","column","tip","currentLine","addChild","tag","blocks","canContain","finalize","lineNumber","column_number","newBlock","closeUnmatchedBlocks","allClosed","oldtip","lastMatchedContainer","parent","document","continue","acceptsLines","list","parser","item","subitem","block_quote","indented","nextNonspace","advanceNextNonspace","advanceOffset","blank","indent","markerOffset","padding","heading","thematic_break","code_block","lastLineLength","content","newlinePos","indexOf","firstLine","rest","info","html_block","_htmlBlockType","paragraph","hasReferenceDefs","inlineParser","blockStarts","fenceLength","blockType","list_data","item_data","nextc","spacesStartCol","spacesStartOffset","bulletChar","blank_item","spaces_after_marker","parseListMarker","columns","charsToAdvance","nextNonspaceColumn","findNextNonspace","cols","incorporateLine","lastChild","all_matched","doc","matchedLeaf","starts","startsLen","lastLineBlank","cont","above","processInlines","event","Document","input","time","console","lines","split","len","timeEnd","Renderer","$fcc52a750951d9b1ddc7d58a4d47b463$export$default","render","ast","buffer","lastOut","out","lit","cr","esc","reUnsafeProtocol","reSafeDataProtocol","potentiallyUnsafe","url","HtmlRenderer","softbreak","disableTags","create","html_inline","safe","linebreak","attrs","strong","grandparent","listTight","tagname","info_words","listType","listStart","custom_inline","onEnter","onExit","custom_block","$e6b3ce5fb6b6068c8caa134c7fbfe419$export$escapeXml","selfclosing","attrib","undefined","att","reXMLTag","XmlRenderer","indentLevel","selfClosing","nodetype","listDelimiter","delimword"],"version":3,"file":"commonmark.49fe3127.js.map"} \ No newline at end of file diff --git a/dist/main.js b/dist/main.js index 58474686c..a4638887b 100644 --- a/dist/main.js +++ b/dist/main.js @@ -1,2 +1,10 @@ -var t,e,n=require("crypto"),r=require("module"),i=require("events"),o=require("timers"),s=require("stream"),a=s,c=s.Transform,u=x(require("typescript")),l=require("atom"),f=(t={},e=l,Object.keys(e).forEach((function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[n]}})})),t),p=l.CompositeDisposable,h=l.Emitter,d=l.BufferedNodeProcess,m=(l.BufferedProcess,l.Disposable),g=require("path"),v=g,y=g.dirname,w=require("util"),b=require("fs"),E=b,_=x(b),S=require("assert");function x(t){return t&&t.__esModule?t.default:t}var k,T="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},I={};Object.defineProperty(I,"__esModule",{value:!0});var A,C,O={};function P(t){return t&&"object"==typeof t&&"default"in t?t.default:t}var N=P(S),L=P(E),R=P(w),j=P(v);function D(t,e,n){return t(n={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&n.path)}},n.exports),n.exports}var F,M=D((function(t,e){t.exports=function(t){for(var e=0;e{if(!Buffer.isBuffer(t))throw new TypeError("Expected a Buffer, got "+typeof t);return 239===t[0]&&187===t[1]&&191===t[2]&&M(t)?t.slice(3):t},B=(F=D((function(t){var e=r(L),n=r($);function r(t){return t&&t.__esModule?t:{default:t}}const i={},o=["Stats","_toUnixTimestamp","watch","watchFile","unwatchFile"];Object.keys(e.default).forEach((function(t){const n=e.default[t];"function"!=typeof n||t.includes("Sync")||t.includes("Stream")||o.includes(t)?i[t]=n:i[t]=(0,R.promisify)(n)})),i.exists=function(t){return new Promise((function(n){e.default.access(t,e.default.R_OK,(function(t){n(null===t)}))}))},i.readFile=function(t,r){return new Promise((function(i,o){e.default.readFile(t,(function(t,e){if(t)return void o(t);let s=(0,n.default)(e);r&&(s=s.toString(r)),i(s)}))}))},t.exports=i})))&&F.__esModule&&Object.prototype.hasOwnProperty.call(F,"default")?F.default:F,z={SEMVER_SPEC_VERSION:"2.0.0",MAX_LENGTH:256,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,MAX_SAFE_COMPONENT_LENGTH:16},U="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>{}:()=>{},H=D((function(t,e){const{MAX_SAFE_COMPONENT_LENGTH:n}=z,r=(e=t.exports={}).re=[],i=e.src=[],o=e.t={};let s=0;const a=(t,e,n)=>{const a=s++;U(a,e),o[t]=a,i[a]=e,r[a]=new RegExp(e,n?"g":void 0)};a("NUMERICIDENTIFIER","0|[1-9]\\d*"),a("NUMERICIDENTIFIERLOOSE","[0-9]+"),a("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*"),a("MAINVERSION",`(${i[o.NUMERICIDENTIFIER]})\\.(${i[o.NUMERICIDENTIFIER]})\\.(${i[o.NUMERICIDENTIFIER]})`),a("MAINVERSIONLOOSE",`(${i[o.NUMERICIDENTIFIERLOOSE]})\\.(${i[o.NUMERICIDENTIFIERLOOSE]})\\.(${i[o.NUMERICIDENTIFIERLOOSE]})`),a("PRERELEASEIDENTIFIER",`(?:${i[o.NUMERICIDENTIFIER]}|${i[o.NONNUMERICIDENTIFIER]})`),a("PRERELEASEIDENTIFIERLOOSE",`(?:${i[o.NUMERICIDENTIFIERLOOSE]}|${i[o.NONNUMERICIDENTIFIER]})`),a("PRERELEASE",`(?:-(${i[o.PRERELEASEIDENTIFIER]}(?:\\.${i[o.PRERELEASEIDENTIFIER]})*))`),a("PRERELEASELOOSE",`(?:-?(${i[o.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${i[o.PRERELEASEIDENTIFIERLOOSE]})*))`),a("BUILDIDENTIFIER","[0-9A-Za-z-]+"),a("BUILD",`(?:\\+(${i[o.BUILDIDENTIFIER]}(?:\\.${i[o.BUILDIDENTIFIER]})*))`),a("FULLPLAIN",`v?${i[o.MAINVERSION]}${i[o.PRERELEASE]}?${i[o.BUILD]}?`),a("FULL",`^${i[o.FULLPLAIN]}$`),a("LOOSEPLAIN",`[v=\\s]*${i[o.MAINVERSIONLOOSE]}${i[o.PRERELEASELOOSE]}?${i[o.BUILD]}?`),a("LOOSE",`^${i[o.LOOSEPLAIN]}$`),a("GTLT","((?:<|>)?=?)"),a("XRANGEIDENTIFIERLOOSE",i[o.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*"),a("XRANGEIDENTIFIER",i[o.NUMERICIDENTIFIER]+"|x|X|\\*"),a("XRANGEPLAIN",`[v=\\s]*(${i[o.XRANGEIDENTIFIER]})(?:\\.(${i[o.XRANGEIDENTIFIER]})(?:\\.(${i[o.XRANGEIDENTIFIER]})(?:${i[o.PRERELEASE]})?${i[o.BUILD]}?)?)?`),a("XRANGEPLAINLOOSE",`[v=\\s]*(${i[o.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i[o.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i[o.XRANGEIDENTIFIERLOOSE]})(?:${i[o.PRERELEASELOOSE]})?${i[o.BUILD]}?)?)?`),a("XRANGE",`^${i[o.GTLT]}\\s*${i[o.XRANGEPLAIN]}$`),a("XRANGELOOSE",`^${i[o.GTLT]}\\s*${i[o.XRANGEPLAINLOOSE]}$`),a("COERCE",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?(?:$|[^\\d])`),a("COERCERTL",i[o.COERCE],!0),a("LONETILDE","(?:~>?)"),a("TILDETRIM",`(\\s*)${i[o.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",a("TILDE",`^${i[o.LONETILDE]}${i[o.XRANGEPLAIN]}$`),a("TILDELOOSE",`^${i[o.LONETILDE]}${i[o.XRANGEPLAINLOOSE]}$`),a("LONECARET","(?:\\^)"),a("CARETTRIM",`(\\s*)${i[o.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",a("CARET",`^${i[o.LONECARET]}${i[o.XRANGEPLAIN]}$`),a("CARETLOOSE",`^${i[o.LONECARET]}${i[o.XRANGEPLAINLOOSE]}$`),a("COMPARATORLOOSE",`^${i[o.GTLT]}\\s*(${i[o.LOOSEPLAIN]})$|^$`),a("COMPARATOR",`^${i[o.GTLT]}\\s*(${i[o.FULLPLAIN]})$|^$`),a("COMPARATORTRIM",`(\\s*)${i[o.GTLT]}\\s*(${i[o.LOOSEPLAIN]}|${i[o.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",a("HYPHENRANGE",`^\\s*(${i[o.XRANGEPLAIN]})\\s+-\\s+(${i[o.XRANGEPLAIN]})\\s*$`),a("HYPHENRANGELOOSE",`^\\s*(${i[o.XRANGEPLAINLOOSE]})\\s+-\\s+(${i[o.XRANGEPLAINLOOSE]})\\s*$`),a("STAR","(<|>)?=?\\s*\\*"),a("GTE0","^\\s*>=\\s*0.0.0\\s*$"),a("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")}));const q=/^[0-9]+$/,G=(t,e)=>{const n=q.test(t),r=q.test(e);return n&&r&&(t=+t,e=+e),t===e?0:n&&!r?-1:r&&!n?1:tG(e,t)};const{MAX_LENGTH:W,MAX_SAFE_INTEGER:X}=z,{re:K,t:Q}=H,{compareIdentifiers:Z}=V;class Y{constructor(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof Y){if(t.loose===!!e.loose&&t.includePrerelease===!!e.includePrerelease)return t;t=t.version}else if("string"!=typeof t)throw new TypeError("Invalid Version: "+t);if(t.length>W)throw new TypeError(`version is longer than ${W} characters`);U("SemVer",t,e),this.options=e,this.loose=!!e.loose,this.includePrerelease=!!e.includePrerelease;const n=t.trim().match(e.loose?K[Q.LOOSE]:K[Q.FULL]);if(!n)throw new TypeError("Invalid Version: "+t);if(this.raw=t,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>X||this.major<0)throw new TypeError("Invalid major version");if(this.minor>X||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>X||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map((t=>{if(/^[0-9]+$/.test(t)){const e=+t;if(e>=0&&e=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}e&&(this.prerelease[0]===e?isNaN(this.prerelease[1])&&(this.prerelease=[e,0]):this.prerelease=[e,0]);break;default:throw new Error("invalid increment argument: "+t)}return this.format(),this.raw=this.version,this}}var J=Y,tt=(t,e,n)=>new J(t,n).compare(new J(e,n)),et=(t,e,n,r)=>{switch(e){case"===":return"object"==typeof t&&(t=t.version),"object"==typeof n&&(n=n.version),t===n;case"!==":return"object"==typeof t&&(t=t.version),"object"==typeof n&&(n=n.version),t!==n;case"":case"=":case"==":return((t,e,n)=>0===tt(t,e,n))(t,n,r);case"!=":return((t,e,n)=>0!==tt(t,e,n))(t,n,r);case">":return((t,e,n)=>tt(t,e,n)>0)(t,n,r);case">=":return((t,e,n)=>tt(t,e,n)>=0)(t,n,r);case"<":return((t,e,n)=>tt(t,e,n)<0)(t,n,r);case"<=":return((t,e,n)=>tt(t,e,n)<=0)(t,n,r);default:throw new TypeError("Invalid operator: "+e)}};const nt=Symbol("SemVer ANY");class rt{static get ANY(){return nt}constructor(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof rt){if(t.loose===!!e.loose)return t;t=t.value}U("comparator",t,e),this.options=e,this.loose=!!e.loose,this.parse(t),this.semver===nt?this.value="":this.value=this.operator+this.semver.version,U("comp",this)}parse(t){const e=this.options.loose?ot[st.COMPARATORLOOSE]:ot[st.COMPARATOR],n=t.match(e);if(!n)throw new TypeError("Invalid comparator: "+t);this.operator=void 0!==n[1]?n[1]:"","="===this.operator&&(this.operator=""),n[2]?this.semver=new J(n[2],this.options.loose):this.semver=nt}toString(){return this.value}test(t){if(U("Comparator.test",t,this.options.loose),this.semver===nt||t===nt)return!0;if("string"==typeof t)try{t=new J(t,this.options)}catch(t){return!1}return et(t,this.operator,this.semver,this.options)}intersects(t,e){if(!(t instanceof rt))throw new TypeError("a Comparator is required");if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),""===this.operator)return""===this.value||new ct(t.value,e).test(this.value);if(""===t.operator)return""===t.value||new ct(this.value,e).test(t.semver);const n=!(">="!==this.operator&&">"!==this.operator||">="!==t.operator&&">"!==t.operator),r=!("<="!==this.operator&&"<"!==this.operator||"<="!==t.operator&&"<"!==t.operator),i=this.semver.version===t.semver.version,o=!(">="!==this.operator&&"<="!==this.operator||">="!==t.operator&&"<="!==t.operator),s=et(this.semver,"<",t.semver,e)&&(">="===this.operator||">"===this.operator)&&("<="===t.operator||"<"===t.operator),a=et(this.semver,">",t.semver,e)&&("<="===this.operator||"<"===this.operator)&&(">="===t.operator||">"===t.operator);return n||r||i&&o||s||a}}var it=rt;const{re:ot,t:st}=H;class at{constructor(t,e){if(e&&"object"==typeof e||(e={loose:!!e,includePrerelease:!1}),t instanceof at)return t.loose===!!e.loose&&t.includePrerelease===!!e.includePrerelease?t:new at(t.raw,e);if(t instanceof it)return this.raw=t.value,this.set=[[t]],this.format(),this;if(this.options=e,this.loose=!!e.loose,this.includePrerelease=!!e.includePrerelease,this.raw=t,this.set=t.split(/\s*\|\|\s*/).map((t=>this.parseRange(t.trim()))).filter((t=>t.length)),!this.set.length)throw new TypeError("Invalid SemVer Range: "+t);this.format()}format(){return this.range=this.set.map((t=>t.join(" ").trim())).join("||").trim(),this.range}toString(){return this.range}parseRange(t){const e=this.options.loose;t=t.trim();const n=e?ut[lt.HYPHENRANGELOOSE]:ut[lt.HYPHENRANGE];t=t.replace(n,kt(this.options.includePrerelease)),U("hyphen replace",t),t=t.replace(ut[lt.COMPARATORTRIM],ft),U("comparator trim",t,ut[lt.COMPARATORTRIM]),t=(t=(t=t.replace(ut[lt.TILDETRIM],pt)).replace(ut[lt.CARETTRIM],ht)).split(/\s+/).join(" ");const r=e?ut[lt.COMPARATORLOOSE]:ut[lt.COMPARATOR];return t.split(" ").map((t=>mt(t,this.options))).join(" ").split(/\s+/).map((t=>xt(t,this.options))).filter(this.options.loose?t=>!!t.match(r):()=>!0).map((t=>new it(t,this.options)))}intersects(t,e){if(!(t instanceof at))throw new TypeError("a Range is required");return this.set.some((n=>dt(n,e)&&t.set.some((t=>dt(t,e)&&n.every((n=>t.every((t=>n.intersects(t,e)))))))))}test(t){if(!t)return!1;if("string"==typeof t)try{t=new J(t,this.options)}catch(t){return!1}for(let e=0;e{let n=!0;const r=t.slice();let i=r.pop();for(;n&&r.length;)n=r.every((t=>i.intersects(t,e))),i=r.pop();return n},mt=(t,e)=>(U("comp",t,e),t=wt(t,e),U("caret",t),t=vt(t,e),U("tildes",t),t=Et(t,e),U("xrange",t),t=St(t,e),U("stars",t),t),gt=t=>!t||"x"===t.toLowerCase()||"*"===t,vt=(t,e)=>t.trim().split(/\s+/).map((t=>yt(t,e))).join(" "),yt=(t,e)=>{const n=e.loose?ut[lt.TILDELOOSE]:ut[lt.TILDE];return t.replace(n,((e,n,r,i,o)=>{let s;return U("tilde",t,e,n,r,i,o),gt(n)?s="":gt(r)?s=`>=${n}.0.0 <${+n+1}.0.0-0`:gt(i)?s=`>=${n}.${r}.0 <${n}.${+r+1}.0-0`:o?(U("replaceTilde pr",o),s=`>=${n}.${r}.${i}-${o} <${n}.${+r+1}.0-0`):s=`>=${n}.${r}.${i} <${n}.${+r+1}.0-0`,U("tilde return",s),s}))},wt=(t,e)=>t.trim().split(/\s+/).map((t=>bt(t,e))).join(" "),bt=(t,e)=>{U("caret",t,e);const n=e.loose?ut[lt.CARETLOOSE]:ut[lt.CARET],r=e.includePrerelease?"-0":"";return t.replace(n,((e,n,i,o,s)=>{let a;return U("caret",t,e,n,i,o,s),gt(n)?a="":gt(i)?a=`>=${n}.0.0${r} <${+n+1}.0.0-0`:gt(o)?a="0"===n?`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.0${r} <${+n+1}.0.0-0`:s?(U("replaceCaret pr",s),a="0"===n?"0"===i?`>=${n}.${i}.${o}-${s} <${n}.${i}.${+o+1}-0`:`>=${n}.${i}.${o}-${s} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${o}-${s} <${+n+1}.0.0-0`):(U("no pr"),a="0"===n?"0"===i?`>=${n}.${i}.${o}${r} <${n}.${i}.${+o+1}-0`:`>=${n}.${i}.${o}${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${o} <${+n+1}.0.0-0`),U("caret return",a),a}))},Et=(t,e)=>(U("replaceXRanges",t,e),t.split(/\s+/).map((t=>_t(t,e))).join(" ")),_t=(t,e)=>{t=t.trim();const n=e.loose?ut[lt.XRANGELOOSE]:ut[lt.XRANGE];return t.replace(n,((n,r,i,o,s,a)=>{U("xRange",t,n,r,i,o,s,a);const c=gt(i),u=c||gt(o),l=u||gt(s),f=l;return"="===r&&f&&(r=""),a=e.includePrerelease?"-0":"",c?n=">"===r||"<"===r?"<0.0.0-0":"*":r&&f?(u&&(o=0),s=0,">"===r?(r=">=",u?(i=+i+1,o=0,s=0):(o=+o+1,s=0)):"<="===r&&(r="<",u?i=+i+1:o=+o+1),"<"===r&&(a="-0"),n=`${r+i}.${o}.${s}${a}`):u?n=`>=${i}.0.0${a} <${+i+1}.0.0-0`:l&&(n=`>=${i}.${o}.0${a} <${i}.${+o+1}.0-0`),U("xRange return",n),n}))},St=(t,e)=>(U("replaceStars",t,e),t.trim().replace(ut[lt.STAR],"")),xt=(t,e)=>(U("replaceGTE0",t,e),t.trim().replace(ut[e.includePrerelease?lt.GTE0PRE:lt.GTE0],"")),kt=t=>(e,n,r,i,o,s,a,c,u,l,f,p,h)=>`${n=gt(r)?"":gt(i)?`>=${r}.0.0${t?"-0":""}`:gt(o)?`>=${r}.${i}.0${t?"-0":""}`:s?">="+n:`>=${n}${t?"-0":""}`} ${c=gt(u)?"":gt(l)?`<${+u+1}.0.0-0`:gt(f)?`<${u}.${+l+1}.0-0`:p?`<=${u}.${l}.${f}-${p}`:t?`<${u}.${l}.${+f+1}-0`:"<="+c}`.trim(),Tt=(t,e,n)=>{for(let n=0;n0){const r=t[n].semver;if(r.major===e.major&&r.minor===e.minor&&r.patch===e.patch)return!0}return!1}return!0};const It=/(.*?):.*/,At=/(.*?)#.*/;var Ct,Ot=!1;function Pt(){return Ot||(Ot=!0,Ct={},Ct=Promise.resolve(require("./prompt-afef23e0.85b28e82.js"))),Ct}var Nt,Lt=!1;function Rt(){return Lt||(Lt=!0,Nt={},Nt=Promise.resolve(require("./install-03586186.e5009dba.js"))),Nt}void 0===window.__steelbrain_package_deps&&(window.__steelbrain_package_deps=new Set),A=B,O.fs=A,C=async function(t,e=!0){N(t,"[Package-Deps] Package name is required");const n=await async function(t){const e=atom.packages.getLoadedPackage(t),n=e&&e.metadata["package-deps"];return Array.isArray(n)?(await Promise.all(n.map((async function(t){let e=null,n=t,r=null;const i=It.exec(t),o=At.exec(t);if(i?[,n,r]=i:o?[,n,e]=o:n=t,__steelbrain_package_deps.has(n))return null;const s=atom.packages.resolvePackagePath(n);if(s){if(!r)return null;const t=JSON.parse(await B.readFile(j.join(s,"package.json")));if(null!=t&&null!=t.version&&((t,e,n)=>{try{e=new ct(e,n)}catch(t){return!1}return e.test(t)})(t.version,">="+r))return null}return __steelbrain_package_deps.add(n),{name:n,url:e}})))).filter(Boolean):[]}(t);if(n.length){if(e){let e="Yes";if(await Promise.resolve().then((function(){return Pt()})).then((async({promptUser:r})=>{e=await r(t,n)})),"Yes"!==e)return}await Promise.resolve().then((function(){return Rt()})).then((async({performInstall:e})=>e(t,n)))}},O.installDependencies=C,k=C,I.install=k;var jt,Dt,Ft={};Dt={onCopy:"copy",onCut:"cut",onPaste:"paste",onCompositionEnd:"compositionend",onCompositionStart:"compositionstart",onCompositionUpdate:"compositionupdate",onKeyDown:"keydown",onKeyPress:"keypress",onKeyUp:"keyup",onFocus:"focus",onBlur:"blur",onChange:"change",onInput:"input",onSubmit:"submit",onClick:"click",onContextMenu:"contextmenu",onDoubleClick:"dblclick",onDrag:"drag",onDragEnd:"dragend",onDragEnter:"dragenter",onDragExit:"dragexit",onDragLeave:"dragleave",onDragOver:"dragover",onDragStart:"dragstart",onDrop:"drop",onMouseDown:"mousedown",onMouseEnter:"mouseenter",onMouseLeave:"mouseleave",onMouseMove:"mousemove",onMouseOut:"mouseout",onMouseOver:"mouseover",onMouseUp:"mouseup",onSelect:"select",onTouchCancel:"touchcancel",onTouchEnd:"touchend",onTouchMove:"touchmove",onTouchStart:"touchstart",onScroll:"scroll",onWheel:"wheel",onAbort:"abort",onCanPlay:"canplay",onCanPlayThrough:"canplaythrough",onDurationChange:"durationchange",onEmptied:"emptied",onEncrypted:"encrypted",onEnded:"ended",onError:"error",onLoadedData:"loadeddata",onLoadedMetadata:"loadedmetadata",onLoadStart:"loadstart",onPause:"pause",onPlay:"play",onPlaying:"playing",onProgress:"progress",onRateChange:"ratechange",onSeeked:"seeked",onSeeking:"seeking",onStalled:"stalled",onSuspend:"suspend",onTimeUpdate:"timeupdate",onVolumeChange:"volumechange",onWaiting:"waiting",onLoad:"load",onAnimationStart:"animationstart",onAnimationEnd:"animationend",onAnimationIteration:"animationiteration",onTransitionEnd:"transitionend"};var Mt={};function $t(t,e,...n){let r=[];for(let t=0;t$t(t,e,...n);for(const t of Mt)$t[t]=(e,...n)=>$t(t,e,...n);jt=$t;var zt,Ut={},Ht={};Ht=new Map([["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["className","class"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["panose1","panose-1"],["paintOrder","paint-order"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xHeight","x-height"]]);var qt;function Gt(t,e,n,r,i){if(n)for(var o in n)"ref"!==o&&"on"!==o&&(o in Dt||i&&o in i||("dataset"===o?Gt(t.dataset,null,n&&n.dataset,null,null):"innerHTML"!==o&&e&&Mt.has(e.tag)?t.removeAttribute(Ht.get(o)||o):(t[o]="",delete t[o])));if(i)for(var o in i)if("ref"!==o&&"on"!==o&&!(o in Dt)){var s=n&&n[o],a=i[o];"dataset"===o?Vt(t.dataset,s,a,!1):"style"===o&&"string"!=typeof a?("string"==typeof s&&(t.style="",s=null),Vt(t.style,s,a,!0)):"attributes"===o?Wt(t,s,a):a!==s&&("innerHTML"!==o&&r&&Mt.has(r.tag)?t.setAttribute(Ht.get(o)||o,a):r&&"input"===r.tag&&"value"===o&&t[o]===a||(t[o]=a))}}function Vt(t,e,n,r){if(e)for(var i in e)n&&i in n||(r?t[i]="":delete t[i]);if(n)for(var i in n){const r=e&&e[i],o=n[i];o!==r&&(t[i]=o)}}function Wt(t,e,n){if(e)for(var r in e)n&&r in n||t.removeAttribute(r);if(n)for(var r in n){const i=e&&e[r],o=n[r];o!==i&&t.setAttribute(r,o)}}function Xt(t,e){let n;if(null!=t.text)n=document.createTextNode(t.text);else{const{tag:r,children:i}=t;let{props:o,context:s}=t;if(s&&(e={refs:s.refs,listenerContext:s}),"function"==typeof r){let s;o&&o.ref&&(s=o.ref);const a=new r(o||{},i);t.component=a,n=a.element,"function"==typeof s?s(a):e&&e.refs&&s&&(e.refs[s]=a)}else Mt.has(r)?(n=document.createElementNS("http://www.w3.org/2000/svg",r),i&&Kt(n,i,e),o&&zt(n,null,t,e)):(n=document.createElement(r),i&&Kt(n,i,e),o&&zt(n,null,t,e))}return t.domNode=n,n}function Kt(t,e,n){for(let r=0;r0?(i=Jt.pop()).clear():i=new Map,re(i,e,o,s));var h=ne(f),d=h?i.get(h):null;if(null==d)t.insertBefore(Ut(f,r),a.domNode),f=n[++u];else{var m=e[d];Yt(m,f,r),e[d]=void 0,t.insertBefore(m.domNode,a.domNode),f=n[++u]}}else c=e[--s];else a=e[++o];if(o>s){var g=n[l+1]?n[l+1].domNode:null;for(let e=u;e<=l;e++)t.insertBefore(Ut(n[e],r),g)}else if(u>l)for(let t=o;t<=s;t++){var v=e[t];v&&te(v,r&&r.refs)}i&&Jt.push(i)}(r,t.children,e.children,n),zt(r,t,e,n),i=r),e.domNode=i,i!==r&&r.parentNode&&r.parentNode.replaceChild(i,r),i}{const i=r.parentNode,o=r.nextSibling;te(t,n&&n.refs);const s=Ut(e,n);return i&&i.insertBefore(s,o),e.domNode=s,s}}let Jt=[new Map,new Map,new Map,new Map];function te(t,e,n=!0){const{domNode:r,props:i,children:o,component:s}=t,a=i&&i.ref;if(s)"function"==typeof a?a(null):e&&a&&e[a]===s&&delete e[a],s.destroy&&s.destroy();else if("function"==typeof a?a(null):e&&a&&e[a]===r&&delete e[a],o)for(let t=0;t{this.resolveNextUpdatePromise=t}))),this.nextUpdatePromise}performUpdates(){for(;this.updateRequests.length>0;)this.updateRequests.shift()();for(this.pendingAnimationFrame=null;this.readRequests.length>0;)this.readRequests.shift()();if(this.nextUpdatePromise){let t=this.resolveNextUpdatePromise;this.nextUpdatePromise=null,this.resolveNextUpdatePromise=null,t()}}};let oe=null;var se=function(){return oe||(oe=new ie),oe};const ae=new WeakSet;let ce=0,ue=0;function le(t){return null!=t&&!1!==t}function fe(t,e){e.context=t,e.ambiguous&&(e.ambiguous.forEach((e=>{e.context=t})),delete e.ambiguous)}function pe(t,e=!0){if(!le(t.virtualNode))throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a valid virtualNode. Perhaps this component was never initialized?");if(null==t.element)throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a DOM element. Perhaps this component was never initialized?");let n=t.render();if(!le(n)){const e=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+n+" returned from render()"+e)}fe(t,n),ce++;let r=t.virtualNode,i=t.element,o=Zt(r,n,{refs:t.refs,listenerContext:t});if(t.virtualNode=n,o!==i&&!e)throw new Error("The root node type changed on update, but the update was performed with the replaceNode option set to false");t.element=o,"function"==typeof t.writeAfterUpdate&&t.writeAfterUpdate(),"function"==typeof t.readAfterUpdate&&se().readDocument((function(){t.readAfterUpdate()})),ce--}function he(t,e=!0){ue++,de(t.virtualNode),1===ue&&e&&t.element.remove(),ue--}function de(t){t.component&&"function"==typeof t.component.destroy?t.component.destroy():t.children&&t.children.forEach(de)}Qt={initialize:function(t){if("function"!=typeof t.update)throw new Error("Etch components must implement `update(props, children)`.");let e=t.render();if(!le(e)){let n=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+e+" returned from render()"+n)}fe(t,e),t.refs={},t.virtualNode=e,t.element=Ut(t.virtualNode,{refs:t.refs,listenerContext:t})},update:function(t,e=!0){if(ce>0)return pe(t,e),Promise.resolve();let n=se();return ae.has(t)||(ae.add(t),n.updateDocument((function(){ae.delete(t),pe(t,e)}))),n.getNextUpdatePromise()},updateSync:pe,destroy:function(t,e=!0){if(ce>0||ue>0)return he(t,e),Promise.resolve();let n=se();return n.updateDocument((function(){he(t,e)})),n.getNextUpdatePromise()},destroySync:he};const{initialize:me,update:ge,updateSync:ve,destroy:ye,destroySync:we}=Qt;function be(t){void 0!==t&&("function"==typeof t.catch?t.catch((t=>{atom.notifications.addFatalError("Atom-Typescript error: "+t.message,{detail:t.toString(),stack:t.stack,dismissable:!0})})):atom.notifications.addFatalError("Atom-Typescript: non-promise passed to handlePromise. Please report this.",{stack:(new Error).stack,dismissable:!0}))}Ft={dom:jt,render:Ut,initialize:me,update:ge,updateSync:ve,destroy:ye,destroySync:we,setScheduler:function(t){oe=t},getScheduler:se};var Ee=function(){var t=this,e={exports:this};return function(){var n,r="Expected a function",i="__lodash_hash_undefined__",o="__lodash_placeholder__",s=16,a=32,c=64,u=128,l=256,f=1/0,p=9007199254740991,h=NaN,d=4294967295,m=[["ary",u],["bind",1],["bindKey",2],["curry",8],["curryRight",s],["flip",512],["partial",a],["partialRight",c],["rearg",l]],g="[object Arguments]",v="[object Array]",y="[object Boolean]",w="[object Date]",b="[object Error]",E="[object Function]",_="[object GeneratorFunction]",S="[object Map]",x="[object Number]",k="[object Object]",I="[object Promise]",A="[object RegExp]",C="[object Set]",O="[object String]",P="[object Symbol]",N="[object WeakMap]",L="[object ArrayBuffer]",R="[object DataView]",j="[object Float32Array]",D="[object Float64Array]",F="[object Int8Array]",M="[object Int16Array]",$="[object Int32Array]",B="[object Uint8Array]",z="[object Uint8ClampedArray]",U="[object Uint16Array]",H="[object Uint32Array]",q=/\b__p \+= '';/g,G=/\b(__p \+=) '' \+/g,V=/(__e\(.*?\)|\b__t\)) \+\n'';/g,W=/&(?:amp|lt|gt|quot|#39);/g,X=/[&<>"']/g,K=RegExp(W.source),Q=RegExp(X.source),Z=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,J=/<%=([\s\S]+?)%>/g,tt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,et=/^\w*$/,nt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rt=/[\\^$.*+?()[\]{}|]/g,it=RegExp(rt.source),ot=/^\s+|\s+$/g,st=/^\s+/,at=/\s+$/,ct=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ut=/\{\n\/\* \[wrapped with (.+)\] \*/,lt=/,? & /,ft=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,pt=/\\(\\)?/g,ht=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,dt=/\w*$/,mt=/^[-+]0x[0-9a-f]+$/i,gt=/^0b[01]+$/i,vt=/^\[object .+?Constructor\]$/,yt=/^0o[0-7]+$/i,wt=/^(?:0|[1-9]\d*)$/,bt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Et=/($^)/,_t=/['\n\r\u2028\u2029\\]/g,St="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",xt="\\u2700-\\u27bf",kt="a-z\\xdf-\\xf6\\xf8-\\xff",Tt="A-Z\\xc0-\\xd6\\xd8-\\xde",It="\\ufe0e\\ufe0f",At="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Ct="['’]",Ot="[\\ud800-\\udfff]",Pt="["+At+"]",Nt="["+St+"]",Lt="\\d+",Rt="[\\u2700-\\u27bf]",jt="["+kt+"]",Dt="[^\\ud800-\\udfff"+At+Lt+xt+kt+Tt+"]",Ft="\\ud83c[\\udffb-\\udfff]",Mt="[^\\ud800-\\udfff]",$t="(?:\\ud83c[\\udde6-\\uddff]){2}",Bt="[\\ud800-\\udbff][\\udc00-\\udfff]",zt="["+Tt+"]",Ut="(?:"+jt+"|"+Dt+")",Ht="(?:"+zt+"|"+Dt+")",qt="(?:['’](?:d|ll|m|re|s|t|ve))?",Gt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Vt="(?:"+Nt+"|"+Ft+")"+"?",Wt="[\\ufe0e\\ufe0f]?",Xt=Wt+Vt+("(?:\\u200d(?:"+[Mt,$t,Bt].join("|")+")"+Wt+Vt+")*"),Kt="(?:"+[Rt,$t,Bt].join("|")+")"+Xt,Qt="(?:"+[Mt+Nt+"?",Nt,$t,Bt,Ot].join("|")+")",Zt=RegExp(Ct,"g"),Yt=RegExp(Nt,"g"),Jt=RegExp(Ft+"(?="+Ft+")|"+Qt+Xt,"g"),te=RegExp([zt+"?"+jt+"+"+qt+"(?="+[Pt,zt,"$"].join("|")+")",Ht+"+"+Gt+"(?="+[Pt,zt+Ut,"$"].join("|")+")",zt+"?"+Ut+"+"+qt,zt+"+"+Gt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Lt,Kt].join("|"),"g"),ee=RegExp("[\\u200d\\ud800-\\udfff"+St+It+"]"),ne=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,re=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ie=-1,oe={};oe[j]=oe[D]=oe[F]=oe[M]=oe[$]=oe[B]=oe[z]=oe[U]=oe[H]=!0,oe[g]=oe[v]=oe[L]=oe[y]=oe[R]=oe[w]=oe[b]=oe[E]=oe[S]=oe[x]=oe[k]=oe[A]=oe[C]=oe[O]=oe[N]=!1;var se={};se[g]=se[v]=se[L]=se[R]=se[y]=se[w]=se[j]=se[D]=se[F]=se[M]=se[$]=se[S]=se[x]=se[k]=se[A]=se[C]=se[O]=se[P]=se[B]=se[z]=se[U]=se[H]=!0,se[b]=se[E]=se[N]=!1;var ae={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ce=parseFloat,ue=parseInt,le="object"==typeof T&&T&&T.Object===Object&&T,fe="object"==typeof self&&self&&self.Object===Object&&self,pe=le||fe||Function("return this")(),he="object"==typeof t&&t&&!t.nodeType&&t,de=he&&"object"==typeof e&&e&&!e.nodeType&&e,me=de&&de.exports===he,ge=me&&le.process,ve=function(){try{var t=de&&de.require&&de.require("util").types;return t||ge&&ge.binding&&ge.binding("util")}catch(t){}}(),ye=ve&&ve.isArrayBuffer,we=ve&&ve.isDate,be=ve&&ve.isMap,Ee=ve&&ve.isRegExp,_e=ve&&ve.isSet,Se=ve&&ve.isTypedArray;function xe(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function ke(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function Pe(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function Je(t,e){for(var n=t.length;n--&&Be(e,t[n],0)>-1;);return n}function tn(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}var en=Ge({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),nn=Ge({"&":"&","<":"<",">":">",'"':""","'":"'"});function rn(t){return"\\"+ae[t]}function on(t){return ee.test(t)}function sn(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function an(t,e){return function(n){return t(e(n))}}function cn(t,e){for(var n=-1,r=t.length,i=0,s=[];++n",""":'"',"'":"'"});var dn=function t(e){var T,St=(e=null==e?pe:dn.defaults(pe.Object(),e,dn.pick(pe,re))).Array,xt=e.Date,kt=e.Error,Tt=e.Function,It=e.Math,At=e.Object,Ct=e.RegExp,Ot=e.String,Pt=e.TypeError,Nt=St.prototype,Lt=Tt.prototype,Rt=At.prototype,jt=e["__core-js_shared__"],Dt=Lt.toString,Ft=Rt.hasOwnProperty,Mt=0,$t=(T=/[^.]+$/.exec(jt&&jt.keys&&jt.keys.IE_PROTO||""))?"Symbol(src)_1."+T:"",Bt=Rt.toString,zt=Dt.call(At),Ut=pe._,Ht=Ct("^"+Dt.call(Ft).replace(rt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),qt=me?e.Buffer:n,Gt=e.Symbol,Vt=e.Uint8Array,Wt=qt?qt.allocUnsafe:n,Xt=an(At.getPrototypeOf,At),Kt=At.create,Qt=Rt.propertyIsEnumerable,Jt=Nt.splice,ee=Gt?Gt.isConcatSpreadable:n,ae=Gt?Gt.iterator:n,le=Gt?Gt.toStringTag:n,fe=function(){try{var t=po(At,"defineProperty");return t({},"",{}),t}catch(t){}}(),he=e.clearTimeout!==pe.clearTimeout&&e.clearTimeout,de=xt&&xt.now!==pe.Date.now&&xt.now,ge=e.setTimeout!==pe.setTimeout&&e.setTimeout,ve=It.ceil,Fe=It.floor,Ge=At.getOwnPropertySymbols,mn=qt?qt.isBuffer:n,gn=e.isFinite,vn=Nt.join,yn=an(At.keys,At),wn=It.max,bn=It.min,En=xt.now,_n=e.parseInt,Sn=It.random,xn=Nt.reverse,kn=po(e,"DataView"),Tn=po(e,"Map"),In=po(e,"Promise"),An=po(e,"Set"),Cn=po(e,"WeakMap"),On=po(At,"create"),Pn=Cn&&new Cn,Nn={},Ln=Bo(kn),Rn=Bo(Tn),jn=Bo(In),Dn=Bo(An),Fn=Bo(Cn),Mn=Gt?Gt.prototype:n,$n=Mn?Mn.valueOf:n,Bn=Mn?Mn.toString:n;function zn(t){if(ra(t)&&!Vs(t)&&!(t instanceof Gn)){if(t instanceof qn)return t;if(Ft.call(t,"__wrapped__"))return zo(t)}return new qn(t)}var Un=function(){function t(){}return function(e){if(!na(e))return{};if(Kt)return Kt(e);t.prototype=e;var r=new t;return t.prototype=n,r}}();function Hn(){}function qn(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=n}function Gn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=d,this.__views__=[]}function Vn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function ur(t,e,r,i,o,s){var a,c=1&e,u=2&e,l=4&e;if(r&&(a=o?r(t,i,o,s):r(t)),a!==n)return a;if(!na(t))return t;var f=Vs(t);if(f){if(a=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&Ft.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!c)return Oi(t,a)}else{var p=go(t),h=p==E||p==_;if(Qs(t))return xi(t,c);if(p==k||p==g||h&&!o){if(a=u||h?{}:yo(t),!c)return u?function(t,e){return Pi(t,mo(t),e)}(t,function(t,e){return t&&Pi(e,Ra(e),t)}(a,t)):function(t,e){return Pi(t,ho(t),e)}(t,or(a,t))}else{if(!se[p])return o?t:{};a=function(t,e,n){var r=t.constructor;switch(e){case L:return ki(t);case y:case w:return new r(+t);case R:return function(t,e){var n=e?ki(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case j:case D:case F:case M:case $:case B:case z:case U:case H:return Ti(t,n);case S:return new r;case x:case O:return new r(t);case A:return function(t){var e=new t.constructor(t.source,dt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case C:return new r;case P:return i=t,$n?At($n.call(i)):{}}var i}(t,p,c)}}s||(s=new Qn);var d=s.get(t);if(d)return d;s.set(t,a),ca(t)?t.forEach((function(n){a.add(ur(n,e,r,n,t,s))})):ia(t)&&t.forEach((function(n,i){a.set(i,ur(n,e,r,i,t,s))}));var m=f?n:(l?u?oo:io:u?Ra:La)(t);return Te(m||t,(function(n,i){m&&(n=t[i=n]),nr(a,i,ur(n,e,r,i,t,s))})),a}function lr(t,e,r){var i=r.length;if(null==t)return!i;for(t=At(t);i--;){var o=r[i],s=e[o],a=t[o];if(a===n&&!(o in t)||!s(a))return!1}return!0}function fr(t,e,i){if("function"!=typeof t)throw new Pt(r);return Lo((function(){t.apply(n,i)}),e)}function pr(t,e,n,r){var i=-1,o=Oe,s=!0,a=t.length,c=[],u=e.length;if(!a)return c;n&&(e=Ne(e,Ke(n))),r?(o=Pe,s=!1):e.length>=200&&(o=Ze,s=!1,e=new Kn(e));t:for(;++i-1},Wn.prototype.set=function(t,e){var n=this.__data__,r=rr(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},Xn.prototype.clear=function(){this.size=0,this.__data__={hash:new Vn,map:new(Tn||Wn),string:new Vn}},Xn.prototype.delete=function(t){var e=lo(this,t).delete(t);return this.size-=e?1:0,e},Xn.prototype.get=function(t){return lo(this,t).get(t)},Xn.prototype.has=function(t){return lo(this,t).has(t)},Xn.prototype.set=function(t,e){var n=lo(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},Kn.prototype.add=Kn.prototype.push=function(t){return this.__data__.set(t,i),this},Kn.prototype.has=function(t){return this.__data__.has(t)},Qn.prototype.clear=function(){this.__data__=new Wn,this.size=0},Qn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Qn.prototype.get=function(t){return this.__data__.get(t)},Qn.prototype.has=function(t){return this.__data__.has(t)},Qn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Wn){var r=n.__data__;if(!Tn||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new Xn(r)}return n.set(t,e),this.size=n.size,this};var hr=Ri(Er),dr=Ri(_r,!0);function mr(t,e){var n=!0;return hr(t,(function(t,r,i){return n=!!e(t,r,i)})),n}function gr(t,e,r){for(var i=-1,o=t.length;++i0&&n(a)?e>1?yr(a,e-1,n,r,i):Le(i,a):r||(i[i.length]=a)}return i}var wr=ji(),br=ji(!0);function Er(t,e){return t&&wr(t,e,La)}function _r(t,e){return t&&br(t,e,La)}function Sr(t,e){return Ce(e,(function(e){return Js(t[e])}))}function xr(t,e){for(var r=0,i=(e=bi(e,t)).length;null!=t&&re}function Ar(t,e){return null!=t&&Ft.call(t,e)}function Cr(t,e){return null!=t&&e in At(t)}function Or(t,e,r){for(var i=r?Pe:Oe,o=t[0].length,s=t.length,a=s,c=St(s),u=1/0,l=[];a--;){var f=t[a];a&&e&&(f=Ne(f,Ke(e))),u=bn(f.length,u),c[a]=!r&&(e||o>=120&&f.length>=120)?new Kn(a&&f):n}f=t[0];var p=-1,h=c[0];t:for(;++p=a?c:c*("desc"==n[r]?-1:1)}return t.index-e.index}(t,e,n)}))}function Vr(t,e,n){for(var r=-1,i=e.length,o={};++r-1;)a!==t&&Jt.call(a,c,1),Jt.call(t,c,1);return t}function Xr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;bo(i)?Jt.call(t,i,1):pi(t,i)}}return t}function Kr(t,e){return t+Fe(Sn()*(e-t+1))}function Qr(t,e){var n="";if(!t||e<1||e>p)return n;do{e%2&&(n+=t),(e=Fe(e/2))&&(t+=t)}while(e);return n}function Zr(t,e){return Ro(Ao(t,e,oc),t+"")}function Yr(t){return Yn(Ua(t))}function Jr(t,e){var n=Ua(t);return Fo(n,cr(e,0,n.length))}function ti(t,e,r,i){if(!na(t))return t;for(var o=-1,s=(e=bi(e,t)).length,a=s-1,c=t;null!=c&&++oi?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=St(i);++r>>1,s=t[o];null!==s&&!la(s)&&(n?s<=e:s=200){var u=e?null:Qi(t);if(u)return un(u);s=!1,i=Ze,c=new Kn}else c=e?[]:a;t:for(;++r=i?t:ii(t,e,r)}var Si=he||function(t){return pe.clearTimeout(t)};function xi(t,e){if(e)return t.slice();var n=t.length,r=Wt?Wt(n):new t.constructor(n);return t.copy(r),r}function ki(t){var e=new t.constructor(t.byteLength);return new Vt(e).set(new Vt(t)),e}function Ti(t,e){var n=e?ki(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Ii(t,e){if(t!==e){var r=t!==n,i=null===t,o=t==t,s=la(t),a=e!==n,c=null===e,u=e==e,l=la(e);if(!c&&!l&&!s&&t>e||s&&a&&u&&!c&&!l||i&&a&&u||!r&&u||!o)return 1;if(!i&&!s&&!l&&t1?r[o-1]:n,a=o>2?r[2]:n;for(s=t.length>3&&"function"==typeof s?(o--,s):n,a&&Eo(r[0],r[1],a)&&(s=o<3?n:s,o=1),e=At(e);++i-1?o[s?e[a]:a]:n}}function Bi(t){return ro((function(e){var i=e.length,o=i,s=qn.prototype.thru;for(t&&e.reverse();o--;){var a=e[o];if("function"!=typeof a)throw new Pt(r);if(s&&!c&&"wrapper"==ao(a))var c=new qn([],!0)}for(o=c?o:i;++o1&&y.reverse(),p&&lc))return!1;var l=s.get(t),f=s.get(e);if(l&&f)return l==e&&f==t;var p=-1,h=!0,d=2&r?new Kn:n;for(s.set(t,e),s.set(e,t);++p-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(ct,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return Te(m,(function(n){var r="_."+n[0];e&n[1]&&!Oe(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match(ut);return e?e[1].split(lt):[]}(r),n)))}function Do(t){var e=0,r=0;return function(){var i=En(),o=16-(i-r);if(r=i,o>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(n,arguments)}}function Fo(t,e){var r=-1,i=t.length,o=i-1;for(e=e===n?i:e;++r1?t[e-1]:n;return r="function"==typeof r?(t.pop(),r):n,as(t,r)}));function ds(t){var e=zn(t);return e.__chain__=!0,e}function ms(t,e){return e(t)}var gs=ro((function(t){var e=t.length,r=e?t[0]:0,i=this.__wrapped__,o=function(e){return ar(e,t)};return!(e>1||this.__actions__.length)&&i instanceof Gn&&bo(r)?((i=i.slice(r,+r+(e?1:0))).__actions__.push({func:ms,args:[o],thisArg:n}),new qn(i,this.__chain__).thru((function(t){return e&&!t.length&&t.push(n),t}))):this.thru(o)}));var vs=Ni((function(t,e,n){Ft.call(t,n)?++t[n]:sr(t,n,1)}));var ys=$i(Go),ws=$i(Vo);function bs(t,e){return(Vs(t)?Te:hr)(t,uo(e,3))}function Es(t,e){return(Vs(t)?Ie:dr)(t,uo(e,3))}var _s=Ni((function(t,e,n){Ft.call(t,n)?t[n].push(e):sr(t,n,[e])}));var Ss=Zr((function(t,e,n){var r=-1,i="function"==typeof e,o=Xs(t)?St(t.length):[];return hr(t,(function(t){o[++r]=i?xe(e,t,n):Pr(t,e,n)})),o})),xs=Ni((function(t,e,n){sr(t,n,e)}));function ks(t,e){return(Vs(t)?Ne:Br)(t,uo(e,3))}var Ts=Ni((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var Is=Zr((function(t,e){if(null==t)return[];var n=e.length;return n>1&&Eo(t,e[0],e[1])?e=[]:n>2&&Eo(e[0],e[1],e[2])&&(e=[e[0]]),Gr(t,yr(e,1),[])})),As=de||function(){return pe.Date.now()};function Cs(t,e,r){return e=r?n:e,e=t&&null==e?t.length:e,Yi(t,u,n,n,n,n,e)}function Os(t,e){var i;if("function"!=typeof e)throw new Pt(r);return t=ga(t),function(){return--t>0&&(i=e.apply(this,arguments)),t<=1&&(e=n),i}}var Ps=Zr((function(t,e,n){var r=1;if(n.length){var i=cn(n,co(Ps));r|=a}return Yi(t,r,e,n,i)})),Ns=Zr((function(t,e,n){var r=3;if(n.length){var i=cn(n,co(Ns));r|=a}return Yi(e,r,t,n,i)}));function Ls(t,e,i){var o,s,a,c,u,l,f=0,p=!1,h=!1,d=!0;if("function"!=typeof t)throw new Pt(r);function m(e){var r=o,i=s;return o=s=n,f=e,c=t.apply(i,r)}function g(t){return f=t,u=Lo(y,e),p?m(t):c}function v(t){var r=t-l;return l===n||r>=e||r<0||h&&t-f>=a}function y(){var t=As();if(v(t))return w(t);u=Lo(y,function(t){var n=e-(t-l);return h?bn(n,a-(t-f)):n}(t))}function w(t){return u=n,d&&o?m(t):(o=s=n,c)}function b(){var t=As(),r=v(t);if(o=arguments,s=this,l=t,r){if(u===n)return g(l);if(h)return Si(u),u=Lo(y,e),m(l)}return u===n&&(u=Lo(y,e)),c}return e=ya(e)||0,na(i)&&(p=!!i.leading,a=(h="maxWait"in i)?wn(ya(i.maxWait)||0,e):a,d="trailing"in i?!!i.trailing:d),b.cancel=function(){u!==n&&Si(u),f=0,o=l=s=u=n},b.flush=function(){return u===n?c:w(As())},b}var Rs=Zr((function(t,e){return fr(t,1,e)})),js=Zr((function(t,e,n){return fr(t,ya(e)||0,n)}));function Ds(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new Pt(r);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=t.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(Ds.Cache||Xn),n}function Fs(t){if("function"!=typeof t)throw new Pt(r);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ds.Cache=Xn;var Ms=Ei((function(t,e){var n=(e=1==e.length&&Vs(e[0])?Ne(e[0],Ke(uo())):Ne(yr(e,1),Ke(uo()))).length;return Zr((function(r){for(var i=-1,o=bn(r.length,n);++i=e})),Gs=Nr(function(){return arguments}())?Nr:function(t){return ra(t)&&Ft.call(t,"callee")&&!Qt.call(t,"callee")},Vs=St.isArray,Ws=ye?Ke(ye):function(t){return ra(t)&&Tr(t)==L};function Xs(t){return null!=t&&ea(t.length)&&!Js(t)}function Ks(t){return ra(t)&&Xs(t)}var Qs=mn||yc,Zs=we?Ke(we):function(t){return ra(t)&&Tr(t)==w};function Ys(t){if(!ra(t))return!1;var e=Tr(t);return e==b||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!sa(t)}function Js(t){if(!na(t))return!1;var e=Tr(t);return e==E||e==_||"[object AsyncFunction]"==e||"[object Proxy]"==e}function ta(t){return"number"==typeof t&&t==ga(t)}function ea(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=p}function na(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ra(t){return null!=t&&"object"==typeof t}var ia=be?Ke(be):function(t){return ra(t)&&go(t)==S};function oa(t){return"number"==typeof t||ra(t)&&Tr(t)==x}function sa(t){if(!ra(t)||Tr(t)!=k)return!1;var e=Xt(t);if(null===e)return!0;var n=Ft.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Dt.call(n)==zt}var aa=Ee?Ke(Ee):function(t){return ra(t)&&Tr(t)==A};var ca=_e?Ke(_e):function(t){return ra(t)&&go(t)==C};function ua(t){return"string"==typeof t||!Vs(t)&&ra(t)&&Tr(t)==O}function la(t){return"symbol"==typeof t||ra(t)&&Tr(t)==P}var fa=Se?Ke(Se):function(t){return ra(t)&&ea(t.length)&&!!oe[Tr(t)]};var pa=Wi($r),ha=Wi((function(t,e){return t<=e}));function da(t){if(!t)return[];if(Xs(t))return ua(t)?pn(t):Oi(t);if(ae&&t[ae])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[ae]());var e=go(t);return(e==S?sn:e==C?un:Ua)(t)}function ma(t){return t?(t=ya(t))===f||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function ga(t){var e=ma(t),n=e%1;return e==e?n?e-n:e:0}function va(t){return t?cr(ga(t),0,d):0}function ya(t){if("number"==typeof t)return t;if(la(t))return h;if(na(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=na(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(ot,"");var n=gt.test(t);return n||yt.test(t)?ue(t.slice(2),n?2:8):mt.test(t)?h:+t}function wa(t){return Pi(t,Ra(t))}function ba(t){return null==t?"":li(t)}var Ea=Li((function(t,e){if(ko(e)||Xs(e))Pi(e,La(e),t);else for(var n in e)Ft.call(e,n)&&nr(t,n,e[n])})),_a=Li((function(t,e){Pi(e,Ra(e),t)})),Sa=Li((function(t,e,n,r){Pi(e,Ra(e),t,r)})),xa=Li((function(t,e,n,r){Pi(e,La(e),t,r)})),ka=ro(ar);var Ta=Zr((function(t,e){t=At(t);var r=-1,i=e.length,o=i>2?e[2]:n;for(o&&Eo(e[0],e[1],o)&&(i=1);++r1),e})),Pi(t,oo(t),n),r&&(n=ur(n,7,eo));for(var i=e.length;i--;)pi(n,e[i]);return n}));var Ma=ro((function(t,e){return null==t?{}:function(t,e){return Vr(t,e,(function(e,n){return Ca(t,n)}))}(t,e)}));function $a(t,e){if(null==t)return{};var n=Ne(oo(t),(function(t){return[t]}));return e=uo(e),Vr(t,n,(function(t,n){return e(t,n[0])}))}var Ba=Zi(La),za=Zi(Ra);function Ua(t){return null==t?[]:Qe(t,La(t))}var Ha=Fi((function(t,e,n){return e=e.toLowerCase(),t+(n?qa(e):e)}));function qa(t){return Ya(ba(t).toLowerCase())}function Ga(t){return(t=ba(t))&&t.replace(bt,en).replace(Yt,"")}var Va=Fi((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Wa=Fi((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Xa=Di("toLowerCase");var Ka=Fi((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var Qa=Fi((function(t,e,n){return t+(n?" ":"")+Ya(e)}));var Za=Fi((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),Ya=Di("toUpperCase");function Ja(t,e,r){return t=ba(t),(e=r?n:e)===n?function(t){return ne.test(t)}(t)?function(t){return t.match(te)||[]}(t):function(t){return t.match(ft)||[]}(t):t.match(e)||[]}var tc=Zr((function(t,e){try{return xe(t,n,e)}catch(t){return Ys(t)?t:new kt(t)}})),ec=ro((function(t,e){return Te(e,(function(e){e=$o(e),sr(t,e,Ps(t[e],t))})),t}));function nc(t){return function(){return t}}var rc=Bi(),ic=Bi(!0);function oc(t){return t}function sc(t){return Dr("function"==typeof t?t:ur(t,1))}var ac=Zr((function(t,e){return function(n){return Pr(n,t,e)}})),cc=Zr((function(t,e){return function(n){return Pr(t,n,e)}}));function uc(t,e,n){var r=La(e),i=Sr(e,r);null!=n||na(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=Sr(e,La(e)));var o=!(na(n)&&"chain"in n&&!n.chain),s=Js(t);return Te(i,(function(n){var r=e[n];t[n]=r,s&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=Oi(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,Le([this.value()],arguments))})})),t}function lc(){}var fc=qi(Ne),pc=qi(Ae),hc=qi(De);function dc(t){return _o(t)?qe($o(t)):function(t){return function(e){return xr(e,t)}}(t)}var mc=Vi(),gc=Vi(!0);function vc(){return[]}function yc(){return!1}var wc=Hi((function(t,e){return t+e}),0),bc=Ki("ceil"),Ec=Hi((function(t,e){return t/e}),1),_c=Ki("floor");var Sc=Hi((function(t,e){return t*e}),1),xc=Ki("round"),kc=Hi((function(t,e){return t-e}),0);return zn.after=function(t,e){if("function"!=typeof e)throw new Pt(r);return t=ga(t),function(){if(--t<1)return e.apply(this,arguments)}},zn.ary=Cs,zn.assign=Ea,zn.assignIn=_a,zn.assignInWith=Sa,zn.assignWith=xa,zn.at=ka,zn.before=Os,zn.bind=Ps,zn.bindAll=ec,zn.bindKey=Ns,zn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Vs(t)?t:[t]},zn.chain=ds,zn.chunk=function(t,e,r){e=(r?Eo(t,e,r):e===n)?1:wn(ga(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var o=0,s=0,a=St(ve(i/e));oo?0:o+r),(i=i===n||i>o?o:ga(i))<0&&(i+=o),i=r>i?0:va(i);r>>0)?(t=ba(t))&&("string"==typeof e||null!=e&&!aa(e))&&!(e=li(e))&&on(t)?_i(pn(t),0,r):t.split(e,r):[]},zn.spread=function(t,e){if("function"!=typeof t)throw new Pt(r);return e=null==e?0:wn(ga(e),0),Zr((function(n){var r=n[e],i=_i(n,0,e);return r&&Le(i,r),xe(t,this,i)}))},zn.tail=function(t){var e=null==t?0:t.length;return e?ii(t,1,e):[]},zn.take=function(t,e,r){return t&&t.length?ii(t,0,(e=r||e===n?1:ga(e))<0?0:e):[]},zn.takeRight=function(t,e,r){var i=null==t?0:t.length;return i?ii(t,(e=i-(e=r||e===n?1:ga(e)))<0?0:e,i):[]},zn.takeRightWhile=function(t,e){return t&&t.length?di(t,uo(e,3),!1,!0):[]},zn.takeWhile=function(t,e){return t&&t.length?di(t,uo(e,3)):[]},zn.tap=function(t,e){return e(t),t},zn.throttle=function(t,e,n){var i=!0,o=!0;if("function"!=typeof t)throw new Pt(r);return na(n)&&(i="leading"in n?!!n.leading:i,o="trailing"in n?!!n.trailing:o),Ls(t,e,{leading:i,maxWait:e,trailing:o})},zn.thru=ms,zn.toArray=da,zn.toPairs=Ba,zn.toPairsIn=za,zn.toPath=function(t){return Vs(t)?Ne(t,$o):la(t)?[t]:Oi(Mo(ba(t)))},zn.toPlainObject=wa,zn.transform=function(t,e,n){var r=Vs(t),i=r||Qs(t)||fa(t);if(e=uo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:na(t)&&Js(o)?Un(Xt(t)):{}}return(i?Te:Er)(t,(function(t,r,i){return e(n,t,r,i)})),n},zn.unary=function(t){return Cs(t,1)},zn.union=rs,zn.unionBy=is,zn.unionWith=os,zn.uniq=function(t){return t&&t.length?fi(t):[]},zn.uniqBy=function(t,e){return t&&t.length?fi(t,uo(e,2)):[]},zn.uniqWith=function(t,e){return e="function"==typeof e?e:n,t&&t.length?fi(t,n,e):[]},zn.unset=function(t,e){return null==t||pi(t,e)},zn.unzip=ss,zn.unzipWith=as,zn.update=function(t,e,n){return null==t?t:hi(t,e,wi(n))},zn.updateWith=function(t,e,r,i){return i="function"==typeof i?i:n,null==t?t:hi(t,e,wi(r),i)},zn.values=Ua,zn.valuesIn=function(t){return null==t?[]:Qe(t,Ra(t))},zn.without=cs,zn.words=Ja,zn.wrap=function(t,e){return $s(wi(e),t)},zn.xor=us,zn.xorBy=ls,zn.xorWith=fs,zn.zip=ps,zn.zipObject=function(t,e){return vi(t||[],e||[],nr)},zn.zipObjectDeep=function(t,e){return vi(t||[],e||[],ti)},zn.zipWith=hs,zn.entries=Ba,zn.entriesIn=za,zn.extend=_a,zn.extendWith=Sa,uc(zn,zn),zn.add=wc,zn.attempt=tc,zn.camelCase=Ha,zn.capitalize=qa,zn.ceil=bc,zn.clamp=function(t,e,r){return r===n&&(r=e,e=n),r!==n&&(r=(r=ya(r))==r?r:0),e!==n&&(e=(e=ya(e))==e?e:0),cr(ya(t),e,r)},zn.clone=function(t){return ur(t,4)},zn.cloneDeep=function(t){return ur(t,5)},zn.cloneDeepWith=function(t,e){return ur(t,5,e="function"==typeof e?e:n)},zn.cloneWith=function(t,e){return ur(t,4,e="function"==typeof e?e:n)},zn.conformsTo=function(t,e){return null==e||lr(t,e,La(e))},zn.deburr=Ga,zn.defaultTo=function(t,e){return null==t||t!=t?e:t},zn.divide=Ec,zn.endsWith=function(t,e,r){t=ba(t),e=li(e);var i=t.length,o=r=r===n?i:cr(ga(r),0,i);return(r-=e.length)>=0&&t.slice(r,o)==e},zn.eq=Us,zn.escape=function(t){return(t=ba(t))&&Q.test(t)?t.replace(X,nn):t},zn.escapeRegExp=function(t){return(t=ba(t))&&it.test(t)?t.replace(rt,"\\$&"):t},zn.every=function(t,e,r){var i=Vs(t)?Ae:mr;return r&&Eo(t,e,r)&&(e=n),i(t,uo(e,3))},zn.find=ys,zn.findIndex=Go,zn.findKey=function(t,e){return Me(t,uo(e,3),Er)},zn.findLast=ws,zn.findLastIndex=Vo,zn.findLastKey=function(t,e){return Me(t,uo(e,3),_r)},zn.floor=_c,zn.forEach=bs,zn.forEachRight=Es,zn.forIn=function(t,e){return null==t?t:wr(t,uo(e,3),Ra)},zn.forInRight=function(t,e){return null==t?t:br(t,uo(e,3),Ra)},zn.forOwn=function(t,e){return t&&Er(t,uo(e,3))},zn.forOwnRight=function(t,e){return t&&_r(t,uo(e,3))},zn.get=Aa,zn.gt=Hs,zn.gte=qs,zn.has=function(t,e){return null!=t&&vo(t,e,Ar)},zn.hasIn=Ca,zn.head=Xo,zn.identity=oc,zn.includes=function(t,e,n,r){t=Xs(t)?t:Ua(t),n=n&&!r?ga(n):0;var i=t.length;return n<0&&(n=wn(i+n,0)),ua(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&Be(t,e,n)>-1},zn.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:ga(n);return i<0&&(i=wn(r+i,0)),Be(t,e,i)},zn.inRange=function(t,e,r){return e=ma(e),r===n?(r=e,e=0):r=ma(r),function(t,e,n){return t>=bn(e,n)&&t=-9007199254740991&&t<=p},zn.isSet=ca,zn.isString=ua,zn.isSymbol=la,zn.isTypedArray=fa,zn.isUndefined=function(t){return t===n},zn.isWeakMap=function(t){return ra(t)&&go(t)==N},zn.isWeakSet=function(t){return ra(t)&&"[object WeakSet]"==Tr(t)},zn.join=function(t,e){return null==t?"":vn.call(t,e)},zn.kebabCase=Va,zn.last=Yo,zn.lastIndexOf=function(t,e,r){var i=null==t?0:t.length;if(!i)return-1;var o=i;return r!==n&&(o=(o=ga(r))<0?wn(i+o,0):bn(o,i-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,o):$e(t,Ue,o,!0)},zn.lowerCase=Wa,zn.lowerFirst=Xa,zn.lt=pa,zn.lte=ha,zn.max=function(t){return t&&t.length?gr(t,oc,Ir):n},zn.maxBy=function(t,e){return t&&t.length?gr(t,uo(e,2),Ir):n},zn.mean=function(t){return He(t,oc)},zn.meanBy=function(t,e){return He(t,uo(e,2))},zn.min=function(t){return t&&t.length?gr(t,oc,$r):n},zn.minBy=function(t,e){return t&&t.length?gr(t,uo(e,2),$r):n},zn.stubArray=vc,zn.stubFalse=yc,zn.stubObject=function(){return{}},zn.stubString=function(){return""},zn.stubTrue=function(){return!0},zn.multiply=Sc,zn.nth=function(t,e){return t&&t.length?qr(t,ga(e)):n},zn.noConflict=function(){return pe._===this&&(pe._=Ut),this},zn.noop=lc,zn.now=As,zn.pad=function(t,e,n){t=ba(t);var r=(e=ga(e))?fn(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Gi(Fe(i),n)+t+Gi(ve(i),n)},zn.padEnd=function(t,e,n){t=ba(t);var r=(e=ga(e))?fn(t):0;return e&&re){var i=t;t=e,e=i}if(r||t%1||e%1){var o=Sn();return bn(t+o*(e-t+ce("1e-"+((o+"").length-1))),e)}return Kr(t,e)},zn.reduce=function(t,e,n){var r=Vs(t)?Re:Ve,i=arguments.length<3;return r(t,uo(e,4),n,i,hr)},zn.reduceRight=function(t,e,n){var r=Vs(t)?je:Ve,i=arguments.length<3;return r(t,uo(e,4),n,i,dr)},zn.repeat=function(t,e,r){return e=(r?Eo(t,e,r):e===n)?1:ga(e),Qr(ba(t),e)},zn.replace=function(){var t=arguments,e=ba(t[0]);return t.length<3?e:e.replace(t[1],t[2])},zn.result=function(t,e,r){var i=-1,o=(e=bi(e,t)).length;for(o||(o=1,t=n);++ip)return[];var n=d,r=bn(t,d);e=uo(e),t-=d;for(var i=Xe(r,e);++n=s)return t;var c=r-fn(i);if(c<1)return i;var u=a?_i(a,0,c).join(""):t.slice(0,c);if(o===n)return u+i;if(a&&(c+=u.length-c),aa(o)){if(t.slice(c).search(o)){var l,f=u;for(o.global||(o=Ct(o.source,ba(dt.exec(o))+"g")),o.lastIndex=0;l=o.exec(f);)var p=l.index;u=u.slice(0,p===n?c:p)}}else if(t.indexOf(li(o),c)!=c){var h=u.lastIndexOf(o);h>-1&&(u=u.slice(0,h))}return u+i},zn.unescape=function(t){return(t=ba(t))&&K.test(t)?t.replace(W,hn):t},zn.uniqueId=function(t){var e=++Mt;return ba(t)+e},zn.upperCase=Za,zn.upperFirst=Ya,zn.each=bs,zn.eachRight=Es,zn.first=Xo,uc(zn,function(){var t={};return Er(zn,(function(e,n){Ft.call(zn.prototype,n)||(t[n]=e)})),t}(),{chain:!1}),zn.VERSION="4.17.20",Te(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){zn[t].placeholder=zn})),Te(["drop","take"],(function(t,e){Gn.prototype[t]=function(r){r=r===n?1:wn(ga(r),0);var i=this.__filtered__&&!e?new Gn(this):this.clone();return i.__filtered__?i.__takeCount__=bn(r,i.__takeCount__):i.__views__.push({size:bn(r,d),type:t+(i.__dir__<0?"Right":"")}),i},Gn.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),Te(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=1==n||3==n;Gn.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:uo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),Te(["head","last"],(function(t,e){var n="take"+(e?"Right":"");Gn.prototype[t]=function(){return this[n](1).value()[0]}})),Te(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");Gn.prototype[t]=function(){return this.__filtered__?new Gn(this):this[n](1)}})),Gn.prototype.compact=function(){return this.filter(oc)},Gn.prototype.find=function(t){return this.filter(t).head()},Gn.prototype.findLast=function(t){return this.reverse().find(t)},Gn.prototype.invokeMap=Zr((function(t,e){return"function"==typeof t?new Gn(this):this.map((function(n){return Pr(n,t,e)}))})),Gn.prototype.reject=function(t){return this.filter(Fs(uo(t)))},Gn.prototype.slice=function(t,e){t=ga(t);var r=this;return r.__filtered__&&(t>0||e<0)?new Gn(r):(t<0?r=r.takeRight(-t):t&&(r=r.drop(t)),e!==n&&(r=(e=ga(e))<0?r.dropRight(-e):r.take(e-t)),r)},Gn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Gn.prototype.toArray=function(){return this.take(d)},Er(Gn.prototype,(function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),i=/^(?:head|last)$/.test(e),o=zn[i?"take"+("last"==e?"Right":""):e],s=i||/^find/.test(e);o&&(zn.prototype[e]=function(){var e=this.__wrapped__,a=i?[1]:arguments,c=e instanceof Gn,u=a[0],l=c||Vs(e),f=function(t){var e=o.apply(zn,Le([t],a));return i&&p?e[0]:e};l&&r&&"function"==typeof u&&1!=u.length&&(c=l=!1);var p=this.__chain__,h=!!this.__actions__.length,d=s&&!p,m=c&&!h;if(!s&&l){e=m?e:new Gn(this);var g=t.apply(e,a);return g.__actions__.push({func:ms,args:[f],thisArg:n}),new qn(g,p)}return d&&m?t.apply(this,a):(g=this.thru(f),d?i?g.value()[0]:g.value():g)})})),Te(["pop","push","shift","sort","splice","unshift"],(function(t){var e=Nt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);zn.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(Vs(i)?i:[],t)}return this[n]((function(n){return e.apply(Vs(n)?n:[],t)}))}})),Er(Gn.prototype,(function(t,e){var n=zn[e];if(n){var r=n.name+"";Ft.call(Nn,r)||(Nn[r]=[]),Nn[r].push({name:e,func:n})}})),Nn[zi(n,2).name]=[{name:"wrapper",func:n}],Gn.prototype.clone=function(){var t=new Gn(this.__wrapped__);return t.__actions__=Oi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Oi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Oi(this.__views__),t},Gn.prototype.reverse=function(){if(this.__filtered__){var t=new Gn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Gn.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Vs(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:t,value:t?n:this.__values__[this.__index__++]}},zn.prototype.plant=function(t){for(var e,r=this;r instanceof Hn;){var i=zo(r);i.__index__=0,i.__values__=n,e?o.__wrapped__=i:e=i;var o=i;r=r.__wrapped__}return o.__wrapped__=t,e},zn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Gn){var e=t;return this.__actions__.length&&(e=new Gn(this)),(e=e.reverse()).__actions__.push({func:ms,args:[ns],thisArg:n}),new qn(e,this.__chain__)}return this.thru(ns)},zn.prototype.toJSON=zn.prototype.valueOf=zn.prototype.value=function(){return mi(this.__wrapped__,this.__actions__)},zn.prototype.first=zn.prototype.head,ae&&(zn.prototype[ae]=function(){return this}),zn}();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(pe._=dn,define((function(){return dn}))):de?((de.exports=dn)._=dn,he._=dn):pe._=dn}.call(this),e.exports}.call({});const _e=u.DiagnosticCategory;function Se(t){return{line:t.row+1,offset:t.column+1}}function xe(t){return new f.Point(t.line-1,t.offset-1)}function ke(t){return Te(t.start,t.end)}function Te(t,e){return new f.Range(xe(t),xe(e))}function Ie(t){const e=Ae(t),n=e.formatCodeOptions;return{formatCodeOptions:{indentSize:atom.config.get("editor.tabLength"),tabSize:atom.config.get("editor.tabLength"),...n},compileOnSave:!!e.compileOnSave,preferences:e.preferences?e.preferences:{}}}function Ae(t){".json"!==v.extname(t)&&(t+=".json");let{config:e}=u.readConfigFile(t,(t=>u.sys.readFile(t)));if(void 0===e)return{};if("string"==typeof e.extends){const n=Ae(v.join(v.dirname(t),e.extends));e=Object.assign({},n,e)}return e}function Ce(t){return{label:Pe(t.prefixDisplayParts)+t.parameters.map((t=>Pe(t.displayParts))).join(Pe(t.separatorDisplayParts))+Pe(t.suffixDisplayParts),documentation:Pe(t.documentation),parameters:t.parameters.map(Oe)}}function Oe(t){return{label:Pe(t.displayParts),documentation:Pe(t.documentation)}}function Pe(t){return t.map((t=>t.text)).join("")}const Ne=function(){let t;return function(e,n){if(void 0===e)return!0;void 0===t&&(t=new Map(Object.values(u.Diagnostics).map((t=>[t.code,t.category]))));const r=t.get(e);return void 0===r||r===n}}();function Le(t){return void 0!==t&&function(t){const e=atom.config.get("atom-typescript").tsFileExtensions;atom.config.get("atom-typescript").allowJS&&e.push(...atom.config.get("atom-typescript").jsFileExtensions);return e.includes(t)}(v.extname(t))}function Re(){const t=atom.config.get("atom-typescript").tsSyntaxScopes;return atom.config.get("atom-typescript").allowJS&&t.push(...atom.config.get("atom-typescript").jsSyntaxScopes),t}function je(t){return Le(t.getPath())&&De(t)}function De(t){const[e]=t.getRootScopeDescriptor().getScopesArray();return Re().includes(e)}function Fe(t,e){const n=t.getPath();if(void 0!==n){return{file:n,...e?Se(e):function(t){const e=t.getCursorBufferPosition();return{line:e.row+1,offset:e.column+1}}(t)}}}async function Me(t,e){const n=new f.TextEditor({readonly:!0,keyboardInputEnabled:!1,showInvisibles:!1,tabLength:atom.config.get("editor.tabLength")}),r=atom.views.getView(n);try{return r.setUpdatedSynchronously(!0),r.style.pointerEvents="none",r.style.position="absolute",r.style.top="100vh",r.style.width="100vw",atom.grammars.assignLanguageMode(n.getBuffer(),e),n.setText(t),n.scrollToBufferPosition(n.getBuffer().getEndPosition()),atom.views.getView(atom.workspace).appendChild(r),await async function(t){return new Promise((e=>{const n=t.getBuffer().getLanguageMode(),r=t.component.getNextUpdatePromise();if(n.fullyTokenized||n.tree)e(r);else{const n=t.onDidTokenize((()=>{n.dispose(),e(r)}))}}))}(n),Array.from(r.querySelectorAll(".line:not(.dummy)")).map((t=>t.innerHTML))}finally{r.remove()}}function $e(t,e,n){if(!n.childItems)return;for(const r of n.childItems){const n=Be(r),i=ze(r);if(isFinite(n)&&isFinite(i)){if(t>=n&&e<=i){const n=$e(t,e,r);return n||r}if(isFinite(i)&&e=r&&e<=i?n:void 0}function Be(t){return t.spans.length>0?t.spans[0].start.line-1:0}function ze(t){const e=t.spans;return e.length>0?e[e.length-1].end.line-1:0}function Ue(t,e){if(!t||!e)return t===e;if(t.text===e.text){if(e.collapsed&&(t.collapsed=!0),t.childItems&&e.childItems){let n,r;for(let i=0,o=t.childItems.length;iBe(t)-Be(e)));for(const e of t.childItems)He(e)}}class qe{constructor(t){this.props=t,Ft.initialize(this)}async update(t){this.props={...this.props,...t},await Ft.update(this)}async destroy(){await Ft.destroy(this)}render(){const t=this.props.navTree,{ctrl:e}=this.props,n=e.getSelectedNode(),r=n&&(o=n,(i=t).text===o.text&&Ee.isEqual(i.spans,o.spans));var i,o;const s=(t.childItems?"nested-":"")+"item"+(t.collapsed?" collapsed":" expanded")+(r?" selected":""),a=this.getStyles();return Ft.dom("li",{className:"node entry exanded list-"+s},Ft.dom("div",{className:"header list-item",on:{click:e=>this.entryClicked(e,t)}},Ft.dom("span",{className:a},t.text)),Ft.dom("ol",{className:"entries list-tree"},t.childItems?t.childItems.map((t=>Ft.dom(qe,{navTree:t,ctrl:e}))):null))}getStyles(){const{kind:t}=this.props.navTree;let e="icon icon-"+t;const{kindModifiers:n}=this.props.navTree;return n&&(e+=" "+n.split(/[, ]/).map((t=>"modifier-"+t.trim())).join(" ")),e}entryClicked(t,e){t.stopPropagation();(function(t,e){return!!t.childItems&&e.target===e.currentTarget})(e,t)?(e.collapsed=!e.collapsed,be(Ft.update(this))):this.props.ctrl.gotoNode(e)}}class Ge{constructor(t){this.props=t,this.subscriptions=new p,this.loadNavTree=async()=>{if(!this.editor)return;if(!this.getClient)return;const t=this.editor.getPath();if(void 0!==t)try{const e=await this.getClient(t),n=(await e.execute("navtree",{file:t})).body;n&&(this.setNavTree(n),await Ft.update(this))}catch(e){console.error(e,t)}},this.selectAtCursorLine=({newBufferPosition:t})=>{if(!this.props.navTree)return;const e=t.row,n=$e(e,e,this.props.navTree);n!==this.selectedNode&&(this.selectedNode=n,be(Ft.update(this)))},this.subscribeToEditor=async t=>{if(this.editorScrolling&&this.editorScrolling.dispose(),this.editorChanging&&this.editorChanging.dispose(),!t||!je(t))return this.update({navTree:null});this.editor=t,await this.loadNavTree(),this.editorScrolling=t.onDidChangeCursorPosition(this.selectAtCursorLine),this.editorChanging=t.onDidStopChanging(this.loadNavTree)},He(t.navTree),Ft.initialize(this),this.subscriptions.add(atom.workspace.observeActiveTextEditor(this.subscribeToEditor))}async update(t){void 0!==t.navTree&&this.setNavTree(t.navTree),this.props={...this.props,...t},await Ft.update(this)}async destroy(){this.editorScrolling&&this.editorScrolling.dispose(),this.editorChanging&&this.editorChanging.dispose(),this.editorScrolling=void 0,this.editorChanging=void 0,this.selectedNode=void 0,this.subscriptions.dispose(),await Ft.destroy(this)}async setGetClient(t){this.getClient=t,await this.loadNavTree()}getSelectedNode(){return this.selectedNode}render(){const t=this.props.navTree?Ft.dom(qe,{navTree:this.props.navTree,ctrl:this}):null;return Ft.dom("div",{className:"atomts atomts-semantic-view native-key-bindings"},Ft.dom("ol",{className:"list-tree has-collapsable-children focusable-panel"},t))}readAfterUpdate(){const t=this.element.querySelector(".selected");t&&this.scrollTo(t)}gotoNode(t){if(!this.editor)return;const e=Be(t),n=function(t){return t.spans.length>0?t.spans[0].start.offset-1:0}(t);this.editor.setCursorBufferPosition([e,n])}getCursorLine(){return this.editor?this.editor.getLastCursor().getBufferRow():void 0}setNavTree(t){if(He(t),Ee.isEqual(t,this.props.navTree))return;let e;if(Ue(t,this.props.navTree),this.props.navTree=t,t){const n=this.getCursorLine();void 0!==n&&(e=$e(n,n,t))}this.selectedNode=e}scrollTo(t){const e=t;"function"==typeof e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded():e.scrollIntoView()}}class Ve{constructor(t){this.comp=new Ge({navTree:t.navTree})}static create(t){return Ve.instance||(Ve.instance=new Ve(t)),Ve.instance}get element(){return this.comp.element}async setGetClient(t){await this.comp.setGetClient(t),await this.comp.update({})}getTitle(){return"TypeScript"}getURI(){return"atom-typescript://semantic-view"}async destroy(){Ve.instance=null,await this.comp.destroy()}getDefaultLocation(){return"right"}getAllowedLocations(){return["left","right"]}serialize(){return{deserializer:"atomts-semantic-view/SemanticView",data:{navTree:this.comp.props.navTree}}}}Ve.instance=null;var We,Xe=a,Ke=w,Qe=o;We=function(t,e){return Ze(t,e)};var Ze=function(t,e){return t?Ye(t,e):new Je(e)};We.createStream=Ze;function Ye(t,e){if(!t)throw new Error("expected readStream");if(!t.readable)throw new Error("readStream must be readable");var n=new Je(e);return t.pipe(n),n}function Je(t){Xe.Transform.call(this,t),t=t||{},this._readableState.objectMode=!0,this._lineBuffer=[],this._keepEmptyLines=t.keepEmptyLines||!1,this._lastChunkEndedWithCR=!1;var e=this;this.on("pipe",(function(t){e.encoding||t instanceof Xe.Readable&&(e.encoding=t._readableState.encoding)}))}We.createLineStream=function(t){return console.log("WARNING: byline#createLineStream is deprecated and will be removed soon"),Ye(t)},We.LineStream=Je,Ke.inherits(Je,Xe.Transform),Je.prototype._transform=function(t,e,n){e=e||"utf8",Buffer.isBuffer(t)&&("buffer"==e?(t=t.toString(),e="utf8"):t=t.toString(e)),this._chunkEncoding=e;var r=t.split(/\r\n|[\n\v\f\r\x85\u2028\u2029]/g);this._lastChunkEndedWithCR&&"\n"==t[0]&&r.shift(),this._lineBuffer.length>0&&(this._lineBuffer[this._lineBuffer.length-1]+=r[0],r.shift()),this._lastChunkEndedWithCR="\r"==t[t.length-1],this._lineBuffer=this._lineBuffer.concat(r),this._pushBuffer(e,1,n)},Je.prototype._pushBuffer=function(t,e,n){for(;this._lineBuffer.length>e;){var r=this._lineBuffer.shift();if((this._keepEmptyLines||r.length>0)&&!this.push(this._reencode(r,t))){var i=this;return void Qe.setImmediate((function(){i._pushBuffer(t,e,n)}))}}n()},Je.prototype._flush=function(t){this._pushBuffer(this._chunkEncoding,0,t)},Je.prototype._reencode=function(t,e){return this.encoding&&this.encoding!=e?new Buffer(t,e).toString(this.encoding):this.encoding?t:new Buffer(t,e)};class tn{constructor(t){this.reportBusyWhile=t,this.callbacks=new Map,this.interval=0}async add(t,e){try{const n=new Promise(((n,r)=>{this.callbacks.set(t,{command:e,resolve:n,reject:r,started:Date.now()})}));return 0===this.interval&&(this.interval=window.setInterval((()=>{process.activateUvLoop()}),100)),await this.reportBusyWhile(e,(()=>n))}finally{this.callbacks.delete(t),0!==this.interval&&0===this.callbacks.size&&(clearInterval(this.interval),this.interval=0)}}rejectAll(t){for(const{reject:e}of this.callbacks.values())e(t);this.callbacks.clear()}resolve(t){const e=this.callbacks.get(t.request_seq);e?(window.atom_typescript_debug&&console.log("received response for",t.command,"in",Date.now()-e.started,"ms","with data",t.body),t.success?e.resolve(t):e.reject(new Error(t.message))):console.warn("unexpected response:",t)}resolveMS(t){const e=this.callbacks.get(t.request_seq);e?(window.atom_typescript_debug&&console.log(`received requestCompleted event for multistep command ${e.command} in ${Date.now()-e.started} ms`),e.resolve(void 0)):console.warn("unexpected requestCompleted event:",t)}error(t,e){const n=this.callbacks.get(t);n?n.reject(e):console.error(e)}}const en=new Set(Object.keys({compileOnSaveAffectedFileList:!0,compileOnSaveEmitFile:!0,completionEntryDetails:!0,completions:!0,completionInfo:!0,configure:!0,definition:!0,format:!0,getCodeFixes:!0,getSupportedCodeFixes:!0,documentHighlights:!0,projectInfo:!0,quickinfo:!0,references:!0,reload:!0,rename:!0,navtree:!0,navto:!0,getApplicableRefactors:!0,getEditsForRefactor:!0,organizeImports:!0,signatureHelp:!0,getEditsForFileRename:!0,applyCodeActionCommand:!0})),nn=new Set(Object.keys({geterr:!0,geterrForProject:!0})),rn=new Set(Object.keys({configFileDiag:!0,semanticDiag:!0,suggestionDiag:!0,syntaxDiag:!0}));class on{constructor(t,e,n){this.tsServerPath=t,this.version=e,this.reportBusyWhile=n,this.emitter=new h,this.seq=0,this.lastStderrOutput="",this.on=this.emitter.on.bind(this.emitter),this.exitHandler=(t,e=!0)=>{if(this.callbacks.rejectAll(t),e&&console.error("tsserver: ",t),this.server=void 0,this.emitter.emit("terminated"),e){let e=t.message;this.lastStderrOutput&&(e=`Last output from tsserver:\n${this.lastStderrOutput}\n\n${e}`),atom.notifications.addError("TypeScript server quit unexpectedly",{detail:e,stack:t.stack,dismissable:!0})}},this.onMessage=t=>{"response"===t.type?this.callbacks.resolve(t):this.onEvent(t)};const[r,i]=e.split(".").slice(0,2).map((t=>parseInt(t,10)));this.multistepSupported=r>2||2===r&&i>=2,this.callbacks=new tn(this.reportBusyWhile),this.server=this.startServer()}async execute(t,...e){this.server||(this.server=this.startServer(),this.emitter.emit("restarted"));const n={seq:this.seq++,command:t,arguments:e[0]};window.atom_typescript_debug&&console.log("sending request",n);let r=void 0;(function(t){return en.has(t)}(t)||this.multistepSupported&&function(t){return nn.has(t)}(t))&&(r=this.callbacks.add(n.seq,t));try{if(!this.server.stdin)throw new Error("Server stdin is missing");this.server.stdin.write(JSON.stringify(n)+"\n")}catch(t){this.callbacks.error(n.seq,t)}return r}async restartServer(){if(this.server){const t=this.server,e=setTimeout((()=>t.kill()),1e4);await Promise.all([this.execute("exit"),new Promise((t=>{const e=this.emitter.once("terminated",(()=>{e.dispose(),t()}))}))]),clearTimeout(e)}this.server||(this.server=this.startServer(),this.emitter.emit("restarted"))}startServer(){window.atom_typescript_debug&&console.log("starting",this.tsServerPath);const t=function(t){const e=atom.config.get("atom-typescript").locale,n=e?["--locale",e]:[];return new d({command:t,args:n}).process}(this.tsServerPath);if(!t)throw new Error("ChildProcess failed to start");const e=this.exitHandler;if(t.once("error",e),t.once("exit",((t,n)=>{0===t?e(new Error("Server stopped normally"),!1):null!==t?e(new Error("exited with code: "+t)):null!==n&&e(new Error("terminated on signal: "+n))})),!t.stdout)throw new Error("ChildProcess stdout missing");if(!t.stderr)throw new Error("ChildProcess stderr missing");var n;return(n=t.stdout,n.pipe(an()).pipe(new cn)).on("data",this.onMessage),t.stderr.on("data",(t=>{console.warn("tsserver stderr:",this.lastStderrOutput=t.toString())})),t}onEvent(t){var e;window.atom_typescript_debug&&console.log("received event",t),t.body&&(e=t.event,rn.has(e)?this.emitter.emit(t.event,t.body):"requestCompleted"===t.event&&this.callbacks.resolveMS(t.body))}}var sn,an=x(We);class cn extends c{constructor(){super({objectMode:!0})}_transform(t,e,n){const r=t.toString();try{r.startsWith("{")?this.push(JSON.parse(r)):r.startsWith("Content-Length:")||console.warn(r)}catch(t){console.error("client: failed to parse: ",r)}finally{n(void 0)}}}function un(t,e){void 0===e&&(e=!1);var n=t.length,r=0,i="",o=0,s=16,a=0,c=0,u=0,l=0,f=0;function p(e,n){for(var i=0,o=0;i=48&&s<=57)o=16*o+s-48;else if(s>=65&&s<=70)o=16*o+s-65+10;else{if(!(s>=97&&s<=102))break;o=16*o+s-97+10}r++,i++}return i=n)return o=n,s=17;var e=t.charCodeAt(r);if(ln(e)){do{r++,i+=String.fromCharCode(e),e=t.charCodeAt(r)}while(ln(e));return s=15}if(fn(e))return r++,i+=String.fromCharCode(e),13===e&&10===t.charCodeAt(r)&&(r++,i+="\n"),a++,u=r,s=14;switch(e){case 123:return r++,s=1;case 125:return r++,s=2;case 91:return r++,s=3;case 93:return r++,s=4;case 58:return r++,s=6;case 44:return r++,s=5;case 34:return r++,i=function(){for(var e="",i=r;;){if(r>=n){e+=t.substring(i,r),f=2;break}var o=t.charCodeAt(r);if(34===o){e+=t.substring(i,r),r++;break}if(92!==o){if(o>=0&&o<=31){if(fn(o)){e+=t.substring(i,r),f=2;break}f=6}r++}else{if(e+=t.substring(i,r),++r>=n){f=2;break}switch(t.charCodeAt(r++)){case 34:e+='"';break;case 92:e+="\\";break;case 47:e+="/";break;case 98:e+="\b";break;case 102:e+="\f";break;case 110:e+="\n";break;case 114:e+="\r";break;case 116:e+="\t";break;case 117:var s=p(4,!0);s>=0?e+=String.fromCharCode(s):f=4;break;default:f=5}i=r}}return e}(),s=10;case 47:var h=r-1;if(47===t.charCodeAt(r+1)){for(r+=2;r=12&&t<=15);return t}:h,getToken:function(){return s},getTokenValue:function(){return i},getTokenOffset:function(){return o},getTokenLength:function(){return r-o},getTokenStartLine:function(){return c},getTokenStartCharacter:function(){return o-l},getTokenError:function(){return f}}}function ln(t){return 32===t||9===t||11===t||12===t||160===t||5760===t||t>=8192&&t<=8203||8239===t||8287===t||12288===t||65279===t}function fn(t){return 10===t||13===t||8232===t||8233===t}function pn(t){return t>=48&&t<=57}(sn||(sn={})).DEFAULT={allowTrailingComma:!1};var hn,dn,mn=function(t,e,n){void 0===e&&(e=[]),void 0===n&&(n=sn.DEFAULT);var r=null,i=[],o=[];function s(t){Array.isArray(i)?i.push(t):null!==r&&(i[r]=t)}return function(t,e,n){void 0===n&&(n=sn.DEFAULT);var r=un(t,!1);function i(t){return t?function(){return t(r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}function o(t){return t?function(e){return t(e,r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}var s=i(e.onObjectBegin),a=o(e.onObjectProperty),c=i(e.onObjectEnd),u=i(e.onArrayBegin),l=i(e.onArrayEnd),f=o(e.onLiteralValue),p=o(e.onSeparator),h=i(e.onComment),d=o(e.onError),m=n&&n.disallowComments,g=n&&n.allowTrailingComma;function v(){for(;;){var t=r.scan();switch(r.getTokenError()){case 4:y(14);break;case 5:y(15);break;case 3:y(13);break;case 1:m||y(11);break;case 2:y(12);break;case 6:y(16)}switch(t){case 12:case 13:m?y(10):h();break;case 16:y(1);break;case 15:case 14:break;default:return t}}}function y(t,e,n){if(void 0===e&&(e=[]),void 0===n&&(n=[]),d(t),e.length+n.length>0)for(var i=r.getToken();17!==i;){if(-1!==e.indexOf(i)){v();break}if(-1!==n.indexOf(i))break;i=v()}}function w(t){var e=r.getTokenValue();return t?f(e):a(e),v(),!0}function b(){switch(r.getToken()){case 11:var t=r.getTokenValue(),e=Number(t);isNaN(e)&&(y(2),e=0),f(e);break;case 7:f(null);break;case 8:f(!0);break;case 9:f(!1);break;default:return!1}return v(),!0}function E(){return 10!==r.getToken()?(y(3,[],[2,5]),!1):(w(!1),6===r.getToken()?(p(":"),v(),x()||y(4,[],[2,5])):y(5,[],[2,5]),!0)}function _(){s(),v();for(var t=!1;2!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),p(","),v(),2===r.getToken()&&g)break}else t&&y(6,[],[]);E()||y(4,[],[2,5]),t=!0}return c(),2!==r.getToken()?y(7,[2],[]):v(),!0}function S(){u(),v();for(var t=!1;4!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),p(","),v(),4===r.getToken()&&g)break}else t&&y(6,[],[]);x()||y(4,[],[4,5]),t=!0}return l(),4!==r.getToken()?y(8,[4],[]):v(),!0}function x(){switch(r.getToken()){case 3:return S();case 1:return _();case 10:return w(!0);default:return b()}}if(v(),17===r.getToken())return!!n.allowEmptyContent||(y(4,[],[]),!1);if(!x())return y(4,[],[]),!1;17!==r.getToken()&&y(9,[],[])}(t,{onObjectBegin:function(){var t={};s(t),o.push(i),i=t,r=null},onObjectProperty:function(t){r=t},onObjectEnd:function(){i=o.pop()},onArrayBegin:function(){var t=[];s(t),o.push(i),i=t,r=null},onArrayEnd:function(){i=o.pop()},onLiteralValue:s,onError:function(t,n,r){e.push({error:t,offset:n,length:r})}},n),i[0]},gn=E,vn=v;dn=function(){var t=Error.prepareStackTrace;Error.prepareStackTrace=function(t,e){return e};var e=(new Error).stack;return Error.prepareStackTrace=t,e[2].getFileName()};var yn,wn,bn,En,_n,Sn,xn,kn,Tn,In,An=v,Cn=!1;function On(){wn={},bn="win32"===process.platform,En=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,_n=/^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/,(Sn={}).parse=function(t){if("string"!=typeof t)throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e,n,r,i,o,s=(e=t,n=En.exec(e),r=(n[1]||"")+(n[2]||""),i=n[3]||"",o=_n.exec(i),[r,o[1],o[2],o[3]]);if(!s||4!==s.length)throw new TypeError("Invalid path '"+t+"'");return{root:s[0],dir:s[0]+s[1].slice(0,-1),base:s[2],ext:s[3],name:s[2].slice(0,s[2].length-s[3].length)}},xn=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,(kn={}).parse=function(t){if("string"!=typeof t)throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e,n=(e=t,xn.exec(e).slice(1));if(!n||4!==n.length)throw new TypeError("Invalid path '"+t+"'");return n[1]=n[1]||"",n[2]=n[2]||"",n[3]=n[3]||"",{root:n[0],dir:n[0]+n[1].slice(0,-1),base:n[2],ext:n[3],name:n[2].slice(0,n[2].length-n[3].length)}},wn=bn?Sn.parse:kn.parse,Tn=kn.parse,wn.posix=Tn,In=Sn.parse,wn.win32=In}var Pn=An.parse||(Cn||(Cn=!0,On()),wn),Nn=function(t,e){var n="/";/^([A-Za-z]:)/.test(t)?n="":/^\\\\/.test(t)&&(n="\\\\");for(var r=[t],i=Pn(t);i.dir!==r[r.length-1];)r.push(i.dir),i=Pn(i.dir);return r.reduce((function(t,r){return t.concat(e.map((function(t){return An.resolve(n,r,t)})))}),[])};yn=function(t,e,n){var r=e&&e.moduleDirectory?[].concat(e.moduleDirectory):["node_modules"];if(e&&"function"==typeof e.paths)return e.paths(n,t,(function(){return Nn(t,r)}),e);var i=Nn(t,r);return e&&e.paths?i.concat(e.paths):i};var Ln;Ln=function(t,e){return e||{}};var Rn,jn,Dn=process.versions&&process.versions.node&&process.versions.node.split(".")||[];function Fn(t){for(var e=t.split(" "),n=e.length>1?e[0]:"=",r=(e.length>1?e[1]:e[0]).split("."),i=0;i<3;++i){var o=Number(Dn[i]||0),s=Number(r[i]||0);if(o!==s)return"<"===n?o="===n&&o>=s}return">="===n}function Mn(t){var e=t.split(/ ?&& ?/);if(0===e.length)return!1;for(var n=0;n= 8","buffer_ieee754":"< 0.9.7","buffer":true,"child_process":true,"cluster":true,"console":true,"constants":true,"crypto":true,"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"dns":true,"domain":true,"events":true,"freelist":"< 6","fs":true,"fs/promises":[">= 10 && < 10.1",">= 14"],"_http_agent":">= 0.11.1","_http_client":">= 0.11.1","_http_common":">= 0.11.1","_http_incoming":">= 0.11.1","_http_outgoing":">= 0.11.1","_http_server":">= 0.11.1","http":true,"http2":">= 8.8","https":true,"inspector":">= 8.0.0","_linklist":"< 8","module":true,"net":true,"node-inspect/lib/_inspect":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6.0 && < 12","os":true,"path":true,"perf_hooks":">= 8.5","process":">= 1","punycode":true,"querystring":true,"readline":true,"repl":true,"smalloc":">= 0.11.5 && < 3","_stream_duplex":">= 0.9.4","_stream_transform":">= 0.9.4","_stream_wrap":">= 1.4.1","_stream_passthrough":">= 0.9.4","_stream_readable":">= 0.9.4","_stream_writable":">= 0.9.4","stream":true,"string_decoder":true,"sys":true,"timers":true,"_tls_common":">= 0.11.13","_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","tls":true,"trace_events":">= 10","tty":true,"url":true,"util":true,"v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8":">= 1","vm":true,"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","zlib":true}');var zn={};for(var Un in Bn)Object.prototype.hasOwnProperty.call(Bn,Un)&&(zn[Un]=$n(Bn[Un]));jn=zn,Rn=function(t){return Object.prototype.hasOwnProperty.call(jn,t)};var Hn=gn.realpath&&"function"==typeof gn.realpath.native?gn.realpath.native:gn.realpath,qn=function(t,e){gn.stat(t,(function(t,n){return t?"ENOENT"===t.code||"ENOTDIR"===t.code?e(null,!1):e(t):e(null,n.isFile()||n.isFIFO())}))},Gn=function(t,e){gn.stat(t,(function(t,n){return t?"ENOENT"===t.code||"ENOTDIR"===t.code?e(null,!1):e(t):e(null,n.isDirectory())}))},Vn=function(t,e){Hn(t,(function(n,r){n&&"ENOENT"!==n.code?e(n):e(null,n?t:r)}))},Wn=function(t,e,n,r){n&&!1===n.preserveSymlinks?t(e,r):r(null,e)};(hn=function(t,e,n){var r=n,i=e;if("function"==typeof e&&(r=i,i={}),"string"!=typeof t){var o=new TypeError("Path must be a string.");return process.nextTick((function(){r(o)}))}var s=(i=Ln(0,i)).isFile||qn,a=i.isDirectory||Gn,c=i.readFile||gn.readFile,u=i.realpath||Vn,l=i.packageIterator,f=i.extensions||[".js"],p=i.basedir||vn.dirname(dn()),h=i.filename||p;i.paths=i.paths||[];var d,m=vn.resolve(p);function g(e,n,o){e?r(e):n?r(null,n,o):w(d,(function(e,n,o){if(e)r(e);else if(n)Wn(u,n,i,(function(t,e){t?r(t):r(null,e,o)}));else{var s=new Error("Cannot find module '"+t+"' from '"+h+"'");s.code="MODULE_NOT_FOUND",r(s)}}))}function v(t,e,n){var r=e,o=n;"function"==typeof r&&(o=r,r=void 0),function t(e,n,r){if(0===e.length)return o(null,void 0,r);var a=n+e[0],c=r;c?u(null,c):y(vn.dirname(a),u);function u(r,u,p){if(c=u,r)return o(r);if(p&&c&&i.pathFilter){var h=vn.relative(p,a),d=h.slice(0,h.length-e[0].length),m=i.pathFilter(c,n,d);if(m)return t([""].concat(f.slice()),vn.resolve(p,m),c)}s(a,l)}function l(r,i){return r?o(r):i?o(null,a,c):void t(e.slice(1),n,c)}}([""].concat(f),t,r)}function y(t,e){return""===t||"/"===t||"win32"===process.platform&&/^\w:[/\\]*$/.test(t)||/[/\\]node_modules[/\\]*$/.test(t)?e(null):void Wn(u,t,i,(function(n,r){if(n)return y(vn.dirname(t),e);var o=vn.join(r,"package.json");s(o,(function(n,r){if(!r)return y(vn.dirname(t),e);c(o,(function(n,r){n&&e(n);try{var s=JSON.parse(r)}catch(t){}s&&i.packageFilter&&(s=i.packageFilter(s,o)),e(null,s,t)}))}))}))}function w(t,e,n){var r=n,o=e;"function"==typeof o&&(r=o,o=i.package),Wn(u,t,i,(function(e,n){if(e)return r(e);var a=vn.join(n,"package.json");s(a,(function(e,n){return e?r(e):n?void c(a,(function(e,n){if(e)return r(e);try{var o=JSON.parse(n)}catch(t){}if(o&&i.packageFilter&&(o=i.packageFilter(o,a)),o&&o.main){if("string"!=typeof o.main){var s=new TypeError("package “"+o.name+"” `main` must be a string");return s.code="INVALID_PACKAGE_MAIN",r(s)}return"."!==o.main&&"./"!==o.main||(o.main="index"),void v(vn.resolve(t,o.main),o,(function(e,n,i){return e?r(e):n?r(null,n,i):i?void w(vn.resolve(t,i.main),i,(function(e,n,i){return e?r(e):n?r(null,n,i):void v(vn.join(t,"index"),i,r)})):v(vn.join(t,"index"),i,r)}))}v(vn.join(t,"/index"),o,r)})):v(vn.join(t,"index"),o,r)}))}))}function b(t,e){if(0===e.length)return t(null,void 0);var n=e[0];function r(e,r,s){return e?t(e):r?t(null,r,s):void w(n,i.package,o)}function o(n,r,i){return n?t(n):r?t(null,r,i):void b(t,e.slice(1))}a(vn.dirname(n),(function(o,s){if(o)return t(o);if(!s)return b(t,e.slice(1));v(n,i.package,r)}))}Wn(u,m,i,(function(e,n){e?r(e):function(e){if(/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(t))d=vn.resolve(e,t),"."!==t&&".."!==t&&"/"!==t.slice(-1)||(d+="/"),/\/$/.test(t)&&d===e?w(d,i.package,g):v(d,i.package,g);else{if(Rn(t))return r(null,t);!function(t,e,n){var r=function(){return function(t,e,n){for(var r=yn(e,n,t),i=0;inr(t,e,((t,e)=>{t?r(t):n(e)}))))}("typescript/lib/"+r,{basedir:v.dirname(t),paths:void 0!==n?n.split(v.delimiter):void 0}).catch((async()=>{const e=await async function(t){const e=await async function(t){let e=t,n=v.dirname(e);for(;e!==n;){const t=await ir(e,[[".atom-typescript.json"],[".atom","atom-typescript.json"],[".vscode","settings.json"]]);if(void 0!==t)return{basedir:e,configFile:t};e=n,n=v.dirname(e)}}(t);if(e)try{const t=mn(await async function(t){return new Promise(((e,n)=>E.readFile(t,((t,r)=>{t?n(t):e(r.toString("utf-8"))}))))}(e.configFile));let r;if("object"==typeof(n=t)&&null!==n&&"string"==typeof n.tsdkPath)r=t.tsdkPath;else{if(!function(t){return"object"==typeof t&&null!==t&&"string"==typeof t["typescript.tsdk"]}(t))return;r=v.dirname(t["typescript.tsdk"])}return v.isAbsolute(r)?r:v.join(e.basedir,r)}catch(t){console.warn(t)}var n}(v.dirname(t));if(void 0!==e){const t=v.join(e,"lib",r);if(await rr(t))return t}const n=atom.config.get("atom-typescript.tsdkPath");if(n){const t=v.join(n,"lib",r);if(await rr(t))return t}return require.resolve("typescript/lib/"+r)})),o=v.resolve(i,"../../package.json");return{version:require(o).version,pathToBin:i}}hn.sync=function(t,e){if("string"!=typeof t)throw new TypeError("Path must be a string.");var n=Ln(0,e),r=n.isFile||Zn,i=n.readFileSync||Xn.readFileSync,o=n.isDirectory||Yn,s=n.realpathSync||Jn,a=n.packageIterator,c=n.extensions||[".js"],u=n.basedir||Kn.dirname(dn()),l=n.filename||u;n.paths=n.paths||[];var f=tr(s,Kn.resolve(u),n);if(/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(t)){var p=Kn.resolve(f,t);"."!==t&&".."!==t&&"/"!==t.slice(-1)||(p+="/");var h=g(p)||y(p);if(h)return tr(s,h,n)}else{if(Rn(t))return t;var d=function(t,e){for(var r=function(){return function(t,e,n){for(var r=yn(e,n,t),i=0;iE.access(t,E.constants.F_OK,(t=>{e(!t)}))))}async function ir(t,e){for(const n of e){const e=v.join(t,...n);if(await rr(e))return e}}class or{constructor(t){this.reportBusyWhile=t,this.clients=new Map,this.memoizedClients=new Map,this.emitter=new h,this.subscriptions=new p,this.tsserverInstancePerTsconfig=atom.config.get("atom-typescript").tsserverInstancePerTsconfig,this.on=this.emitter.on.bind(this.emitter),this.diagnosticHandler=(t,e)=>n=>{const r=(i=n)&&i.triggerFile&&i.configFile?n.configFile:n.file;var i;r&&this.emitter.emit("diagnostics",{type:e,serverPath:t,filePath:r,diagnostics:n.diagnostics})}}async restartAllServers(){await this.reportBusyWhile("Restarting servers",(()=>Promise.all(Array.from(this.getAllClients()).map((t=>t.restartServer())))))}async get(t){const e=this.memoizedClients.get(t);if(e)return e;const n=this._get(t);this.memoizedClients.set(t,n);try{return await n}catch(e){throw this.memoizedClients.delete(t),e}}dispose(){this.emitter.dispose(),this.subscriptions.dispose(),this.memoizedClients.clear(),this.clients.clear()}async _get(t){const{pathToBin:e,version:n}=await er(t,"tsserver"),r=this.tsserverInstancePerTsconfig?u.findConfigFile(t,(t=>u.sys.fileExists(t))):void 0;let i=this.clients.get(e);i||(i=new Map,this.clients.set(e,i));const o=i.get(r);if(o)return o;const s=new on(e,n,this.reportBusyWhile);return i.set(r,s),this.subscriptions.add(s.on("configFileDiag",this.diagnosticHandler(e,"configFileDiag")),s.on("semanticDiag",this.diagnosticHandler(e,"semanticDiag")),s.on("syntaxDiag",this.diagnosticHandler(e,"syntaxDiag")),s.on("suggestionDiag",this.diagnosticHandler(e,"suggestionDiag"))),s}*getAllClients(){for(const t of this.clients.values())yield*t.values()}}function sr(t){return{grammarScopes:Re(),priority:100,async highlight(e,n){if(!je(e))return;const r=Fe(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("documentHighlights",{...r,filesToSearch:[r.file]});return o.body?Array.from(function*(t,e){for(const n of e)n.file===t&&(yield*n.highlightSpans.map(ke))}(r.file,o.body)):void 0}}}async function ar(t,e,n){if(void 0===t)return null;const r=e.dom("div",{className:"atom-typescript-datatip-tooltip-kind"},t.kind,function(t,e){return void 0===e?null:t.dom("span",{className:"atom-typescript-datatip-tooltip-kind-modifiers"},e)}(t.kindModifiers)),i=t.tags?t.tags.map((t=>{const n="atom-typescript-datatip-tooltip-doc-tag atom-typescript-datatip-tooltip-doc-tag-name-"+t.name;return e.dom("div",{className:n},e.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-name"},t.name),function(t,e){if(void 0===e)return null;const[,n,r]=/^\s*(\S*)([^]*)$/.exec(e);return t.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-text"},t.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-text-first-word"},n),r)}(e,t.text))})):null,o=e.dom("div",{className:"atom-typescript-datatip-tooltip-doc"},t.documentation,i),s=t.displayString.replace(/^\(.+?\)\s+/,"");return[await n(s),r,o]}const cr=Symbol.for("react.element"),ur={dom:(t,e,...n)=>n.length>0?{$$typeof:cr,type:t,ref:null,props:{...e,children:n}}:{$$typeof:cr,type:t,ref:null,props:{...e}}};class lr{constructor(t){this.getClient=t,this.providerName="TypeScript type tooltips",this.priority=100,this.grammarScopes=Re()}async datatip(t,e){try{const n=t.getPath();if(void 0===n)return;const r=await this.getClient(n),i=(await r.execute("quickinfo",{file:n,line:e.row+1,offset:e.column+1})).body,o=await ar(i,ur,fr);return{component:()=>ur.dom("div",{className:"atom-typescript-datatip-tooltip"},o),range:f.Range.fromObject([xe(i.start),xe(i.end)])}}catch(t){return}}}async function fr(t){const e=atom.config.get("editor.fontFamily"),n=await Me(t.replace(/\r?\n$/,""),"source.ts");return ur.dom("div",{style:{fontFamily:e},className:"atom-typescript-datatip-tooltip-code",dangerouslySetInnerHTML:{__html:n.join("\n")}})}function pr(t){const e=ke(t);return{path:t.file,position:e.start,range:e,language:"TypeScript"}}function hr(t){return{uri:t.file,range:Te(t.start,t.end),name:void 0}}class dr{constructor(t){this.props=t,Ft.initialize(this)}async update(t){return this.props={...this.props,...t},Ft.update(this)}render(){const t={fontFamily:atom.config.get("editor.fontFamily")};return Ft.dom("div",{className:"editor editor-colors",style:t,innerHTML:this.props.highlightedText})}}var mr,gr,vr,yr={},wr=!1;function br(){return wr||(wr=!0,function(){var t,e;t=v.sep,mr=function(e,n,r){var i,o,s,a,c;for(o=e.length-1;e[o]===t;)o--;for(c=0,s=o,i=null;o>=0;)e[o]===t?(c++,null==i&&(i=e.substring(o+1,s+1))):0===o&&(s0&&f.push({candidate:a,score:l}));f.sort(n),r=f.map(t)}return null!=u&&(r=r.slice(0,u)),r}}.call(Er={})),Er}var xr,kr,Tr,Ir=!1;function Ar(){return Ir||(Ir=!0,function(){var t;t=v.sep,xr=function(e,n){var r,i,o;for(i=e.length-1;e[i]===t;)i--;for(o=i,r=null;i>=0;)e[i]===t?null==r&&(r=e.substring(i+1,o+1)):0===i&&(or;n<=r?e++:e--)p.push(e);return p}.apply(this);for(u=e.length,l=t.length,i=0,o=0,a=[];ie;0<=e?t++:t--)l.push(t);return l}.apply(this);if(c=-1!==i.indexOf(t),i=i.replace(e,""),a=r.match(n,i),!c)for(o=r.basenameMatch(n,i),a=a.concat(o).sort((function(t,e){return t-e})),u=null,s=0;sFt.dom("span",{className:t.type},t.text))))}match(t){return t.query?function(t,e){let n=0,r=[];const i=[],o=yr.match(t,e);let s;for(s of o){if(s<0)continue;const e=t.substring(n,s);e&&(r.length>0&&i.push({text:r.join(""),type:"character-match"}),r=[],i.push({text:e})),r.push(t[s]),n=s+1}r.length>0&&i.push({text:r.join(""),type:"character-match"});return i.push({text:t.substring(n)}),i}(t.label,t.query):[{text:t.label}]}}var Or;const{Disposable:Pr,CompositeDisposable:Nr,TextEditor:Lr}=f;var Rr,jr,Dr={};jr={onCopy:"copy",onCut:"cut",onPaste:"paste",onCompositionEnd:"compositionend",onCompositionStart:"compositionstart",onCompositionUpdate:"compositionupdate",onKeyDown:"keydown",onKeyPress:"keypress",onKeyUp:"keyup",onFocus:"focus",onBlur:"blur",onChange:"change",onInput:"input",onSubmit:"submit",onClick:"click",onContextMenu:"contextmenu",onDoubleClick:"dblclick",onDrag:"drag",onDragEnd:"dragend",onDragEnter:"dragenter",onDragExit:"dragexit",onDragLeave:"dragleave",onDragOver:"dragover",onDragStart:"dragstart",onDrop:"drop",onMouseDown:"mousedown",onMouseEnter:"mouseenter",onMouseLeave:"mouseleave",onMouseMove:"mousemove",onMouseOut:"mouseout",onMouseOver:"mouseover",onMouseUp:"mouseup",onSelect:"select",onTouchCancel:"touchcancel",onTouchEnd:"touchend",onTouchMove:"touchmove",onTouchStart:"touchstart",onScroll:"scroll",onWheel:"wheel",onAbort:"abort",onCanPlay:"canplay",onCanPlayThrough:"canplaythrough",onDurationChange:"durationchange",onEmptied:"emptied",onEncrypted:"encrypted",onEnded:"ended",onError:"error",onLoadedData:"loadeddata",onLoadedMetadata:"loadedmetadata",onLoadStart:"loadstart",onPause:"pause",onPlay:"play",onPlaying:"playing",onProgress:"progress",onRateChange:"ratechange",onSeeked:"seeked",onSeeking:"seeking",onStalled:"stalled",onSuspend:"suspend",onTimeUpdate:"timeupdate",onVolumeChange:"volumechange",onWaiting:"waiting",onLoad:"load",onAnimationStart:"animationstart",onAnimationEnd:"animationend",onAnimationIteration:"animationiteration",onTransitionEnd:"transitionend"};var Fr={};function Mr(t,e,...n){for(let t=0;tMr(t,e,...n);for(const t of Fr)Mr[t]=(e,...n)=>Mr(t,e,...n);Rr=Mr;var Br,zr={},Ur={};Ur=new Map([["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["className","class"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["panose1","panose-1"],["paintOrder","paint-order"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xHeight","x-height"]]);function Hr(t,e,n,r,i){if(n)for(var o in n)"ref"!==o&&"on"!==o&&(o in jr||i&&o in i||("dataset"===o?Hr(t.dataset,null,n&&n.dataset,null,null):"innerHTML"!==o&&e&&Fr.has(e.tag)?t.removeAttribute(Ur.get(o)||o):(t[o]="",delete t[o])));if(i)for(var o in i)if("ref"!==o&&"on"!==o&&!(o in jr)){var s=n&&n[o],a=i[o];"dataset"===o?qr(t.dataset,s,a,!1):"style"===o&&"string"!=typeof a?("string"==typeof s&&(t.style="",s=null),qr(t.style,s,a,!0)):"attributes"===o?Gr(t,s,a):a!==s&&("innerHTML"!==o&&r&&Fr.has(r.tag)?t.setAttribute(Ur.get(o)||o,a):r&&"input"===r.tag&&"value"===o&&t[o]===a||(t[o]=a))}}function qr(t,e,n,r){if(e)for(var i in e)n&&i in n||(r?t[i]="":delete t[i]);if(n)for(var i in n){const r=e&&e[i],o=n[i];o!==r&&(t[i]=o)}}function Gr(t,e,n){if(e)for(var r in e)n&&r in n||t.removeAttribute(r);if(n)for(var r in n){const i=e&&e[r],o=n[r];o!==i&&t.setAttribute(r,o)}}function Vr(t,e){let n;if(null!=t.text)n=document.createTextNode(t.text);else{const{tag:r,children:i}=t;let{props:o}=t;if("function"==typeof r){let s;o&&o.ref&&(s=o.ref);const a=new r(o||{},i);t.component=a,n=a.element,e&&e.refs&&s&&(e.refs[s]=a)}else Fr.has(r)?(n=document.createElementNS("http://www.w3.org/2000/svg",r),i&&Wr(n,i,e),o&&Br(n,null,t,e)):(n=document.createElement(r),i&&Wr(n,i,e),o&&Br(n,null,t,e))}return t.domNode=n,n}function Wr(t,e,n){for(let r=0;r0?(i=Zr.pop()).clear():i=new Map,ei(i,e,o,s));var h=ti(f),d=h?i.get(h):null;if(null==d)t.insertBefore(zr(f,r),a.domNode),f=n[++u];else{var m=e[d];Qr(m,f,r),e[d]=void 0,t.insertBefore(m.domNode,a.domNode),f=n[++u]}}else c=e[--s];else a=e[++o];if(o>s){var g=n[l+1]?n[l+1].domNode:null;for(let e=u;e<=l;e++)t.insertBefore(zr(n[e],r),g)}else if(u>l)for(let t=o;t<=s;t++){var v=e[t];v&&Yr(v,r&&r.refs)}i&&Zr.push(i)}(r,t.children,e.children,n),Br(r,t,e,n),i=r),e.domNode=i,i!==r&&r.parentNode&&r.parentNode.replaceChild(i,r),i}{const i=r.parentNode,o=r.nextSibling;Yr(t,n&&n.refs);const s=zr(e,n);return i&&i.insertBefore(s,o),e.domNode=s,s}}let Zr=[new Map,new Map,new Map,new Map];function Yr(t,e,n=!0){const{domNode:r,props:i,children:o,component:s}=t,a=i&&i.ref;if(s)e&&a&&e[a]===s&&delete e[a],s.destroy&&s.destroy();else if(e&&a&&e[a]===r&&delete e[a],o)for(let t=0;t{this.resolveNextUpdatePromise=t}))),this.nextUpdatePromise}performUpdates(){for(;this.updateRequests.length>0;)this.updateRequests.shift()();for(this.pendingAnimationFrame=null;this.readRequests.length>0;)this.readRequests.shift()();if(this.nextUpdatePromise){let t=this.resolveNextUpdatePromise;this.nextUpdatePromise=null,this.resolveNextUpdatePromise=null,t()}}};let ri=null;var ii=function(){return ri||(ri=new ni),ri};const oi=new WeakSet;let si=0,ai=0;function ci(t){return null!=t&&!1!==t}function ui(t,e=!0){if(!ci(t.virtualNode))throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a valid virtualNode. Perhaps this component was never initialized?");if(null==t.element)throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a DOM element. Perhaps this component was never initialized?");let n=t.render();if(!ci(n)){const e=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+n+" returned from render()"+e)}si++;let r=t.virtualNode,i=t.element,o=Kr(r,n,{refs:t.refs,listenerContext:t});if(t.virtualNode=n,o!==i&&!e)throw new Error("The root node type changed on update, but the update was performed with the replaceNode option set to false");t.element=o,"function"==typeof t.writeAfterUpdate&&t.writeAfterUpdate(),"function"==typeof t.readAfterUpdate&&ii().readDocument((function(){t.readAfterUpdate()})),si--}function li(t,e=!0){ai++,fi(t.virtualNode),1===ai&&e&&t.element.remove(),ai--}function fi(t){t.component&&"function"==typeof t.component.destroy?t.component.destroy():t.children&&t.children.forEach(fi)}Xr={initialize:function(t){if("function"!=typeof t.update)throw new Error("Etch components must implement `update(props, children)`.");let e=t.render();if(!ci(e)){let n=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+e+" returned from render()"+n)}t.refs={},t.virtualNode=e,t.element=zr(t.virtualNode,{refs:t.refs,listenerContext:t})},update:function(t,e=!0){if(si>0)return ui(t,e),Promise.resolve();let n=ii();return oi.has(t)||(oi.add(t),n.updateDocument((function(){oi.delete(t),ui(t,e)}))),n.getNextUpdatePromise()},updateSync:ui,destroy:function(t,e=!0){if(si>0||ai>0)return li(t,e),Promise.resolve();let n=ii();return n.updateDocument((function(){li(t,e)})),n.getNextUpdatePromise()},destroySync:li};const{initialize:pi,update:hi,updateSync:di,destroy:mi,destroySync:gi}=Xr,vi=(Dr={dom:Rr,render:zr,initialize:pi,update:hi,updateSync:di,destroy:mi,destroySync:gi,setScheduler:function(t){ri=t},getScheduler:ii}).dom;Or=class{static setScheduler(t){Dr.setScheduler(t)}static getScheduler(t){return Dr.getScheduler()}constructor(t){this.props=t,this.props.hasOwnProperty("initialSelectionIndex")||(this.props.initialSelectionIndex=0),t.initiallyVisibleItemCount&&this.initializeVisibilityObserver(),this.computeItems(!1),this.disposables=new Nr,Dr.initialize(this),this.element.classList.add("select-list"),this.disposables.add(this.refs.queryEditor.onDidChange(this.didChangeQuery.bind(this))),t.skipCommandsRegistration||this.disposables.add(this.registerAtomCommands());const e=this.refs.queryEditor.element,n=this.didLoseFocus.bind(this);e.addEventListener("blur",n),this.didClickItemsList=!1,this.element.addEventListener("mousedown",(t=>{t.target===this.refs.items&&(this.didClickItemsList=!0)})),this.disposables.add(new Pr((()=>{e.removeEventListener("blur",n)})))}initializeVisibilityObserver(){this.visibilityObserver=new IntersectionObserver((t=>{for(const e of t)if(e.intersectionRatio>0){const t=e.target;this.visibilityObserver.unobserve(t);const n=Array.from(this.refs.items.children).indexOf(t);n>=0&&this.renderItemAtIndex(n)}}))}focus(){this.refs.queryEditor.element.focus()}didLoseFocus(t){this.didClickItemsList||this.element.contains(t.relatedTarget)?(this.didClickItemsList=!1,this.refs.queryEditor.element.focus()):document.hasFocus()&&this.cancelSelection()}reset(){this.refs.queryEditor.setText("")}destroy(){return this.disposables.dispose(),this.visibilityObserver&&this.visibilityObserver.disconnect(),Dr.destroy(this)}registerAtomCommands(){return T.atom.commands.add(this.element,{"core:move-up":t=>{this.selectPrevious(),t.stopPropagation()},"core:move-down":t=>{this.selectNext(),t.stopPropagation()},"core:move-to-top":t=>{this.selectFirst(),t.stopPropagation()},"core:move-to-bottom":t=>{this.selectLast(),t.stopPropagation()},"core:confirm":t=>{this.confirmSelection(),t.stopPropagation()},"core:cancel":t=>{this.cancelSelection(),t.stopPropagation()}})}update(t={}){let e=!1;return t.hasOwnProperty("items")&&(this.props.items=t.items,e=!0),t.hasOwnProperty("maxResults")&&(this.props.maxResults=t.maxResults,e=!0),t.hasOwnProperty("filter")&&(this.props.filter=t.filter,e=!0),t.hasOwnProperty("filterQuery")&&(this.props.filterQuery=t.filterQuery,e=!0),t.hasOwnProperty("query")&&(this.refs.queryEditor.setText(t.query),e=!1),t.hasOwnProperty("selectQuery")&&(t.selectQuery?this.refs.queryEditor.selectAll():this.refs.queryEditor.clearSelections()),t.hasOwnProperty("order")&&(this.props.order=t.order),t.hasOwnProperty("emptyMessage")&&(this.props.emptyMessage=t.emptyMessage),t.hasOwnProperty("errorMessage")&&(this.props.errorMessage=t.errorMessage),t.hasOwnProperty("infoMessage")&&(this.props.infoMessage=t.infoMessage),t.hasOwnProperty("loadingMessage")&&(this.props.loadingMessage=t.loadingMessage),t.hasOwnProperty("loadingBadge")&&(this.props.loadingBadge=t.loadingBadge),t.hasOwnProperty("itemsClassList")&&(this.props.itemsClassList=t.itemsClassList),t.hasOwnProperty("initialSelectionIndex")&&(this.props.initialSelectionIndex=t.initialSelectionIndex),e&&this.computeItems(),Dr.update(this)}render(){return vi.div({},vi(Lr,{ref:"queryEditor",mini:!0}),this.renderLoadingMessage(),this.renderInfoMessage(),this.renderErrorMessage(),this.renderItems())}renderItems(){if(this.items.length>0){const t=["list-group"].concat(this.props.itemsClassList||[]).join(" ");return this.visibilityObserver&&Dr.getScheduler().updateDocument((()=>{Array.from(this.refs.items.children).slice(this.props.initiallyVisibleItemCount).forEach((t=>{this.visibilityObserver.observe(t)}))})),this.listItems=this.items.map(((t,e)=>{const n=this.getSelectedItem()===t,r=!this.props.initiallyVisibleItemCount||ethis.didClickItem(e)})})),vi.ol({className:t,ref:"items"},...this.listItems)}return!this.props.loadingMessage&&this.props.emptyMessage?vi.span({ref:"emptyMessage"},this.props.emptyMessage):""}renderErrorMessage(){return this.props.errorMessage?vi.span({ref:"errorMessage"},this.props.errorMessage):""}renderInfoMessage(){return this.props.infoMessage?vi.span({ref:"infoMessage"},this.props.infoMessage):""}renderLoadingMessage(){return this.props.loadingMessage?vi.div({className:"loading"},vi.span({ref:"loadingMessage",className:"loading-message"},this.props.loadingMessage),this.props.loadingBadge?vi.span({ref:"loadingBadge",className:"badge"},this.props.loadingBadge):""):""}getQuery(){return this.refs&&this.refs.queryEditor?this.refs.queryEditor.getText():""}getFilterQuery(){return this.props.filterQuery?this.props.filterQuery(this.getQuery()):this.getQuery()}didChangeQuery(){this.props.didChangeQuery&&this.props.didChangeQuery(this.getFilterQuery()),this.computeItems()}didClickItem(t){this.selectIndex(t),this.confirmSelection()}computeItems(t){this.listItems=null,this.visibilityObserver&&this.visibilityObserver.disconnect();const e=this.props.filter||this.fuzzyFilter.bind(this);this.items=e(this.props.items.slice(),this.getFilterQuery()),this.props.order&&this.items.sort(this.props.order),this.props.maxResults&&(this.items=this.items.slice(0,this.props.maxResults)),this.selectIndex(this.props.initialSelectionIndex,t)}fuzzyFilter(t,e){if(0===e.length)return t;{const n=[];for(const r of t){const t=this.props.filterKeyForItem?this.props.filterKeyForItem(r):r;let i=yr.score(t,e);i>0&&n.push({item:r,score:i})}return n.sort(((t,e)=>e.score-t.score)),n.map((t=>t.item))}}getSelectedItem(){return void 0===this.selectionIndex?null:this.items[this.selectionIndex]}renderItemAtIndex(t){const e=this.items[t],n=this.getSelectedItem()===e,r=this.listItems[t].component;this.visibilityObserver&&this.visibilityObserver.unobserve(r.element),r.update({element:this.props.elementForItem(e,{selected:n,index:t,visible:!0}),selected:n,onclick:()=>this.didClickItem(t)})}selectPrevious(){return void 0===this.selectionIndex?this.selectLast():this.selectIndex(this.selectionIndex-1)}selectNext(){return void 0===this.selectionIndex?this.selectFirst():this.selectIndex(this.selectionIndex+1)}selectFirst(){return this.selectIndex(0)}selectLast(){return this.selectIndex(this.items.length-1)}selectNone(){return this.selectIndex(void 0)}selectIndex(t,e=!0){t>=this.items.length?t=0:t<0&&(t=this.items.length-1);const n=this.selectionIndex;return this.selectionIndex=t,void 0!==t&&this.props.didChangeSelection&&this.props.didChangeSelection(this.getSelectedItem()),e?this.listItems?(n>=0&&this.renderItemAtIndex(n),t>=0&&this.renderItemAtIndex(t),Dr.getScheduler().getNextUpdatePromise()):Dr.update(this):Promise.resolve()}selectItem(t){const e=this.items.indexOf(t);if(-1===e)throw new Error("Cannot select the specified item because it does not exist.");return this.selectIndex(e)}confirmSelection(){const t=this.getSelectedItem();null!=t?this.props.didConfirmSelection&&this.props.didConfirmSelection(t):this.props.didConfirmEmptySelection&&this.props.didConfirmEmptySelection()}cancelSelection(){this.props.didCancelSelection&&this.props.didCancelSelection()}};class yi{constructor(t){this.mouseDown=this.mouseDown.bind(this),this.mouseUp=this.mouseUp.bind(this),this.didClick=this.didClick.bind(this),this.selected=t.selected,this.onclick=t.onclick,this.element=t.element,this.element.addEventListener("mousedown",this.mouseDown),this.element.addEventListener("mouseup",this.mouseUp),this.element.addEventListener("click",this.didClick),this.selected&&this.element.classList.add("selected"),this.domEventsDisposable=new Pr((()=>{this.element.removeEventListener("mousedown",this.mouseDown),this.element.removeEventListener("mouseup",this.mouseUp),this.element.removeEventListener("click",this.didClick)})),Dr.getScheduler().updateDocument(this.scrollIntoViewIfNeeded.bind(this))}mouseDown(t){t.preventDefault()}mouseUp(t){t.preventDefault()}didClick(t){t.preventDefault(),this.onclick()}destroy(){this.element.remove(),this.domEventsDisposable.dispose()}update(t){this.element.removeEventListener("mousedown",this.mouseDown),this.element.removeEventListener("mouseup",this.mouseUp),this.element.removeEventListener("click",this.didClick),this.element.parentNode.replaceChild(t.element,this.element),this.element=t.element,this.element.addEventListener("mousedown",this.mouseDown),this.element.addEventListener("mouseup",this.mouseUp),this.element.addEventListener("click",this.didClick),t.selected&&this.element.classList.add("selected"),this.selected=t.selected,this.onclick=t.onclick,Dr.getScheduler().updateDocument(this.scrollIntoViewIfNeeded.bind(this))}scrollIntoViewIfNeeded(){this.selected&&this.element.scrollIntoViewIfNeeded(!1)}}var wi=x(Or);async function bi({items:t,itemTemplate:e,itemFilterKey:n,didChangeSelection:r}){let i;const o=document.activeElement;try{return await new Promise((o=>{let s,a,c="Loading...",u=!1;const l=t=>{u||be(f.update(t))};"function"==typeof t&&(s=async e=>{const n=setTimeout((()=>l({loadingMessage:"Loading..."})),300),r=await t(e);clearTimeout(n),l({items:r,emptyMessage:"Nothing matches the search value",loadingMessage:void 0})},c=void 0,a="Please enter a search value");const f=new wi({items:[],elementForItem:t=>Ft.render(e(t,f)),filterKeyForItem:t=>""+t[n],didChangeSelection:r,didCancelSelection:()=>{u=!0,o()},didConfirmSelection:t=>{u=!0,o(t)},loadingMessage:c,didChangeQuery:s,emptyMessage:a,itemsClassList:["atom-typescript"]});"function"!=typeof t&&be(Promise.resolve(t).then((t=>{l({items:t,loadingMessage:void 0})}))),i=atom.workspace.addModalPanel({item:f,visible:!0}),f.focus()}))}finally{i&&i.destroy(),o&&o.focus()}}const Ei=[];function _i(t,e,n){Ei.push({selector:t,command:e,desc:n})}async function Si(t,e,n){const r=Promise.all(t.body.refs.map((async t=>{var e;const n=(await new Promise(((e,n)=>E.readFile(t.file,((t,r)=>{t?n(t):e(r.toString("utf-8"))}))))).split(/\r?\n/g),r=void 0!==t.contextStart&&void 0!==t.contextEnd?n.slice(t.contextStart.line-1,t.contextEnd.line):n,i=(await Me(r.join("\n"),"source.tsx"))[t.start.line-((null===(e=t.contextStart)||void 0===e?void 0:e.line)||1)];return{...t,hlText:i}}))),i=await bi({items:r,itemTemplate:(t,e)=>Ft.dom("li",null,Ft.dom(Cr,{label:atom.project.relativize(t.file),query:e.getFilterQuery()}),Ft.dom("div",{className:"pull-right"},"line: ",t.start.line),Ft.dom(dr,{highlightedText:t.hlText})),itemFilterKey:"file"});i&&await n(e,i)}async function xi(t,e,n){if(t.body)if(t.body.length>1){const r=await bi({items:t.body,itemTemplate:(t,e)=>Ft.dom("li",null,Ft.dom(Cr,{label:t.file,query:e.getFilterQuery()}),Ft.dom("div",{className:"pull-right"},"line: ",t.start.line)),itemFilterKey:"file"});r&&await n(e,r)}else t.body.length>0&&await n(e,t.body[0])}function ki(t){const e=t.spans.map(ke).reduce(((t,e)=>e.union(t)));return{kind:Ii[t.kind],plainText:t.text,startPosition:e.start,endPosition:e.end,landingPosition:t.nameSpan?ke(t.nameSpan).start:void 0,children:t.childItems?t.childItems.map(ki).sort(Ti):[]}}function Ti(t,e){const n=t.landingPosition?t.landingPosition:t.startPosition,r=e.landingPosition?e.landingPosition:e.startPosition;return n.compare(r)}_i("atom-text-editor","typescript:find-references",(t=>({description:"Find where symbol under text cursor is referenced",async didDispatch(e){const n=Fe(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("references",n);await Si(i,e,t.histGoForward)}}))),_i("atom-text-editor","typescript:go-to-declaration",(t=>({description:"Go to declaration of symbol under text cursor",async didDispatch(e){const n=Fe(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("definition",n);await xi(i,e,t.histGoForward)}})));const Ii={directory:"file",module:"module","external module name":"module",class:"class","local class":"class",method:"method",property:"property",getter:"property",setter:"property","JSX attribute":"field",constructor:"constructor",enum:"enum",interface:"interface",type:"interface",function:"function","local function":"function",label:"variable",alias:"variable",var:"variable",let:"variable","local var":"variable",parameter:"variable","enum member":"constant",const:"constant",string:"string","":void 0,warning:void 0,keyword:void 0,script:void 0,call:void 0,index:void 0,construct:void 0,"type parameter":void 0,"primitive type":void 0};class Ai{constructor(t){this.getClient=t,this.triggerCharacters=new Set([]),this.grammarScopes=Re(),this.priority=100,this.disposables=new p;const e=new Set(["<","(",","]),n=new Set([]);this.disposables.add(atom.config.observe("atom-typescript.sigHelpDisplayOnChange",(t=>{this.triggerCharacters=t?e:n})))}dispose(){this.disposables.dispose()}async getSignatureHelp(t,e){try{const n=t.getPath();if(void 0===n)return;const r=await this.getClient(n),i=(await r.execute("signatureHelp",{file:n,line:e.row+1,offset:e.column+1})).body;return{signatures:i.items.map(Ce),activeParameter:i.argumentIndex,activeSignature:i.selectedItemIndex}}catch(t){return}}}function Ci(t){return Ft.dom("li",null,t.description)}class Oi{constructor(t,e){this.getClient=t,this.applyEdits=e,this.selector=Re().map((t=>t.includes(".")?"."+t:t)).join(", "),this.disableForSelector=".comment",this.inclusionPriority=3,this.suggestionPriority=atom.config.get("atom-typescript").autocompletionSuggestionPriority,this.excludeLowerPriority=!1}async getSuggestions(t){const e=function(t){const e=t.editor.getPath();if(void 0===e)return;return{file:e,line:t.bufferPosition.row+1,offset:t.bufferPosition.column+1}}(t),n=function(t){const e=t.editor.getBuffer().getTextInRange([[t.bufferPosition.row,0],t.bufferPosition]).match(Pi);return e?e[0]:""}(t);if(!e)return[];const r=function(t){if(void 0===t)return;if(!t)return;const e=t.slice(-1);if(Fi.has(e))return e;return}(function(t,e){let n;const r=new f.Range([0,0],e);return t.backwardsScanInRange(/\S/,r,(({matchText:t,stop:e})=>{n=t,e()})),n}(t.editor.getBuffer(),t.bufferPosition));if(!n&&!t.activatedManually&&!r)return[];if(Li(t.scopeDescriptor.getScopesArray(),"string.template.")&&!Li(t.scopeDescriptor.getScopesArray(),"template.expression."))return[];try{let i=await this.getSuggestionsWithCache({prefix:n,location:e,triggerCharacter:r,activatedManually:t.activatedManually});return i=yr.filter(i,n,{key:"displayText"}),i.map((r=>({replacementPrefix:r.replacementRange?t.editor.getTextInBufferRange(r.replacementRange):n,location:e,...this.getDetailsFromCache(r),...ji(t,r)})))}catch(t){return[]}}async getSuggestionDetailsOnSelect(t){return"text"in t&&!("rightLabel"in t)?this.getAdditionalDetails(t):null}onDidInsertSuggestion(t){const e=t.suggestion;if(!e.hasAction)return;if(!this.lastSuggestions)return;const n=this.lastSuggestions.client;let r=this.getDetailsFromCache(e);be((async()=>{var t;if(r||(r=await this.getAdditionalDetails(e)),!(null===(t=r)||void 0===t?void 0:t.details.codeActions))return;let i;i=1===r.details.codeActions.length?r.details.codeActions[0]:await bi({items:r.details.codeActions,itemTemplate:Ci,itemFilterKey:"description"}),i&&(await this.applyEdits(i.changes),i.commands&&await Promise.all(i.commands.map((t=>n.execute("applyCodeActionCommand",{command:t})))))})())}async getAdditionalDetails(t){var e;if(void 0===t.identifier)return null;if(!this.lastSuggestions)return null;const n=await this.lastSuggestions.client.execute("completionEntryDetails",{entryNames:[t.identifier],...this.lastSuggestions.location});if(!n.body)return null;const[r]=n.body;if(!r)return null;let i=r.displayParts;i.length>=3&&"("===i[0].text&&i[1].text===t.leftLabel&&")"===i[2].text&&(i=i.slice(3));let o=i.map((t=>t.text)).join("");const s=t.hasAction&&1===(null===(e=r.codeActions)||void 0===e?void 0:e.length)?r.codeActions[0].description+"\n\n":"";s&&(o=s);const a=s+r.displayParts.map((t=>t.text)).join("")+(r.documentation?"\n\n"+r.documentation.map((t=>t.text)).join(" "):"");return this.lastSuggestions.details.set(t.displayText,{details:r,rightLabel:o,description:a}),{...t,details:r,rightLabel:o,description:a}}getDetailsFromCache(t){if(!this.lastSuggestions)return null;const e=this.lastSuggestions.details.get(t.displayText);return e||null}async getSuggestionsWithCache({prefix:t,location:e,triggerCharacter:n,activatedManually:r}){if(this.lastSuggestions&&!r){const n=this.lastSuggestions.location,r=Ni(this.lastSuggestions.prefix,n.offset),i=Ni(t,e.offset);if(n.file===e.file&&n.line===e.line&&r===i&&0!==this.lastSuggestions.suggestions.length)return this.lastSuggestions.suggestions}const i=await this.getClient(e.file),o=await async function({client:t,location:e,triggerCharacter:n}){if(parseInt(t.version.split(".")[0],10)>=3){var r;const i=await t.execute("completionInfo",{includeExternalModuleExports:!1,includeInsertTextCompletions:!0,triggerCharacter:n,...e});return i.body.entries.map(Ri.bind(null,null===(r=i.body)||void 0===r?void 0:r.isMemberCompletion))}return(await t.execute("completions",{includeExternalModuleExports:!1,includeInsertTextCompletions:!0,...e})).body.map(Ri.bind(null,void 0))}({client:i,location:e,triggerCharacter:r?void 0:n});return this.lastSuggestions={client:i,location:e,prefix:t,suggestions:o,details:new Map},o}}const Pi=/(?:(?![\u{10000}-\u{10FFFF}])[\$_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}])(?:(?![\u{10000}-\u{10FFFF}])[\$_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\u200C\u200D\p{Mn}\p{Mc}\p{Nd}\p{Pc}])*$/u;function Ni(t,e){return e-("."===t?0:t.length)}function Li(t,e){for(const n of t)if(n.includes(e))return!0;return!1}function Ri(t,e){return{displayText:e.name,text:void 0!==e.insertText?e.insertText:e.name,leftLabel:e.kind,replacementRange:e.replacementSpan?ke(e.replacementSpan):void 0,type:Di[e.kind],isMemberCompletion:t,identifier:void 0!==e.source?{name:e.name,source:e.source}:e.name,hasAction:e.hasAction}}function ji(t,e){return atom.config.get("atom-typescript.autocompleteParens")&&["function","method"].includes(e.leftLabel)&&!function(t){const e=t.editor.getBuffer(),n=t.bufferPosition;return!!e.getTextInRange([n,[n.row,e.lineLengthForRow(n.row)]]).match(/\s*\(/)}(t)?{...e,snippet:e.text+"($1)",text:void 0}:e}const Di={directory:"require",module:"import","external module name":"import",class:"class","local class":"class",method:"method",property:"property",getter:"property",setter:"property","JSX attribute":"property",constructor:"method",enum:"type",interface:"type",type:"type","type parameter":"type","primitive type":"type",function:"function","local function":"function",label:"variable",alias:"import",var:"variable",let:"variable","local var":"variable",parameter:"variable","enum member":"constant",const:"constant",string:"value",keyword:"keyword","":void 0,warning:void 0,script:void 0,call:void 0,index:void 0,construct:void 0},Fi=new Set(Object.keys({".":null,'"':null,"'":null,"`":null,"/":null,"@":null,"<":null,"#":null}));async function Mi(t,e){const n=await async function(t,e){try{return await t.execute("getApplicableRefactors",{triggerReason:"invoked",...e})}catch{return}}(t,e);if(!n)return[];if(void 0===n.body||0===n.body.length)return[];const r=[];for(const t of n.body)for(const n of t.actions)r.push({refactorName:t.name,refactorDescription:t.description,refactorRange:e,actionName:n.name,actionDescription:n.description,inlineable:void 0===t.inlineable||t.inlineable});return r}async function $i(t,e,n){const r=await e.execute("getEditsForRefactor",{...t.refactorRange,refactor:t.refactorName,action:t.actionName});if(void 0===r.body)return;const{edits:i,renameFilename:o,renameLocation:s}=r.body;if(await n.applyEdits(i),void 0===o||void 0===s)return;const a=await atom.workspace.open(o,{searchAllPanes:!0,initialLine:s.line-1,initialColumn:s.offset-1});await atom.commands.dispatch(atom.views.getView(a),"typescript:rename-refactor")}_i("atom-text-editor","typescript:refactor-selection",(t=>({description:"Get a list of applicable refactors to selected code",async didDispatch(e){const n=Fe(e);if(!n)return;const r=e.getSelectedBufferRange(),i=await t.getClient(n.file),o=r.isEmpty()?n:{file:n.file,startLine:r.start.row+1,startOffset:r.start.column+1,endLine:r.end.row+1,endOffset:r.end.column+1},s=await Mi(i,o);if(0===s.length)return void atom.notifications.addInfo("AtomTS: No applicable refactors for the selection");const a=await bi({items:s,itemTemplate:(t,e)=>Ft.dom("li",null,Ft.dom(Cr,{label:`${t.refactorDescription}: ${t.actionDescription}`,query:e.getFilterQuery()})),itemFilterKey:"actionDescription"});void 0!==a&&await $i(a,i,t)}})));class Bi{constructor(t,e,n){this.clientResolver=t,this.errorPusher=e,this.applyEdits=n,this.supportedFixes=new WeakMap}async getFixableRanges(t,e){const n=t.getPath();if(void 0===n)return[];const r=this.errorPusher.getErrorsInRange(n,e),i=await this.clientResolver.get(n),o=await this.getSupportedFixes(i);return Array.from(r).filter((t=>void 0!==t.code&&o.has(t.code))).map((t=>ke(t)))}async runCodeFix(t,e){const n=t.getPath();if(void 0===n)return[];const r=await this.clientResolver.get(n),i=await this.getSupportedFixes(r),o=Array.from(this.errorPusher.getErrorsAt(n,e)).filter((t=>void 0!==t.code&&i.has(t.code))).map((t=>r.execute("getCodeFixes",{file:n,startLine:t.start.line,startOffset:t.start.offset,endLine:t.end.line,endOffset:t.end.offset,errorCodes:[t.code]}))),s=await Promise.all(o),a=[];for(const t of s)if(t.body)for(const e of t.body)a.push(e);const c=await Mi(r,{file:n,...Se(e)});return a.push(...c),a}async applyFix(t){if("changes"in t)return this.applyEdits(t.changes);return $i(t,await this.clientResolver.get(t.refactorRange.file),{applyEdits:this.applyEdits})}dispose(){}async getSupportedFixes(t){let e=this.supportedFixes.get(t);if(e)return e;const n=await t.execute("getSupportedCodeFixes");if(!n.body)throw new Error("No code fixes are supported");return e=new Set(n.body.map((t=>parseInt(t,10)))),this.supportedFixes.set(t,e),e}}async function zi(t,e){let n;try{return await new Promise(((r,i)=>{try{const o=new d({command:t,args:["--init"],options:{cwd:e},exit:t=>{0===t?r():i(new Error("Tsc ended with nonzero exit code "+t))}});n=o.onWillThrowError(i)}catch(t){i(t)}}))}finally{n&&n.dispose()}}_i("atom-text-editor","typescript:build",(t=>({description:"Compile all files in project related to current active text editor",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n);t.reportBuildStatus(void 0);const i=await r.execute("projectInfo",{file:n,needFileNameList:!0}),o=new Set(i.body.fileNames);o.delete(i.body.configFileName);let s=0;const a=[...o.values()].map((e=>{return n=r.execute("compileOnSaveEmitFile",{file:e,forced:!0}),i=()=>{s+=1,t.reportProgress({max:o.size,value:s})},n.then(i,i),n;var n,i}));try{if((await Promise.all(a)).some((t=>!1===t.body)))throw new Error("Emit failed");t.reportBuildStatus({success:!0})}catch(e){const n=e;console.error(n),t.reportBuildStatus({success:!1,message:n.message})}}}))),_i("atom-text-editor","typescript:check-all-files",(t=>({description:"Typecheck all files in project related to current active text editor",async didDispatch(e){var n;const r=e.getPath();if(void 0===r)return;const i=await t.getClient(r),o=await i.execute("projectInfo",{file:r,needFileNameList:!0}),s=new Set(null===(n=o.body.fileNames)||void 0===n?void 0:n.filter((t=>!t.endsWith("tsconfig.json")&&!t.includes(`${v.sep}node_modules${v.sep}`)))),a=s.size;if(i.multistepSupported){const e=i.on("syntaxDiag",(e=>{"file"in e&&s.delete(e.file),t.reportProgress({max:a,value:a-s.size})}));t.reportProgress({max:a,value:0}),await i.execute("geterrForProject",{file:r,delay:0}),e.dispose()}else{let e;const n=i.on("syntaxDiag",(r=>{void 0!==e&&window.clearTimeout(e),e=window.setTimeout((()=>{s.clear(),n.dispose(),t.reportProgress({max:a,value:a})}),2e3),"file"in r&&s.delete(r.file),0===s.size&&(n.dispose(),window.clearTimeout(e)),t.reportProgress({max:a,value:a-s.size})}));t.reportProgress({max:a,value:0}),await i.execute("geterrForProject",{file:r,delay:0})}}}))),_i("atom-workspace","typescript:clear-errors",(t=>({description:"Clear error messages",didDispatch(){t.clearErrors()}}))),_i("atom-text-editor","typescript:format-code",(t=>({description:"Format code in currently active text editor",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=[];for(const t of e.getSelectedBufferRanges())t.isEmpty()||r.push({line:(i=t).start.row+1,offset:i.start.column+1,endLine:i.end.row+1,endOffset:i.end.column+1});var i;if(0===r.length){const t=e.getBuffer().getEndPosition();r.push({line:1,offset:1,endLine:t.row+1,endOffset:t.column+1})}const o=await t.getClient(n),s=[];for(const t of r){const e=await o.execute("format",{...t,file:n});e.body&&s.push(...e.body)}s.length>0&&e.transact((()=>{!function(t,e){for(let n=e.length-1;n>=0;n--)t.setTextInBufferRange(ke(e[n]),e[n].newText)}(e,s)}))}}))),_i("atom-text-editor","typescript:initialize-config",(()=>({description:"Create tsconfig.json in the project related to currently-active text edtior",async didDispatch(t,e){const n=atom.project.getDirectories();if(0===n.length)return e();const r=t.getPath();if(void 0===r)return;const i=(await er(r,"tsc")).pathToBin;for(const t of n)t.contains(r)&&(await zi(i,t.getPath()),atom.notifications.addSuccess("Successfully created tsconfig.json in "+t.getPath()))}}))),_i("atom-text-editor","typescript:organize-imports",(t=>({description:"Organize module imports",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n),i=await r.execute("organizeImports",{scope:{type:"file",args:{file:n}}});i.body.length>0&&await t.applyEdits(i.body)}}))),_i("atom-text-editor","typescript:reload-projects",(t=>({description:"Reload projects",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n);await r.execute("reloadProjects")}})));var Ui,Hi,qi={},Gi=!1;function Vi(){return Gi||(Gi=!0,Ui={},function(){var t="object"==typeof self&&self.self===self&&self||"object"==typeof T&&T.global===T&&T||this||{},e=t._,n=Array.prototype,r=Object.prototype,i="undefined"!=typeof Symbol?Symbol.prototype:null,o=n.push,s=n.slice,a=r.toString,c=r.hasOwnProperty,u=Array.isArray,l=Object.keys,f=Object.create,p=function(){},h=function(t){return t instanceof h?t:this instanceof h?void(this._wrapped=t):new h(t)};void 0===Ui||Ui.nodeType?t._=h:(!module.nodeType&&Ui&&(Ui=h),Hi=h,Ui._=Hi),h.VERSION="1.9.1";var d,m=function(t,e,n){if(void 0===e)return t;switch(null==n?3:n){case 1:return function(n){return t.call(e,n)};case 3:return function(n,r,i){return t.call(e,n,r,i)};case 4:return function(n,r,i,o){return t.call(e,n,r,i,o)}}return function(){return t.apply(e,arguments)}},g=function(t,e,n){return h.iteratee!==d?h.iteratee(t,e):null==t?h.identity:h.isFunction(t)?m(t,e,n):h.isObject(t)&&!h.isArray(t)?h.matcher(t):h.property(t)};h.iteratee=d=function(t,e){return g(t,e,1/0)};var v=function(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),r=Array(n),i=0;i=0&&e<=_};h.each=h.forEach=function(t,e,n){var r,i;if(e=m(e,n),x(t))for(r=0,i=t.length;r0?0:s-1;for(i||(r=e[o?o[a]:a],a+=t);a>=0&&a=3;return e(t,m(n,i,4),r,o)}};h.reduce=h.foldl=h.inject=k(1),h.reduceRight=h.foldr=k(-1),h.find=h.detect=function(t,e,n){var r=(x(t)?h.findIndex:h.findKey)(t,e,n);if(void 0!==r&&-1!==r)return t[r]},h.filter=h.select=function(t,e,n){var r=[];return e=g(e,n),h.each(t,(function(t,n,i){e(t,n,i)&&r.push(t)})),r},h.reject=function(t,e,n){return h.filter(t,h.negate(g(e)),n)},h.every=h.all=function(t,e,n){e=g(e,n);for(var r=!x(t)&&h.keys(t),i=(r||t).length,o=0;o=0},h.invoke=v((function(t,e,n){var r,i;return h.isFunction(e)?i=e:h.isArray(e)&&(r=e.slice(0,-1),e=e[e.length-1]),h.map(t,(function(t){var o=i;if(!o){if(r&&r.length&&(t=E(t,r)),null==t)return;o=t[e]}return null==o?o:o.apply(t,n)}))})),h.pluck=function(t,e){return h.map(t,h.property(e))},h.where=function(t,e){return h.filter(t,h.matcher(e))},h.findWhere=function(t,e){return h.find(t,h.matcher(e))},h.max=function(t,e,n){var r,i,o=-1/0,s=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=x(t)?t:h.values(t)).length;ao&&(o=r);else e=g(e,n),h.each(t,(function(t,n,r){((i=e(t,n,r))>s||i===-1/0&&o===-1/0)&&(o=t,s=i)}));return o},h.min=function(t,e,n){var r,i,o=1/0,s=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=x(t)?t:h.values(t)).length;ar||void 0===n)return 1;if(n0?0:i-1;o>=0&&o0?a=o>=0?o:Math.max(o+c,a):c=o>=0?Math.min(o+1,c):o+c+1;else if(n&&o&&c)return r[o=n(r,i)]===i?o:-1;if(i!=i)return(o=e(s.call(r,a,c),h.isNaN))>=0?o+a:-1;for(o=t>0?a:c-1;o>=0&&oe?(r&&(clearTimeout(r),r=null),a=u,s=t.apply(i,o),r||(i=o=null)):r||!1===n.trailing||(r=setTimeout(c,l)),s};return u.cancel=function(){clearTimeout(r),a=0,r=i=o=null},u},h.debounce=function(t,e,n){var r,i,o=function(e,n){r=null,n&&(i=t.apply(e,n))},s=v((function(s){if(r&&clearTimeout(r),n){var a=!r;r=setTimeout(o,e),a&&(i=t.apply(this,s))}else r=h.delay(o,e,this,s);return i}));return s.cancel=function(){clearTimeout(r),r=null},s},h.wrap=function(t,e){return h.partial(e,t)},h.negate=function(t){return function(){return!t.apply(this,arguments)}},h.compose=function(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}},h.after=function(t,e){return function(){if(--t<1)return e.apply(this,arguments)}},h.before=function(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}},h.once=h.partial(h.before,2),h.restArguments=v;var L=!{toString:null}.propertyIsEnumerable("toString"),R=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],j=function(t,e){var n=R.length,i=t.constructor,o=h.isFunction(i)&&i.prototype||r,s="constructor";for(b(t,s)&&!h.contains(e,s)&&e.push(s);n--;)(s=R[n])in t&&t[s]!==o[s]&&!h.contains(e,s)&&e.push(s)};h.keys=function(t){if(!h.isObject(t))return[];if(l)return l(t);var e=[];for(var n in t)b(t,n)&&e.push(n);return L&&j(t,e),e},h.allKeys=function(t){if(!h.isObject(t))return[];var e=[];for(var n in t)e.push(n);return L&&j(t,e),e},h.values=function(t){for(var e=h.keys(t),n=e.length,r=Array(n),i=0;i1&&(r=m(r,e[1])),e=h.allKeys(t)):(r=$,e=C(e,!1,!1),t=Object(t));for(var i=0,o=e.length;i1&&(n=e[1])):(e=h.map(C(e,!1,!1),String),r=function(t,n){return!h.contains(e,n)}),h.pick(t,r,n)})),h.defaults=D(h.allKeys,!0),h.create=function(t,e){var n=y(t);return e&&h.extendOwn(n,e),n},h.clone=function(t){return h.isObject(t)?h.isArray(t)?t.slice():h.extend({},t):t},h.tap=function(t,e){return e(t),t},h.isMatch=function(t,e){var n=h.keys(e),r=n.length;if(null==t)return!r;for(var i=Object(t),o=0;o":">",'"':""","'":"'","`":"`"},U=h.invert(z),H=function(t){var e=function(e){return t[e]},n="(?:"+h.keys(t).join("|")+")",r=RegExp(n),i=RegExp(n,"g");return function(t){return t=null==t?"":""+t,r.test(t)?t.replace(i,e):t}};h.escape=H(z),h.unescape=H(U),h.result=function(t,e,n){h.isArray(e)||(e=[e]);var r=e.length;if(!r)return h.isFunction(n)?n.call(t):n;for(var i=0;i/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var G=/(.)^/,V={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},W=/\\|'|\r|\n|\u2028|\u2029/g,X=function(t){return"\\"+V[t]};h.template=function(t,e,n){!e&&n&&(e=n),e=h.defaults({},e,h.templateSettings);var r,i=RegExp([(e.escape||G).source,(e.interpolate||G).source,(e.evaluate||G).source].join("|")+"|$","g"),o=0,s="__p+='";t.replace(i,(function(e,n,r,i,a){return s+=t.slice(o,a).replace(W,X),o=a+e.length,n?s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?s+="'+\n((__t=("+r+"))==null?'':__t)+\n'":i&&(s+="';\n"+i+"\n__p+='"),e})),s+="';\n",e.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{r=new Function(e.variable||"obj","_",s)}catch(t){throw t.source=s,t}var a=function(t){return r.call(this,t,h)},c=e.variable||"obj";return a.source="function("+c+"){\n"+s+"}",a},h.chain=function(t){var e=h(t);return e._chain=!0,e};var K=function(t,e){return t._chain?h(e).chain():e};h.mixin=function(t){return h.each(h.functions(t),(function(e){var n=h[e]=t[e];h.prototype[e]=function(){var t=[this._wrapped];return o.apply(t,arguments),K(this,n.apply(h,t))}})),h},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],(function(t){var e=n[t];h.prototype[t]=function(){var n=this._wrapped;return e.apply(n,arguments),"shift"!==t&&"splice"!==t||0!==n.length||delete n[0],K(this,n)}})),h.each(["concat","join","slice"],(function(t){var e=n[t];h.prototype[t]=function(){return K(this,e.apply(this._wrapped,arguments))}})),h.prototype.value=function(){return this._wrapped},h.prototype.valueOf=h.prototype.toJSON=h.prototype.value,h.prototype.toString=function(){return String(this._wrapped)},"function"==typeof define&&define.amd&&define("underscore",[],(function(){return h}))}()),Ui}var Wi,Xi=!1;function Ki(){return Xi||(Xi=!0,function(){var t,e,n,r,i,o,s,a,c=[].slice;a=Vi(),n={cmd:"⌘",ctrl:"⌃",alt:"⌥",option:"⌥",shift:"⇧",enter:"⏎",left:"←",right:"→",up:"↑",down:"↓"},r={cmd:"Cmd",ctrl:"Ctrl",alt:"Alt",option:"Alt",shift:"Shift",enter:"Enter",left:"Left",right:"Right",up:"Up",down:"Down"},o={"~":"`",_:"-","+":"=","|":"\\","{":"[","}":"]",":":";",'"':"'","<":",",">":".","?":"/"},s=function(t){var e,n,r,i,o;if(r=0,n=[],null==t)return n;for(e=i=0,o=t.length;i=0&&t.splice(n,1),t},setValueForKeyPath:function(t,e,n){var r,i;for(i=s(e);i.length>1;)null==t[r=i.shift()]&&(t[r]={}),t=t[r];return null!=n?t[i.shift()]=n:delete t[i.shift()]},hasKeyPath:function(t,e){var n,r,i,o;for(i=0,o=(r=s(e)).length;i0?s<=a:s>=a;o=s+=i)u.push(t.splice.apply(t,[e+o,0].concat(c.call(r.slice(o,o+i)))));return u},sum:function(t){var e,n,r;for(e=0,n=0,r=t.length;n=0&&t.length%1==0}function p(t,e){for(var n=-1,r=t.length;++n3?t(r,i,c,a):(s=o,o=i,t(r,c,a))}}function L(t,e){return e}function R(t,e,r){r=r||n;var i=f(e)?[]:{};t(e,(function(t,e,n){t(b((function(t,r){r.length<=1&&(r=r[0]),i[e]=r,n(t)})))}),(function(t){r(t,i)}))}function j(t,e,n,r){var i=[];t(e,(function(t,e,r){n(t,(function(t,e){i=i.concat(e||[]),r(t)}))}),(function(t){r(t,i)}))}function D(t,r,i){if(null==r)r=1;else if(0===r)throw new Error("Concurrency must not be zero");function o(t,r,i,o){if(null!=o&&"function"!=typeof o)throw new Error("task callback must be a function");if(t.started=!0,l(r)||(r=[r]),0===r.length&&t.idle())return e.setImmediate((function(){t.drain()}));p(r,(function(e){var r={data:e,callback:o||n};i?t.tasks.unshift(r):t.tasks.push(r),t.tasks.length===t.concurrency&&t.saturated()})),e.setImmediate(t.process)}function s(t,e){return function(){c-=1;var n=!1,r=arguments;p(e,(function(t){p(u,(function(e,r){e!==t||n||(u.splice(r,1),n=!0)})),t.callback.apply(t,r)})),t.tasks.length+c===0&&t.drain(),t.process()}}var c=0,u=[],f={tasks:[],concurrency:r,payload:i,saturated:n,empty:n,drain:n,started:!1,paused:!1,push:function(t,e){o(f,t,!1,e)},kill:function(){f.drain=n,f.tasks=[]},unshift:function(t,e){o(f,t,!0,e)},process:function(){for(;!f.paused&&cr?1:0}e.map(t,(function(t,e){n(t,(function(n,r){n?e(n):e(null,{value:t,criteria:r})}))}),(function(t,e){if(t)return r(t);r(null,h(e.sort(i),(function(t){return t.value})))}))},e.auto=function(t,r,i){"function"==typeof arguments[1]&&(i=r,r=null),i=c(i||n);var o=y(t),s=o.length;if(!s)return i(null);r||(r=s);var a={},u=0,f=!1,h=[];function d(t){h.unshift(t)}function w(t){var e=v(h,t);e>=0&&h.splice(e,1)}function E(){s--,p(h.slice(0),(function(t){t()}))}d((function(){s||i(null,a)})),p(o,(function(n){if(!f){for(var o,s=l(t[n])?t[n]:[t[n]],c=b((function(t,r){if(u--,r.length<=1&&(r=r[0]),t){var o={};g(a,(function(t,e){o[e]=t})),o[n]=r,f=!0,i(t,o)}else a[n]=r,e.setImmediate(E)})),p=s.slice(0,s.length-1),h=p.length;h--;){if(!(o=t[p[h]]))throw new Error("Has nonexistent dependency in "+p.join(", "));if(l(o)&&v(o,n)>=0)throw new Error("Has cyclic dependencies")}y()?(u++,s[s.length-1](c,a)):d((function t(){y()&&(u++,w(t),s[s.length-1](c,a))}))}function y(){return u3)throw new Error("Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)");function l(t,n){function r(t,e){return function(r){t((function(t,n){r(!t||e,{err:t,result:n})}),n)}}function i(t){return function(e){setTimeout((function(){e(null)}),t)}}for(;a.times;){var o=!(a.times-=1);s.push(r(a.task,o)),!o&&a.interval>0&&s.push(i(a.interval))}e.series(s,(function(e,n){n=n[n.length-1],(t||a.callback)(n.err,n.result)}))}return u<=2&&"function"==typeof t&&(r=n,n=t),"function"!=typeof t&&c(a,t),a.callback=r,a.task=n,a.callback?l():l},e.waterfall=function(t,r){if(r=c(r||n),!l(t)){var i=new Error("First argument to waterfall must be an array of functions");return r(i)}if(!t.length)return r();!function t(e){return b((function(n,i){if(n)r.apply(null,[n].concat(i));else{var o=e.next();o?i.push(t(o)):i.push(r),B(e).apply(null,i)}}))}(e.iterator(t))()},e.parallel=function(t,n){R(e.eachOf,t,n)},e.parallelLimit=function(t,e,n){R(x(e),t,n)},e.series=function(t,n){R(e.eachOfSeries,t,n)},e.iterator=function(t){return function e(n){function r(){return t.length&&t[n].apply(null,arguments),r.next()}return r.next=function(){return n>>1);n(e,t[o])>=0?r=o:i=o-1}return r}(t.tasks,a,i)+1,0,a),t.tasks.length===t.concurrency&&t.saturated(),e.setImmediate(t.process)}))}(o,t,r,s)},delete o.unshift,o},e.cargo=function(t,e){return D(t,1,e)},e.log=F("log"),e.dir=F("dir"),e.memoize=function(t,n){var i={},o={},s=Object.prototype.hasOwnProperty;n=n||r;var a=b((function(r){var a=r.pop(),c=n.apply(null,r);s.call(i,c)?e.setImmediate((function(){a.apply(null,i[c])})):s.call(o,c)?o[c].push(a):(o[c]=[a],t.apply(null,r.concat([b((function(t){i[c]=t;var e=o[c];delete o[c];for(var n=0,r=e.length;n=t.length)return e&&(e[a]=t),n(null,t);fo.lastIndex=r;var c=fo.exec(t);return s=i,i+=c[0],o=s+c[1],r=fo.lastIndex,u[o]||e&&e[o]===o?process.nextTick(f):e&&Object.prototype.hasOwnProperty.call(e,o)?d(e[o]):uo.lstat(o,p)}function p(t,r){if(t)return n(t);if(!r.isSymbolicLink())return u[o]=!0,e&&(e[o]=o),process.nextTick(f);if(!co){var i=r.dev.toString(32)+":"+r.ino.toString(32);if(c.hasOwnProperty(i))return h(null,c[i],o)}uo.stat(o,(function(t){if(t)return n(t);uo.readlink(o,(function(t,e){co||(c[i]=e),h(t,e)}))}))}function h(t,r,i){if(t)return n(t);var o=ao.resolve(s,r);e&&(e[i]=o),d(o)}function d(e){t=ao.resolve(e,t.slice(r)),l()}l()},so.realpath=mo),so}var wo,bo,Eo,_o,So,xo,ko,To=!1;function Io(t){return t&&"realpath"===t.syscall&&("ELOOP"===t.code||"ENOMEM"===t.code||"ENAMETOOLONG"===t.code)}function Ao(t,e,n){if(xo)return Eo(t,e,n);"function"==typeof e&&(n=e,e=null),Eo(t,e,(function(r,i){Io(r)?ko.realpath(t,e,n):n(r,i)}))}function Co(t,e){if(xo)return _o(t,e);try{return _o(t,e)}catch(n){if(Io(n))return ko.realpathSync(t,e);throw n}}function Oo(){bo.realpath=Ao,bo.realpathSync=Co}function Po(){bo.realpath=Eo,bo.realpathSync=_o}function No(){return To||(To=!0,wo={},wo=Ao,Ao.realpath=Ao,Ao.sync=Co,Ao.realpathSync=Co,Ao.monkeypatch=Oo,Ao.unmonkeypatch=Po,Eo=(bo=E).realpath,_o=bo.realpathSync,So=process.version,xo=/^v[0-5]\./.test(So),ko=yo()),wo}var Lo,Ro,jo=!1;function Do(){return jo||(jo=!0,Lo={},Lo=function(t,e){for(var n=[],r=0;r=0&&u>0){for(r=[],o=n.length;l>=0&&!a;)l==c?(r.push(l),c=n.indexOf(t,l+1)):1==r.length?a=[r.pop(),u]:((i=r.pop())=0?c:u;r.length&&(a=[o,s])}return a}function Uo(){return Mo||(Mo=!0,Fo={},Fo=$o,$o.range=zo),Fo}var Ho,qo,Go,Vo,Wo,Xo,Ko,Qo,Zo=!1;function Yo(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function Jo(t){return t.split(Vo).join("\\").split(Wo).join("{").split(Xo).join("}").split(Ko).join(",").split(Qo).join(".")}function ts(t){if(!t)return[""];var e=[],n=Go("{","}",t);if(!n)return t.split(",");var r=n.pre,i=n.body,o=n.post,s=r.split(",");s[s.length-1]+="{"+i+"}";var a=ts(o);return o.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),e.push.apply(e,s),e}function es(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),ss(function(t){return t.split("\\\\").join(Vo).split("\\{").join(Wo).split("\\}").join(Xo).split("\\,").join(Ko).split("\\.").join(Qo)}(t),!0).map(Jo)):[]}function ns(t){return"{"+t+"}"}function rs(t){return/^-?0\d/.test(t)}function is(t,e){return t<=e}function os(t,e){return t>=e}function ss(t,e){var n=[],r=Go("{","}",t);if(!r||/\$$/.test(r.pre))return[t];var i,o=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(r.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(r.body),a=o||s,c=r.body.indexOf(",")>=0;if(!a&&!c)return r.post.match(/,.*\}/)?ss(t=r.pre+"{"+r.body+Xo+r.post):[t];if(a)i=r.body.split(/\.\./);else if(1===(i=ts(r.body)).length&&1===(i=ss(i[0],!1).map(ns)).length)return(f=r.post.length?ss(r.post,!1):[""]).map((function(t){return r.pre+i[0]+t}));var u,l=r.pre,f=r.post.length?ss(r.post,!1):[""];if(a){var p=Yo(i[0]),h=Yo(i[1]),d=Math.max(i[0].length,i[1].length),m=3==i.length?Math.abs(Yo(i[2])):1,g=is;h0){var E=new Array(b+1).join("0");w=y<0?"-"+E+w.slice(1):E+w}}u.push(w)}}else u=qo(i,(function(t){return ss(t,!1)}));for(var _=0;_65536)throw new TypeError("pattern is too long");var n=this.options;if(!n.noglobstar&&"**"===t)return ls;if(""===t)return"";var r,i="",o=!!n.nocase,s=!1,a=[],c=[],u=!1,l=-1,f=-1,p="."===t.charAt(0)?"":n.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",h=this;function d(){if(r){switch(r){case"*":i+=ds,o=!0;break;case"?":i+=hs,o=!0;break;default:i+="\\"+r}h.debug("clearStateChar %j %j",r,i),r=!1}}for(var m,g=0,v=t.length;g-1;x--){var k=c[x],T=i.slice(0,k.reStart),I=i.slice(k.reStart,k.reEnd-8),A=i.slice(k.reEnd-8,k.reEnd),C=i.slice(k.reEnd);A+=C;var O=T.split("(").length-1,P=C;for(g=0;g=0&&!(r=t[i]);i--);for(i=0;i>> no match, partial?",t,f,e,p),f!==s))}if("string"==typeof u?(c=r.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,c)):(c=l.match(u),this.debug("pattern match",u,l,c)),!c)return!1}if(i===s&&o===a)return!0;if(i===s)return n;if(o===a)return i===s-1&&""===t[i];throw new Error("wtf?")}}function Ns(){return bs||(bs=!0,Ps()),cs}var Ls,Rs=!1;function js(){return Rs||(Rs=!0,Ls={},Ls="function"==typeof Object.create?function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}),Ls}var Ds,Fs,Ms,$s=!1;function Bs(t){return"/"===t.charAt(0)}function zs(t){var e=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/.exec(t),n=e[1]||"",r=Boolean(n&&":"!==n.charAt(1));return Boolean(e[2]||r)}function Us(){return $s||($s=!0,Ds={},Ds="win32"===process.platform?zs:Bs,Fs=Bs,Ds.posix=Fs,Ms=zs,Ds.win32=Ms),Ds}var Hs,qs,Gs,Vs,Ws,Xs,Ks,Qs,Zs,Ys,Js,ta,ea,na=!1;function ra(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function ia(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}function oa(t,e){return t.localeCompare(e)}function sa(t){var e=null;if("/**"===t.slice(-3)){var n=t.replace(/(\/\*\*)+$/,"");e=new ea(n,{dot:!0})}return{matcher:new ea(t,{dot:!0}),gmatcher:e}}function aa(t,e,n){if(n||(n={}),n.matchBase&&-1===e.indexOf("/")){if(n.noglobstar)throw new Error("base matching requires globstar");e="**/"+e}t.silent=!!n.silent,t.pattern=e,t.strict=!1!==n.strict,t.realpath=!!n.realpath,t.realpathCache=n.realpathCache||Object.create(null),t.follow=!!n.follow,t.dot=!!n.dot,t.mark=!!n.mark,t.nodir=!!n.nodir,t.nodir&&(t.mark=!0),t.sync=!!n.sync,t.nounique=!!n.nounique,t.nonull=!!n.nonull,t.nosort=!!n.nosort,t.nocase=!!n.nocase,t.stat=!!n.stat,t.noprocess=!!n.noprocess,t.absolute=!!n.absolute,t.maxLength=n.maxLength||1/0,t.cache=n.cache||Object.create(null),t.statCache=n.statCache||Object.create(null),t.symlinks=n.symlinks||Object.create(null),function(t,e){t.ignore=e.ignore||[],Array.isArray(t.ignore)||(t.ignore=[t.ignore]),t.ignore.length&&(t.ignore=t.ignore.map(sa))}(t,n),t.changedCwd=!1;var r=process.cwd();ra(n,"cwd")?(t.cwd=Ys.resolve(n.cwd),t.changedCwd=t.cwd!==r):t.cwd=r,t.root=n.root||Ys.resolve(t.cwd,"/"),t.root=Ys.resolve(t.root),"win32"===process.platform&&(t.root=t.root.replace(/\\/g,"/")),t.cwdAbs=ta(t.cwd)?t.cwd:la(t,t.cwd),"win32"===process.platform&&(t.cwdAbs=t.cwdAbs.replace(/\\/g,"/")),t.nomount=!!n.nomount,n.nonegate=!0,n.nocomment=!0,t.minimatch=new ea(e,n),t.options=t.minimatch.options}function ca(t){for(var e=t.nounique,n=e?[]:Object.create(null),r=0,i=t.matches.length;rthis.maxLength)return!1;if(!this.stat&&Sa(this.cache,e)){var r=this.cache[e];if(Array.isArray(r)&&(r="DIR"),!n||"DIR"===r)return r;if(n&&"FILE"===r)return!1}var i=this.statCache[e];if(!i){var o;try{o=ma.lstatSync(e)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return this.statCache[e]=!1,!1}if(o&&o.isSymbolicLink())try{i=ma.statSync(e)}catch(t){i=o}else i=o}return this.statCache[e]=i,r=!0,i&&(r=i.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||r,(!n||"FILE"!==r)&&r},Aa.prototype._mark=function(t){return Ea.mark(this,t)},Aa.prototype._makeAbs=function(t){return Ea.makeAbs(this,t)}),da}var Oa,Pa=!1;function Na(t,e){if(t&&e)return Na(t)(e);if("function"!=typeof t)throw new TypeError("need wrapper function");return Object.keys(t).forEach((function(e){n[e]=t[e]})),n;function n(){for(var e=new Array(arguments.length),n=0;nr?(n.splice(0,r),process.nextTick((function(){e.apply(null,i)}))):delete Ha[t]}}))}(t))}function Wa(t){for(var e=t.length,n=[],r=0;r1)return!0;for(var i=0;ithis.maxLength)return e();if(!this.stat&&ac(this.cache,n)){var i=this.cache[n];if(Array.isArray(i)&&(i="DIR"),!r||"DIR"===i)return e(null,i);if(r&&"FILE"===i)return e()}var o=this.statCache[n];if(void 0!==o){if(!1===o)return e(null,o);var s=o.isDirectory()?"DIR":"FILE";return r&&"FILE"===s?e():e(null,s,o)}var a=this,c=cc("stat\0"+n,(function(r,i){if(i&&i.isSymbolicLink())return Qa.stat(n,(function(r,o){r?a._stat2(t,n,null,i,e):a._stat2(t,n,r,o,e)}));a._stat2(t,n,r,i,e)}));c&&Qa.lstat(n,c)},mc.prototype._stat2=function(t,e,n,r,i){if(n&&("ENOENT"===n.code||"ENOTDIR"===n.code))return this.statCache[e]=!1,i();var o="/"===t.slice(-1);if(this.statCache[e]=r,"/"===e.slice(-1)&&r&&!r.isDirectory())return i(null,!1,r);var s=!0;return r&&(s=r.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||s,o&&"FILE"===s?i():i(null,s,r)}}function vc(){return hc||(hc=!0,gc()),Ka}var yc,wc,bc,Ec,_c,Sc,xc,kc,Tc,Ic=!1;function Ac(t){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((function(e){t[e]=t[e]||Ec[e],t[e+="Sync"]=t[e]||Ec[e]})),t.maxBusyTries=t.maxBusyTries||3,t.emfileWait=t.emfileWait||1e3,!1===t.glob&&(t.disableGlob=!0),t.disableGlob=t.disableGlob||!1,t.glob=t.glob||xc}function Cc(t,e,n){"function"==typeof e&&(n=e,e={}),wc(t,"rimraf: missing path"),wc.equal(typeof t,"string","rimraf: path should be a string"),wc.equal(typeof n,"function","rimraf: callback function required"),wc(e,"rimraf: invalid options argument provided"),wc.equal(typeof e,"object","rimraf: options should be object"),Ac(e);var r=0,i=null,o=0;if(e.disableGlob||!_c.hasMagic(t))return s(null,[t]);function s(t,s){return t?n(t):0===(o=s.length)?n():void s.forEach((function(t){Oc(t,e,(function s(a){if(a){if(("EBUSY"===a.code||"ENOTEMPTY"===a.code||"EPERM"===a.code)&&r1&&(e=n.shift()),t=n.shift(),u.readdir(r,(function(n,i){return null!=n?t(n):(e&&(i=l.filterExtensions(i,e)),i=(i=i.sort((function(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}))).map((function(t){return y.join(r,t)})),t(null,i))}))},filterExtensions:function(t,e){return e=e.map((function(t){return""===t?t:"."+t.replace(/^\./,"")})),t.filter((function(t){return _.include(e,y.extname(t))}))},listTreeSync:function(t){var e,n;return n=[],e=function(t){return n.push(t),!0},l.traverseTreeSync(t,e,e),n},move:function(t,e,n){return p(t,e,(function(r,i){var o,s;if(!r)return i?(s=y.dirname(e),u.exists(s,(function(r){if(!r)return l.makeTree(s,(function(r){if(!r)return u.rename(t,e,n);n(r)}));u.rename(t,e,n)}))):((o=new Error("'"+e+"' already exists.")).code="EEXIST",void n(o));n(r)}))},moveSync:function(t,e){var n,r;if(!h(t,e))throw(n=new Error("'"+e+"' already exists.")).code="EEXIST",n;return r=y.dirname(e),u.existsSync(r)||l.makeTreeSync(r),u.renameSync(t,e)},removeSync:function(t){return w.sync(t)},remove:function(t,e){return w(t,e)},writeFileSync:function(t,e,n){return g.sync(y.dirname(t)),u.writeFileSync(t,e,n)},writeFile:function(t,e,n,r){return r=_.last(arguments),g(y.dirname(t),(function(i){return null!=i?"function"==typeof r?r(i):void 0:u.writeFile(t,e,n,r)}))},copy:function(t,e,n){return g(y.dirname(e),(function(r){var i,o;if(null==r)return(o=u.createReadStream(t)).on("error",(function(t){return"function"==typeof n&&n(t),n=null})),(i=u.createWriteStream(e)).on("error",(function(t){return"function"==typeof n&&n(t),n=null})),i.on("close",(function(){return"function"==typeof n&&n(),n=null})),o.pipe(i);"function"==typeof n&&n(r)}))},copySync:function(t,e){var n,r,i,o,s,a,c;for(o=u.readdirSync(t),g.sync(e),c=[],s=0,a=o.length;s0;)r=new Buffer(n),i=u.readSync(s,r,0,r.length,o),u.writeSync(a,r,0,i,o),c.push(o+=i);return c}finally{null!=s&&u.closeSync(s),null!=a&&u.closeSync(a)}},makeTreeSync:function(t){if(!l.isDirectorySync(t))return g.sync(t)},makeTree:function(t,e){return l.isDirectory(t,(function(n){return n?"function"==typeof e?e():void 0:g(t,(function(t){return"function"==typeof e?e(t):void 0}))}))},traverseTreeSync:function(t,e,n){var r;if(null==n&&(n=e),l.isDirectorySync(t))return(r=function(t,e,n){var i,o,s,a,c,l,f;for(c=0,l=(f=u.readdirSync(t)).length;c0},p=function(t,e,n){return u.stat(t,(function(r,i){if(!r)return u.stat(e,(function(r,o){if(!r||"ENOENT"!==r.code)return n(void 0,t.toLowerCase()===e.toLowerCase()&&i.dev===o.dev&&i.ino===o.ino);n(void 0,!0)}));n(r)}))},h=function(t,e){var n,r;return r=b(t),n=b(e),!r||!n||t.toLowerCase()===e.toLowerCase()&&r.dev===n.dev&&r.ino===n.ino},qi=new Proxy({},{get:function(t,e){var n;return null!=(n=l[e])?n:u[e]},set:function(t,e,n){return l[e]=n}})}).call(qi);class Fc{constructor(t){this.props=t,this.model=atom.workspace.buildTextEditor({mini:!0,softWrapped:!0,lineNumberGutterVisible:!1}),this.element=atom.views.getView(this.model),this.model.setText(t.initialText),t.selectAll?this.model.selectAll():this.model.getLastCursor().moveToEndOfScreenLine(),this.setReadOnly(),this.setGrammar(),this.model.scrollToBufferPosition([0,0])}async update(t){this.element=atom.views.getView(this.model),this.props={...this.props,...t},this.setReadOnly(),this.setGrammar()}focus(){this.element.focus()}getModel(){return this.model}setReadOnly(){this.model.setReadOnly(!!this.props.readOnly)}setGrammar(){void 0!==this.props.grammar?atom.textEditors.setGrammarOverride(this.model,this.props.grammar):atom.textEditors.clearGrammarOverride(this.model)}}class Mc{constructor(t){this.props=t,Ft.initialize(this)}async update(t){this.props={...this.props,...t},await Ft.update(this)}render(){return Ft.dom("div",{className:"atomts-rename-view",ref:"main"},Ft.dom("div",{className:"block"},Ft.dom("div",null,Ft.dom("span",{ref:"title"},this.props.title),Ft.dom("span",{className:"subtle-info-message"},Ft.dom("span",null,"Close this panel with "),Ft.dom("span",{className:"highlight"},"esc"),Ft.dom("span",null," key. And commit with the "),Ft.dom("span",{className:"highlight"},"enter"),Ft.dom("span",null," key."))),Ft.dom("div",{className:"find-container block"},Ft.dom("div",{className:"editor-container"},Ft.dom(Fc,{ref:"editor",initialText:this.props.initialText,selectAll:this.props.selectAll}))),this.renderValidationMessage()))}async destroy(){await Ft.destroy(this)}focus(){return this.refs.editor.focus()}getText(){return this.refs.editor.getModel().getText()}renderValidationMessage(){return void 0!==this.props.validationMessage?Ft.dom("div",{className:"highlight-error"},this.props.validationMessage):null}}async function $c(t){const e=new Mc({title:t.title,initialText:t.text,selectAll:t.autoSelect}),n=atom.workspace.addModalPanel({item:e,priority:1e3}),r=document.activeElement;e.focus();const i=new p;try{return await new Promise((n=>{i.add(atom.commands.add(e.refs.main,{"core:cancel":()=>{n(void 0)},"core:confirm":()=>{const r=e.getText(),i=t.onValidate(r);i?be(e.update({validationMessage:i})):n(r)}}))}))}finally{n.destroy(),i.dispose(),r&&r.focus()}}function Bc(t){const e=new p;for(const n of Ei)if("atom-text-editor"===n.selector){const r=n.desc(t);e.add(atom.commands.add(n.selector,n.command,{...r,async didDispatch(t){try{const e=t.currentTarget.getModel();je(e)?await r.didDispatch(e,(()=>t.abortKeyBinding())):(t.abortKeyBinding(),De(e)&&atom.notifications.addWarning("Atom-TypeScript cancelled last command: Current editor has no file path",{description:`Atom-TypeScript needs to determine the file path of the current editor to execute \`${n.command}\`, which it failed to do. You probably just need to save the current file somewhere.`,dismissable:!0}))}catch(t){zc(t)}}}))}else{const r=n.desc(t);e.add(atom.commands.add(n.selector,n.command,{...r,async didDispatch(){try{await r.didDispatch()}catch(t){zc(t)}}}))}return e}function zc(t){atom.notifications.addFatalError("Something went wrong, see details below.",{detail:t.message,dismissable:!0,stack:t.stack})}_i("atom-text-editor","typescript:rename-file",(t=>({description:"Rename current file",async didDispatch(e){const n=e.getPath();if(!n)return;const r=await $c({autoSelect:!0,title:"Rename File",text:n,onValidate:t=>t.trim()?"":"If you want to abort : Press esc to exit"});if(!r)return;const i=await t.getClient(n),o=await i.execute("getEditsForFileRename",{oldFilePath:n,newFilePath:r});await t.applyEdits(o.body),await new Promise(((t,i)=>{qi.move(n,r,(n=>{n?i(n):(e.getBuffer().setPath(r),t())}))}))}}))),_i("atom-text-editor","typescript:rename-refactor",(t=>({description:"Rename symbol under text cursor everywhere it is used",async didDispatch(e){const n=Fe(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("rename",n),{info:o,locs:s}=i.body;if(!o.canRename)return void atom.notifications.addInfo("AtomTS: Rename not available at cursor location");const a=await $c({autoSelect:!0,title:"Rename Variable",text:o.displayName,onValidate:t=>t.replace(/\s/g,"")!==t.trim()?"The new variable must not contain a space":t.trim()?"":"If you want to abort : Press esc to exit"});void 0!==a&&await t.applyEdits(s.map((t=>({fileName:t.file,textChanges:t.locs.map((t=>({...t,newText:a})))}))))}}))),_i("atom-workspace","typescript:restart-all-servers",(t=>({description:"Kill all tsserver instances. They will be auto-restarted",async didDispatch(){t.killAllServers()}}))),_i("atom-workspace","typescript:return-from-declaration",(t=>({description:"If used `go-to-declaration`, return to previous text cursor position",async didDispatch(){await t.histGoBack()}}))),_i("atom-workspace","typescript:show-editor-position-history",(t=>({description:"If used `go-to-declaration`, return to previous text cursor position",async didDispatch(){await t.histShowHistory()}}))),_i("atom-text-editor","typescript:toggle-semantic-view",(t=>({description:"Toggle semantic view outline",didDispatch(){t.toggleSemanticViewController()}}))),_i("atom-text-editor","typescript:show-tooltip",(t=>({description:"Show type tooltip at current text cursor position",didDispatch:async e=>t.showTooltipAt(e)}))),_i("atom-text-editor","typescript:show-signature-help",(t=>({description:"Show signature help tooltip at current text cursor position",didDispatch:async e=>t.showSigHelpAt(e)}))),_i("atom-text-editor","typescript:hide-signature-help",(t=>({description:"Hide the currently visible signature help",async didDispatch(e,n){t.hideSigHelpAt(e)||n()}}))),_i("atom-text-editor","typescript:signature-help-next",(t=>({description:"Show next signature help if available",async didDispatch(e,n){t.rotateSigHelp(e,1)||n()}}))),_i("atom-text-editor","typescript:signature-help-prev",(t=>({description:"Show previous signature help if available",async didDispatch(e,n){t.rotateSigHelp(e,-1)||n()}}))),_i("atom-text-editor","typescript:toggle-file-symbols",(t=>({description:"Toggle view for finding file symbols",async didDispatch(e){t.toggleFileSymbolsView(e)}}))),_i("atom-text-editor","typescript:toggle-project-symbols",(t=>({description:"Toggle view for finding file symbols",async didDispatch(e){t.toggleProjectSymbolsView(e)}})));class Uc{constructor(t,e){this.children=e,this.props={...t,delay:{show:0,hide:0}},Ft.initialize(this),this.tooltipDisposable=atom.tooltips.add(this.element,this.props)}async update(t,e){this.props={...this.props,...t},this.children=e,await Ft.update(this),this.tooltipDisposable.dispose(),this.tooltipDisposable=atom.tooltips.add(this.element,this.props)}render(){return Ft.dom("div",{className:"inline-block"},this.children?this.children:null)}async destroy(){await Ft.destroy(this),this.tooltipDisposable.dispose()}}class Hc{constructor(t){this.hiddenBuildStatus=!1,this.disposables=new p,this.buildStatusClicked=()=>{this.props.buildStatus.success||atom.notifications.addError("Build failed",{detail:this.props.buildStatus.message,dismissable:!0})},this.props={...t},this.setHideBuildStatus(atom.config.get("atom-typescript").buildStatusTimeout),this.resetBuildStatusTimeout(),Ft.initialize(this),this.disposables.add(atom.config.onDidChange("atom-typescript.buildStatusTimeout",(({newValue:t})=>{this.setHideBuildStatus(t),be(this.update({}))})))}async update(t){const e=void 0!==t.buildStatus&&t.buildStatus.success!==this.props.buildStatus.success;this.props={...this.props,...t},e&&this.resetBuildStatusTimeout(),await Ft.update(this)}render(){if(this.hiddenBuildStatus)return Ft.dom("span",null);let t,e;return this.props.buildStatus.success?(t="highlight-success",e="Emit Success"):(t="highlight-error",e="Emit Failed"),Ft.dom(Uc,{title:this.props.buildStatus.success?"Build was successful":"Build failed; click to show error message"},Ft.dom("span",{className:t,on:{click:this.buildStatusClicked}},e))}async destroy(){await Ft.destroy(this)}resetBuildStatusTimeout(){this.hiddenBuildStatus=!1,this.props.buildStatus.success&&this.hideBuildStatus()}setHideBuildStatus(t){this.hideBuildStatus=t>0?Ee.debounce((()=>{this.hiddenBuildStatus=!0,be(Ft.update(this))}),1e3*t):0===t?()=>{this.hiddenBuildStatus=!0}:()=>{}}}class qc{constructor(t){this.props={...t},Ft.initialize(this)}async update(t){this.props={...this.props,...t},await Ft.update(this)}render(){return Ft.dom(Uc,{title:()=>this.props.tsConfigPath.startsWith("/dev/null")?"No tsconfig.json":"Click to open "+atom.project.relativize(this.props.tsConfigPath)},Ft.dom("a",{className:"inline-block",href:"",on:{click:t=>{t.preventDefault(),this.openConfigPath()}}},this.props.tsConfigPath.startsWith("/dev/null")?"No project":y((t=this.props.tsConfigPath,"~"+atom.project.relativize(t)))));var t}async destroy(){await Ft.destroy(this)}openConfigPath(){this.props.tsConfigPath.startsWith("/dev/null")?atom.notifications.addInfo("No tsconfig for current file"):be(atom.workspace.open(this.props.tsConfigPath))}}class Gc{constructor(t={}){this.props={visible:!0,pending:[],progress:{max:0,value:0},...t},Ft.initialize(this)}async update(t){this.props={...this.props,...t},await Ft.update(this)}render(){return Ft.dom("ts-status-panel",{className:this.props.visible?"":"hide"},this.renderVersion(),this.renderPending(),this.renderConfigPath(),this.renderStatus(),this.renderProgress())}async destroy(){await Ft.destroy(this)}dispose(){be(this.destroy())}async show(){await this.update({visible:!0})}async hide(){await this.update({visible:!1})}renderVersion(){return void 0!==this.props.clientVersion?Ft.dom(Uc,{title:"Active TypeScript version"},this.props.clientVersion):null}renderPending(){return this.props.pending.length>0?Ft.dom(Uc,{title:`Pending Requests:
    ${this.props.pending.map((({title:t})=>`
  • ${t}
  • `)).join("")}
`,html:!0},Ft.dom("span",{ref:"pendingCounter"},this.props.pending.length.toString()),Ft.dom("span",{ref:"pendingSpinner",className:"loading loading-spinner-tiny inline-block",style:{marginLeft:"5px",opacity:"0.5",verticalAlign:"sub"}})):null}renderConfigPath(){return void 0!==this.props.tsConfigPath?Ft.dom(qc,{tsConfigPath:this.props.tsConfigPath}):null}renderStatus(){return this.props.buildStatus?Ft.dom(Hc,{buildStatus:this.props.buildStatus}):null}renderProgress(){return this.props.progress.value0;)e=this.prevCursorPositions.pop();if(e)return this.open({file:e.file,start:{line:e.line,offset:e.offset}});atom.notifications.addInfo("AtomTS: Previous position not found.")}async goForward(t,e){const n=Fe(t);if(n){this.prevCursorPositions.push(n);const t=100;this.prevCursorPositions.length>t&&this.prevCursorPositions.splice(0,this.prevCursorPositions.length-t)}return this.open(e)}async showHistory(){const t=await bi({items:this.getHistory().slice().reverse().map(((t,e)=>({...t,idx:e}))),itemTemplate:(t,e)=>Ft.dom("li",{className:"two-lines"},Ft.dom("div",{className:"primary-line"},Ft.dom(Cr,{label:t.file,query:e.getFilterQuery()})),Ft.dom("div",{className:"secondary-line"},"Line: ",t.line,", column: ",t.offset)),itemFilterKey:"file"});t&&await this.goHistory(t.idx+1)}getHistory(){return this.prevCursorPositions}dispose(){}serialize(){return this.prevCursorPositions}async open(t){const e=await atom.workspace.open(t.file,{initialLine:t.start.line-1,initialColumn:t.start.offset-1,searchAllPanes:!0});return atom.workspace.isTextEditor(e)&&e.scrollToCursorPosition({center:!0}),e}}class Wc{constructor(t,e){let n,r,i;this.getClient=t,this.editor=e,this.disposables=new p,this.occurrenceMarkers=[],this.disposed=!1;let o=!1;this.disposables.add(atom.config.observe("atom-typescript.occurrenceHighlightDebounceTimeout",(t=>{n=Ee.debounce((()=>{be(this.update())}),t),i=3.5*t})),e.onDidChangeCursorPosition((()=>{void 0===r?n():o=!0})),e.onDidChangePath((()=>n())),e.onDidChangeGrammar((()=>n())),e.onDidChange((()=>{void 0!==r&&clearTimeout(r),r=window.setTimeout((()=>{o&&(n(),o=!1),r=void 0}),i)})))}dispose(){this.disposed||(this.disposed=!0,this.disposables.dispose(),this.clearMarkers())}clearMarkers(){for(const t of this.occurrenceMarkers)t.destroy();this.occurrenceMarkers=[]}async update(){if(this.disposed)return;if(!je(this.editor))return void this.clearMarkers();const t=this.editor.getPath();if(void 0===t)return;const e=await this.getClient(t);if(this.disposed)return;const n=this.editor.getLastCursor().getBufferPosition();try{const r=await e.execute("documentHighlights",{file:t,line:n.row+1,offset:n.column+1,filesToSearch:[t]});if(this.disposed)return;const i=Array.from(this.getNewOccurrenceMarkers(r.body));for(const t of this.occurrenceMarkers)i.includes(t)||t.destroy();this.occurrenceMarkers=i}catch(t){window.atom_typescript_debug&&console.error(t)}}*getNewOccurrenceMarkers(t){for(const e of t)if(e.file===this.editor.getPath())for(const t of e.highlightSpans){const e=ke(t),n=this.occurrenceMarkers.find((t=>t.getBufferRange().isEqual(e)));if(n)yield n;else{const t=this.editor.markBufferRange(e);this.editor.decorateMarker(t,{type:"highlight",class:"atom-typescript-occurrence"}),yield t}}}}class Xc{constructor(t){this.disposables=new p,this.disposables.add(atom.workspace.observeTextEditors((e=>{const n=new Wc(t,e);this.disposables.add(n,e.onDidDestroy((()=>{this.disposables.remove(n),n.dispose()})))})))}dispose(){this.disposables.dispose()}}function Kc(t,e,n,r){let i,o=n.right,s=!1,a="";t.style.left="",t.style.top="",t.style.right="",t.style.bottom="";const c=e.clientWidth,u=getComputedStyle(t),l=parseInt(u.width,10),f=parseInt(u.height,10);if(o+l>=c&&(o=c-l-10),o<0&&(a="pre-wrap",o=10,s=10),"bottom"===r){const t=e.clientHeight;i=n.bottom,i+f>=t&&(i=n.top-f)}else"top"===r&&(i=n.top-f,i<0&&(i=n.bottom));t.style.left=o+"px",t.style.top=i+"px",!1!==s&&(t.style.right=s+"px"),a&&(t.style.whiteSpace=a)}class Qc{constructor(t){this.parent=t,this.props={left:0,right:0,top:0,bottom:0},Ft.initialize(this)}async destroy(){return Ft.destroy(this)}async update(t){var e,n,r;void 0!==(null===(e=t.sigHelp)||void 0===e?void 0:e.selectedItemIndex)&&(null===(n=t.sigHelp)||void 0===n?void 0:n.selectedItemIndex)!==(null===(r=this.props.sigHelp)||void 0===r?void 0:r.selectedItemIndex)&&(this.props.visibleItem=void 0),this.props={...this.props,...t},void 0===this.props.sigHelp?this.props.visibleItem=void 0:void 0!==this.props.visibleItem&&(this.props.visibleItem=this.props.visibleItem%this.props.sigHelp.items.length,this.props.visibleItem<0&&(this.props.visibleItem+=this.props.sigHelp.items.length)),await Ft.update(this)}writeAfterUpdate(){Kc(this.element,this.parent,this.props,atom.config.get("atom-typescript").sigHelpPosition)}render(){return Ft.dom("div",{className:"atom-typescript-tooltip tooltip",key:this.sigHelpHash()},Ft.dom("div",{className:"tooltip-inner"},this.tooltipContents()))}sigHelpHash(){if(!this.props.sigHelp)return;const{start:t,end:e}=this.props.sigHelp.applicableSpan;return`${t.line}:${t.offset}-${e.line}:${e.offset}`}tooltipContents(){if(!this.props.sigHelp)return"…";const{sigHelp:t}=this.props,e=void 0!==this.props.visibleItem?this.props.visibleItem:t.selectedItemIndex,n=t.items.length,r=["atom-typescript-tooltip-signature-help"];function i(n){const i=[];return n===t.selectedItemIndex&&i.push("atom-typescript-tooltip-signature-help-selected"),n===e&&i.push("atom-typescript-tooltip-signature-help-visible"),[...r,...i].join(" ")}return n>1&&r.push("atom-typescript-tooltip-signature-help-changable"),t.items.map(((e,n)=>Ft.dom("div",{className:i(n)},Ft.dom("div",null,Pe(e.prefixDisplayParts),this.renderSigHelpParams(e.parameters,t.argumentIndex),Pe(e.suffixDisplayParts),Ft.dom("div",{className:"atom-typescript-tooltip-signature-help-documentation"},Pe(e.documentation))))))}renderSigHelpParams(t,e){return t.map(((t,n)=>Ft.dom("span",{className:"atom-typescript-tooltip-signature-help-parameter"},n>0?", ":null,Ft.dom("span",{className:n===e?"atom-typescript-tooltip-signature-help-selected":void 0},Pe(t.displayParts)))))}}class Zc{constructor(t,e,n){this.deps=t,this.editor=e,this.cancelled=!1,this.disposables=new f.CompositeDisposable;const r=atom.views.getView(this.editor);this.view=new Qc(r),r.appendChild(this.view.element);const i=Ee.debounce(this.updateTooltip.bind(this),100,{leading:!0});this.disposables.add(this.editor.onDidChangeCursorPosition((t=>{n=t.newBufferPosition,be(i(n))})),r.onDidChangeScrollTop((()=>{setImmediate((()=>this.updateTooltipPosition(n)))})),r.onDidChangeScrollLeft((()=>{setImmediate((()=>this.updateTooltipPosition(n)))}))),be(this.updateTooltip(n))}isDisposed(){return this.cancelled}dispose(){this.cancelled||(this.cancelled=!0,this.disposables.dispose(),be(this.view.destroy()))}async rotateSigHelp(t){const{visibleItem:e,sigHelp:n}=this.view.props,r=void 0!==e?e:void 0!==(null==n?void 0:n.selectedItemIndex)?null==n?void 0:n.selectedItemIndex:0;await this.view.update({visibleItem:r+t})}async updateTooltip(t){if(this.cancelled)return;let e;try{e=this.computeTooltipPosition(t)}catch(t){return void console.warn(t)}const n=await this.getMessage(t);this.cancelled||(n?await this.view.update({...e,sigHelp:n}):this.dispose())}updateTooltipPosition(t){if(this.cancelled)return;const e=this.computeTooltipPosition(t);be(this.view.update({...e}))}computeTooltipPosition(t){const e=atom.views.getView(this.editor),n=e.pixelPositionForBufferPosition(t),r=e.querySelector(".lines").getBoundingClientRect(),i=this.editor.getLineHeightInPixels(),o=e.getBoundingClientRect(),s=n.top+r.top-o.top+i/2,a=n.left+r.left-o.left,c=.7*i;return{left:a,right:a,top:s-c,bottom:s+c}}async getMessage(t){if(!je(this.editor))return;const e=this.editor.getPath();if(void 0===e)return;const n=await this.deps.getClient(e);try{return(await n.execute("signatureHelp",{file:e,line:t.row+1,offset:t.column+1})).body}catch(t){return}}}class Yc{constructor(t){this.deps=t,this.subscriptions=new f.CompositeDisposable,this.editorMap=new WeakMap,this.stoppedChanging=t=>e=>{if(!atom.config.get("atom-typescript.sigHelpDisplayOnChange"))return;if(void 0===t.getPath())return;const n=t.getLastCursor().getBufferPosition(),[r]=e.changes.filter((t=>t.newRange.containsPoint(n)));r&&null!==r.newText.match(/[<(,]/)&&be(this.showTooltip(t,n))},this.subscriptions.add(atom.workspace.observeTextEditors((t=>{const e=new f.CompositeDisposable;e.add(t.onDidDestroy((()=>{e.dispose(),this.subscriptions.remove(e);const n=this.editorMap.get(t);n&&n.dispose()})),t.onDidStopChanging(this.stoppedChanging(t))),this.subscriptions.add(e)})))}dispose(){this.subscriptions.dispose();for(const t of atom.workspace.getTextEditors()){const e=this.editorMap.get(t);e&&e.dispose()}}async showTooltipAt(t){const e=t.getLastCursor().getBufferPosition();return this.showTooltip(t,e)}rotateSigHelp(t,e){const n=this.editorMap.get(t);return!(!n||n.isDisposed())&&(be(n.rotateSigHelp(e)),!0)}hideTooltipAt(t){const e=this.editorMap.get(t);return!(!e||e.isDisposed())&&(e.dispose(),!0)}async showTooltip(t,e){const n=this.editorMap.get(t);n&&!n.isDisposed()||this.editorMap.set(t,new Zc(this.deps,t,e))}}function Jc(t,e,n,r){const i=e=>{const i=e.target.closest(n);i&&t.contains(i)&&r(e)};return t.addEventListener(e,i),new m((()=>{t.removeEventListener(e,i)}))}class tu{constructor(){this.tooltip=null,this.props={left:0,right:0,top:0,bottom:0},Ft.initialize(this)}async destroy(){return Ft.destroy(this)}async update(t){this.props={...this.props,...t},this.tooltip=await ar(this.props.info,Ft,(t=>Ft.dom("div",{className:"atom-typescript-tooltip-tooltip-code"},t))),await Ft.update(this)}writeAfterUpdate(){Kc(this.element,document.body,this.props,atom.config.get("atom-typescript").tooltipPosition)}render(){return Ft.dom("div",{className:"atom-typescript-tooltip tooltip"},Ft.dom("div",{className:"tooltip-inner"},this.tooltip))}}class eu{constructor(t,e,n,r){this.getClient=t,this.cancelled=!1,be(this.initialize(e,n,r))}dispose(){this.cancelled=!0,this.view&&(be(this.view.destroy()),this.view=void 0)}async initialize(t,e,n){const r=atom.views.getView(t);let i,o;try{i=r.pixelPositionForBufferPosition(n),o=r.pixelPositionForBufferPosition(n.traverse([0,1]))}catch(e){return void console.warn(e)}if(i.left>=o.left)return;const s=.7*t.getLineHeightInPixels(),a={left:e.clientX,right:e.clientX,top:e.clientY-s,bottom:e.clientY+s},c=await this.getMessage(t,n);this.cancelled||void 0!==c&&await this.showTooltip(a,c)}async getMessage(t,e){let n;const r=await this.getClient(t);if(!r)return;const i=t.getPath();try{if(void 0===i)return;n=await r.execute("quickinfo",{file:i,line:e.row+1,offset:e.column+1})}catch(t){return}return n.body}async showTooltip(t,e){this.view=new tu,document.body.appendChild(this.view.element),await this.view.update({...t,info:e})}}class nu{constructor(t){this.getClientInternal=t,this.subscriptions=new f.CompositeDisposable,this.editorMap=new WeakMap,this.getClient=async t=>{const e=t.getPath();if(void 0!==e&&je(t)&&_.existsSync(e))return this.getClientInternal(e)},this.clearExprTypeTimeout=()=>{void 0!==this.exprTypeTimeout&&(clearTimeout(this.exprTypeTimeout),this.exprTypeTimeout=void 0),this.hideExpressionType()},this.trackMouseMovement=t=>{let e;return n=>{const r=function(t,e){const n=atom.views.getView(t).getComponent().screenPositionForMouseEvent(e);if(!isNaN(n.row)&&!isNaN(n.column))return t.bufferPositionForScreenPosition(n)}(t,n);r&&(e&&e.isEqual(r)&&this.pendingTooltip||(e=r,this.clearExprTypeTimeout(),this.exprTypeTimeout=window.setTimeout((()=>this.showExpressionType(t,n,r)),atom.config.get("atom-typescript").tooltipDelay)))}},this.subscriptions.add(atom.workspace.observeTextEditors((t=>{const e=atom.views.getView(t),n=e.querySelector(".lines");this.editorMap.set(t,{rawView:e,lines:n});const r=new f.CompositeDisposable;r.add(Jc(e,"mousemove",".scroll-view",this.trackMouseMovement(t)),Jc(e,"mouseout",".scroll-view",this.clearExprTypeTimeout),Jc(e,"keydown",".scroll-view",this.clearExprTypeTimeout),e.onDidChangeScrollTop(this.clearExprTypeTimeout),e.onDidChangeScrollLeft(this.clearExprTypeTimeout),t.onDidDestroy((()=>{r.dispose(),this.subscriptions.remove(r),this.clearExprTypeTimeout()}))),this.subscriptions.add(r)})))}dispose(){this.subscriptions.dispose(),this.clearExprTypeTimeout()}showExpressionAt(t){const e=t.getLastCursor().getBufferPosition(),n=atom.views.getView(t);let r;try{r=n.pixelPositionForBufferPosition(e)}catch(t){return void console.warn(t)}this.showExpressionType(t,this.mousePositionForPixelPosition(t,r),e)}mousePositionForPixelPosition(t,e){const n=atom.views.getView(t).querySelector(".lines").getBoundingClientRect();return{clientY:e.top+n.top+t.getLineHeightInPixels()/2,clientX:e.left+n.left}}showExpressionType(t,e,n){this.pendingTooltip&&this.pendingTooltip.dispose(),this.pendingTooltip=new eu(this.getClient,t,e,n)}hideExpressionType(){this.pendingTooltip&&(this.pendingTooltip.dispose(),this.pendingTooltip=void 0)}}class ru{constructor(t){this.getClient=t,this.subscriptions=new p;const e=atom.workspace.paneForURI("atom-typescript://semantic-view");e&&(this.view=e.itemForURI("atom-typescript://semantic-view")),this.view&&be(this.view.setGetClient(this.getClient)),this.subscriptions.add(new m((()=>{this.view&&(atom.workspace.hide(this.view),be(this.view.destroy()))})),atom.config.observe("atom-typescript.showSemanticView",(t=>{t?be(this.show()):this.hide()})))}dispose(){this.subscriptions.dispose()}async toggle(){this.view?await atom.workspace.toggle(this.view):await this.show()}async show(){this.view||(this.view=Ve.create({navTree:null}),await this.view.setGetClient(this.getClient)),await atom.workspace.open(this.view,{searchAllPanes:!0})}hide(){return!!this.view&&atom.workspace.hide(this.view)}}class iu{constructor(t){this.position=t.position,this.name=t.name,this.type=t.type,this.parent=t.parent,this.file=t.file}static fromNavTree(t,e){const n=t.spans[0].start;return new iu({name:t.text,type:t.kind,position:{row:n.line-1,column:n.offset-1},parent:null!=e?e:null})}static fromNavto(t,e){const n=t.start;return new iu({name:t.name,type:t.kind,position:{row:n.line-1,column:n.offset-1},parent:null!=e?e:null,file:t.file})}}async function ou(t,e){const n=await async function(t,e){try{const n=await e.getClient(t);return(await n.execute("navtree",{file:t})).body}catch(e){console.error(t,e)}}(t,e);return n&&n.childItems?Array.from(au(n.childItems)):[]}async function su(t,e,n){const r=await async function(t,e,n){try{const r=await n.getClient(t);return(await r.execute("navto",{file:t,currentFileOnly:!1,searchValue:e,maxResultCount:1e3})).body}catch(e){console.error(t,e)}}(t,e,n);return r?Array.from(function*(t,e){for(const n of t)yield iu.fromNavto(n,e)}(r)):[]}function*au(t,e){t.sort(((t,e)=>t.spans[0].start.line-e.spans[0].start.line));for(const n of t){const t=iu.fromNavTree(n,e);yield t,n.childItems&&(yield*au(n.childItems,t))}}async function cu(t,e,n){if(void 0!==t.file)return n(e,{file:t.file,start:{line:t.position.row+1,offset:t.position.column+1}})}async function uu(t,e){const n=t.getPath();if(void 0!==n){let r;atom.config.get("symbols-view.quickJumpToFileSymbol")&&(r=function(t){const e=atom.views.getView(t).getScrollTop();return{bufferRanges:t.getSelectedBufferRanges(),scrollTop:e}}(t));const i=await bi({items:ou(n,e),itemTemplate:({name:t,position:e},n)=>Ft.dom("li",{className:"two-lines"},Ft.dom("div",{className:"primary-line"},Ft.dom(Cr,{label:t,query:n.getFilterQuery()})),Ft.dom("div",{className:"secondary-line"},"Line "+(e.row+1))),didChangeSelection(e){atom.config.get("symbols-view.quickJumpToFileSymbol")&&e&&t.setCursorBufferPosition(e.position)},itemFilterKey:"name"});i?await cu(i,t,e.histGoForward):r&&function(t,{bufferRanges:e,scrollTop:n}){const r=atom.views.getView(t);t.setSelectedBufferRanges(e),r.setScrollTop(n)}(t,r)}}class lu{constructor(t){this.deps=t}toggleFileView(t){be(uu(t,this.deps))}toggleProjectView(t){be(async function(t,e){const n=t.getPath();if(void 0!==n){const r=await bi({items:t=>su(n,t,e),itemTemplate({name:t,position:e,file:n},r){const i=atom.project.relativize(n);return Ft.dom("li",{className:"two-lines"},Ft.dom("div",{className:"primary-line"},Ft.dom(Cr,{label:t,query:r.getFilterQuery()})),Ft.dom("div",{className:"secondary-line"},`File ${i} line ${e.row+1}`))},itemFilterKey:"name"});r&&await cu(r,t,e.histGoForward)}}(t,this.deps))}dispose(){}}class fu{constructor(){this.errors=new Map,this.fileGrammars=new Map,this.pushErrors=Ee.debounce(this.pushErrors.bind(this),100)}*getErrorsInRange(t,e){for(const n of this.errors.values()){const r=n.get(v.normalize(t));r&&(yield*r.filter((t=>ke(t).intersectsWith(e))))}}*getErrorsAt(t,e){for(const n of this.errors.values()){const r=n.get(v.normalize(t));r&&(yield*r.filter((t=>ke(t).containsPoint(e))))}}setErrors(t,e,n){let r=this.errors.get(t);r||(r=new Map,this.errors.set(t,r)),r.set(v.normalize(e),n),this.pushErrors()}clearFileErrors(t){for(const e of this.errors.values())e.delete(t);this.pushErrors()}clear(){this.linter&&this.linter.clearMessages()}setLinter(t){this.linter=t,this.pushErrors()}dispose(){this.clear(),this.linter&&this.linter.dispose(),this.linter=void 0}pushErrors(){this.linter&&this.linter.setAllMessages(this.getLinterErrors())}getLinterErrors(){if(atom.config.get("atom-typescript.suppressAllDiagnostics"))return[];const t=[];for(const e of this.errors.values())for(const[n,r]of e){const e=atom.workspace.getTextEditors().find((t=>t.getPath()===n)),i=e?e.getGrammar().scopeName:this.selectGrammar(n);if(!pu("suppressAllDiagnostics",i))for(const e of r){if(pu("ignoredDiagnosticCodes",i).includes(""+e.code))continue;if(pu("ignoreUnusedSuggestionDiagnostics",i)&&e.reportsUnnecessary)continue;if("suggestion"===e.category&&pu("ignoredSuggestionDiagnostics",i).includes(""+e.code))continue;if(pu("ignoreNonSuggestionSuggestionDiagnostics",i)&&"suggestion"===e.category&&!Ne(e.code,_e.Suggestion))continue;let{start:r,end:o}=e;r&&o||(r=o={line:1,offset:1}),t.push({severity:this.getSeverity(pu("unusedAsInfo",i),e),excerpt:e.text,location:{file:n,position:Te(r,o)}})}}return t}selectGrammar(t){const e=this.fileGrammars.get(t);if(void 0!==e)return e;const n=atom.grammars.selectGrammar(t,"").scopeName;return this.fileGrammars.set(t,n),n}getSeverity(t,e){if(t&&6133===e.code)return"info";switch(e.category){case"error":return"error";case"warning":return"warning";default:return"info"}}}function pu(t,e){return atom.config.get("atom-typescript."+t,{scope:[e]})}class hu{constructor(t,e){let n;this.buffer=t,this.deps=e,this.events=new f.Emitter,this.compileOnSave=!1,this.subscriptions=new f.CompositeDisposable,this.on=this.events.on.bind(this.events),this.dispose=()=>{this.subscriptions.dispose(),be(this.close())},this.init=async()=>{this.state&&(await this.state.client.execute("open",{file:this.state.filePath,fileContent:this.buffer.getText()}),be(this.getErr({allFiles:!1,delay:0})))},this.close=async()=>{if(await this.openPromise,this.state){const t=this.state.client,e=this.state.filePath;this.deps.clearFileErrors(e),this.state.subscriptions.dispose(),this.state=void 0,await t.execute("close",{file:e})}},this.onDidChangePath=t=>{be(this.close().then((()=>{this.openPromise=this.open(t)})))},this.onDidSave=async()=>{await Promise.all([this.getErr({allFiles:!0,delay:100}),this.doCompileOnSave()])},this.onDidChangeText=async({changes:t})=>{if(0===t.length||!this.state)return;const{client:e,filePath:n}=this.state;await Promise.all(t.reduceRight(((t,{oldRange:r,newText:i})=>(t.push(e.execute("change",{file:n,line:r.start.row+1,offset:r.start.column+1,endLine:r.end.row+1,endOffset:r.end.column+1,insertString:i})),t)),[]))},this.subscriptions.add(atom.config.observe("atom-typescript.getErrDebounceTimeout",(t=>{n=Ee.debounce((()=>{be(this.getErr({allFiles:!1,delay:0}))}),t)})),t.onDidChangePath(this.onDidChangePath),t.onDidDestroy(this.dispose),t.onDidSave((()=>{be(this.onDidSave())})),t.onDidStopChanging((({changes:t})=>{t.length>0&&this.deps.reportBuildStatus(void 0)})),t.onDidChangeText((t=>{be(this.onDidChangeText(t)),n()}))),this.openPromise=this.open(this.buffer.getPath())}static create(t,e){const n=hu.bufferMap.get(t);if(n)return n;{const n=new hu(t,e);return hu.bufferMap.set(t,n),n}}getPath(){return this.state&&this.state.filePath}getInfo(){if(this.state)return{clientVersion:this.state.client.version,tsConfigPath:this.state.configFile&&this.state.configFile.getPath()}}async getErr(t){if(!this.state)return;const e=t.allFiles?Array.from(function*(){for(const t of atom.workspace.getTextEditors())je(t)&&(yield t.getPath())}()):[this.state.filePath];await this.state.client.execute("geterr",{files:e,delay:t.delay})}async compile(){if(!this.state)return;const{client:t,filePath:e}=this.state,n=await t.execute("compileOnSaveAffectedFileList",{file:e}),r=Ee.flatten(n.body.map((t=>t.fileNames)));if(0===r.length)return;const i=r.map((e=>t.execute("compileOnSaveEmitFile",{file:e})));if(!(await Promise.all(i)).every((t=>!!t.body)))throw new Error("Some files failed to emit")}async doCompileOnSave(){if(this.compileOnSave){this.deps.reportBuildStatus(void 0);try{await this.compile(),this.deps.reportBuildStatus({success:!0})}catch(t){const e=t;console.error("Save failed with error",e),this.deps.reportBuildStatus({success:!1,message:e.message})}}}async open(t){if(void 0===t||!Le(t))return this.close();{const e=await this.deps.getClient(t);this.state={client:e,filePath:t,configFile:void 0,subscriptions:new f.CompositeDisposable},this.state.subscriptions.add(e.on("restarted",(()=>be(this.init())))),await this.init();const n=await e.execute("projectInfo",{needFileNameList:!1,file:t});void 0!==n.body.configFileName&&(this.state.configFile=new f.File(n.body.configFileName),await this.readConfigFile(),this.state.subscriptions.add(this.state.configFile.onDidChange((()=>be(this.readConfigFile()))))),this.events.emit("opened")}}async readConfigFile(){if(!this.state||!this.state.configFile)return;const t=Ie(this.state.configFile.getPath());this.compileOnSave=t.compileOnSave;const e=atom.config.get("atom-typescript");await this.state.client.execute("configure",{file:this.state.filePath,formatOptions:t.formatCodeOptions,preferences:{includeCompletionsWithInsertText:!0,includeCompletionsForModuleExports:e.includeCompletionsForModuleExports,quotePreference:e.quotePreference,importModuleSpecifierEnding:e.importModuleSpecifierEnding,importModuleSpecifierPreference:e.importModuleSpecifierPreference,...t.preferences}})}}hu.bufferMap=new WeakMap;class du{constructor(t,e){this.editor=t,this.opts=e,this.subscriptions=new p,this.isTypescript=!1,this.destroy=()=>{atom.views.getView(this.editor).classList.remove("typescript-editor"),this.subscriptions.dispose()},this.didActivate=()=>{this.isTypescript&&this.reportInfo()},this.onOpened=()=>{atom.workspace.getActiveTextEditor()===this.editor&&this.reportInfo()},this.checkIfTypescript=()=>{this.isTypescript=je(this.editor),this.isTypescript?atom.views.getView(this.editor).classList.add("typescript-editor"):atom.views.getView(this.editor).classList.remove("typescript-editor")},this.buffer=hu.create(t.getBuffer(),e),this.subscriptions.add(this.buffer.on("opened",this.onOpened)),this.checkIfTypescript(),this.subscriptions.add(t.onDidChangePath(this.checkIfTypescript),t.onDidChangeGrammar(this.checkIfTypescript),t.onDidDestroy(this.destroy),t.onDidSave((()=>{atom.config.get("atom-typescript.checkAllFilesOnSave")&&atom.commands.dispatch(atom.views.getView(t),"typescript:check-all-files")})))}static createFactory(t){return e=>{let n=du.editorMap.get(e);return n||(n=new du(e,t),du.editorMap.set(e,n)),n}}static lookupPane(t){return du.editorMap.get(t)}reportInfo(){const t=this.buffer.getInfo();t&&this.opts.reportClientInfo(t)}}du.editorMap=new WeakMap;class mu{constructor(t){this.usingBuiltinTooltipManager=!0,this.usingBuiltinSigHelpManager=!0,this.pending=new Set,this.clearErrors=()=>{this.errorPusher.clear()},this.clearFileErrors=t=>{this.errorPusher.clearFileErrors(t)},this.getClient=async t=>this.clientResolver.get(t),this.killAllServers=()=>{be(this.clientResolver.restartAllServers())},this.withBuffer=async(t,e)=>{const n=v.normalize(t),r=atom.workspace.getTextEditors().find((t=>t.getPath()===n));if(r)return e(r.getBuffer());const i=await f.TextBuffer.load(n);try{return await e(i)}finally{i.isModified()&&await i.save(),i.destroy()}},this.reportBusyWhile=async(t,e)=>{if(this.busySignalService)return this.busySignalService.reportBusyWhile(t,e);{const n={title:t};try{return this.pending.add(n),this.drawPending(Array.from(this.pending)),await e()}finally{this.pending.delete(n),this.drawPending(Array.from(this.pending))}}},this.reportProgress=t=>{be(this.statusPanel.update({progress:t}))},this.reportBuildStatus=t=>{be(this.statusPanel.update({buildStatus:t}))},this.reportClientInfo=t=>{be(this.statusPanel.update(t))},this.applyEdits=async t=>{Promise.all(t.map((t=>this.withBuffer(t.fileName,(async e=>{e.transact((()=>{const n=t.textChanges.map((t=>({range:ke(t),newText:t.newText}))).reverse().sort(((t,e)=>e.range.compare(t.range)));for(const t of n)e.setTextInRange(t.range,t.newText)}))})))))},this.showTooltipAt=async t=>{this.usingBuiltinTooltipManager?this.tooltipManager.showExpressionAt(t):await atom.commands.dispatch(atom.views.getView(t),"datatip:toggle")},this.showSigHelpAt=async t=>{this.usingBuiltinSigHelpManager?await this.sigHelpManager.showTooltipAt(t):await atom.commands.dispatch(atom.views.getView(t),"signature-help:show")},this.hideSigHelpAt=t=>!!this.usingBuiltinSigHelpManager&&this.sigHelpManager.hideTooltipAt(t),this.rotateSigHelp=(t,e)=>!!this.usingBuiltinSigHelpManager&&this.sigHelpManager.rotateSigHelp(t,e),this.histGoForward=(t,e)=>this.editorPosHist.goForward(t,e),this.drawPending=Ee.throttle((t=>be(this.statusPanel.update({pending:t}))),100,{leading:!1}),this.subscriptions=new p,this.clientResolver=new or(this.reportBusyWhile),this.subscriptions.add(this.clientResolver),this.statusPanel=new Gc,this.subscriptions.add(this.statusPanel),this.errorPusher=new fu,this.subscriptions.add(this.errorPusher),this.codefixProvider=new Bi(this.clientResolver,this.errorPusher,this.applyEdits),this.subscriptions.add(this.codefixProvider),this.semanticViewController=new ru(this.getClient),this.subscriptions.add(this.semanticViewController),this.editorPosHist=new Vc(t&&t.editorPosHistState),this.subscriptions.add(this.editorPosHist),this.symbolsViewController=new lu({histGoForward:this.histGoForward,getClient:this.getClient}),this.subscriptions.add(this.symbolsViewController),this.tooltipManager=new nu(this.getClient),this.subscriptions.add(this.tooltipManager),this.sigHelpManager=new Yc({getClient:this.getClient}),this.subscriptions.add(this.sigHelpManager),this.occurrenceManager=new Xc(this.getClient),this.subscriptions.add(this.occurrenceManager),this.typescriptPaneFactory=du.createFactory({clearFileErrors:this.clearFileErrors,getClient:this.getClient,reportBuildStatus:this.reportBuildStatus,reportClientInfo:this.reportClientInfo}),this.subscribeEditors(),this.subscriptions.add(Bc({getClient:this.getClient,applyEdits:this.applyEdits,clearErrors:this.clearErrors,killAllServers:this.killAllServers,reportProgress:this.reportProgress,reportBuildStatus:this.reportBuildStatus,toggleSemanticViewController:()=>{be(this.semanticViewController.toggle())},toggleFileSymbolsView:t=>{this.symbolsViewController.toggleFileView(t)},toggleProjectSymbolsView:t=>{this.symbolsViewController.toggleProjectView(t)},histGoForward:this.histGoForward,histGoBack:()=>this.editorPosHist.goBack(),histShowHistory:()=>this.editorPosHist.showHistory(),showTooltipAt:this.showTooltipAt,showSigHelpAt:this.showSigHelpAt,hideSigHelpAt:this.hideSigHelpAt,rotateSigHelp:this.rotateSigHelp}))}destroy(){this.subscriptions.dispose();for(const t of atom.workspace.getTextEditors()){const e=du.lookupPane(t);e&&e.destroy()}}serialize(){return{version:"0.1",editorPosHistState:this.editorPosHist.serialize()}}consumeLinter(t){const e=t({name:"TypeScript"});this.errorPusher.setLinter(e),this.subscriptions.add(this.clientResolver.on("diagnostics",(({type:t,filePath:e,diagnostics:n})=>{this.errorPusher.setErrors(t,e,n)})))}consumeStatusBar(t){let e=100;for(const n of t.getRightTiles())"GRAMMAR-SELECTOR-STATUS"===atom.views.getView(n.getItem()).tagName&&(e=n.getPriority()-1);const n=t.addRightTile({item:this.statusPanel,priority:e}),r=new f.Disposable((()=>{n.destroy()}));return this.subscriptions.add(r),r}consumeDatatipService(t){if(atom.config.get("atom-typescript").preferBuiltinTooltips)return;const e=t.addProvider(new lr(this.getClient));return this.subscriptions.add(e),this.tooltipManager.dispose(),this.usingBuiltinTooltipManager=!1,e}consumeSigHelpService(t){if(atom.config.get("atom-typescript").preferBuiltinSigHelp)return;const e=new Ai(this.getClient),n=t(e);return this.subscriptions.add(n,e),this.sigHelpManager.dispose(),this.usingBuiltinSigHelpManager=!1,n}consumeBusySignal(t){if(atom.config.get("atom-typescript").preferBuiltinBusySignal)return;this.busySignalService=t;const e={dispose:()=>{this.busySignalService&&this.busySignalService.dispose(),this.busySignalService=void 0}};return this.subscriptions.add(e),e}provideAutocomplete(){return[new Oi(this.getClient,this.applyEdits)]}provideIntentions(){return t=this.codefixProvider,{grammarScopes:["*"],getIntentions:async({bufferPosition:e,textEditor:n})=>(await t.runCodeFix(n,e)).map((e=>({priority:100,title:"description"in e?e.description:e.actionDescription,selected:()=>{be(t.applyFix(e))}})))};var t}provideIntentionsHighlight(){return t=this.codefixProvider,{grammarScopes:["*"],getIntentions:async({visibleRange:e,textEditor:n})=>(await t.getFixableRanges(n,e)).map((t=>({range:t,created:t=>{}})))};var t}provideCodeActions(){return t=this.codefixProvider,{grammarScopes:Re(),priority:0,getCodeActions:async(e,n,r)=>(await t.runCodeFix(e,n.start)).map((e=>({getTitle:async()=>"description"in e?e.description:e.actionDescription,dispose:()=>{},apply:async()=>{await t.applyFix(e)}})))};var t}provideHyperclick(){return t=this.getClient,e=this.histGoForward,{priority:0,providerName:"typescript-hyperclick-provider",wordRegExp:/([A-Za-z0-9_])+|['"`](\\.|[^'"`\\\\])*['"`]/g,async getSuggestionForWord(n,r,i){if(!je(n))return;const o=n.getPath();return void 0!==o?{range:i,callback:async()=>{var r;const s={file:o,line:i.start.row+1,offset:i.start.column+1},a=await t(s.file),c=await a.execute("definition",s),u=c.body?c.body[0]:void 0;if(1===(null===(r=c.body)||void 0===r?void 0:r.length)&&(null==u?void 0:u.start.line)===s.line&&(null==u?void 0:u.start.offset)===s.offset){const t=await a.execute("references",s);await Si(t,n,e)}else await xi(c,n,e)}}:void 0}};var t,e}provideReferences(){return t=this.getClient,{isEditorSupported:async t=>je(t),async findReferences(e,n){const r=Fe(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("references",r);return o.body?{type:"data",baseUri:r.file,referencedSymbolName:o.body.symbolDisplayString,references:o.body.refs.map(hr)}:void 0}};var t}provideOutlines(){return t=this.getClient,{name:"Atom-TypeScript",grammarScopes:Re(),priority:100,updateOnEdit:!0,async getOutline(e){const n=e.getPath();if(void 0===n)return;const r=await t(n),i=(await r.execute("navtree",{file:n})).body;return i?{outlineTrees:[ki(i)]}:void 0}};var t}provideDefinitions(){var t;if(!atom.config.get("atom-typescript").disableAtomIdeDefinitions)return t=this.getClient,{priority:0,grammarScopes:Re(),wordRegExp:/([A-Za-z0-9_])+|['"`](\\.|[^'"`\\\\])*['"`]/g,async getDefinition(e,n){if(!je(e))return;const r=Fe(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("definition",r);return o.body&&0!==o.body.length?{queryRange:void 0,definitions:o.body.map(pr)}:void 0}}}provideCodeHighlight(){if(!atom.config.get("atom-typescript").preferBuiltinOccurrenceHighlight)return this.occurrenceManager.dispose(),sr(this.getClient)}subscribeEditors(){this.subscriptions.add(atom.workspace.observeTextEditors((t=>{this.typescriptPaneFactory(t)})),atom.workspace.onDidChangeActiveTextEditor((t=>{if(t&&je(t)){be(this.statusPanel.show());const e=du.lookupPane(t);e&&e.didActivate()}else be(this.statusPanel.hide())})))}}let gu;var vu=x(Ft);exports.activate=function(t){vu.setScheduler(atom.views),gu=new mu(t),setImmediate((()=>be(async function(){["atom-ide-ui","linter","nuclide"].some((t=>atom.packages.isPackageLoaded(t)))||await I.install("atom-typescript",!0)}())))},exports.deactivate=function(){gu&&gu.destroy(),gu=void 0},exports.serialize=function(){return gu?gu.serialize():void 0},exports.deserializeSemanticView=function(t){return Ve.create(t.data)},exports.consumeLinter=function(t){if(gu)return gu.consumeLinter(t)},exports.consumeStatusBar=function(t){if(gu)return gu.consumeStatusBar(t)},exports.consumeDatatipService=function(t){if(gu)return gu.consumeDatatipService(t)},exports.consumeSignatureHelp=function(t){if(gu)return gu.consumeSigHelpService(t)},exports.consumeBusySignal=function(t){if(gu)return gu.consumeBusySignal(t)},exports.provideAutocomplete=function(){if(gu)return gu.provideAutocomplete()},exports.provideIntentions=function(){if(gu)return gu.provideIntentions()},exports.provideIntentionsHighlight=function(){if(gu)return gu.provideIntentionsHighlight()},exports.provideCodeActions=function(){if(gu)return gu.provideCodeActions()},exports.provideHyperclick=function(){if(gu)return gu.provideHyperclick()},exports.provideReferences=function(){if(gu)return gu.provideReferences()},exports.provideOutlines=function(){if(gu)return gu.provideOutlines()},exports.provideDefinitions=function(){if(gu)return gu.provideDefinitions()},exports.provideCodeHighlight=function(){if(gu)return gu.provideCodeHighlight()},exports.$f9b0166ef7b5e7f5ad26e9362409c1dc$init=function(){return O}; +var t,e,n=require("crypto"),r=require("module"),i=require("events"),o=require("assert"),s=require("timers"),a=require("util"),c=require("stream"),u=c,l=c.Transform,f=C(require("typescript")),p=require("atom"),h=(t={},e=p,Object.keys(e).forEach((function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[n]}})})),t),d=p.CompositeDisposable,m=p.Emitter,g=p.BufferedNodeProcess,v=(p.BufferedProcess,p.Disposable),y=require("path"),w=y,b=y.dirname,_=require("fs"),x=_,S=C(_),k=require("child_process"),E=require("os");function C(t){return t&&t.__esModule?t.default:t}var T="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},P={};Object.defineProperty(P,"__esModule",{value:!0});var A=k,O=x,I=w;function j(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var N=j(E),D=j(O),L=j(I);const F=/\s+at.*(?:\(|\s)(.*)\)?/,M=/^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/,R=void 0===N.default.homedir?"":N.default.homedir();class B extends Error{constructor(t){if(!Array.isArray(t))throw new TypeError("Expected input to be an Array, got "+typeof t);let e=(t=[...t].map((t=>t instanceof Error?t:null!==t&&"object"==typeof t?Object.assign(new Error(t.message),t):new Error(t)))).map((t=>{return"string"==typeof t.stack?(t=>t.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g,""))((e=t.stack,n=Object.assign({pretty:!1},n),e.replace(/\\/g,"/").split("\n").filter((t=>{const e=t.match(F);if(null===e||!e[1])return!0;const n=e[1];return!n.includes(".app/Contents/Resources/electron.asar")&&!n.includes(".app/Contents/Resources/default_app.asar")&&!M.test(n)})).filter((t=>""!==t.trim())).map((t=>n.pretty?t.replace(F,((t,e)=>t.replace(e,e.replace(R,"~")))):t)).join("\n"))):String(t);var e,n})).join("\n");e="\n"+((t,e=1,n)=>{if(n={indent:" ",includeEmptyLines:!1,...n},"string"!=typeof t)throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if("number"!=typeof e)throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if("string"!=typeof n.indent)throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof n.indent}\``);if(0===e)return t;const r=n.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(r,n.indent.repeat(e))})(e,4),super(e),this.name="AggregateError",Object.defineProperty(this,"_errors",{value:t})}*[Symbol.iterator](){for(const t of this._errors)yield t}}var z=B;const q=(t,e,n)=>new Promise(((r,i)=>{if(n=Object.assign({concurrency:1/0},n),"function"!=typeof e)throw new TypeError("Mapper function is required");const{concurrency:o}=n;if(!("number"==typeof o&&o>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${o}\` (${typeof o})`);const s=[],a=t[Symbol.iterator]();let c=!1,u=!1,l=0,f=0;const p=()=>{if(c)return;const t=a.next(),n=f;if(f++,t.done)return u=!0,void(0===l&&r(s));l++,Promise.resolve(t.value).then((t=>e(t,n))).then((t=>{s[n]=t,l--,p()}),(t=>{c=!0,i(t)}))};for(let t=0;t(await H(t,((t,n)=>Promise.all([e(t,n),t])),n)).filter((t=>Boolean(t[0]))).map((t=>t[1]));var V=$,W=$;V.default=W;const G="undefined"!=typeof atom,K="undefined"!=typeof atom&&(atom.inDevMode()||atom.inSpecMode()); +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */ +var Q=/["'&<>]/,Z=function(t){var e,n=""+t,r=Q.exec(n);if(!r)return n;var i="",o=0,s=0;for(o=r.index;o{const i={stdout:r.stdout?[]:null,stderr:r.stderr?[]:null};r.on("error",e),r.stdout&&r.stdout.on("data",(function(t){i.stdout.push(t),n.handleStdout&&n.handleStdout(t)})),r.stderr&&r.stderr.on("data",(function(t){i.stderr.push(t),n.handleStderr&&n.handleStderr(t)})),r.on("close",(e=>{let r=null;null!=i.stdout&&(r=null===n.encoding||"buffer"===n.encoding?Buffer.concat(i.stdout):i.stdout.join(""));let o=null;null!=i.stderr&&(o=null===n.encoding||"buffer"===n.encoding?Buffer.concat(i.stderr):i.stderr.join("")),t({exitCode:e,stdout:r,stderr:o})}))}));return n.handleChildProcess(r),i}(t,e,{...n,handleChildProcess(t){r=t}});return i.kill=function(t){return r.kill(t)},i}async function Y(t){if(G){const e=await async function(t){var e;const n=atom.packages.getLoadedPackage(t.name);return null==n?null:null!==(e=n.metadata.version)&&void 0!==e?e:null}(t);if(e)return e}return async function(t){var e,n;const{directory:r}=t;if(null==r)return null;let i=null;try{i=JSON.parse(await D.default.promises.readFile(L.default.join(r,"package.json"),"utf8"))}catch(t){return null}return null!==(e=null===(n=i)||void 0===n?void 0:n.version)&&void 0!==e?e:null}(t)}const X=G?async function(t){return atom.packages.resolvePackagePath(t)}:async function(t){var e;const n=L.default.join(null!==(e=process.env.ATOM_HOME)&&void 0!==e?e:L.default.join(N.default.homedir(),".atom"),"packages",t);try{return await D.default.promises.access(n,D.default.constants.R_OK),n}catch(t){return null}};function tt(t,e){if(!t)throw new Error(null!=e?e:"Invariant violation")}async function et(t){const e=await(G?async function(t){const e=atom.packages.getLoadedPackage(t),n=e&&e.metadata["package-deps"];return Array.isArray(n)?n:[]}(t):async function(t){let e=null;try{e=await D.default.promises.stat(t)}catch(t){}if(null==e||!e.isDirectory())throw new Error("[Package-Deps] Expected packageName to be a readable directory in Node.js invocation");let n=null;try{const e=await D.default.promises.readFile(L.default.join(t,"package.json"),"utf8");n=JSON.parse(e)}catch(t){}const r=null==n||"object"!=typeof n?[]:n["package-deps"];return Array.isArray(r)?r:[]}(t));return K&&(tt(Array.isArray(e),`Dependencies for ${t} are not a valid array`),e.forEach(((e,n)=>{if(Array.isArray(e))e.forEach(((e,r)=>{const i=`Dependency#${n}#${r} for ${t} is invalid`;tt("string"==typeof e.name&&e.name.length>0,i),tt(null==e.minimumVersion||"string"==typeof e.minimumVersion&&e.minimumVersion.length>0,i)})),tt(e.length>0,`Dependency#${n} for ${t} has no group items`);else{const r=`Dependency#${n} for ${t} is invalid`;tt("string"==typeof e.name&&e.name.length>0,r),tt(null==e.minimumVersion||"string"==typeof e.minimumVersion&&e.minimumVersion.length>0,r)}}))),e}async function nt(t){if(null==t.directory)return!0;if(null==t.minimumVersion)return!1;const e=await Y(t);return null==e||1===function(t,e){for(var n=t.split("."),r=e.split("."),i=0;i<3;i++){var o=Number(n[i]),s=Number(r[i]);if(o>s)return 1;if(s>o)return-1;if(!isNaN(o)&&isNaN(s))return 1;if(isNaN(o)&&!isNaN(s))return-1}return 0}(t.minimumVersion,e)}const rt=new Set(["✓","done"]),it=/(?:Installing|Moving) (.*?) to .* (.*)/;let ot=!0;const st=G?function({packageName:t,dependencies:e}){const n=[],r=atom.notifications.addInfo(`Installing ${t} dependencies`,{detail:"Installing "+e.map((t=>t.name)).join(", "),dismissable:!0}),i=document.createElement("progress");i.max=e.length,i.style.width="100%";try{var o;const t=atom.views.getView(r),e=null!==(o=null==t?void 0:t.element)&&void 0!==o?o:null;if(null==e)throw new Error("Unable to get notification element from view");const n=e.querySelector(".detail-content");if(null==n)throw new Error("Content detail container not found inside the notification");n.appendChild(i)}catch(t){console.error("[Package-Deps] Error during showing installation progress to user",t)}return{handleFailure({dependency:t,error:e}){var r;n.push(t.name),i.value+=1,console.error(`[Package-Deps] Unable to install ${t.name}, Error:`,null!==(r=null==e?void 0:e.stack)&&void 0!==r?r:e)},handleDependencyInstalled(t){i.value+=1},handleComplete(){r.dismiss(),n.length>0?atom.notifications.addWarning(`Failed to install ${t} dependencies`,{detail:"These packages were not installed, check your console\nfor more info.\n"+n.join("\n"),dismissable:!0}):atom.notifications.addSuccess(`Installed ${t} dependencies`,{detail:"Installed "+e.map((t=>t.name)).join(", ")}),Promise.all(e.map((t=>n.includes(t.name)?null:atom.packages.activatePackage(t.name)))).catch((e=>{console.error("[Package-Deps] Error activating installed packages for "+t,e)}))}}}:function({dependencies:t}){let e=!1;return console.log("Installing dependencies:\n"+t.map((t=>" - "+t.name)).join("\n")),{handleFailure({dependency:t,error:n}){var r;e=!0,console.error(`Unable to install ${t.name}, Error:`,null!==(r=null==n?void 0:n.stack)&&void 0!==r?r:n)},handleDependencyInstalled(t){console.log("Successfully installed",t.name)},handleComplete(){console.log("Installation complete"),e&&(process.exitCode=1)}}},at=G?function({packageName:t,dependencies:e}){return new Promise((n=>{const r=e.filter((t=>!Array.isArray(t))),i=e.filter((t=>Array.isArray(t))),o=0===i.length,s=o?r.map((t=>t.name)).join(", "):"Something went wrong. Check your developer console",a=i.map((t=>t[0]));atom.packages.isPackageDisabled("notifications")&&console.warn("Enable notifications to install dependencies for "+t);const c=atom.notifications.addInfo(t+" needs to install dependencies",{dismissable:!0,icon:"cloud-download",detail:s,description:`Install dependenc${1===e.length?"y":"ies"}?`,buttons:[{text:"Yes",onDidClick:()=>{n(o?[]:r.concat(a)),c.dismiss()}},{text:"No Thanks",onDidClick:()=>{c.dismiss()}},{text:"Never",onDidClick:()=>{!function(t){var e;if(!G)return;const n=new Set(null!==(e=atom.config.get("atom-package-deps.ignored"))&&void 0!==e?e:[]);n.add(t),atom.config.set("atom-package-deps.ignored",Array.from(n))}(t),ot&&(ot=!1,atom.notifications.addInfo("How to reset package-deps memory",{dismissable:!0,description:"To modify the list of ignored files invoke 'Application: Open Your Config' and change the 'atom-package-deps' section"})),c.dismiss()}}]});if(c.onDidDismiss((()=>n([]))),!o)try{var u;const t=atom.views.getView(c),e=null!==(u=null==t?void 0:t.element)&&void 0!==u?u:null;if(null==e)throw new Error("Unable to get notification element from view");const n=e.querySelector(".detail-content");if(null==n)throw new Error("Content detail container not found inside the notification");if(n.innerHTML="",r.length>0){const t=document.createElement("div");t.innerHTML=`Packages without choices:
  • ${r.map((t=>Z(t.name))).join("
  • ")}
`,n.appendChild(t)}const o=document.createElement("div");o.innerHTML="Packages with choices:",n.appendChild(o);const s=document.createElement("ul");i.forEach(((t,e)=>{const n=document.createElement("li"),r=document.createElement("select");r.innerHTML=t.map((t=>``)).join("\n"),r.addEventListener("change",(()=>{const n=t.find((t=>t.name===r.value));null!=n&&(a[e]=n)})),n.style.marginTop="5px",n.appendChild(r),s.appendChild(n)})),n.appendChild(s)}catch(t){console.error("[Package-Deps] Error during showing package choices to user",t)}}))}:async function({dependencies:t}){return t.map((t=>Array.isArray(t)?t[0]:t))};var ct=async function(t){if(tt("string"==typeof t&&t.length>0,"[Package-Deps] Package name is required"),e=t,G&&(null!==(n=atom.config.get("atom-package-deps.ignored"))&&void 0!==n?n:[]).includes(e))return;var e,n;const r=await et(t);if(0===r.length)return;const i=await Promise.all(r.map((async t=>Array.isArray(t)?Promise.all(t.map((async t=>({...t,directory:await X(t.name)})))):{...t,directory:await X(t.name)}))),o=await V(i,(async function(t){return Array.isArray(t)?(await Promise.all(t.map((t=>nt(t))))).every(Boolean):nt(t)}));if(0===o.length)return;const s=await at({packageName:t,dependencies:o});if(0===s.length)return;const a=st({packageName:t,dependencies:s});await(async(t,e,{concurrency:n=1/0,stopOnError:r=!0}={})=>new Promise(((i,o)=>{if("function"!=typeof e)throw new TypeError("Mapper function is required");if(!Number.isSafeInteger(n)&&n!==1/0||!(n>=1))throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${n}\` (${typeof n})`);const s=[],a=[],c=t[Symbol.iterator]();let u=!1,l=!1,f=0,p=0;const h=()=>{if(u)return;const t=c.next(),n=p;if(p++,t.done)return l=!0,void(0===f&&(r||0===a.length?i(s):o(new z(a))));f++,(async()=>{try{const r=await t.value;s[n]=await e(r,n),f--,h()}catch(t){r?(u=!0,o(t)):(a.push(t),f--,h())}})()};for(let t=0;tht(t,e,...n);for(const t of pt)ht[t]=(e,...n)=>ht(t,e,...n);ut=ht;var mt,gt={},vt={};vt=new Map([["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["className","class"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["panose1","panose-1"],["paintOrder","paint-order"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xHeight","x-height"]]);var yt;function wt(t,e,n,r,i){if(n)for(var o in n)"ref"!==o&&"on"!==o&&(o in lt||i&&o in i||("dataset"===o?wt(t.dataset,null,n&&n.dataset,null,null):"innerHTML"!==o&&e&&pt.has(e.tag)?t.removeAttribute(vt.get(o)||o):(t[o]="",delete t[o])));if(i)for(var o in i)if("ref"!==o&&"on"!==o&&!(o in lt)){var s=n&&n[o],a=i[o];"dataset"===o?bt(t.dataset,s,a,!1):"style"===o&&"string"!=typeof a?("string"==typeof s&&(t.style="",s=null),bt(t.style,s,a,!0)):"attributes"===o?_t(t,s,a):a!==s&&("innerHTML"!==o&&r&&pt.has(r.tag)?t.setAttribute(vt.get(o)||o,a):r&&"input"===r.tag&&"value"===o&&t[o]===a||(t[o]=a))}}function bt(t,e,n,r){if(e)for(var i in e)n&&i in n||(r?t[i]="":delete t[i]);if(n)for(var i in n){const r=e&&e[i],o=n[i];o!==r&&(t[i]=o)}}function _t(t,e,n){if(e)for(var r in e)n&&r in n||t.removeAttribute(r);if(n)for(var r in n){const i=e&&e[r],o=n[r];o!==i&&t.setAttribute(r,o)}}function xt(t,e){let n;if(null!=t.text)n=document.createTextNode(t.text);else{const{tag:r,children:i}=t;let{props:o,context:s}=t;if(s&&(e={refs:s.refs,listenerContext:s}),"function"==typeof r){let s;o&&o.ref&&(s=o.ref);const a=new r(o||{},i);t.component=a,n=a.element,"function"==typeof s?s(a):e&&e.refs&&s&&(e.refs[s]=a)}else pt.has(r)?(n=document.createElementNS("http://www.w3.org/2000/svg",r),i&&St(n,i,e),o&&mt(n,null,t,e)):(n=document.createElement(r),i&&St(n,i,e),o&&mt(n,null,t,e))}return t.domNode=n,n}function St(t,e,n){for(let r=0;r0?(i=Tt.pop()).clear():i=new Map,It(i,e,o,s));var h=Ot(f),d=h?i.get(h):null;if(null==d)t.insertBefore(gt(f,r),a.domNode),f=n[++u];else{var m=e[d];Ct(m,f,r),e[d]=void 0,t.insertBefore(m.domNode,a.domNode),f=n[++u]}}else c=e[--s];else a=e[++o];if(o>s){var g=n[l+1]?n[l+1].domNode:null;for(let e=u;e<=l;e++)t.insertBefore(gt(n[e],r),g)}else if(u>l)for(let t=o;t<=s;t++){var v=e[t];v&&Pt(v,r&&r.refs)}i&&Tt.push(i)}(r,t.children,e.children,n),mt(r,t,e,n),i=r),e.domNode=i,i!==r&&r.parentNode&&r.parentNode.replaceChild(i,r),i}{const i=r.parentNode,o=r.nextSibling;Pt(t,n&&n.refs);const s=gt(e,n);return i&&i.insertBefore(s,o),e.domNode=s,s}}let Tt=[new Map,new Map,new Map,new Map];function Pt(t,e,n=!0){const{domNode:r,props:i,children:o,component:s}=t,a=i&&i.ref;if(s)"function"==typeof a?a(null):e&&a&&e[a]===s&&delete e[a],s.destroy&&s.destroy();else if("function"==typeof a?a(null):e&&a&&e[a]===r&&delete e[a],o)for(let t=0;t{this.resolveNextUpdatePromise=t}))),this.nextUpdatePromise}performUpdates(){for(;this.updateRequests.length>0;)this.updateRequests.shift()();for(this.pendingAnimationFrame=null;this.readRequests.length>0;)this.readRequests.shift()();if(this.nextUpdatePromise){let t=this.resolveNextUpdatePromise;this.nextUpdatePromise=null,this.resolveNextUpdatePromise=null,t()}}};let Nt=null;var Dt=function(){return Nt||(Nt=new jt),Nt};const Lt=new WeakSet;let Ft=0,Mt=0;function Rt(t){return null!=t&&!1!==t}function Bt(t,e){e.context=t,e.ambiguous&&(e.ambiguous.forEach((e=>{e.context=t})),delete e.ambiguous)}function zt(t,e=!0){if(!Rt(t.virtualNode))throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a valid virtualNode. Perhaps this component was never initialized?");if(null==t.element)throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a DOM element. Perhaps this component was never initialized?");let n=t.render();if(!Rt(n)){const e=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+n+" returned from render()"+e)}Bt(t,n),Ft++;let r=t.virtualNode,i=t.element,o=Et(r,n,{refs:t.refs,listenerContext:t});if(t.virtualNode=n,o!==i&&!e)throw new Error("The root node type changed on update, but the update was performed with the replaceNode option set to false");t.element=o,"function"==typeof t.writeAfterUpdate&&t.writeAfterUpdate(),"function"==typeof t.readAfterUpdate&&Dt().readDocument((function(){t.readAfterUpdate()})),Ft--}function qt(t,e=!0){Mt++,Ht(t.virtualNode),1===Mt&&e&&t.element.remove(),Mt--}function Ht(t){t.component&&"function"==typeof t.component.destroy?t.component.destroy():t.children&&t.children.forEach(Ht)}kt={initialize:function(t){if("function"!=typeof t.update)throw new Error("Etch components must implement `update(props, children)`.");let e=t.render();if(!Rt(e)){let n=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+e+" returned from render()"+n)}Bt(t,e),t.refs={},t.virtualNode=e,t.element=gt(t.virtualNode,{refs:t.refs,listenerContext:t})},update:function(t,e=!0){if(Ft>0)return zt(t,e),Promise.resolve();let n=Dt();return Lt.has(t)||(Lt.add(t),n.updateDocument((function(){Lt.delete(t),zt(t,e)}))),n.getNextUpdatePromise()},updateSync:zt,destroy:function(t,e=!0){if(Ft>0||Mt>0)return qt(t,e),Promise.resolve();let n=Dt();return n.updateDocument((function(){qt(t,e)})),n.getNextUpdatePromise()},destroySync:qt};const{initialize:Ut,update:$t,updateSync:Vt,destroy:Wt,destroySync:Gt}=kt;function Kt(t){void 0!==t&&("function"==typeof t.catch?t.catch((t=>{atom.notifications.addFatalError("Atom-Typescript error: "+t.message,{detail:t.toString(),stack:t.stack,dismissable:!0})})):atom.notifications.addFatalError("Atom-Typescript: non-promise passed to handlePromise. Please report this.",{stack:(new Error).stack,dismissable:!0}))}ft={dom:ut,render:gt,initialize:Ut,update:$t,updateSync:Vt,destroy:Wt,destroySync:Gt,setScheduler:function(t){Nt=t},getScheduler:Dt};var Qt=function(){var t=this,e={exports:this};return function(){var n,r="Expected a function",i="__lodash_hash_undefined__",o="__lodash_placeholder__",s=16,a=32,c=64,u=128,l=256,f=1/0,p=9007199254740991,h=NaN,d=4294967295,m=[["ary",u],["bind",1],["bindKey",2],["curry",8],["curryRight",s],["flip",512],["partial",a],["partialRight",c],["rearg",l]],g="[object Arguments]",v="[object Array]",y="[object Boolean]",w="[object Date]",b="[object Error]",_="[object Function]",x="[object GeneratorFunction]",S="[object Map]",k="[object Number]",E="[object Object]",C="[object Promise]",P="[object RegExp]",A="[object Set]",O="[object String]",I="[object Symbol]",j="[object WeakMap]",N="[object ArrayBuffer]",D="[object DataView]",L="[object Float32Array]",F="[object Float64Array]",M="[object Int8Array]",R="[object Int16Array]",B="[object Int32Array]",z="[object Uint8Array]",q="[object Uint8ClampedArray]",H="[object Uint16Array]",U="[object Uint32Array]",$=/\b__p \+= '';/g,V=/\b(__p \+=) '' \+/g,W=/(__e\(.*?\)|\b__t\)) \+\n'';/g,G=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>"']/g,Q=RegExp(G.source),Z=RegExp(K.source),J=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,X=/<%=([\s\S]+?)%>/g,tt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,et=/^\w*$/,nt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rt=/[\\^$.*+?()[\]{}|]/g,it=RegExp(rt.source),ot=/^\s+|\s+$/g,st=/^\s+/,at=/\s+$/,ct=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ut=/\{\n\/\* \[wrapped with (.+)\] \*/,lt=/,? & /,ft=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,pt=/\\(\\)?/g,ht=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,dt=/\w*$/,mt=/^[-+]0x[0-9a-f]+$/i,gt=/^0b[01]+$/i,vt=/^\[object .+?Constructor\]$/,yt=/^0o[0-7]+$/i,wt=/^(?:0|[1-9]\d*)$/,bt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,_t=/($^)/,xt=/['\n\r\u2028\u2029\\]/g,St="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",kt="\\u2700-\\u27bf",Et="a-z\\xdf-\\xf6\\xf8-\\xff",Ct="A-Z\\xc0-\\xd6\\xd8-\\xde",Tt="\\ufe0e\\ufe0f",Pt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",At="['’]",Ot="[\\ud800-\\udfff]",It="["+Pt+"]",jt="["+St+"]",Nt="\\d+",Dt="[\\u2700-\\u27bf]",Lt="["+Et+"]",Ft="[^\\ud800-\\udfff"+Pt+Nt+kt+Et+Ct+"]",Mt="\\ud83c[\\udffb-\\udfff]",Rt="[^\\ud800-\\udfff]",Bt="(?:\\ud83c[\\udde6-\\uddff]){2}",zt="[\\ud800-\\udbff][\\udc00-\\udfff]",qt="["+Ct+"]",Ht="(?:"+Lt+"|"+Ft+")",Ut="(?:"+qt+"|"+Ft+")",$t="(?:['’](?:d|ll|m|re|s|t|ve))?",Vt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Wt="(?:"+jt+"|"+Mt+")"+"?",Gt="[\\ufe0e\\ufe0f]?",Kt=Gt+Wt+("(?:\\u200d(?:"+[Rt,Bt,zt].join("|")+")"+Gt+Wt+")*"),Qt="(?:"+[Dt,Bt,zt].join("|")+")"+Kt,Zt="(?:"+[Rt+jt+"?",jt,Bt,zt,Ot].join("|")+")",Jt=RegExp(At,"g"),Yt=RegExp(jt,"g"),Xt=RegExp(Mt+"(?="+Mt+")|"+Zt+Kt,"g"),te=RegExp([qt+"?"+Lt+"+"+$t+"(?="+[It,qt,"$"].join("|")+")",Ut+"+"+Vt+"(?="+[It,qt+Ht,"$"].join("|")+")",qt+"?"+Ht+"+"+$t,qt+"+"+Vt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Nt,Qt].join("|"),"g"),ee=RegExp("[\\u200d\\ud800-\\udfff"+St+Tt+"]"),ne=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,re=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ie=-1,oe={};oe[L]=oe[F]=oe[M]=oe[R]=oe[B]=oe[z]=oe[q]=oe[H]=oe[U]=!0,oe[g]=oe[v]=oe[N]=oe[y]=oe[D]=oe[w]=oe[b]=oe[_]=oe[S]=oe[k]=oe[E]=oe[P]=oe[A]=oe[O]=oe[j]=!1;var se={};se[g]=se[v]=se[N]=se[D]=se[y]=se[w]=se[L]=se[F]=se[M]=se[R]=se[B]=se[S]=se[k]=se[E]=se[P]=se[A]=se[O]=se[I]=se[z]=se[q]=se[H]=se[U]=!0,se[b]=se[_]=se[j]=!1;var ae={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ce=parseFloat,ue=parseInt,le="object"==typeof T&&T&&T.Object===Object&&T,fe="object"==typeof self&&self&&self.Object===Object&&self,pe=le||fe||Function("return this")(),he="object"==typeof t&&t&&!t.nodeType&&t,de=he&&"object"==typeof e&&e&&!e.nodeType&&e,me=de&&de.exports===he,ge=me&&le.process,ve=function(){try{var t=de&&de.require&&de.require("util").types;return t||ge&&ge.binding&&ge.binding("util")}catch(t){}}(),ye=ve&&ve.isArrayBuffer,we=ve&&ve.isDate,be=ve&&ve.isMap,_e=ve&&ve.isRegExp,xe=ve&&ve.isSet,Se=ve&&ve.isTypedArray;function ke(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function Ee(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function Ie(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function Xe(t,e){for(var n=t.length;n--&&ze(e,t[n],0)>-1;);return n}function tn(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}var en=Ve({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),nn=Ve({"&":"&","<":"<",">":">",'"':""","'":"'"});function rn(t){return"\\"+ae[t]}function on(t){return ee.test(t)}function sn(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function an(t,e){return function(n){return t(e(n))}}function cn(t,e){for(var n=-1,r=t.length,i=0,s=[];++n",""":'"',"'":"'"});var dn=function t(e){var T,St=(e=null==e?pe:dn.defaults(pe.Object(),e,dn.pick(pe,re))).Array,kt=e.Date,Et=e.Error,Ct=e.Function,Tt=e.Math,Pt=e.Object,At=e.RegExp,Ot=e.String,It=e.TypeError,jt=St.prototype,Nt=Ct.prototype,Dt=Pt.prototype,Lt=e["__core-js_shared__"],Ft=Nt.toString,Mt=Dt.hasOwnProperty,Rt=0,Bt=(T=/[^.]+$/.exec(Lt&&Lt.keys&&Lt.keys.IE_PROTO||""))?"Symbol(src)_1."+T:"",zt=Dt.toString,qt=Ft.call(Pt),Ht=pe._,Ut=At("^"+Ft.call(Mt).replace(rt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),$t=me?e.Buffer:n,Vt=e.Symbol,Wt=e.Uint8Array,Gt=$t?$t.allocUnsafe:n,Kt=an(Pt.getPrototypeOf,Pt),Qt=Pt.create,Zt=Dt.propertyIsEnumerable,Xt=jt.splice,ee=Vt?Vt.isConcatSpreadable:n,ae=Vt?Vt.iterator:n,le=Vt?Vt.toStringTag:n,fe=function(){try{var t=po(Pt,"defineProperty");return t({},"",{}),t}catch(t){}}(),he=e.clearTimeout!==pe.clearTimeout&&e.clearTimeout,de=kt&&kt.now!==pe.Date.now&&kt.now,ge=e.setTimeout!==pe.setTimeout&&e.setTimeout,ve=Tt.ceil,Me=Tt.floor,Ve=Pt.getOwnPropertySymbols,mn=$t?$t.isBuffer:n,gn=e.isFinite,vn=jt.join,yn=an(Pt.keys,Pt),wn=Tt.max,bn=Tt.min,_n=kt.now,xn=e.parseInt,Sn=Tt.random,kn=jt.reverse,En=po(e,"DataView"),Cn=po(e,"Map"),Tn=po(e,"Promise"),Pn=po(e,"Set"),An=po(e,"WeakMap"),On=po(Pt,"create"),In=An&&new An,jn={},Nn=zo(En),Dn=zo(Cn),Ln=zo(Tn),Fn=zo(Pn),Mn=zo(An),Rn=Vt?Vt.prototype:n,Bn=Rn?Rn.valueOf:n,zn=Rn?Rn.toString:n;function qn(t){if(ra(t)&&!Ws(t)&&!(t instanceof Vn)){if(t instanceof $n)return t;if(Mt.call(t,"__wrapped__"))return qo(t)}return new $n(t)}var Hn=function(){function t(){}return function(e){if(!na(e))return{};if(Qt)return Qt(e);t.prototype=e;var r=new t;return t.prototype=n,r}}();function Un(){}function $n(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=n}function Vn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=d,this.__views__=[]}function Wn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function ur(t,e,r,i,o,s){var a,c=1&e,u=2&e,l=4&e;if(r&&(a=o?r(t,i,o,s):r(t)),a!==n)return a;if(!na(t))return t;var f=Ws(t);if(f){if(a=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&Mt.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!c)return Oi(t,a)}else{var p=go(t),h=p==_||p==x;if(Zs(t))return ki(t,c);if(p==E||p==g||h&&!o){if(a=u||h?{}:yo(t),!c)return u?function(t,e){return Ii(t,mo(t),e)}(t,function(t,e){return t&&Ii(e,Da(e),t)}(a,t)):function(t,e){return Ii(t,ho(t),e)}(t,or(a,t))}else{if(!se[p])return o?t:{};a=function(t,e,n){var r=t.constructor;switch(e){case N:return Ei(t);case y:case w:return new r(+t);case D:return function(t,e){var n=e?Ei(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case L:case F:case M:case R:case B:case z:case q:case H:case U:return Ci(t,n);case S:return new r;case k:case O:return new r(t);case P:return function(t){var e=new t.constructor(t.source,dt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case A:return new r;case I:return i=t,Bn?Pt(Bn.call(i)):{}}var i}(t,p,c)}}s||(s=new Zn);var d=s.get(t);if(d)return d;s.set(t,a),ca(t)?t.forEach((function(n){a.add(ur(n,e,r,n,t,s))})):ia(t)&&t.forEach((function(n,i){a.set(i,ur(n,e,r,i,t,s))}));var m=f?n:(l?u?oo:io:u?Da:Na)(t);return Ce(m||t,(function(n,i){m&&(n=t[i=n]),nr(a,i,ur(n,e,r,i,t,s))})),a}function lr(t,e,r){var i=r.length;if(null==t)return!i;for(t=Pt(t);i--;){var o=r[i],s=e[o],a=t[o];if(a===n&&!(o in t)||!s(a))return!1}return!0}function fr(t,e,i){if("function"!=typeof t)throw new It(r);return No((function(){t.apply(n,i)}),e)}function pr(t,e,n,r){var i=-1,o=Oe,s=!0,a=t.length,c=[],u=e.length;if(!a)return c;n&&(e=je(e,Qe(n))),r?(o=Ie,s=!1):e.length>=200&&(o=Je,s=!1,e=new Qn(e));t:for(;++i-1},Gn.prototype.set=function(t,e){var n=this.__data__,r=rr(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},Kn.prototype.clear=function(){this.size=0,this.__data__={hash:new Wn,map:new(Cn||Gn),string:new Wn}},Kn.prototype.delete=function(t){var e=lo(this,t).delete(t);return this.size-=e?1:0,e},Kn.prototype.get=function(t){return lo(this,t).get(t)},Kn.prototype.has=function(t){return lo(this,t).has(t)},Kn.prototype.set=function(t,e){var n=lo(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},Qn.prototype.add=Qn.prototype.push=function(t){return this.__data__.set(t,i),this},Qn.prototype.has=function(t){return this.__data__.has(t)},Zn.prototype.clear=function(){this.__data__=new Gn,this.size=0},Zn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Zn.prototype.get=function(t){return this.__data__.get(t)},Zn.prototype.has=function(t){return this.__data__.has(t)},Zn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Gn){var r=n.__data__;if(!Cn||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new Kn(r)}return n.set(t,e),this.size=n.size,this};var hr=Di(_r),dr=Di(xr,!0);function mr(t,e){var n=!0;return hr(t,(function(t,r,i){return n=!!e(t,r,i)})),n}function gr(t,e,r){for(var i=-1,o=t.length;++i0&&n(a)?e>1?yr(a,e-1,n,r,i):Ne(i,a):r||(i[i.length]=a)}return i}var wr=Li(),br=Li(!0);function _r(t,e){return t&&wr(t,e,Na)}function xr(t,e){return t&&br(t,e,Na)}function Sr(t,e){return Ae(e,(function(e){return Xs(t[e])}))}function kr(t,e){for(var r=0,i=(e=bi(e,t)).length;null!=t&&re}function Pr(t,e){return null!=t&&Mt.call(t,e)}function Ar(t,e){return null!=t&&e in Pt(t)}function Or(t,e,r){for(var i=r?Ie:Oe,o=t[0].length,s=t.length,a=s,c=St(s),u=1/0,l=[];a--;){var f=t[a];a&&e&&(f=je(f,Qe(e))),u=bn(f.length,u),c[a]=!r&&(e||o>=120&&f.length>=120)?new Qn(a&&f):n}f=t[0];var p=-1,h=c[0];t:for(;++p=a?c:c*("desc"==n[r]?-1:1)}return t.index-e.index}(t,e,n)}))}function Wr(t,e,n){for(var r=-1,i=e.length,o={};++r-1;)a!==t&&Xt.call(a,c,1),Xt.call(t,c,1);return t}function Kr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;bo(i)?Xt.call(t,i,1):pi(t,i)}}return t}function Qr(t,e){return t+Me(Sn()*(e-t+1))}function Zr(t,e){var n="";if(!t||e<1||e>p)return n;do{e%2&&(n+=t),(e=Me(e/2))&&(t+=t)}while(e);return n}function Jr(t,e){return Do(Po(t,e,oc),t+"")}function Yr(t){return Yn(Ha(t))}function Xr(t,e){var n=Ha(t);return Mo(n,cr(e,0,n.length))}function ti(t,e,r,i){if(!na(t))return t;for(var o=-1,s=(e=bi(e,t)).length,a=s-1,c=t;null!=c&&++oi?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=St(i);++r>>1,s=t[o];null!==s&&!la(s)&&(n?s<=e:s=200){var u=e?null:Zi(t);if(u)return un(u);s=!1,i=Je,c=new Qn}else c=e?[]:a;t:for(;++r=i?t:ii(t,e,r)}var Si=he||function(t){return pe.clearTimeout(t)};function ki(t,e){if(e)return t.slice();var n=t.length,r=Gt?Gt(n):new t.constructor(n);return t.copy(r),r}function Ei(t){var e=new t.constructor(t.byteLength);return new Wt(e).set(new Wt(t)),e}function Ci(t,e){var n=e?Ei(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Ti(t,e){if(t!==e){var r=t!==n,i=null===t,o=t==t,s=la(t),a=e!==n,c=null===e,u=e==e,l=la(e);if(!c&&!l&&!s&&t>e||s&&a&&u&&!c&&!l||i&&a&&u||!r&&u||!o)return 1;if(!i&&!s&&!l&&t1?r[o-1]:n,a=o>2?r[2]:n;for(s=t.length>3&&"function"==typeof s?(o--,s):n,a&&_o(r[0],r[1],a)&&(s=o<3?n:s,o=1),e=Pt(e);++i-1?o[s?e[a]:a]:n}}function zi(t){return ro((function(e){var i=e.length,o=i,s=$n.prototype.thru;for(t&&e.reverse();o--;){var a=e[o];if("function"!=typeof a)throw new It(r);if(s&&!c&&"wrapper"==ao(a))var c=new $n([],!0)}for(o=c?o:i;++o1&&y.reverse(),p&&lc))return!1;var l=s.get(t),f=s.get(e);if(l&&f)return l==e&&f==t;var p=-1,h=!0,d=2&r?new Qn:n;for(s.set(t,e),s.set(e,t);++p-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(ct,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return Ce(m,(function(n){var r="_."+n[0];e&n[1]&&!Oe(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match(ut);return e?e[1].split(lt):[]}(r),n)))}function Fo(t){var e=0,r=0;return function(){var i=_n(),o=16-(i-r);if(r=i,o>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(n,arguments)}}function Mo(t,e){var r=-1,i=t.length,o=i-1;for(e=e===n?i:e;++r1?t[e-1]:n;return r="function"==typeof r?(t.pop(),r):n,as(t,r)}));function ds(t){var e=qn(t);return e.__chain__=!0,e}function ms(t,e){return e(t)}var gs=ro((function(t){var e=t.length,r=e?t[0]:0,i=this.__wrapped__,o=function(e){return ar(e,t)};return!(e>1||this.__actions__.length)&&i instanceof Vn&&bo(r)?((i=i.slice(r,+r+(e?1:0))).__actions__.push({func:ms,args:[o],thisArg:n}),new $n(i,this.__chain__).thru((function(t){return e&&!t.length&&t.push(n),t}))):this.thru(o)}));var vs=ji((function(t,e,n){Mt.call(t,n)?++t[n]:sr(t,n,1)}));var ys=Bi(Vo),ws=Bi(Wo);function bs(t,e){return(Ws(t)?Ce:hr)(t,uo(e,3))}function _s(t,e){return(Ws(t)?Te:dr)(t,uo(e,3))}var xs=ji((function(t,e,n){Mt.call(t,n)?t[n].push(e):sr(t,n,[e])}));var Ss=Jr((function(t,e,n){var r=-1,i="function"==typeof e,o=Ks(t)?St(t.length):[];return hr(t,(function(t){o[++r]=i?ke(e,t,n):Ir(t,e,n)})),o})),ks=ji((function(t,e,n){sr(t,n,e)}));function Es(t,e){return(Ws(t)?je:zr)(t,uo(e,3))}var Cs=ji((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var Ts=Jr((function(t,e){if(null==t)return[];var n=e.length;return n>1&&_o(t,e[0],e[1])?e=[]:n>2&&_o(e[0],e[1],e[2])&&(e=[e[0]]),Vr(t,yr(e,1),[])})),Ps=de||function(){return pe.Date.now()};function As(t,e,r){return e=r?n:e,e=t&&null==e?t.length:e,Yi(t,u,n,n,n,n,e)}function Os(t,e){var i;if("function"!=typeof e)throw new It(r);return t=ga(t),function(){return--t>0&&(i=e.apply(this,arguments)),t<=1&&(e=n),i}}var Is=Jr((function(t,e,n){var r=1;if(n.length){var i=cn(n,co(Is));r|=a}return Yi(t,r,e,n,i)})),js=Jr((function(t,e,n){var r=3;if(n.length){var i=cn(n,co(js));r|=a}return Yi(e,r,t,n,i)}));function Ns(t,e,i){var o,s,a,c,u,l,f=0,p=!1,h=!1,d=!0;if("function"!=typeof t)throw new It(r);function m(e){var r=o,i=s;return o=s=n,f=e,c=t.apply(i,r)}function g(t){return f=t,u=No(y,e),p?m(t):c}function v(t){var r=t-l;return l===n||r>=e||r<0||h&&t-f>=a}function y(){var t=Ps();if(v(t))return w(t);u=No(y,function(t){var n=e-(t-l);return h?bn(n,a-(t-f)):n}(t))}function w(t){return u=n,d&&o?m(t):(o=s=n,c)}function b(){var t=Ps(),r=v(t);if(o=arguments,s=this,l=t,r){if(u===n)return g(l);if(h)return Si(u),u=No(y,e),m(l)}return u===n&&(u=No(y,e)),c}return e=ya(e)||0,na(i)&&(p=!!i.leading,a=(h="maxWait"in i)?wn(ya(i.maxWait)||0,e):a,d="trailing"in i?!!i.trailing:d),b.cancel=function(){u!==n&&Si(u),f=0,o=l=s=u=n},b.flush=function(){return u===n?c:w(Ps())},b}var Ds=Jr((function(t,e){return fr(t,1,e)})),Ls=Jr((function(t,e,n){return fr(t,ya(e)||0,n)}));function Fs(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new It(r);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=t.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(Fs.Cache||Kn),n}function Ms(t){if("function"!=typeof t)throw new It(r);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Fs.Cache=Kn;var Rs=_i((function(t,e){var n=(e=1==e.length&&Ws(e[0])?je(e[0],Qe(uo())):je(yr(e,1),Qe(uo()))).length;return Jr((function(r){for(var i=-1,o=bn(r.length,n);++i=e})),Vs=jr(function(){return arguments}())?jr:function(t){return ra(t)&&Mt.call(t,"callee")&&!Zt.call(t,"callee")},Ws=St.isArray,Gs=ye?Qe(ye):function(t){return ra(t)&&Cr(t)==N};function Ks(t){return null!=t&&ea(t.length)&&!Xs(t)}function Qs(t){return ra(t)&&Ks(t)}var Zs=mn||yc,Js=we?Qe(we):function(t){return ra(t)&&Cr(t)==w};function Ys(t){if(!ra(t))return!1;var e=Cr(t);return e==b||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!sa(t)}function Xs(t){if(!na(t))return!1;var e=Cr(t);return e==_||e==x||"[object AsyncFunction]"==e||"[object Proxy]"==e}function ta(t){return"number"==typeof t&&t==ga(t)}function ea(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=p}function na(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ra(t){return null!=t&&"object"==typeof t}var ia=be?Qe(be):function(t){return ra(t)&&go(t)==S};function oa(t){return"number"==typeof t||ra(t)&&Cr(t)==k}function sa(t){if(!ra(t)||Cr(t)!=E)return!1;var e=Kt(t);if(null===e)return!0;var n=Mt.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Ft.call(n)==qt}var aa=_e?Qe(_e):function(t){return ra(t)&&Cr(t)==P};var ca=xe?Qe(xe):function(t){return ra(t)&&go(t)==A};function ua(t){return"string"==typeof t||!Ws(t)&&ra(t)&&Cr(t)==O}function la(t){return"symbol"==typeof t||ra(t)&&Cr(t)==I}var fa=Se?Qe(Se):function(t){return ra(t)&&ea(t.length)&&!!oe[Cr(t)]};var pa=Gi(Br),ha=Gi((function(t,e){return t<=e}));function da(t){if(!t)return[];if(Ks(t))return ua(t)?pn(t):Oi(t);if(ae&&t[ae])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[ae]());var e=go(t);return(e==S?sn:e==A?un:Ha)(t)}function ma(t){return t?(t=ya(t))===f||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function ga(t){var e=ma(t),n=e%1;return e==e?n?e-n:e:0}function va(t){return t?cr(ga(t),0,d):0}function ya(t){if("number"==typeof t)return t;if(la(t))return h;if(na(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=na(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(ot,"");var n=gt.test(t);return n||yt.test(t)?ue(t.slice(2),n?2:8):mt.test(t)?h:+t}function wa(t){return Ii(t,Da(t))}function ba(t){return null==t?"":li(t)}var _a=Ni((function(t,e){if(Eo(e)||Ks(e))Ii(e,Na(e),t);else for(var n in e)Mt.call(e,n)&&nr(t,n,e[n])})),xa=Ni((function(t,e){Ii(e,Da(e),t)})),Sa=Ni((function(t,e,n,r){Ii(e,Da(e),t,r)})),ka=Ni((function(t,e,n,r){Ii(e,Na(e),t,r)})),Ea=ro(ar);var Ca=Jr((function(t,e){t=Pt(t);var r=-1,i=e.length,o=i>2?e[2]:n;for(o&&_o(e[0],e[1],o)&&(i=1);++r1),e})),Ii(t,oo(t),n),r&&(n=ur(n,7,eo));for(var i=e.length;i--;)pi(n,e[i]);return n}));var Ra=ro((function(t,e){return null==t?{}:function(t,e){return Wr(t,e,(function(e,n){return Aa(t,n)}))}(t,e)}));function Ba(t,e){if(null==t)return{};var n=je(oo(t),(function(t){return[t]}));return e=uo(e),Wr(t,n,(function(t,n){return e(t,n[0])}))}var za=Ji(Na),qa=Ji(Da);function Ha(t){return null==t?[]:Ze(t,Na(t))}var Ua=Mi((function(t,e,n){return e=e.toLowerCase(),t+(n?$a(e):e)}));function $a(t){return Ya(ba(t).toLowerCase())}function Va(t){return(t=ba(t))&&t.replace(bt,en).replace(Yt,"")}var Wa=Mi((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Ga=Mi((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Ka=Fi("toLowerCase");var Qa=Mi((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var Za=Mi((function(t,e,n){return t+(n?" ":"")+Ya(e)}));var Ja=Mi((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),Ya=Fi("toUpperCase");function Xa(t,e,r){return t=ba(t),(e=r?n:e)===n?function(t){return ne.test(t)}(t)?function(t){return t.match(te)||[]}(t):function(t){return t.match(ft)||[]}(t):t.match(e)||[]}var tc=Jr((function(t,e){try{return ke(t,n,e)}catch(t){return Ys(t)?t:new Et(t)}})),ec=ro((function(t,e){return Ce(e,(function(e){e=Bo(e),sr(t,e,Is(t[e],t))})),t}));function nc(t){return function(){return t}}var rc=zi(),ic=zi(!0);function oc(t){return t}function sc(t){return Fr("function"==typeof t?t:ur(t,1))}var ac=Jr((function(t,e){return function(n){return Ir(n,t,e)}})),cc=Jr((function(t,e){return function(n){return Ir(t,n,e)}}));function uc(t,e,n){var r=Na(e),i=Sr(e,r);null!=n||na(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=Sr(e,Na(e)));var o=!(na(n)&&"chain"in n&&!n.chain),s=Xs(t);return Ce(i,(function(n){var r=e[n];t[n]=r,s&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=Oi(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,Ne([this.value()],arguments))})})),t}function lc(){}var fc=$i(je),pc=$i(Pe),hc=$i(Fe);function dc(t){return xo(t)?$e(Bo(t)):function(t){return function(e){return kr(e,t)}}(t)}var mc=Wi(),gc=Wi(!0);function vc(){return[]}function yc(){return!1}var wc=Ui((function(t,e){return t+e}),0),bc=Qi("ceil"),_c=Ui((function(t,e){return t/e}),1),xc=Qi("floor");var Sc=Ui((function(t,e){return t*e}),1),kc=Qi("round"),Ec=Ui((function(t,e){return t-e}),0);return qn.after=function(t,e){if("function"!=typeof e)throw new It(r);return t=ga(t),function(){if(--t<1)return e.apply(this,arguments)}},qn.ary=As,qn.assign=_a,qn.assignIn=xa,qn.assignInWith=Sa,qn.assignWith=ka,qn.at=Ea,qn.before=Os,qn.bind=Is,qn.bindAll=ec,qn.bindKey=js,qn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Ws(t)?t:[t]},qn.chain=ds,qn.chunk=function(t,e,r){e=(r?_o(t,e,r):e===n)?1:wn(ga(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var o=0,s=0,a=St(ve(i/e));oo?0:o+r),(i=i===n||i>o?o:ga(i))<0&&(i+=o),i=r>i?0:va(i);r>>0)?(t=ba(t))&&("string"==typeof e||null!=e&&!aa(e))&&!(e=li(e))&&on(t)?xi(pn(t),0,r):t.split(e,r):[]},qn.spread=function(t,e){if("function"!=typeof t)throw new It(r);return e=null==e?0:wn(ga(e),0),Jr((function(n){var r=n[e],i=xi(n,0,e);return r&&Ne(i,r),ke(t,this,i)}))},qn.tail=function(t){var e=null==t?0:t.length;return e?ii(t,1,e):[]},qn.take=function(t,e,r){return t&&t.length?ii(t,0,(e=r||e===n?1:ga(e))<0?0:e):[]},qn.takeRight=function(t,e,r){var i=null==t?0:t.length;return i?ii(t,(e=i-(e=r||e===n?1:ga(e)))<0?0:e,i):[]},qn.takeRightWhile=function(t,e){return t&&t.length?di(t,uo(e,3),!1,!0):[]},qn.takeWhile=function(t,e){return t&&t.length?di(t,uo(e,3)):[]},qn.tap=function(t,e){return e(t),t},qn.throttle=function(t,e,n){var i=!0,o=!0;if("function"!=typeof t)throw new It(r);return na(n)&&(i="leading"in n?!!n.leading:i,o="trailing"in n?!!n.trailing:o),Ns(t,e,{leading:i,maxWait:e,trailing:o})},qn.thru=ms,qn.toArray=da,qn.toPairs=za,qn.toPairsIn=qa,qn.toPath=function(t){return Ws(t)?je(t,Bo):la(t)?[t]:Oi(Ro(ba(t)))},qn.toPlainObject=wa,qn.transform=function(t,e,n){var r=Ws(t),i=r||Zs(t)||fa(t);if(e=uo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:na(t)&&Xs(o)?Hn(Kt(t)):{}}return(i?Ce:_r)(t,(function(t,r,i){return e(n,t,r,i)})),n},qn.unary=function(t){return As(t,1)},qn.union=rs,qn.unionBy=is,qn.unionWith=os,qn.uniq=function(t){return t&&t.length?fi(t):[]},qn.uniqBy=function(t,e){return t&&t.length?fi(t,uo(e,2)):[]},qn.uniqWith=function(t,e){return e="function"==typeof e?e:n,t&&t.length?fi(t,n,e):[]},qn.unset=function(t,e){return null==t||pi(t,e)},qn.unzip=ss,qn.unzipWith=as,qn.update=function(t,e,n){return null==t?t:hi(t,e,wi(n))},qn.updateWith=function(t,e,r,i){return i="function"==typeof i?i:n,null==t?t:hi(t,e,wi(r),i)},qn.values=Ha,qn.valuesIn=function(t){return null==t?[]:Ze(t,Da(t))},qn.without=cs,qn.words=Xa,qn.wrap=function(t,e){return Bs(wi(e),t)},qn.xor=us,qn.xorBy=ls,qn.xorWith=fs,qn.zip=ps,qn.zipObject=function(t,e){return vi(t||[],e||[],nr)},qn.zipObjectDeep=function(t,e){return vi(t||[],e||[],ti)},qn.zipWith=hs,qn.entries=za,qn.entriesIn=qa,qn.extend=xa,qn.extendWith=Sa,uc(qn,qn),qn.add=wc,qn.attempt=tc,qn.camelCase=Ua,qn.capitalize=$a,qn.ceil=bc,qn.clamp=function(t,e,r){return r===n&&(r=e,e=n),r!==n&&(r=(r=ya(r))==r?r:0),e!==n&&(e=(e=ya(e))==e?e:0),cr(ya(t),e,r)},qn.clone=function(t){return ur(t,4)},qn.cloneDeep=function(t){return ur(t,5)},qn.cloneDeepWith=function(t,e){return ur(t,5,e="function"==typeof e?e:n)},qn.cloneWith=function(t,e){return ur(t,4,e="function"==typeof e?e:n)},qn.conformsTo=function(t,e){return null==e||lr(t,e,Na(e))},qn.deburr=Va,qn.defaultTo=function(t,e){return null==t||t!=t?e:t},qn.divide=_c,qn.endsWith=function(t,e,r){t=ba(t),e=li(e);var i=t.length,o=r=r===n?i:cr(ga(r),0,i);return(r-=e.length)>=0&&t.slice(r,o)==e},qn.eq=Hs,qn.escape=function(t){return(t=ba(t))&&Z.test(t)?t.replace(K,nn):t},qn.escapeRegExp=function(t){return(t=ba(t))&&it.test(t)?t.replace(rt,"\\$&"):t},qn.every=function(t,e,r){var i=Ws(t)?Pe:mr;return r&&_o(t,e,r)&&(e=n),i(t,uo(e,3))},qn.find=ys,qn.findIndex=Vo,qn.findKey=function(t,e){return Re(t,uo(e,3),_r)},qn.findLast=ws,qn.findLastIndex=Wo,qn.findLastKey=function(t,e){return Re(t,uo(e,3),xr)},qn.floor=xc,qn.forEach=bs,qn.forEachRight=_s,qn.forIn=function(t,e){return null==t?t:wr(t,uo(e,3),Da)},qn.forInRight=function(t,e){return null==t?t:br(t,uo(e,3),Da)},qn.forOwn=function(t,e){return t&&_r(t,uo(e,3))},qn.forOwnRight=function(t,e){return t&&xr(t,uo(e,3))},qn.get=Pa,qn.gt=Us,qn.gte=$s,qn.has=function(t,e){return null!=t&&vo(t,e,Pr)},qn.hasIn=Aa,qn.head=Ko,qn.identity=oc,qn.includes=function(t,e,n,r){t=Ks(t)?t:Ha(t),n=n&&!r?ga(n):0;var i=t.length;return n<0&&(n=wn(i+n,0)),ua(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&ze(t,e,n)>-1},qn.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:ga(n);return i<0&&(i=wn(r+i,0)),ze(t,e,i)},qn.inRange=function(t,e,r){return e=ma(e),r===n?(r=e,e=0):r=ma(r),function(t,e,n){return t>=bn(e,n)&&t=-9007199254740991&&t<=p},qn.isSet=ca,qn.isString=ua,qn.isSymbol=la,qn.isTypedArray=fa,qn.isUndefined=function(t){return t===n},qn.isWeakMap=function(t){return ra(t)&&go(t)==j},qn.isWeakSet=function(t){return ra(t)&&"[object WeakSet]"==Cr(t)},qn.join=function(t,e){return null==t?"":vn.call(t,e)},qn.kebabCase=Wa,qn.last=Yo,qn.lastIndexOf=function(t,e,r){var i=null==t?0:t.length;if(!i)return-1;var o=i;return r!==n&&(o=(o=ga(r))<0?wn(i+o,0):bn(o,i-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,o):Be(t,He,o,!0)},qn.lowerCase=Ga,qn.lowerFirst=Ka,qn.lt=pa,qn.lte=ha,qn.max=function(t){return t&&t.length?gr(t,oc,Tr):n},qn.maxBy=function(t,e){return t&&t.length?gr(t,uo(e,2),Tr):n},qn.mean=function(t){return Ue(t,oc)},qn.meanBy=function(t,e){return Ue(t,uo(e,2))},qn.min=function(t){return t&&t.length?gr(t,oc,Br):n},qn.minBy=function(t,e){return t&&t.length?gr(t,uo(e,2),Br):n},qn.stubArray=vc,qn.stubFalse=yc,qn.stubObject=function(){return{}},qn.stubString=function(){return""},qn.stubTrue=function(){return!0},qn.multiply=Sc,qn.nth=function(t,e){return t&&t.length?$r(t,ga(e)):n},qn.noConflict=function(){return pe._===this&&(pe._=Ht),this},qn.noop=lc,qn.now=Ps,qn.pad=function(t,e,n){t=ba(t);var r=(e=ga(e))?fn(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Vi(Me(i),n)+t+Vi(ve(i),n)},qn.padEnd=function(t,e,n){t=ba(t);var r=(e=ga(e))?fn(t):0;return e&&re){var i=t;t=e,e=i}if(r||t%1||e%1){var o=Sn();return bn(t+o*(e-t+ce("1e-"+((o+"").length-1))),e)}return Qr(t,e)},qn.reduce=function(t,e,n){var r=Ws(t)?De:We,i=arguments.length<3;return r(t,uo(e,4),n,i,hr)},qn.reduceRight=function(t,e,n){var r=Ws(t)?Le:We,i=arguments.length<3;return r(t,uo(e,4),n,i,dr)},qn.repeat=function(t,e,r){return e=(r?_o(t,e,r):e===n)?1:ga(e),Zr(ba(t),e)},qn.replace=function(){var t=arguments,e=ba(t[0]);return t.length<3?e:e.replace(t[1],t[2])},qn.result=function(t,e,r){var i=-1,o=(e=bi(e,t)).length;for(o||(o=1,t=n);++ip)return[];var n=d,r=bn(t,d);e=uo(e),t-=d;for(var i=Ke(r,e);++n=s)return t;var c=r-fn(i);if(c<1)return i;var u=a?xi(a,0,c).join(""):t.slice(0,c);if(o===n)return u+i;if(a&&(c+=u.length-c),aa(o)){if(t.slice(c).search(o)){var l,f=u;for(o.global||(o=At(o.source,ba(dt.exec(o))+"g")),o.lastIndex=0;l=o.exec(f);)var p=l.index;u=u.slice(0,p===n?c:p)}}else if(t.indexOf(li(o),c)!=c){var h=u.lastIndexOf(o);h>-1&&(u=u.slice(0,h))}return u+i},qn.unescape=function(t){return(t=ba(t))&&Q.test(t)?t.replace(G,hn):t},qn.uniqueId=function(t){var e=++Rt;return ba(t)+e},qn.upperCase=Ja,qn.upperFirst=Ya,qn.each=bs,qn.eachRight=_s,qn.first=Ko,uc(qn,function(){var t={};return _r(qn,(function(e,n){Mt.call(qn.prototype,n)||(t[n]=e)})),t}(),{chain:!1}),qn.VERSION="4.17.20",Ce(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){qn[t].placeholder=qn})),Ce(["drop","take"],(function(t,e){Vn.prototype[t]=function(r){r=r===n?1:wn(ga(r),0);var i=this.__filtered__&&!e?new Vn(this):this.clone();return i.__filtered__?i.__takeCount__=bn(r,i.__takeCount__):i.__views__.push({size:bn(r,d),type:t+(i.__dir__<0?"Right":"")}),i},Vn.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),Ce(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=1==n||3==n;Vn.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:uo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),Ce(["head","last"],(function(t,e){var n="take"+(e?"Right":"");Vn.prototype[t]=function(){return this[n](1).value()[0]}})),Ce(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");Vn.prototype[t]=function(){return this.__filtered__?new Vn(this):this[n](1)}})),Vn.prototype.compact=function(){return this.filter(oc)},Vn.prototype.find=function(t){return this.filter(t).head()},Vn.prototype.findLast=function(t){return this.reverse().find(t)},Vn.prototype.invokeMap=Jr((function(t,e){return"function"==typeof t?new Vn(this):this.map((function(n){return Ir(n,t,e)}))})),Vn.prototype.reject=function(t){return this.filter(Ms(uo(t)))},Vn.prototype.slice=function(t,e){t=ga(t);var r=this;return r.__filtered__&&(t>0||e<0)?new Vn(r):(t<0?r=r.takeRight(-t):t&&(r=r.drop(t)),e!==n&&(r=(e=ga(e))<0?r.dropRight(-e):r.take(e-t)),r)},Vn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Vn.prototype.toArray=function(){return this.take(d)},_r(Vn.prototype,(function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),i=/^(?:head|last)$/.test(e),o=qn[i?"take"+("last"==e?"Right":""):e],s=i||/^find/.test(e);o&&(qn.prototype[e]=function(){var e=this.__wrapped__,a=i?[1]:arguments,c=e instanceof Vn,u=a[0],l=c||Ws(e),f=function(t){var e=o.apply(qn,Ne([t],a));return i&&p?e[0]:e};l&&r&&"function"==typeof u&&1!=u.length&&(c=l=!1);var p=this.__chain__,h=!!this.__actions__.length,d=s&&!p,m=c&&!h;if(!s&&l){e=m?e:new Vn(this);var g=t.apply(e,a);return g.__actions__.push({func:ms,args:[f],thisArg:n}),new $n(g,p)}return d&&m?t.apply(this,a):(g=this.thru(f),d?i?g.value()[0]:g.value():g)})})),Ce(["pop","push","shift","sort","splice","unshift"],(function(t){var e=jt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);qn.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(Ws(i)?i:[],t)}return this[n]((function(n){return e.apply(Ws(n)?n:[],t)}))}})),_r(Vn.prototype,(function(t,e){var n=qn[e];if(n){var r=n.name+"";Mt.call(jn,r)||(jn[r]=[]),jn[r].push({name:e,func:n})}})),jn[qi(n,2).name]=[{name:"wrapper",func:n}],Vn.prototype.clone=function(){var t=new Vn(this.__wrapped__);return t.__actions__=Oi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Oi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Oi(this.__views__),t},Vn.prototype.reverse=function(){if(this.__filtered__){var t=new Vn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Vn.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Ws(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:t,value:t?n:this.__values__[this.__index__++]}},qn.prototype.plant=function(t){for(var e,r=this;r instanceof Un;){var i=qo(r);i.__index__=0,i.__values__=n,e?o.__wrapped__=i:e=i;var o=i;r=r.__wrapped__}return o.__wrapped__=t,e},qn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Vn){var e=t;return this.__actions__.length&&(e=new Vn(this)),(e=e.reverse()).__actions__.push({func:ms,args:[ns],thisArg:n}),new $n(e,this.__chain__)}return this.thru(ns)},qn.prototype.toJSON=qn.prototype.valueOf=qn.prototype.value=function(){return mi(this.__wrapped__,this.__actions__)},qn.prototype.first=qn.prototype.head,ae&&(qn.prototype[ae]=function(){return this}),qn}();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(pe._=dn,define((function(){return dn}))):de?((de.exports=dn)._=dn,he._=dn):pe._=dn}.call(this),e.exports}.call({});const Zt=f.DiagnosticCategory;function Jt(t){return{line:t.row+1,offset:t.column+1}}function Yt(t){return new h.Point(t.line-1,t.offset-1)}function Xt(t){return te(t.start,t.end)}function te(t,e){return new h.Range(Yt(t),Yt(e))}function ee(t){const e=ne(t),n=e.formatCodeOptions;return{formatCodeOptions:{indentSize:atom.config.get("editor.tabLength"),tabSize:atom.config.get("editor.tabLength"),...n},compileOnSave:!!e.compileOnSave,preferences:e.preferences?e.preferences:{}}}function ne(t){".json"!==w.extname(t)&&(t+=".json");let{config:e}=f.readConfigFile(t,(t=>f.sys.readFile(t)));if(void 0===e)return{};if("string"==typeof e.extends){const n=ne(w.join(w.dirname(t),e.extends));e=Object.assign({},n,e)}return e}function re(t){return{label:oe(t.prefixDisplayParts)+t.parameters.map((t=>oe(t.displayParts))).join(oe(t.separatorDisplayParts))+oe(t.suffixDisplayParts),documentation:oe(t.documentation),parameters:t.parameters.map(ie)}}function ie(t){return{label:oe(t.displayParts),documentation:oe(t.documentation)}}function oe(t){return t.map((t=>t.text)).join("")}const se=function(){let t;return function(e,n){if(void 0===e)return!0;void 0===t&&(t=new Map(Object.values(f.Diagnostics).map((t=>[t.code,t.category]))));const r=t.get(e);return void 0===r||r===n}}();function ae(t){return void 0!==t&&function(t){const e=atom.config.get("atom-typescript").tsFileExtensions;atom.config.get("atom-typescript").allowJS&&e.push(...atom.config.get("atom-typescript").jsFileExtensions);return e.includes(t)}(w.extname(t))}function ce(){const t=atom.config.get("atom-typescript").tsSyntaxScopes;return atom.config.get("atom-typescript").allowJS&&t.push(...atom.config.get("atom-typescript").jsSyntaxScopes),t}function ue(t){return ae(t.getPath())&&le(t)}function le(t){const[e]=t.getRootScopeDescriptor().getScopesArray();return ce().includes(e)}function fe(t,e){const n=t.getPath();if(void 0!==n){return{file:n,...e?Jt(e):function(t){const e=t.getCursorBufferPosition();return{line:e.row+1,offset:e.column+1}}(t)}}}async function pe(t,e){const n=new h.TextEditor({readonly:!0,keyboardInputEnabled:!1,showInvisibles:!1,tabLength:atom.config.get("editor.tabLength")}),r=atom.views.getView(n);try{return r.setUpdatedSynchronously(!0),r.style.pointerEvents="none",r.style.position="absolute",r.style.top="100vh",r.style.width="100vw",atom.grammars.assignLanguageMode(n.getBuffer(),e),n.setText(t),n.scrollToBufferPosition(n.getBuffer().getEndPosition()),atom.views.getView(atom.workspace).appendChild(r),await async function(t){return new Promise((e=>{const n=t.getBuffer().getLanguageMode(),r=t.component.getNextUpdatePromise();if(n.fullyTokenized||n.tree)e(r);else{const n=t.onDidTokenize((()=>{n.dispose(),e(r)}))}}))}(n),Array.from(r.querySelectorAll(".line:not(.dummy)")).map((t=>t.innerHTML))}finally{r.remove()}}function he(t,e,n){if(!n.childItems)return;for(const r of n.childItems){const n=de(r),i=me(r);if(isFinite(n)&&isFinite(i)){if(t>=n&&e<=i){const n=he(t,e,r);return n||r}if(isFinite(i)&&e=r&&e<=i?n:void 0}function de(t){return t.spans.length>0?t.spans[0].start.line-1:0}function me(t){const e=t.spans;return e.length>0?e[e.length-1].end.line-1:0}function ge(t,e){if(!t||!e)return t===e;if(t.text===e.text){if(e.collapsed&&(t.collapsed=!0),t.childItems&&e.childItems){let n,r;for(let i=0,o=t.childItems.length;ide(t)-de(e)));for(const e of t.childItems)ve(e)}}class ye{constructor(t){this.props=t,ft.initialize(this)}async update(t){this.props={...this.props,...t},await ft.update(this)}async destroy(){await ft.destroy(this)}render(){const t=this.props.navTree,{ctrl:e}=this.props,n=e.getSelectedNode(),r=n&&(o=n,(i=t).text===o.text&&Qt.isEqual(i.spans,o.spans));var i,o;const s=(t.childItems?"nested-":"")+"item"+(t.collapsed?" collapsed":" expanded")+(r?" selected":""),a=this.getStyles();return ft.dom("li",{className:"node entry exanded list-"+s},ft.dom("div",{className:"header list-item",on:{click:e=>this.entryClicked(e,t)}},ft.dom("span",{className:a},t.text)),ft.dom("ol",{className:"entries list-tree"},t.childItems?t.childItems.map((t=>ft.dom(ye,{navTree:t,ctrl:e}))):null))}getStyles(){const{kind:t}=this.props.navTree;let e="icon icon-"+t;const{kindModifiers:n}=this.props.navTree;return n&&(e+=" "+n.split(/[, ]/).map((t=>"modifier-"+t.trim())).join(" ")),e}entryClicked(t,e){t.stopPropagation();(function(t,e){return!!t.childItems&&e.target===e.currentTarget})(e,t)?(e.collapsed=!e.collapsed,Kt(ft.update(this))):this.props.ctrl.gotoNode(e)}}class we{constructor(t){this.props=t,this.subscriptions=new d,this.loadNavTree=async()=>{if(!this.editor)return;if(!this.getClient)return;const t=this.editor.getPath();if(void 0!==t)try{const e=await this.getClient(t),n=(await e.execute("navtree",{file:t})).body;n&&(this.setNavTree(n),await ft.update(this))}catch(e){console.error(e,t)}},this.selectAtCursorLine=({newBufferPosition:t})=>{if(!this.props.navTree)return;const e=t.row,n=he(e,e,this.props.navTree);n!==this.selectedNode&&(this.selectedNode=n,Kt(ft.update(this)))},this.subscribeToEditor=async t=>{if(this.editorScrolling&&this.editorScrolling.dispose(),this.editorChanging&&this.editorChanging.dispose(),!t||!ue(t))return this.update({navTree:null});this.editor=t,await this.loadNavTree(),this.editorScrolling=t.onDidChangeCursorPosition(this.selectAtCursorLine),this.editorChanging=t.onDidStopChanging(this.loadNavTree)},ve(t.navTree),ft.initialize(this),this.subscriptions.add(atom.workspace.observeActiveTextEditor(this.subscribeToEditor))}async update(t){void 0!==t.navTree&&this.setNavTree(t.navTree),this.props={...this.props,...t},await ft.update(this)}async destroy(){this.editorScrolling&&this.editorScrolling.dispose(),this.editorChanging&&this.editorChanging.dispose(),this.editorScrolling=void 0,this.editorChanging=void 0,this.selectedNode=void 0,this.subscriptions.dispose(),await ft.destroy(this)}async setGetClient(t){this.getClient=t,await this.loadNavTree()}getSelectedNode(){return this.selectedNode}render(){const t=this.props.navTree?ft.dom(ye,{navTree:this.props.navTree,ctrl:this}):null;return ft.dom("div",{className:"atomts atomts-semantic-view native-key-bindings"},ft.dom("ol",{className:"list-tree has-collapsable-children focusable-panel"},t))}readAfterUpdate(){const t=this.element.querySelector(".selected");t&&this.scrollTo(t)}gotoNode(t){if(!this.editor)return;const e=de(t),n=function(t){return t.spans.length>0?t.spans[0].start.offset-1:0}(t);this.editor.setCursorBufferPosition([e,n])}getCursorLine(){return this.editor?this.editor.getLastCursor().getBufferRow():void 0}setNavTree(t){if(ve(t),Qt.isEqual(t,this.props.navTree))return;let e;if(ge(t,this.props.navTree),this.props.navTree=t,t){const n=this.getCursorLine();void 0!==n&&(e=he(n,n,t))}this.selectedNode=e}scrollTo(t){const e=t;"function"==typeof e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded():e.scrollIntoView()}}class be{constructor(t){this.comp=new we({navTree:t.navTree})}static create(t){return be.instance||(be.instance=new be(t)),be.instance}get element(){return this.comp.element}async setGetClient(t){await this.comp.setGetClient(t),await this.comp.update({})}getTitle(){return"TypeScript"}getURI(){return"atom-typescript://semantic-view"}async destroy(){be.instance=null,await this.comp.destroy()}getDefaultLocation(){return"right"}getAllowedLocations(){return["left","right"]}serialize(){return{deserializer:"atomts-semantic-view/SemanticView",data:{navTree:this.comp.props.navTree}}}}be.instance=null;var _e,xe=u,Se=a,ke=s;_e=function(t,e){return Ee(t,e)};var Ee=function(t,e){return t?Ce(t,e):new Te(e)};_e.createStream=Ee;function Ce(t,e){if(!t)throw new Error("expected readStream");if(!t.readable)throw new Error("readStream must be readable");var n=new Te(e);return t.pipe(n),n}function Te(t){xe.Transform.call(this,t),t=t||{},this._readableState.objectMode=!0,this._lineBuffer=[],this._keepEmptyLines=t.keepEmptyLines||!1,this._lastChunkEndedWithCR=!1;var e=this;this.on("pipe",(function(t){e.encoding||t instanceof xe.Readable&&(e.encoding=t._readableState.encoding)}))}_e.createLineStream=function(t){return console.log("WARNING: byline#createLineStream is deprecated and will be removed soon"),Ce(t)},_e.LineStream=Te,Se.inherits(Te,xe.Transform),Te.prototype._transform=function(t,e,n){e=e||"utf8",Buffer.isBuffer(t)&&("buffer"==e?(t=t.toString(),e="utf8"):t=t.toString(e)),this._chunkEncoding=e;var r=t.split(/\r\n|[\n\v\f\r\x85\u2028\u2029]/g);this._lastChunkEndedWithCR&&"\n"==t[0]&&r.shift(),this._lineBuffer.length>0&&(this._lineBuffer[this._lineBuffer.length-1]+=r[0],r.shift()),this._lastChunkEndedWithCR="\r"==t[t.length-1],this._lineBuffer=this._lineBuffer.concat(r),this._pushBuffer(e,1,n)},Te.prototype._pushBuffer=function(t,e,n){for(;this._lineBuffer.length>e;){var r=this._lineBuffer.shift();if((this._keepEmptyLines||r.length>0)&&!this.push(this._reencode(r,t))){var i=this;return void ke.setImmediate((function(){i._pushBuffer(t,e,n)}))}}n()},Te.prototype._flush=function(t){this._pushBuffer(this._chunkEncoding,0,t)},Te.prototype._reencode=function(t,e){return this.encoding&&this.encoding!=e?new Buffer(t,e).toString(this.encoding):this.encoding?t:new Buffer(t,e)};class Pe{constructor(t){this.reportBusyWhile=t,this.callbacks=new Map,this.interval=0}async add(t,e){try{const n=new Promise(((n,r)=>{this.callbacks.set(t,{command:e,resolve:n,reject:r,started:Date.now()})}));return 0===this.interval&&(this.interval=window.setInterval((()=>{process.activateUvLoop()}),100)),await this.reportBusyWhile(e,(()=>n))}finally{this.callbacks.delete(t),0!==this.interval&&0===this.callbacks.size&&(clearInterval(this.interval),this.interval=0)}}rejectAll(t){for(const{reject:e}of this.callbacks.values())e(t);this.callbacks.clear()}resolve(t){const e=this.callbacks.get(t.request_seq);e?(window.atom_typescript_debug&&console.log("received response for",t.command,"in",Date.now()-e.started,"ms","with data",t.body),t.success?e.resolve(t):e.reject(new Error(t.message))):console.warn("unexpected response:",t)}resolveMS(t){const e=this.callbacks.get(t.request_seq);e?(window.atom_typescript_debug&&console.log(`received requestCompleted event for multistep command ${e.command} in ${Date.now()-e.started} ms`),e.resolve(void 0)):console.warn("unexpected requestCompleted event:",t)}error(t,e){const n=this.callbacks.get(t);n?n.reject(e):console.error(e)}}const Ae=new Set(Object.keys({compileOnSaveAffectedFileList:!0,compileOnSaveEmitFile:!0,completionEntryDetails:!0,completions:!0,completionInfo:!0,configure:!0,definition:!0,format:!0,getCodeFixes:!0,getSupportedCodeFixes:!0,documentHighlights:!0,projectInfo:!0,quickinfo:!0,references:!0,reload:!0,rename:!0,navtree:!0,navto:!0,getApplicableRefactors:!0,getEditsForRefactor:!0,organizeImports:!0,signatureHelp:!0,getEditsForFileRename:!0,applyCodeActionCommand:!0})),Oe=new Set(Object.keys({geterr:!0,geterrForProject:!0})),Ie=new Set(Object.keys({configFileDiag:!0,semanticDiag:!0,suggestionDiag:!0,syntaxDiag:!0}));class je{constructor(t,e,n){this.tsServerPath=t,this.version=e,this.reportBusyWhile=n,this.emitter=new m,this.seq=0,this.lastStderrOutput="",this.on=this.emitter.on.bind(this.emitter),this.exitHandler=(t,e=!0)=>{if(this.callbacks.rejectAll(t),e&&console.error("tsserver: ",t),this.server=void 0,this.emitter.emit("terminated"),e){let e=t.message;this.lastStderrOutput&&(e=`Last output from tsserver:\n${this.lastStderrOutput}\n\n${e}`),atom.notifications.addError("TypeScript server quit unexpectedly",{detail:e,stack:t.stack,dismissable:!0})}},this.onMessage=t=>{"response"===t.type?this.callbacks.resolve(t):this.onEvent(t)};const[r,i]=e.split(".").slice(0,2).map((t=>parseInt(t,10)));this.multistepSupported=r>2||2===r&&i>=2,this.callbacks=new Pe(this.reportBusyWhile),this.server=this.startServer()}async execute(t,...e){this.server||(this.server=this.startServer(),this.emitter.emit("restarted"));const n={seq:this.seq++,command:t,arguments:e[0]};window.atom_typescript_debug&&console.log("sending request",n);let r=void 0;(function(t){return Ae.has(t)}(t)||this.multistepSupported&&function(t){return Oe.has(t)}(t))&&(r=this.callbacks.add(n.seq,t));try{if(!this.server.stdin)throw new Error("Server stdin is missing");this.server.stdin.write(JSON.stringify(n)+"\n")}catch(t){this.callbacks.error(n.seq,t)}return r}async restartServer(){if(this.server){const t=this.server,e=setTimeout((()=>t.kill()),1e4);await Promise.all([this.execute("exit"),new Promise((t=>{const e=this.emitter.once("terminated",(()=>{e.dispose(),t()}))}))]),clearTimeout(e)}this.server||(this.server=this.startServer(),this.emitter.emit("restarted"))}startServer(){window.atom_typescript_debug&&console.log("starting",this.tsServerPath);const t=function(t){const e=atom.config.get("atom-typescript").locale,n=e?["--locale",e]:[];return new g({command:t,args:n}).process}(this.tsServerPath);if(!t)throw new Error("ChildProcess failed to start");const e=this.exitHandler;if(t.once("error",e),t.once("exit",((t,n)=>{0===t?e(new Error("Server stopped normally"),!1):null!==t?e(new Error("exited with code: "+t)):null!==n&&e(new Error("terminated on signal: "+n))})),!t.stdout)throw new Error("ChildProcess stdout missing");if(!t.stderr)throw new Error("ChildProcess stderr missing");var n;return(n=t.stdout,n.pipe(De()).pipe(new Le)).on("data",this.onMessage),t.stderr.on("data",(t=>{console.warn("tsserver stderr:",this.lastStderrOutput=t.toString())})),t}onEvent(t){var e;window.atom_typescript_debug&&console.log("received event",t),t.body&&(e=t.event,Ie.has(e)?this.emitter.emit(t.event,t.body):"requestCompleted"===t.event&&this.callbacks.resolveMS(t.body))}}var Ne,De=C(_e);class Le extends l{constructor(){super({objectMode:!0})}_transform(t,e,n){const r=t.toString();try{r.startsWith("{")?this.push(JSON.parse(r)):r.startsWith("Content-Length:")||console.warn(r)}catch(t){console.error("client: failed to parse: ",r)}finally{n(void 0)}}}function Fe(t,e){void 0===e&&(e=!1);var n=t.length,r=0,i="",o=0,s=16,a=0,c=0,u=0,l=0,f=0;function p(e,n){for(var i=0,o=0;i=48&&s<=57)o=16*o+s-48;else if(s>=65&&s<=70)o=16*o+s-65+10;else{if(!(s>=97&&s<=102))break;o=16*o+s-97+10}r++,i++}return i=n)return o=n,s=17;var e=t.charCodeAt(r);if(Me(e)){do{r++,i+=String.fromCharCode(e),e=t.charCodeAt(r)}while(Me(e));return s=15}if(Re(e))return r++,i+=String.fromCharCode(e),13===e&&10===t.charCodeAt(r)&&(r++,i+="\n"),a++,u=r,s=14;switch(e){case 123:return r++,s=1;case 125:return r++,s=2;case 91:return r++,s=3;case 93:return r++,s=4;case 58:return r++,s=6;case 44:return r++,s=5;case 34:return r++,i=function(){for(var e="",i=r;;){if(r>=n){e+=t.substring(i,r),f=2;break}var o=t.charCodeAt(r);if(34===o){e+=t.substring(i,r),r++;break}if(92!==o){if(o>=0&&o<=31){if(Re(o)){e+=t.substring(i,r),f=2;break}f=6}r++}else{if(e+=t.substring(i,r),++r>=n){f=2;break}switch(t.charCodeAt(r++)){case 34:e+='"';break;case 92:e+="\\";break;case 47:e+="/";break;case 98:e+="\b";break;case 102:e+="\f";break;case 110:e+="\n";break;case 114:e+="\r";break;case 116:e+="\t";break;case 117:var s=p(4,!0);s>=0?e+=String.fromCharCode(s):f=4;break;default:f=5}i=r}}return e}(),s=10;case 47:var h=r-1;if(47===t.charCodeAt(r+1)){for(r+=2;r=12&&t<=15);return t}:h,getToken:function(){return s},getTokenValue:function(){return i},getTokenOffset:function(){return o},getTokenLength:function(){return r-o},getTokenStartLine:function(){return c},getTokenStartCharacter:function(){return o-l},getTokenError:function(){return f}}}function Me(t){return 32===t||9===t||11===t||12===t||160===t||5760===t||t>=8192&&t<=8203||8239===t||8287===t||12288===t||65279===t}function Re(t){return 10===t||13===t||8232===t||8233===t}function Be(t){return t>=48&&t<=57}(Ne||(Ne={})).DEFAULT={allowTrailingComma:!1};var ze,qe,He=function(t,e,n){void 0===e&&(e=[]),void 0===n&&(n=Ne.DEFAULT);var r=null,i=[],o=[];function s(t){Array.isArray(i)?i.push(t):null!==r&&(i[r]=t)}return function(t,e,n){void 0===n&&(n=Ne.DEFAULT);var r=Fe(t,!1);function i(t){return t?function(){return t(r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}function o(t){return t?function(e){return t(e,r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}var s=i(e.onObjectBegin),a=o(e.onObjectProperty),c=i(e.onObjectEnd),u=i(e.onArrayBegin),l=i(e.onArrayEnd),f=o(e.onLiteralValue),p=o(e.onSeparator),h=i(e.onComment),d=o(e.onError),m=n&&n.disallowComments,g=n&&n.allowTrailingComma;function v(){for(;;){var t=r.scan();switch(r.getTokenError()){case 4:y(14);break;case 5:y(15);break;case 3:y(13);break;case 1:m||y(11);break;case 2:y(12);break;case 6:y(16)}switch(t){case 12:case 13:m?y(10):h();break;case 16:y(1);break;case 15:case 14:break;default:return t}}}function y(t,e,n){if(void 0===e&&(e=[]),void 0===n&&(n=[]),d(t),e.length+n.length>0)for(var i=r.getToken();17!==i;){if(-1!==e.indexOf(i)){v();break}if(-1!==n.indexOf(i))break;i=v()}}function w(t){var e=r.getTokenValue();return t?f(e):a(e),v(),!0}function b(){switch(r.getToken()){case 11:var t=r.getTokenValue(),e=Number(t);isNaN(e)&&(y(2),e=0),f(e);break;case 7:f(null);break;case 8:f(!0);break;case 9:f(!1);break;default:return!1}return v(),!0}function _(){return 10!==r.getToken()?(y(3,[],[2,5]),!1):(w(!1),6===r.getToken()?(p(":"),v(),k()||y(4,[],[2,5])):y(5,[],[2,5]),!0)}function x(){s(),v();for(var t=!1;2!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),p(","),v(),2===r.getToken()&&g)break}else t&&y(6,[],[]);_()||y(4,[],[2,5]),t=!0}return c(),2!==r.getToken()?y(7,[2],[]):v(),!0}function S(){u(),v();for(var t=!1;4!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),p(","),v(),4===r.getToken()&&g)break}else t&&y(6,[],[]);k()||y(4,[],[4,5]),t=!0}return l(),4!==r.getToken()?y(8,[4],[]):v(),!0}function k(){switch(r.getToken()){case 3:return S();case 1:return x();case 10:return w(!0);default:return b()}}if(v(),17===r.getToken())return!!n.allowEmptyContent||(y(4,[],[]),!1);if(!k())return y(4,[],[]),!1;17!==r.getToken()&&y(9,[],[])}(t,{onObjectBegin:function(){var t={};s(t),o.push(i),i=t,r=null},onObjectProperty:function(t){r=t},onObjectEnd:function(){i=o.pop()},onArrayBegin:function(){var t=[];s(t),o.push(i),i=t,r=null},onArrayEnd:function(){i=o.pop()},onLiteralValue:s,onError:function(t,n,r){e.push({error:t,offset:n,length:r})}},n),i[0]},Ue=x,$e=w;qe=function(){var t=Error.prepareStackTrace;Error.prepareStackTrace=function(t,e){return e};var e=(new Error).stack;return Error.prepareStackTrace=t,e[2].getFileName()};var Ve,We,Ge,Ke,Qe,Ze,Je,Ye,Xe,tn,en=w,nn=!1;function rn(){We={},Ge="win32"===process.platform,Ke=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,Qe=/^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/,(Ze={}).parse=function(t){if("string"!=typeof t)throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e,n,r,i,o,s=(e=t,n=Ke.exec(e),r=(n[1]||"")+(n[2]||""),i=n[3]||"",o=Qe.exec(i),[r,o[1],o[2],o[3]]);if(!s||4!==s.length)throw new TypeError("Invalid path '"+t+"'");return{root:s[0],dir:s[0]+s[1].slice(0,-1),base:s[2],ext:s[3],name:s[2].slice(0,s[2].length-s[3].length)}},Je=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,(Ye={}).parse=function(t){if("string"!=typeof t)throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e,n=(e=t,Je.exec(e).slice(1));if(!n||4!==n.length)throw new TypeError("Invalid path '"+t+"'");return n[1]=n[1]||"",n[2]=n[2]||"",n[3]=n[3]||"",{root:n[0],dir:n[0]+n[1].slice(0,-1),base:n[2],ext:n[3],name:n[2].slice(0,n[2].length-n[3].length)}},We=Ge?Ze.parse:Ye.parse,Xe=Ye.parse,We.posix=Xe,tn=Ze.parse,We.win32=tn}var on=en.parse||(nn||(nn=!0,rn()),We),sn=function(t,e){var n="/";/^([A-Za-z]:)/.test(t)?n="":/^\\\\/.test(t)&&(n="\\\\");for(var r=[t],i=on(t);i.dir!==r[r.length-1];)r.push(i.dir),i=on(i.dir);return r.reduce((function(t,r){return t.concat(e.map((function(t){return en.resolve(n,r,t)})))}),[])};Ve=function(t,e,n){var r=e&&e.moduleDirectory?[].concat(e.moduleDirectory):["node_modules"];if(e&&"function"==typeof e.paths)return e.paths(n,t,(function(){return sn(t,r)}),e);var i=sn(t,r);return e&&e.paths?i.concat(e.paths):i};var an;an=function(t,e){return e||{}};var cn,un,ln={},fn={},pn=Array.prototype.slice,hn=Object.prototype.toString;function dn(t,e){for(var n=t.split("."),r=e.split(" "),i=r.length>1?r[0]:"=",o=(r.length>1?r[1]:r[0]).split("."),s=0;s<3;++s){var a=parseInt(n[s]||0,10),c=parseInt(o[s]||0,10);if(a!==c)return"<"===i?a="===i&&a>=c}return">="===i}function mn(t,e){var n=e.split(/ ?&& ?/);if(0===n.length)return!1;for(var r=0;r= 15","async_hooks":">= 8","buffer_ieee754":"< 0.9.7","buffer":true,"child_process":true,"cluster":true,"console":true,"constants":true,"crypto":true,"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"diagnostics_channel":">= 15.1","dns":true,"dns/promises":">= 15","domain":">= 0.7.12","events":true,"freelist":"< 6","fs":true,"fs/promises":[">= 10 && < 10.1",">= 14"],"_http_agent":">= 0.11.1","_http_client":">= 0.11.1","_http_common":">= 0.11.1","_http_incoming":">= 0.11.1","_http_outgoing":">= 0.11.1","_http_server":">= 0.11.1","http":true,"http2":">= 8.8","https":true,"inspector":">= 8.0.0","_linklist":"< 8","module":true,"net":true,"node-inspect/lib/_inspect":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6.0 && < 12","os":true,"path":true,"path/posix":">= 15.3","path/win32":">= 15.3","perf_hooks":">= 8.5","process":">= 1","punycode":true,"querystring":true,"readline":true,"repl":true,"smalloc":">= 0.11.5 && < 3","_stream_duplex":">= 0.9.4","_stream_transform":">= 0.9.4","_stream_wrap":">= 1.4.1","_stream_passthrough":">= 0.9.4","_stream_readable":">= 0.9.4","_stream_writable":">= 0.9.4","stream":true,"stream/promises":">= 15","string_decoder":true,"sys":[">= 0.6 && < 0.7",">= 0.8"],"timers":true,"timers/promises":">= 15","_tls_common":">= 0.11.13","_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","tls":true,"trace_events":">= 10","tty":true,"url":true,"util":true,"util/types":">= 15.3","v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8":">= 1","vm":true,"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","zlib":true}'),cn=function(t,e){return ln(gn,t)&&function(t,e){if("boolean"==typeof e)return e;var n=void 0===t?process.versions&&process.versions.node&&process.versions.node:t;if("string"!=typeof n)throw new TypeError(void 0===t?"Unable to determine current node version":"If provided, a valid node version is required");if(e&&"object"==typeof e){for(var r=0;r1?e[0]:"=",r=(e.length>1?e[1]:e[0]).split("."),i=0;i<3;++i){var o=parseInt(xn[i]||0,10),s=parseInt(r[i]||0,10);if(o!==s)return"<"===n?o="===n&&o>=s}return">="===n}function kn(t){var e=t.split(/ ?&& ?/);if(0===e.length)return!1;for(var n=0;n= 15","async_hooks":">= 8","buffer_ieee754":"< 0.9.7","buffer":true,"child_process":true,"cluster":true,"console":true,"constants":true,"crypto":true,"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"diagnostics_channel":">= 15.1","dns":true,"dns/promises":">= 15","domain":">= 0.7.12","events":true,"freelist":"< 6","fs":true,"fs/promises":[">= 10 && < 10.1",">= 14"],"_http_agent":">= 0.11.1","_http_client":">= 0.11.1","_http_common":">= 0.11.1","_http_incoming":">= 0.11.1","_http_outgoing":">= 0.11.1","_http_server":">= 0.11.1","http":true,"http2":">= 8.8","https":true,"inspector":">= 8.0.0","_linklist":"< 8","module":true,"net":true,"node-inspect/lib/_inspect":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6.0 && < 12","os":true,"path":true,"perf_hooks":">= 8.5","process":">= 1","punycode":true,"querystring":true,"readline":true,"repl":true,"smalloc":">= 0.11.5 && < 3","_stream_duplex":">= 0.9.4","_stream_transform":">= 0.9.4","_stream_wrap":">= 1.4.1","_stream_passthrough":">= 0.9.4","_stream_readable":">= 0.9.4","_stream_writable":">= 0.9.4","stream":true,"stream/promises":">= 15","string_decoder":true,"sys":[">= 0.6 && < 0.7",">= 0.8"],"timers":true,"timers/promises":">= 15","_tls_common":">= 0.11.13","_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","tls":true,"trace_events":">= 10","tty":true,"url":true,"util":true,"v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8":">= 1","vm":true,"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","zlib":true}');var Tn={};for(var Pn in Cn)Object.prototype.hasOwnProperty.call(Cn,Pn)&&(Tn[Pn]=En(Cn[Pn]));ze.core=Tn;ze.isCore=function(t){return cn(t)};var An=x,On=w,In=An.realpathSync&&"function"==typeof An.realpathSync.native?An.realpathSync.native:An.realpathSync,jn=function(t){try{var e=An.statSync(t)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return!1;throw t}return e.isFile()||e.isFIFO()},Nn=function(t){try{var e=An.statSync(t)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return!1;throw t}return e.isDirectory()},Dn=function(t){try{return In(t)}catch(t){if("ENOENT"!==t.code)throw t}return t},Ln=function(t,e,n){return n&&!1===n.preserveSymlinks?t(e):e};async function Fn(t,e){const{NODE_PATH:n}=process.env,r=e+".js",i=await async function(t,e){return new Promise(((n,r)=>Mn(t,e,((t,e)=>{t?r(t):void 0===e?r(new Error("Module path is undefined")):n(e)}))))}("typescript/lib/"+r,{basedir:w.dirname(t),paths:void 0!==n?n.split(w.delimiter):void 0}).catch((async()=>{const e=await async function(t){const e=await async function(t){let e=t,n=w.dirname(e);for(;e!==n;){const t=await Bn(e,[[".atom-typescript.json"],[".atom","atom-typescript.json"],[".vscode","settings.json"]]);if(void 0!==t)return{basedir:e,configFile:t};e=n,n=w.dirname(e)}}(t);if(e)try{const t=He(await async function(t){return new Promise(((e,n)=>x.readFile(t,((t,r)=>{t?n(t):e(r.toString("utf-8"))}))))}(e.configFile));let r;if("object"==typeof(n=t)&&null!==n&&"string"==typeof n.tsdkPath)r=t.tsdkPath;else{if(!function(t){return"object"==typeof t&&null!==t&&"string"==typeof t["typescript.tsdk"]}(t))return;r=w.dirname(t["typescript.tsdk"])}return w.isAbsolute(r)?r:w.join(e.basedir,r)}catch(t){console.warn(t)}var n}(w.dirname(t));if(void 0!==e){const t=w.join(e,"lib",r);if(await Rn(t))return t}const n=atom.config.get("atom-typescript.tsdkPath");if(n){const t=w.join(n,"lib",r);if(await Rn(t))return t}return require.resolve("typescript/lib/"+r)})),o=w.resolve(i,"../../package.json");return{version:require(o).version,pathToBin:i}}ze.sync=function(t,e){if("string"!=typeof t)throw new TypeError("Path must be a string.");var n=an(0,e),r=n.isFile||jn,i=n.readFileSync||An.readFileSync,o=n.isDirectory||Nn,s=n.realpathSync||Dn,a=n.packageIterator,c=n.extensions||[".js"],u=!1!==n.includeCoreModules,l=n.basedir||On.dirname(qe()),f=n.filename||l;n.paths=n.paths||[];var p=Ln(s,On.resolve(l),n);if(/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(t)){var h=On.resolve(p,t);"."!==t&&".."!==t&&"/"!==t.slice(-1)||(h+="/");var d=v(h)||w(h);if(d)return Ln(s,d,n)}else{if(u&&cn(t))return t;var m=function(t,e){for(var r=function(){return function(t,e,n){for(var r=Ve(e,n,t),i=0;ix.access(t,x.constants.F_OK,(t=>{e(!t)}))))}async function Bn(t,e){for(const n of e){const e=w.join(t,...n);if(await Rn(e))return e}}class zn{constructor(t){this.reportBusyWhile=t,this.clients=new Map,this.memoizedClients=new Map,this.emitter=new m,this.subscriptions=new d,this.tsserverInstancePerTsconfig=atom.config.get("atom-typescript").tsserverInstancePerTsconfig,this.on=this.emitter.on.bind(this.emitter),this.diagnosticHandler=(t,e)=>n=>{const r=(i=n)&&i.triggerFile&&i.configFile?n.configFile:n.file;var i;r&&this.emitter.emit("diagnostics",{type:e,serverPath:t,filePath:r,diagnostics:n.diagnostics})}}async restartAllServers(){await this.reportBusyWhile("Restarting servers",(()=>Promise.all(Array.from(this.getAllClients()).map((t=>t.restartServer())))))}async get(t){const e=this.memoizedClients.get(t);if(e)return e;const n=this._get(t);this.memoizedClients.set(t,n);try{return await n}catch(e){throw this.memoizedClients.delete(t),e}}dispose(){this.emitter.dispose(),this.subscriptions.dispose(),this.memoizedClients.clear(),this.clients.clear()}async _get(t){const{pathToBin:e,version:n}=await Fn(t,"tsserver"),r=this.tsserverInstancePerTsconfig?f.findConfigFile(t,(t=>f.sys.fileExists(t))):void 0;let i=this.clients.get(e);i||(i=new Map,this.clients.set(e,i));const o=i.get(r);if(o)return o;const s=new je(e,n,this.reportBusyWhile);return i.set(r,s),this.subscriptions.add(s.on("configFileDiag",this.diagnosticHandler(e,"configFileDiag")),s.on("semanticDiag",this.diagnosticHandler(e,"semanticDiag")),s.on("syntaxDiag",this.diagnosticHandler(e,"syntaxDiag")),s.on("suggestionDiag",this.diagnosticHandler(e,"suggestionDiag"))),s}*getAllClients(){for(const t of this.clients.values())yield*t.values()}}function qn(t){return{grammarScopes:ce(),priority:100,async highlight(e,n){if(!ue(e))return;const r=fe(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("documentHighlights",{...r,filesToSearch:[r.file]});return o.body?Array.from(function*(t,e){for(const n of e)n.file===t&&(yield*n.highlightSpans.map(Xt))}(r.file,o.body)):void 0}}}var Hn,Un=!1;function $n(){return Un||(Un=!0,Hn={},Hn=Promise.resolve(require("./commonmark.49fe3127.js"))),Hn}let Vn;async function Wn(t,e,n,r,i){if(void 0===t)return null;const o=e.dom("div",{className:"atom-typescript-datatip-tooltip-kind"},t.kind,function(t,e){return void 0===e?null:t.dom("span",{className:"atom-typescript-datatip-tooltip-kind-modifiers"},e)}(t.kindModifiers)),s=t.tags?t.tags.map((t=>{const n="atom-typescript-datatip-tooltip-doc-tag atom-typescript-datatip-tooltip-doc-tag-name-"+t.name;return e.dom("div",{className:n},e.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-name"},t.name),function(t,e){if(void 0===e)return null;const[,n,r]=/^\s*(\S*)([^]*)$/.exec(e);return t.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-text"},t.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-text-first-word"},n),r)}(e,t.text))})):null;let a;if(atom.config.get("atom-typescript.markdownDatatips")){if(!Vn){const t=await $n(),e=new t.Parser({smart:!0}),n=new t.HtmlRenderer({safe:!0,smart:!0,softbreak:"
"}),r=new DOMParser;Vn=async t=>{const o=e.parse(t),s=n.render(o);if(i){const t=r.parseFromString(s,"text/html");console.log(t);for(const e of Array.from(t.querySelectorAll('code[class^="language-"]')))e.innerHTML=await i(e.innerText,e.classList[0].slice(9));return t.documentElement.innerHTML}return s}}const r=await Vn(t.documentation);a="react"===n?e.dom("div",{className:"atom-typescript-datatip-tooltip-doc-markdown",dangerouslySetInnerHTML:{__html:r}}):e.dom("div",{className:"atom-typescript-datatip-tooltip-doc-markdown",innerHTML:r})}else a=e.dom("div",{className:"atom-typescript-datatip-tooltip-doc-text"},t.documentation);const c=e.dom("div",{className:"atom-typescript-datatip-tooltip-doc"},a,s),u=t.displayString.replace(/^\(.+?\)\s+/,"");return[await r(u),o,c]}const Gn={sh:"source.shell",bash:"source.shell",c:"source.c","c++":"source.cpp",cpp:"source.cpp",coffee:"source.coffee",coffeescript:"source.coffee","coffee-script":"source.coffee",cs:"source.cs",csharp:"source.cs",css:"source.css",scss:"source.css.scss",sass:"source.sass",erlang:"source.erl",go:"source.go",html:"text.html.basic",java:"source.java",js:"source.js",javascript:"source.js",ts:"source.ts",typescript:"source.ts",json:"source.json",less:"source.less",mustache:"text.html.mustache",objc:"source.objc","objective-c":"source.objc",php:"text.html.php",py:"source.python",python:"source.python",rb:"source.ruby",ruby:"source.ruby",text:"text.plain",toml:"source.toml",xml:"text.xml",yaml:"source.yaml",yml:"source.yaml"};const Kn=Symbol.for("react.element"),Qn={dom:(t,e,...n)=>n.length>0?{$$typeof:Kn,type:t,ref:null,props:{...e,children:n}}:{$$typeof:Kn,type:t,ref:null,props:{...e}}};class Zn{constructor(t){this.getClient=t,this.providerName="TypeScript type tooltips",this.priority=100,this.grammarScopes=ce()}async datatip(t,e){try{const n=t.getPath();if(void 0===n)return;const r=await this.getClient(n),i=(await r.execute("quickinfo",{file:n,line:e.row+1,offset:e.column+1})).body,o=await Wn(i,Qn,"react",Jn,Yn);return{component:()=>Qn.dom("div",{className:"atom-typescript-datatip-tooltip"},o),range:h.Range.fromObject([Yt(i.start),Yt(i.end)])}}catch(t){return}}}async function Jn(t){const e=atom.config.get("editor.fontFamily"),n=await Yn(t.replace(/\r?\n$/,""),"ts");return Qn.dom("div",{style:{fontFamily:e},className:"atom-typescript-datatip-tooltip-code",dangerouslySetInnerHTML:{__html:n}})}async function Yn(t,e){console.log(t,e);return(await pe(t.replace(/\r?\n$/,""),function(t){const e=t.toLowerCase(),n=Gn[e];return void 0===n?"source."+e:n}(e))).join("\n")}function Xn(t){const e=Xt(t);return{path:t.file,position:e.start,range:e,language:"TypeScript"}}function tr(t){return{uri:t.file,range:te(t.start,t.end),name:void 0}}class er{constructor(t){this.props=t,ft.initialize(this)}async update(t){return this.props={...this.props,...t},ft.update(this)}render(){const t={fontFamily:atom.config.get("editor.fontFamily")};return ft.dom("div",{className:"editor editor-colors",style:t,innerHTML:this.props.highlightedText})}}var nr,rr,ir,or={},sr=!1;function ar(){return sr||(sr=!0,function(){var t,e;t=w.sep,nr=function(e,n,r){var i,o,s,a,c;for(o=e.length-1;e[o]===t;)o--;for(c=0,s=o,i=null;o>=0;)e[o]===t?(c++,null==i&&(i=e.substring(o+1,s+1))):0===o&&(s0&&f.push({candidate:a,score:l}));f.sort(n),r=f.map(t)}return null!=u&&(r=r.slice(0,u)),r}}.call(cr={})),cr}var fr,pr,hr,dr=!1;function mr(){return dr||(dr=!0,function(){var t;t=w.sep,fr=function(e,n){var r,i,o;for(i=e.length-1;e[i]===t;)i--;for(o=i,r=null;i>=0;)e[i]===t?null==r&&(r=e.substring(i+1,o+1)):0===i&&(or;n<=r?e++:e--)p.push(e);return p}.apply(this);for(u=e.length,l=t.length,i=0,o=0,a=[];ie;0<=e?t++:t--)l.push(t);return l}.apply(this);if(c=-1!==i.indexOf(t),i=i.replace(e,""),a=r.match(n,i),!c)for(o=r.basenameMatch(n,i),a=a.concat(o).sort((function(t,e){return t-e})),u=null,s=0;sft.dom("span",{className:t.type},t.text))))}match(t){return t.query?function(t,e){let n=0,r=[];const i=[],o=or.match(t,e);let s;for(s of o){if(s<0)continue;const e=t.substring(n,s);e&&(r.length>0&&i.push({text:r.join(""),type:"character-match"}),r=[],i.push({text:e})),r.push(t[s]),n=s+1}r.length>0&&i.push({text:r.join(""),type:"character-match"});return i.push({text:t.substring(n)}),i}(t.label,t.query):[{text:t.label}]}}var vr;const{Disposable:yr,CompositeDisposable:wr,TextEditor:br}=h;var _r,xr,Sr={};xr={onCopy:"copy",onCut:"cut",onPaste:"paste",onCompositionEnd:"compositionend",onCompositionStart:"compositionstart",onCompositionUpdate:"compositionupdate",onKeyDown:"keydown",onKeyPress:"keypress",onKeyUp:"keyup",onFocus:"focus",onBlur:"blur",onChange:"change",onInput:"input",onSubmit:"submit",onClick:"click",onContextMenu:"contextmenu",onDoubleClick:"dblclick",onDrag:"drag",onDragEnd:"dragend",onDragEnter:"dragenter",onDragExit:"dragexit",onDragLeave:"dragleave",onDragOver:"dragover",onDragStart:"dragstart",onDrop:"drop",onMouseDown:"mousedown",onMouseEnter:"mouseenter",onMouseLeave:"mouseleave",onMouseMove:"mousemove",onMouseOut:"mouseout",onMouseOver:"mouseover",onMouseUp:"mouseup",onSelect:"select",onTouchCancel:"touchcancel",onTouchEnd:"touchend",onTouchMove:"touchmove",onTouchStart:"touchstart",onScroll:"scroll",onWheel:"wheel",onAbort:"abort",onCanPlay:"canplay",onCanPlayThrough:"canplaythrough",onDurationChange:"durationchange",onEmptied:"emptied",onEncrypted:"encrypted",onEnded:"ended",onError:"error",onLoadedData:"loadeddata",onLoadedMetadata:"loadedmetadata",onLoadStart:"loadstart",onPause:"pause",onPlay:"play",onPlaying:"playing",onProgress:"progress",onRateChange:"ratechange",onSeeked:"seeked",onSeeking:"seeking",onStalled:"stalled",onSuspend:"suspend",onTimeUpdate:"timeupdate",onVolumeChange:"volumechange",onWaiting:"waiting",onLoad:"load",onAnimationStart:"animationstart",onAnimationEnd:"animationend",onAnimationIteration:"animationiteration",onTransitionEnd:"transitionend"};var kr={};function Er(t,e,...n){for(let t=0;tEr(t,e,...n);for(const t of kr)Er[t]=(e,...n)=>Er(t,e,...n);_r=Er;var Tr,Pr={},Ar={};Ar=new Map([["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["className","class"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["panose1","panose-1"],["paintOrder","paint-order"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xHeight","x-height"]]);function Or(t,e,n,r,i){if(n)for(var o in n)"ref"!==o&&"on"!==o&&(o in xr||i&&o in i||("dataset"===o?Or(t.dataset,null,n&&n.dataset,null,null):"innerHTML"!==o&&e&&kr.has(e.tag)?t.removeAttribute(Ar.get(o)||o):(t[o]="",delete t[o])));if(i)for(var o in i)if("ref"!==o&&"on"!==o&&!(o in xr)){var s=n&&n[o],a=i[o];"dataset"===o?Ir(t.dataset,s,a,!1):"style"===o&&"string"!=typeof a?("string"==typeof s&&(t.style="",s=null),Ir(t.style,s,a,!0)):"attributes"===o?jr(t,s,a):a!==s&&("innerHTML"!==o&&r&&kr.has(r.tag)?t.setAttribute(Ar.get(o)||o,a):r&&"input"===r.tag&&"value"===o&&t[o]===a||(t[o]=a))}}function Ir(t,e,n,r){if(e)for(var i in e)n&&i in n||(r?t[i]="":delete t[i]);if(n)for(var i in n){const r=e&&e[i],o=n[i];o!==r&&(t[i]=o)}}function jr(t,e,n){if(e)for(var r in e)n&&r in n||t.removeAttribute(r);if(n)for(var r in n){const i=e&&e[r],o=n[r];o!==i&&t.setAttribute(r,o)}}function Nr(t,e){let n;if(null!=t.text)n=document.createTextNode(t.text);else{const{tag:r,children:i}=t;let{props:o}=t;if("function"==typeof r){let s;o&&o.ref&&(s=o.ref);const a=new r(o||{},i);t.component=a,n=a.element,e&&e.refs&&s&&(e.refs[s]=a)}else kr.has(r)?(n=document.createElementNS("http://www.w3.org/2000/svg",r),i&&Dr(n,i,e),o&&Tr(n,null,t,e)):(n=document.createElement(r),i&&Dr(n,i,e),o&&Tr(n,null,t,e))}return t.domNode=n,n}function Dr(t,e,n){for(let r=0;r0?(i=Rr.pop()).clear():i=new Map,Hr(i,e,o,s));var h=qr(f),d=h?i.get(h):null;if(null==d)t.insertBefore(Pr(f,r),a.domNode),f=n[++u];else{var m=e[d];Mr(m,f,r),e[d]=void 0,t.insertBefore(m.domNode,a.domNode),f=n[++u]}}else c=e[--s];else a=e[++o];if(o>s){var g=n[l+1]?n[l+1].domNode:null;for(let e=u;e<=l;e++)t.insertBefore(Pr(n[e],r),g)}else if(u>l)for(let t=o;t<=s;t++){var v=e[t];v&&Br(v,r&&r.refs)}i&&Rr.push(i)}(r,t.children,e.children,n),Tr(r,t,e,n),i=r),e.domNode=i,i!==r&&r.parentNode&&r.parentNode.replaceChild(i,r),i}{const i=r.parentNode,o=r.nextSibling;Br(t,n&&n.refs);const s=Pr(e,n);return i&&i.insertBefore(s,o),e.domNode=s,s}}let Rr=[new Map,new Map,new Map,new Map];function Br(t,e,n=!0){const{domNode:r,props:i,children:o,component:s}=t,a=i&&i.ref;if(s)e&&a&&e[a]===s&&delete e[a],s.destroy&&s.destroy();else if(e&&a&&e[a]===r&&delete e[a],o)for(let t=0;t{this.resolveNextUpdatePromise=t}))),this.nextUpdatePromise}performUpdates(){for(;this.updateRequests.length>0;)this.updateRequests.shift()();for(this.pendingAnimationFrame=null;this.readRequests.length>0;)this.readRequests.shift()();if(this.nextUpdatePromise){let t=this.resolveNextUpdatePromise;this.nextUpdatePromise=null,this.resolveNextUpdatePromise=null,t()}}};let $r=null;var Vr=function(){return $r||($r=new Ur),$r};const Wr=new WeakSet;let Gr=0,Kr=0;function Qr(t){return null!=t&&!1!==t}function Zr(t,e=!0){if(!Qr(t.virtualNode))throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a valid virtualNode. Perhaps this component was never initialized?");if(null==t.element)throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a DOM element. Perhaps this component was never initialized?");let n=t.render();if(!Qr(n)){const e=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+n+" returned from render()"+e)}Gr++;let r=t.virtualNode,i=t.element,o=Fr(r,n,{refs:t.refs,listenerContext:t});if(t.virtualNode=n,o!==i&&!e)throw new Error("The root node type changed on update, but the update was performed with the replaceNode option set to false");t.element=o,"function"==typeof t.writeAfterUpdate&&t.writeAfterUpdate(),"function"==typeof t.readAfterUpdate&&Vr().readDocument((function(){t.readAfterUpdate()})),Gr--}function Jr(t,e=!0){Kr++,Yr(t.virtualNode),1===Kr&&e&&t.element.remove(),Kr--}function Yr(t){t.component&&"function"==typeof t.component.destroy?t.component.destroy():t.children&&t.children.forEach(Yr)}Lr={initialize:function(t){if("function"!=typeof t.update)throw new Error("Etch components must implement `update(props, children)`.");let e=t.render();if(!Qr(e)){let n=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+e+" returned from render()"+n)}t.refs={},t.virtualNode=e,t.element=Pr(t.virtualNode,{refs:t.refs,listenerContext:t})},update:function(t,e=!0){if(Gr>0)return Zr(t,e),Promise.resolve();let n=Vr();return Wr.has(t)||(Wr.add(t),n.updateDocument((function(){Wr.delete(t),Zr(t,e)}))),n.getNextUpdatePromise()},updateSync:Zr,destroy:function(t,e=!0){if(Gr>0||Kr>0)return Jr(t,e),Promise.resolve();let n=Vr();return n.updateDocument((function(){Jr(t,e)})),n.getNextUpdatePromise()},destroySync:Jr};const{initialize:Xr,update:ti,updateSync:ei,destroy:ni,destroySync:ri}=Lr,ii=(Sr={dom:_r,render:Pr,initialize:Xr,update:ti,updateSync:ei,destroy:ni,destroySync:ri,setScheduler:function(t){$r=t},getScheduler:Vr}).dom;vr=class{static setScheduler(t){Sr.setScheduler(t)}static getScheduler(t){return Sr.getScheduler()}constructor(t){this.props=t,this.props.hasOwnProperty("initialSelectionIndex")||(this.props.initialSelectionIndex=0),t.initiallyVisibleItemCount&&this.initializeVisibilityObserver(),this.computeItems(!1),this.disposables=new wr,Sr.initialize(this),this.element.classList.add("select-list"),this.disposables.add(this.refs.queryEditor.onDidChange(this.didChangeQuery.bind(this))),t.skipCommandsRegistration||this.disposables.add(this.registerAtomCommands());const e=this.refs.queryEditor.element,n=this.didLoseFocus.bind(this);e.addEventListener("blur",n),this.didClickItemsList=!1,this.element.addEventListener("mousedown",(t=>{t.target===this.refs.items&&(this.didClickItemsList=!0)})),this.disposables.add(new yr((()=>{e.removeEventListener("blur",n)})))}initializeVisibilityObserver(){this.visibilityObserver=new IntersectionObserver((t=>{for(const e of t)if(e.intersectionRatio>0){const t=e.target;this.visibilityObserver.unobserve(t);const n=Array.from(this.refs.items.children).indexOf(t);n>=0&&this.renderItemAtIndex(n)}}))}focus(){this.refs.queryEditor.element.focus()}didLoseFocus(t){this.didClickItemsList||this.element.contains(t.relatedTarget)?(this.didClickItemsList=!1,this.refs.queryEditor.element.focus()):document.hasFocus()&&this.cancelSelection()}reset(){this.refs.queryEditor.setText("")}destroy(){return this.disposables.dispose(),this.visibilityObserver&&this.visibilityObserver.disconnect(),Sr.destroy(this)}registerAtomCommands(){return T.atom.commands.add(this.element,{"core:move-up":t=>{this.selectPrevious(),t.stopPropagation()},"core:move-down":t=>{this.selectNext(),t.stopPropagation()},"core:move-to-top":t=>{this.selectFirst(),t.stopPropagation()},"core:move-to-bottom":t=>{this.selectLast(),t.stopPropagation()},"core:confirm":t=>{this.confirmSelection(),t.stopPropagation()},"core:cancel":t=>{this.cancelSelection(),t.stopPropagation()}})}update(t={}){let e=!1;return t.hasOwnProperty("items")&&(this.props.items=t.items,e=!0),t.hasOwnProperty("maxResults")&&(this.props.maxResults=t.maxResults,e=!0),t.hasOwnProperty("filter")&&(this.props.filter=t.filter,e=!0),t.hasOwnProperty("filterQuery")&&(this.props.filterQuery=t.filterQuery,e=!0),t.hasOwnProperty("query")&&(this.refs.queryEditor.setText(t.query),e=!1),t.hasOwnProperty("selectQuery")&&(t.selectQuery?this.refs.queryEditor.selectAll():this.refs.queryEditor.clearSelections()),t.hasOwnProperty("order")&&(this.props.order=t.order),t.hasOwnProperty("emptyMessage")&&(this.props.emptyMessage=t.emptyMessage),t.hasOwnProperty("errorMessage")&&(this.props.errorMessage=t.errorMessage),t.hasOwnProperty("infoMessage")&&(this.props.infoMessage=t.infoMessage),t.hasOwnProperty("loadingMessage")&&(this.props.loadingMessage=t.loadingMessage),t.hasOwnProperty("loadingBadge")&&(this.props.loadingBadge=t.loadingBadge),t.hasOwnProperty("itemsClassList")&&(this.props.itemsClassList=t.itemsClassList),t.hasOwnProperty("initialSelectionIndex")&&(this.props.initialSelectionIndex=t.initialSelectionIndex),e&&this.computeItems(),Sr.update(this)}render(){return ii.div({},ii(br,{ref:"queryEditor",mini:!0}),this.renderLoadingMessage(),this.renderInfoMessage(),this.renderErrorMessage(),this.renderItems())}renderItems(){if(this.items.length>0){const t=["list-group"].concat(this.props.itemsClassList||[]).join(" ");return this.visibilityObserver&&Sr.getScheduler().updateDocument((()=>{Array.from(this.refs.items.children).slice(this.props.initiallyVisibleItemCount).forEach((t=>{this.visibilityObserver.observe(t)}))})),this.listItems=this.items.map(((t,e)=>{const n=this.getSelectedItem()===t,r=!this.props.initiallyVisibleItemCount||ethis.didClickItem(e)})})),ii.ol({className:t,ref:"items"},...this.listItems)}return!this.props.loadingMessage&&this.props.emptyMessage?ii.span({ref:"emptyMessage"},this.props.emptyMessage):""}renderErrorMessage(){return this.props.errorMessage?ii.span({ref:"errorMessage"},this.props.errorMessage):""}renderInfoMessage(){return this.props.infoMessage?ii.span({ref:"infoMessage"},this.props.infoMessage):""}renderLoadingMessage(){return this.props.loadingMessage?ii.div({className:"loading"},ii.span({ref:"loadingMessage",className:"loading-message"},this.props.loadingMessage),this.props.loadingBadge?ii.span({ref:"loadingBadge",className:"badge"},this.props.loadingBadge):""):""}getQuery(){return this.refs&&this.refs.queryEditor?this.refs.queryEditor.getText():""}getFilterQuery(){return this.props.filterQuery?this.props.filterQuery(this.getQuery()):this.getQuery()}didChangeQuery(){this.props.didChangeQuery&&this.props.didChangeQuery(this.getFilterQuery()),this.computeItems()}didClickItem(t){this.selectIndex(t),this.confirmSelection()}computeItems(t){this.listItems=null,this.visibilityObserver&&this.visibilityObserver.disconnect();const e=this.props.filter||this.fuzzyFilter.bind(this);this.items=e(this.props.items.slice(),this.getFilterQuery()),this.props.order&&this.items.sort(this.props.order),this.props.maxResults&&(this.items=this.items.slice(0,this.props.maxResults)),this.selectIndex(this.props.initialSelectionIndex,t)}fuzzyFilter(t,e){if(0===e.length)return t;{const n=[];for(const r of t){const t=this.props.filterKeyForItem?this.props.filterKeyForItem(r):r;let i=or.score(t,e);i>0&&n.push({item:r,score:i})}return n.sort(((t,e)=>e.score-t.score)),n.map((t=>t.item))}}getSelectedItem(){return void 0===this.selectionIndex?null:this.items[this.selectionIndex]}renderItemAtIndex(t){const e=this.items[t],n=this.getSelectedItem()===e,r=this.listItems[t].component;this.visibilityObserver&&this.visibilityObserver.unobserve(r.element),r.update({element:this.props.elementForItem(e,{selected:n,index:t,visible:!0}),selected:n,onclick:()=>this.didClickItem(t)})}selectPrevious(){return void 0===this.selectionIndex?this.selectLast():this.selectIndex(this.selectionIndex-1)}selectNext(){return void 0===this.selectionIndex?this.selectFirst():this.selectIndex(this.selectionIndex+1)}selectFirst(){return this.selectIndex(0)}selectLast(){return this.selectIndex(this.items.length-1)}selectNone(){return this.selectIndex(void 0)}selectIndex(t,e=!0){t>=this.items.length?t=0:t<0&&(t=this.items.length-1);const n=this.selectionIndex;return this.selectionIndex=t,void 0!==t&&this.props.didChangeSelection&&this.props.didChangeSelection(this.getSelectedItem()),e?this.listItems?(n>=0&&this.renderItemAtIndex(n),t>=0&&this.renderItemAtIndex(t),Sr.getScheduler().getNextUpdatePromise()):Sr.update(this):Promise.resolve()}selectItem(t){const e=this.items.indexOf(t);if(-1===e)throw new Error("Cannot select the specified item because it does not exist.");return this.selectIndex(e)}confirmSelection(){const t=this.getSelectedItem();null!=t?this.props.didConfirmSelection&&this.props.didConfirmSelection(t):this.props.didConfirmEmptySelection&&this.props.didConfirmEmptySelection()}cancelSelection(){this.props.didCancelSelection&&this.props.didCancelSelection()}};class oi{constructor(t){this.mouseDown=this.mouseDown.bind(this),this.mouseUp=this.mouseUp.bind(this),this.didClick=this.didClick.bind(this),this.selected=t.selected,this.onclick=t.onclick,this.element=t.element,this.element.addEventListener("mousedown",this.mouseDown),this.element.addEventListener("mouseup",this.mouseUp),this.element.addEventListener("click",this.didClick),this.selected&&this.element.classList.add("selected"),this.domEventsDisposable=new yr((()=>{this.element.removeEventListener("mousedown",this.mouseDown),this.element.removeEventListener("mouseup",this.mouseUp),this.element.removeEventListener("click",this.didClick)})),Sr.getScheduler().updateDocument(this.scrollIntoViewIfNeeded.bind(this))}mouseDown(t){t.preventDefault()}mouseUp(t){t.preventDefault()}didClick(t){t.preventDefault(),this.onclick()}destroy(){this.element.remove(),this.domEventsDisposable.dispose()}update(t){this.element.removeEventListener("mousedown",this.mouseDown),this.element.removeEventListener("mouseup",this.mouseUp),this.element.removeEventListener("click",this.didClick),this.element.parentNode.replaceChild(t.element,this.element),this.element=t.element,this.element.addEventListener("mousedown",this.mouseDown),this.element.addEventListener("mouseup",this.mouseUp),this.element.addEventListener("click",this.didClick),t.selected&&this.element.classList.add("selected"),this.selected=t.selected,this.onclick=t.onclick,Sr.getScheduler().updateDocument(this.scrollIntoViewIfNeeded.bind(this))}scrollIntoViewIfNeeded(){this.selected&&this.element.scrollIntoViewIfNeeded(!1)}}var si=C(vr);async function ai({items:t,itemTemplate:e,itemFilterKey:n,didChangeSelection:r}){let i;const o=document.activeElement;try{return await new Promise((o=>{let s,a,c="Loading...",u=!1;const l=t=>{u||Kt(f.update(t))};"function"==typeof t&&(s=async e=>{const n=setTimeout((()=>l({loadingMessage:"Loading..."})),300),r=await t(e);clearTimeout(n),l({items:r,emptyMessage:"Nothing matches the search value",loadingMessage:void 0})},c=void 0,a="Please enter a search value");const f=new si({items:[],elementForItem:t=>ft.render(e(t,f)),filterKeyForItem:t=>""+t[n],didChangeSelection:r,didCancelSelection:()=>{u=!0,o(void 0)},didConfirmSelection:t=>{u=!0,o(t)},loadingMessage:c,didChangeQuery:s,emptyMessage:a,itemsClassList:["atom-typescript"]});"function"!=typeof t&&Kt(Promise.resolve(t).then((t=>{l({items:t,loadingMessage:void 0})}))),i=atom.workspace.addModalPanel({item:f,visible:!0}),f.focus()}))}finally{i&&i.destroy(),o&&o.focus()}}const ci=[];function ui(t,e,n){ci.push({selector:t,command:e,desc:n})}async function li(t,e,n){const r=Promise.all(t.body.refs.map((async t=>{var e;const n=(await new Promise(((e,n)=>x.readFile(t.file,((t,r)=>{t?n(t):e(r.toString("utf-8"))}))))).split(/\r?\n/g),r=void 0!==t.contextStart&&void 0!==t.contextEnd?n.slice(t.contextStart.line-1,t.contextEnd.line):n,i=(await pe(r.join("\n"),"source.tsx"))[t.start.line-((null===(e=t.contextStart)||void 0===e?void 0:e.line)||1)];return{...t,hlText:i}}))),i=await ai({items:r,itemTemplate:(t,e)=>ft.dom("li",null,ft.dom(gr,{label:atom.project.relativize(t.file),query:e.getFilterQuery()}),ft.dom("div",{className:"pull-right"},"line: ",t.start.line),ft.dom(er,{highlightedText:t.hlText})),itemFilterKey:"file"});i&&await n(e,i)}async function fi(t,e,n){if(t.body)if(t.body.length>1){const r=await ai({items:t.body,itemTemplate:(t,e)=>ft.dom("li",null,ft.dom(gr,{label:t.file,query:e.getFilterQuery()}),ft.dom("div",{className:"pull-right"},"line: ",t.start.line)),itemFilterKey:"file"});r&&await n(e,r)}else t.body.length>0&&await n(e,t.body[0])}function pi(t){const e=t.spans.map(Xt).reduce(((t,e)=>e.union(t)));return{kind:di[t.kind],plainText:t.text,startPosition:e.start,endPosition:e.end,landingPosition:t.nameSpan?Xt(t.nameSpan).start:void 0,children:t.childItems?t.childItems.map(pi).sort(hi):[]}}function hi(t,e){const n=t.landingPosition?t.landingPosition:t.startPosition,r=e.landingPosition?e.landingPosition:e.startPosition;return n.compare(r)}ui("atom-text-editor","typescript:find-references",(t=>({description:"Find where symbol under text cursor is referenced",async didDispatch(e){const n=fe(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("references",n);await li(i,e,t.histGoForward)}}))),ui("atom-text-editor","typescript:go-to-declaration",(t=>({description:"Go to declaration of symbol under text cursor",async didDispatch(e){const n=fe(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("definition",n);await fi(i,e,t.histGoForward)}})));const di={directory:"file",module:"module","external module name":"module",class:"class","local class":"class",method:"method",property:"property",getter:"property",setter:"property","JSX attribute":"field",constructor:"constructor",enum:"enum",interface:"interface",type:"interface",function:"function","local function":"function",label:"variable",alias:"variable",var:"variable",let:"variable","local var":"variable",parameter:"variable","enum member":"constant",const:"constant",string:"string","":void 0,warning:void 0,keyword:void 0,script:void 0,call:void 0,index:void 0,construct:void 0,"type parameter":void 0,"primitive type":void 0};class mi{constructor(t){this.getClient=t,this.triggerCharacters=new Set([]),this.grammarScopes=ce(),this.priority=100,this.disposables=new d;const e=new Set(["<","(",","]),n=new Set([]);this.disposables.add(atom.config.observe("atom-typescript.sigHelpDisplayOnChange",(t=>{this.triggerCharacters=t?e:n})))}dispose(){this.disposables.dispose()}async getSignatureHelp(t,e){try{const n=t.getPath();if(void 0===n)return;const r=await this.getClient(n),i=(await r.execute("signatureHelp",{file:n,line:e.row+1,offset:e.column+1})).body;return{signatures:i.items.map(re),activeParameter:i.argumentIndex,activeSignature:i.selectedItemIndex}}catch(t){return}}}function gi(t){return ft.dom("li",null,t.description)}class vi{constructor(t,e){this.getClient=t,this.applyEdits=e,this.selector=ce().map((t=>t.includes(".")?"."+t:t)).join(", "),this.disableForSelector=".comment",this.inclusionPriority=3,this.suggestionPriority=atom.config.get("atom-typescript").autocompletionSuggestionPriority,this.excludeLowerPriority=!1}async getSuggestions(t){const e=function(t){const e=t.editor.getPath();if(void 0===e)return;return{file:e,line:t.bufferPosition.row+1,offset:t.bufferPosition.column+1}}(t),n=function(t){const e=t.editor.getBuffer().getTextInRange([[t.bufferPosition.row,0],t.bufferPosition]).match(yi);return e?e[0]:""}(t);if(!e)return[];const r=function(t){if(void 0===t)return;if(!t)return;const e=t.slice(-1);if(ki.has(e))return e;return}(function(t,e){let n;const r=new h.Range([0,0],e);return t.backwardsScanInRange(/\S/,r,(({matchText:t,stop:e})=>{n=t,e()})),n}(t.editor.getBuffer(),t.bufferPosition));if(!n&&!t.activatedManually&&!r)return[];if(bi(t.scopeDescriptor.getScopesArray(),"string.template.")&&!bi(t.scopeDescriptor.getScopesArray(),"template.expression."))return[];try{let i=await this.getSuggestionsWithCache({prefix:n,location:e,triggerCharacter:r,activatedManually:t.activatedManually});return i=or.filter(i,n,{key:"displayText"}),i.map((r=>({replacementPrefix:r.replacementRange?t.editor.getTextInBufferRange(r.replacementRange):n,location:e,...this.getDetailsFromCache(r),...xi(t,r)})))}catch(t){return[]}}async getSuggestionDetailsOnSelect(t){return"text"in t&&!("rightLabel"in t)?this.getAdditionalDetails(t):null}onDidInsertSuggestion(t){const e=t.suggestion;if(!e.hasAction)return;if(!this.lastSuggestions)return;const n=this.lastSuggestions.client;let r=this.getDetailsFromCache(e);Kt((async()=>{var t;if(r||(r=await this.getAdditionalDetails(e)),!(null===(t=r)||void 0===t?void 0:t.details.codeActions))return;let i;i=1===r.details.codeActions.length?r.details.codeActions[0]:await ai({items:r.details.codeActions,itemTemplate:gi,itemFilterKey:"description"}),i&&(await this.applyEdits(i.changes),i.commands&&await Promise.all(i.commands.map((t=>n.execute("applyCodeActionCommand",{command:t})))))})())}async getAdditionalDetails(t){var e;if(void 0===t.identifier)return null;if(!this.lastSuggestions)return null;const n=await this.lastSuggestions.client.execute("completionEntryDetails",{entryNames:[t.identifier],...this.lastSuggestions.location});if(!n.body)return null;const[r]=n.body;if(!r)return null;let i=r.displayParts;i.length>=3&&"("===i[0].text&&i[1].text===t.leftLabel&&")"===i[2].text&&(i=i.slice(3));let o=i.map((t=>t.text)).join("");const s=t.hasAction&&1===(null===(e=r.codeActions)||void 0===e?void 0:e.length)?r.codeActions[0].description+"\n\n":"";s&&(o=s);const a=s+r.displayParts.map((t=>t.text)).join("")+(r.documentation?"\n\n"+r.documentation.map((t=>t.text)).join(" "):"");return this.lastSuggestions.details.set(t.displayText,{details:r,rightLabel:o,description:a}),{...t,details:r,rightLabel:o,description:a}}getDetailsFromCache(t){if(!this.lastSuggestions)return null;const e=this.lastSuggestions.details.get(t.displayText);return e||null}async getSuggestionsWithCache({prefix:t,location:e,triggerCharacter:n,activatedManually:r}){if(this.lastSuggestions&&!r){const n=this.lastSuggestions.location,r=wi(this.lastSuggestions.prefix,n.offset),i=wi(t,e.offset);if(n.file===e.file&&n.line===e.line&&r===i&&0!==this.lastSuggestions.suggestions.length)return this.lastSuggestions.suggestions}const i=await this.getClient(e.file),o=await async function({client:t,location:e,triggerCharacter:n}){if(parseInt(t.version.split(".")[0],10)>=3){var r;const i=await t.execute("completionInfo",{includeExternalModuleExports:!1,includeInsertTextCompletions:!0,triggerCharacter:n,...e});return i.body.entries.map(_i.bind(null,null===(r=i.body)||void 0===r?void 0:r.isMemberCompletion))}return(await t.execute("completions",{includeExternalModuleExports:!1,includeInsertTextCompletions:!0,...e})).body.map(_i.bind(null,void 0))}({client:i,location:e,triggerCharacter:r?void 0:n});return this.lastSuggestions={client:i,location:e,prefix:t,suggestions:o,details:new Map},o}}const yi=/(?:(?![\u{10000}-\u{10FFFF}])[\$_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}])(?:(?![\u{10000}-\u{10FFFF}])[\$_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\u200C\u200D\p{Mn}\p{Mc}\p{Nd}\p{Pc}])*$/u;function wi(t,e){return e-("."===t?0:t.length)}function bi(t,e){for(const n of t)if(n.includes(e))return!0;return!1}function _i(t,e){return{displayText:e.name,text:void 0!==e.insertText?e.insertText:e.name,leftLabel:e.kind,replacementRange:e.replacementSpan?Xt(e.replacementSpan):void 0,type:Si[e.kind],isMemberCompletion:t,identifier:void 0!==e.source?{name:e.name,source:e.source}:e.name,hasAction:e.hasAction}}function xi(t,e){return atom.config.get("atom-typescript.autocompleteParens")&&["function","method"].includes(e.leftLabel)&&!function(t){const e=t.editor.getBuffer(),n=t.bufferPosition;return!!e.getTextInRange([n,[n.row,e.lineLengthForRow(n.row)]]).match(/\s*\(/)}(t)?{...e,snippet:e.text+"($1)",text:void 0}:e}const Si={directory:"require",module:"import","external module name":"import",class:"class","local class":"class",method:"method",property:"property",getter:"property",setter:"property","JSX attribute":"property",constructor:"method",enum:"type",interface:"type",type:"type","type parameter":"type","primitive type":"type",function:"function","local function":"function",label:"variable",alias:"import",var:"variable",let:"variable","local var":"variable",parameter:"variable","enum member":"constant",const:"constant",string:"value",keyword:"keyword","":void 0,warning:void 0,script:void 0,call:void 0,index:void 0,construct:void 0},ki=new Set(Object.keys({".":null,'"':null,"'":null,"`":null,"/":null,"@":null,"<":null,"#":null}));async function Ei(t,e){const n=await async function(t,e){try{return await t.execute("getApplicableRefactors",{triggerReason:"invoked",...e})}catch{return}}(t,e);if(!n)return[];if(void 0===n.body||0===n.body.length)return[];const r=[];for(const t of n.body)for(const n of t.actions)r.push({refactorName:t.name,refactorDescription:t.description,refactorRange:e,actionName:n.name,actionDescription:n.description,inlineable:void 0===t.inlineable||t.inlineable});return r}async function Ci(t,e,n){const r=await e.execute("getEditsForRefactor",{...t.refactorRange,refactor:t.refactorName,action:t.actionName});if(void 0===r.body)return;const{edits:i,renameFilename:o,renameLocation:s}=r.body;if(await n.applyEdits(i),void 0===o||void 0===s)return;const a=await atom.workspace.open(o,{searchAllPanes:!0,initialLine:s.line-1,initialColumn:s.offset-1});await atom.commands.dispatch(atom.views.getView(a),"typescript:rename-refactor")}ui("atom-text-editor","typescript:refactor-selection",(t=>({description:"Get a list of applicable refactors to selected code",async didDispatch(e){const n=fe(e);if(!n)return;const r=e.getSelectedBufferRange(),i=await t.getClient(n.file),o=r.isEmpty()?n:{file:n.file,startLine:r.start.row+1,startOffset:r.start.column+1,endLine:r.end.row+1,endOffset:r.end.column+1},s=await Ei(i,o);if(0===s.length)return void atom.notifications.addInfo("AtomTS: No applicable refactors for the selection");const a=await ai({items:s,itemTemplate:(t,e)=>ft.dom("li",null,ft.dom(gr,{label:`${t.refactorDescription}: ${t.actionDescription}`,query:e.getFilterQuery()})),itemFilterKey:"actionDescription"});void 0!==a&&await Ci(a,i,t)}})));class Ti{constructor(t,e,n){this.clientResolver=t,this.errorPusher=e,this.applyEdits=n,this.supportedFixes=new WeakMap}async getFixableRanges(t,e){const n=t.getPath();if(void 0===n)return[];const r=this.errorPusher.getErrorsInRange(n,e),i=await this.clientResolver.get(n),o=await this.getSupportedFixes(i);return Array.from(r).filter((t=>void 0!==t.code&&o.has(t.code))).map((t=>Xt(t)))}async runCodeFix(t,e){const n=t.getPath();if(void 0===n)return[];const r=await this.clientResolver.get(n),i=await this.getSupportedFixes(r),o=Array.from(this.errorPusher.getErrorsAt(n,e)).filter((t=>void 0!==t.code&&i.has(t.code))).map((t=>r.execute("getCodeFixes",{file:n,startLine:t.start.line,startOffset:t.start.offset,endLine:t.end.line,endOffset:t.end.offset,errorCodes:[t.code]}))),s=await Promise.all(o),a=[];for(const t of s)if(t.body)for(const e of t.body)a.push(e);const c=await Ei(r,{file:n,...Jt(e)});return a.push(...c),a}async applyFix(t){if("changes"in t)return this.applyEdits(t.changes);return Ci(t,await this.clientResolver.get(t.refactorRange.file),{applyEdits:this.applyEdits})}dispose(){}async getSupportedFixes(t){let e=this.supportedFixes.get(t);if(e)return e;const n=await t.execute("getSupportedCodeFixes");if(!n.body)throw new Error("No code fixes are supported");return e=new Set(n.body.map((t=>parseInt(t,10)))),this.supportedFixes.set(t,e),e}}async function Pi(t,e){let n;try{return await new Promise(((r,i)=>{try{const o=new g({command:t,args:["--init"],options:{cwd:e},exit:t=>{0===t?r():i(new Error("Tsc ended with nonzero exit code "+t))}});n=o.onWillThrowError(i)}catch(t){i(t)}}))}finally{n&&n.dispose()}}ui("atom-text-editor","typescript:build",(t=>({description:"Compile all files in project related to current active text editor",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n);t.reportBuildStatus(void 0);const i=await r.execute("projectInfo",{file:n,needFileNameList:!0}),o=new Set(i.body.fileNames);o.delete(i.body.configFileName);let s=0;const a=[...o.values()].map((e=>{return n=r.execute("compileOnSaveEmitFile",{file:e,forced:!0}),i=()=>{s+=1,t.reportProgress({max:o.size,value:s})},n.then(i,i),n;var n,i}));try{if((await Promise.all(a)).some((t=>!1===t.body)))throw new Error("Emit failed");t.reportBuildStatus({success:!0})}catch(e){const n=e;console.error(n),t.reportBuildStatus({success:!1,message:n.message})}}}))),ui("atom-text-editor","typescript:check-all-files",(t=>({description:"Typecheck all files in project related to current active text editor",async didDispatch(e){var n;const r=e.getPath();if(void 0===r)return;const i=await t.getClient(r),o=await i.execute("projectInfo",{file:r,needFileNameList:!0}),s=new Set(null===(n=o.body.fileNames)||void 0===n?void 0:n.filter((t=>!t.endsWith("tsconfig.json")&&!t.includes(`${w.sep}node_modules${w.sep}`)))),a=s.size;if(i.multistepSupported){const e=i.on("syntaxDiag",(e=>{"file"in e&&s.delete(e.file),t.reportProgress({max:a,value:a-s.size})}));t.reportProgress({max:a,value:0}),await i.execute("geterrForProject",{file:r,delay:0}),e.dispose()}else{let e;const n=i.on("syntaxDiag",(r=>{void 0!==e&&window.clearTimeout(e),e=window.setTimeout((()=>{s.clear(),n.dispose(),t.reportProgress({max:a,value:a})}),2e3),"file"in r&&s.delete(r.file),0===s.size&&(n.dispose(),window.clearTimeout(e)),t.reportProgress({max:a,value:a-s.size})}));t.reportProgress({max:a,value:0}),await i.execute("geterrForProject",{file:r,delay:0})}}}))),ui("atom-workspace","typescript:clear-errors",(t=>({description:"Clear error messages",didDispatch(){t.clearErrors()}}))),ui("atom-text-editor","typescript:format-code",(t=>({description:"Format code in currently active text editor",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=[];for(const t of e.getSelectedBufferRanges())t.isEmpty()||r.push({line:(i=t).start.row+1,offset:i.start.column+1,endLine:i.end.row+1,endOffset:i.end.column+1});var i;if(0===r.length){const t=e.getBuffer().getEndPosition();r.push({line:1,offset:1,endLine:t.row+1,endOffset:t.column+1})}const o=await t.getClient(n),s=[];for(const t of r){const e=await o.execute("format",{...t,file:n});e.body&&s.push(...e.body)}s.length>0&&e.transact((()=>{!function(t,e){for(let n=e.length-1;n>=0;n--)t.setTextInBufferRange(Xt(e[n]),e[n].newText)}(e,s)}))}}))),ui("atom-text-editor","typescript:initialize-config",(()=>({description:"Create tsconfig.json in the project related to currently-active text edtior",async didDispatch(t,e){const n=atom.project.getDirectories();if(0===n.length)return e();const r=t.getPath();if(void 0===r)return;const i=(await Fn(r,"tsc")).pathToBin;for(const t of n)t.contains(r)&&(await Pi(i,t.getPath()),atom.notifications.addSuccess("Successfully created tsconfig.json in "+t.getPath()))}}))),ui("atom-text-editor","typescript:organize-imports",(t=>({description:"Organize module imports",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n),i=await r.execute("organizeImports",{scope:{type:"file",args:{file:n}}});i.body.length>0&&await t.applyEdits(i.body)}}))),ui("atom-text-editor","typescript:reload-projects",(t=>({description:"Reload projects",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n);await r.execute("reloadProjects")}})));var Ai,Oi,Ii={},ji=!1;function Ni(){return ji||(ji=!0,Ai={},function(){var t="object"==typeof self&&self.self===self&&self||"object"==typeof T&&T.global===T&&T||this||{},e=t._,n=Array.prototype,r=Object.prototype,i="undefined"!=typeof Symbol?Symbol.prototype:null,o=n.push,s=n.slice,a=r.toString,c=r.hasOwnProperty,u=Array.isArray,l=Object.keys,f=Object.create,p=function(){},h=function(t){return t instanceof h?t:this instanceof h?void(this._wrapped=t):new h(t)};void 0===Ai||Ai.nodeType?t._=h:(!module.nodeType&&Ai&&(Ai=h),Oi=h,Ai._=Oi),h.VERSION="1.9.1";var d,m=function(t,e,n){if(void 0===e)return t;switch(null==n?3:n){case 1:return function(n){return t.call(e,n)};case 3:return function(n,r,i){return t.call(e,n,r,i)};case 4:return function(n,r,i,o){return t.call(e,n,r,i,o)}}return function(){return t.apply(e,arguments)}},g=function(t,e,n){return h.iteratee!==d?h.iteratee(t,e):null==t?h.identity:h.isFunction(t)?m(t,e,n):h.isObject(t)&&!h.isArray(t)?h.matcher(t):h.property(t)};h.iteratee=d=function(t,e){return g(t,e,1/0)};var v=function(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),r=Array(n),i=0;i=0&&e<=x};h.each=h.forEach=function(t,e,n){var r,i;if(e=m(e,n),k(t))for(r=0,i=t.length;r0?0:s-1;for(i||(r=e[o?o[a]:a],a+=t);a>=0&&a=3;return e(t,m(n,i,4),r,o)}};h.reduce=h.foldl=h.inject=E(1),h.reduceRight=h.foldr=E(-1),h.find=h.detect=function(t,e,n){var r=(k(t)?h.findIndex:h.findKey)(t,e,n);if(void 0!==r&&-1!==r)return t[r]},h.filter=h.select=function(t,e,n){var r=[];return e=g(e,n),h.each(t,(function(t,n,i){e(t,n,i)&&r.push(t)})),r},h.reject=function(t,e,n){return h.filter(t,h.negate(g(e)),n)},h.every=h.all=function(t,e,n){e=g(e,n);for(var r=!k(t)&&h.keys(t),i=(r||t).length,o=0;o=0},h.invoke=v((function(t,e,n){var r,i;return h.isFunction(e)?i=e:h.isArray(e)&&(r=e.slice(0,-1),e=e[e.length-1]),h.map(t,(function(t){var o=i;if(!o){if(r&&r.length&&(t=_(t,r)),null==t)return;o=t[e]}return null==o?o:o.apply(t,n)}))})),h.pluck=function(t,e){return h.map(t,h.property(e))},h.where=function(t,e){return h.filter(t,h.matcher(e))},h.findWhere=function(t,e){return h.find(t,h.matcher(e))},h.max=function(t,e,n){var r,i,o=-1/0,s=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=k(t)?t:h.values(t)).length;ao&&(o=r);else e=g(e,n),h.each(t,(function(t,n,r){((i=e(t,n,r))>s||i===-1/0&&o===-1/0)&&(o=t,s=i)}));return o},h.min=function(t,e,n){var r,i,o=1/0,s=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=k(t)?t:h.values(t)).length;ar||void 0===n)return 1;if(n0?0:i-1;o>=0&&o0?a=o>=0?o:Math.max(o+c,a):c=o>=0?Math.min(o+1,c):o+c+1;else if(n&&o&&c)return r[o=n(r,i)]===i?o:-1;if(i!=i)return(o=e(s.call(r,a,c),h.isNaN))>=0?o+a:-1;for(o=t>0?a:c-1;o>=0&&oe?(r&&(clearTimeout(r),r=null),a=u,s=t.apply(i,o),r||(i=o=null)):r||!1===n.trailing||(r=setTimeout(c,l)),s};return u.cancel=function(){clearTimeout(r),a=0,r=i=o=null},u},h.debounce=function(t,e,n){var r,i,o=function(e,n){r=null,n&&(i=t.apply(e,n))},s=v((function(s){if(r&&clearTimeout(r),n){var a=!r;r=setTimeout(o,e),a&&(i=t.apply(this,s))}else r=h.delay(o,e,this,s);return i}));return s.cancel=function(){clearTimeout(r),r=null},s},h.wrap=function(t,e){return h.partial(e,t)},h.negate=function(t){return function(){return!t.apply(this,arguments)}},h.compose=function(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}},h.after=function(t,e){return function(){if(--t<1)return e.apply(this,arguments)}},h.before=function(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}},h.once=h.partial(h.before,2),h.restArguments=v;var N=!{toString:null}.propertyIsEnumerable("toString"),D=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],L=function(t,e){var n=D.length,i=t.constructor,o=h.isFunction(i)&&i.prototype||r,s="constructor";for(b(t,s)&&!h.contains(e,s)&&e.push(s);n--;)(s=D[n])in t&&t[s]!==o[s]&&!h.contains(e,s)&&e.push(s)};h.keys=function(t){if(!h.isObject(t))return[];if(l)return l(t);var e=[];for(var n in t)b(t,n)&&e.push(n);return N&&L(t,e),e},h.allKeys=function(t){if(!h.isObject(t))return[];var e=[];for(var n in t)e.push(n);return N&&L(t,e),e},h.values=function(t){for(var e=h.keys(t),n=e.length,r=Array(n),i=0;i1&&(r=m(r,e[1])),e=h.allKeys(t)):(r=B,e=A(e,!1,!1),t=Object(t));for(var i=0,o=e.length;i1&&(n=e[1])):(e=h.map(A(e,!1,!1),String),r=function(t,n){return!h.contains(e,n)}),h.pick(t,r,n)})),h.defaults=F(h.allKeys,!0),h.create=function(t,e){var n=y(t);return e&&h.extendOwn(n,e),n},h.clone=function(t){return h.isObject(t)?h.isArray(t)?t.slice():h.extend({},t):t},h.tap=function(t,e){return e(t),t},h.isMatch=function(t,e){var n=h.keys(e),r=n.length;if(null==t)return!r;for(var i=Object(t),o=0;o":">",'"':""","'":"'","`":"`"},H=h.invert(q),U=function(t){var e=function(e){return t[e]},n="(?:"+h.keys(t).join("|")+")",r=RegExp(n),i=RegExp(n,"g");return function(t){return t=null==t?"":""+t,r.test(t)?t.replace(i,e):t}};h.escape=U(q),h.unescape=U(H),h.result=function(t,e,n){h.isArray(e)||(e=[e]);var r=e.length;if(!r)return h.isFunction(n)?n.call(t):n;for(var i=0;i/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var V=/(.)^/,W={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},G=/\\|'|\r|\n|\u2028|\u2029/g,K=function(t){return"\\"+W[t]};h.template=function(t,e,n){!e&&n&&(e=n),e=h.defaults({},e,h.templateSettings);var r,i=RegExp([(e.escape||V).source,(e.interpolate||V).source,(e.evaluate||V).source].join("|")+"|$","g"),o=0,s="__p+='";t.replace(i,(function(e,n,r,i,a){return s+=t.slice(o,a).replace(G,K),o=a+e.length,n?s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?s+="'+\n((__t=("+r+"))==null?'':__t)+\n'":i&&(s+="';\n"+i+"\n__p+='"),e})),s+="';\n",e.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{r=new Function(e.variable||"obj","_",s)}catch(t){throw t.source=s,t}var a=function(t){return r.call(this,t,h)},c=e.variable||"obj";return a.source="function("+c+"){\n"+s+"}",a},h.chain=function(t){var e=h(t);return e._chain=!0,e};var Q=function(t,e){return t._chain?h(e).chain():e};h.mixin=function(t){return h.each(h.functions(t),(function(e){var n=h[e]=t[e];h.prototype[e]=function(){var t=[this._wrapped];return o.apply(t,arguments),Q(this,n.apply(h,t))}})),h},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],(function(t){var e=n[t];h.prototype[t]=function(){var n=this._wrapped;return e.apply(n,arguments),"shift"!==t&&"splice"!==t||0!==n.length||delete n[0],Q(this,n)}})),h.each(["concat","join","slice"],(function(t){var e=n[t];h.prototype[t]=function(){return Q(this,e.apply(this._wrapped,arguments))}})),h.prototype.value=function(){return this._wrapped},h.prototype.valueOf=h.prototype.toJSON=h.prototype.value,h.prototype.toString=function(){return String(this._wrapped)},"function"==typeof define&&define.amd&&define("underscore",[],(function(){return h}))}()),Ai}var Di,Li=!1;function Fi(){return Li||(Li=!0,function(){var t,e,n,r,i,o,s,a,c=[].slice;a=Ni(),n={cmd:"⌘",ctrl:"⌃",alt:"⌥",option:"⌥",shift:"⇧",enter:"⏎",left:"←",right:"→",up:"↑",down:"↓"},r={cmd:"Cmd",ctrl:"Ctrl",alt:"Alt",option:"Alt",shift:"Shift",enter:"Enter",left:"Left",right:"Right",up:"Up",down:"Down"},o={"~":"`",_:"-","+":"=","|":"\\","{":"[","}":"]",":":";",'"':"'","<":",",">":".","?":"/"},s=function(t){var e,n,r,i,o;if(r=0,n=[],null==t)return n;for(e=i=0,o=t.length;i=0&&t.splice(n,1),t},setValueForKeyPath:function(t,e,n){var r,i;for(i=s(e);i.length>1;)null==t[r=i.shift()]&&(t[r]={}),t=t[r];return null!=n?t[i.shift()]=n:delete t[i.shift()]},hasKeyPath:function(t,e){var n,r,i,o;for(i=0,o=(r=s(e)).length;i0?s<=a:s>=a;o=s+=i)u.push(t.splice.apply(t,[e+o,0].concat(c.call(r.slice(o,o+i)))));return u},sum:function(t){var e,n,r;for(e=0,n=0,r=t.length;n=0&&t.length%1==0}function p(t,e){for(var n=-1,r=t.length;++n3?t(r,i,c,a):(s=o,o=i,t(r,c,a))}}function N(t,e){return e}function D(t,e,r){r=r||n;var i=f(e)?[]:{};t(e,(function(t,e,n){t(b((function(t,r){r.length<=1&&(r=r[0]),i[e]=r,n(t)})))}),(function(t){r(t,i)}))}function L(t,e,n,r){var i=[];t(e,(function(t,e,r){n(t,(function(t,e){i=i.concat(e||[]),r(t)}))}),(function(t){r(t,i)}))}function F(t,r,i){if(null==r)r=1;else if(0===r)throw new Error("Concurrency must not be zero");function o(t,r,i,o){if(null!=o&&"function"!=typeof o)throw new Error("task callback must be a function");if(t.started=!0,l(r)||(r=[r]),0===r.length&&t.idle())return e.setImmediate((function(){t.drain()}));p(r,(function(e){var r={data:e,callback:o||n};i?t.tasks.unshift(r):t.tasks.push(r),t.tasks.length===t.concurrency&&t.saturated()})),e.setImmediate(t.process)}function s(t,e){return function(){c-=1;var n=!1,r=arguments;p(e,(function(t){p(u,(function(e,r){e!==t||n||(u.splice(r,1),n=!0)})),t.callback.apply(t,r)})),t.tasks.length+c===0&&t.drain(),t.process()}}var c=0,u=[],f={tasks:[],concurrency:r,payload:i,saturated:n,empty:n,drain:n,started:!1,paused:!1,push:function(t,e){o(f,t,!1,e)},kill:function(){f.drain=n,f.tasks=[]},unshift:function(t,e){o(f,t,!0,e)},process:function(){for(;!f.paused&&cr?1:0}e.map(t,(function(t,e){n(t,(function(n,r){n?e(n):e(null,{value:t,criteria:r})}))}),(function(t,e){if(t)return r(t);r(null,h(e.sort(i),(function(t){return t.value})))}))},e.auto=function(t,r,i){"function"==typeof arguments[1]&&(i=r,r=null),i=c(i||n);var o=y(t),s=o.length;if(!s)return i(null);r||(r=s);var a={},u=0,f=!1,h=[];function d(t){h.unshift(t)}function w(t){var e=v(h,t);e>=0&&h.splice(e,1)}function _(){s--,p(h.slice(0),(function(t){t()}))}d((function(){s||i(null,a)})),p(o,(function(n){if(!f){for(var o,s=l(t[n])?t[n]:[t[n]],c=b((function(t,r){if(u--,r.length<=1&&(r=r[0]),t){var o={};g(a,(function(t,e){o[e]=t})),o[n]=r,f=!0,i(t,o)}else a[n]=r,e.setImmediate(_)})),p=s.slice(0,s.length-1),h=p.length;h--;){if(!(o=t[p[h]]))throw new Error("Has nonexistent dependency in "+p.join(", "));if(l(o)&&v(o,n)>=0)throw new Error("Has cyclic dependencies")}y()?(u++,s[s.length-1](c,a)):d((function t(){y()&&(u++,w(t),s[s.length-1](c,a))}))}function y(){return u3)throw new Error("Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)");function l(t,n){function r(t,e){return function(r){t((function(t,n){r(!t||e,{err:t,result:n})}),n)}}function i(t){return function(e){setTimeout((function(){e(null)}),t)}}for(;a.times;){var o=!(a.times-=1);s.push(r(a.task,o)),!o&&a.interval>0&&s.push(i(a.interval))}e.series(s,(function(e,n){n=n[n.length-1],(t||a.callback)(n.err,n.result)}))}return u<=2&&"function"==typeof t&&(r=n,n=t),"function"!=typeof t&&c(a,t),a.callback=r,a.task=n,a.callback?l():l},e.waterfall=function(t,r){if(r=c(r||n),!l(t)){var i=new Error("First argument to waterfall must be an array of functions");return r(i)}if(!t.length)return r();!function t(e){return b((function(n,i){if(n)r.apply(null,[n].concat(i));else{var o=e.next();o?i.push(t(o)):i.push(r),z(e).apply(null,i)}}))}(e.iterator(t))()},e.parallel=function(t,n){D(e.eachOf,t,n)},e.parallelLimit=function(t,e,n){D(k(e),t,n)},e.series=function(t,n){D(e.eachOfSeries,t,n)},e.iterator=function(t){return function e(n){function r(){return t.length&&t[n].apply(null,arguments),r.next()}return r.next=function(){return n>>1);n(e,t[o])>=0?r=o:i=o-1}return r}(t.tasks,a,i)+1,0,a),t.tasks.length===t.concurrency&&t.saturated(),e.setImmediate(t.process)}))}(o,t,r,s)},delete o.unshift,o},e.cargo=function(t,e){return F(t,1,e)},e.log=M("log"),e.dir=M("dir"),e.memoize=function(t,n){var i={},o={},s=Object.prototype.hasOwnProperty;n=n||r;var a=b((function(r){var a=r.pop(),c=n.apply(null,r);s.call(i,c)?e.setImmediate((function(){a.apply(null,i[c])})):s.call(o,c)?o[c].push(a):(o[c]=[a],t.apply(null,r.concat([b((function(t){i[c]=t;var e=o[c];delete o[c];for(var n=0,r=e.length;n=t.length)return e&&(e[a]=t),n(null,t);Yi.lastIndex=r;var c=Yi.exec(t);return s=i,i+=c[0],o=s+c[1],r=Yi.lastIndex,u[o]||e&&e[o]===o?process.nextTick(f):e&&Object.prototype.hasOwnProperty.call(e,o)?d(e[o]):Zi.lstat(o,p)}function p(t,r){if(t)return n(t);if(!r.isSymbolicLink())return u[o]=!0,e&&(e[o]=o),process.nextTick(f);if(!Qi){var i=r.dev.toString(32)+":"+r.ino.toString(32);if(c.hasOwnProperty(i))return h(null,c[i],o)}Zi.stat(o,(function(t){if(t)return n(t);Zi.readlink(o,(function(t,e){Qi||(c[i]=e),h(t,e)}))}))}function h(t,r,i){if(t)return n(t);var o=Ki.resolve(s,r);e&&(e[i]=o),d(o)}function d(e){t=Ki.resolve(e,t.slice(r)),l()}l()},Gi.realpath=eo),Gi}var oo,so,ao,co,uo,lo,fo,po=!1;function ho(t){return t&&"realpath"===t.syscall&&("ELOOP"===t.code||"ENOMEM"===t.code||"ENAMETOOLONG"===t.code)}function mo(t,e,n){if(lo)return ao(t,e,n);"function"==typeof e&&(n=e,e=null),ao(t,e,(function(r,i){ho(r)?fo.realpath(t,e,n):n(r,i)}))}function go(t,e){if(lo)return co(t,e);try{return co(t,e)}catch(n){if(ho(n))return fo.realpathSync(t,e);throw n}}function vo(){so.realpath=mo,so.realpathSync=go}function yo(){so.realpath=ao,so.realpathSync=co}function wo(){return po||(po=!0,oo={},oo=mo,mo.realpath=mo,mo.sync=go,mo.realpathSync=go,mo.monkeypatch=vo,mo.unmonkeypatch=yo,ao=(so=x).realpath,co=so.realpathSync,uo=process.version,lo=/^v[0-5]\./.test(uo),fo=io()),oo}var bo,_o,xo=!1;function So(){return xo||(xo=!0,bo={},bo=function(t,e){for(var n=[],r=0;r=0&&u>0){for(r=[],o=n.length;l>=0&&!a;)l==c?(r.push(l),c=n.indexOf(t,l+1)):1==r.length?a=[r.pop(),u]:((i=r.pop())=0?c:u;r.length&&(a=[o,s])}return a}function Ao(){return Eo||(Eo=!0,ko={},ko=Co,Co.range=Po),ko}var Oo,Io,jo,No,Do,Lo,Fo,Mo,Ro=!1;function Bo(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function zo(t){return t.split(No).join("\\").split(Do).join("{").split(Lo).join("}").split(Fo).join(",").split(Mo).join(".")}function qo(t){if(!t)return[""];var e=[],n=jo("{","}",t);if(!n)return t.split(",");var r=n.pre,i=n.body,o=n.post,s=r.split(",");s[s.length-1]+="{"+i+"}";var a=qo(o);return o.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),e.push.apply(e,s),e}function Ho(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),Go(function(t){return t.split("\\\\").join(No).split("\\{").join(Do).split("\\}").join(Lo).split("\\,").join(Fo).split("\\.").join(Mo)}(t),!0).map(zo)):[]}function Uo(t){return"{"+t+"}"}function $o(t){return/^-?0\d/.test(t)}function Vo(t,e){return t<=e}function Wo(t,e){return t>=e}function Go(t,e){var n=[],r=jo("{","}",t);if(!r||/\$$/.test(r.pre))return[t];var i,o=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(r.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(r.body),a=o||s,c=r.body.indexOf(",")>=0;if(!a&&!c)return r.post.match(/,.*\}/)?Go(t=r.pre+"{"+r.body+Lo+r.post):[t];if(a)i=r.body.split(/\.\./);else if(1===(i=qo(r.body)).length&&1===(i=Go(i[0],!1).map(Uo)).length)return(f=r.post.length?Go(r.post,!1):[""]).map((function(t){return r.pre+i[0]+t}));var u,l=r.pre,f=r.post.length?Go(r.post,!1):[""];if(a){var p=Bo(i[0]),h=Bo(i[1]),d=Math.max(i[0].length,i[1].length),m=3==i.length?Math.abs(Bo(i[2])):1,g=Vo;h0){var _=new Array(b+1).join("0");w=y<0?"-"+_+w.slice(1):_+w}}u.push(w)}}else u=Io(i,(function(t){return Go(t,!1)}));for(var x=0;x65536)throw new TypeError("pattern is too long");var n=this.options;if(!n.noglobstar&&"**"===t)return Jo;if(""===t)return"";var r,i="",o=!!n.nocase,s=!1,a=[],c=[],u=!1,l=-1,f=-1,p="."===t.charAt(0)?"":n.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",h=this;function d(){if(r){switch(r){case"*":i+=es,o=!0;break;case"?":i+=ts,o=!0;break;default:i+="\\"+r}h.debug("clearStateChar %j %j",r,i),r=!1}}for(var m,g=0,v=t.length;g-1;k--){var E=c[k],C=i.slice(0,E.reStart),T=i.slice(E.reStart,E.reEnd-8),P=i.slice(E.reEnd-8,E.reEnd),A=i.slice(E.reEnd);P+=A;var O=C.split("(").length-1,I=A;for(g=0;g=0&&!(r=t[i]);i--);for(i=0;i>> no match, partial?",t,f,e,p),f!==s))}if("string"==typeof u?(c=r.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,c)):(c=l.match(u),this.debug("pattern match",u,l,c)),!c)return!1}if(i===s&&o===a)return!0;if(i===s)return n;if(o===a)return i===s-1&&""===t[i];throw new Error("wtf?")}}function ws(){return as||(as=!0,ys()),Qo}var bs,_s=!1;function xs(){return _s||(_s=!0,bs={},bs="function"==typeof Object.create?function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}),bs}var Ss,ks,Es,Cs=!1;function Ts(t){return"/"===t.charAt(0)}function Ps(t){var e=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/.exec(t),n=e[1]||"",r=Boolean(n&&":"!==n.charAt(1));return Boolean(e[2]||r)}function As(){return Cs||(Cs=!0,Ss={},Ss="win32"===process.platform?Ps:Ts,ks=Ts,Ss.posix=ks,Es=Ps,Ss.win32=Es),Ss}var Os,Is,js,Ns,Ds,Ls,Fs,Ms,Rs,Bs,zs,qs,Hs,Us=!1;function $s(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Vs(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}function Ws(t,e){return t.localeCompare(e)}function Gs(t){var e=null;if("/**"===t.slice(-3)){var n=t.replace(/(\/\*\*)+$/,"");e=new Hs(n,{dot:!0})}return{matcher:new Hs(t,{dot:!0}),gmatcher:e}}function Ks(t,e,n){if(n||(n={}),n.matchBase&&-1===e.indexOf("/")){if(n.noglobstar)throw new Error("base matching requires globstar");e="**/"+e}t.silent=!!n.silent,t.pattern=e,t.strict=!1!==n.strict,t.realpath=!!n.realpath,t.realpathCache=n.realpathCache||Object.create(null),t.follow=!!n.follow,t.dot=!!n.dot,t.mark=!!n.mark,t.nodir=!!n.nodir,t.nodir&&(t.mark=!0),t.sync=!!n.sync,t.nounique=!!n.nounique,t.nonull=!!n.nonull,t.nosort=!!n.nosort,t.nocase=!!n.nocase,t.stat=!!n.stat,t.noprocess=!!n.noprocess,t.absolute=!!n.absolute,t.maxLength=n.maxLength||1/0,t.cache=n.cache||Object.create(null),t.statCache=n.statCache||Object.create(null),t.symlinks=n.symlinks||Object.create(null),function(t,e){t.ignore=e.ignore||[],Array.isArray(t.ignore)||(t.ignore=[t.ignore]),t.ignore.length&&(t.ignore=t.ignore.map(Gs))}(t,n),t.changedCwd=!1;var r=process.cwd();$s(n,"cwd")?(t.cwd=Bs.resolve(n.cwd),t.changedCwd=t.cwd!==r):t.cwd=r,t.root=n.root||Bs.resolve(t.cwd,"/"),t.root=Bs.resolve(t.root),"win32"===process.platform&&(t.root=t.root.replace(/\\/g,"/")),t.cwdAbs=qs(t.cwd)?t.cwd:Js(t,t.cwd),"win32"===process.platform&&(t.cwdAbs=t.cwdAbs.replace(/\\/g,"/")),t.nomount=!!n.nomount,n.nonegate=!0,n.nocomment=!0,t.minimatch=new Hs(e,n),t.options=t.minimatch.options}function Qs(t){for(var e=t.nounique,n=e?[]:Object.create(null),r=0,i=t.matches.length;rthis.maxLength)return!1;if(!this.stat&&la(this.cache,e)){var r=this.cache[e];if(Array.isArray(r)&&(r="DIR"),!n||"DIR"===r)return r;if(n&&"FILE"===r)return!1}var i=this.statCache[e];if(!i){var o;try{o=na.lstatSync(e)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return this.statCache[e]=!1,!1}if(o&&o.isSymbolicLink())try{i=na.statSync(e)}catch(t){i=o}else i=o}return this.statCache[e]=i,r=!0,i&&(r=i.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||r,(!n||"FILE"!==r)&&r},ma.prototype._mark=function(t){return ca.mark(this,t)},ma.prototype._makeAbs=function(t){return ca.makeAbs(this,t)}),ea}var va,ya=!1;function wa(t,e){if(t&&e)return wa(t)(e);if("function"!=typeof t)throw new TypeError("need wrapper function");return Object.keys(t).forEach((function(e){n[e]=t[e]})),n;function n(){for(var e=new Array(arguments.length),n=0;nr?(n.splice(0,r),process.nextTick((function(){e.apply(null,i)}))):delete Oa[t]}}))}(t))}function Da(t){for(var e=t.length,n=[],r=0;r1)return!0;for(var i=0;ithis.maxLength)return e();if(!this.stat&&Ka(this.cache,n)){var i=this.cache[n];if(Array.isArray(i)&&(i="DIR"),!r||"DIR"===i)return e(null,i);if(r&&"FILE"===i)return e()}var o=this.statCache[n];if(void 0!==o){if(!1===o)return e(null,o);var s=o.isDirectory()?"DIR":"FILE";return r&&"FILE"===s?e():e(null,s,o)}var a=this,c=Qa("stat\0"+n,(function(r,i){if(i&&i.isSymbolicLink())return Ma.stat(n,(function(r,o){r?a._stat2(t,n,null,i,e):a._stat2(t,n,r,o,e)}));a._stat2(t,n,r,i,e)}));c&&Ma.lstat(n,c)},nc.prototype._stat2=function(t,e,n,r,i){if(n&&("ENOENT"===n.code||"ENOTDIR"===n.code))return this.statCache[e]=!1,i();var o="/"===t.slice(-1);if(this.statCache[e]=r,"/"===e.slice(-1)&&r&&!r.isDirectory())return i(null,!1,r);var s=!0;return r&&(s=r.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||s,o&&"FILE"===s?i():i(null,s,r)}}function ic(){return tc||(tc=!0,rc()),Fa}var oc,sc,ac,cc,uc,lc,fc,pc,hc,dc=!1;function mc(t){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((function(e){t[e]=t[e]||cc[e],t[e+="Sync"]=t[e]||cc[e]})),t.maxBusyTries=t.maxBusyTries||3,t.emfileWait=t.emfileWait||1e3,!1===t.glob&&(t.disableGlob=!0),t.disableGlob=t.disableGlob||!1,t.glob=t.glob||fc}function gc(t,e,n){"function"==typeof e&&(n=e,e={}),sc(t,"rimraf: missing path"),sc.equal(typeof t,"string","rimraf: path should be a string"),sc.equal(typeof n,"function","rimraf: callback function required"),sc(e,"rimraf: invalid options argument provided"),sc.equal(typeof e,"object","rimraf: options should be object"),mc(e);var r=0,i=null,o=0;if(e.disableGlob||!uc.hasMagic(t))return s(null,[t]);function s(t,s){return t?n(t):0===(o=s.length)?n():void s.forEach((function(t){vc(t,e,(function s(a){if(a){if(("EBUSY"===a.code||"ENOTEMPTY"===a.code||"EPERM"===a.code)&&r1&&(e=n.shift()),t=n.shift(),u.readdir(r,(function(n,i){return null!=n?t(n):(e&&(i=l.filterExtensions(i,e)),i=(i=i.sort((function(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}))).map((function(t){return v.join(r,t)})),t(null,i))}))},filterExtensions:function(t,e){return e=e.map((function(t){return""===t?t:"."+t.replace(/^\./,"")})),t.filter((function(t){return _.include(e,v.extname(t))}))},listTreeSync:function(t){var e,n;return n=[],e=function(t){return n.push(t),!0},l.traverseTreeSync(t,e,e),n},move:function(t,e,n){return p(t,e,(function(r,i){var o,s;if(!r)return i?(s=v.dirname(e),u.exists(s,(function(r){if(!r)return l.makeTree(s,(function(r){if(!r)return u.rename(t,e,n);n(r)}));u.rename(t,e,n)}))):((o=new Error("'"+e+"' already exists.")).code="EEXIST",void n(o));n(r)}))},moveSync:function(t,e){var n,r;if(!h(t,e))throw(n=new Error("'"+e+"' already exists.")).code="EEXIST",n;return r=v.dirname(e),u.existsSync(r)||l.makeTreeSync(r),u.renameSync(t,e)},removeSync:function(t){return y.sync(t)},remove:function(t,e){return y(t,e)},writeFileSync:function(t,e,n){return g.sync(v.dirname(t)),u.writeFileSync(t,e,n)},writeFile:function(t,e,n,r){return r=_.last(arguments),g(v.dirname(t),(function(i){return null!=i?"function"==typeof r?r(i):void 0:u.writeFile(t,e,n,r)}))},copy:function(t,e,n){return g(v.dirname(e),(function(r){var i,o;if(null==r)return(o=u.createReadStream(t)).on("error",(function(t){return"function"==typeof n&&n(t),n=null})),(i=u.createWriteStream(e)).on("error",(function(t){return"function"==typeof n&&n(t),n=null})),i.on("close",(function(){return"function"==typeof n&&n(),n=null})),o.pipe(i);"function"==typeof n&&n(r)}))},copySync:function(t,e){var n,r,i,o,s,a,c;for(o=u.readdirSync(t),g.sync(e),c=[],s=0,a=o.length;s0;)r=new Buffer(n),i=u.readSync(s,r,0,r.length,o),u.writeSync(a,r,0,i,o),c.push(o+=i);return c}finally{null!=s&&u.closeSync(s),null!=a&&u.closeSync(a)}},makeTreeSync:function(t){if(!l.isDirectorySync(t))return g.sync(t)},makeTree:function(t,e){return l.isDirectory(t,(function(n){return n?"function"==typeof e?e():void 0:g(t,(function(t){return"function"==typeof e?e(t):void 0}))}))},traverseTreeSync:function(t,e,n){var r;if(null==n&&(n=e),l.isDirectorySync(t))return(r=function(t,e,n){var i,o,s,a,c,l,f;for(c=0,l=(f=u.readdirSync(t)).length;c0},p=function(t,e,n){return u.stat(t,(function(r,i){if(!r)return u.stat(e,(function(r,o){if(!r||"ENOENT"!==r.code)return n(void 0,t.toLowerCase()===e.toLowerCase()&&i.dev===o.dev&&i.ino===o.ino);n(void 0,!0)}));n(r)}))},h=function(t,e){var n,r;return r=b(t),n=b(e),!r||!n||t.toLowerCase()===e.toLowerCase()&&r.dev===n.dev&&r.ino===n.ino},Ii=new Proxy({},{get:function(t,e){var n;return null!=(n=l[e])?n:u[e]},set:function(t,e,n){return l[e]=n}})}).call(Ii);class kc{constructor(t){this.props=t,this.model=atom.workspace.buildTextEditor({mini:!0,softWrapped:!0,lineNumberGutterVisible:!1}),this.element=atom.views.getView(this.model),this.model.setText(t.initialText),t.selectAll?this.model.selectAll():this.model.getLastCursor().moveToEndOfScreenLine(),this.setReadOnly(),this.setGrammar(),this.model.scrollToBufferPosition([0,0])}async update(t){this.element=atom.views.getView(this.model),this.props={...this.props,...t},this.setReadOnly(),this.setGrammar()}focus(){this.element.focus()}getModel(){return this.model}setReadOnly(){this.model.setReadOnly(!!this.props.readOnly)}setGrammar(){void 0!==this.props.grammar?atom.textEditors.setGrammarOverride(this.model,this.props.grammar):atom.textEditors.clearGrammarOverride(this.model)}}class Ec{constructor(t){this.props=t,ft.initialize(this)}async update(t){this.props={...this.props,...t},await ft.update(this)}render(){return ft.dom("div",{className:"atomts-rename-view",ref:"main"},ft.dom("div",{className:"block"},ft.dom("div",null,ft.dom("span",{ref:"title"},this.props.title),ft.dom("span",{className:"subtle-info-message"},ft.dom("span",null,"Close this panel with "),ft.dom("span",{className:"highlight"},"esc"),ft.dom("span",null," key. And commit with the "),ft.dom("span",{className:"highlight"},"enter"),ft.dom("span",null," key."))),ft.dom("div",{className:"find-container block"},ft.dom("div",{className:"editor-container"},ft.dom(kc,{ref:"editor",initialText:this.props.initialText,selectAll:this.props.selectAll}))),this.renderValidationMessage()))}async destroy(){await ft.destroy(this)}focus(){return this.refs.editor.focus()}getText(){return this.refs.editor.getModel().getText()}renderValidationMessage(){return void 0!==this.props.validationMessage?ft.dom("div",{className:"highlight-error"},this.props.validationMessage):null}}async function Cc(t){const e=new Ec({title:t.title,initialText:t.text,selectAll:t.autoSelect}),n=atom.workspace.addModalPanel({item:e,priority:1e3}),r=document.activeElement;e.focus();const i=new d;try{return await new Promise((n=>{i.add(atom.commands.add(e.refs.main,{"core:cancel":()=>{n(void 0)},"core:confirm":()=>{const r=e.getText(),i=t.onValidate(r);i?Kt(e.update({validationMessage:i})):n(r)}}))}))}finally{n.destroy(),i.dispose(),r&&r.focus()}}function Tc(t){const e=new d;for(const n of ci)if("atom-text-editor"===n.selector){const r=n.desc(t);e.add(atom.commands.add(n.selector,n.command,{...r,async didDispatch(t){try{const e=t.currentTarget.getModel();ue(e)?await r.didDispatch(e,(()=>t.abortKeyBinding())):(t.abortKeyBinding(),le(e)&&atom.notifications.addWarning("Atom-TypeScript cancelled last command: Current editor has no file path",{description:`Atom-TypeScript needs to determine the file path of the current editor to execute \`${n.command}\`, which it failed to do. You probably just need to save the current file somewhere.`,dismissable:!0}))}catch(t){Pc(t)}}}))}else{const r=n.desc(t);e.add(atom.commands.add(n.selector,n.command,{...r,async didDispatch(){try{await r.didDispatch()}catch(t){Pc(t)}}}))}return e}function Pc(t){atom.notifications.addFatalError("Something went wrong, see details below.",{detail:t.message,dismissable:!0,stack:t.stack})}ui("atom-text-editor","typescript:rename-file",(t=>({description:"Rename current file",async didDispatch(e){const n=e.getPath();if(!n)return;const r=await Cc({autoSelect:!0,title:"Rename File",text:n,onValidate:t=>t.trim()?"":"If you want to abort : Press esc to exit"});if(!r)return;const i=await t.getClient(n),o=await i.execute("getEditsForFileRename",{oldFilePath:n,newFilePath:r});await t.applyEdits(o.body),await new Promise(((t,i)=>{Ii.move(n,r,(n=>{n?i(n):(e.getBuffer().setPath(r),t())}))}))}}))),ui("atom-text-editor","typescript:rename-refactor",(t=>({description:"Rename symbol under text cursor everywhere it is used",async didDispatch(e){const n=fe(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("rename",n),{info:o,locs:s}=i.body;if(!o.canRename)return void atom.notifications.addInfo("AtomTS: Rename not available at cursor location");const a=await Cc({autoSelect:!0,title:"Rename Variable",text:o.displayName,onValidate:t=>t.replace(/\s/g,"")!==t.trim()?"The new variable must not contain a space":t.trim()?"":"If you want to abort : Press esc to exit"});void 0!==a&&await t.applyEdits(s.map((t=>({fileName:t.file,textChanges:t.locs.map((t=>({...t,newText:a})))}))))}}))),ui("atom-workspace","typescript:restart-all-servers",(t=>({description:"Kill all tsserver instances. They will be auto-restarted",async didDispatch(){t.killAllServers()}}))),ui("atom-workspace","typescript:return-from-declaration",(t=>({description:"If used `go-to-declaration`, return to previous text cursor position",async didDispatch(){await t.histGoBack()}}))),ui("atom-workspace","typescript:show-editor-position-history",(t=>({description:"If used `go-to-declaration`, return to previous text cursor position",async didDispatch(){await t.histShowHistory()}}))),ui("atom-text-editor","typescript:toggle-semantic-view",(t=>({description:"Toggle semantic view outline",didDispatch(){t.toggleSemanticViewController()}}))),ui("atom-text-editor","typescript:show-tooltip",(t=>({description:"Show type tooltip at current text cursor position",didDispatch:async e=>t.showTooltipAt(e)}))),ui("atom-text-editor","typescript:show-signature-help",(t=>({description:"Show signature help tooltip at current text cursor position",didDispatch:async e=>t.showSigHelpAt(e)}))),ui("atom-text-editor","typescript:hide-signature-help",(t=>({description:"Hide the currently visible signature help",async didDispatch(e,n){t.hideSigHelpAt(e)||n()}}))),ui("atom-text-editor","typescript:signature-help-next",(t=>({description:"Show next signature help if available",async didDispatch(e,n){t.rotateSigHelp(e,1)||n()}}))),ui("atom-text-editor","typescript:signature-help-prev",(t=>({description:"Show previous signature help if available",async didDispatch(e,n){t.rotateSigHelp(e,-1)||n()}}))),ui("atom-text-editor","typescript:toggle-file-symbols",(t=>({description:"Toggle view for finding file symbols",async didDispatch(e){t.toggleFileSymbolsView(e)}}))),ui("atom-text-editor","typescript:toggle-project-symbols",(t=>({description:"Toggle view for finding file symbols",async didDispatch(e){t.toggleProjectSymbolsView(e)}})));class Ac{constructor(t,e){this.children=e,this.props={...t,delay:{show:0,hide:0}},ft.initialize(this),this.tooltipDisposable=atom.tooltips.add(this.element,this.props)}async update(t,e){this.props={...this.props,...t},this.children=e,await ft.update(this),this.tooltipDisposable.dispose(),this.tooltipDisposable=atom.tooltips.add(this.element,this.props)}render(){return ft.dom("div",{className:"inline-block"},this.children?this.children:null)}async destroy(){await ft.destroy(this),this.tooltipDisposable.dispose()}}class Oc{constructor(t){this.hiddenBuildStatus=!1,this.disposables=new d,this.buildStatusClicked=()=>{this.props.buildStatus.success||atom.notifications.addError("Build failed",{detail:this.props.buildStatus.message,dismissable:!0})},this.props={...t},this.setHideBuildStatus(atom.config.get("atom-typescript").buildStatusTimeout),this.resetBuildStatusTimeout(),ft.initialize(this),this.disposables.add(atom.config.onDidChange("atom-typescript.buildStatusTimeout",(({newValue:t})=>{this.setHideBuildStatus(t),Kt(this.update({}))})))}async update(t){const e=void 0!==t.buildStatus&&t.buildStatus.success!==this.props.buildStatus.success;this.props={...this.props,...t},e&&this.resetBuildStatusTimeout(),await ft.update(this)}render(){if(this.hiddenBuildStatus)return ft.dom("span",null);let t,e;return this.props.buildStatus.success?(t="highlight-success",e="Emit Success"):(t="highlight-error",e="Emit Failed"),ft.dom(Ac,{title:this.props.buildStatus.success?"Build was successful":"Build failed; click to show error message"},ft.dom("span",{className:t,on:{click:this.buildStatusClicked}},e))}async destroy(){await ft.destroy(this)}resetBuildStatusTimeout(){this.hiddenBuildStatus=!1,this.props.buildStatus.success&&this.hideBuildStatus()}setHideBuildStatus(t){this.hideBuildStatus=t>0?Qt.debounce((()=>{this.hiddenBuildStatus=!0,Kt(ft.update(this))}),1e3*t):0===t?()=>{this.hiddenBuildStatus=!0}:()=>{}}}class Ic{constructor(t){this.props={...t},ft.initialize(this)}async update(t){this.props={...this.props,...t},await ft.update(this)}render(){return ft.dom(Ac,{title:()=>this.props.tsConfigPath.startsWith("/dev/null")?"No tsconfig.json":"Click to open "+atom.project.relativize(this.props.tsConfigPath)},ft.dom("a",{className:"inline-block",href:"",on:{click:t=>{t.preventDefault(),this.openConfigPath()}}},this.props.tsConfigPath.startsWith("/dev/null")?"No project":b((t=this.props.tsConfigPath,"~"+atom.project.relativize(t)))));var t}async destroy(){await ft.destroy(this)}openConfigPath(){this.props.tsConfigPath.startsWith("/dev/null")?atom.notifications.addInfo("No tsconfig for current file"):Kt(atom.workspace.open(this.props.tsConfigPath))}}class jc{constructor(t={}){this.props={visible:!0,pending:[],progress:{max:0,value:0},...t},ft.initialize(this)}async update(t){this.props={...this.props,...t},await ft.update(this)}render(){return ft.dom("ts-status-panel",{className:this.props.visible?"":"hide"},this.renderVersion(),this.renderPending(),this.renderConfigPath(),this.renderStatus(),this.renderProgress())}async destroy(){await ft.destroy(this)}dispose(){Kt(this.destroy())}async show(){await this.update({visible:!0})}async hide(){await this.update({visible:!1})}renderVersion(){return void 0!==this.props.clientVersion?ft.dom(Ac,{title:"Active TypeScript version"},this.props.clientVersion):null}renderPending(){return this.props.pending.length>0?ft.dom(Ac,{title:`Pending Requests:
    ${this.props.pending.map((({title:t})=>`
  • ${t}
  • `)).join("")}
`,html:!0},ft.dom("span",{ref:"pendingCounter"},this.props.pending.length.toString()),ft.dom("span",{ref:"pendingSpinner",className:"loading loading-spinner-tiny inline-block",style:{marginLeft:"5px",opacity:"0.5",verticalAlign:"sub"}})):null}renderConfigPath(){return void 0!==this.props.tsConfigPath?ft.dom(Ic,{tsConfigPath:this.props.tsConfigPath}):null}renderStatus(){return this.props.buildStatus?ft.dom(Oc,{buildStatus:this.props.buildStatus}):null}renderProgress(){return this.props.progress.value0;)e=this.prevCursorPositions.pop();if(e)return this.open({file:e.file,start:{line:e.line,offset:e.offset}});atom.notifications.addInfo("AtomTS: Previous position not found.")}async goForward(t,e){const n=fe(t);if(n){this.prevCursorPositions.push(n);const t=100;this.prevCursorPositions.length>t&&this.prevCursorPositions.splice(0,this.prevCursorPositions.length-t)}return this.open(e)}async showHistory(){const t=await ai({items:this.getHistory().slice().reverse().map(((t,e)=>({...t,idx:e}))),itemTemplate:(t,e)=>ft.dom("li",{className:"two-lines"},ft.dom("div",{className:"primary-line"},ft.dom(gr,{label:t.file,query:e.getFilterQuery()})),ft.dom("div",{className:"secondary-line"},"Line: ",t.line,", column: ",t.offset)),itemFilterKey:"file"});t&&await this.goHistory(t.idx+1)}getHistory(){return this.prevCursorPositions}dispose(){}serialize(){return this.prevCursorPositions}async open(t){const e=await atom.workspace.open(t.file,{initialLine:t.start.line-1,initialColumn:t.start.offset-1,searchAllPanes:!0});return atom.workspace.isTextEditor(e)&&e.scrollToCursorPosition({center:!0}),e}}class Dc{constructor(t,e){let n,r,i;this.getClient=t,this.editor=e,this.disposables=new d,this.occurrenceMarkers=[],this.disposed=!1;let o=!1;this.disposables.add(atom.config.observe("atom-typescript.occurrenceHighlightDebounceTimeout",(t=>{n=Qt.debounce((()=>{Kt(this.update())}),t),i=3.5*t})),e.onDidChangeCursorPosition((()=>{void 0===r?n():o=!0})),e.onDidChangePath((()=>n())),e.onDidChangeGrammar((()=>n())),e.onDidChange((()=>{void 0!==r&&clearTimeout(r),r=window.setTimeout((()=>{o&&(n(),o=!1),r=void 0}),i)})))}dispose(){this.disposed||(this.disposed=!0,this.disposables.dispose(),this.clearMarkers())}clearMarkers(){for(const t of this.occurrenceMarkers)t.destroy();this.occurrenceMarkers=[]}async update(){if(this.disposed)return;if(!ue(this.editor))return void this.clearMarkers();const t=this.editor.getPath();if(void 0===t)return;const e=await this.getClient(t);if(this.disposed)return;const n=this.editor.getLastCursor().getBufferPosition();try{const r=await e.execute("documentHighlights",{file:t,line:n.row+1,offset:n.column+1,filesToSearch:[t]});if(this.disposed)return;const i=Array.from(this.getNewOccurrenceMarkers(r.body));for(const t of this.occurrenceMarkers)i.includes(t)||t.destroy();this.occurrenceMarkers=i}catch(t){window.atom_typescript_debug&&console.error(t)}}*getNewOccurrenceMarkers(t){for(const e of t)if(e.file===this.editor.getPath())for(const t of e.highlightSpans){const e=Xt(t),n=this.occurrenceMarkers.find((t=>t.getBufferRange().isEqual(e)));if(n)yield n;else{const t=this.editor.markBufferRange(e);this.editor.decorateMarker(t,{type:"highlight",class:"atom-typescript-occurrence"}),yield t}}}}class Lc{constructor(t){this.disposables=new d,this.disposables.add(atom.workspace.observeTextEditors((e=>{const n=new Dc(t,e);this.disposables.add(n,e.onDidDestroy((()=>{this.disposables.remove(n),n.dispose()})))})))}dispose(){this.disposables.dispose()}}function Fc(t,e,n,r){let i,o=n.right,s=!1,a="";t.style.left="",t.style.top="",t.style.right="",t.style.bottom="";const c=e.clientWidth,u=getComputedStyle(t),l=parseInt(u.width,10),f=parseInt(u.height,10);if(o+l>=c&&(o=c-l-10),o<0&&(a="pre-wrap",o=10,s=10),"bottom"===r){const t=e.clientHeight;i=n.bottom,i+f>=t&&(i=n.top-f)}else"top"===r&&(i=n.top-f,i<0&&(i=n.bottom));t.style.left=o+"px",t.style.top=i+"px",!1!==s&&(t.style.right=s+"px"),a&&(t.style.whiteSpace=a)}class Mc{constructor(t){this.parent=t,this.props={left:0,right:0,top:0,bottom:0},ft.initialize(this)}async destroy(){return ft.destroy(this)}async update(t){var e,n,r;void 0!==(null===(e=t.sigHelp)||void 0===e?void 0:e.selectedItemIndex)&&(null===(n=t.sigHelp)||void 0===n?void 0:n.selectedItemIndex)!==(null===(r=this.props.sigHelp)||void 0===r?void 0:r.selectedItemIndex)&&(this.props.visibleItem=void 0),this.props={...this.props,...t},void 0===this.props.sigHelp?this.props.visibleItem=void 0:void 0!==this.props.visibleItem&&(this.props.visibleItem=this.props.visibleItem%this.props.sigHelp.items.length,this.props.visibleItem<0&&(this.props.visibleItem+=this.props.sigHelp.items.length)),await ft.update(this)}writeAfterUpdate(){Fc(this.element,this.parent,this.props,atom.config.get("atom-typescript").sigHelpPosition)}render(){return ft.dom("div",{className:"atom-typescript-tooltip tooltip",key:this.sigHelpHash()},ft.dom("div",{className:"tooltip-inner"},this.tooltipContents()))}sigHelpHash(){if(!this.props.sigHelp)return;const{start:t,end:e}=this.props.sigHelp.applicableSpan;return`${t.line}:${t.offset}-${e.line}:${e.offset}`}tooltipContents(){if(!this.props.sigHelp)return"…";const{sigHelp:t}=this.props,e=void 0!==this.props.visibleItem?this.props.visibleItem:t.selectedItemIndex,n=t.items.length,r=["atom-typescript-tooltip-signature-help"];function i(n){const i=[];return n===t.selectedItemIndex&&i.push("atom-typescript-tooltip-signature-help-selected"),n===e&&i.push("atom-typescript-tooltip-signature-help-visible"),[...r,...i].join(" ")}return n>1&&r.push("atom-typescript-tooltip-signature-help-changable"),t.items.map(((e,n)=>ft.dom("div",{className:i(n)},ft.dom("div",null,oe(e.prefixDisplayParts),this.renderSigHelpParams(e.parameters,t.argumentIndex),oe(e.suffixDisplayParts),ft.dom("div",{className:"atom-typescript-tooltip-signature-help-documentation"},oe(e.documentation))))))}renderSigHelpParams(t,e){return t.map(((t,n)=>ft.dom("span",{className:"atom-typescript-tooltip-signature-help-parameter"},n>0?", ":null,ft.dom("span",{className:n===e?"atom-typescript-tooltip-signature-help-selected":void 0},oe(t.displayParts)))))}}class Rc{constructor(t,e,n){this.deps=t,this.editor=e,this.cancelled=!1,this.disposables=new h.CompositeDisposable;const r=atom.views.getView(this.editor);this.view=new Mc(r),r.appendChild(this.view.element);const i=Qt.debounce(this.updateTooltip.bind(this),100,{leading:!0});this.disposables.add(this.editor.onDidChangeCursorPosition((t=>{n=t.newBufferPosition,Kt(i(n))})),r.onDidChangeScrollTop((()=>{setImmediate((()=>this.updateTooltipPosition(n)))})),r.onDidChangeScrollLeft((()=>{setImmediate((()=>this.updateTooltipPosition(n)))}))),Kt(this.updateTooltip(n))}isDisposed(){return this.cancelled}dispose(){this.cancelled||(this.cancelled=!0,this.disposables.dispose(),Kt(this.view.destroy()))}async rotateSigHelp(t){const{visibleItem:e,sigHelp:n}=this.view.props,r=void 0!==e?e:void 0!==(null==n?void 0:n.selectedItemIndex)?null==n?void 0:n.selectedItemIndex:0;await this.view.update({visibleItem:r+t})}async updateTooltip(t){if(this.cancelled)return;let e;try{e=this.computeTooltipPosition(t)}catch(t){return void console.warn(t)}const n=await this.getMessage(t);this.cancelled||(n?await this.view.update({...e,sigHelp:n}):this.dispose())}updateTooltipPosition(t){if(this.cancelled)return;const e=this.computeTooltipPosition(t);Kt(this.view.update({...e}))}computeTooltipPosition(t){const e=atom.views.getView(this.editor),n=e.pixelPositionForBufferPosition(t),r=e.querySelector(".lines").getBoundingClientRect(),i=this.editor.getLineHeightInPixels(),o=e.getBoundingClientRect(),s=n.top+r.top-o.top+i/2,a=n.left+r.left-o.left,c=.7*i;return{left:a,right:a,top:s-c,bottom:s+c}}async getMessage(t){if(!ue(this.editor))return;const e=this.editor.getPath();if(void 0===e)return;const n=await this.deps.getClient(e);try{return(await n.execute("signatureHelp",{file:e,line:t.row+1,offset:t.column+1})).body}catch(t){return}}}class Bc{constructor(t){this.deps=t,this.subscriptions=new h.CompositeDisposable,this.editorMap=new WeakMap,this.stoppedChanging=t=>e=>{if(!atom.config.get("atom-typescript.sigHelpDisplayOnChange"))return;if(void 0===t.getPath())return;const n=t.getLastCursor().getBufferPosition(),[r]=e.changes.filter((t=>t.newRange.containsPoint(n)));r&&null!==r.newText.match(/[<(,]/)&&Kt(this.showTooltip(t,n))},this.subscriptions.add(atom.workspace.observeTextEditors((t=>{const e=new h.CompositeDisposable;e.add(t.onDidDestroy((()=>{e.dispose(),this.subscriptions.remove(e);const n=this.editorMap.get(t);n&&n.dispose()})),t.onDidStopChanging(this.stoppedChanging(t))),this.subscriptions.add(e)})))}dispose(){this.subscriptions.dispose();for(const t of atom.workspace.getTextEditors()){const e=this.editorMap.get(t);e&&e.dispose()}}async showTooltipAt(t){const e=t.getLastCursor().getBufferPosition();return this.showTooltip(t,e)}rotateSigHelp(t,e){const n=this.editorMap.get(t);return!(!n||n.isDisposed())&&(Kt(n.rotateSigHelp(e)),!0)}hideTooltipAt(t){const e=this.editorMap.get(t);return!(!e||e.isDisposed())&&(e.dispose(),!0)}async showTooltip(t,e){const n=this.editorMap.get(t);n&&!n.isDisposed()||this.editorMap.set(t,new Rc(this.deps,t,e))}}function zc(t,e,n,r){const i=e=>{const i=e.target.closest(n);i&&t.contains(i)&&r(e)};return t.addEventListener(e,i),new v((()=>{t.removeEventListener(e,i)}))}class qc{constructor(){this.tooltip=null,this.props={left:0,right:0,top:0,bottom:0},ft.initialize(this)}async destroy(){return ft.destroy(this)}async update(t){this.props={...this.props,...t},this.tooltip=await Wn(this.props.info,ft,"etch",(t=>ft.dom("div",{className:"atom-typescript-tooltip-tooltip-code"},t))),await ft.update(this)}writeAfterUpdate(){Fc(this.element,document.body,this.props,atom.config.get("atom-typescript").tooltipPosition)}render(){return console.log(this.tooltip),console.log(ft.dom("div",null,this.tooltip)),ft.dom("div",{className:"atom-typescript-tooltip tooltip"},ft.dom("div",{className:"tooltip-inner"},this.tooltip))}}class Hc{constructor(t,e,n,r){this.getClient=t,this.cancelled=!1,Kt(this.initialize(e,n,r))}dispose(){this.cancelled=!0,this.view&&(Kt(this.view.destroy()),this.view=void 0)}async initialize(t,e,n){const r=atom.views.getView(t);let i,o;try{i=r.pixelPositionForBufferPosition(n),o=r.pixelPositionForBufferPosition(n.traverse([0,1]))}catch(e){return void console.warn(e)}if(i.left>=o.left)return;const s=.7*t.getLineHeightInPixels(),a={left:e.clientX,right:e.clientX,top:e.clientY-s,bottom:e.clientY+s},c=await this.getMessage(t,n);this.cancelled||void 0!==c&&await this.showTooltip(a,c)}async getMessage(t,e){let n;const r=await this.getClient(t);if(!r)return;const i=t.getPath();try{if(void 0===i)return;n=await r.execute("quickinfo",{file:i,line:e.row+1,offset:e.column+1})}catch(t){return}return n.body}async showTooltip(t,e){this.view=new qc,document.body.appendChild(this.view.element),await this.view.update({...t,info:e})}}class Uc{constructor(t){this.getClientInternal=t,this.subscriptions=new h.CompositeDisposable,this.editorMap=new WeakMap,this.getClient=async t=>{const e=t.getPath();if(void 0!==e&&ue(t)&&S.existsSync(e))return this.getClientInternal(e)},this.clearExprTypeTimeout=()=>{void 0!==this.exprTypeTimeout&&(clearTimeout(this.exprTypeTimeout),this.exprTypeTimeout=void 0),this.hideExpressionType()},this.trackMouseMovement=t=>{let e;return n=>{const r=function(t,e){const n=atom.views.getView(t).getComponent().screenPositionForMouseEvent(e);if(!isNaN(n.row)&&!isNaN(n.column))return t.bufferPositionForScreenPosition(n)}(t,n);r&&(e&&e.isEqual(r)&&this.pendingTooltip||(e=r,this.clearExprTypeTimeout(),this.exprTypeTimeout=window.setTimeout((()=>this.showExpressionType(t,n,r)),atom.config.get("atom-typescript").tooltipDelay)))}},this.subscriptions.add(atom.workspace.observeTextEditors((t=>{const e=atom.views.getView(t),n=e.querySelector(".lines");this.editorMap.set(t,{rawView:e,lines:n});const r=new h.CompositeDisposable;r.add(zc(e,"mousemove",".scroll-view",this.trackMouseMovement(t)),zc(e,"mouseout",".scroll-view",this.clearExprTypeTimeout),zc(e,"keydown",".scroll-view",this.clearExprTypeTimeout),e.onDidChangeScrollTop(this.clearExprTypeTimeout),e.onDidChangeScrollLeft(this.clearExprTypeTimeout),t.onDidDestroy((()=>{r.dispose(),this.subscriptions.remove(r),this.clearExprTypeTimeout()}))),this.subscriptions.add(r)})))}dispose(){this.subscriptions.dispose(),this.clearExprTypeTimeout()}showExpressionAt(t){const e=t.getLastCursor().getBufferPosition(),n=atom.views.getView(t);let r;try{r=n.pixelPositionForBufferPosition(e)}catch(t){return void console.warn(t)}this.showExpressionType(t,this.mousePositionForPixelPosition(t,r),e)}mousePositionForPixelPosition(t,e){const n=atom.views.getView(t).querySelector(".lines").getBoundingClientRect();return{clientY:e.top+n.top+t.getLineHeightInPixels()/2,clientX:e.left+n.left}}showExpressionType(t,e,n){this.pendingTooltip&&this.pendingTooltip.dispose(),this.pendingTooltip=new Hc(this.getClient,t,e,n)}hideExpressionType(){this.pendingTooltip&&(this.pendingTooltip.dispose(),this.pendingTooltip=void 0)}}class $c{constructor(t){this.getClient=t,this.subscriptions=new d;const e=atom.workspace.paneForURI("atom-typescript://semantic-view");e&&(this.view=e.itemForURI("atom-typescript://semantic-view")),this.view&&Kt(this.view.setGetClient(this.getClient)),this.subscriptions.add(new v((()=>{this.view&&(atom.workspace.hide(this.view),Kt(this.view.destroy()))})),atom.config.observe("atom-typescript.showSemanticView",(t=>{t?Kt(this.show()):this.hide()})))}dispose(){this.subscriptions.dispose()}async toggle(){this.view?await atom.workspace.toggle(this.view):await this.show()}async show(){this.view||(this.view=be.create({navTree:null}),await this.view.setGetClient(this.getClient)),await atom.workspace.open(this.view,{searchAllPanes:!0})}hide(){return!!this.view&&atom.workspace.hide(this.view)}}class Vc{constructor(t){this.position=t.position,this.name=t.name,this.type=t.type,this.parent=t.parent,this.file=t.file}static fromNavTree(t,e){const n=t.spans[0].start;return new Vc({name:t.text,type:t.kind,position:{row:n.line-1,column:n.offset-1},parent:null!=e?e:null})}static fromNavto(t,e){const n=t.start;return new Vc({name:t.name,type:t.kind,position:{row:n.line-1,column:n.offset-1},parent:null!=e?e:null,file:t.file})}}async function Wc(t,e){const n=await async function(t,e){try{const n=await e.getClient(t);return(await n.execute("navtree",{file:t})).body}catch(e){console.error(t,e)}}(t,e);return n&&n.childItems?Array.from(Kc(n.childItems)):[]}async function Gc(t,e,n){const r=await async function(t,e,n){try{const r=await n.getClient(t);return(await r.execute("navto",{file:t,currentFileOnly:!1,searchValue:e,maxResultCount:1e3})).body}catch(e){console.error(t,e)}}(t,e,n);return r?Array.from(function*(t,e){for(const n of t)yield Vc.fromNavto(n,e)}(r)):[]}function*Kc(t,e){t.sort(((t,e)=>t.spans[0].start.line-e.spans[0].start.line));for(const n of t){const t=Vc.fromNavTree(n,e);yield t,n.childItems&&(yield*Kc(n.childItems,t))}}async function Qc(t,e,n){if(void 0!==t.file)return n(e,{file:t.file,start:{line:t.position.row+1,offset:t.position.column+1}})}async function Zc(t,e){const n=t.getPath();if(void 0!==n){let r;atom.config.get("symbols-view.quickJumpToFileSymbol")&&(r=function(t){const e=atom.views.getView(t).getScrollTop();return{bufferRanges:t.getSelectedBufferRanges(),scrollTop:e}}(t));const i=await ai({items:Wc(n,e),itemTemplate:({name:t,position:e},n)=>ft.dom("li",{className:"two-lines"},ft.dom("div",{className:"primary-line"},ft.dom(gr,{label:t,query:n.getFilterQuery()})),ft.dom("div",{className:"secondary-line"},"Line "+(e.row+1))),didChangeSelection(e){atom.config.get("symbols-view.quickJumpToFileSymbol")&&e&&t.setCursorBufferPosition(e.position)},itemFilterKey:"name"});i?await Qc(i,t,e.histGoForward):r&&function(t,{bufferRanges:e,scrollTop:n}){const r=atom.views.getView(t);t.setSelectedBufferRanges(e),r.setScrollTop(n)}(t,r)}}class Jc{constructor(t){this.deps=t}toggleFileView(t){Kt(Zc(t,this.deps))}toggleProjectView(t){Kt(async function(t,e){const n=t.getPath();if(void 0!==n){const r=await ai({items:t=>Gc(n,t,e),itemTemplate({name:t,position:e,file:n},r){const i=atom.project.relativize(n);return ft.dom("li",{className:"two-lines"},ft.dom("div",{className:"primary-line"},ft.dom(gr,{label:t,query:r.getFilterQuery()})),ft.dom("div",{className:"secondary-line"},`File ${i} line ${e.row+1}`))},itemFilterKey:"name"});r&&await Qc(r,t,e.histGoForward)}}(t,this.deps))}dispose(){}}class Yc{constructor(){this.errors=new Map,this.fileGrammars=new Map,this.pushErrors=Qt.debounce(this.pushErrors.bind(this),100)}*getErrorsInRange(t,e){for(const n of this.errors.values()){const r=n.get(w.normalize(t));r&&(yield*r.filter((t=>Xt(t).intersectsWith(e))))}}*getErrorsAt(t,e){for(const n of this.errors.values()){const r=n.get(w.normalize(t));r&&(yield*r.filter((t=>Xt(t).containsPoint(e))))}}setErrors(t,e,n){let r=this.errors.get(t);r||(r=new Map,this.errors.set(t,r)),r.set(w.normalize(e),n),this.pushErrors()}clearFileErrors(t){for(const e of this.errors.values())e.delete(t);this.pushErrors()}clear(){this.linter&&this.linter.clearMessages()}setLinter(t){this.linter=t,this.pushErrors()}dispose(){this.clear(),this.linter&&this.linter.dispose(),this.linter=void 0}pushErrors(){this.linter&&this.linter.setAllMessages(this.getLinterErrors())}getLinterErrors(){if(atom.config.get("atom-typescript.suppressAllDiagnostics"))return[];const t=[];for(const e of this.errors.values())for(const[n,r]of e){const e=atom.workspace.getTextEditors().find((t=>t.getPath()===n)),i=e?e.getGrammar().scopeName:this.selectGrammar(n);if(!Xc("suppressAllDiagnostics",i))for(const e of r){if(Xc("ignoredDiagnosticCodes",i).includes(""+e.code))continue;if(Xc("ignoreUnusedSuggestionDiagnostics",i)&&e.reportsUnnecessary)continue;if("suggestion"===e.category&&Xc("ignoredSuggestionDiagnostics",i).includes(""+e.code))continue;if(Xc("ignoreNonSuggestionSuggestionDiagnostics",i)&&"suggestion"===e.category&&!se(e.code,Zt.Suggestion))continue;let{start:r,end:o}=e;r&&o||(r=o={line:1,offset:1}),t.push({severity:this.getSeverity(Xc("unusedAsInfo",i),e),excerpt:e.text,location:{file:n,position:te(r,o)}})}}return t}selectGrammar(t){const e=this.fileGrammars.get(t);if(void 0!==e)return e;const n=atom.grammars.selectGrammar(t,"").scopeName;return this.fileGrammars.set(t,n),n}getSeverity(t,e){if(t&&6133===e.code)return"info";switch(e.category){case"error":return"error";case"warning":return"warning";default:return"info"}}}function Xc(t,e){return atom.config.get("atom-typescript."+t,{scope:[e]})}class tu{constructor(t,e){let n;this.buffer=t,this.deps=e,this.events=new h.Emitter,this.compileOnSave=!1,this.subscriptions=new h.CompositeDisposable,this.on=this.events.on.bind(this.events),this.dispose=()=>{this.subscriptions.dispose(),Kt(this.close())},this.init=async()=>{this.state&&(await this.state.client.execute("open",{file:this.state.filePath,fileContent:this.buffer.getText()}),Kt(this.getErr({allFiles:!1,delay:0})))},this.close=async()=>{if(await this.openPromise,this.state){const t=this.state.client,e=this.state.filePath;this.deps.clearFileErrors(e),this.state.subscriptions.dispose(),this.state=void 0,await t.execute("close",{file:e})}},this.onDidChangePath=t=>{Kt(this.close().then((()=>{this.openPromise=this.open(t)})))},this.onDidSave=async()=>{await Promise.all([this.getErr({allFiles:!0,delay:100}),this.doCompileOnSave()])},this.onDidChangeText=async({changes:t})=>{if(0===t.length||!this.state)return;const{client:e,filePath:n}=this.state;await Promise.all(t.reduceRight(((t,{oldRange:r,newText:i})=>(t.push(e.execute("change",{file:n,line:r.start.row+1,offset:r.start.column+1,endLine:r.end.row+1,endOffset:r.end.column+1,insertString:i})),t)),[]))},this.subscriptions.add(atom.config.observe("atom-typescript.getErrDebounceTimeout",(t=>{n=Qt.debounce((()=>{Kt(this.getErr({allFiles:!1,delay:0}))}),t)})),t.onDidChangePath(this.onDidChangePath),t.onDidDestroy(this.dispose),t.onDidSave((()=>{Kt(this.onDidSave())})),t.onDidStopChanging((({changes:t})=>{t.length>0&&this.deps.reportBuildStatus(void 0)})),t.onDidChangeText((t=>{Kt(this.onDidChangeText(t)),n()}))),this.openPromise=this.open(this.buffer.getPath())}static create(t,e){const n=tu.bufferMap.get(t);if(n)return n;{const n=new tu(t,e);return tu.bufferMap.set(t,n),n}}getPath(){return this.state&&this.state.filePath}getInfo(){if(this.state)return{clientVersion:this.state.client.version,tsConfigPath:this.state.configFile&&this.state.configFile.getPath()}}async getErr(t){if(!this.state)return;const e=t.allFiles?Array.from(function*(){for(const t of atom.workspace.getTextEditors())ue(t)&&(yield t.getPath())}()):[this.state.filePath];await this.state.client.execute("geterr",{files:e,delay:t.delay})}async compile(){if(!this.state)return;const{client:t,filePath:e}=this.state,n=await t.execute("compileOnSaveAffectedFileList",{file:e}),r=Qt.flatten(n.body.map((t=>t.fileNames)));if(0===r.length)return;const i=r.map((e=>t.execute("compileOnSaveEmitFile",{file:e})));if(!(await Promise.all(i)).every((t=>!!t.body)))throw new Error("Some files failed to emit")}async doCompileOnSave(){if(this.compileOnSave){this.deps.reportBuildStatus(void 0);try{await this.compile(),this.deps.reportBuildStatus({success:!0})}catch(t){const e=t;console.error("Save failed with error",e),this.deps.reportBuildStatus({success:!1,message:e.message})}}}async open(t){if(void 0===t||!ae(t))return this.close();{const e=await this.deps.getClient(t);this.state={client:e,filePath:t,configFile:void 0,subscriptions:new h.CompositeDisposable},this.state.subscriptions.add(e.on("restarted",(()=>Kt(this.init())))),await this.init();const n=await e.execute("projectInfo",{needFileNameList:!1,file:t});void 0!==n.body.configFileName&&(this.state.configFile=new h.File(n.body.configFileName),await this.readConfigFile(),this.state.subscriptions.add(this.state.configFile.onDidChange((()=>Kt(this.readConfigFile()))))),this.events.emit("opened")}}async readConfigFile(){if(!this.state||!this.state.configFile)return;const t=ee(this.state.configFile.getPath());this.compileOnSave=t.compileOnSave;const e=atom.config.get("atom-typescript");await this.state.client.execute("configure",{file:this.state.filePath,formatOptions:t.formatCodeOptions,preferences:{includeCompletionsWithInsertText:!0,includeCompletionsForModuleExports:e.includeCompletionsForModuleExports,quotePreference:e.quotePreference,importModuleSpecifierEnding:e.importModuleSpecifierEnding,importModuleSpecifierPreference:e.importModuleSpecifierPreference,...t.preferences}})}}tu.bufferMap=new WeakMap;class eu{constructor(t,e){this.editor=t,this.opts=e,this.subscriptions=new d,this.isTypescript=!1,this.destroy=()=>{atom.views.getView(this.editor).classList.remove("typescript-editor"),this.subscriptions.dispose()},this.didActivate=()=>{this.isTypescript&&this.reportInfo()},this.onOpened=()=>{atom.workspace.getActiveTextEditor()===this.editor&&this.reportInfo()},this.checkIfTypescript=()=>{this.isTypescript=ue(this.editor),this.isTypescript?atom.views.getView(this.editor).classList.add("typescript-editor"):atom.views.getView(this.editor).classList.remove("typescript-editor")},this.buffer=tu.create(t.getBuffer(),e),this.subscriptions.add(this.buffer.on("opened",this.onOpened)),this.checkIfTypescript(),this.subscriptions.add(t.onDidChangePath(this.checkIfTypescript),t.onDidChangeGrammar(this.checkIfTypescript),t.onDidDestroy(this.destroy),t.onDidSave((()=>{atom.config.get("atom-typescript.checkAllFilesOnSave")&&atom.commands.dispatch(atom.views.getView(t),"typescript:check-all-files")})))}static createFactory(t){return e=>{let n=eu.editorMap.get(e);return n||(n=new eu(e,t),eu.editorMap.set(e,n)),n}}static lookupPane(t){return eu.editorMap.get(t)}reportInfo(){const t=this.buffer.getInfo();t&&this.opts.reportClientInfo(t)}}eu.editorMap=new WeakMap;class nu{constructor(t){this.usingBuiltinTooltipManager=!0,this.usingBuiltinSigHelpManager=!0,this.pending=new Set,this.clearErrors=()=>{this.errorPusher.clear()},this.clearFileErrors=t=>{this.errorPusher.clearFileErrors(t)},this.getClient=async t=>this.clientResolver.get(t),this.killAllServers=()=>{Kt(this.clientResolver.restartAllServers())},this.withBuffer=async(t,e)=>{const n=w.normalize(t),r=atom.workspace.getTextEditors().find((t=>t.getPath()===n));if(r)return e(r.getBuffer());const i=await h.TextBuffer.load(n);try{return await e(i)}finally{i.isModified()&&await i.save(),i.destroy()}},this.reportBusyWhile=async(t,e)=>{if(this.busySignalService)return this.busySignalService.reportBusyWhile(t,e);{const n={title:t};try{return this.pending.add(n),this.drawPending(Array.from(this.pending)),await e()}finally{this.pending.delete(n),this.drawPending(Array.from(this.pending))}}},this.reportProgress=t=>{Kt(this.statusPanel.update({progress:t}))},this.reportBuildStatus=t=>{Kt(this.statusPanel.update({buildStatus:t}))},this.reportClientInfo=t=>{Kt(this.statusPanel.update(t))},this.applyEdits=async t=>{Promise.all(t.map((t=>this.withBuffer(t.fileName,(async e=>{e.transact((()=>{const n=t.textChanges.map((t=>({range:Xt(t),newText:t.newText}))).reverse().sort(((t,e)=>e.range.compare(t.range)));for(const t of n)e.setTextInRange(t.range,t.newText)}))})))))},this.showTooltipAt=async t=>{this.usingBuiltinTooltipManager?this.tooltipManager.showExpressionAt(t):await atom.commands.dispatch(atom.views.getView(t),"datatip:toggle")},this.showSigHelpAt=async t=>{this.usingBuiltinSigHelpManager?await this.sigHelpManager.showTooltipAt(t):await atom.commands.dispatch(atom.views.getView(t),"signature-help:show")},this.hideSigHelpAt=t=>!!this.usingBuiltinSigHelpManager&&this.sigHelpManager.hideTooltipAt(t),this.rotateSigHelp=(t,e)=>!!this.usingBuiltinSigHelpManager&&this.sigHelpManager.rotateSigHelp(t,e),this.histGoForward=(t,e)=>this.editorPosHist.goForward(t,e),this.drawPending=Qt.throttle((t=>Kt(this.statusPanel.update({pending:t}))),100,{leading:!1}),this.subscriptions=new d,this.clientResolver=new zn(this.reportBusyWhile),this.subscriptions.add(this.clientResolver),this.statusPanel=new jc,this.subscriptions.add(this.statusPanel),this.errorPusher=new Yc,this.subscriptions.add(this.errorPusher),this.codefixProvider=new Ti(this.clientResolver,this.errorPusher,this.applyEdits),this.subscriptions.add(this.codefixProvider),this.semanticViewController=new $c(this.getClient),this.subscriptions.add(this.semanticViewController),this.editorPosHist=new Nc(t&&t.editorPosHistState),this.subscriptions.add(this.editorPosHist),this.symbolsViewController=new Jc({histGoForward:this.histGoForward,getClient:this.getClient}),this.subscriptions.add(this.symbolsViewController),this.tooltipManager=new Uc(this.getClient),this.subscriptions.add(this.tooltipManager),this.sigHelpManager=new Bc({getClient:this.getClient}),this.subscriptions.add(this.sigHelpManager),this.occurrenceManager=new Lc(this.getClient),this.subscriptions.add(this.occurrenceManager),this.typescriptPaneFactory=eu.createFactory({clearFileErrors:this.clearFileErrors,getClient:this.getClient,reportBuildStatus:this.reportBuildStatus,reportClientInfo:this.reportClientInfo}),this.subscribeEditors(),this.subscriptions.add(Tc({getClient:this.getClient,applyEdits:this.applyEdits,clearErrors:this.clearErrors,killAllServers:this.killAllServers,reportProgress:this.reportProgress,reportBuildStatus:this.reportBuildStatus,toggleSemanticViewController:()=>{Kt(this.semanticViewController.toggle())},toggleFileSymbolsView:t=>{this.symbolsViewController.toggleFileView(t)},toggleProjectSymbolsView:t=>{this.symbolsViewController.toggleProjectView(t)},histGoForward:this.histGoForward,histGoBack:()=>this.editorPosHist.goBack(),histShowHistory:()=>this.editorPosHist.showHistory(),showTooltipAt:this.showTooltipAt,showSigHelpAt:this.showSigHelpAt,hideSigHelpAt:this.hideSigHelpAt,rotateSigHelp:this.rotateSigHelp}))}destroy(){this.subscriptions.dispose();for(const t of atom.workspace.getTextEditors()){const e=eu.lookupPane(t);e&&e.destroy()}}serialize(){return{version:"0.1",editorPosHistState:this.editorPosHist.serialize()}}consumeLinter(t){const e=t({name:"TypeScript"});this.errorPusher.setLinter(e),this.subscriptions.add(this.clientResolver.on("diagnostics",(({type:t,filePath:e,diagnostics:n})=>{this.errorPusher.setErrors(t,e,n)})))}consumeStatusBar(t){let e=100;for(const n of t.getRightTiles())"GRAMMAR-SELECTOR-STATUS"===atom.views.getView(n.getItem()).tagName&&(e=n.getPriority()-1);const n=t.addRightTile({item:this.statusPanel,priority:e}),r=new h.Disposable((()=>{n.destroy()}));return this.subscriptions.add(r),r}consumeDatatipService(t){if(atom.config.get("atom-typescript").preferBuiltinTooltips)return;const e=t.addProvider(new Zn(this.getClient));return this.subscriptions.add(e),this.tooltipManager.dispose(),this.usingBuiltinTooltipManager=!1,e}consumeSigHelpService(t){if(atom.config.get("atom-typescript").preferBuiltinSigHelp)return;const e=new mi(this.getClient),n=t(e);return this.subscriptions.add(n,e),this.sigHelpManager.dispose(),this.usingBuiltinSigHelpManager=!1,n}consumeBusySignal(t){if(atom.config.get("atom-typescript").preferBuiltinBusySignal)return;this.busySignalService=t;const e={dispose:()=>{this.busySignalService&&this.busySignalService.dispose(),this.busySignalService=void 0}};return this.subscriptions.add(e),e}provideAutocomplete(){return[new vi(this.getClient,this.applyEdits)]}provideIntentions(){return t=this.codefixProvider,{grammarScopes:["*"],getIntentions:async({bufferPosition:e,textEditor:n})=>(await t.runCodeFix(n,e)).map((e=>({priority:100,title:"description"in e?e.description:e.actionDescription,selected:()=>{Kt(t.applyFix(e))}})))};var t}provideIntentionsHighlight(){return t=this.codefixProvider,{grammarScopes:["*"],getIntentions:async({visibleRange:e,textEditor:n})=>(await t.getFixableRanges(n,e)).map((t=>({range:t,created:t=>{}})))};var t}provideCodeActions(){return t=this.codefixProvider,{grammarScopes:ce(),priority:0,getCodeActions:async(e,n,r)=>(await t.runCodeFix(e,n.start)).map((e=>({getTitle:async()=>"description"in e?e.description:e.actionDescription,dispose:()=>{},apply:async()=>{await t.applyFix(e)}})))};var t}provideHyperclick(){return t=this.getClient,e=this.histGoForward,{priority:0,providerName:"typescript-hyperclick-provider",wordRegExp:/([A-Za-z0-9_])+|['"`](\\.|[^'"`\\\\])*['"`]/g,async getSuggestionForWord(n,r,i){if(!ue(n))return;const o=n.getPath();return void 0!==o?{range:i,callback:async()=>{var r;const s={file:o,line:i.start.row+1,offset:i.start.column+1},a=await t(s.file),c=await a.execute("definition",s),u=c.body?c.body[0]:void 0;if(1===(null===(r=c.body)||void 0===r?void 0:r.length)&&(null==u?void 0:u.start.line)===s.line&&(null==u?void 0:u.start.offset)===s.offset){const t=await a.execute("references",s);await li(t,n,e)}else await fi(c,n,e)}}:void 0}};var t,e}provideReferences(){return t=this.getClient,{isEditorSupported:async t=>ue(t),async findReferences(e,n){const r=fe(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("references",r);return o.body?{type:"data",baseUri:r.file,referencedSymbolName:o.body.symbolDisplayString,references:o.body.refs.map(tr)}:void 0}};var t}provideOutlines(){return t=this.getClient,{name:"Atom-TypeScript",grammarScopes:ce(),priority:100,updateOnEdit:!0,async getOutline(e){const n=e.getPath();if(void 0===n)return;const r=await t(n),i=(await r.execute("navtree",{file:n})).body;return i?{outlineTrees:[pi(i)]}:void 0}};var t}provideDefinitions(){var t;if(!atom.config.get("atom-typescript").disableAtomIdeDefinitions)return t=this.getClient,{priority:0,grammarScopes:ce(),wordRegExp:/([A-Za-z0-9_])+|['"`](\\.|[^'"`\\\\])*['"`]/g,async getDefinition(e,n){if(!ue(e))return;const r=fe(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("definition",r);return o.body&&0!==o.body.length?{queryRange:void 0,definitions:o.body.map(Xn)}:void 0}}}provideCodeHighlight(){if(!atom.config.get("atom-typescript").preferBuiltinOccurrenceHighlight)return this.occurrenceManager.dispose(),qn(this.getClient)}subscribeEditors(){this.subscriptions.add(atom.workspace.observeTextEditors((t=>{this.typescriptPaneFactory(t)})),atom.workspace.onDidChangeActiveTextEditor((t=>{if(t&&ue(t)){Kt(this.statusPanel.show());const e=eu.lookupPane(t);e&&e.didActivate()}else Kt(this.statusPanel.hide())})))}}let ru;var iu=C(ft);exports.activate=function(t){iu.setScheduler(atom.views),ru=new nu(t),setImmediate((()=>Kt(async function(){["atom-ide-ui","linter","nuclide"].some((t=>atom.packages.isPackageLoaded(t)))||await P.install("atom-typescript",!0)}())))},exports.deactivate=function(){ru&&ru.destroy(),ru=void 0},exports.serialize=function(){return ru?ru.serialize():void 0},exports.deserializeSemanticView=function(t){return be.create(t.data)},exports.consumeLinter=function(t){if(ru)return ru.consumeLinter(t)},exports.consumeStatusBar=function(t){if(ru)return ru.consumeStatusBar(t)},exports.consumeDatatipService=function(t){if(ru)return ru.consumeDatatipService(t)},exports.consumeSignatureHelp=function(t){if(ru)return ru.consumeSigHelpService(t)},exports.consumeBusySignal=function(t){if(ru)return ru.consumeBusySignal(t)},exports.provideAutocomplete=function(){if(ru)return ru.provideAutocomplete()},exports.provideIntentions=function(){if(ru)return ru.provideIntentions()},exports.provideIntentionsHighlight=function(){if(ru)return ru.provideIntentionsHighlight()},exports.provideCodeActions=function(){if(ru)return ru.provideCodeActions()},exports.provideHyperclick=function(){if(ru)return ru.provideHyperclick()},exports.provideReferences=function(){if(ru)return ru.provideReferences()},exports.provideOutlines=function(){if(ru)return ru.provideOutlines()},exports.provideDefinitions=function(){if(ru)return ru.provideDefinitions()},exports.provideCodeHighlight=function(){if(ru)return ru.provideCodeHighlight()}; //# sourceMappingURL=main.js.map diff --git a/dist/main.js.map b/dist/main.js.map index a28f8c164..c84716fe1 100644 --- a/dist/main.js.map +++ b/dist/main.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./node_modules/atom-package-deps/lib/index.js","./node_modules/atom-package-deps/lib/index-6660c169.js","./node_modules/@parcel/runtime-js/lib/JSRuntime.js","./node_modules/etch/lib/event-listener-props.js","./node_modules/etch/lib/dom.js","./node_modules/etch/lib/svg-tags.js","./node_modules/etch/lib/svg-attribute-translations.js","./node_modules/etch/lib/update-props.js","./node_modules/etch/lib/render.js","./node_modules/etch/lib/update-ref.js","./node_modules/etch/lib/patch.js","./node_modules/etch/lib/default-scheduler.js","./node_modules/etch/lib/scheduler-assignment.js","./node_modules/etch/lib/component-helpers.js","./node_modules/etch/lib/index.js","./lib/utils.ts","./node_modules/lodash/lodash.js","./lib/main/atom/utils/ts.ts","./lib/main/atom/utils/atom.ts","./lib/main/atom/views/outline/navTreeUtils.ts","./lib/main/atom/views/outline/navigationNodeComponent.tsx","./lib/main/atom/views/outline/navigationTreeComponent.tsx","./lib/main/atom/views/outline/semanticView.ts","./node_modules/byline/lib/byline.js","./lib/client/callbacks.ts","./lib/client/client.ts","./node_modules/jsonc-parser/lib/esm/impl/parser.js","./node_modules/jsonc-parser/lib/esm/impl/scanner.js","./node_modules/jsonc-parser/lib/esm/main.js","./node_modules/resolve/lib/async.js","./node_modules/resolve/lib/caller.js","./node_modules/path-parse/index.js","./node_modules/resolve/lib/node-modules-paths.js","./node_modules/resolve/lib/normalize-options.js","./node_modules/resolve/lib/core.js","./node_modules/resolve/lib/core.json","./node_modules/resolve/lib/is-core.js","./node_modules/resolve/index.js","./node_modules/resolve/lib/sync.js","./lib/client/resolveBinary.ts","./lib/client/clientResolver.ts","./lib/main/atom-ide/codeHighlightProvider.ts","./lib/main/atom/tooltips/tooltipRenderer.tsx","./lib/main/atom-ide/datatipProvider.tsx","./lib/main/atom-ide/definitionsProvider.ts","./lib/main/atom-ide/findReferencesProvider.ts","./lib/main/atom/components/tsView.tsx","./node_modules/fuzzaldrin/lib/scorer.js","./node_modules/fuzzaldrin/lib/filter.js","./node_modules/fuzzaldrin/lib/matcher.js","./node_modules/fuzzaldrin/lib/fuzzaldrin.js","./lib/main/atom/views/highlightComponent.tsx","./node_modules/atom-select-list/src/select-list-view.js","./node_modules/atom-select-list/node_modules/etch/lib/event-listener-props.js","./node_modules/atom-select-list/node_modules/etch/lib/dom.js","./node_modules/atom-select-list/node_modules/etch/lib/svg-tags.js","./node_modules/atom-select-list/node_modules/etch/lib/svg-attribute-translations.js","./node_modules/atom-select-list/node_modules/etch/lib/update-props.js","./node_modules/atom-select-list/node_modules/etch/lib/render.js","./node_modules/atom-select-list/node_modules/etch/lib/patch.js","./node_modules/atom-select-list/node_modules/etch/lib/default-scheduler.js","./node_modules/atom-select-list/node_modules/etch/lib/scheduler-assignment.js","./node_modules/atom-select-list/node_modules/etch/lib/component-helpers.js","./node_modules/atom-select-list/node_modules/etch/lib/index.js","./lib/main/atom/views/simpleSelectionView.tsx","./lib/main/atom/commands/registry.ts","./lib/main/atom/commands/findReferences.tsx","./lib/main/atom/commands/goToDeclaration.tsx","./lib/main/atom-ide/outlineProvider.ts","./lib/main/atom-ide/sigHelpProvider.ts","./lib/main/atom/codeActionTemplate.tsx","./lib/main/atom/autoCompleteProvider.ts","./lib/main/atom/commands/refactorCode.tsx","./lib/main/atom/codefix/codefixProvider.ts","./lib/main/atom/commands/initializeConfig.ts","./lib/main/atom/commands/build.ts","./lib/main/atom/commands/checkAllFiles.ts","./lib/main/atom/commands/clearErrors.ts","./lib/main/atom/commands/formatCode.ts","./lib/main/atom/commands/organizeImports.ts","./lib/main/atom/commands/reloadProjects.ts","./node_modules/underscore-plus/node_modules/underscore/underscore.js","./node_modules/underscore-plus/lib/underscore-plus.js","./node_modules/async/lib/async.js","./node_modules/mkdirp/index.js","./node_modules/fs.realpath/old.js","./node_modules/fs.realpath/index.js","./node_modules/concat-map/index.js","./node_modules/balanced-match/index.js","./node_modules/brace-expansion/index.js","./node_modules/minimatch/minimatch.js","./node_modules/inherits/inherits_browser.js","./node_modules/path-is-absolute/index.js","./node_modules/rimraf/node_modules/glob/common.js","./node_modules/rimraf/node_modules/glob/sync.js","./node_modules/wrappy/wrappy.js","./node_modules/once/once.js","./node_modules/inflight/inflight.js","./node_modules/rimraf/node_modules/glob/glob.js","./node_modules/rimraf/rimraf.js","./node_modules/fs-plus/lib/fs-plus.js","./lib/main/atom/components/miniEditor.ts","./lib/main/atom/views/renameView.tsx","./lib/main/atom/commands/index.ts","./lib/main/atom/commands/renameFile.ts","./lib/main/atom/commands/renameRefactor.ts","./lib/main/atom/commands/restartAllServers.ts","./lib/main/atom/commands/returnFromDeclaration.tsx","./lib/main/atom/commands/semanticView.ts","./lib/main/atom/commands/showTooltip.ts","./lib/main/atom/commands/sigHelp.ts","./lib/main/atom/commands/symbolsView.ts","./lib/main/atom/components/statusPanel/tooltip.tsx","./lib/main/atom/components/statusPanel/buildStatus.tsx","./lib/main/atom/components/statusPanel/configPath.tsx","./lib/main/atom/components/statusPanel/index.tsx","./lib/main/atom/editorPositionHistoryManager.tsx","./lib/main/atom/occurrence/controller.ts","./lib/main/atom/occurrence/manager.ts","./lib/main/atom/tooltips/util.ts","./lib/main/atom/sigHelp/tooltipView.tsx","./lib/main/atom/sigHelp/controller.ts","./lib/main/atom/sigHelp/manager.ts","./lib/main/atom/utils/element-listener.ts","./lib/main/atom/tooltips/tooltipView.tsx","./lib/main/atom/tooltips/controller.ts","./lib/main/atom/tooltips/manager.ts","./lib/main/atom/views/outline/semanticViewController.ts","./lib/main/atom/views/symbols/symbolsTag.ts","./lib/main/atom/views/symbols/generator.ts","./lib/main/atom/views/symbols/utils.ts","./lib/main/atom/views/symbols/fileSymbolsView.tsx","./lib/main/atom/views/symbols/symbolsViewController.ts","./lib/main/atom/views/symbols/projectSymbolsView.tsx","./lib/main/errorPusher.ts","./lib/main/typescriptBuffer.ts","./lib/main/typescriptEditorPane.ts","./lib/main/pluginManager.ts","./lib/main/atom/codefix/intentionsProvider.ts","./lib/main/atom-ide/codeActionsProvider.ts","./lib/main/atom-ide/hyperclickProvider.ts","./lib/main/atomts.ts"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),require(\"assert\");var e=require(\"./index-6660c169.js\");require(\"fs\"),require(\"util\"),require(\"path\"),exports.install=e.installDependencies;\n//# sourceMappingURL=index.js.map\n","\"use strict\";function e(e){return e&&\"object\"==typeof e&&\"default\"in e?e.default:e}var r=e(require(\"assert\")),t=e(require(\"fs\")),s=e(require(\"util\")),i=e(require(\"path\"));function o(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}function n(e,r,t){return e(t={path:r,exports:{},require:function(e,r){return function(){throw new Error(\"Dynamic requires are not currently supported by @rollup/plugin-commonjs\")}(null==r&&t.path)}},t.exports),t.exports}var a=n((function(e,r){e.exports=function(e){for(var r=0;r{if(!Buffer.isBuffer(e))throw new TypeError(\"Expected a Buffer, got \"+typeof e);return 239===e[0]&&187===e[1]&&191===e[2]&&a(e)?e.slice(3):e},l=o(n((function(e){var r=o(t),i=o(E);function o(e){return e&&e.__esModule?e:{default:e}}const n={},a=[\"Stats\",\"_toUnixTimestamp\",\"watch\",\"watchFile\",\"unwatchFile\"];Object.keys(r.default).forEach((function(e){const t=r.default[e];\"function\"!=typeof t||e.includes(\"Sync\")||e.includes(\"Stream\")||a.includes(e)?n[e]=t:n[e]=(0,s.promisify)(t)})),n.exists=function(e){return new Promise((function(t){r.default.access(e,r.default.R_OK,(function(e){t(null===e)}))}))},n.readFile=function(e,t){return new Promise((function(s,o){r.default.readFile(e,(function(e,r){if(e)return void o(e);let n=(0,i.default)(r);t&&(n=n.toString(t)),s(n)}))}))},e.exports=n})));var p={SEMVER_SPEC_VERSION:\"2.0.0\",MAX_LENGTH:256,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,MAX_SAFE_COMPONENT_LENGTH:16};var c=\"object\"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\\bsemver\\b/i.test(process.env.NODE_DEBUG)?(...e)=>{}:()=>{},h=n((function(e,r){const{MAX_SAFE_COMPONENT_LENGTH:t}=p,s=(r=e.exports={}).re=[],i=r.src=[],o=r.t={};let n=0;const a=(e,r,t)=>{const a=n++;c(a,r),o[e]=a,i[a]=r,s[a]=new RegExp(r,t?\"g\":void 0)};a(\"NUMERICIDENTIFIER\",\"0|[1-9]\\\\d*\"),a(\"NUMERICIDENTIFIERLOOSE\",\"[0-9]+\"),a(\"NONNUMERICIDENTIFIER\",\"\\\\d*[a-zA-Z-][a-zA-Z0-9-]*\"),a(\"MAINVERSION\",`(${i[o.NUMERICIDENTIFIER]})\\\\.(${i[o.NUMERICIDENTIFIER]})\\\\.(${i[o.NUMERICIDENTIFIER]})`),a(\"MAINVERSIONLOOSE\",`(${i[o.NUMERICIDENTIFIERLOOSE]})\\\\.(${i[o.NUMERICIDENTIFIERLOOSE]})\\\\.(${i[o.NUMERICIDENTIFIERLOOSE]})`),a(\"PRERELEASEIDENTIFIER\",`(?:${i[o.NUMERICIDENTIFIER]}|${i[o.NONNUMERICIDENTIFIER]})`),a(\"PRERELEASEIDENTIFIERLOOSE\",`(?:${i[o.NUMERICIDENTIFIERLOOSE]}|${i[o.NONNUMERICIDENTIFIER]})`),a(\"PRERELEASE\",`(?:-(${i[o.PRERELEASEIDENTIFIER]}(?:\\\\.${i[o.PRERELEASEIDENTIFIER]})*))`),a(\"PRERELEASELOOSE\",`(?:-?(${i[o.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${i[o.PRERELEASEIDENTIFIERLOOSE]})*))`),a(\"BUILDIDENTIFIER\",\"[0-9A-Za-z-]+\"),a(\"BUILD\",`(?:\\\\+(${i[o.BUILDIDENTIFIER]}(?:\\\\.${i[o.BUILDIDENTIFIER]})*))`),a(\"FULLPLAIN\",`v?${i[o.MAINVERSION]}${i[o.PRERELEASE]}?${i[o.BUILD]}?`),a(\"FULL\",`^${i[o.FULLPLAIN]}$`),a(\"LOOSEPLAIN\",`[v=\\\\s]*${i[o.MAINVERSIONLOOSE]}${i[o.PRERELEASELOOSE]}?${i[o.BUILD]}?`),a(\"LOOSE\",`^${i[o.LOOSEPLAIN]}$`),a(\"GTLT\",\"((?:<|>)?=?)\"),a(\"XRANGEIDENTIFIERLOOSE\",i[o.NUMERICIDENTIFIERLOOSE]+\"|x|X|\\\\*\"),a(\"XRANGEIDENTIFIER\",i[o.NUMERICIDENTIFIER]+\"|x|X|\\\\*\"),a(\"XRANGEPLAIN\",`[v=\\\\s]*(${i[o.XRANGEIDENTIFIER]})(?:\\\\.(${i[o.XRANGEIDENTIFIER]})(?:\\\\.(${i[o.XRANGEIDENTIFIER]})(?:${i[o.PRERELEASE]})?${i[o.BUILD]}?)?)?`),a(\"XRANGEPLAINLOOSE\",`[v=\\\\s]*(${i[o.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${i[o.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${i[o.XRANGEIDENTIFIERLOOSE]})(?:${i[o.PRERELEASELOOSE]})?${i[o.BUILD]}?)?)?`),a(\"XRANGE\",`^${i[o.GTLT]}\\\\s*${i[o.XRANGEPLAIN]}$`),a(\"XRANGELOOSE\",`^${i[o.GTLT]}\\\\s*${i[o.XRANGEPLAINLOOSE]}$`),a(\"COERCE\",`(^|[^\\\\d])(\\\\d{1,${t}})(?:\\\\.(\\\\d{1,${t}}))?(?:\\\\.(\\\\d{1,${t}}))?(?:$|[^\\\\d])`),a(\"COERCERTL\",i[o.COERCE],!0),a(\"LONETILDE\",\"(?:~>?)\"),a(\"TILDETRIM\",`(\\\\s*)${i[o.LONETILDE]}\\\\s+`,!0),r.tildeTrimReplace=\"$1~\",a(\"TILDE\",`^${i[o.LONETILDE]}${i[o.XRANGEPLAIN]}$`),a(\"TILDELOOSE\",`^${i[o.LONETILDE]}${i[o.XRANGEPLAINLOOSE]}$`),a(\"LONECARET\",\"(?:\\\\^)\"),a(\"CARETTRIM\",`(\\\\s*)${i[o.LONECARET]}\\\\s+`,!0),r.caretTrimReplace=\"$1^\",a(\"CARET\",`^${i[o.LONECARET]}${i[o.XRANGEPLAIN]}$`),a(\"CARETLOOSE\",`^${i[o.LONECARET]}${i[o.XRANGEPLAINLOOSE]}$`),a(\"COMPARATORLOOSE\",`^${i[o.GTLT]}\\\\s*(${i[o.LOOSEPLAIN]})$|^$`),a(\"COMPARATOR\",`^${i[o.GTLT]}\\\\s*(${i[o.FULLPLAIN]})$|^$`),a(\"COMPARATORTRIM\",`(\\\\s*)${i[o.GTLT]}\\\\s*(${i[o.LOOSEPLAIN]}|${i[o.XRANGEPLAIN]})`,!0),r.comparatorTrimReplace=\"$1$2$3\",a(\"HYPHENRANGE\",`^\\\\s*(${i[o.XRANGEPLAIN]})\\\\s+-\\\\s+(${i[o.XRANGEPLAIN]})\\\\s*$`),a(\"HYPHENRANGELOOSE\",`^\\\\s*(${i[o.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${i[o.XRANGEPLAINLOOSE]})\\\\s*$`),a(\"STAR\",\"(<|>)?=?\\\\s*\\\\*\"),a(\"GTE0\",\"^\\\\s*>=\\\\s*0.0.0\\\\s*$\"),a(\"GTE0PRE\",\"^\\\\s*>=\\\\s*0.0.0-0\\\\s*$\")}));const u=/^[0-9]+$/,$=(e,r)=>{const t=u.test(e),s=u.test(r);return t&&s&&(e=+e,r=+r),e===r?0:t&&!s?-1:s&&!t?1:e$(r,e)};const{MAX_LENGTH:R,MAX_SAFE_INTEGER:f}=p,{re:N,t:m}=h,{compareIdentifiers:O}=I;class L{constructor(e,r){if(r&&\"object\"==typeof r||(r={loose:!!r,includePrerelease:!1}),e instanceof L){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(\"string\"!=typeof e)throw new TypeError(\"Invalid Version: \"+e);if(e.length>R)throw new TypeError(`version is longer than ${R} characters`);c(\"SemVer\",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;const t=e.trim().match(r.loose?N[m.LOOSE]:N[m.FULL]);if(!t)throw new TypeError(\"Invalid Version: \"+e);if(this.raw=e,this.major=+t[1],this.minor=+t[2],this.patch=+t[3],this.major>f||this.major<0)throw new TypeError(\"Invalid major version\");if(this.minor>f||this.minor<0)throw new TypeError(\"Invalid minor version\");if(this.patch>f||this.patch<0)throw new TypeError(\"Invalid patch version\");t[4]?this.prerelease=t[4].split(\".\").map(e=>{if(/^[0-9]+$/.test(e)){const r=+e;if(r>=0&&r=0;)\"number\"==typeof this.prerelease[e]&&(this.prerelease[e]++,e=-2);-1===e&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(\"invalid increment argument: \"+e)}return this.format(),this.raw=this.version,this}}var T=L;var A=(e,r,t)=>new T(e,t).compare(new T(r,t));var v=(e,r,t)=>0===A(e,r,t);var d=(e,r,t)=>0!==A(e,r,t);var S=(e,r,t)=>A(e,r,t)>0;var P=(e,r,t)=>A(e,r,t)>=0;var w=(e,r,t)=>A(e,r,t)<0;var g=(e,r,t)=>A(e,r,t)<=0;var D=(e,r,t,s)=>{switch(r){case\"===\":return\"object\"==typeof e&&(e=e.version),\"object\"==typeof t&&(t=t.version),e===t;case\"!==\":return\"object\"==typeof e&&(e=e.version),\"object\"==typeof t&&(t=t.version),e!==t;case\"\":case\"=\":case\"==\":return v(e,t,s);case\"!=\":return d(e,t,s);case\">\":return S(e,t,s);case\">=\":return P(e,t,s);case\"<\":return w(e,t,s);case\"<=\":return g(e,t,s);default:throw new TypeError(\"Invalid operator: \"+r)}};const y=Symbol(\"SemVer ANY\");class G{static get ANY(){return y}constructor(e,r){if(r&&\"object\"==typeof r||(r={loose:!!r,includePrerelease:!1}),e instanceof G){if(e.loose===!!r.loose)return e;e=e.value}c(\"comparator\",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===y?this.value=\"\":this.value=this.operator+this.semver.version,c(\"comp\",this)}parse(e){const r=this.options.loose?C[F.COMPARATORLOOSE]:C[F.COMPARATOR],t=e.match(r);if(!t)throw new TypeError(\"Invalid comparator: \"+e);this.operator=void 0!==t[1]?t[1]:\"\",\"=\"===this.operator&&(this.operator=\"\"),t[2]?this.semver=new T(t[2],this.options.loose):this.semver=y}toString(){return this.value}test(e){if(c(\"Comparator.test\",e,this.options.loose),this.semver===y||e===y)return!0;if(\"string\"==typeof e)try{e=new T(e,this.options)}catch(e){return!1}return D(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof G))throw new TypeError(\"a Comparator is required\");if(r&&\"object\"==typeof r||(r={loose:!!r,includePrerelease:!1}),\"\"===this.operator)return\"\"===this.value||new j(e.value,r).test(this.value);if(\"\"===e.operator)return\"\"===e.value||new j(this.value,r).test(e.semver);const t=!(\">=\"!==this.operator&&\">\"!==this.operator||\">=\"!==e.operator&&\">\"!==e.operator),s=!(\"<=\"!==this.operator&&\"<\"!==this.operator||\"<=\"!==e.operator&&\"<\"!==e.operator),i=this.semver.version===e.semver.version,o=!(\">=\"!==this.operator&&\"<=\"!==this.operator||\">=\"!==e.operator&&\"<=\"!==e.operator),n=D(this.semver,\"<\",e.semver,r)&&(\">=\"===this.operator||\">\"===this.operator)&&(\"<=\"===e.operator||\"<\"===e.operator),a=D(this.semver,\">\",e.semver,r)&&(\"<=\"===this.operator||\"<\"===this.operator)&&(\">=\"===e.operator||\">\"===e.operator);return t||s||i&&o||n||a}}var M=G;const{re:C,t:F}=h;class _{constructor(e,r){if(r&&\"object\"==typeof r||(r={loose:!!r,includePrerelease:!1}),e instanceof _)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new _(e.raw,r);if(e instanceof M)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\\s*\\|\\|\\s*/).map(e=>this.parseRange(e.trim())).filter(e=>e.length),!this.set.length)throw new TypeError(\"Invalid SemVer Range: \"+e);this.format()}format(){return this.range=this.set.map(e=>e.join(\" \").trim()).join(\"||\").trim(),this.range}toString(){return this.range}parseRange(e){const r=this.options.loose;e=e.trim();const t=r?X[b.HYPHENRANGELOOSE]:X[b.HYPHENRANGE];e=e.replace(t,ee(this.options.includePrerelease)),c(\"hyphen replace\",e),e=e.replace(X[b.COMPARATORTRIM],U),c(\"comparator trim\",e,X[b.COMPARATORTRIM]),e=(e=(e=e.replace(X[b.TILDETRIM],k)).replace(X[b.CARETTRIM],x)).split(/\\s+/).join(\" \");const s=r?X[b.COMPARATORLOOSE]:X[b.COMPARATOR];return e.split(\" \").map(e=>H(e,this.options)).join(\" \").split(/\\s+/).map(e=>W(e,this.options)).filter(this.options.loose?e=>!!e.match(s):()=>!0).map(e=>new M(e,this.options))}intersects(e,r){if(!(e instanceof _))throw new TypeError(\"a Range is required\");return this.set.some(t=>B(t,r)&&e.set.some(e=>B(e,r)&&t.every(t=>e.every(e=>t.intersects(e,r)))))}test(e){if(!e)return!1;if(\"string\"==typeof e)try{e=new T(e,this.options)}catch(e){return!1}for(let r=0;r{let t=!0;const s=e.slice();let i=s.pop();for(;t&&s.length;)t=s.every(e=>i.intersects(e,r)),i=s.pop();return t},H=(e,r)=>(c(\"comp\",e,r),e=z(e,r),c(\"caret\",e),e=q(e,r),c(\"tildes\",e),e=J(e,r),c(\"xrange\",e),e=Q(e,r),c(\"stars\",e),e),V=e=>!e||\"x\"===e.toLowerCase()||\"*\"===e,q=(e,r)=>e.trim().split(/\\s+/).map(e=>Y(e,r)).join(\" \"),Y=(e,r)=>{const t=r.loose?X[b.TILDELOOSE]:X[b.TILDE];return e.replace(t,(r,t,s,i,o)=>{let n;return c(\"tilde\",e,r,t,s,i,o),V(t)?n=\"\":V(s)?n=`>=${t}.0.0 <${+t+1}.0.0-0`:V(i)?n=`>=${t}.${s}.0 <${t}.${+s+1}.0-0`:o?(c(\"replaceTilde pr\",o),n=`>=${t}.${s}.${i}-${o} <${t}.${+s+1}.0-0`):n=`>=${t}.${s}.${i} <${t}.${+s+1}.0-0`,c(\"tilde return\",n),n})},z=(e,r)=>e.trim().split(/\\s+/).map(e=>Z(e,r)).join(\" \"),Z=(e,r)=>{c(\"caret\",e,r);const t=r.loose?X[b.CARETLOOSE]:X[b.CARET],s=r.includePrerelease?\"-0\":\"\";return e.replace(t,(r,t,i,o,n)=>{let a;return c(\"caret\",e,r,t,i,o,n),V(t)?a=\"\":V(i)?a=`>=${t}.0.0${s} <${+t+1}.0.0-0`:V(o)?a=\"0\"===t?`>=${t}.${i}.0${s} <${t}.${+i+1}.0-0`:`>=${t}.${i}.0${s} <${+t+1}.0.0-0`:n?(c(\"replaceCaret pr\",n),a=\"0\"===t?\"0\"===i?`>=${t}.${i}.${o}-${n} <${t}.${i}.${+o+1}-0`:`>=${t}.${i}.${o}-${n} <${t}.${+i+1}.0-0`:`>=${t}.${i}.${o}-${n} <${+t+1}.0.0-0`):(c(\"no pr\"),a=\"0\"===t?\"0\"===i?`>=${t}.${i}.${o}${s} <${t}.${i}.${+o+1}-0`:`>=${t}.${i}.${o}${s} <${t}.${+i+1}.0-0`:`>=${t}.${i}.${o} <${+t+1}.0.0-0`),c(\"caret return\",a),a})},J=(e,r)=>(c(\"replaceXRanges\",e,r),e.split(/\\s+/).map(e=>K(e,r)).join(\" \")),K=(e,r)=>{e=e.trim();const t=r.loose?X[b.XRANGELOOSE]:X[b.XRANGE];return e.replace(t,(t,s,i,o,n,a)=>{c(\"xRange\",e,t,s,i,o,n,a);const E=V(i),l=E||V(o),p=l||V(n),h=p;return\"=\"===s&&h&&(s=\"\"),a=r.includePrerelease?\"-0\":\"\",E?t=\">\"===s||\"<\"===s?\"<0.0.0-0\":\"*\":s&&h?(l&&(o=0),n=0,\">\"===s?(s=\">=\",l?(i=+i+1,o=0,n=0):(o=+o+1,n=0)):\"<=\"===s&&(s=\"<\",l?i=+i+1:o=+o+1),\"<\"===s&&(a=\"-0\"),t=`${s+i}.${o}.${n}${a}`):l?t=`>=${i}.0.0${a} <${+i+1}.0.0-0`:p&&(t=`>=${i}.${o}.0${a} <${i}.${+o+1}.0-0`),c(\"xRange return\",t),t})},Q=(e,r)=>(c(\"replaceStars\",e,r),e.trim().replace(X[b.STAR],\"\")),W=(e,r)=>(c(\"replaceGTE0\",e,r),e.trim().replace(X[r.includePrerelease?b.GTE0PRE:b.GTE0],\"\")),ee=e=>(r,t,s,i,o,n,a,E,l,p,c,h,u)=>`${t=V(s)?\"\":V(i)?`>=${s}.0.0${e?\"-0\":\"\"}`:V(o)?`>=${s}.${i}.0${e?\"-0\":\"\"}`:n?\">=\"+t:`>=${t}${e?\"-0\":\"\"}`} ${E=V(l)?\"\":V(p)?`<${+l+1}.0.0-0`:V(c)?`<${l}.${+p+1}.0-0`:h?`<=${l}.${p}.${c}-${h}`:e?`<${l}.${p}.${+c+1}-0`:\"<=\"+E}`.trim(),re=(e,r,t)=>{for(let t=0;t0){const s=e[t].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0};var te=(e,r,t)=>{try{r=new j(r,t)}catch(e){return!1}return r.test(e)};const se=/(.*?):.*/,ie=/(.*?)#.*/;void 0===window.__steelbrain_package_deps&&(window.__steelbrain_package_deps=new Set),exports.fs=l,exports.installDependencies=async function(e,t=!0){r(e,\"[Package-Deps] Package name is required\");const s=await async function(e){const r=atom.packages.getLoadedPackage(e),t=r&&r.metadata[\"package-deps\"];return Array.isArray(t)?(await Promise.all(t.map((async function(e){let r=null,t=e,s=null;const o=se.exec(e),n=ie.exec(e);if(o?[,t,s]=o:n?[,t,r]=n:t=e,__steelbrain_package_deps.has(t))return null;const a=atom.packages.resolvePackagePath(t);if(a){if(!s)return null;const e=JSON.parse(await l.readFile(i.join(a,\"package.json\")));if(null!=e&&null!=e.version&&te(e.version,\">=\"+s))return null}return __steelbrain_package_deps.add(t),{name:t,url:r}})))).filter(Boolean):[]}(e);if(s.length){if(t){let r=\"Yes\";if(await Promise.resolve().then((function(){return require(\"./prompt-afef23e0.js\")})).then(async({promptUser:t})=>{r=await t(e,s)}),\"Yes\"!==r)return}await Promise.resolve().then((function(){return require(\"./install-03586186.js\")})).then(async({performInstall:r})=>r(e,s))}};\n//# sourceMappingURL=index-6660c169.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nfunction _plugin() {\n const data = require(\"@parcel/plugin\");\n\n _plugin = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _utils() {\n const data = require(\"@parcel/utils\");\n\n _utils = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _path() {\n const data = _interopRequireDefault(require(\"path\"));\n\n _path = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _nullthrows() {\n const data = _interopRequireDefault(require(\"nullthrows\"));\n\n _nullthrows = function () {\n return data;\n };\n\n return data;\n}\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// List of browsers that support dynamic import natively\n// https://caniuse.com/#feat=es6-module-dynamic-import\nconst DYNAMIC_IMPORT_BROWSERS = {\n edge: '76',\n firefox: '67',\n chrome: '63',\n safari: '11.1',\n opera: '50'\n}; // Used for as=\"\" in preload/prefetch\n\nconst TYPE_TO_RESOURCE_PRIORITY = {\n css: 'style',\n js: 'script'\n};\nconst BROWSER_PRELOAD_LOADER = './loaders/browser/preload-loader';\nconst BROWSER_PREFETCH_LOADER = './loaders/browser/prefetch-loader';\nconst LOADERS = {\n browser: {\n css: './loaders/browser/css-loader',\n html: './loaders/browser/html-loader',\n js: './loaders/browser/js-loader',\n wasm: './loaders/browser/wasm-loader',\n IMPORT_POLYFILL: './loaders/browser/import-polyfill'\n },\n worker: {\n js: './loaders/worker/js-loader',\n wasm: './loaders/worker/wasm-loader',\n IMPORT_POLYFILL: false\n },\n node: {\n css: './loaders/node/css-loader',\n html: './loaders/node/html-loader',\n js: './loaders/node/js-loader',\n wasm: './loaders/node/wasm-loader',\n IMPORT_POLYFILL: null\n }\n};\n\nfunction getLoaders(ctx) {\n if (ctx.isWorker()) return LOADERS.worker;\n if (ctx.isBrowser()) return LOADERS.browser;\n if (ctx.isNode()) return LOADERS.node;\n return null;\n}\n\nvar _default = new (_plugin().Runtime)({\n apply({\n bundle,\n bundleGraph,\n options\n }) {\n // Dependency ids in code replaced with referenced bundle names\n // Loader runtime added for bundle groups that don't have a native loader (e.g. HTML/CSS/Worker - isURL?),\n // and which are not loaded by a parent bundle.\n // Loaders also added for modules that were moved to a separate bundle because they are a different type\n // (e.g. WASM, HTML). These should be preloaded prior to the bundle being executed. Replace the entry asset(s)\n // with the preload module.\n if (bundle.type !== 'js') {\n return;\n }\n\n let asyncDependencies = [];\n let otherDependencies = [];\n bundle.traverse(node => {\n if (node.type !== 'dependency') {\n return;\n }\n\n let dependency = node.value;\n\n if (dependency.isAsync && !dependency.isURL) {\n asyncDependencies.push(dependency);\n } else {\n otherDependencies.push(dependency);\n }\n });\n let assets = [];\n\n for (let dependency of asyncDependencies) {\n let resolved = bundleGraph.resolveAsyncDependency(dependency, bundle);\n\n if (resolved == null) {\n continue;\n }\n\n if (resolved.type === 'asset') {\n // If this bundle already has the asset this dependency references,\n // return a simple runtime of `Promise.resolve(require(\"path/to/asset\"))`.\n assets.push({\n filePath: _path().default.join(options.projectRoot, 'JSRuntime.js'),\n // Using Promise['resolve'] to prevent Parcel from inferring this is an async dependency.\n // TODO: Find a better way of doing this.\n code: `module.exports = Promise['resolve'](require(${JSON.stringify('./' + _path().default.relative(options.projectRoot, resolved.value.filePath))}))`,\n dependency\n });\n } else {\n let loaderRuntime = getLoaderRuntime({\n bundle,\n dependency,\n bundleGraph,\n bundleGroup: resolved.value\n });\n\n if (loaderRuntime != null) {\n assets.push(loaderRuntime);\n }\n }\n }\n\n for (let dependency of otherDependencies) {\n // Resolve the dependency to a bundle. If inline, export the dependency id,\n // which will be replaced with the contents of that bundle later.\n let referencedBundle = bundleGraph.getReferencedBundle(dependency, bundle);\n\n if (referencedBundle === null || referencedBundle === void 0 ? void 0 : referencedBundle.isInline) {\n assets.push({\n filePath: _path().default.join(__dirname, `/bundles/${referencedBundle.id}.js`),\n code: `module.exports = ${JSON.stringify(dependency.id)};`,\n dependency\n });\n continue;\n } // Otherwise, try to resolve the dependency to an external bundle group\n // and insert a URL to that bundle.\n\n\n let resolved = bundleGraph.resolveAsyncDependency(dependency, bundle);\n\n if (dependency.isURL && resolved == null) {\n // If a URL dependency was not able to be resolved, add a runtime that\n // exports the original moduleSpecifier.\n assets.push({\n filePath: __filename,\n code: `module.exports = ${JSON.stringify(dependency.moduleSpecifier)}`,\n dependency\n });\n continue;\n }\n\n if (resolved == null || resolved.type !== 'bundle_group') {\n continue;\n }\n\n let bundleGroup = resolved.value;\n let mainBundle = (0, _nullthrows().default)(bundleGraph.getBundlesInBundleGroup(bundleGroup).find(b => {\n let entries = b.getEntryAssets();\n return entries.some(e => bundleGroup.entryAssetId === e.id);\n }));\n\n if (bundle.env.outputFormat === 'commonjs' && mainBundle.type === 'js') {\n assets.push({\n filePath: __filename,\n dependency,\n code: `module.exports = require(\"./\" + ${getRelativePathExpr(bundle, mainBundle)})`\n });\n continue;\n } // URL dependency or not, fall back to including a runtime that exports the url\n\n\n assets.push(getURLRuntime(dependency, bundle, mainBundle));\n }\n\n if (shouldUseRuntimeManifest(bundle) && bundleGraph.getChildBundles(bundle).length > 0 && isNewContext(bundle, bundleGraph)) {\n assets.push({\n filePath: __filename,\n code: getRegisterCode(bundle, bundleGraph),\n isEntry: true\n });\n }\n\n return assets;\n }\n\n});\n\nexports.default = _default;\n\nfunction getLoaderRuntime({\n bundle,\n dependency,\n bundleGroup,\n bundleGraph\n}) {\n let loaders = getLoaders(bundle.env);\n\n if (loaders == null) {\n return;\n } // Sort so the bundles containing the entry asset appear last\n\n\n let externalBundles = bundleGraph.getBundlesInBundleGroup(bundleGroup).filter(bundle => !bundle.isInline).sort(bundle => bundle.getEntryAssets().map(asset => asset.id).includes(bundleGroup.entryAssetId) ? 1 : -1); // CommonJS is a synchronous module system, so there is no need to load bundles in parallel.\n // Importing of the other bundles will be handled by the bundle group entry.\n // Do the same thing in library mode for ES modules, as we are building for another bundler\n // and the imports for sibling bundles will be in the target bundle.\n\n if (bundle.env.outputFormat === 'commonjs' || bundle.env.isLibrary) {\n externalBundles = externalBundles.slice(-1);\n } // Determine if we need to add a dynamic import() polyfill, or if all target browsers support it natively.\n\n\n let needsDynamicImportPolyfill = false;\n\n if (bundle.env.isBrowser() && bundle.env.outputFormat === 'esmodule') {\n needsDynamicImportPolyfill = !bundle.env.matchesEngines(DYNAMIC_IMPORT_BROWSERS);\n }\n\n let loaderModules = externalBundles.map(to => {\n let loader = loaders[to.type];\n\n if (!loader) {\n return;\n }\n\n let relativePathExpr = getRelativePathExpr(bundle, to); // Use esmodule loader if possible\n\n if (to.type === 'js' && to.env.outputFormat === 'esmodule') {\n if (!needsDynamicImportPolyfill) {\n return `import(\"./\" + ${relativePathExpr})`;\n }\n\n loader = (0, _nullthrows().default)(loaders.IMPORT_POLYFILL, `No import() polyfill available for context '${bundle.env.context}'`);\n } else if (to.type === 'js' && to.env.outputFormat === 'commonjs') {\n return `Promise.resolve(require(\"./\" + ${relativePathExpr}))`;\n }\n\n return `require(${JSON.stringify(loader)})(require('./bundle-url').getBundleURL() + ${relativePathExpr})`;\n }).filter(Boolean);\n\n if (bundle.env.context === 'browser') {\n loaderModules.push(...(0, _utils().flatMap)( // TODO: Allow css to preload resources as well\n externalBundles.filter(to => to.type === 'js'), from => {\n let {\n preload,\n prefetch\n } = getHintedBundleGroups(bundleGraph, from);\n return [...getHintLoaders(bundleGraph, bundle, preload, BROWSER_PRELOAD_LOADER), ...getHintLoaders(bundleGraph, bundle, prefetch, BROWSER_PREFETCH_LOADER)];\n }));\n }\n\n if (loaderModules.length === 0) {\n return;\n }\n\n let loaderCode = loaderModules.join(', ');\n\n if (loaderModules.length > 1 && (bundle.env.outputFormat === 'global' || !externalBundles.every(b => b.type === 'js'))) {\n loaderCode = `Promise.all([${loaderCode}])`;\n\n if (bundle.env.outputFormat !== 'global') {\n loaderCode += `.then(r => r[r.length - 1])`;\n }\n } else {\n loaderCode = `(${loaderCode})`;\n }\n\n if (bundle.env.outputFormat === 'global') {\n loaderCode += `.then(() => parcelRequire('${bundleGraph.getAssetPublicId(bundleGraph.getAssetById(bundleGroup.entryAssetId))}')${// In global output with scope hoisting, functions return exports are\n // always returned. Otherwise, the exports are returned.\n bundle.env.scopeHoist ? '()' : ''})`;\n }\n\n return {\n filePath: __filename,\n code: `module.exports = ${loaderCode};`,\n dependency\n };\n}\n\nfunction getHintedBundleGroups(bundleGraph, bundle) {\n let preload = [];\n let prefetch = [];\n bundle.traverse(node => {\n var _dependency$meta;\n\n if (node.type !== 'dependency') {\n return;\n }\n\n let dependency = node.value; // $FlowFixMe\n\n let attributes = (_dependency$meta = dependency.meta) === null || _dependency$meta === void 0 ? void 0 : _dependency$meta.importAttributes;\n\n if (dependency.isAsync && !dependency.isURL && typeof attributes === 'object' && attributes != null && ( // $FlowFixMe\n attributes.preload || attributes.prefetch)) {\n let resolved = bundleGraph.resolveAsyncDependency(dependency, bundle);\n\n if ((resolved === null || resolved === void 0 ? void 0 : resolved.type) === 'bundle_group') {\n // === true for flow\n if (attributes.preload === true) {\n preload.push(resolved.value);\n }\n\n if (attributes.prefetch === true) {\n prefetch.push(resolved.value);\n }\n }\n }\n });\n return {\n preload,\n prefetch\n };\n}\n\nfunction getHintLoaders(bundleGraph, from, bundleGroups, loader) {\n let hintLoaders = [];\n\n for (let bundleGroupToPreload of bundleGroups) {\n let bundlesToPreload = bundleGraph.getBundlesInBundleGroup(bundleGroupToPreload);\n\n for (let bundleToPreload of bundlesToPreload) {\n let relativePathExpr = getRelativePathExpr(from, bundleToPreload);\n let priority = TYPE_TO_RESOURCE_PRIORITY[bundleToPreload.type];\n hintLoaders.push(`require(${JSON.stringify(loader)})(require('./bundle-url').getBundleURL() + ${relativePathExpr}, ${priority ? JSON.stringify(priority) : 'null'}, ${JSON.stringify(bundleToPreload.target.env.outputFormat === 'esmodule')})`);\n }\n }\n\n return hintLoaders;\n}\n\nfunction isNewContext(bundle, bundleGraph) {\n let parents = bundleGraph.getParentBundles(bundle);\n return bundle.isEntry || parents.length === 0 || parents.some(parent => parent.env.context !== bundle.env.context || parent.type !== 'js');\n}\n\nfunction getURLRuntime(dependency, from, to) {\n let relativePathExpr = getRelativePathExpr(from, to);\n\n if (dependency.meta.webworker === true) {\n return {\n filePath: __filename,\n code: `module.exports = require('./get-worker-url')(${relativePathExpr});`,\n dependency\n };\n }\n\n return {\n filePath: __filename,\n code: `module.exports = require('./bundle-url').getBundleURL() + ${relativePathExpr}`,\n dependency\n };\n}\n\nfunction getRegisterCode(entryBundle, bundleGraph) {\n let idToName = {};\n bundleGraph.traverseBundles((bundle, _, actions) => {\n if (bundle.isInline) {\n return;\n }\n\n idToName[bundle.publicId] = (0, _nullthrows().default)(bundle.name);\n\n if (bundle !== entryBundle && isNewContext(bundle, bundleGraph)) {\n // New contexts have their own manifests, so there's no need to continue.\n actions.skipChildren();\n }\n }, entryBundle);\n return \"require('./bundle-manifest').register(JSON.parse(\" + JSON.stringify(JSON.stringify(idToName)) + '));';\n}\n\nfunction getRelativePathExpr(from, to) {\n if (shouldUseRuntimeManifest(from)) {\n return `require('./relative-path')(${JSON.stringify(from.publicId)}, ${JSON.stringify(to.publicId)})`;\n }\n\n return JSON.stringify((0, _utils().relativeBundlePath)(from, to, {\n leadingDotSlash: false\n }));\n}\n\nfunction shouldUseRuntimeManifest(bundle) {\n let env = bundle.env;\n return !env.isLibrary && env.outputFormat === 'global' && env.isBrowser();\n}","module.exports = {\n onCopy: 'copy',\n onCut: 'cut',\n onPaste: 'paste',\n onCompositionEnd: 'compositionend',\n onCompositionStart: 'compositionstart',\n onCompositionUpdate: 'compositionupdate',\n onKeyDown: 'keydown',\n onKeyPress: 'keypress',\n onKeyUp: 'keyup',\n onFocus: 'focus',\n onBlur: 'blur',\n onChange: 'change',\n onInput: 'input',\n onSubmit: 'submit',\n onClick: 'click',\n onContextMenu: 'contextmenu',\n onDoubleClick: 'dblclick',\n onDrag: 'drag',\n onDragEnd: 'dragend',\n onDragEnter: 'dragenter',\n onDragExit: 'dragexit',\n onDragLeave: 'dragleave',\n onDragOver: 'dragover',\n onDragStart: 'dragstart',\n onDrop: 'drop',\n onMouseDown: 'mousedown',\n onMouseEnter: 'mouseenter',\n onMouseLeave: 'mouseleave',\n onMouseMove: 'mousemove',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onSelect: 'select',\n onTouchCancel: 'touchcancel',\n onTouchEnd: 'touchend',\n onTouchMove: 'touchmove',\n onTouchStart: 'touchstart',\n onScroll: 'scroll',\n onWheel: 'wheel',\n onAbort: 'abort',\n onCanPlay: 'canplay',\n onCanPlayThrough: 'canplaythrough',\n onDurationChange: 'durationchange',\n onEmptied: 'emptied',\n onEncrypted: 'encrypted',\n onEnded: 'ended',\n onError: 'error',\n onLoadedData: 'loadeddata',\n onLoadedMetadata: 'loadedmetadata',\n onLoadStart: 'loadstart',\n onPause: 'pause',\n onPlay: 'play',\n onPlaying: 'playing',\n onProgress: 'progress',\n onRateChange: 'ratechange',\n onSeeked: 'seeked',\n onSeeking: 'seeking',\n onStalled: 'stalled',\n onSuspend: 'suspend',\n onTimeUpdate: 'timeupdate',\n onVolumeChange: 'volumechange',\n onWaiting: 'waiting',\n onLoad: 'load',\n onAnimationStart: 'animationstart',\n onAnimationEnd: 'animationend',\n onAnimationIteration: 'animationiteration',\n onTransitionEnd: 'transitionend'\n}\n","const EVENT_LISTENER_PROPS = require('./event-listener-props')\nconst SVG_TAGS = require('./svg-tags')\n\nfunction dom (tag, props, ...children) {\n let ambiguous = []\n\n for (let i = 0; i < children.length;) {\n const child = children[i]\n switch (typeof child) {\n case 'string':\n case 'number':\n children[i] = {text: child}\n i++\n break;\n\n case 'object':\n if (Array.isArray(child)) {\n children.splice(i, 1, ...child)\n } else if (!child) {\n children.splice(i, 1)\n } else {\n if (!child.context) {\n ambiguous.push(child)\n if (child.ambiguous && child.ambiguous.length) {\n ambiguous = ambiguous.concat(child.ambiguous)\n }\n }\n i++\n }\n break;\n\n default:\n throw new Error(`Invalid child node: ${child}`)\n }\n }\n\n if (props) {\n for (const propName in props) {\n const eventName = EVENT_LISTENER_PROPS[propName]\n if (eventName) {\n if (!props.on) props.on = {}\n props.on[eventName] = props[propName]\n }\n }\n\n if (props.class) {\n props.className = props.class\n }\n }\n\n return {tag, props, children, ambiguous}\n}\n\nconst HTML_TAGS = [\n 'a', 'abbr', 'address', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo',\n 'blockquote', 'body', 'button', 'canvas', 'caption', 'cite', 'code',\n 'colgroup', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl',\n 'dt', 'em', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2',\n 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'html', 'i', 'iframe', 'ins', 'kbd',\n 'label', 'legend', 'li', 'main', 'map', 'mark', 'menu', 'meter', 'nav',\n 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'pre',\n 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section',\n 'select', 'small', 'span', 'strong', 'style', 'sub', 'summary', 'sup',\n 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title',\n 'tr', 'u', 'ul', 'var', 'video', 'area', 'base', 'br', 'col', 'command',\n 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source',\n 'track', 'wbr'\n]\n\nfor (const tagName of HTML_TAGS) {\n dom[tagName] = (props, ...children) => {\n return dom(tagName, props, ...children)\n }\n}\n\nfor (const tagName of SVG_TAGS) {\n dom[tagName] = (props, ...children) => {\n return dom(tagName, props, ...children)\n }\n}\n\n\nmodule.exports = dom\n","// taken from https://github.com/facebook/react/blob/67f8524e88abbf1ac0fd86d38a0477d11fbc7b3e/src/isomorphic/classic/element/ReactDOMFactories.js#L153\nmodule.exports = new Set([\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'g',\n 'image',\n 'line',\n 'linearGradient',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'svg',\n 'text',\n 'tspan'\n])\n","// Based on https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\nmodule.exports = new Map([\n ['accentHeight', 'accent-height'],\n ['alignmentBaseline', 'alignment-baseline'],\n ['arabicForm', 'arabic-form'],\n ['baselineShift', 'baseline-shift'],\n ['capHeight', 'cap-height'],\n ['className', 'class'],\n ['clipPath', 'clip-path'],\n ['clipRule', 'clip-rule'],\n ['colorInterpolation', 'color-interpolation'],\n ['colorInterpolationFilters', 'color-interpolation-filters'],\n ['colorProfile', 'color-profile'],\n ['colorRendering', 'color-rendering'],\n ['dominantBaseline', 'dominant-baseline'],\n ['enableBackground', 'enable-background'],\n ['fillOpacity', 'fill-opacity'],\n ['fillRule', 'fill-rule'],\n ['floodColor', 'flood-color'],\n ['floodOpacity', 'flood-opacity'],\n ['fontFamily', 'font-family'],\n ['fontSize', 'font-size'],\n ['fontSizeAdjust', 'font-size-adjust'],\n ['fontStretch', 'font-stretch'],\n ['fontStyle', 'font-style'],\n ['fontVariant', 'font-variant'],\n ['fontWeight', 'font-weight'],\n ['glyphName', 'glyph-name'],\n ['glyphOrientationHorizontal', 'glyph-orientation-horizontal'],\n ['glyphOrientationVertical', 'glyph-orientation-vertical'],\n ['horizAdvX', 'horiz-adv-x'],\n ['horizOriginX', 'horiz-origin-x'],\n ['letterSpacing', 'letter-spacing'],\n ['lightingColor', 'lighting-color'],\n ['markerEnd', 'marker-end'],\n ['markerMid', 'marker-mid'],\n ['markerStart', 'marker-start'],\n ['overlinePosition', 'overline-position'],\n ['overlineThickness', 'overline-thickness'],\n ['panose1', 'panose-1'],\n ['paintOrder', 'paint-order'],\n ['pointerEvents', 'pointer-events'],\n ['renderingIntent', 'rendering-intent'],\n ['shapeRendering', 'shape-rendering'],\n ['stopColor', 'stop-color'],\n ['stopOpacity', 'stop-opacity'],\n ['strikethroughPosition', 'strikethrough-position'],\n ['strikethroughThickness', 'strikethrough-thickness'],\n ['strokeDasharray', 'stroke-dasharray'],\n ['strokeDashoffset', 'stroke-dashoffset'],\n ['strokeLinecap', 'stroke-linecap'],\n ['strokeLinejoin', 'stroke-linejoin'],\n ['strokeMiterlimit', 'stroke-miterlimit'],\n ['strokeOpacity', 'stroke-opacity'],\n ['strokeWidth', 'stroke-width'],\n ['textAnchor', 'text-anchor'],\n ['textDecoration', 'text-decoration'],\n ['textRendering', 'text-rendering'],\n ['underlinePosition', 'underline-position'],\n ['underlineThickness', 'underline-thickness'],\n ['unicodeBidi', 'unicode-bidi'],\n ['unicodeRange', 'unicode-range'],\n ['unitsPerEm', 'units-per-em'],\n ['vAlphabetic', 'v-alphabetic'],\n ['vHanging', 'v-hanging'],\n ['vIdeographic', 'v-ideographic'],\n ['vMathematical', 'v-mathematical'],\n ['vertAdvY', 'vert-adv-y'],\n ['vertOriginX', 'vert-origin-x'],\n ['vertOriginY', 'vert-origin-y'],\n ['wordSpacing', 'word-spacing'],\n ['writingMode', 'writing-mode'],\n ['xHeight', 'x-height'],\n])\n","const EVENT_LISTENER_PROPS = require('./event-listener-props')\nconst SVG_TAGS = require('./svg-tags')\nconst SVG_ATTRIBUTE_TRANSLATIONS = require('./svg-attribute-translations')\nconst EMPTY = ''\n\nconst updateRef = require('./update-ref')\n\nmodule.exports = function (domNode, oldVirtualNode, newVirtualNode, options) {\n const oldProps = oldVirtualNode && oldVirtualNode.props\n const newProps = newVirtualNode.props\n\n let refs, listenerContext\n if (options) {\n refs = options.refs\n listenerContext = options.listenerContext\n }\n updateProps(domNode, oldVirtualNode, oldProps, newVirtualNode, newProps)\n if (refs) updateRef(domNode, oldProps && oldProps.ref, newProps && newProps.ref, refs)\n updateEventListeners(domNode, oldVirtualNode, newVirtualNode, listenerContext)\n}\n\n// Using var to avoid \"Unsupported phi use of variable\" deoptimization in Chrome 56\nfunction updateProps (domNode, oldVirtualNode, oldProps, newVirtualNode, newProps) {\n if (oldProps) {\n for (var name in oldProps) {\n if (name === 'ref' || name === 'on') continue\n if (name in EVENT_LISTENER_PROPS) continue\n if (!newProps || !(name in newProps)) {\n if (name === 'dataset') {\n updateProps(domNode.dataset, null, oldProps && oldProps.dataset, null, null)\n } else if (name !== 'innerHTML' && oldVirtualNode && SVG_TAGS.has(oldVirtualNode.tag)) {\n domNode.removeAttribute(SVG_ATTRIBUTE_TRANSLATIONS.get(name) || name)\n } else {\n // Clear property for objects that don't support deletion (e.g. style\n // or className). If we used null instead of an empty string, the DOM\n // could sometimes stringify the value and mistakenly assign 'null'.\n domNode[name] = EMPTY\n delete domNode[name]\n }\n }\n }\n }\n\n if (newProps) {\n for (var name in newProps) {\n if (name === 'ref' || name === 'on') continue\n if (name in EVENT_LISTENER_PROPS) continue\n var oldValue = oldProps && oldProps[name]\n var newValue = newProps[name]\n if (name === 'dataset') {\n updateNestedProps(domNode.dataset, oldValue, newValue, false)\n } else if (name === 'style' && typeof newValue !== 'string') {\n if (typeof oldValue === 'string') {\n domNode.style = ''\n oldValue = null\n }\n updateNestedProps(domNode.style, oldValue, newValue, true)\n } else if (name === 'attributes') {\n updateAttributes(domNode, oldValue, newValue)\n } else {\n if (newValue !== oldValue) {\n if (name !== 'innerHTML' && newVirtualNode && SVG_TAGS.has(newVirtualNode.tag)) {\n domNode.setAttribute(SVG_ATTRIBUTE_TRANSLATIONS.get(name) || name, newValue)\n } else if (newVirtualNode && newVirtualNode.tag === 'input'\n && name === 'value' && domNode[name] === newValue) {\n // Do not update `value` of an `input` unless it differs.\n // Every change will reset the cursor position.\n } else {\n domNode[name] = newValue\n }\n }\n }\n }\n }\n}\n\nfunction updateNestedProps (domProps, oldProps, newProps, isStyleObject) {\n if (oldProps) {\n for (var name in oldProps) {\n if (!newProps || !(name in newProps)) {\n if (isStyleObject) {\n domProps[name] = EMPTY\n } else {\n delete domProps[name]\n }\n }\n }\n }\n\n if (newProps) {\n for (var name in newProps) {\n const oldValue = oldProps && oldProps[name]\n const newValue = newProps[name]\n if (newValue !== oldValue) {\n domProps[name] = newValue\n }\n }\n }\n}\n\nfunction updateAttributes (domNode, oldAttributes, newAttributes) {\n if (oldAttributes) {\n for (var name in oldAttributes) {\n if (!newAttributes || !(name in newAttributes)) {\n domNode.removeAttribute(name)\n }\n }\n }\n\n if (newAttributes) {\n for (var name in newAttributes) {\n const oldValue = oldAttributes && oldAttributes[name]\n const newValue = newAttributes[name]\n if (newValue !== oldValue) {\n domNode.setAttribute(name, newValue)\n }\n }\n }\n}\n\nfunction updateEventListeners (domNode, oldVirtualNode, newVirtualNode, listenerContext) {\n const oldListeners = oldVirtualNode && oldVirtualNode.props && oldVirtualNode.props.on\n const newListeners = newVirtualNode.props && newVirtualNode.props.on\n\n for (const eventName in oldListeners) {\n if (!(newListeners && eventName in newListeners)) {\n let listenerToRemove\n if (oldVirtualNode && oldVirtualNode.boundListeners && oldVirtualNode.boundListeners[eventName]) {\n listenerToRemove = oldVirtualNode.boundListeners[eventName]\n } else {\n listenerToRemove = oldListeners[eventName]\n }\n domNode.removeEventListener(eventName, listenerToRemove)\n }\n }\n\n for (const eventName in newListeners) {\n const oldListener = oldListeners && oldListeners[eventName]\n const newListener = newListeners[eventName]\n\n if (newListener !== oldListener) {\n if (oldListener) {\n let listenerToRemove\n if (oldVirtualNode && oldVirtualNode.boundListeners && oldVirtualNode.boundListeners[eventName]) {\n listenerToRemove = oldVirtualNode.boundListeners[eventName]\n } else {\n listenerToRemove = oldListener\n }\n domNode.removeEventListener(eventName, listenerToRemove)\n }\n if (newListener) {\n let listenerToAdd\n if (listenerContext) {\n listenerToAdd = newListener.bind(listenerContext)\n if (!newVirtualNode.boundListeners) newVirtualNode.boundListeners = {}\n newVirtualNode.boundListeners[eventName] = listenerToAdd\n } else {\n listenerToAdd = newListener\n }\n domNode.addEventListener(eventName, listenerToAdd)\n }\n }\n }\n}\n","const updateProps = require('./update-props')\nconst SVG_TAGS = require('./svg-tags')\n\nfunction render (virtualNode, options) {\n let domNode\n if (virtualNode.text != null) {\n domNode = document.createTextNode(virtualNode.text)\n } else {\n const {tag, children} = virtualNode\n let {props, context} = virtualNode\n\n if (context) {\n options = {refs: context.refs, listenerContext: context}\n }\n\n if (typeof tag === 'function') {\n let ref\n if (props && props.ref) {\n ref = props.ref\n }\n const component = new tag(props || {}, children)\n virtualNode.component = component\n domNode = component.element\n if (typeof ref === \"function\") {\n ref(component)\n } else if (options && options.refs && ref) {\n options.refs[ref] = component\n }\n } else if (SVG_TAGS.has(tag)) {\n domNode = document.createElementNS(\"http://www.w3.org/2000/svg\", tag);\n if (children) addChildren(domNode, children, options)\n if (props) updateProps(domNode, null, virtualNode, options)\n } else {\n domNode = document.createElement(tag)\n if (children) addChildren(domNode, children, options)\n if (props) updateProps(domNode, null, virtualNode, options)\n }\n }\n virtualNode.domNode = domNode\n return domNode\n}\n\nfunction addChildren (parent, children, options) {\n for (let i = 0; i < children.length; i++) {\n parent.appendChild(render(children[i], options))\n }\n}\n\nmodule.exports = render\n","module.exports = function updateRef (domNode, oldRefName, newRefName, refs) {\n if (newRefName !== oldRefName) {\n if (typeof oldRefName === 'function') oldRefName(null)\n else if (oldRefName && refs[oldRefName] === domNode) delete refs[oldRefName]\n if (typeof newRefName === 'function') newRefName(domNode)\n else if (newRefName) refs[newRefName] = domNode\n }\n}\n","const render = require('./render')\nconst updateProps = require('./update-props')\nconst updateRef = require('./update-ref')\n\nfunction patch (oldVirtualNode, newVirtualNode, options) {\n const oldNode = oldVirtualNode.domNode\n\n if (newVirtualNode === oldVirtualNode) return oldNode\n\n if (virtualNodesAreEqual(oldVirtualNode, newVirtualNode)) {\n let newNode\n if (newVirtualNode.text != null) {\n oldNode.nodeValue = newVirtualNode.text\n newNode = oldNode\n } else {\n if (typeof newVirtualNode.tag === 'function') {\n newNode = updateComponent(oldVirtualNode, newVirtualNode, options)\n } else {\n updateChildren(oldNode, oldVirtualNode.children, newVirtualNode.children, options)\n updateProps(oldNode, oldVirtualNode, newVirtualNode, options)\n newNode = oldNode\n }\n }\n newVirtualNode.domNode = newNode\n if (newNode !== oldNode && oldNode.parentNode) {\n oldNode.parentNode.replaceChild(newNode, oldNode)\n }\n return newNode\n } else {\n const parentNode = oldNode.parentNode\n const nextSibling = oldNode.nextSibling\n removeVirtualNode(oldVirtualNode, options && options.refs)\n const newNode = render(newVirtualNode, options)\n if (parentNode) parentNode.insertBefore(newNode, nextSibling)\n newVirtualNode.domNode = newNode\n return newNode\n }\n}\n\nfunction updateComponent (oldVirtualNode, newVirtualNode, options) {\n const {component, props: oldProps} = oldVirtualNode\n let {props: newProps, children: newChildren} = newVirtualNode\n newVirtualNode.component = component\n const refs = options && options.refs\n if (refs) updateRef(component, oldProps && oldProps.ref, newProps && newProps.ref, refs)\n component.update(newProps || {}, newChildren)\n return component.element\n}\n\nlet mapPool = [new Map(), new Map(), new Map(), new Map()]\n\nfunction updateChildren (parentElement, oldChildren, newChildren, options) {\n var oldStartIndex = 0\n var oldEndIndex = oldChildren.length - 1\n var oldStartChild = oldChildren[0]\n var oldEndChild = oldChildren[oldEndIndex]\n\n var newStartIndex = 0\n var newEndIndex = newChildren.length - 1\n var newStartChild = newChildren[0]\n var newEndChild = newChildren[newEndIndex]\n\n var oldIndicesByKey\n\n while (oldStartIndex <= oldEndIndex && newStartIndex <= newEndIndex) {\n if (!oldStartChild) {\n oldStartChild = oldChildren[++oldStartIndex]\n } else if (!oldEndChild) {\n oldEndChild = oldChildren[--oldEndIndex]\n } else if (virtualNodesAreEqual(oldStartChild, newStartChild)) {\n patch(oldStartChild, newStartChild, options)\n oldStartChild = oldChildren[++oldStartIndex]\n newStartChild = newChildren[++newStartIndex]\n } else if (virtualNodesAreEqual(oldEndChild, newEndChild)) {\n patch(oldEndChild, newEndChild, options)\n oldEndChild = oldChildren[--oldEndIndex]\n newEndChild = newChildren[--newEndIndex]\n } else if (virtualNodesAreEqual(oldStartChild, newEndChild)) {\n patch(oldStartChild, newEndChild, options)\n parentElement.insertBefore(oldStartChild.domNode, oldEndChild.domNode.nextSibling)\n oldStartChild = oldChildren[++oldStartIndex]\n newEndChild = newChildren[--newEndIndex]\n } else if (virtualNodesAreEqual(oldEndChild, newStartChild)) {\n patch(oldEndChild, newStartChild, options)\n parentElement.insertBefore(oldEndChild.domNode, oldStartChild.domNode);\n oldEndChild = oldChildren[--oldEndIndex]\n newStartChild = newChildren[++newStartIndex]\n } else {\n if (!oldIndicesByKey) {\n if (mapPool.length > 0) {\n oldIndicesByKey = mapPool.pop()\n oldIndicesByKey.clear()\n } else {\n oldIndicesByKey = new Map()\n }\n mapOldKeysToIndices(oldIndicesByKey, oldChildren, oldStartIndex, oldEndIndex)\n }\n\n var key = getKey(newStartChild)\n var oldIndex = key ? oldIndicesByKey.get(key) : null\n if (oldIndex == null) {\n parentElement.insertBefore(render(newStartChild, options), oldStartChild.domNode)\n newStartChild = newChildren[++newStartIndex]\n } else {\n var oldChildToMove = oldChildren[oldIndex]\n patch(oldChildToMove, newStartChild, options)\n oldChildren[oldIndex] = undefined\n parentElement.insertBefore(oldChildToMove.domNode, oldStartChild.domNode)\n newStartChild = newChildren[++newStartIndex]\n }\n }\n }\n\n if (oldStartIndex > oldEndIndex) {\n var subsequentElement = newChildren[newEndIndex + 1] ? newChildren[newEndIndex + 1].domNode : null\n for (let i = newStartIndex; i <= newEndIndex; i++) {\n parentElement.insertBefore(render(newChildren[i], options), subsequentElement)\n }\n } else if (newStartIndex > newEndIndex) {\n for (let i = oldStartIndex; i <= oldEndIndex; i++) {\n var child = oldChildren[i]\n if (child) removeVirtualNode(child, options && options.refs)\n }\n }\n\n if (oldIndicesByKey) mapPool.push(oldIndicesByKey)\n}\n\nfunction removeVirtualNode (virtualNode, refs, removeDOMNode = true) {\n const {domNode, props, children, component} = virtualNode\n const ref = props && props.ref\n if (component) {\n if (typeof ref === 'function') ref(null)\n else if (refs && ref && refs[ref] === component) delete refs[ref]\n if (component.destroy) component.destroy()\n } else {\n if (typeof ref === 'function') ref(null)\n else if (refs && ref && refs[ref] === domNode) delete refs[ref]\n if (children) {\n for (let i = 0; i < children.length; i++) {\n removeVirtualNode(children[i], refs, false)\n }\n }\n }\n\n if (removeDOMNode) domNode.remove()\n}\n\nfunction virtualNodesAreEqual (oldVirtualNode, newVirtualNode) {\n return (\n getKey(oldVirtualNode) === getKey(newVirtualNode)\n && oldVirtualNode.tag === newVirtualNode.tag\n )\n}\n\nfunction getKey (virtualNode) {\n return virtualNode.props ? virtualNode.props.key : undefined\n}\n\nfunction mapOldKeysToIndices (oldIndicesByKey, children, startIndex, endIndex) {\n for (let i = startIndex; i <= endIndex; i++) {\n const key = getKey(children[i])\n if (key) oldIndicesByKey.set(key, i)\n }\n return oldIndicesByKey\n}\n\nmodule.exports = patch\n","// If the scheduler is not customized via `etch.setScheduler`, an instance of\n// this class will be used to schedule updates to the document. The\n// `updateDocument` method accepts functions to be run at some point in the\n// future, then runs them on the next animation frame.\nmodule.exports = class DefaultScheduler {\n constructor () {\n this.updateRequests = []\n this.readRequests = []\n this.pendingAnimationFrame = null\n this.performUpdates = this.performUpdates.bind(this)\n this.performingUpdates = false\n }\n\n // Enqueues functions that write to the DOM to be performed on the next\n // animation frame. Functions passed to this method should *never* read from\n // the DOM, because that could cause synchronous reflows.\n updateDocument (fn) {\n this.updateRequests.push(fn)\n if (!this.pendingAnimationFrame) {\n this.pendingAnimationFrame = window.requestAnimationFrame(this.performUpdates)\n }\n }\n\n readDocument (fn) {\n this.readRequests.push(fn)\n if (!this.pendingAnimationFrame) {\n this.pendingAnimationFrame = window.requestAnimationFrame(this.performUpdates)\n }\n }\n\n // Returns a promise that will resolve at the end of the next update cycle,\n // after all the functions passed to `updateDocument` and `updateDocumentSync`\n // have been run.\n getNextUpdatePromise () {\n if (!this.nextUpdatePromise) {\n this.nextUpdatePromise = new Promise(resolve => {\n this.resolveNextUpdatePromise = resolve\n })\n }\n return this.nextUpdatePromise\n }\n\n // Performs all the pending document updates. If running these update\n // functions causes *more* updates to be enqueued, they are run synchronously\n // in this update cycle without waiting for another frame.\n performUpdates () {\n while (this.updateRequests.length > 0) {\n this.updateRequests.shift()()\n }\n\n // We don't clear the pending frame until all update requests are processed.\n // This ensures updates requested within other updates are processed in the\n // current frame.\n this.pendingAnimationFrame = null\n\n // Now that updates are processed, we can perform all pending document reads\n // without the risk of interleaving them with writes and causing layout\n // thrashing.\n while (this.readRequests.length > 0) {\n this.readRequests.shift()()\n }\n\n if (this.nextUpdatePromise) {\n let resolveNextUpdatePromise = this.resolveNextUpdatePromise\n this.nextUpdatePromise = null\n this.resolveNextUpdatePromise = null\n resolveNextUpdatePromise()\n }\n }\n}\n","// This file implements getter and setter functions for a scheduler to be used\n// by this library when updating the DOM. The scheduler's job is to ensure that\n// DOM interaction is performed efficiently. When using `etch` in Atom, you\n// should tell `etch` to use Atom's scheduler by calling\n// `setScheduler(atom.views)`.\n//\n// Schedulers should support the following interface:\n// * `updateDocument(fn)` This method is asynchronous. It enqueues functions to\n// be executed later.\n// * `getNextUpdatePromise()` This function should return a promise that\n// resolves after all pending document update functions have been invoked.\n//\n// Schedulers could support the following optional methods, which are supported\n// by Atom's scheduler.\n//\n// * `readDocument` This method can be invoked by clients other than `etch` when\n// it is necessary to read from the DOM. Functions enqueued via this method\n// should not be run until all document update functions have been executed.\n// Batching updates and reads in this way will prevent forced synchronous\n// reflows.\n// * `pollDocument` This method is similar to `readDocument`, but it runs the\n// associated functions repeatedly. Again, they should be scheduled in such a\n// way so as to avoid synchronous reflows.\n\nconst DefaultScheduler = require('./default-scheduler')\n\nlet scheduler = null\n\nmodule.exports.setScheduler = function setScheduler (customScheduler) {\n scheduler = customScheduler\n}\n\nmodule.exports.getScheduler = function getScheduler () {\n if (!scheduler) {\n scheduler = new DefaultScheduler()\n }\n return scheduler\n}\n","const render = require('./render')\nconst patch = require('./patch')\nconst {getScheduler} = require('./scheduler-assignment')\n\nconst componentsWithPendingUpdates = new WeakSet()\nlet syncUpdatesInProgressCounter = 0\nlet syncDestructionsInProgressCounter = 0\n\nfunction isValidVirtualNode (virtualNode) {\n return virtualNode != null && virtualNode !== false\n}\n\nfunction applyContext (context, virtualNode) {\n virtualNode.context = context\n if (virtualNode.ambiguous) {\n virtualNode.ambiguous.forEach(node => {\n node.context = context\n })\n delete virtualNode.ambiguous\n }\n}\n\n// This function associates a component object with a DOM element by calling\n// the components `render` method, assigning an `.element` property on the\n// object and also returning the element.\n//\n// It also assigns a `virtualNode` property based on the return value of the\n// `render` method. This will be used later by `performElementUpdate` to diff\n// the new results of `render` with the previous results when updating the\n// component's element.\n//\n// Finally, this function also associates the component with a `refs` object,\n// which is populated with references to elements based on `ref` properties on\n// nodes of the `virtual-dom` tree. Before calling into `virtual-dom` to create\n// the DOM tree, it pushes this `refs` object to a shared stack so it can be\n// accessed by hooks during the creation of individual elements.\nfunction initialize(component) {\n if (typeof component.update !== 'function') {\n throw new Error('Etch components must implement `update(props, children)`.')\n }\n\n let virtualNode = component.render()\n if (!isValidVirtualNode(virtualNode)) {\n let namePart = component.constructor && component.constructor.name ? ' in ' + component.constructor.name : ''\n throw new Error('invalid falsy value ' + virtualNode + ' returned from render()' + namePart)\n }\n\n applyContext(component, virtualNode)\n\n component.refs = {}\n component.virtualNode = virtualNode\n component.element = render(component.virtualNode, {\n refs: component.refs, listenerContext: component\n })\n}\n\n// This function receives a component that has already been associated with an\n// element via a previous call to `initialize` and updates this element by\n// calling `render` on the component.\n//\n// When called in normal circumstances, it uses the scheduler to defer this\n// update until the next animation frame, and will only perform one update of a\n// given component in a given frame. This means you can call `update`\n// repeatedly in a given tick without causing redundant updates.\n//\n// If this function called during another synchronous update (for example, as a\n// result of a call to `update` on a child component), the update is performed\n// synchronously.\n//\n// Returns a promise that will resolve when the requested update has been\n// completed.\nfunction update (component, replaceNode=true) {\n if (syncUpdatesInProgressCounter > 0) {\n updateSync(component, replaceNode)\n return Promise.resolve()\n }\n\n let scheduler = getScheduler()\n\n if (!componentsWithPendingUpdates.has(component)) {\n componentsWithPendingUpdates.add(component)\n scheduler.updateDocument(function () {\n componentsWithPendingUpdates.delete(component)\n updateSync(component, replaceNode)\n })\n }\n\n return scheduler.getNextUpdatePromise()\n}\n\n// Synchronsly updates the DOM element associated with a component object. .\n// This method assumes the presence of `.element` and `.virtualNode`\n// properties on the component, which are assigned in the `initialize`\n// function.\n//\n// It calls `render` on the component to obtain the desired state of the DOM,\n// then `diff`s it with the previous state and `patch`es the element based on\n// the resulting diff. During the patch operation, it pushes the component's\n// `refs` object to a shared stack so that references to DOM elements can be\n// updated.\n//\n// If `update` is called during the invocation of `updateSync`,\n// the requests are processed synchronously as well. We track whether this is\n// the case by incrementing and decrementing `syncUpdatesInProgressCounter`\n// around the call.\n//\n// For now, etch does not allow the root tag of the `render` method to change\n// between invocations, because we want to preserve a one-to-one relationship\n// between component objects and DOM elements for simplicity.\nfunction updateSync (component, replaceNode=true) {\n if (!isValidVirtualNode(component.virtualNode)) {\n throw new Error(`${component.constructor ? component.constructor.name + ' instance' : component} is not associated with a valid virtualNode. Perhaps this component was never initialized?`)\n }\n\n if (component.element == null) {\n throw new Error(`${component.constructor ? component.constructor.name + ' instance' : component} is not associated with a DOM element. Perhaps this component was never initialized?`)\n }\n\n let newVirtualNode = component.render()\n if (!isValidVirtualNode(newVirtualNode)) {\n const namePart = component.constructor && component.constructor.name ? ' in ' + component.constructor.name : ''\n throw new Error('invalid falsy value ' + newVirtualNode + ' returned from render()' + namePart)\n }\n\n applyContext(component, newVirtualNode)\n\n syncUpdatesInProgressCounter++\n let oldVirtualNode = component.virtualNode\n let oldDomNode = component.element\n let newDomNode = patch(oldVirtualNode, newVirtualNode, {\n refs: component.refs,\n listenerContext: component\n })\n component.virtualNode = newVirtualNode\n if (newDomNode !== oldDomNode && !replaceNode) {\n throw new Error('The root node type changed on update, but the update was performed with the replaceNode option set to false')\n } else {\n component.element = newDomNode\n }\n\n // We can safely perform additional writes after a DOM update synchronously,\n // but any reads need to be deferred until all writes are completed to avoid\n // DOM thrashing. Requested reads occur at the end of the the current frame\n // if this method was invoked via the scheduler. Otherwise, if `updateSync`\n // was invoked outside of the scheduler, the default scheduler will defer\n // reads until the next animation frame.\n if (typeof component.writeAfterUpdate === 'function') {\n component.writeAfterUpdate()\n }\n if (typeof component.readAfterUpdate === 'function') {\n getScheduler().readDocument(function () {\n component.readAfterUpdate()\n })\n }\n\n syncUpdatesInProgressCounter--\n}\n\n// Removes the component's associated element and calls `destroy` on any child\n// components. Normally, this function is asynchronous and will perform the\n// destruction on the next animation frame. If called as the result of another\n// update or destruction, it calls `destroy` on child components synchronously.\n// If called as the result of destroying a component higher in the DOM, the\n// element is not removed to avoid redundant DOM manipulation. Returns a promise\n// that resolves when the destruction is completed.\nfunction destroy (component, removeNode=true) {\n if (syncUpdatesInProgressCounter > 0 || syncDestructionsInProgressCounter > 0) {\n destroySync(component, removeNode)\n return Promise.resolve()\n }\n\n let scheduler = getScheduler()\n scheduler.updateDocument(function () {\n destroySync(component, removeNode)\n })\n return scheduler.getNextUpdatePromise()\n}\n\n// A synchronous version of `destroy`.\n//\n// Note that we track whether `destroy` calls are in progress and only remove\n// the element if we are not a nested call.\nfunction destroySync (component, removeNode=true) {\n syncDestructionsInProgressCounter++\n destroyChildComponents(component.virtualNode)\n if (syncDestructionsInProgressCounter === 1 && removeNode) component.element.remove()\n syncDestructionsInProgressCounter--\n}\n\nfunction destroyChildComponents(virtualNode) {\n if (virtualNode.component && typeof virtualNode.component.destroy === 'function') {\n virtualNode.component.destroy()\n } else if (virtualNode.children) {\n virtualNode.children.forEach(destroyChildComponents)\n }\n}\n\nmodule.exports = {\n initialize,\n update, updateSync,\n destroy, destroySync\n}\n","const dom = require('./dom')\nconst render = require('./render')\nconst {initialize, update, updateSync, destroy, destroySync} = require('./component-helpers')\nconst {setScheduler, getScheduler} = require('./scheduler-assignment')\n\nmodule.exports = {\n dom, render,\n initialize, update, updateSync, destroy, destroySync,\n setScheduler, getScheduler\n}\n","export function handlePromise(promise: Promise | undefined): void {\n if (promise === undefined) return\n // tslint:disable-next-line:strict-type-predicates no-unbound-method\n if (typeof promise.catch !== \"function\") {\n atom.notifications.addFatalError(\n \"Atom-Typescript: non-promise passed to handlePromise. Please report this.\",\n {\n stack: new Error().stack,\n dismissable: true,\n },\n )\n return\n }\n promise.catch((err: Error) => {\n atom.notifications.addFatalError(`Atom-Typescript error: ${err.message}`, {\n detail: err.toString(),\n stack: err.stack,\n dismissable: true,\n })\n })\n}\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.20';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '