UNPKG

129 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../custom-elements/ts_src/Patch/Native.ts","../../custom-elements/ts_src/Utilities.ts","../../custom-elements/ts_src/CustomElementInternals.ts","../../custom-elements/ts_src/custom-elements.ts","../../custom-elements/ts_src/CustomElementState.ts","../../custom-elements/ts_src/Deferred.ts","../../custom-elements/ts_src/DocumentConstructionObserver.ts","../../custom-elements/ts_src/CustomElementRegistry.ts","../../custom-elements/ts_src/Patch/Interface/ParentNode.ts","../../custom-elements/ts_src/Patch/Document.ts","../../custom-elements/ts_src/Patch/Interface/ChildNode.ts","../../custom-elements/ts_src/Patch/Element.ts","../../custom-elements/ts_src/AlreadyConstructedMarker.ts","../../custom-elements/ts_src/Patch/HTMLElement.ts","../../custom-elements/ts_src/Patch/Node.ts","../../custom-elements/ts_src/Patch/DocumentFragment.ts"],"names":["Document_createElement","window","Document","prototype","createElement","Document_createElementNS","createElementNS","Document_importNode","importNode","Document_prepend","Document_append","DocumentFragment_prepend","DocumentFragment","DocumentFragment_append","Node_cloneNode","Node","cloneNode","Node_appendChild","appendChild","Node_insertBefore","insertBefore","Node_removeChild","removeChild","Node_replaceChild","replaceChild","Node_textContent","Object","getOwnPropertyDescriptor","Element_attachShadow","Element","Element_innerHTML","Element_getAttribute","getAttribute","Element_setAttribute","setAttribute","Element_removeAttribute","removeAttribute","Element_getAttributeNS","getAttributeNS","Element_setAttributeNS","setAttributeNS","Element_removeAttributeNS","removeAttributeNS","Element_insertAdjacentElement","Element_insertAdjacentHTML","Element_prepend","Element_append","Element_before","Element_after","Element_replaceWith","Element_remove","HTMLElement","HTMLElement_innerHTML","HTMLElement_insertAdjacentElement","HTMLElement_insertAdjacentHTML","reservedElementNameSet","Set","forEach","item","add","isValidCustomElementName","localName","reserved","has","validForm","test","nativeContains","document","contains","bind","documentElement","isConnected","node","nativeValue","undefined","current","__CE_isImportDocument","parentNode","ShadowRoot","host","childrenFromFragment","fragment","nativeChildren","children","Array","slice","call","n","firstChild","nextSibling","nodeType","ELEMENT_NODE","push","nextSiblingOrAncestorSibling","root","start","walkDeepDescendantElements","callback","visitedImports","element","import","child","shadowRoot","__CE_shadowRoot","constructor","CustomElementInternals","noDocumentConstructionObserver","priorCustomElements","shadyDomFastWalk","_patchesNode","_patchesElement","_hasPatches","useDocumentConstructionObserver","forEachElement","sd","querySelectorAll","elements","i","length","addNodePatch","patch","addElementPatch","patchTree","patchElement","__CE_patched","connectTree","custom","__CE_state","connectedCallback","upgradeReaction","disconnectTree","disconnectedCallback","patchAndUpgradeTree","options","upgrade","gatherElements","__CE_registry","readyState","__CE_documentLoadHandled","addEventListener","clonedVisitedImports","delete","ownerDocument","registry","doc","defaultView","internal_localNameToDefinition","definition","constructionStack","result","constructorFunction","Error","pop","e","failed","__CE_definition","attributeChangedCallback","hasAttributes","observedAttributes","name","value","_upgradeAnElement","reportTheException","oldValue","newValue","namespace","indexOf","createAnElement","NS_HTML","namespaceURI","setPrototypeOf","HTMLUnknownElement","arg","message","filename","lineno","colno","sourceURL","fileName","line","lineNumber","column","columnNumber","String","event","ErrorEvent","initErrorEvent","cancelable","error","createEvent","preventDefault","event.preventDefault","defineProperty","configurable","get","enumerable","dispatchEvent","defaultPrevented","console","Deferred","_value","_promise","Promise","resolve","_resolve","DocumentConstructionObserver","internals","_observer","_internals","_document","MutationObserver","_handleMutations","observe","childList","subtree","disconnect","mutations","addedNodes","j","CustomElementRegistry","_localNameToConstructorGetter","Map","_localNameToDefinition","_constructorToDefinition","_elementDefinitionIsRunning","_whenDefinedDeferred","_flushCallback","this._flushCallback","fn","_flushPending","_unflushedLocalNames","_documentConstructionObserver","polyfillDefineLazy","constructorGetter","Function","TypeError","internal_assertCanDefineLocalName","set","_flush","define","internal_reifyDefinition","SyntaxError","getCallback","callbackValue","adoptedCallback","elementsWithStableDefinitions","unflushedLocalNames","elementsWithPendingDefinitions","pendingElements","pendingUpgradableElements","deferred","whenDefined","reject","prior","anyDefinitionExists","definitionHasFlushed","polyfillWrapFlushCallback","outer","inner","flush","existingDefinition","destination","builtIn","appendPrependPatch","builtInMethod","nodes","flattenedNodes","connectedElements","apply","prepend","append","Document.prototype.createElement","Document.prototype.importNode","deep","clone","Document.prototype.createElementNS","PatchParentNode","beforeAfterPatch","before","after","replaceWith","destination.replaceWith","wasConnected","remove","destination.remove","patch_innerHTML","baseDescriptor","htmlString","removedElements","patch_insertAdjacentElement","baseMethod","insertAdjacentElement","destination.insertAdjacentElement","position","insertedElement","patch_insertAdjacentHTML","upgradeNodesInRange","end","insertAdjacentHTML","destination.insertAdjacentHTML","text","strPosition","toLowerCase","marker","previousSibling","lastChild","attachShadow","Element.prototype.attachShadow","init","innerHTML","assignedValue","isTemplate","content","rawElement","childNodes","container","Element.prototype.setAttribute","Element.prototype.setAttributeNS","Element.prototype.removeAttribute","Element.prototype.removeAttributeNS","PatchChildNode","alreadyConstructedMarker","PatchedHTMLElement","lastIndex","writable","patch_textContent","TEXT_NODE","removedNodes","childNodesLength","Node.prototype.insertBefore","refNode","insertedNodes","nativeResult","nodeWasConnectedElement","Node.prototype.appendChild","Node.prototype.cloneNode","Node.prototype.removeChild","Node.prototype.replaceChild","nodeToInsert","nodeToRemove","nodeToInsertWasConnectedElement","thisIsConnected","parts","COMMENT_NODE","textContent","join","createTextNode","installPolyfill","PatchHTMLElement","PatchDocument","PatchNode","PatchElement","customElements"],"mappings":"A;;;;;;;;;;;;;;;;;;;aAWO,IAAMA,EAAyBC,MAAzBD,CAAgCE,QAAhCF,CAAyCG,SAAzCH,CAAmDI,aAAzD,CACMC,EACXJ,MADWI,CACJH,QADIG,CACKF,SADLE,CACeC,eAFrB,CAGMC,GAAsBN,MAAtBM,CAA6BL,QAA7BK,CAAsCJ,SAAtCI,CAAgDC,UAHtD,CAKMC,GAAmBR,MAAnBQ,CAA0BP,QAA1BO,CAAmCN,SAAnCM,CAA6C,OALnD,CAMMC,GAAkBT,MAAlBS,CAAyBR,QAAzBQ,CAAkCP,SAAlCO,CAA4C,MANlD,CAOMC,GACXV,MADWU,CACJC,gBADID,CACaR,SADbQ,CACuB,OAR7B,CASME,GACXZ,MADWY,CACJD,gBADIC,CACaV,SADbU,CACuB,MAV7B,CAWMC,EAAiBb,MAAjBa,CAAwBC,IAAxBD,CAA6BX,SAA7BW,CAAuCE,SAX7C,CAYMC,EAAmBhB,MAAnBgB,CAA0BF,IAA1BE,CAA+Bd,SAA/Bc,CAAyCC,WAZ/C,CAaMC,EAAoBlB,MAApBkB,CAA2BJ,IAA3BI,CAAgChB,SAAhCgB,CAA0CC,YAbhD,CAcMC,EAAmBpB,MAAnBoB,CAA0BN,IAA1BM,CAA+BlB,SAA/BkB,CAAyCC,WAd/C,CAeMC,EAAoBtB,MAApBsB,CAA2BR,IAA3BQ,CAAgCpB,SAAhCoB,CAA0CC,YAfhD,CAgBMC,EAAmBC,MAAA,CAAOC,wBAAP,CAC9B1B,MAD8B,CACvBc,IADuB,CAClBZ,SADkB;AAE9B,aAF8B,CAhBzB,CAoBMyB,EAAuB3B,MAAvB2B,CAA8BC,OAA9BD,CAAsCzB,SAAtCyB,CAAgD,YApBtD,CAqBME,EAAoBJ,MAAA,CAAOC,wBAAP,CAC/B1B,MAD+B,CACxB4B,OADwB,CAChB1B,SADgB,CAE/B,WAF+B,CArB1B,CAyBM4B,EAAuB9B,MAAvB8B,CAA8BF,OAA9BE,CAAsC5B,SAAtC4B,CAAgDC,YAzBtD,CA0BMC,EAAuBhC,MAAvBgC,CAA8BJ,OAA9BI,CAAsC9B,SAAtC8B,CAAgDC,YA1BtD,CA2BMC,EAA0BlC,MAA1BkC,CAAiCN,OAAjCM,CAAyChC,SAAzCgC,CAAmDC,eA3BzD,CA4BMC,EAAyBpC,MAAzBoC,CAAgCR,OAAhCQ,CAAwClC,SAAxCkC,CAAkDC,cA5BxD,CA6BMC,EAAyBtC,MAAzBsC,CAAgCV,OAAhCU,CAAwCpC,SAAxCoC,CAAkDC,cA7BxD,CA8BMC,EACXxC,MADWwC,CACJZ,OADIY,CACItC,SADJsC,CACcC,iBA/BpB,CAgCMC,EACX1C,MADW0C,CACJd,OADIc,CACIxC,SADJwC,CACc,qBAjCpB,CAkCMC,EACX3C,MADW2C,CACJf,OADIe,CACIzC,SADJyC,CACc,kBAnCpB,CAoCMC,GAAkB5C,MAAlB4C,CAAyBhB,OAAzBgB,CAAiC1C,SAAjC0C,CAA2C,OApCjD;AAqCMC,GAAiB7C,MAAjB6C,CAAwBjB,OAAxBiB,CAAgC3C,SAAhC2C,CAA0C,MArChD,CAsCMC,GAAiB9C,MAAjB8C,CAAwBlB,OAAxBkB,CAAgC5C,SAAhC4C,CAA0C,MAtChD,CAuCMC,GAAgB/C,MAAhB+C,CAAuBnB,OAAvBmB,CAA+B7C,SAA/B6C,CAAyC,KAvC/C,CAwCMC,GAAsBhD,MAAtBgD,CAA6BpB,OAA7BoB,CAAqC9C,SAArC8C,CAA+C,WAxCrD,CAyCMC,GAAiBjD,MAAjBiD,CAAwBrB,OAAxBqB,CAAgC/C,SAAhC+C,CAA0C,MAzChD,CA0CMC,GAAclD,MAAdkD,CAAqBA,WA1C3B,CA2CMC,EAAwB1B,MAAA,CAAOC,wBAAP,CACnC1B,MADmC,CAC5BkD,WAD4B,CAChBhD,SADgB,CAEnC,WAFmC,CA3C9B,CA+CMkD,GACXpD,MADWoD,CACJF,WADIE,CACQlD,SADRkD,CACkB,qBAhDxB,CAiDMC,GACXrD,MADWqD,CACJH,WADIG,CACQnD,SADRmD,CACkB,kB,CClD/B,IAAMC,GAAyB,IAAIC,GAEnC,mHAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CASEC,OATF,CASU,QAAA,CAACC,CAAD,CAAU,CAAA,MAAAH,GAAA,CAAuBI,GAAvB,CAA2BD,CAA3B,CAAA,CATpB,CAWME,SAAUA,GAAwB,CAACC,CAAD,CAAkB,CACxD,IAAMC,EAAWP,EAAA,CAAuBQ,GAAvB,CAA2BF,CAA3B,CACXG,EAAAA,CAAY,iCAAA,CAAkCC,IAAlC,CAAuCJ,CAAvC,CAClB,OAAO,CAACC,CAAR,EAAoBE,CAHoC,CAO1D,IAAME,GAAiBC,QAAA,CAASC,QAAT,CACnBD,QAAA,CAASC,QAAT,CAAkBC,IAAlB,CAAuBF,QAAvB,CADmB,CAEnBA,QAAA,CAASG,eAAT,CAAyBF,QAAzB,CAAkCC,IAAlC,CAAuCF,QAAvC,CAAgDG,eAAhD,CAEEC;QAAUA,EAAW,CAACC,CAAD,CAAW,CAEpC,IAAMC,EAAcD,CAAdC,CAAmBF,WACzB,IAAoBG,IAAAA,EAApB,GAAID,CAAJ,CACE,MAAOA,EAIT,IAAIP,EAAA,CAAeM,CAAf,CAAJ,CACE,MAAO,CAAA,CAIT,KAAA,CACEG,CADF,EAEE,EAAEA,CAAF,CAAUC,qBAAV,EAAmCD,CAAnC,WAAsDzE,SAAtD,CAFF,CAAA,CAIEyE,CAAA,CACEA,CADF,CACUE,UADV,GAEG5E,MAAA,CAAO6E,UAAP,EAAqBH,CAArB,WAAwCG,WAAxC,CACGH,CADH,CACWI,IADX,CAEGL,IAAAA,EAJN,CAMF,OAAO,EACLC,CAAAA,CADK,EAEJ,EAAAA,CAAA,CAAQC,qBAAR,EAAiCD,CAAjC,WAAoDzE,SAApD,CAFI,CAvB6B,CA6BhC8E,QAAUA,EAAoB,CAClCC,CADkC,CACR,CAG1B,IAAMC,EAAiBD,CAAjBC,CAA0BC,QAChC,IAAID,CAAJ,CACE,MAAOE,MAAA,CAAMjF,SAAN,CAAgBkF,KAAhB,CAAsBC,IAAtB,CAA2BJ,CAA3B,CAEHC,EAAAA,CAA2B,EACjC,KAASI,CAAT,CAAaN,CAAb,CAAsBO,UAAtB,CAAkCD,CAAlC,CAAqCA,CAArC,CAAyCA,CAAzC,CAA2CE,WAA3C,CACMF,CAAJ,CAAMG,QAAN,GAAmB3E,IAAnB,CAAwB4E,YAAxB,EACER,CAAA,CAASS,IAAT,CAAcL,CAAd,CAGJ,OAAOJ,EAbmB;AAgB5BU,QAASA,EAA4B,CAACC,CAAD,CAAaC,CAAb,CAAwB,CAE3D,IAAA,CAAOvB,CAAP,EAAeA,CAAf,GAAwBsB,CAAxB,EAAgC,CAACtB,CAAD,CAAMiB,WAAtC,CAAA,CACEjB,CAAA,CAAOA,CAAP,CAAYK,UAEd,OAAQL,EAAD,EAASA,CAAT,GAAkBsB,CAAlB,CAAgCtB,CAAhC,CAAqCiB,WAArC,CAAyB,IAL2B;AAcvDO,QAAUA,EAA0B,CACxCF,CADwC,CAExCG,CAFwC,CAGxCC,CAHwC,CAGd,CAG1B,IADA,IAAI1B,EAAoBsB,CACxB,CAAOtB,CAAP,CAAA,CAAa,CACX,GAAIA,CAAJ,CAASkB,QAAT,GAAsB3E,IAAtB,CAA2B4E,YAA3B,CAAyC,CACvC,IAAMQ,EAAU3B,CAEhByB,EAAA,CAASE,CAAT,CAEA,KAAMtC,EAAYsC,CAAZtC,CAAoBA,SAC1B,IAAkB,MAAlB,GAAIA,CAAJ,EAA4D,QAA5D,GAA4BsC,CAAA,CAAQnE,YAAR,CAAqB,KAArB,CAA5B,CAAsE,CAG9DxB,CAAAA,CAAc2F,CAAd3F,CAA0C4F,MACzB1B,KAAAA,EAAvB,GAAIwB,CAAJ,GACEA,CADF,CACmB,IAAI1C,GADvB,CAGA,IAAIhD,CAAJ,WAA0BO,KAA1B,EAAkC,CAACmF,CAAA,CAAenC,GAAf,CAAmBvD,CAAnB,CAAnC,CAIE,IAFA0F,CAAA,CAAevC,GAAf,CAAmBnD,CAAnB,CAGM6F,CAAAA,CAAAA,CAAQ7F,CAAR6F,CAAmBb,UADzB,CAEEa,CAFF,CAGEA,CAHF,CAGUA,CAHV,CAGgBZ,WAHhB,CAKEO,CAAA,CAA2BK,CAA3B,CAAkCJ,CAAlC,CAA4CC,CAA5C,CAOJ1B,EAAA,CAAOqB,CAAA,CAA6BC,CAA7B,CAAmCK,CAAnC,CACP,SAxBoE,CAAtE,IAyBO,IAAkB,UAAlB,GAAItC,CAAJ,CAA8B,CAKnCW,CAAA,CAAOqB,CAAA,CAA6BC,CAA7B,CAAmCK,CAAnC,CACP,SANmC,CAWrC,GADMG,CACN,CADmBH,CACnB,CAD2BI,eAC3B,CACE,IACMF,CADN,CACcC,CADd,CACyBd,UADzB,CAEEa,CAFF,CAGEA,CAHF,CAGUA,CAHV,CAGgBZ,WAHhB,CAKEO,CAAA,CAA2BK,CAA3B,CAAkCJ,CAAlC,CAA4CC,CAA5C,CAhDmC,CAqDzC1B,CAAA,CAAsBA,CAjEjB,CAAMgB,UAAN,CAiEiBhB,CAjEjB,CACGgB,UADH,CAEHK,CAAA,CA+DcC,CA/Dd,CA+DoBtB,CA/DpB,CASS,CAHa,C,CCzE1BgC,QAPmBC,EAOnB,EAGC,CCNsCC,IAAAA,EAAAA,EAAqB,IAArBA,GAAEC,CAAFD,EAAqB,IAAA,EAArBA,GAAEC,CAAFD,EAAE,CAAAC,CAAA,CACvC,8BADqCD,CAAAA,CAGdE,EAAAA,EAAqB,IAArBA,GAAED,CAAFC,EAAqB,IAAA,EAArBA,GAAED,CAAFC,EAAE,CAAAD,CAAA,CAAsB,gBAAxBC,CDNR,KAAA,CAAAC,CAAA,CAA4C,EAC5C,KAAA,CAAAC,CAAA,CAAkD,EAC3D,KAAA,CAAAC,CAAA,CAAc,CAAA,CAQpB,KAAA,CAAKH,gBAAL,CAAwBA,CACxB,KAAA,CAAKI,CAAL,CAAuC,CAACN,CAFzC,CAKDO,QAAA,EAAc,CAAdA,CAAc,CACZzC,CADY,CAEZyB,CAFY,CAGZC,CAHY,CAGc,CAE1B,IAAMgB,EAAKjH,MAALiH,CAAY,QAClB,IAAI,CAAJ,CAASN,gBAAT,EAA6BM,CAA7B,EAAmCA,CAAnC,CAAsC,KAAtC,CAME,IALI1C,CAKC2C,CALIzB,QAKJyB,GALiBpG,IAKjBoG,CALsBxB,YAKtBwB,EAHHlB,CAAA,CADgBzB,CAChB,CAGG2C,CAAA3C,CAAA2C,CAAiBA,gBAAtB,CAEE,IADMC,CACGC,CADQH,CAAA,CAAG,aAAH,CAAoBC,gBAApB,CAAqC7B,IAArC,CAA0Cd,CAA1C,CAAgD,GAAhD,CACR6C,CAAAA,CAAAA,CAAI,CAAb,CAAgBA,CAAhB,CAAoBD,CAApB,CAA6BE,MAA7B,CAAqCD,CAAA,EAArC,CACEpB,CAAA,CAASmB,CAAA,CAASC,CAAT,CAAT,CAHJ,CANF,IAaYrB,EAAV,CAAqCxB,CAArC,CAA2CyB,CAA3C,CAAqDC,CAArD,CAhBwB,CAoB5BqB,QAAA,GAAY,CAAZA,CAAY,CAACC,CAAD,CAA4B,CACtC,CAAA,CAAKT,CAAL,CAAmB,CAAA,CACnB,EAAA,CAAKF,CAAL,CAAkBjB,IAAlB,CAAuB4B,CAAvB,CAFsC,CAKxCC,QAAA,GAAe,CAAfA,CAAe,CAACD,CAAD,CAAkC,CAC/C,CAAA,CAAKT,CAAL,CAAmB,CAAA,CACnB,EAAA,CAAKD,CAAL,CAAqBlB,IAArB,CAA0B4B,CAA1B,CAF+C;AAKjDE,QAAA,EAAS,CAATA,CAAS,CAAClD,CAAD,CAAW,CACb,CAAL,CAAUuC,CAAV,EAIAE,CAAA,CAAAA,CAAA,CAAoBzC,CAApB,CAA0B,QAAA,CAAC2B,CAAD,CAAa,CAAA,MAAAwB,EAAA,CALrBA,CAKqB,CAAkBxB,CAAlB,CAAA,CAAvC,CALkB,CAuBpBwB,QAAA,EAAY,CAAZA,CAAY,CAACxB,CAAD,CAAiB,CAC3B,GAAK,CAAL,CAAUY,CAAV,EAIIa,CAAAzB,CAAAyB,CAAQA,YAJZ,CAIA,CAGAzB,CAAA,CAAQyB,YAAR,CAAuB,CAAA,CAEvB,KAAK,IAAIP,EAAI,CAAb,CAAgBA,CAAhB,CAAoB,CAApB,CAAyBR,CAAzB,CAAsCS,MAAtC,CAA8CD,CAAA,EAA9C,CACE,CAAA,CAAKR,CAAL,CAAkBQ,CAAlB,CAAA,CAAqBlB,CAArB,CAGF,KAASkB,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoB,CAApB,CAAyBP,CAAzB,CAAyCQ,MAAzC,CAAiDD,CAAA,EAAjD,CACE,CAAA,CAAKP,CAAL,CAAqBO,CAArB,CAAA,CAAwBlB,CAAxB,CAVF,CAL2B,CAmB7B0B,QAAA,EAAW,CAAXA,CAAW,CAAC/B,CAAD,CAAW,CACpB,IAAMsB,EAA2B,EAEjCH,EAAA,CAAAA,CAAA,CAAoBnB,CAApB,CAA0B,QAAA,CAACK,CAAD,CAAa,CAAA,MAAAiB,EAAA,CAASxB,IAAT,CAAcO,CAAd,CAAA,CAAvC,CAEA,KAASkB,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBD,CAApB,CAA6BE,MAA7B,CAAqCD,CAAA,EAArC,CAA0C,CACxC,IAAMlB,EAAUiB,CAAA,CAASC,CAAT,CEtGZS,EFuGJ,GAAI3B,CAAJ,CAAY4B,UAAZ,CACE,CAAA,CAAKC,iBAAL,CAAuB7B,CAAvB,CADF,CAGE8B,CAAA,CAAAA,CAAA,CAAqB9B,CAArB,CALsC,CALtB,CAetB+B,QAAA,EAAc,CAAdA,CAAc,CAACpC,CAAD,CAAW,CACvB,IAAMsB,EAA2B,EAEjCH,EAAA,CAAAA,CAAA,CAAoBnB,CAApB,CAA0B,QAAA,CAACK,CAAD,CAAa,CAAA,MAAAiB,EAAA,CAASxB,IAAT,CAAcO,CAAd,CAAA,CAAvC,CAEA,KAASkB,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBD,CAApB,CAA6BE,MAA7B,CAAqCD,CAAA,EAArC,CAA0C,CACxC,IAAMlB,EAAUiB,CAAA,CAASC,CAAT,CErHZS,EFsHJ,GAAI3B,CAAJ,CAAY4B,UAAZ,EACE,CAAA,CAAKI,oBAAL,CAA0BhC,CAA1B,CAHsC,CALnB;AA0EzBiC,QAAA,EAAmB,CAAnBA,CAAmB,CACjBtC,CADiB,CAEjBuC,CAFiB,CAKX,CAHNA,CAAA,CAAA,IAAA,EAAA,GAAAA,CAAA,CAGI,EAHJ,CAAAA,CAKA,KAAMnC,EAAiBmC,CAAjBnC,CAAyBA,CAA/B,CACMoC,EACJD,CADIC,CACIA,OADJA,EACgB,QAAA,CAACnC,CAAD,CAAa,CAAA,MAAA8B,EAAA,CAJ7BA,CAI6B,CAAqB9B,CAArB,CAAA,CAFnC,CAIMiB,EAA2B,EA0DjCH,EAAA,CAAAA,CAAA,CAAoBnB,CAApB,CAxDuByC,QAAA,CAACpC,CAAD,CAAqB,CARtC,CASJ,CAASY,CAAT,EACEY,CAAA,CAVEA,CAUF,CAAkBxB,CAAlB,CAEF,IACwB,MADxB,GACEA,CADF,CACUtC,SADV,EAEkC,QAFlC,GAEEsC,CAAA,CAAQnE,YAAR,CAAqB,KAArB,CAFF,CAGE,CAIA,IAAMxB,EAHa2F,CAGb3F,CAAwB4F,MAE1B5F,EAAJ,WAA0BO,KAA1B,GACEP,CAEA,CAFWoE,qBAEX,CAFmC,CAAA,CAEnC,CAAApE,CAAA,CAAWgI,aAAX,CAA2BrE,QAA3B,CAAoCqE,aAHtC,CAMIhI,EAAJ,EAA4C,UAA5C,GAAkBA,CAAlB,CAA6BiI,UAA7B,CACEjI,CADF,CACakI,wBADb,CACwC,CAAA,CADxC,CAKEvC,CAAA,CAAQwC,gBAAR,CAAyB,MAAzB,CAAiC,QAAA,EAAK,CACpC,IAAMnI,EAjBS2F,CAiBT3F,CAAwB4F,MAE9B,IAAIsC,CAAAlI,CAAAkI,CAAWA,wBAAf,CAAA,CAGAlI,CAAA,CAAWkI,wBAAX,CAAsC,CAAA,CAOtC,KAAME,EAAuB,IAAIpF,GAC7B0C,EAAJ,GAEEA,CAAA,CAAezC,OAAf,CAAuB,QAAA,CAACC,CAAD,CAAU,CAAA,MAAAkF,EAAA,CAAqBjF,GAArB,CAAyBD,CAAzB,CAAA,CAAjC,CACA;AAAAkF,CAAA,CAAqBC,MAArB,CAA4BrI,CAA5B,CAHF,CAKA4H,EAAA,CAnDFA,CAmDE,CAAyB5H,CAAzB,CAAqC,CACnC0F,EAAgB0C,CADmB,CAEnCN,QAAAA,CAFmC,CAArC,CAhBA,CAHoC,CAAtC,CAjBF,CAHF,IA8CElB,EAAA,CAASxB,IAAT,CAAcO,CAAd,CAlDwC,CAwD5C,CAA0CD,CAA1C,CAEA,KAASmB,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBD,CAApB,CAA6BE,MAA7B,CAAqCD,CAAA,EAArC,CACEiB,CAAA,CAAQlB,CAAA,CAASC,CAAT,CAAR,CAnEI;AAuERY,QAAA,EAAe,CAAfA,CAAe,CAAC9B,CAAD,CAAqB,CAClC,GAAI,CAEA2C,IAAAA,EAAA3C,CAAA2C,CAAQA,aAARA,CAwHEC,EAAWC,CAAXD,CAAeP,aAmBrB,KAAA,EAlBKO,CAAL,GAcKC,CAdL,CAcSC,WAdT,EAcyBD,CAdzB,CAc6BpE,qBAd7B,EAkBOsE,CAAA,CAAAH,CAAA,CA1IH5C,CA0IG,CA1IKtC,SA0IL,CAlBP,CAJiB,IAAA,EAlHf,IAJmBsF,CAInB,EAgBmBzE,IAAAA,EAhBnB,GACyByB,CADzB,CAe2B4B,UAf3B,CAgBF,CApBqBoB,CAwBrB,CAAWC,iBAAX,CAA6BxD,IAA7B,CAnB2BO,CAmB3B,CAEA,IAAI,CACF,GAAI,CAEF,GADekD,IA5BEF,CA4BFE,CAAeC,mBAC9B,GAxBuBnD,CAwBvB,CACE,KAAUoD,MAAJ,CACJ,4EADI,CAAN,CAHA,CAAJ,OAOU,CAlCSJ,CAmCjB,CAAWC,iBAAX,CAA6BI,GAA7B,EADQ,CARR,CAWF,MAAOC,CAAP,CAAU,CAEV,KAlCyBtD,EAkCnBsD,CADE1B,UACF0B,CE7SFC,CF6SED,CAAAA,CAAN,CAFU,CAhCetD,CAqC3B,CAAQ4B,UAAR,CEjTMD,CF4QqB3B,EAsC3B,CAAQwD,eAAR,CA3CqBR,CA8CrB,IA9CqBA,CA8CrB,CAAeS,wBAAf,EAzC2BzD,CAyCgB,CAAQ0D,aAAR,EAA3C,CAAoE,CAClE,IAAMC,EA/CaX,CA+CbW,CAAgCA,kBACtC;IAASzC,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoByC,CAApB,CAAuCxC,MAAvC,CAA+CD,CAAA,EAA/C,CAAoD,CAClD,IAAM0C,EAAOD,CAAA,CAAmBzC,CAAnB,CAAb,CACM2C,EA7CiB7D,CA6CT,CAAQnE,YAAR,CAAqB+H,CAArB,CACA,KAAd,GAAIC,CAAJ,EA9CAC,CA+CE,CAAKL,wBAAL,CA/CqBzD,CA+CrB,CAAuC4D,CAAvC,CAA6C,IAA7C,CAAmDC,CAAnD,CAA0D,IAA1D,CAJgD,CAFc,CAWtDzF,CAAV,CApDuB4B,CAoDvB,CAAJ,EApDI8D,CAqDF,CAAKjC,iBAAL,CArDyB7B,CAqDzB,CAtCF,CArBI,CAQF,MAAOsD,CAAP,CAAmB,CACnBS,CAAA,CAAwBT,CAAxB,CADmB,CATa,CAgEpC,CAAAzB,CAAA,SAAAA,CAAA,iBAAAA,CAAAA,QAAiB,CAAC7B,CAAD,CAAiB,CAChC,IAAMgD,EAAahD,CAAbgD,CAAqBQ,eAC3B,IAAIR,CAAJ,CAAenB,iBAAf,CACE,GAAI,CACFmB,CAAA,CAAWnB,iBAAX,CAA6B1C,IAA7B,CAAkCa,CAAlC,CADE,CAEF,MAAOsD,CAAP,CAAmB,CACnBS,CAAA,CAAwBT,CAAxB,CADmB,CALS,CAWlC,EAAAtB,CAAA,SAAAA,CAAA,oBAAAA,CAAAA,QAAoB,CAAChC,CAAD,CAAiB,CACnC,IAAMgD,EAAahD,CAAbgD,CAAqBQ,eAC3B,IAAIR,CAAJ,CAAehB,oBAAf,CACE,GAAI,CACFgB,CAAA,CAAWhB,oBAAX,CAAgC7C,IAAhC,CAAqCa,CAArC,CADE,CAEF,MAAOsD,CAAP,CAAmB,CACnBS,CAAA,CAAwBT,CAAxB,CADmB,CALY,CAWrC;CAAAG,CAAA,SAAAA,CAAA,wBAAAA,CAAAA,QAAwB,CACtBzD,CADsB,CAEtB4D,CAFsB,CAGtBI,CAHsB,CAItBC,CAJsB,CAKtBC,CALsB,CAKG,CAEzB,IAAMlB,EAAahD,CAAbgD,CAAqBQ,eAC3B,IACER,CADF,CACaS,wBADb,EAEgD,EAFhD,CAEET,CAAA,CAAWW,kBAAX,CAA8BQ,OAA9B,CAAsCP,CAAtC,CAFF,CAIE,GAAI,CACFZ,CAAA,CAAWS,wBAAX,CAAoCtE,IAApC,CACEa,CADF,CAEE4D,CAFF,CAGEI,CAHF,CAIEC,CAJF,CAKEC,CALF,CADE,CAQF,MAAOZ,CAAP,CAAmB,CACnBS,CAAA,CAAwBT,CAAxB,CADmB,CAfE,CA+D3Bc;QAAA,GAAe,CAAfA,CAAe,CACbvB,CADa,CAEbnF,CAFa,CAGbwG,CAHa,CAGW,CAExB,IAAMtB,EAAWC,CAAXD,CAAeP,aAGrB,IAAIO,CAAJ,GAA+B,IAA/B,GAAiBsB,CAAjB,EAnaYG,8BAmaZ,GAAuCH,CAAvC,IACQlB,CADR,CACuBD,CAAA,CAAAH,CAAA,CACnBlF,CADmB,CADvB,EAKI,GAAI,CACF,IAAMwF,EAAS,IAAIF,CAAJ,CAAeG,mBAM9B,IACwB5E,IAAAA,EADxB,GACE2E,CADF,CACStB,UADT,EAE6BrD,IAAAA,EAF7B,GAEE2E,CAFF,CAESM,eAFT,CAIE,KAAUJ,MAAJ,CACJ,uBADI,CACoB1F,CADpB,CACJ,6EADI,CAAN,CAOF,GA1bM2G,8BA0bN,GAAInB,CAAJ,CAAWoB,YAAX,CACE,KAAUlB,MAAJ,CACJ,uBADI,CACoB1F,CADpB,CACJ,oEADI,CAAN,CAUF,GAAIwF,CAAA,CAAOQ,aAAP,EAAJ,CACE,KAAUN,MAAJ,CACJ,uBADI;AACoB1F,CADpB,CACJ,0DADI,CAAN,CAQF,GAA0B,IAA1B,GAAIwF,CAAJ,CAAW7D,UAAX,CACE,KAAU+D,MAAJ,CACJ,uBADI,CACoB1F,CADpB,CACJ,wDADI,CAAN,CAMF,GAA0B,IAA1B,GAAIwF,CAAJ,CAAWxE,UAAX,CACE,KAAU0E,MAAJ,CACJ,uBADI,CACoB1F,CADpB,CACJ,yDADI,CAAN,CAMF,GAAIwF,CAAJ,CAAWP,aAAX,GAA6BE,CAA7B,CACE,KAAUO,MAAJ,CACJ,uBADI,CACoB1F,CADpB,CACJ,2DADI,CAAN,CAMF,GAAIwF,CAAJ,CAAWxF,SAAX,GAAyBA,CAAzB,CACE,KAAU0F,MAAJ,CACJ,uBADI,CACoB1F,CADpB,CACJ,uDADI,CAAN;AAMF,MAAOwF,EAlEL,CAmEF,MAAOI,CAAP,CAAmB,CAcnB,MAbAS,EAAA,CAAwBT,CAAxB,CAaOJ,CARDA,CAQCA,CAPS,IAAd,GAAAgB,CAAA,CACWrK,CAAP,CAA8BsF,IAA9B,CAAmC0D,CAAnC,CAAwCnF,CAAxC,CADJ,CAEWxD,CAAP,CAAgCiF,IAAhC,CAAqC0D,CAArC,CAA0CqB,CAA1C,CAAqDxG,CAArD,CAKCwF,CAJP3H,MAAA,CAAOgJ,cAAP,CAAsBrB,CAAtB,CAA8BsB,kBAA9B,CAAiDxK,SAAjD,CAIOkJ,CAHPA,CAGOA,CAHAtB,UAGAsB,CE5fPK,CF4fOL,CAFPA,CAEOA,CAFAM,eAEAN,CAFkB3E,IAAAA,EAElB2E,CADP1B,CAAA,CAAAA,CAAA,CAAkB0B,CAAlB,CACOA,CAAAA,CAdY,CAmBnBA,CAAAA,CACU,IAAd,GAAAgB,CAAA,CACWrK,CAAP,CAA8BsF,IAA9B,CAAmC0D,CAAnC,CAAwCnF,CAAxC,CADJ,CAEWxD,CAAP,CAAgCiF,IAAhC,CAAqC0D,CAArC,CAA0CqB,CAA1C,CAAqDxG,CAArD,CACN8D,EAAA,CAAAA,CAAA,CAAkB0B,CAAlB,CACA,OAAOA,EArGiB;AA6G1Ba,QAAA,EAAkB,CAACU,CAAD,CAAa,CAa7B,IAAIC,EAAU,EAAd,CACIC,EAAW,EADf,CAEIC,EAAS,CAFb,CAGIC,EAAQ,CAERJ,EAAJ,WAAmBrB,MAAnB,EAEEsB,CAGA,CAJcD,CAId,CAHgBC,OAGhB,CAFAC,CAEA,CAJcF,CAId,CAFiBK,SAEjB,EAJcL,CAId,CAFoCM,QAEpC,EAFgD,EAEhD,CADAH,CACA,CAJcH,CAId,CADeO,IACf,EAJcP,CAId,CAD6BQ,UAC7B,EAD2C,CAC3C,CAAAJ,CAAA,CAJcJ,CAId,CAAcS,MAAd,EAJcT,CAId,CAA8BU,YAA9B,EAA8C,CALhD,EAOET,CAPF,CAOY,WAPZ,CAOwBU,MAAA,CAAOX,CAAP,CAGxB,KAAIY,EAAgC9G,IAAAA,EACQA,KAAAA,EAA5C,GAAI+G,UAAJ,CAAetL,SAAf,CAAyBuL,cAAzB,CACEF,CADF,CACU,IAAIC,UAAJ,CAAe,OAAf,CAAwB,CAC9BE,WAAY,CAAA,CADkB,CAE9Bd,QAAAA,CAF8B,CAG9BC,SAAAA,CAH8B,CAI9BC,OAAAA,CAJ8B,CAK9BC,MAAAA,CAL8B,CAM9BY,MAAOhB,CANuB,CAAxB,CADV,EAUEY,CAKA,CALQrH,QAAA,CAAS0H,WAAT,CAAqB,YAArB,CAKR,CAHAL,CAAA,CAAME,cAAN,CAAsB,OAAtB,CAA+B,CAAA,CAA/B,CAAsC,CAAA,CAAtC,CAA4Cb,CAA5C,CAAqDC,CAArD,CAA+DC,CAA/D,CAGA,CAAAS,CAAA,CAAMM,cAAN,CAAuBC,QAAA,EAAA,CACrBrK,MAAA,CAAOsK,cAAP,CAAsB,IAAtB,CAA4B,kBAA5B,CAAgD,CAC9CC,aAAc,CAAA,CADgC,CAE9CC,IAAKA,QAAA,EAAA,CACH,MAAO,CAAA,CADJ,CAFyC,CAAhD,CADqB,CAfzB,CAyBoBxH;IAAAA,EAApB,GAAI8G,CAAJ,CAAUI,KAAV,EACElK,MAAA,CAAOsK,cAAP,CAAsBR,CAAtB,CAA6B,OAA7B,CAAsC,CACpCS,aAAc,CAAA,CADsB,CAEpCE,WAAY,CAAA,CAFwB,CAGpCD,IAAKA,QAAA,EAAA,CACH,MAAOtB,EADJ,CAH+B,CAAtC,CASF3K,OAAA,CAAOmM,aAAP,CAAqBZ,CAArB,CACKA,EAAL,CAAWa,gBAAX,EAKEC,OAAA,CAAQV,KAAR,CAAchB,CAAd,CAtE2B,C,CG1gB/BpE,QANmB+F,GAMnB,EAAA,CAAA,IAAA,EAAA,IALQ,KAAA,CAAAC,CAAA,CAAwB9H,IAAAA,EAM9B,KAAA,CAAK+H,CAAL,CAAgB,IAAIC,OAAJ,CAAY,QAAA,CAACC,CAAD,CAAY,CACtC,CAAA,CAAKC,CAAL,CAAgBD,CADsB,CAAxB,CADlB,CAMA,EAAAA,CAAA,SAAAA,CAAA,OAAAA,CAAAA,QAAO,CAAC3C,CAAD,CAAS,CACd,GAAI,IAAJ,CAASwC,CAAT,CACE,KAAUjD,MAAJ,CAAU,mBAAV,CAAN,CAGF,IAAA,CAAKiD,CAAL,CAAcxC,CACd,KAAA,CAAK4C,CAAL,CAAc5C,CAAd,CANc,C,CCNhBxD,QAJmBqG,GAInB,CAAYC,CAAZ,CAA4D,CAAb9D,IAAAA,ECmDG7E,QDpD1C,KAAA,CAAA4I,CAAA,CAA0CrI,IAAAA,EAEhD,KAAA,CAAKsI,CAAL,CAAkBF,CAClB,KAAA,CAAKG,CAAL,CAAiBjE,CAIjBZ,EAAA,CAAA,IAAA,CAAK4E,CAAL,CAAoC,IAApC,CAAyCC,CAAzC,CAEkC,UAAlC,GAAI,IAAJ,CAASA,CAAT,CAAmBxE,UAAnB,GACE,IAMA,CANKsE,CAML,CANiB,IAAIG,gBAAJ,CAAqB,IAAA,CAAKC,CAAL,CAAsB9I,IAAtB,CAA2B,IAA3B,CAArB,CAMjB,CAAA,IAAA,CAAK0I,CAAL,CAAeK,OAAf,CAAuB,IAAvB,CAA4BH,CAA5B,CAAuC,CACrCI,UAAW,CAAA,CAD0B,CAErCC,QAAS,CAAA,CAF4B,CAAvC,CAPF,CAR0D,CAsB5DC,QAAA,GAAU,CAAVA,CAAU,CAAA,CACJ,CAAJ,CAASR,CAAT,EACE,CAAA,CAAKA,CAAL,CAAeQ,UAAf,EAFM,CAMF,EAAAJ,CAAA,SAAAA,CAAA,CAAAA,CAAAA,QAAgB,CAACK,CAAD,CAAyC,CAI/D,IAAM/E,EAAa,IAAbA,CAAkBwE,CAAlBxE,CAA4BA,UACf,cAAnB,GAAIA,CAAJ,EAAmD,UAAnD,GAAoCA,CAApC,EACE8E,EAAA,CAAAA,IAAA,CAGF,KAASlG,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBmG,CAApB,CAA8BlG,MAA9B,CAAsCD,CAAA,EAAtC,CAEE,IADA,IAAMoG,EAAaD,CAAA,CAAUnG,CAAV,CAAboG,CAA0BA,UAAhC,CACSC,EAAI,CAAb,CAAgBA,CAAhB,CAAoBD,CAApB,CAA+BnG,MAA/B,CAAuCoG,CAAA,EAAvC,CAEEtF,CAAA,CAAA,IAAA,CAAK4E,CAAL,CADaS,CAAAjJ,CAAWkJ,CAAXlJ,CACb,CAb2D,C,CCoBjEgC,QAvCmBmH,EAuCnB,CAAYb,CAAZ,CAA6C,CAtC5B,IAAA,CAAAc,CAAA,CAAgC,IAAIC,GAIpC,KAAA,CAAAC,CAAA,CAAyB,IAAID,GAI7B,KAAA,CAAAE,CAAA,CAA2B,IAAIF,GAIxC,KAAA,CAAAG,CAAA,CAA8B,CAAA,CAErB,KAAA,CAAAC,CAAA,CAAuB,IAAIJ,GAQpC,KAAA,CAAAK,CAAA,CAA2CC,QAAA,CAACC,CAAD,CAAQ,CAAA,MAAAA,EAAA,EAAA,CACnD,KAAA,CAAAC,CAAA,CAAgB,CAAA,CASP,KAAA,CAAAC,CAAA,CAAsC,EAOrD,KAAA,CAAKtB,CAAL,CAAkBF,CAClB,KAAA,CAAKyB,CAAL,CAAqCzB,CAAA,CAAU9F,CAAV,CACjC,IAAI6F,EAAJ,CAAiCC,CAAjC,CADiC,CAEjCpI,IAAAA,EAJuC,CAO7C,CAAA8J,CAAA,SAAAA,CAAA,CAAAA,CAAAA,QAAkB,CAAC3K,CAAD,CAAoB4K,CAApB,CAAwD,CAAA,IAAA,EAAA,IACxE,IAAI,EAAEA,CAAF,WAA+BC,SAA/B,CAAJ,CACE,KAAM,KAAIC,SAAJ,CACJ,uDADI,CAAN,CAIFC,EAAA,CAAAA,IAAA,CAAuC/K,CAAvC,CACA,KAAA,CAAK+J,CAAL,CAAmCiB,GAAnC,CAAuChL,CAAvC,CAAkD4K,CAAlD,CACA,KAAA,CAAKH,CAAL,CAA0B1I,IAA1B,CAA+B/B,CAA/B,CAGK,KAAL,CAAUwK,CAAV,GACE,IACA,CADKA,CACL,CADqB,CAAA,CACrB,CAAA,IAAA,CAAKH,CAAL,CAAoB,QAAA,EAAM,CAAA,MAAAY,GAAA,CAAAA,CAAA,CAAA,CAA1B,CAFF,CAXwE,CAiB1E;CAAAC,CAAA,SAAAA,CAAA,MAAAA,CAAAA,QAAM,CAAClL,CAAD,CAAoB2C,CAApB,CAAyC,CAAA,IAAA,EAAA,IAC7C,IAAI,EAAEA,CAAF,WAAyBkI,SAAzB,CAAJ,CACE,KAAM,KAAIC,SAAJ,CAAc,gDAAd,CAAN,CAGFC,EAAA,CAAAA,IAAA,CAAuC/K,CAAvC,CAEAmL,GAAA,CAAAA,IAAA,CAA8BnL,CAA9B,CAAyC2C,CAAzC,CACA,KAAA,CAAK8H,CAAL,CAA0B1I,IAA1B,CAA+B/B,CAA/B,CAGK,KAAL,CAAUwK,CAAV,GACE,IACA,CADKA,CACL,CADqB,CAAA,CACrB,CAAA,IAAA,CAAKH,CAAL,CAAoB,QAAA,EAAM,CAAA,MAAAY,GAAA,CAAAA,CAAA,CAAA,CAA1B,CAFF,CAX6C,CAiB/CF,SAAA,GAAiC,CAAjCA,CAAiC,CAAC/K,CAAD,CAAkB,CACjD,GAAI,CAAWD,EAAV,CAAmCC,CAAnC,CAAL,CACE,KAAM,KAAIoL,WAAJ,CAAgB,oBAAhB,CAAqCpL,CAArC,CAAgB,iBAAhB,CAAN,CAGF,GAAIqF,CAAA,CAAAA,CAAA,CAAoCrF,CAApC,CAAJ,CACE,KAAU0F,MAAJ,CACJ,8BADI,EAEE1F,CAFF,CAEF,6BAFE,EAAN,CAMF,GAAI,CAAJ,CAASmK,CAAT,CACE,KAAUzE,MAAJ,CAAU,4CAAV,CAAN,CAb+C;AAiBnDyF,QAAA,GAAwB,CAAxBA,CAAwB,CAACnL,CAAD,CAAoB2C,CAApB,CAAmD,CACzE,CAAA,CAAKwH,CAAL,CAAmC,CAAA,CAEnC,KAGIpE,CAEJ,IAAI,CACF,IAAMzJ,EAAYqG,CAAZrG,CAAwBA,SAC9B,IAAI,EAAEA,CAAF,WAAuBuB,OAAvB,CAAJ,CACE,KAAM,KAAIiN,SAAJ,CACJ,8DADI,CAAN,CAUF,IAAMO,EAAcA,QAAoB,CAACnF,CAAD,CAAyB,CAC/D,IAAMoF,EAAgBhP,CAAA,CAAU4J,CAAV,CACtB,IACoBrF,IAAAA,EADpB,GACEyK,CADF,EAEE,EAAEA,CAAF,WAA2BT,SAA3B,CAFF,CAIE,KAAUnF,MAAJ,CAAU,OAAV,CAAkBQ,CAAlB,CAAU,gCAAV,CAAN,CAEF,MAAOoF,EARwD,CAWjE,KAAAnH,EAAoBkH,CAAA,CAAY,mBAAZ,CACpB,KAAA/G,EAAuB+G,CAAA,CAAY,sBAAZ,CACvB,KAAAE,EAAkBF,CAAA,CAAY,iBAAZ,CAIlB,KAAApF,GAHAF,CAGAE,CAH2BoF,CAAA,CAAY,0BAAZ,CAG3BpF,GAC+BtD,CAD/BsD,CAC2C,kBAD3CA,EACqE,EA/BnE,CAiCF,MAAOL,CAAP,CAAU,CACV,KAAMA,EAAN,CADU,CAjCZ,OAmCU,CACR,CAAA,CAAKuE,CAAL,CAAmC,CAAA,CAD3B,CAIJ7E,CAAAA,CAAa,CACjBtF,UAAAA,CADiB;AAEjByF,oBAAqB9C,CAFJ,CAGjBwB,kBAAAA,CAHiB,CAIjBG,qBAAAA,CAJiB,CAKjBiH,gBAAAA,CALiB,CAMjBxF,yBAAAA,CANiB,CAOjBE,mBAAAA,CAPiB,CAQjBV,kBAAmB,EARF,CAanB,EAAA,CAAK0E,CAAL,CAA4Be,GAA5B,CAAgChL,CAAhC,CAA2CsF,CAA3C,CACA,EAAA,CAAK4E,CAAL,CAA8Bc,GAA9B,CACE1F,CADF,CACaG,mBADb,CAEEH,CAFF,CAKA,OAAOA,EAlEkE,CAqE3E,CAAAb,CAAA,SAAAA,CAAA,OAAAA,CAAAA,QAAO,CAAC9D,CAAD,CAAW,CAChB4D,CAAA,CAAA,IAAA,CAAK4E,CAAL,CAAoCxI,CAApC,CADgB,CAIVsK;QAAA,GAAM,CAANA,CAAM,CAAA,CAIZ,GAA2B,CAAA,CAA3B,GAAI,CAAJ,CAAST,CAAT,CAAA,CAGA,CAAA,CAAKA,CAAL,CAAqB,CAAA,CAarB,KAPA,IAAMgB,EAAoD,EAA1D,CAEMC,EAAsB,CAAtBA,CAA2BhB,CAFjC,CAGMiB,EAAiC,IAAI1B,GAH3C,CAOSxG,EAAI,CAAb,CAAgBA,CAAhB,CAAoBiI,CAApB,CAAwChI,MAAxC,CAAgDD,CAAA,EAAhD,CACEkI,CAAA,CAA+BV,GAA/B,CAAmCS,CAAA,CAAoBjI,CAApB,CAAnC,CAA2D,EAA3D,CAGFe,EAAA,CAAA,CAAA,CAAK4E,CAAL,CAAoC7I,QAApC,CAA8C,CAC5CmE,QAASA,QAAA,CAACnC,CAAD,CAAY,CAEnB,GAA2BzB,IAAAA,EAA3B,GAAIyB,CAAJ,CAAY4B,UAAZ,CAAA,CAIA,IAAMlE,EAAYsC,CAAZtC,CAAoBA,SAA1B,CAIM2L,EAAkBD,CAAA,CAA+BrD,GAA/B,CAAmCrI,CAAnC,CACpB2L,EAAJ,CACEA,CAAA,CAAgB5J,IAAhB,CAAqBO,CAArB,CADF,CApCQ,CAyCG,CAAK2H,CAAL,CAA4B/J,GAA5B,CAAgCF,CAAhC,CALX,EAMEwL,CAAA,CAA8BzJ,IAA9B,CAAmCO,CAAnC,CAfF,CAFmB,CADuB,CAA9C,CAwBA,KAASkB,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBgI,CAApB,CAAkD/H,MAAlD,CAA0DD,CAAA,EAA1D,CACEY,CAAA,CAAA,CAAA,CAAK+E,CAAL,CAAgCqC,CAAA,CAA8BhI,CAA9B,CAAhC,CAKF,KAASA,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBiI,CAApB,CAAwChI,MAAxC,CAAgDD,CAAA,EAAhD,CAAqD,CAOnD,IANA,IAAMxD,EAAYyL,CAAA,CAAoBjI,CAApB,CAAlB,CACMoI,EAA4BF,CAAA,CAA+BrD,GAA/B,CAChCrI,CADgC,CADlC,CAMSwD,EAAI,CAAb,CAAgBA,CAAhB,CAAoBoI,CAApB,CAA8CnI,MAA9C,CAAsDD,CAAA,EAAtD,CACEY,CAAA,CAAA,CAAA,CAAK+E,CAAL,CAAgCyC,CAAA,CAA0BpI,CAA1B,CAAhC,CAKF,EADMqI,CACN,CADiB,CAAA,CAAKzB,CAAL,CAA0B/B,GAA1B,CAA8BrI,CAA9B,CACjB,GACE6L,CAAA,CAAS/C,OAAT,CAAiBjI,IAAAA,EAAjB,CAdiD,CAkBrD4K,CAAA,CAAoBhI,MAApB,CAA6B,CApE7B,CAJY,CA2Ed,CAAA4E,CAAA,SAAAA,CAAA,GAAAA,CAAAA,QAAG,CAACrI,CAAD,CAAkB,CAEnB,GADMsF,CACN,CADmBD,CAAA,CAAAA,IAAA,CAAoCrF,CAApC,CACnB,CACE,MAAOsF,EAAP,CAAkBG,mBAHD,CASrB;CAAAqG,CAAA,SAAAA,CAAA,WAAAA,CAAAA,QAAW,CAAC9L,CAAD,CAAkB,CAC3B,GAAI,CAAWD,EAAV,CAAmCC,CAAnC,CAAL,CACE,MAAO6I,QAAA,CAAQkD,MAAR,CACL,IAAIX,WAAJ,CAAgB,GAAhB,CAAoBpL,CAApB,CAAgB,uCAAhB,CADK,CAKT,KAAMgM,EAAQ,IAAA,CAAK5B,CAAL,CAA0B/B,GAA1B,CAA8BrI,CAA9B,CACd,IAAIgM,CAAJ,CACE,MAAOA,EAAP,CFhQUpD,CEmQNiD,EAAAA,CAAW,IAAInD,EACrB,KAAA,CAAK0B,CAAL,CAA0BY,GAA1B,CAA8BhL,CAA9B,CAAyC6L,CAAzC,CAWA,KAAMI,EACJ,IAAA,CAAKhC,CAAL,CAA4B/J,GAA5B,CAAgCF,CAAhC,CADIiM,EAEJ,IAAA,CAAKlC,CAAL,CAAmC7J,GAAnC,CAAuCF,CAAvC,CACIkM,EAAAA,CAC6C,EAD7CA,GACJ,IAAA,CAAKzB,CAAL,CAA0BhE,OAA1B,CAAkCzG,CAAlC,CACEiM,EAAJ,EAA2BC,CAA3B,EACEL,CAAA,CAAS/C,OAAT,CAAiBjI,IAAAA,EAAjB,CAGF,OAAOgL,EAAP,CFxRYjD,CEuPe,CAoC7B,EAAAuD,CAAA,SAAAA,CAAA,yBAAAA,CAAAA,QAAyB,CAACC,CAAD,CAAgC,CACnD,IAAJ,CAAS1B,CAAT,EACEhB,EAAA,CAAA,IAAA,CAAKgB,CAAL,CAEF,KAAM2B,EAAQ,IAARA,CAAahC,CACnB,KAAA,CAAKA,CAAL,CAAsBC,QAAA,CAACgC,CAAD,CAAW,CAAA,MAAAF,EAAA,CAAM,QAAA,EAAM,CAAA,MAAAC,EAAA,CAAMC,CAAN,CAAA,CAAZ,CAAA,CALsB,CAQzDjH;QAAA,EAA8B,CAA9BA,CAA8B,CAC5BrF,CAD4B,CACX,CAEjB,IAAMuM,EAAqB,CAAA,CAAKtC,CAAL,CAA4B5B,GAA5B,CAAgCrI,CAAhC,CAC3B,IAAIuM,CAAJ,CACE,MAAOA,EAIT,IADM3B,CACN,CAD0B,CAAA,CAAKb,CAAL,CAAmC1B,GAAnC,CAAuCrI,CAAvC,CAC1B,CAAuB,CACrB,CAAA,CAAK+J,CAAL,CAAmC/E,MAAnC,CAA0ChF,CAA1C,CACA,IAAI,CACF,MAAOmL,GAAA,CAAAA,CAAA,CAA8BnL,CAA9B,CAAyC4K,CAAA,EAAzC,CADL,CAEF,MAAOhF,CAAP,CAAmB,CACnBS,CAAA,CAAmCT,CAAnC,CADmB,CAJA,CARN,CA6BrBkE,CAAA,CAAsBxN,SAAtB,CAAgC,MAAhC,CACEwN,CADF,CACwBxN,SADxB,CACkC4O,MAClCpB,EAAA,CAAsBxN,SAAtB,CAAgC,OAAhC,CACEwN,CADF,CACwBxN,SADxB,CACkCmI,OAClCqF,EAAA,CAAsBxN,SAAtB,CAAgC,GAAhC,CAAyCwN,CAAzC,CAA+DxN,SAA/D,CAAyE+L,GACzEyB,EAAA,CAAsBxN,SAAtB,CAAgC,WAAhC,CACEwN,CADF,CACwBxN,SADxB,CACkCwP,WAClChC,EAAA,CAAsBxN,SAAtB,CAAgC,kBAAhC,CACEwN,CADF,CACwBxN,SADxB,CACkCqO,CAClCb,EAAA,CAAsBxN,SAAtB,CAAgC,yBAAhC,CACEwN,CADF,CACwBxN,SADxB,CACkC6P,yB,CCvVpB,QAAA,EAAA,CACZlD,CADY,CAEZuD,CAFY,CAGZC,CAHY,CAGoB,CAEhCC,QAASA,EAAkB,CAACC,CAAD,CAA4B,CACrD,MAAO,SAAA,CAAyBC,CAAzB,CAA8B,CAAR,IAAA,IAAQ,EAAR,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,MAAA,CAAA,EAAA,CAAA,CAAQ,CAAR,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAIrBC,EAAAA,CAAuC,EAO7C,KAFA,IAAMC,EAAiC,EAAvC,CAEStJ,EAAI,CAAb,CAAgBA,CAAhB,CAXmCoJ,CAWnC,CAA0BnJ,MAA1B,CAAkCD,CAAA,EAAlC,CAAuC,CACrC,IAAM7C,EAZ2BiM,CAYpB,CAAMpJ,CAAN,CAET7C,EAAJ,WAAoB3C,QAApB,EAAyC0C,CAAV,CAAsBC,CAAtB,CAA/B,EACEmM,CAAA,CAAkB/K,IAAlB,CAAuBpB,CAAvB,CAGF,IAAIA,CAAJ,WAAoB5D,iBAApB,CACE,IAASyF,CAAT,CAAiB7B,CAAjB,CAAsBgB,UAAtB,CAAkCa,CAAlC,CAAyCA,CAAzC,CAAiDA,CAAjD,CAAuDZ,WAAvD,CACEiL,CAAA,CAAe9K,IAAf,CAAoBS,CAApB,CAFJ,KAKEqK,EAAA,CAAe9K,IAAf,CAAoBpB,CAApB,CAZmC,CAgBvCgM,CAAA,CAAcI,KAAd,CAAoB,IAApB,CA3BmCH,CA2BnC,CAEA,KAASpJ,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBsJ,CAApB,CAAsCrJ,MAAtC,CAA8CD,CAAA,EAA9C,CACEa,CAAA,CAAA4E,CAAA,CAAyB6D,CAAA,CAAkBtJ,CAAlB,CAAzB,CAGF,IAAc9C,CAAV,CAAsB,IAAtB,CAAJ,CACE,IAAS8C,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBqJ,CAApB,CAAmCpJ,MAAnC,CAA2CD,CAAA,EAA3C,CACQ7C,CACN,CADakM,CAAA,CAAerJ,CAAf,CACb,CAAI7C,CAAJ,WAAoB3C,QAApB,EACEgG,CAAA,CAAAiF,CAAA,CAAsBtI,CAAtB,CArC6B,CADgB,CA6C/BE,IAAAA,EAAxB,GAAI4L,CAAJ,CAAYO,OAAZ,GACER,CADF,CACcQ,OADd,CACwBN,CAAA,CAAmBD,CAAnB,CAA2BO,OAA3B,CADxB,CAIuBnM,KAAAA,EAAvB,GAAI4L,CAAJ,CAAYQ,MAAZ,GACET,CADF,CACcS,MADd,CACuBP,CAAA,CAAmBD,CAAnB,CAA2BQ,MAA3B,CADvB,CAnDgC,C,CCRpB,QAAA,GAAA,CAAWhE,CAAX,CAA4C,CACxD5M,QAAA,CAASC,SAAT,CAAmBC,aAAnB,CAAmC2Q,QAAA,CAEjClN,CAFiC,CAEhB,CAEjB,MAAO0G,GAAA,CAAAuC,CAAA,CAA0B,IAA1B,CAAgCjJ,CAAhC,CAA2C,IAA3C,CAFU,CAKnB3D,SAAA,CAASC,SAAT,CAAmBK,UAAnB,CAAgCwQ,QAAA,CAE9BxM,CAF8B,CAG9ByM,CAH8B,CAGhB,CAERC,CAAAA,CAAe3Q,EAAP,CAA2B+E,IAA3B,CAAgC,IAAhC,CAAsCd,CAAtC,CAA4C,CAAC,CAACyM,CAA9C,CAGT,KAAL,CAAUzI,aAAV,CAGEJ,CAAA,CAAA0E,CAAA,CAA8BoE,CAA9B,CAHF,CACExJ,CAAA,CAAAoF,CAAA,CAAoBoE,CAApB,CAIF,OAAOA,EAVO,CAahBhR,SAAA,CAASC,SAAT,CAAmBG,eAAnB,CAAqC6Q,QAAA,CAEnC9G,CAFmC,CAGnCxG,CAHmC,CAGlB,CAEjB,MAAO0G,GAAA,CAAAuC,CAAA,CAA0B,IAA1B,CAAgCjJ,CAAhC,CAA2CwG,CAA3C,CAFU,CAKnB+G,EAAA,CAAgBtE,CAAhB,CAA2B5M,QAA3B,CAAoCC,SAApC,CAA+C,CAC7C0Q,QAAgBpQ,EAD6B,CAE7CqQ,OAAepQ,EAF8B,CAA/C,CAhCwD,C,CCO5C,QAAA,GAAA,CACZoM,CADY,CAGmB,CAE/BuE,QAASA,EAAgB,CAACb,CAAD,CAA4B,CACnD,MAAO,SAAA,CAA8BC,CAA9B,CAAmC,CAAR,IAAA,IAAQ,EAAR,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,MAAA,CAAA,EAAA,CAAA,CAAQ,CAAR,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAC1BC,EAAAA,CAAuC,EAG7C,KAFA,IAAMC,EAAiC,EAAvC,CAEStJ,EAAI,CAAb,CAAgBA,CAAhB,CAJwCoJ,CAIxC,CAA0BnJ,MAA1B,CAAkCD,CAAA,EAAlC,CAAuC,CACrC,IAAM7C,EALgCiM,CAKzB,CAAMpJ,CAAN,CAET7C,EAAJ,WAAoB3C,QAApB,EAAyC0C,CAAV,CAAsBC,CAAtB,CAA/B,EACEmM,CAAA,CAAkB/K,IAAlB,CAAuBpB,CAAvB,CAGF,IAAIA,CAAJ,WAAoB5D,iBAApB,CACE,IAASyF,CAAT,CAAiB7B,CAAjB,CAAsBgB,UAAtB,CAAkCa,CAAlC,CAAyCA,CAAzC,CAAiDA,CAAjD,CAAuDZ,WAAvD,CACEiL,CAAA,CAAe9K,IAAf,CAAoBS,CAApB,CAFJ,KAKEqK,EAAA,CAAe9K,IAAf,CAAoBpB,CAApB,CAZmC,CAgBvCgM,CAAA,CAAcI,KAAd,CAAoB,IAApB,CApBwCH,CAoBxC,CAEA,KAASpJ,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBsJ,CAApB,CAAsCrJ,MAAtC,CAA8CD,CAAA,EAA9C,CACEa,CAAA,CAAA4E,CAAA,CAAyB6D,CAAA,CAAkBtJ,CAAlB,CAAzB,CAGF,IAAc9C,CAAV,CAAsB,IAAtB,CAAJ,CACE,IAAS8C,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBqJ,CAApB,CAAmCpJ,MAAnC,CAA2CD,CAAA,EAA3C,CACQ7C,CACN,CADakM,CAAA,CAAerJ,CAAf,CACb,CAAI7C,CAAJ,WAAoB3C,QAApB,EACEgG,CAAA,CAAAiF,CAAA,CAAsBtI,CAAtB,CA9BkC,CADS,CAHrD6L,IAAAA,EC0R0BxO,OD1R1BwO,CC0RkClQ,SDjPXuE,KAAAA,EAAvB,GCkPiB3B,EDlPjB,GACEsN,CADF,CACciB,MADd,CACuBD,CAAA,CCiPNtO,EDjPM,CADvB,CAIsB2B,KAAAA,EAAtB,GC+OgB1B,ED/OhB,GACEqN,CADF,CACckB,KADd,CACsBF,CAAA,CC8ONrO,ED9OM,CADtB,CAI4B0B,KAAAA,EAA5B,GC4OsBzB,ED5OtB;CACEoN,CADF,CACcmB,WADd,CAC4BC,QAAA,CAErBhB,CAFqB,CAEM,CAA9B,IAAA,IAA8B,EAA9B,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,MAAA,CAAA,EAAA,CAAA,CAA8B,CAA9B,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAKMC,EAAAA,CAAuC,EAO7C,KAFA,IAAMC,EAAiC,EAAvC,CAEStJ,EAAI,CAAb,CAAgBA,CAAhB,CAZ8BoJ,CAY9B,CAA0BnJ,MAA1B,CAAkCD,CAAA,EAAlC,CAAuC,CACrC,IAAM7C,EAbsBiM,CAaf,CAAMpJ,CAAN,CAET7C,EAAJ,WAAoB3C,QAApB,EAAyC0C,CAAV,CAAsBC,CAAtB,CAA/B,EACEmM,CAAA,CAAkB/K,IAAlB,CAAuBpB,CAAvB,CAGF,IAAIA,CAAJ,WAAoB5D,iBAApB,CACE,IAASyF,CAAT,CAAiB7B,CAAjB,CAAsBgB,UAAtB,CAAkCa,CAAlC,CAAyCA,CAAzC,CAAiDA,CAAjD,CAAuDZ,WAAvD,CACEiL,CAAA,CAAe9K,IAAf,CAAoBS,CAApB,CAFJ,KAKEqK,EAAA,CAAe9K,IAAf,CAAoBpB,CAApB,CAZmC,CAgBjCkN,CAAAA,CAAyBnN,CAAV,CAAsB,IAAtB,CC6MHtB,GD3MlB,CAAoB2N,KAApB,CAA0B,IAA1B,CA9B8BH,CA8B9B,CAEA,KAASpJ,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBsJ,CAApB,CAAsCrJ,MAAtC,CAA8CD,CAAA,EAA9C,CACEa,CAAA,CAAA4E,CAAA,CAAyB6D,CAAA,CAAkBtJ,CAAlB,CAAzB,CAGF,IAAIqK,CAAJ,CAEE,IADAxJ,CAAA,CAAA4E,CAAA,CAAyB,IAAzB,CACSzF,CAAAA,CAAAA,CAAI,CAAb,CAAgBA,CAAhB,CAAoBqJ,CAApB,CAAmCpJ,MAAnC,CAA2CD,CAAA,EAA3C,CACQ7C,CACN,CADakM,CAAA,CAAerJ,CAAf,CACb,CAAI7C,CAAJ,WAAoB3C,QAApB,EACEgG,CAAA,CAAAiF,CAAA,CAAsBtI,CAAtB,CAzCwB,CAHlC,CAmDuBE,KAAAA,EAAvB,GC0LiBxB,ED1LjB,GACEmN,CADF,CACcsB,MADd,CACuBC,QAAA,EAAA,CACnB,IAAMF,EAAyBnN,CAAV,CAAsB,IAAtB,CCwLRrB,GDtLb,CAAeoC,IAAf,CAAoB,IAApB,CAEIoM,EAAJ,EACExJ,CAAA,CAAA4E,CAAA,CAAyB,IAAzB,CANiB,CADvB,CAnG+B,C,CCPnB,QAAA,GAAA,CAAWA,CAAX,CAA4C,CAaxD+E,QAASA,EAAe,CACtBxB,CADsB,CAEtByB,CAFsB,CAEY,CAElCpQ,MAAA,CAAOsK,cAAP,CAAsBqE,CAAtB,CAAmC,WAAnC,CAAgD,CAC9ClE,WAAY2F,CAAZ3F,CAA2BA,UADmB,CAE9CF,aAAc,CAAA,CAFgC,CAG9CC,IAAK4F,CAAL5F,CAAoBA,GAH0B,CAI9C2C,IAAKA,QAAA,CAAyBkD,CAAzB,CAAmC,CAAA,IAAA,EAAA,IAAA,CAQlCC,EAA8CtN,IAAAA,EAPpBH,EAAVA,CAAsB,IAAtBA,CAQpB,GACEyN,CACA,CADkB,EAClB,CAAA/K,CAAA,CAAA6F,CAAA,CAAyB,IAAzB,CAA+B,QAAA,CAAC3G,CAAD,CAAY,CACrCA,CAAJ,GAAgB,CAAhB,EACE6L,CAAA,CAAiBpM,IAAjB,CAAsBO,CAAtB,CAFuC,CAA3C,CAFF,CASA2L,EAAA,CAAejD,GAAf,CAAoBvJ,IAApB,CAAyB,IAAzB,CAA+ByM,CAA/B,CAEA,IAAIC,CAAJ,CACE,IAAK,IAAI3K,EAAI,CAAb,CAAgBA,CAAhB,CAAoB2K,CAApB,CAAoC1K,MAApC,CAA4CD,CAAA,EAA5C,CAAiD,CAC/C,IAAMlB,EAAU6L,CAAA,CAAgB3K,CAAhB,CPlDlBS,EOmDE,GAAI3B,CAAJ,CAAY4B,UAAZ,EACE+E,CAAA,CAAU3E,oBAAV,CAA+BhC,CAA/B,CAH6C,CAU9C,IAAL,CAAU2C,aAAV,CAAyBN,aAAzB,CAGEJ,CAAA,CAAA0E,CAAA,CAA8B,IAA9B,CAHF,CACEpF,CAAA,CAAAoF,CAAA,CAAoB,IAApB,CAIF,OAAOiF,EApC+B,CAJM,CAAhD,CAFkC,CA8KpCE,QAASA,EAA2B,CAClC5B,CADkC,CAElC6B,CAFkC,CAEU,CAE5C7B,CAAA,CAAY8B,qBAAZ,CAAoCC,QAAA,CAElCC,CAFkC,CAGlClM,CAHkC,CAG3B,CAEP,IAAMuL,EAAyBnN,CAAV,CAAsB4B,CAAtB,CACfmM,EAAAA,CAAkBJ,CAAA,CAAW5M,IAAX,CAAgB,IAAhB,CAAsB+M,CAAtB,CAAgClM,CAAhC,CAEpBuL,EAAJ,EACExJ,CAAA,CAAA4E,CAAA,CAAyB3G,CAAzB,CAGY5B,EAAV,CAAsB+N,CAAtB,CAAJ,EACEzK,CAAA,CAAAiF,CAAA,CAAsB3G,CAAtB,CAEF,OAAOmM,EAZA,CALmC,CAiC9CC,QAASA,EAAwB,CAC/BlC,CAD+B;AAE/B6B,CAF+B,CAEU,CAOzCM,QAASA,EAAmB,CAACzM,CAAD,CAAc0M,CAAd,CAA8B,CAExD,IADA,IAAMhC,EAAQ,EACd,CAA6BjM,CAA7B,GAAsCiO,CAAtC,CAA2CjO,CAA3C,CAAkDA,CAAlD,CAAuDiB,WAAvD,CACEgL,CAAA,CAAM7K,IAAN,CAAWpB,CAAX,CAEF,KAAS6C,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBoJ,CAApB,CAA0BnJ,MAA1B,CAAkCD,CAAA,EAAlC,CACEe,CAAA,CAAA0E,CAAA,CAA8B2D,CAAA,CAAMpJ,CAAN,CAA9B,CANsD,CAU1DgJ,CAAA,CAAYqC,kBAAZ,CAAiCC,QAAA,CAAyBN,CAAzB,CAAmCO,CAAnC,CAAuC,CAChEC,CAAAA,CAAcR,CAAA,CAASS,WAAT,EAEpB,IAAoB,aAApB,GAAID,CAAJ,CAAmC,CACjC,IAAME,EAAS,IAATA,CAAcC,eACpBd,EAAA,CAAW5M,IAAX,CAAgB,IAAhB,CAAsBuN,CAAtB,CAAmCD,CAAnC,CACAJ,EAAA,CAAoBO,CAApB,EAA8B,IAA9B,CAAmClO,UAAnC,CAA+CW,UAA/C,CAA4D,IAA5D,CAHiC,CAAnC,IAIO,IAAoB,YAApB,GAAIqN,CAAJ,CACCE,CAEN,CAFe,IAEf,CAFoBvN,UAEpB,CADA0M,CAAA,CAAW5M,IAAX,CAAgB,IAAhB,CAAsBuN,CAAtB,CAAmCD,CAAnC,CACA,CAAAJ,CAAA,CAAoB,IAApB,CAAyBhN,UAAzB,CAAsCuN,CAAtC,CAHK,KAIA,IAAoB,WAApB,GAAIF,CAAJ,CACCE,CAEN,CAFe,IAEf,CAFoBE,SAEpB,CADAf,CAAA,CAAW5M,IAAX,CAAgB,IAAhB,CAAsBuN,CAAtB,CAAmCD,CAAnC,CACA,CAAAJ,CAAA,CAAoBO,CAApB,EAA8B,IAA9B,CAAmCvN,UAAnC,CAAgD,IAAhD,CAHK,KAIA,IAAoB,UAApB,GAAIqN,CAAJ,CACCE,CAEN,CAFe,IAEf,CAFoBtN,WAEpB,CADAyM,CAAA,CAAW5M,IAAX,CAAgB,IAAhB,CAAsBuN,CAAtB,CAAmCD,CAAnC,CACA,CAAAJ,CAAA,CAAoB,IAApB,CAAyB/M,WAAzB,CAAuCsN,CAAvC,CAHK;IAKL,MAAM,KAAI9D,WAAJ,CACJ,sBADI,CACmB1D,MAAA,CAAOsH,CAAP,CADnB,CACJ,0EADI,CAAN,CApBoE,CAjB/B,CAjOhCjR,CAAX,GACEC,OADF,CACU1B,SADV,CACoB+S,YADpB,CACmCC,QAAA,CAE/BC,CAF+B,CAEX,CAEd9M,CAAAA,CAAoB1E,CAAP,CAA4B0D,IAA5B,CAAiC,IAAjC,CAAuC8N,CAAvC,CTkDrB,ISjDEtG,CTiDF,CAAU/F,CAAV,EAIIa,CSrDkBtB,CTqDlBsB,CAAKA,YAJT,CAIA,CSrDsBtB,CTwDtB,CAAKsB,YAAL,CAAoB,CAAA,CAEpB,KAAK,IAAIP,EAAI,CAAb,CAAgBA,CAAhB,CS1DEyF,CT0DF,CAAyBjG,CAAzB,CAAsCS,MAAtC,CAA8CD,CAAA,EAA9C,CS1DEyF,CT2DA,CAAKjG,CAAL,CAAkBQ,CAAlB,CAAA,CS3DoBf,CT2DpB,CANF,CSnDE,MADA,KACA,CADKC,eACL,CADuBD,CAJH,CAHxB,CA6DWxE,EAAX,EAAuCA,CAAvC,CAAyDoK,GAAzD,CACE2F,CAAA,CAAgBhQ,OAAhB,CAAwB1B,SAAxB,CAA0C2B,CAA1C,CADF,CAEkBsB,CAAX,EAA2CA,CAA3C,CAAiE8I,GAAjE,CACL2F,CAAA,CAAgB1O,WAAhB,CAA4BhD,SAA5B,CAA8CiD,CAA9C,CADK,CAGLqE,EAAA,CAAAqF,CAAA,CAA0B,QAAA,CAAU3G,CAAV,CAAiB,CACzC0L,CAAA,CAAgB1L,CAAhB,CAAyB,CACvBgG,WAAY,CAAA,CADW,CAEvBF,aAAc,CAAA,CAFS,CAMvBC,IAAKA,QAAA,EAAA,CACH,MAAepL,EAAP,CAAsBwE,IAAtB,CAA2B,IAA3B,CAAiC,CAAA,CAAjC,CAAR,CAA2D+N,SADxD,CANkB,CAYvBxE,IAAKA,QAAA,CAAyByE,CAAzB,CAAsC,CAIzC,IAAMC;AAAgC,UAAhCA,GAAa,IAAbA,CAAkB1P,SAAxB,CACM2P,EAAUD,CAAA,CACX,IADW,CACkBC,OADlB,CAEZ,IAHJ,CAIMC,EAAoBpT,CAAP,CAAgCiF,IAAhC,CACjBnB,QADiB,CAEjB,IAFiB,CAEZsG,YAFY,CAGjB,IAHiB,CAGZ5G,SAHY,CAOnB,KAFA4P,CAEA,CAFWJ,SAEX,CAFuBC,CAEvB,CAAmC,CAAnC,CAAOE,CAAP,CAAeE,UAAf,CAA0BpM,MAA1B,CAAA,CACSjG,CAAP,CAAwBiE,IAAxB,CAA6BkO,CAA7B,CAAsCA,CAAA,CAAQE,UAAR,CAAmB,CAAnB,CAAtC,CAKF,KAHMC,CAGN,CAHkBJ,CAAA,CACbE,CADa,CACsBD,OADtB,CAEdC,CACJ,CAAqC,CAArC,CAAOE,CAAP,CAAiBD,UAAjB,CAA4BpM,MAA5B,CAAA,CACSrG,CAAP,CAAwBqE,IAAxB,CAA6BkO,CAA7B,CAAsCG,CAAA,CAAUD,UAAV,CAAqB,CAArB,CAAtC,CAtBuC,CAZpB,CAAzB,CADyC,CAA3C,CA0CF7R,QAAA,CAAQ1B,SAAR,CAAkB+B,YAAlB,CAAiC0R,QAAA,CAAyB7J,CAAzB,CAA+BK,CAA/B,CAAuC,CAEtE,GPtHMtC,COsHN,GAAI,IAAJ,CAASC,UAAT,CACE,MAAc9F,EAAP,CAA4BqD,IAA5B,CAAiC,IAAjC,CAAuCyE,CAAvC,CAA6CK,CAA7C,CAGT,KAAMD,EAAkBpI,CAAP,CAA4BuD,IAA5B,CAAiC,IAAjC,CAAuCyE,CAAvC,CACV9H,EAAP,CAA4BqD,IAA5B,CAAiC,IAAjC,CAAuCyE,CAAvC,CAA6CK,CAA7C,CACAA,EAAA,CAAkBrI,CAAP,CAA4BuD,IAA5B,CAAiC,IAAjC,CAAuCyE,CAAvC,CACX+C,EAAA,CAAUlD,wBAAV,CAAmC,IAAnC,CAAyCG,CAAzC,CAA+CI,CAA/C,CAAyDC,CAAzD,CAAmE,IAAnE,CATsE,CAYxEvI,QAAA,CAAQ1B,SAAR,CAAkBqC,cAAlB,CAAmCqR,QAAA,CAEjCxJ,CAFiC,CAGjCN,CAHiC,CAIjCK,CAJiC,CAIzB,CAGR,GPvIMtC,COuIN,GAAI,IAAJ,CAASC,UAAT,CACE,MAAcxF,EAAP,CAA8B+C,IAA9B,CACL,IADK;AAEL+E,CAFK,CAGLN,CAHK,CAILK,CAJK,CAQT,KAAMD,EAAkB9H,CAAP,CAA8BiD,IAA9B,CAAmC,IAAnC,CAAyC+E,CAAzC,CAAoDN,CAApD,CACVxH,EAAP,CAA8B+C,IAA9B,CAAmC,IAAnC,CAAyC+E,CAAzC,CAAoDN,CAApD,CAA0DK,CAA1D,CACAA,EAAA,CAAkB/H,CAAP,CAA8BiD,IAA9B,CAAmC,IAAnC,CAAyC+E,CAAzC,CAAoDN,CAApD,CACX+C,EAAA,CAAUlD,wBAAV,CACE,IADF,CAEEG,CAFF,CAGEI,CAHF,CAIEC,CAJF,CAKEC,CALF,CAfQ,CAwBVxI,QAAA,CAAQ1B,SAAR,CAAkBiC,eAAlB,CAAoC0R,QAAA,CAAyB/J,CAAzB,CAA6B,CAE/D,GP9JMjC,CO8JN,GAAI,IAAJ,CAASC,UAAT,CACE,MAAc5F,EAAP,CAA+BmD,IAA/B,CAAoC,IAApC,CAA0CyE,CAA1C,CAGT,KAAMI,EAAkBpI,CAAP,CAA4BuD,IAA5B,CAAiC,IAAjC,CAAuCyE,CAAvC,CACV5H,EAAP,CAA+BmD,IAA/B,CAAoC,IAApC,CAA0CyE,CAA1C,CACiB,KAAjB,GAAII,CAAJ,EACE2C,CAAA,CAAUlD,wBAAV,CAAmC,IAAnC,CAAyCG,CAAzC,CAA+CI,CAA/C,CAAyD,IAAzD,CAA+D,IAA/D,CAT6D,CAajEtI,QAAA,CAAQ1B,SAAR,CAAkBuC,iBAAlB,CAAsCqR,QAAA,CAEpC1J,CAFoC,CAGpCN,CAHoC,CAGhC,CAGJ,GP/KMjC,CO+KN,GAAI,IAAJ,CAASC,UAAT,CACE,MAActF,EAAP,CAAiC6C,IAAjC,CAAsC,IAAtC,CAA4C+E,CAA5C,CAAuDN,CAAvD,CAGT,KAAMI,EAAkB9H,CAAP,CAA8BiD,IAA9B,CAAmC,IAAnC,CAAyC+E,CAAzC,CAAoDN,CAApD,CACVtH,EAAP,CAAiC6C,IAAjC,CAAsC,IAAtC,CAA4C+E,CAA5C,CAAuDN,CAAvD,CAIA,KAAMK,EAAkB/H,CAAP,CAA8BiD,IAA9B,CAAmC,IAAnC,CAAyC+E,CAAzC,CAAoDN,CAApD,CACbI,EAAJ,GAAiBC,CAAjB,EACE0C,CAAA,CAAUlD,wBAAV,CACE,IADF,CAEEG,CAFF,CAGEI,CAHF,CAIEC,CAJF,CAKEC,CALF,CAdE,CA+CKhH;EAAX,CACE4O,CAAA,CACE9O,WADF,CACchD,SADd,CAESkD,EAFT,CADF,CAKkBV,CALlB,EAMEsP,CAAA,CACEpQ,OADF,CACU1B,SADV,CAESwC,CAFT,CAqDSW,GAAX,CACEiP,CAAA,CACEpP,WADF,CACchD,SADd,CAESmD,EAFT,CADF,CAKkBV,CALlB,EAME2P,CAAA,CACE1Q,OADF,CACU1B,SADV,CAESyC,CAFT,CAMFwO,EAAA,CAAgBtE,CAAhB,CAA2BjL,OAA3B,CAAmC1B,SAAnC,CAA8C,CAC5C0Q,QAAgBhO,EAD4B,CAE5CiO,OAAehO,EAF6B,CAA9C,CAKAkR,GAAA,CAAelH,CAAf,CAhSwD,C,CCF1D,IAAMmH,GAA2B,E,CCDnB,QAAA,GAAA,CAAWnH,CAAX,CAA4C,CAC7BoH,QAAS/Q,EAAW,EAAA,CAK7C,IAAMqD,EAAc,IAAdA,CAAmBA,WNsUzB,KAAA,EMnUiBrC,QNmUV,CMnUmBqE,aNmUnB,CAAKuF,CAAL,CAA8B7B,GAA9B,CMlUsD1F,CNkUtD,CMjUP,IAAI,CADe2C,CACnB,CACE,KAAUI,MAAJ,CACJ,iGADI,CAAN,CAMF,IAAMH,EARaD,CAQbC,CAA+BA,iBAErC,IAAiC,CAAjC,GAAIA,CAAJ,CAAsB9B,MAAtB,CASE,MARMnB,EAQCA,CARgBnG,CAAP,CAA8BsF,IAA9B,CACdnB,QADc,CAXCgF,CAWD,CAEHtF,SAFG,CAQTsC,CAJPzE,MAAA,CAAOgJ,cAAP,CAAsBvE,CAAtB,CAA+BK,CAA/B,CAA2CrG,SAA3C,CAIOgG,CAHPA,CAGOA,CAHC4B,UAGD5B,CTjCH2B,CSiCG3B,CAFPA,CAEOA,CAFCwD,eAEDxD,CAnBUgD,CAmBVhD,CADPwB,CAAA,CAAAmF,CAAA,CAAuB3G,CAAvB,CACOA,CAAAA,CAGT,KAAMgO,EAAY/K,CAAZ+K,CAA8B7M,MAA9B6M,CAAuC,CAA7C,CACMhO,EAAUiD,CAAA,CAAkB+K,CAAlB,CAChB,IAAIhO,CAAJ,GD/BW8N,EC+BX,CAEE,KAAU1K,MAAJ,CACJ,uBADI,CA1BWJ,CA0BX,CADuBtF,SACvB,CACJ,0CADI,CAAN,CAMFuF,CAAA,CAAkB+K,CAAlB,CAAA,CDvCWF,ECyCXvS;MAAA,CAAOgJ,cAAP,CAH2BvE,CAG3B,CAEEK,CAFF,CAEcrG,SAFd,CAIAwH,EAAA,CAAAmF,CAAA,CAP2B3G,CAO3B,CAEA,OAT2BA,EAxCkB,CAoD/C+N,CAAA,CAAmB/T,SAAnB,CAAsCgD,EAAtC,CAAkDhD,SAIlDuB,OAAA,CAAOsK,cAAP,CAAsB7I,WAAtB,CAAkChD,SAAlC,CAA6C,aAA7C,CAA4D,CAC1DiU,SAAU,CAAA,CADgD,CAE1DnI,aAAc,CAAA,CAF4C,CAG1DE,WAAY,CAAA,CAH8C,CAI1DnC,MAAOkK,CAJmD,CAA5D,CAOAjU,OAAA,CAAO,WAAP,CAAyBiU,CAhE+B,C,CCA5C,QAAA,GAAA,CAAWpH,CAAX,CAA4C,CAsJxDuH,QAASA,EAAiB,CACxBhE,CADwB,CAExByB,CAFwB,CAEU,CAElCpQ,MAAA,CAAOsK,cAAP,CAAsBqE,CAAtB,CAAmC,aAAnC,CAAkD,CAChDlE,WAAY2F,CAAZ3F,CAA2BA,UADqB,CAEhDF,aAAc,CAAA,CAFkC,CAGhDC,IAAK4F,CAAL5F,CAAoBA,GAH4B,CAIhD2C,IAAKA,QAAA,CAAsByE,CAAtB,CAAmC,CAEtC,GAAI,IAAJ,CAAS5N,QAAT,GAAsB3E,IAAtB,CAA2BuT,SAA3B,CACExC,CAAA,CAAejD,GAAf,CAAoBvJ,IAApB,CAAyB,IAAzB,CAA+BgO,CAA/B,CADF,KAAA,CAKA,IAAIiB,EAAe7P,IAAAA,EAGnB,IAAI,IAAJ,CAASc,UAAT,CAAqB,CAGnB,IAAMkO,EAAa,IAAbA,CAAkBA,UAAxB,CACMc,EAAmBd,CAAnBc,CAA8BlN,MACpC,IAAuB,CAAvB,CAAIkN,CAAJ,EAAsCjQ,CAAV,CAAsB,IAAtB,CAA5B,CAAyD,CAEvDgQ,CAAA,CAAmBnP,KAAJ,CAAUoP,CAAV,CACf,KAAK,IAAInN,EAAI,CAAb,CAAgBA,CAAhB,CAAoBmN,CAApB,CAAsCnN,CAAA,EAAtC,CACEkN,CAAA,CAAalN,CAAb,CAAA,CAAkBqM,CAAA,CAAWrM,CAAX,CAJmC,CALtC,CAcrByK,CAAA,CAAejD,GAAf,CAAoBvJ,IAApB,CAAyB,IAAzB,CAA+BgO,CAA/B,CAEA,IAAIiB,CAAJ,CACE,IAASlN,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBkN,CAApB,CAAiCjN,MAAjC,CAAyCD,CAAA,EAAzC,CACEa,CAAA,CAAA4E,CAAA,CAAyByH,CAAA,CAAalN,CAAb,CAAzB,CA1BJ,CAFsC,CAJQ,CAAlD,CAFkC,CApJpCtG,IAAA,CAAKZ,SAAL,CAAeiB,YAAf,CAA8BqT,QAAA,CAE5BjQ,CAF4B,CAG5BkQ,CAH4B,CAGR,CAEpB,GAAIlQ,CAAJ,WAAoB5D,iBAApB,CAAsC,CACpC,IAAM+T,EAA0B3P,CAAV,CAA+BR,CAA/B,CAChBoQ,EAAAA,CAAsBzT,CAAP,CAAyBmE,IAAzB,CAA8B,IAA9B,CAAoCd,CAApC,CAA0CkQ,CAA1C,CAKrB,IAAcnQ,CAAV,CAAsB,IAAtB,CAAJ,CACE,IAAS8C,CAAT;AAAa,CAAb,CAAgBA,CAAhB,CAAoBsN,CAApB,CAAkCrN,MAAlC,CAA0CD,CAAA,EAA1C,CACEQ,CAAA,CAAAiF,CAAA,CAAsB6H,CAAA,CAActN,CAAd,CAAtB,CAIJ,OAAOuN,EAb6B,CAgBhCC,CAAAA,CACJrQ,CADIqQ,WACYhT,QADZgT,EACiCtQ,CAAV,CAAsBC,CAAtB,CACvBoQ,EAAAA,CAAsBzT,CAAP,CAAyBmE,IAAzB,CACnB,IADmB,CAEnBd,CAFmB,CAGnBkQ,CAHmB,CAMjBG,EAAJ,EACE3M,CAAA,CAAA4E,CAAA,CAAyBtI,CAAzB,CAGYD,EAAV,CAAsB,IAAtB,CAAJ,EACEsD,CAAA,CAAAiF,CAAA,CAAsBtI,CAAtB,CAGF,OAAOoQ,EAlCa,CAqCtB7T,KAAA,CAAKZ,SAAL,CAAee,WAAf,CAA6B4T,QAAA,CAAsCtQ,CAAtC,CAA6C,CACxE,GAAIA,CAAJ,WAAoB5D,iBAApB,CAAsC,CACpC,IAAM+T,EAA0B3P,CAAV,CAA+BR,CAA/B,CAChBoQ,EAAAA,CAAsB3T,CAAP,CAAwBqE,IAAxB,CAA6B,IAA7B,CAAmCd,CAAnC,CAKrB,IAAcD,CAAV,CAAsB,IAAtB,CAAJ,CACE,IAAK,IAAI8C,EAAI,CAAb,CAAgBA,CAAhB,CAAoBsN,CAApB,CAAkCrN,MAAlC,CAA0CD,CAAA,EAA1C,CACEQ,CAAA,CAAAiF,CAAA,CAAsB6H,CAAA,CAActN,CAAd,CAAtB,CAIJ,OAAOuN,EAb6B,CAgBhCC,CAAAA,CACJrQ,CADIqQ,WACYhT,QADZgT,EACiCtQ,CAAV,CAAsBC,CAAtB,CACvBoQ,EAAAA,CAAsB3T,CAAP,CAAwBqE,IAAxB,CAA6B,IAA7B,CAAmCd,CAAnC,CAEjBqQ,EAAJ,EACE3M,CAAA,CAAA4E,CAAA,CAAyBtI,CAAzB,CAGYD,EAAV,CAAsB,IAAtB,CAAJ,EACEsD,CAAA,CAAAiF,CAAA,CAAsBtI,CAAtB,CAGF,OAAOoQ,EA7BiE,CAgC1E7T,KAAA,CAAKZ,SAAL,CAAea,SAAf,CAA2B+T,QAAA,CAAsB9D,CAAtB,CAA0B,CAC7CC,CAAAA,CAAepQ,CAAP,CAAsBwE,IAAtB,CAA2B,IAA3B,CAAiC,CAAC,CAAC2L,CAAnC,CAGT,KAAL,CAAUnI,aAAV,CAAyBN,aAAzB,CAGEJ,CAAA,CAAA0E,CAAA,CAA8BoE,CAA9B,CAHF,CACExJ,CAAA,CAAAoF,CAAA,CAAoBoE,CAApB,CAIF,OAAOA,EAT4C,CAYrDnQ,KAAA,CAAKZ,SAAL,CAAemB,WAAf,CAA6B0T,QAAA,CAAsCxQ,CAAtC,CAA6C,CACxE,IAAMqQ;AACJrQ,CADIqQ,WACYhT,QADZgT,EACiCtQ,CAAV,CAAsBC,CAAtB,CAD7B,CAEMoQ,EAAsBvT,CAAP,CAAwBiE,IAAxB,CAA6B,IAA7B,CAAmCd,CAAnC,CAEjBqQ,EAAJ,EACE3M,CAAA,CAAA4E,CAAA,CAAyBtI,CAAzB,CAGF,OAAOoQ,EATiE,CAY1E7T,KAAA,CAAKZ,SAAL,CAAeqB,YAAf,CAA8ByT,QAAA,CAE5BC,CAF4B,CAG5BC,CAH4B,CAGb,CAEf,GAAID,CAAJ,WAA4BtU,iBAA5B,CAA8C,CAC5C,IAAM+T,EAA0B3P,CAAV,CAA+BkQ,CAA/B,CAChBN,EAAAA,CAAsBrT,CAAP,CAAyB+D,IAAzB,CACnB,IADmB,CAEnB4P,CAFmB,CAGnBC,CAHmB,CASrB,IAAc5Q,CAAV,CAAsB,IAAtB,CAAJ,CAEE,IADA2D,CAAA,CAAA4E,CAAA,CAAyBqI,CAAzB,CACS9N,CAAAA,CAAAA,CAAI,CAAb,CAAgBA,CAAhB,CAAoBsN,CAApB,CAAkCrN,MAAlC,CAA0CD,CAAA,EAA1C,CACEQ,CAAA,CAAAiF,CAAA,CAAsB6H,CAAA,CAActN,CAAd,CAAtB,CAIJ,OAAOuN,EAlBqC,CAqBxCQ,CAAAA,CACJF,CADIE,WACoBvT,QADpBuT,EACyC7Q,CAAV,CAAsB2Q,CAAtB,CACrC,KAAMN,EAAsBrT,CAAP,CAAyB+D,IAAzB,CACnB,IADmB,CAEnB4P,CAFmB,CAGnBC,CAHmB,CAArB,CAKME,EAA4B9Q,CAAV,CAAsB,IAAtB,CAEpB8Q,EAAJ,EACEnN,CAAA,CAAA4E,CAAA,CAAyBqI,CAAzB,CAGEC,EAAJ,EACElN,CAAA,CAAA4E,CAAA,CAAyBoI,CAAzB,CAGEG,EAAJ,EACExN,CAAA,CAAAiF,CAAA,CAAsBoI,CAAtB,CAGF,OAAON,EA5CQ,CA0FNnT,EAAX,EAAsCA,CAAtC,CAAuDyK,GAAvD,CACEmI,CAAA,CAAkBtT,IAAlB,CAAuBZ,SAAvB,CAAyCsB,CAAzC,CADF,CAGE8F,EAAA,CAAAuF,CAAA,CAAuB,QAAA,CAAU3G,CAAV,CAAiB,CACtCkO,CAAA,CAAkBlO,CAAlB,CAA2B,CACzBgG,WAAY,CAAA,CADa,CAEzBF,aAAc,CAAA,CAFW,CAKzBC,IAAKA,QAAA,EAAA,CAGH,IAFA,IAAMoJ,EAA8B,EAApC,CAES/P,EAAI,IAAJA,CAASC,UAAlB,CAA8BD,CAA9B,CAAiCA,CAAjC,CAAqCA,CAArC,CAAuCE,WAAvC,CACMF,CAAJ,CAAMG,QAAN,GAAmB3E,IAAnB,CAAwBwU,YAAxB;AAGAD,CAAA,CAAM1P,IAAN,CAAWL,CAAX,CAAaiQ,WAAb,CAGF,OAAOF,EAAA,CAAMG,IAAN,CAAW,EAAX,CAVJ,CALoB,CAiBzB5G,IAAKA,QAAA,CAAsByE,CAAtB,CAAmC,CACtC,IAAA,CAAO,IAAP,CAAY9N,UAAZ,CAAA,CACSnE,CAAP,CAAwBiE,IAAxB,CAA6B,IAA7B,CAAmC,IAAnC,CAAwCE,UAAxC,CAImB,KAArB,EAAI8N,CAAJ,EAA+C,EAA/C,GAA6BA,CAA7B,EACSrS,CAAP,CAAwBqE,IAAxB,CACE,IADF,CAEEnB,QAAA,CAASuR,cAAT,CAAwBpC,CAAxB,CAFF,CAPoC,CAjBf,CAA3B,CADsC,CAAxC,CApMsD,C,CXG1D,IAAM3M,EAAsB1G,MAAtB0G,CAA6B,cAEnCgP,SAASA,GAAe,EAAA,CAMtB,IAAM7I,EAAY,IAAIrG,CAKtBmP,GAAA,CAAiB9I,CAAjB,CACA+I,GAAA,CAAc/I,CAAd,CYhBAsE,EAAA,CZiBsBtE,CYjBtB,CAA2BlM,gBAA3B,CAA4CT,SAA5C,CAAuD,CACrD0Q,QAAgBlQ,EADqC,CAErDmQ,OAAejQ,EAFsC,CAAvD,CZkBAiV,GAAA,CAAUhJ,CAAV,CACAiJ,GAAA,CAAajJ,CAAb,CAEA7M,OAAA,CACE,qBADF,CAEK0N,CAECqI,EAAAA,CAAiB,IAAIrI,CAAJ,CAA0Bb,CAA1B,CAGvB3I,SAAA,CAASqE,aAAT,CAAyBwN,CAEzBtU,OAAA,CAAOsK,cAAP,CAAsB/L,MAAtB,CAA8B,gBAA9B,CAAgD,CAC9CgM,aAAc,CAAA,CADgC,CAE9CE,WAAY,CAAA,CAFkC,CAG9CnC,MAAOgM,CAHuC,CAAhD,CA1BsB,CAkCrBrP,CADH,EAEE,CAAAA,CAAA,CAAoB,aAFtB,EAG0C,UAH1C,EAGE,MAAOA,EAAP,CAA2B,MAH7B,EAIuC,UAJvC,EAIE,MAAOA,EAAP,CAA2B,GAJ7B,EAMEgP,EAAA,EAMD1V,OAAA,CAAe,oBAAf,CAAyC0V,E","file":"webcomponents-ce.js","sourcesContent":["/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nexport const Document_createElement = window.Document.prototype.createElement;\nexport const Document_createElementNS =\n window.Document.prototype.createElementNS;\nexport const Document_importNode = window.Document.prototype.importNode;\n\nexport const Document_prepend = window.Document.prototype['prepend'];\nexport const Document_append = window.Document.prototype['append'];\nexport const DocumentFragment_prepend =\n window.DocumentFragment.prototype['prepend'];\nexport const DocumentFragment_append =\n window.DocumentFragment.prototype['append'];\nexport const Node_cloneNode = window.Node.prototype.cloneNode;\nexport const Node_appendChild = window.Node.prototype.appendChild;\nexport const Node_insertBefore = window.Node.prototype.insertBefore;\nexport const Node_removeChild = window.Node.prototype.removeChild;\nexport const Node_replaceChild = window.Node.prototype.replaceChild;\nexport const Node_textContent = Object.getOwnPropertyDescriptor(\n window.Node.prototype,\n 'textContent'\n);\nexport const Element_attachShadow = window.Element.prototype['attachShadow'];\nexport const Element_innerHTML = Object.getOwnPropertyDescriptor(\n window.Element.prototype,\n 'innerHTML'\n);\nexport const Element_getAttribute = window.Element.prototype.getAttribute;\nexport const Element_setAttribute = window.Element.prototype.setAttribute;\nexport const Element_removeAttribute = window.Element.prototype.removeAttribute;\nexport const Element_getAttributeNS = window.Element.prototype.getAttributeNS;\nexport const Element_setAttributeNS = window.Element.prototype.setAttributeNS;\nexport const Element_removeAttributeNS =\n window.Element.prototype.removeAttributeNS;\nexport const Element_insertAdjacentElement =\n window.Element.prototype['insertAdjacentElement'];\nexport const Element_insertAdjacentHTML =\n window.Element.prototype['insertAdjacentHTML'];\nexport const Element_prepend = window.Element.prototype['prepend'];\nexport const Element_append = window.Element.prototype['append'];\nexport const Element_before = window.Element.prototype['before'];\nexport const Element_after = window.Element.prototype['after'];\nexport const Element_replaceWith = window.Element.prototype['replaceWith'];\nexport const Element_remove = window.Element.prototype['remove'];\nexport const HTMLElement = window.HTMLElement;\nexport const HTMLElement_innerHTML = Object.getOwnPropertyDescriptor(\n window.HTMLElement.prototype,\n 'innerHTML'\n);\nexport const HTMLElement_insertAdjacentElement =\n window.HTMLElement.prototype['insertAdjacentElement'];\nexport const HTMLElement_insertAdjacentHTML =\n window.HTMLElement.prototype['insertAdjacentHTML'];\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nconst reservedElementNameSet = new Set<string>();\n// IE11 does not support constructing a set using an iterable.\n[\n 'annotation-xml',\n 'color-profile',\n 'font-face',\n 'font-face-src',\n 'font-face-uri',\n 'font-face-format',\n 'font-face-name',\n 'missing-glyph',\n].forEach((item) => reservedElementNameSet.add(item));\n\nexport function isValidCustomElementName(localName: string) {\n const reserved = reservedElementNameSet.has(localName);\n const validForm = /^[a-z][.0-9_a-z]*-[-.0-9_a-z]*$/.test(localName);\n return !reserved && validForm;\n}\n\n// Note, IE11 doesn't have `document.contains`.\nconst nativeContains = document.contains\n ? document.contains.bind(document)\n : document.documentElement.contains.bind(document.documentElement);\n\nexport function isConnected(node: Node) {\n // Use `Node#isConnected`, if defined.\n const nativeValue = node.isConnected;\n if (nativeValue !== undefined) {\n return nativeValue;\n }\n // Optimization: It's significantly faster here to try to use `contains`,\n // especially on Edge/IE/\n if (nativeContains(node)) {\n return true;\n }\n\n let current: Node | undefined = node;\n while (\n current &&\n !(current.__CE_isImportDocument || current instanceof Document)\n ) {\n current =\n current.parentNode ||\n (window.ShadowRoot && current instanceof ShadowRoot\n ? current.host\n : undefined);\n }\n return !!(\n current &&\n (current.__CE_isImportDocument || current instanceof Document)\n );\n}\n\nexport function childrenFromFragment(\n fragment: DocumentFragment\n): Array<Element> {\n // Note, IE doesn't have `children` on document fragments.\n const nativeChildren = fragment.children;\n if (nativeChildren) {\n return Array.prototype.slice.call(nativeChildren);\n }\n const children: Array<Element> = [];\n for (let n = fragment.firstChild; n; n = n.nextSibling) {\n if (n.nodeType === Node.ELEMENT_NODE) {\n children.push(n as Element);\n }\n }\n return children;\n}\n\nfunction nextSiblingOrAncestorSibling(root: Node, start: Node) {\n let node: Node | null = start;\n while (node && node !== root && !node.nextSibling) {\n node = node.parentNode;\n }\n return !node || node === root ? null : node.nextSibling;\n}\n\nfunction nextNode(root: Node, start: Node) {\n return start.firstChild\n ? start.firstChild\n : nextSiblingOrAncestorSibling(root, start);\n}\n\nexport function walkDeepDescendantElements(\n root: Node,\n callback: (elem: Element) => void,\n visitedImports?: Set<Node>\n) {\n let node: Node | null = root;\n while (node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as Element;\n\n callback(element);\n\n const localName = element.localName;\n if (localName === 'link' && element.getAttribute('rel') === 'import') {\n // If this import (polyfilled or not) has its root node available,\n // walk it.\n const importNode = (element as HTMLLinkElement).import;\n if (visitedImports === undefined) {\n visitedImports = new Set();\n }\n if (importNode instanceof Node && !visitedImports.has(importNode)) {\n // Prevent multiple walks of the same import root.\n visitedImports.add(importNode);\n\n for (\n let child = importNode.firstChild;\n child;\n child = child.nextSibling\n ) {\n walkDeepDescendantElements(child, callback, visitedImports);\n }\n }\n\n // Ignore descendants of import links to prevent attempting to walk the\n // elements created by the HTML Imports polyfill that we just walked\n // above.\n node = nextSiblingOrAncestorSibling(root, element);\n continue;\n } else if (localName === 'template') {\n // Ignore descendants of templates. There shouldn't be any descendants\n // because they will be moved into `.content` during construction in\n // browsers that support template but, in case they exist and are still\n // waiting to be moved by a polyfill, they will be ignored.\n node = nextSiblingOrAncestorSibling(root, element);\n continue;\n }\n\n // Walk shadow roots.\n const shadowRoot = element.__CE_shadowRoot;\n if (shadowRoot) {\n for (\n let child = shadowRoot.firstChild;\n child;\n child = child.nextSibling\n ) {\n walkDeepDescendantElements(child, callback, visitedImports);\n }\n }\n }\n\n node = nextNode(root, node);\n }\n}\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementRegistry from './CustomElementRegistry.js';\nimport {CustomElementState as CEState} from './CustomElementState.js';\nimport * as Native from './Patch/Native.js';\nimport * as Utilities from './Utilities.js';\n\nconst NS_HTML = 'http://www.w3.org/1999/xhtml';\n\nexport default class CustomElementInternals {\n private readonly _patchesNode: Array<(node: Node) => void> = [];\n private readonly _patchesElement: Array<(elem: Element) => void> = [];\n private _hasPatches = false;\n public readonly shadyDomFastWalk: boolean;\n public readonly useDocumentConstructionObserver: boolean;\n\n constructor(options: {\n shadyDomFastWalk: boolean;\n noDocumentConstructionObserver: boolean;\n }) {\n this.shadyDomFastWalk = options.shadyDomFastWalk;\n this.useDocumentConstructionObserver = !options.noDocumentConstructionObserver;\n }\n\n forEachElement(\n node: Node,\n callback: (elem: Element) => void,\n visitedImports?: Set<Node>\n ) {\n const sd = window['ShadyDOM'];\n if (this.shadyDomFastWalk && sd && sd['inUse']) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as Element;\n callback(element);\n }\n // most easily gets to document, element, documentFragment\n if ((node as Element).querySelectorAll!) {\n const elements = sd['nativeMethods'].querySelectorAll.call(node, '*');\n for (let i = 0; i < elements.length; i++) {\n callback(elements[i]);\n }\n }\n } else {\n Utilities.walkDeepDescendantElements(node, callback, visitedImports);\n }\n }\n\n addNodePatch(patch: (node: Node) => void) {\n this._hasPatches = true;\n this._patchesNode.push(patch);\n }\n\n addElementPatch(patch: (element: Element) => void) {\n this._hasPatches = true;\n this._patchesElement.push(patch);\n }\n\n patchTree(node: Node) {\n if (!this._hasPatches) {\n return;\n }\n\n this.forEachElement(node, (element) => this.patchElement(element));\n }\n\n patchNode(node: Node) {\n if (!this._hasPatches) {\n return;\n }\n\n if (node.__CE_patched) {\n return;\n }\n node.__CE_patched = true;\n\n for (let i = 0; i < this._patchesNode.length; i++) {\n this._patchesNode[i](node);\n }\n }\n\n patchElement(element: Element) {\n if (!this._hasPatches) {\n return;\n }\n\n if (element.__CE_patched) {\n return;\n }\n element.__CE_patched = true;\n\n for (let i = 0; i < this._patchesNode.length; i++) {\n this._patchesNode[i](element);\n }\n\n for (let i = 0; i < this._patchesElement.length; i++) {\n this._patchesElement[i](element);\n }\n }\n\n connectTree(root: Node) {\n const elements: Array<Element> = [];\n\n this.forEachElement(root, (element) => elements.push(element));\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.__CE_state === CEState.custom) {\n this.connectedCallback(element);\n } else {\n this.upgradeReaction(element as HTMLElement);\n }\n }\n }\n\n disconnectTree(root: Node) {\n const elements: Array<Element> = [];\n\n this.forEachElement(root, (element) => elements.push(element));\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.__CE_state === CEState.custom) {\n this.disconnectedCallback(element);\n }\n }\n }\n\n /**\n * Upgrades all uncustomized custom elements at and below a root node for\n * which there is a definition. When custom element reaction callbacks are\n * assumed to be called synchronously (which, by the current DOM / HTML spec\n * definitions, they are *not*), callbacks for both elements customized\n * synchronously by the parser and elements being upgraded occur in the same\n * relative order.\n *\n * NOTE: This function, when used to simulate the construction of a tree\n * that is already created but not customized (i.e. by the parser), does\n * *not* prevent the element from reading the 'final' (true) state of the\n * tree. For example, the element, during truly synchronous parsing /\n * construction would see that it contains no children as they have not yet\n * been inserted. However, this function does not modify the tree, the\n * element will (incorrectly) have children. Additionally, self-modification\n * restrictions for custom element constructors imposed by the DOM spec are\n * *not* enforced.\n *\n *\n * The following nested list shows the steps extending down from the HTML\n * spec's parsing section that cause elements to be synchronously created\n * and upgraded:\n *\n * The \"in body\" insertion mode:\n * https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n * - Switch on token:\n * .. other cases ..\n * -> Any other start tag\n * - [Insert an HTML element](below) for the token.\n *\n * Insert an HTML element:\n * https://html.spec.whatwg.org/multipage/syntax.html#insert-an-html-element\n * - Insert a foreign element for the token in the HTML namespace:\n * https://html.spec.whatwg.org/multipage/syntax.html#insert-a-foreign-element\n * - Create an element for a token:\n * https://html.spec.whatwg.org/multipage/syntax.html#create-an-element-for-the-token\n * - Will execute script flag is true?\n * - (Element queue pushed to the custom element reactions stack.)\n * - Create an element:\n * https://dom.spec.whatwg.org/#concept-create-element\n * - Sync CE flag is true?\n * - Constructor called.\n * - Self-modification restrictions enforced.\n * - Sync CE flag is false?\n * - (Upgrade reaction enqueued.)\n * - Attributes appended to element.\n * (`attributeChangedCallback` reactions enqueued.)\n * - Will execute script flag is true?\n * - (Element queue popped from the custom element reactions stack.\n * Reactions in the popped stack are invoked.)\n * - (Element queue pushed to the custom element reactions stack.)\n * - Insert the element:\n * https://dom.spec.whatwg.org/#concept-node-insert\n * - Shadow-including descendants are connected. During parsing\n * construction, there are no shadow-*excluding* descendants.\n * However, the constructor may have validly attached a shadow\n * tree to itself and added descendants to that shadow tree.\n * (`connectedCallback` reactions enqueued.)\n * - (Element queue popped from the custom element reactions stack.\n * Reactions in the popped stack are invoked.)\n */\n patchAndUpgradeTree(\n root: Node,\n options: {\n visitedImports?: Set<Node>;\n upgrade?: (elem: HTMLElement) => void;\n } = {}\n ) {\n const visitedImports = options.visitedImports;\n const upgrade =\n options.upgrade || ((element) => this.upgradeReaction(element));\n\n const elements: Array<Element> = [];\n\n const gatherElements = (element: Element) => {\n if (this._hasPatches) {\n this.patchElement(element);\n }\n if (\n element.localName === 'link' &&\n element.getAttribute('rel') === 'import'\n ) {\n const importElem = element as HTMLLinkElement;\n // The HTML Imports polyfill sets a descendant element of the link to\n // the `import` property, specifically this is *not* a Document.\n const importNode = importElem.import;\n\n if (importNode instanceof Node) {\n importNode.__CE_isImportDocument = true;\n // Connected links are associated with the global registry.\n importNode.__CE_registry = document.__CE_registry;\n }\n\n if (importNode && importNode.readyState === 'complete') {\n importNode.__CE_documentLoadHandled = true;\n } else {\n // If this link's import root is not available, its contents can't\n // be walked. Wait for 'load' and walk it when it's ready.\n element.addEventListener('load', () => {\n const importNode = importElem.import!;\n\n if (importNode.__CE_documentLoadHandled) {\n return;\n }\n importNode.__CE_documentLoadHandled = true;\n\n // Clone the `visitedImports` set that was populated sync during\n // the `patchAndUpgradeTree` call that caused this 'load' handler\n // to be added. Then, remove *this* link's import node so that we\n // can walk that import again, even if it was partially walked\n // later during the same `patchAndUpgradeTree` call.\n const clonedVisitedImports = new Set<Node>();\n if (visitedImports) {\n // IE11 does not support constructing a set using an iterable.\n visitedImports.forEach((item) => clonedVisitedImports.add(item));\n clonedVisitedImports.delete(importNode);\n }\n this.patchAndUpgradeTree(importNode, {\n visitedImports: clonedVisitedImports,\n upgrade,\n });\n });\n }\n } else {\n elements.push(element);\n }\n };\n\n // `forEachElement` populates (and internally checks against)\n // `visitedImports` when traversing a loaded import.\n this.forEachElement(root, gatherElements, visitedImports);\n\n for (let i = 0; i < elements.length; i++) {\n upgrade(elements[i] as HTMLElement);\n }\n }\n\n upgradeReaction(element: HTMLElement) {\n try {\n const definition = this._lookupACustomElementDefinition(\n element.ownerDocument!,\n element.localName\n );\n if (definition) {\n this._upgradeAnElement(element, definition);\n }\n } catch (e: unknown) {\n this.reportTheException(e);\n }\n }\n\n /**\n * @see https://html.spec.whatwg.org/multipage/custom-elements.html#concept-upgrade-an-element\n */\n private _upgradeAnElement(\n element: HTMLElement,\n definition: CustomElementDefinition\n ) {\n const currentState = element.__CE_state;\n if (currentState !== undefined) {\n return;\n }\n\n definition.constructionStack.push(element);\n\n try {\n try {\n const result = new definition.constructorFunction();\n if (result !== element) {\n throw new Error(\n 'The custom element constructor did not produce the element being upgraded.'\n );\n }\n } finally {\n definition.constructionStack.pop();\n }\n } catch (e) {\n element.__CE_state = CEState.failed;\n throw e;\n }\n\n element.__CE_state = CEState.custom;\n element.__CE_definition = definition;\n\n // Check `hasAttributes` here to avoid iterating when it's not necessary.\n if (definition.attributeChangedCallback && element.hasAttributes()) {\n const observedAttributes = definition.observedAttributes;\n for (let i = 0; i < observedAttributes.length; i++) {\n const name = observedAttributes[i];\n const value = element.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(element, name, null, value, null);\n }\n }\n }\n\n if (Utilities.isConnected(element)) {\n this.connectedCallback(element);\n }\n }\n\n connectedCallback(element: Element) {\n const definition = element.__CE_definition!;\n if (definition.connectedCallback) {\n try {\n definition.connectedCallback.call(element);\n } catch (e: unknown) {\n this.reportTheException(e);\n }\n }\n }\n\n disconnectedCallback(element: Element) {\n const definition = element.__CE_definition!;\n if (definition.disconnectedCallback) {\n try {\n definition.disconnectedCallback.call(element);\n } catch (e: unknown) {\n this.reportTheException(e);\n }\n }\n }\n\n attributeChangedCallback(\n element: Element,\n name: string,\n oldValue?: string | null,\n newValue?: string | null,\n namespace?: string | null\n ) {\n const definition = element.__CE_definition!;\n if (\n definition.attributeChangedCallback &&\n definition.observedAttributes.indexOf(name) > -1\n ) {\n try {\n definition.attributeChangedCallback.call(\n element,\n name,\n oldValue,\n newValue,\n namespace\n );\n } catch (e: unknown) {\n this.reportTheException(e);\n }\n }\n }\n\n /**\n * Runs HTML's 'look up a custom element definition', excluding the namespace\n * check.\n *\n * @see https://html.spec.whatwg.org/multipage/custom-elements.html#look-up-a-custom-element-definition\n */\n private _lookupACustomElementDefinition(\n doc: Document,\n localName: string\n ): CustomElementDefinition | undefined {\n // The document must be associated with a registry.\n const registry = doc.__CE_registry;\n if (!registry) {\n return;\n }\n\n // Prevent elements created in documents without a browsing context from\n // upgrading.\n //\n // https://html.spec.whatwg.org/multipage/custom-elements.html#look-up-a-custom-element-definition\n // \"If document does not have a browsing context, return null.\"\n //\n // https://html.spec.whatwg.org/multipage/window-object.html#dom-document-defaultview\n // \"The defaultView IDL attribute of the Document interface, on getting,\n // must return this Document's browsing context's WindowProxy object, if\n // this Document has an associated browsing context, or null otherwise.\"\n if (!doc.defaultView && !doc.__CE_isImportDocument) {\n return;\n }\n\n return registry.internal_localNameToDefinition(localName);\n }\n\n /**\n * Runs the DOM's 'create an element'. If namespace is not null, then the\n * native `createElementNS` is used. Otherwise, `createElement` is used.\n *\n * Note, the template polyfill only wraps `createElement`, preventing this\n * function from using `createElementNS` in all cases.\n *\n * @see https://dom.spec.whatwg.org/#concept-create-element\n */\n createAnElement(\n doc: Document,\n localName: string,\n namespace: string | null\n ): Element {\n const registry = doc.__CE_registry;\n // Only create custom elements if the document is associated with a\n // registry.\n if (registry && (namespace === null || namespace === NS_HTML)) {\n const definition = ((registry as unknown) as CustomElementRegistry).internal_localNameToDefinition(\n localName\n );\n if (definition) {\n try {\n const result = new definition.constructorFunction();\n\n // These conformance checks can't be performed when the user calls\n // the element's constructor themselves. However, this also true in\n // native implementations.\n\n if (\n result.__CE_state === undefined ||\n result.__CE_definition === undefined\n ) {\n throw new Error(\n `Failed to construct '${localName}': ` +\n 'The returned value was not constructed with the HTMLElement ' +\n 'constructor.'\n );\n }\n\n if (result.namespaceURI !== NS_HTML) {\n throw new Error(\n `Failed to construct '${localName}': ` +\n \"The constructed element's namespace must be the HTML \" +\n 'namespace.'\n );\n }\n\n // The following Errors should be DOMExceptions but DOMException\n // isn't constructible in all browsers.\n\n if (result.hasAttributes()) {\n throw new Error(\n `Failed to construct '${localName}': ` +\n 'The constructed element must not have any attributes.'\n );\n }\n\n // ShadyDOM doesn't wrap `#hasChildNodes`, so we check `#firstChild`\n // instead.\n if (result.firstChild !== null) {\n throw new Error(\n `Failed to construct '${localName}': ` +\n 'The constructed element must not have any children.'\n );\n }\n\n if (result.parentNode !== null) {\n throw new Error(\n `Failed to construct '${localName}': ` +\n 'The constructed element must not have a parent node.'\n );\n }\n\n if (result.ownerDocument !== doc) {\n throw new Error(\n `Failed to construct '${localName}': ` +\n \"The constructed element's owner document is incorrect.\"\n );\n }\n\n if (result.localName !== localName) {\n throw new Error(\n `Failed to construct '${localName}': ` +\n \"The constructed element's local name is incorrect.\"\n );\n }\n\n return result;\n } catch (e: unknown) {\n this.reportTheException(e);\n\n // When construction fails, a new HTMLUnknownElement is produced.\n // However, there's no direct way to create one, so we create a\n // regular HTMLElement and replace its prototype.\n const result =\n namespace === null\n ? Native.Document_createElement.call(doc, localName)\n : Native.Document_createElementNS.call(doc, namespace, localName);\n Object.setPrototypeOf(result, HTMLUnknownElement.prototype);\n result.__CE_state = CEState.failed;\n result.__CE_definition = undefined;\n this.patchElement(result);\n return result;\n }\n }\n }\n\n const result =\n namespace === null\n ? Native.Document_createElement.call(doc, localName)\n : Native.Document_createElementNS.call(doc, namespace, localName);\n this.patchElement(result);\n return result;\n }\n\n /**\n * Runs the DOM's 'report the exception' algorithm.\n *\n * @see https://html.spec.whatwg.org/multipage/webappapis.html#report-the-exception\n */\n reportTheException(arg: unknown) {\n interface ExtendedError extends Error {\n // Non-standard Safari properties.\n sourceURL?: string;\n line?: number;\n column?: number;\n\n // Non-standard Firefox properties.\n fileName?: string;\n lineNumber?: number;\n columnNumber?: number;\n }\n\n let message = '';\n let filename = '';\n let lineno = 0;\n let colno = 0;\n\n if (arg instanceof Error) {\n const error = arg as ExtendedError;\n message = error.message;\n filename = error.sourceURL || error.fileName || '';\n lineno = error.line || error.lineNumber || 0;\n colno = error.column || error.columnNumber || 0;\n } else {\n message = `Uncaught ${String(arg)}`;\n }\n\n let event: ErrorEvent | undefined = undefined;\n if (ErrorEvent.prototype.initErrorEvent === undefined) {\n event = new ErrorEvent('error', {\n cancelable: true,\n message,\n filename,\n lineno,\n colno,\n error: arg,\n });\n } else {\n event = document.createEvent('ErrorEvent') as ErrorEvent;\n // initErrorEvent(type, bubbles, cancelable, message, filename, line)\n event.initErrorEvent!('error', false, true, message, filename, lineno);\n // Hack for IE, where ErrorEvent#preventDefault does not set\n // #defaultPrevented to true.\n event.preventDefault = function (this: ErrorEvent) {\n Object.defineProperty(this, 'defaultPrevented', {\n configurable: true,\n get: function (this: ErrorEvent) {\n return true;\n },\n });\n };\n }\n\n if (event.error === undefined) {\n Object.defineProperty(event, 'error', {\n configurable: true,\n enumerable: true,\n get: function () {\n return arg;\n },\n });\n }\n\n window.dispatchEvent(event);\n if (!event.defaultPrevented) {\n // In 'report the exception', UAs may optionally write errors to the\n // console if their associated ErrorEvent isn't handled during dispatch\n // (indicated by calling `preventDefault`). In practice, these errors are\n // always displayed.\n console.error(arg);\n }\n }\n}\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from './CustomElementInternals.js';\nimport CustomElementRegistry from './CustomElementRegistry.js';\nimport PatchDocument from './Patch/Document.js';\nimport PatchDocumentFragment from './Patch/DocumentFragment.js';\nimport PatchElement from './Patch/Element.js';\nimport PatchHTMLElement from './Patch/HTMLElement.js';\nimport PatchNode from './Patch/Node.js';\n\nconst priorCustomElements = window['customElements'];\n\nfunction installPolyfill() {\n const noDocumentConstructionObserver = !!priorCustomElements?.[\n 'noDocumentConstructionObserver'\n ];\n const shadyDomFastWalk = !!priorCustomElements?.['shadyDomFastWalk'];\n\n const internals = new CustomElementInternals({\n noDocumentConstructionObserver,\n shadyDomFastWalk,\n });\n\n PatchHTMLElement(internals);\n PatchDocument(internals);\n PatchDocumentFragment(internals);\n PatchNode(internals);\n PatchElement(internals);\n\n window[\n 'CustomElementRegistry'\n ] = (CustomElementRegistry as unknown) as typeof window['CustomElementRegistry'];\n\n const customElements = new CustomElementRegistry(internals);\n\n // The main document is associated with the global registry.\n document.__CE_registry = customElements;\n\n Object.defineProperty(window, 'customElements', {\n configurable: true,\n enumerable: true,\n value: customElements,\n });\n}\n\nif (\n !priorCustomElements ||\n priorCustomElements['forcePolyfill'] ||\n typeof priorCustomElements['define'] != 'function' ||\n typeof priorCustomElements['get'] != 'function'\n) {\n installPolyfill();\n}\n\n// This is NOT public API and is only meant to work around a GC bug in older\n// versions of Safari that randomly removes the polyfill during tests.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n(window as any)['__CE_installPolyfill'] = installPolyfill;\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nexport const CustomElementState = {\n custom: 1,\n failed: 2,\n} as const;\nexport type CustomElementState =\n | typeof CustomElementState.custom\n | typeof CustomElementState.failed;\n\nexport default CustomElementState;\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nexport default class Deferred<T> {\n private _value: T | undefined = undefined;\n\n private _resolve!: (val: T) => void;\n\n private readonly _promise: Promise<T>;\n constructor() {\n this._promise = new Promise((resolve) => {\n this._resolve = resolve;\n });\n }\n\n resolve(value: T) {\n if (this._value) {\n throw new Error('Already resolved.');\n }\n\n this._value = value;\n this._resolve(value);\n }\n\n toPromise() {\n return this._promise;\n }\n}\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from './CustomElementInternals.js';\n\nexport default class DocumentConstructionObserver {\n private readonly _internals: CustomElementInternals;\n private readonly _document: Document;\n private _observer: MutationObserver | undefined = undefined;\n constructor(internals: CustomElementInternals, doc: Document) {\n this._internals = internals;\n this._document = doc;\n\n // Simulate tree construction for all currently accessible nodes in the\n // document.\n this._internals.patchAndUpgradeTree(this._document);\n\n if (this._document.readyState === 'loading') {\n this._observer = new MutationObserver(this._handleMutations.bind(this));\n\n // Nodes created by the parser are given to the observer *before* the next\n // task runs. Inline scripts are run in a new task. This means that the\n // observer will be able to handle the newly parsed nodes before the\n // inline script is run.\n this._observer.observe(this._document, {\n childList: true,\n subtree: true,\n });\n }\n }\n\n disconnect() {\n if (this._observer) {\n this._observer.disconnect();\n }\n }\n\n private _handleMutations(mutations: ReadonlyArray<MutationRecord>) {\n // Once the document's `readyState` is 'interactive' or 'complete', all new\n // nodes created within that document will be the result of script and\n // should be handled by patching.\n const readyState = this._document.readyState;\n if (readyState === 'interactive' || readyState === 'complete') {\n this.disconnect();\n }\n\n for (let i = 0; i < mutations.length; i++) {\n const addedNodes = mutations[i].addedNodes;\n for (let j = 0; j < addedNodes.length; j++) {\n const node = addedNodes[j];\n this._internals.patchAndUpgradeTree(node);\n }\n }\n }\n}\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport {AlreadyConstructedMarkerType} from './AlreadyConstructedMarker.js';\nimport CustomElementInternals from './CustomElementInternals.js';\nimport Deferred from './Deferred.js';\nimport DocumentConstructionObserver from './DocumentConstructionObserver.js';\nimport * as Utilities from './Utilities.js';\n\ninterface ElementConstructor {\n new (): HTMLElement;\n observedAttributes?: Array<string>;\n}\ntype ConstructorGetter = () => ElementConstructor;\n\n/**\n * @unrestricted\n */\nexport default class CustomElementRegistry {\n private readonly _localNameToConstructorGetter = new Map<\n string,\n ConstructorGetter\n >();\n private readonly _localNameToDefinition = new Map<\n string,\n CustomElementDefinition\n >();\n private readonly _constructorToDefinition = new Map<\n ElementConstructor,\n CustomElementDefinition\n >();\n private _elementDefinitionIsRunning = false;\n private readonly _internals: CustomElementInternals;\n private readonly _whenDefinedDeferred = new Map<\n string,\n Deferred<undefined>\n >();\n\n /**\n * The default flush callback triggers the document walk synchronously.\n */\n private _flushCallback: (fn: () => void) => void = (fn) => fn();\n private _flushPending = false;\n\n /**\n * A map from `localName`s of definitions that were defined *after* the\n * last flush to unupgraded elements matching that definition, in document\n * order. Entries are added to this map when a definition is registered,\n * but the list of elements is only populated during a flush after which\n * all of the entries are removed. DO NOT edit outside of `#_flush`.\n */\n private readonly _unflushedLocalNames: Array<string> = [];\n\n private readonly _documentConstructionObserver:\n | DocumentConstructionObserver\n | undefined;\n\n constructor(internals: CustomElementInternals) {\n this._internals = internals;\n this._documentConstructionObserver = internals.useDocumentConstructionObserver\n ? new DocumentConstructionObserver(internals, document)\n : undefined;\n }\n\n polyfillDefineLazy(localName: string, constructorGetter: ConstructorGetter) {\n if (!(constructorGetter instanceof Function)) {\n throw new TypeError(\n 'Custom element constructor getters must be functions.'\n );\n }\n this.internal_assertCanDefineLocalName(localName);\n this._localNameToConstructorGetter.set(localName, constructorGetter);\n this._unflushedLocalNames.push(localName);\n // If we've already called the flush callback and it hasn't called back\n // yet, don't call it again.\n if (!this._flushPending) {\n this._flushPending = true;\n this._flushCallback(() => this._flush());\n }\n }\n\n define(localName: string, constructor: Function) {\n if (!(constructor instanceof Function)) {\n throw new TypeError('Custom element constructors must be functions.');\n }\n\n this.internal_assertCanDefineLocalName(localName);\n\n this.internal_reifyDefinition(localName, constructor as ElementConstructor);\n this._unflushedLocalNames.push(localName);\n // If we've already called the flush callback and it hasn't called back\n // yet, don't call it again.\n if (!this._flushPending) {\n this._flushPending = true;\n this._flushCallback(() => this._flush());\n }\n }\n\n internal_assertCanDefineLocalName(localName: string) {\n if (!Utilities.isValidCustomElementName(localName)) {\n throw new SyntaxError(`The element name '${localName}' is not valid.`);\n }\n\n if (this.internal_localNameToDefinition(localName)) {\n throw new Error(\n `A custom element with name ` +\n `'${localName}' has already been defined.`\n );\n }\n\n if (this._elementDefinitionIsRunning) {\n throw new Error('A custom element is already being defined.');\n }\n }\n\n internal_reifyDefinition(localName: string, constructor: ElementConstructor) {\n this._elementDefinitionIsRunning = true;\n\n let connectedCallback: CustomElementDefinition['connectedCallback'];\n let disconnectedCallback: CustomElementDefinition['disconnectedCallback'];\n let adoptedCallback: CustomElementDefinition['adoptedCallback'];\n let attributeChangedCallback: CustomElementDefinition['attributeChangedCallback'];\n let observedAttributes: CustomElementDefinition['observedAttributes'];\n try {\n const prototype = constructor.prototype;\n if (!(prototype instanceof Object)) {\n throw new TypeError(\n \"The custom element constructor's prototype is not an object.\"\n );\n }\n\n type CEReactionCallback =\n | 'connectedCallback'\n | 'disconnectedCallback'\n | 'adoptedCallback'\n | 'attributeChangedCallback';\n const getCallback = function getCallback(name: CEReactionCallback) {\n const callbackValue = prototype[name];\n if (\n callbackValue !== undefined &&\n !(callbackValue instanceof Function)\n ) {\n throw new Error(`The '${name}' callback must be a function.`);\n }\n return callbackValue;\n };\n\n connectedCallback = getCallback('connectedCallback');\n disconnectedCallback = getCallback('disconnectedCallback');\n adoptedCallback = getCallback('adoptedCallback');\n attributeChangedCallback = getCallback('attributeChangedCallback');\n // `observedAttributes` should not be read unless an\n // `attributesChangedCallback` exists\n observedAttributes =\n (attributeChangedCallback && constructor['observedAttributes']) || [];\n // eslint-disable-next-line no-useless-catch\n } catch (e) {\n throw e;\n } finally {\n this._elementDefinitionIsRunning = false;\n }\n\n const definition = {\n localName,\n constructorFunction: constructor,\n connectedCallback,\n disconnectedCallback,\n adoptedCallback,\n attributeChangedCallback,\n observedAttributes,\n constructionStack: [] as Array<\n HTMLElement | AlreadyConstructedMarkerType\n >,\n };\n\n this._localNameToDefinition.set(localName, definition);\n this._constructorToDefinition.set(\n definition.constructorFunction,\n definition\n );\n\n return definition;\n }\n\n upgrade(node: Node): void {\n this._internals.patchAndUpgradeTree(node);\n }\n\n private _flush() {\n // If no new definitions were defined, don't attempt to flush. This could\n // happen if a flush callback keeps the function it is given and calls it\n // multiple times.\n if (this._flushPending === false) {\n return;\n }\n this._flushPending = false;\n\n /**\n * Unupgraded elements with definitions that were defined *before* the last\n * flush, in document order.\n */\n const elementsWithStableDefinitions: Array<HTMLElement> = [];\n\n const unflushedLocalNames = this._unflushedLocalNames;\n const elementsWithPendingDefinitions = new Map<\n string,\n Array<HTMLElement>\n >();\n for (let i = 0; i < unflushedLocalNames.length; i++) {\n elementsWithPendingDefinitions.set(unflushedLocalNames[i], []);\n }\n\n this._internals.patchAndUpgradeTree(document, {\n upgrade: (element) => {\n // Ignore the element if it has already upgraded or failed to upgrade.\n if (element.__CE_state !== undefined) {\n return;\n }\n\n const localName = element.localName;\n\n // If there is an applicable pending definition for the element, add the\n // element to the list of elements to be upgraded with that definition.\n const pendingElements = elementsWithPendingDefinitions.get(localName);\n if (pendingElements) {\n pendingElements.push(element);\n // If there is *any other* applicable definition for the element, add\n // it to the list of elements with stable definitions that need to be\n // upgraded.\n } else if (this._localNameToDefinition.has(localName)) {\n elementsWithStableDefinitions.push(element);\n }\n },\n });\n\n // Upgrade elements with 'stable' definitions first.\n for (let i = 0; i < elementsWithStableDefinitions.length; i++) {\n this._internals.upgradeReaction(elementsWithStableDefinitions[i]);\n }\n\n // Upgrade elements with 'pending' definitions in the order they were\n // defined.\n for (let i = 0; i < unflushedLocalNames.length; i++) {\n const localName = unflushedLocalNames[i];\n const pendingUpgradableElements = elementsWithPendingDefinitions.get(\n localName\n )!;\n\n // Attempt to upgrade all applicable elements.\n for (let i = 0; i < pendingUpgradableElements.length; i++) {\n this._internals.upgradeReaction(pendingUpgradableElements[i]);\n }\n\n // Resolve any promises created by `whenDefined` for the definition.\n const deferred = this._whenDefinedDeferred.get(localName);\n if (deferred) {\n deferred.resolve(undefined);\n }\n }\n\n unflushedLocalNames.length = 0;\n }\n\n get(localName: string): undefined | {new (): HTMLElement} {\n const definition = this.internal_localNameToDefinition(localName);\n if (definition) {\n return definition.constructorFunction;\n }\n\n return undefined;\n }\n\n whenDefined(localName: string): Promise<void> {\n if (!Utilities.isValidCustomElementName(localName)) {\n return Promise.reject(\n new SyntaxError(`'${localName}' is not a valid custom element name.`)\n );\n }\n\n const prior = this._whenDefinedDeferred.get(localName);\n if (prior) {\n return prior.toPromise();\n }\n\n const deferred = new Deferred<undefined>();\n this._whenDefinedDeferred.set(localName, deferred);\n\n // Resolve immediately if the given local name has a regular or lazy\n // definition *and* the full document walk to upgrade elements with that\n // local name has already happened.\n //\n // The behavior of the returned promise differs between the lazy and the\n // non-lazy cases if the definition fails. Normally, the definition would\n // fail synchronously and no pending promises would resolve. However, if\n // the definition is lazy but has not yet been reified, the promise is\n // resolved early here even though it might fail later when reified.\n const anyDefinitionExists =\n this._localNameToDefinition.has(localName) ||\n this._localNameToConstructorGetter.has(localName);\n const definitionHasFlushed =\n this._unflushedLocalNames.indexOf(localName) === -1;\n if (anyDefinitionExists && definitionHasFlushed) {\n deferred.resolve(undefined);\n }\n\n return deferred.toPromise();\n }\n\n polyfillWrapFlushCallback(outer: (fn: () => void) => void) {\n if (this._documentConstructionObserver) {\n this._documentConstructionObserver.disconnect();\n }\n const inner = this._flushCallback;\n this._flushCallback = (flush) => outer(() => inner(flush));\n }\n\n internal_localNameToDefinition(\n localName: string\n ): CustomElementDefinition | undefined {\n const existingDefinition = this._localNameToDefinition.get(localName);\n if (existingDefinition) {\n return existingDefinition;\n }\n\n const constructorGetter = this._localNameToConstructorGetter.get(localName);\n if (constructorGetter) {\n this._localNameToConstructorGetter.delete(localName);\n try {\n return this.internal_reifyDefinition(localName, constructorGetter());\n } catch (e: unknown) {\n this._internals.reportTheException(e);\n }\n }\n\n return undefined;\n }\n\n internal_constructorToDefinition(\n constructor: ElementConstructor\n ): CustomElementDefinition | undefined {\n return this._constructorToDefinition.get(constructor);\n }\n}\n\n// Closure compiler exports.\n/* eslint-disable no-self-assign */\nCustomElementRegistry.prototype['define'] =\n CustomElementRegistry.prototype.define;\nCustomElementRegistry.prototype['upgrade'] =\n CustomElementRegistry.prototype.upgrade;\nCustomElementRegistry.prototype['get'] = CustomElementRegistry.prototype.get;\nCustomElementRegistry.prototype['whenDefined'] =\n CustomElementRegistry.prototype.whenDefined;\nCustomElementRegistry.prototype['polyfillDefineLazy'] =\n CustomElementRegistry.prototype.polyfillDefineLazy;\nCustomElementRegistry.prototype['polyfillWrapFlushCallback'] =\n CustomElementRegistry.prototype.polyfillWrapFlushCallback;\n/* eslint-enable no-self-assign */\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\ntype NativeMethod = (this: Node, ...args: Array<Node | string>) => void;\n\ninterface ParentNodeNativeMethods {\n prepend: NativeMethod;\n append: NativeMethod;\n}\n\nexport default function (\n internals: CustomElementInternals,\n destination: ParentNode,\n builtIn: ParentNodeNativeMethods\n) {\n function appendPrependPatch(builtInMethod: NativeMethod): NativeMethod {\n return function (this: Node, ...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n */\n const flattenedNodes: Array<Node | string> = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n */\n const connectedElements: Array<Node> = [];\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n builtInMethod.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n };\n }\n\n if (builtIn.prepend !== undefined) {\n destination.prepend = appendPrependPatch(builtIn.prepend);\n }\n\n if (builtIn.append !== undefined) {\n destination.append = appendPrependPatch(builtIn.append);\n }\n}\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from '../CustomElementInternals.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\nimport * as Native from './Native.js';\n\nexport default function (internals: CustomElementInternals) {\n Document.prototype.createElement = function (\n this: Document,\n localName: string\n ) {\n return internals.createAnElement(this, localName, null);\n } as typeof Document.prototype.createElement;\n\n Document.prototype.importNode = function <T extends Node>(\n this: Document,\n node: T,\n deep?: boolean\n ): T {\n const clone = Native.Document_importNode.call(this, node, !!deep) as T;\n // Only create custom elements if this document is associated with the\n // registry.\n if (!this.__CE_registry) {\n internals.patchTree(clone);\n } else {\n internals.patchAndUpgradeTree(clone);\n }\n return clone;\n };\n\n Document.prototype.createElementNS = function (\n this: Document,\n namespace: string | null,\n localName: string\n ) {\n return internals.createAnElement(this, localName, namespace);\n } as typeof Document.prototype.createElementNS;\n\n PatchParentNode(internals, Document.prototype, {\n prepend: Native.Document_prepend,\n append: Native.Document_append,\n });\n}\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\ntype NativeMethod = (this: ChildNode, ...args: Array<Node | string>) => void;\n\ninterface ChildNodeNativeMethods {\n before: NativeMethod;\n after: NativeMethod;\n replaceWith: NativeMethod;\n remove: (this: ChildNode) => void;\n}\n\nexport default function (\n internals: CustomElementInternals,\n destination: ChildNode,\n builtIn: ChildNodeNativeMethods\n) {\n function beforeAfterPatch(builtInMethod: NativeMethod): NativeMethod {\n return function (this: ChildNode, ...nodes) {\n const flattenedNodes: Array<string | Node> = [];\n const connectedElements: Array<Node> = [];\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n builtInMethod.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n };\n }\n\n if (builtIn.before !== undefined) {\n destination.before = beforeAfterPatch(builtIn.before);\n }\n\n if (builtIn.after !== undefined) {\n destination.after = beforeAfterPatch(builtIn.after);\n }\n\n if (builtIn.replaceWith !== undefined) {\n destination.replaceWith = function (\n this: ChildNode,\n ...nodes: Array<Node | string>\n ) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n */\n const flattenedNodes: Array<Node | string> = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n */\n const connectedElements: Array<Node> = [];\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n const wasConnected = Utilities.isConnected(this);\n\n builtIn.replaceWith.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (wasConnected) {\n internals.disconnectTree(this);\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n };\n }\n\n if (builtIn.remove !== undefined) {\n destination.remove = function (this: ChildNode) {\n const wasConnected = Utilities.isConnected(this);\n\n builtIn.remove.call(this);\n\n if (wasConnected) {\n internals.disconnectTree(this);\n }\n };\n }\n}\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport * as Utilities from '../Utilities.js';\n\nimport PatchChildNode from './Interface/ChildNode.js';\nimport PatchParentNode from './Interface/ParentNode.js';\nimport * as Native from './Native.js';\n\nexport default function (internals: CustomElementInternals) {\n if (Native.Element_attachShadow) {\n Element.prototype.attachShadow = function (\n this: Element,\n init: ShadowRootInit\n ) {\n const shadowRoot = Native.Element_attachShadow.call(this, init);\n internals.patchNode(shadowRoot);\n this.__CE_shadowRoot = shadowRoot;\n return shadowRoot;\n };\n }\n\n function patch_innerHTML(\n destination: Element,\n baseDescriptor: PropertyDescriptor\n ) {\n Object.defineProperty(destination, 'innerHTML', {\n enumerable: baseDescriptor.enumerable,\n configurable: true,\n get: baseDescriptor.get,\n set: function (this: Element, htmlString) {\n const isConnected = Utilities.isConnected(this);\n\n // NOTE: In IE11, when using the native `innerHTML` setter, all nodes\n // that were previously descendants of the context element have all of\n // their children removed as part of the set - the entire subtree is\n // 'disassembled'. This work around walks the subtree *before* using the\n // native setter.\n let removedElements: undefined | Array<Element> = undefined;\n if (isConnected) {\n removedElements = [];\n internals.forEachElement(this, (element) => {\n if (element !== this) {\n removedElements!.push(element);\n }\n });\n }\n\n baseDescriptor.set!.call(this, htmlString);\n\n if (removedElements) {\n for (let i = 0; i < removedElements.length; i++) {\n const element = removedElements[i];\n if (element.__CE_state === CEState.custom) {\n internals.disconnectedCallback(element);\n }\n }\n }\n\n // Only create custom elements if this element's owner document is\n // associated with the registry.\n if (!this.ownerDocument!.__CE_registry) {\n internals.patchTree(this);\n } else {\n internals.patchAndUpgradeTree(this);\n }\n return htmlString;\n },\n });\n }\n\n if (Native.Element_innerHTML && Native.Element_innerHTML.get) {\n patch_innerHTML(Element.prototype, Native.Element_innerHTML);\n } else if (Native.HTMLElement_innerHTML && Native.HTMLElement_innerHTML.get) {\n patch_innerHTML(HTMLElement.prototype, Native.HTMLElement_innerHTML);\n } else {\n internals.addElementPatch(function (element) {\n patch_innerHTML(element, {\n enumerable: true,\n configurable: true,\n // Implements getting `innerHTML` by performing an unpatched `cloneNode`\n // of the element and returning the resulting element's `innerHTML`.\n // TODO: Is this too expensive?\n get: function (this: Element) {\n return (Native.Node_cloneNode.call(this, true) as Element).innerHTML;\n },\n // Implements setting `innerHTML` by creating an unpatched element,\n // setting `innerHTML` of that element and replacing the target\n // element's children with those of the unpatched element.\n set: function (this: Element, assignedValue) {\n // NOTE: re-route to `content` for `template` elements.\n // We need to do this because `template.appendChild` does not\n // route into `template.content`.\n const isTemplate = this.localName === 'template';\n const content = isTemplate\n ? (this as HTMLTemplateElement).content\n : this;\n const rawElement = Native.Document_createElementNS.call(\n document,\n this.namespaceURI,\n this.localName\n );\n rawElement.innerHTML = assignedValue;\n\n while (content.childNodes.length > 0) {\n Native.Node_removeChild.call(content, content.childNodes[0]);\n }\n const container = isTemplate\n ? (rawElement as HTMLTemplateElement).content\n : rawElement;\n while (container.childNodes.length > 0) {\n Native.Node_appendChild.call(content, container.childNodes[0]);\n }\n },\n });\n });\n }\n\n Element.prototype.setAttribute = function (this: Element, name, newValue) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_setAttribute.call(this, name, newValue);\n }\n\n const oldValue = Native.Element_getAttribute.call(this, name);\n Native.Element_setAttribute.call(this, name, newValue);\n newValue = Native.Element_getAttribute.call(this, name)!;\n internals.attributeChangedCallback(this, name, oldValue, newValue, null);\n };\n\n Element.prototype.setAttributeNS = function (\n this: Element,\n namespace,\n name,\n newValue\n ) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_setAttributeNS.call(\n this,\n namespace,\n name,\n newValue\n );\n }\n\n const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n Native.Element_setAttributeNS.call(this, namespace, name, newValue);\n newValue = Native.Element_getAttributeNS.call(this, namespace, name)!;\n internals.attributeChangedCallback(\n this,\n name,\n oldValue,\n newValue,\n namespace\n );\n };\n\n Element.prototype.removeAttribute = function (this: Element, name) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_removeAttribute.call(this, name);\n }\n\n const oldValue = Native.Element_getAttribute.call(this, name);\n Native.Element_removeAttribute.call(this, name);\n if (oldValue !== null) {\n internals.attributeChangedCallback(this, name, oldValue, null, null);\n }\n };\n\n Element.prototype.removeAttributeNS = function (\n this: Element,\n namespace,\n name\n ) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_removeAttributeNS.call(this, namespace, name);\n }\n\n const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n Native.Element_removeAttributeNS.call(this, namespace, name);\n // In older browsers, `Element#getAttributeNS` may return the empty string\n // instead of null if the attribute does not exist. For details, see;\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttributeNS#Notes\n const newValue = Native.Element_getAttributeNS.call(this, namespace, name);\n if (oldValue !== newValue) {\n internals.attributeChangedCallback(\n this,\n name,\n oldValue,\n newValue,\n namespace\n );\n }\n };\n\n function patch_insertAdjacentElement(\n destination: Element,\n baseMethod: Element['insertAdjacentElement']\n ) {\n destination.insertAdjacentElement = function (\n this: Element,\n position,\n element\n ) {\n const wasConnected = Utilities.isConnected(element);\n const insertedElement = baseMethod.call(this, position, element)!;\n\n if (wasConnected) {\n internals.disconnectTree(element);\n }\n\n if (Utilities.isConnected(insertedElement)) {\n internals.connectTree(element);\n }\n return insertedElement;\n };\n }\n\n if (Native.HTMLElement_insertAdjacentElement) {\n patch_insertAdjacentElement(\n HTMLElement.prototype,\n Native.HTMLElement_insertAdjacentElement\n );\n } else if (Native.Element_insertAdjacentElement) {\n patch_insertAdjacentElement(\n Element.prototype,\n Native.Element_insertAdjacentElement\n );\n }\n\n function patch_insertAdjacentHTML(\n destination: Element,\n baseMethod: Element['insertAdjacentHTML']\n ) {\n /**\n * Patches and upgrades all nodes which are siblings between `start`\n * (inclusive) and `end` (exclusive). If `end` is `null`, then all siblings\n * following `start` will be patched and upgraded.\n */\n function upgradeNodesInRange(start: Node, end: Node | null) {\n const nodes = [];\n for (let node: Node = start; node !== end; node = node.nextSibling!) {\n nodes.push(node);\n }\n for (let i = 0; i < nodes.length; i++) {\n internals.patchAndUpgradeTree(nodes[i]);\n }\n }\n\n destination.insertAdjacentHTML = function (this: Element, position, text) {\n const strPosition = position.toLowerCase();\n\n if (strPosition === 'beforebegin') {\n const marker = this.previousSibling;\n baseMethod.call(this, strPosition, text);\n upgradeNodesInRange(marker || this.parentNode!.firstChild!, this);\n } else if (strPosition === 'afterbegin') {\n const marker = this.firstChild;\n baseMethod.call(this, strPosition, text);\n upgradeNodesInRange(this.firstChild!, marker);\n } else if (strPosition === 'beforeend') {\n const marker = this.lastChild;\n baseMethod.call(this, strPosition, text);\n upgradeNodesInRange(marker || this.firstChild!, null);\n } else if (strPosition === 'afterend') {\n const marker = this.nextSibling;\n baseMethod.call(this, strPosition, text);\n upgradeNodesInRange(this.nextSibling!, marker);\n } else {\n throw new SyntaxError(\n `The value provided (${String(strPosition)}) is ` +\n \"not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.\"\n );\n }\n };\n }\n\n if (Native.HTMLElement_insertAdjacentHTML) {\n patch_insertAdjacentHTML(\n HTMLElement.prototype,\n Native.HTMLElement_insertAdjacentHTML\n );\n } else if (Native.Element_insertAdjacentHTML) {\n patch_insertAdjacentHTML(\n Element.prototype,\n Native.Element_insertAdjacentHTML\n );\n }\n\n PatchParentNode(internals, Element.prototype, {\n prepend: Native.Element_prepend,\n append: Native.Element_append,\n });\n\n PatchChildNode(internals, Element.prototype, {\n before: Native.Element_before,\n after: Native.Element_after,\n replaceWith: Native.Element_replaceWith,\n remove: Native.Element_remove,\n });\n}\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * Represents the 'already constructed marker' used in custom\n * element construction stacks.\n *\n * https://html.spec.whatwg.org/#concept-already-constructed-marker\n */\nconst alreadyConstructedMarker = {} as {_alreadyConstructedMarker: never};\n\nexport default alreadyConstructedMarker;\nexport type AlreadyConstructedMarkerType = typeof alreadyConstructedMarker;\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport AlreadyConstructedMarker from '../AlreadyConstructedMarker.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport * as Native from './Native.js';\n\nexport default function (internals: CustomElementInternals) {\n const PatchedHTMLElement = function HTMLElement(this: HTMLElement) {\n // This should really be `new.target` but `new.target` can't be\n // emulated in ES5. Assuming the user keeps the default value of the\n // constructor's prototype's `constructor` property, this is\n // equivalent.\n const constructor = this.constructor as {new (): HTMLElement};\n\n // Always look up the definition from the global registry.\n const registry = document.__CE_registry!;\n const definition = registry.internal_constructorToDefinition(constructor);\n if (!definition) {\n throw new Error(\n 'Failed to construct a custom element: ' +\n 'The constructor was not registered with `customElements`.'\n );\n }\n\n const constructionStack = definition.constructionStack;\n\n if (constructionStack.length === 0) {\n const element = Native.Document_createElement.call(\n document,\n definition.localName\n ) as HTMLElement;\n Object.setPrototypeOf(element, constructor.prototype as typeof element);\n element.__CE_state = CEState.custom;\n element.__CE_definition = definition;\n internals.patchElement(element);\n return element;\n }\n\n const lastIndex = constructionStack.length - 1;\n const element = constructionStack[lastIndex];\n if (element === AlreadyConstructedMarker) {\n const localName = definition.localName;\n throw new Error(\n `Failed to construct '${localName}': ` +\n 'This element was already constructed.'\n );\n }\n const toConstructElement = element as HTMLElement;\n constructionStack[lastIndex] = AlreadyConstructedMarker;\n\n Object.setPrototypeOf(\n toConstructElement,\n constructor.prototype as typeof toConstructElement\n );\n internals.patchElement(toConstructElement);\n\n return toConstructElement;\n };\n\n PatchedHTMLElement.prototype = Native.HTMLElement.prototype;\n // Safari 9 has `writable: false` on the propertyDescriptor\n // Make it writable so that TypeScript can patch up the\n // constructor in the ES5 compiled code.\n Object.defineProperty(HTMLElement.prototype, 'constructor', {\n writable: true,\n configurable: true,\n enumerable: false,\n value: PatchedHTMLElement,\n });\n\n window['HTMLElement'] = (PatchedHTMLElement as unknown) as typeof HTMLElement;\n}\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport * as Utilities from '../Utilities.js';\n\nimport * as Native from './Native.js';\n\nexport default function (internals: CustomElementInternals) {\n // `Node#nodeValue` is implemented on `Attr`.\n // `Node#textContent` is implemented on `Attr`, `Element`.\n\n Node.prototype.insertBefore = function <T extends Node>(\n this: Node,\n node: T,\n refNode: Node | null\n ) {\n if (node instanceof DocumentFragment) {\n const insertedNodes = Utilities.childrenFromFragment(node);\n const nativeResult = Native.Node_insertBefore.call(this, node, refNode);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult as T;\n }\n\n const nodeWasConnectedElement =\n node instanceof Element && Utilities.isConnected(node);\n const nativeResult = Native.Node_insertBefore.call(\n this,\n node,\n refNode\n ) as T;\n\n if (nodeWasConnectedElement) {\n internals.disconnectTree(node);\n }\n\n if (Utilities.isConnected(this)) {\n internals.connectTree(node);\n }\n\n return nativeResult;\n };\n\n Node.prototype.appendChild = function <T extends Node>(this: Node, node: T) {\n if (node instanceof DocumentFragment) {\n const insertedNodes = Utilities.childrenFromFragment(node);\n const nativeResult = Native.Node_appendChild.call(this, node) as T;\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeWasConnectedElement =\n node instanceof Element && Utilities.isConnected(node);\n const nativeResult = Native.Node_appendChild.call(this, node) as T;\n\n if (nodeWasConnectedElement) {\n internals.disconnectTree(node);\n }\n\n if (Utilities.isConnected(this)) {\n internals.connectTree(node);\n }\n\n return nativeResult;\n };\n\n Node.prototype.cloneNode = function (this: Node, deep) {\n const clone = Native.Node_cloneNode.call(this, !!deep);\n // Only create custom elements if this element's owner document is\n // associated with the registry.\n if (!this.ownerDocument!.__CE_registry) {\n internals.patchTree(clone);\n } else {\n internals.patchAndUpgradeTree(clone);\n }\n return clone;\n };\n\n Node.prototype.removeChild = function <T extends Node>(this: Node, node: T) {\n const nodeWasConnectedElement =\n node instanceof Element && Utilities.isConnected(node);\n const nativeResult = Native.Node_removeChild.call(this, node) as T;\n\n if (nodeWasConnectedElement) {\n internals.disconnectTree(node);\n }\n\n return nativeResult;\n };\n\n Node.prototype.replaceChild = function <T extends Node>(\n this: Node,\n nodeToInsert: Node,\n nodeToRemove: T\n ) {\n if (nodeToInsert instanceof DocumentFragment) {\n const insertedNodes = Utilities.childrenFromFragment(nodeToInsert);\n const nativeResult = Native.Node_replaceChild.call(\n this,\n nodeToInsert,\n nodeToRemove\n ) as T;\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n internals.disconnectTree(nodeToRemove);\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeToInsertWasConnectedElement =\n nodeToInsert instanceof Element && Utilities.isConnected(nodeToInsert);\n const nativeResult = Native.Node_replaceChild.call(\n this,\n nodeToInsert,\n nodeToRemove\n ) as T;\n const thisIsConnected = Utilities.isConnected(this);\n\n if (thisIsConnected) {\n internals.disconnectTree(nodeToRemove);\n }\n\n if (nodeToInsertWasConnectedElement) {\n internals.disconnectTree(nodeToInsert);\n }\n\n if (thisIsConnected) {\n internals.connectTree(nodeToInsert);\n }\n\n return nativeResult;\n };\n\n function patch_textContent(\n destination: Node,\n baseDescriptor: PropertyDescriptor\n ) {\n Object.defineProperty(destination, 'textContent', {\n enumerable: baseDescriptor.enumerable,\n configurable: true,\n get: baseDescriptor.get,\n set: function (this: Node, assignedValue) {\n // If this is a text node then there are no nodes to disconnect.\n if (this.nodeType === Node.TEXT_NODE) {\n baseDescriptor.set!.call(this, assignedValue);\n return;\n }\n\n let removedNodes = undefined;\n // Checking for `firstChild` is faster than reading `childNodes.length`\n // to compare with 0.\n if (this.firstChild) {\n // Using `childNodes` is faster than `children`, even though we only\n // care about elements.\n const childNodes = this.childNodes;\n const childNodesLength = childNodes.length;\n if (childNodesLength > 0 && Utilities.isConnected(this)) {\n // Copying an array by iterating is faster than using slice.\n removedNodes = new Array(childNodesLength);\n for (let i = 0; i < childNodesLength; i++) {\n removedNodes[i] = childNodes[i];\n }\n }\n }\n\n baseDescriptor.set!.call(this, assignedValue);\n\n if (removedNodes) {\n for (let i = 0; i < removedNodes.length; i++) {\n internals.disconnectTree(removedNodes[i]);\n }\n }\n },\n });\n }\n\n if (Native.Node_textContent && Native.Node_textContent.get) {\n patch_textContent(Node.prototype, Native.Node_textContent);\n } else {\n internals.addNodePatch(function (element) {\n patch_textContent(element, {\n enumerable: true,\n configurable: true,\n // NOTE: This implementation of the `textContent` getter assumes that\n // text nodes' `textContent` getter will not be patched.\n get: function (this: Node) {\n const parts: Array<string | null> = [];\n\n for (let n = this.firstChild; n; n = n.nextSibling) {\n if (n.nodeType === Node.COMMENT_NODE) {\n continue;\n }\n parts.push(n.textContent);\n }\n\n return parts.join('');\n },\n set: function (this: Node, assignedValue) {\n while (this.firstChild) {\n Native.Node_removeChild.call(this, this.firstChild);\n }\n // `textContent = null | undefined | ''` does not result in\n // a TextNode childNode\n if (assignedValue != null && assignedValue !== '') {\n Native.Node_appendChild.call(\n this,\n document.createTextNode(assignedValue)\n );\n }\n },\n });\n });\n }\n}\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found\n * at http://polymer.github.io/AUTHORS.txt The complete set of contributors may\n * be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by\n * Google as part of the polymer project is also subject to an additional IP\n * rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from '../CustomElementInternals.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\nimport * as Native from './Native.js';\n\nexport default function (internals: CustomElementInternals) {\n PatchParentNode(internals, DocumentFragment.prototype, {\n prepend: Native.DocumentFragment_prepend,\n append: Native.DocumentFragment_append,\n });\n}\n"]}
\No newline at end of file