{"version":3,"sources":["webpack://hblsolutions/./app/components/anchor.ts","webpack://hblsolutions/./app/components/header/header.ts","webpack://hblsolutions/./app/components/logolist/logo-list-slider.ts","webpack://hblsolutions/./app/components/mega-dropdown.ts","webpack://hblsolutions/./app/components/navbar/index.ts","webpack://hblsolutions/./app/components/navbar/navbar-mega-dropdown.ts","webpack://hblsolutions/./app/components/navbar/navbar-toggler.ts","webpack://hblsolutions/./app/components/navbar/navbar.ts","webpack://hblsolutions/./app/components/products-preview/products-preview-slider.ts","webpack://hblsolutions/./app/components/search/index.ts","webpack://hblsolutions/./app/components/search/search-toggler.ts","webpack://hblsolutions/./app/components/search/search.ts","webpack://hblsolutions/./app/components/success-stories/success-stories-slider.ts","webpack://hblsolutions/./app/utilities/detection.ts","webpack://hblsolutions/./app/utilities/scroll-helper.ts","webpack://hblsolutions/./node_modules/@opten/collapse/index.ts","webpack://hblsolutions/./node_modules/@opten/collapse/initializer/index.ts","webpack://hblsolutions/./node_modules/@opten/common/new-guid/index.ts","webpack://hblsolutions/./node_modules/@opten/common/wrap-function/index.ts","webpack://hblsolutions/./node_modules/@opten/compiler/factory/index.ts","webpack://hblsolutions/./node_modules/@opten/compiler/index.ts","webpack://hblsolutions/./node_modules/@opten/compiler/metadata/component.ts","webpack://hblsolutions/./node_modules/@opten/compiler/metadata/di.ts","webpack://hblsolutions/./node_modules/@opten/compiler/reflector/index.ts","webpack://hblsolutions/./node_modules/@opten/compiler/resolver/index.ts","webpack://hblsolutions/./node_modules/@opten/compiler/util/decorators.ts","webpack://hblsolutions/./node_modules/@opten/compiler/util/factories.ts","webpack://hblsolutions/./node_modules/@opten/compiler/util/type.ts","webpack://hblsolutions/./node_modules/@opten/dom/add-class/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/as-html-element/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/class-regex/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/create-node/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/get-class/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/get-css/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/get-offset/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/get-selector-element-from-element/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/get-selector-from-element/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/get-styles/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/get-window-scroll-top/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/has-class/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/is-ancestor-of-class/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/is-html-element/index.ts","webpack://hblsolutions/./node_modules/@opten/dom/remove-class/index.ts","webpack://hblsolutions/./node_modules/@opten/events/dispatch-custom-event/index.ts","webpack://hblsolutions/./node_modules/@opten/events/event-namespace-factory/index.ts","webpack://hblsolutions/./node_modules/@opten/keycodes/index.ts","webpack://hblsolutions/./node_modules/@opten/number/parse-css-unit/index.ts","webpack://hblsolutions/./node_modules/@opten/overlay/index.ts","webpack://hblsolutions/./node_modules/@opten/overlay/keyboard/overlay-keyboard-dispatcher.ts","webpack://hblsolutions/./node_modules/@opten/overlay/overlay-options.ts","webpack://hblsolutions/./node_modules/@opten/overlay/overlay.ts","webpack://hblsolutions/./node_modules/@opten/overlay/position/connected-position-strategy.ts","webpack://hblsolutions/./node_modules/@opten/overlay/position/connected-position.ts","webpack://hblsolutions/./node_modules/@opten/overlay/position/global-position-strategy.ts","webpack://hblsolutions/./node_modules/@opten/overlay/position/overlay-position-builder.ts","webpack://hblsolutions/./node_modules/@opten/overlay/scroll/reposition-scroll-strategy.ts","webpack://hblsolutions/./node_modules/@opten/script/create-script/index.ts","webpack://hblsolutions/./node_modules/@opten/script/get-script-by-src/index.ts","webpack://hblsolutions/./node_modules/@opten/script/load-script/index.ts","webpack://hblsolutions/./node_modules/@opten/select/index.ts","webpack://hblsolutions/./node_modules/@opten/transition/add-transition-end-listener/index.ts","webpack://hblsolutions/./node_modules/@opten/transition/get-transition-end-event-name/index.ts","webpack://hblsolutions/./node_modules/@opten/url/remove-domain/index.ts","webpack://hblsolutions/./node_modules/@opten/viewport/is-element-clipped-by-scrolling/index.ts","webpack://hblsolutions/./node_modules/@opten/viewport/is-element-scrolled-outside-view/index.ts","webpack://hblsolutions/./node_modules/clip-path/dist/clippath.min.js","webpack://hblsolutions/./node_modules/core-js/es6/reflect.js","webpack://hblsolutions/./node_modules/core-js/fn/object/assign.js","webpack://hblsolutions/./node_modules/core-js/modules/_a-function.js","webpack://hblsolutions/./node_modules/core-js/modules/_an-object.js","webpack://hblsolutions/./node_modules/core-js/modules/_array-includes.js","webpack://hblsolutions/./node_modules/core-js/modules/_bind.js","webpack://hblsolutions/./node_modules/core-js/modules/_cof.js","webpack://hblsolutions/./node_modules/core-js/modules/_core.js","webpack://hblsolutions/./node_modules/core-js/modules/_ctx.js","webpack://hblsolutions/./node_modules/core-js/modules/_defined.js","webpack://hblsolutions/./node_modules/core-js/modules/_descriptors.js","webpack://hblsolutions/./node_modules/core-js/modules/_dom-create.js","webpack://hblsolutions/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://hblsolutions/./node_modules/core-js/modules/_export.js","webpack://hblsolutions/./node_modules/core-js/modules/_fails.js","webpack://hblsolutions/./node_modules/core-js/modules/_function-to-string.js","webpack://hblsolutions/./node_modules/core-js/modules/_global.js","webpack://hblsolutions/./node_modules/core-js/modules/_has.js","webpack://hblsolutions/./node_modules/core-js/modules/_hide.js","webpack://hblsolutions/./node_modules/core-js/modules/_html.js","webpack://hblsolutions/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://hblsolutions/./node_modules/core-js/modules/_invoke.js","webpack://hblsolutions/./node_modules/core-js/modules/_iobject.js","webpack://hblsolutions/./node_modules/core-js/modules/_is-object.js","webpack://hblsolutions/./node_modules/core-js/modules/_iter-create.js","webpack://hblsolutions/./node_modules/core-js/modules/_library.js","webpack://hblsolutions/./node_modules/core-js/modules/_object-assign.js","webpack://hblsolutions/./node_modules/core-js/modules/_object-create.js","webpack://hblsolutions/./node_modules/core-js/modules/_object-dp.js","webpack://hblsolutions/./node_modules/core-js/modules/_object-dps.js","webpack://hblsolutions/./node_modules/core-js/modules/_object-gopd.js","webpack://hblsolutions/./node_modules/core-js/modules/_object-gopn.js","webpack://hblsolutions/./node_modules/core-js/modules/_object-gops.js","webpack://hblsolutions/./node_modules/core-js/modules/_object-gpo.js","webpack://hblsolutions/./node_modules/core-js/modules/_object-keys-internal.js","webpack://hblsolutions/./node_modules/core-js/modules/_object-keys.js","webpack://hblsolutions/./node_modules/core-js/modules/_object-pie.js","webpack://hblsolutions/./node_modules/core-js/modules/_own-keys.js","webpack://hblsolutions/./node_modules/core-js/modules/_property-desc.js","webpack://hblsolutions/./node_modules/core-js/modules/_redefine.js","webpack://hblsolutions/./node_modules/core-js/modules/_set-proto.js","webpack://hblsolutions/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://hblsolutions/./node_modules/core-js/modules/_shared-key.js","webpack://hblsolutions/./node_modules/core-js/modules/_shared.js","webpack://hblsolutions/./node_modules/core-js/modules/_to-absolute-index.js","webpack://hblsolutions/./node_modules/core-js/modules/_to-integer.js","webpack://hblsolutions/./node_modules/core-js/modules/_to-iobject.js","webpack://hblsolutions/./node_modules/core-js/modules/_to-length.js","webpack://hblsolutions/./node_modules/core-js/modules/_to-object.js","webpack://hblsolutions/./node_modules/core-js/modules/_to-primitive.js","webpack://hblsolutions/./node_modules/core-js/modules/_uid.js","webpack://hblsolutions/./node_modules/core-js/modules/_wks.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.object.assign.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.apply.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.construct.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.define-property.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.get.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.has.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.own-keys.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack://hblsolutions/./node_modules/core-js/modules/es6.reflect.set.js","webpack://hblsolutions/./node_modules/picturefill/dist/picturefill.js","webpack://hblsolutions/../Opten.HypothekarbankLenzburg.Core.Static/components/datepicker.ts","webpack://hblsolutions/../Opten.HypothekarbankLenzburg.Core.Static/components/input-fields-filled.ts","webpack://hblsolutions/../Opten.HypothekarbankLenzburg.Core.Static/components/player/player.ts","webpack://hblsolutions/../Opten.HypothekarbankLenzburg.Core.Static/components/recaptcha-3.ts","webpack://hblsolutions/../Opten.HypothekarbankLenzburg.Core.Static/components/recaptcha.ts","webpack://hblsolutions/../Opten.HypothekarbankLenzburg.Core.Static/components/select/select.ts","webpack://hblsolutions/../Opten.HypothekarbankLenzburg.Core.Static/utilities/polyfills.ts","webpack://hblsolutions/../Opten.HypothekarbankLenzburg.Web.Static/app/utilities/detection.ts","webpack://hblsolutions/../Opten.HypothekarbankLenzburg.Web.Static/app/utilities/scroll-helper.ts","webpack://hblsolutions/./app/hblsolutions.scss","webpack://hblsolutions/webpack/bootstrap","webpack://hblsolutions/webpack/runtime/define property getters","webpack://hblsolutions/webpack/runtime/hasOwnProperty shorthand","webpack://hblsolutions/webpack/runtime/make namespace object","webpack://hblsolutions/webpack/runtime/node module decorator","webpack://hblsolutions/./app/hblsolutions.ts"],"names":["Anchor","Component","className","ComponentRef","Navbar","element","_handleCollapse","_animate","this","check","window","addEventListener","_canScroll","_scroll","hash","location","indexOf","querySelector","substring","getElement","isPad","_navbar","close","getAttribute","target","getSelectorElementFromElement","api","Collapse","isOpen","show","offset","getOffset","top","parseCssUnit","getCss","getStickyOffset","isPadSmall","hasClass","parentElement","isDesktopSmaller","Math","round","scrollTo","Header","_paddingTop","_cachedHeight","_handleBoxShadow","_dropdowns","document","getElementsByClassName","addClass","_handleScroll","_topCache","style","_hideDropdown","toggler","length","Array","from","forEach","dropdown","classList","contains","removeClass","setAttribute","body","_handleScrollDown","_handleScrollUp","getWindowScrollTop","_height","_update","LogoListSliderComponent","instance","Swiper","slidesPerView","spaceBetween","loop","speed","autoplay","delay","disableOnInteraction","breakpoints","768","1024","backdropElement","callback","addTransitionEndListener","console","log","NavbarMegaDropdown","_timeout","_handleClick","event","_resetAllAriaAttributes","preventDefault","toggle","_handleBackdropClick","hide","_backdropElement","_dropdownElement","_dropdownElements","_togglerElements","_handleResize","_addDesktopListeners","removeEventListener","container","firstElementChild","stickyOffset","isMobile","maxHeight","marginLeft","dropdownBox","getBoundingClientRect","right","innerWidth","left","width","_setContainerHeight","_setDropdownPosition","_isOpen","navbarElement","map","hideMegaDropdown","showMegaDropdown","transition","setTimeout","toElement","relatedTarget","isAncestorOfClass","clearTimeout","childclass","NavbarToggler","Search","ComponentRefs","_search","blur","_handleNavbarHeaderClick","_scrollableElements","scrollable","_removeScrollable","_setScrollable","_mainScrollElement","_header","_navbar1stLevelElements","querySelectorAll","_navbar2ndLevelElements","_navbarTogglerElements","_navbarHeaderElements","children","filter","o","_click","_addMobileListeners","height","header","navbar","id","collapseInstance","getInstance","destroy","_removeMobileListeners","_collapse","open","lockScrollbar","unlockScrollbar","_updateAria","titleElement","toString","toLowerCase","ProductsPreviewSliderComponent","currentSliderIsMobile","sliderElement","init","isInitial","isMobileWidth","initMobileSlider","initDesktopSlider","sliderElements","autoHeight","pagination","el","clickable","renderBullet","index","SearchToggler","SearchDesktop","_searchDesktop","getElementsByTagName","focus","undefined","SuccessStoriesSliderComponent","slideChange","slides","previousItem","previousIndex","activeItem","activeIndex","startIFrame","stopIFrame","navigation","nextEl","prevEl","on","stopAllIFrames","iframe","findIFrame","src","findAllIFrames","e","hasAttribute","iFrameElement","bodyElement","scroll","requestAnimationFrame","isTinyMobile","clampScroll","documentElement","position","overflow","paddingTop","removeAttribute","elements","cookieConsent","push","reduce","pv","cv","CollapseComponent","collapse","options","error","data","activeClass","activeParentClass","animateProp","collapsingClass","componentClass","showClass","showClassDesktop","desktopWidth","transitionDuration","isHideable","closeSiblings","useShowClassDesktop","dataParentSelector","dataTargetSelector","dataToggleSelector","hrefSelector","isTransitioning","eventNamespaceFn","eventNamespaceFactory","handleClick","trigger","currentTarget","tagName","triggers","outerWidth","parent","selector","actives","active","_handleShow","_handleClose","_addAriaAndCollapsedClass","collapseElement","scrollHeight","offsetWidth","create","replace","c","r","random","baseFn","extendFn","apply","components","rootElement","observables","Map","componentType","component","resolver","resolve","Error","name","safeRootElement","node","compiler","compile","observe","set","size","MutationObserver","mutations","componentInitializer","mutation","value","key","addedNodes","isHTMLElement","asHTMLElement","comps","childList","subtree","reflector","Reflector","Resolver","Compiler","componentCache","constructor","has","get","Object","keys","queries","propName","query","nodes","descendants","cache","acc","val","concat","f","first","isType","onInit","makeDecorator","createComponent","makeMetadataFactory","Query","makePropDecorator","ChildRef","ChildrenRef","typeOrFunc","parentCtor","getParentCtor","ownAnnotations","_ownAnnotations","annotations","propMetadata","parentPropMetadata","ownPropMetadata","_ownPropMetadata","decorators","hasOwnProperty","ANNOTATIONS","PROP_METADATA","ctor","parentProto","getPrototypeOf","prototype","QUERY_METADATA_IDENTIFIERS","type","typeMetadata","metadata","findLast","metadataName","propertyMetadata","_mergeWithPropertyMetadata","a","some","i","_merge","mergedQueries","res","propertyName","_getQueryMetadata","q","read","arr","condition","props","parentClass","chainFn","typeFn","metaCtor","makeMetadataCtor","DecoratorFactory","args","call","annotationInstance","typeDecorator","cls","defineProperty","PropDecoratorFactory","decoratorInstance","metaName","meta","unshift","values","factory","isTypeOf","obj","v","Type","Function","getClass","trim","classRegexCache","RegExp","html","createElement","innerHTML","computed","getStyles","getPropertyValue","clientRect","ownerDocument","documentTop","pageYOffset","scrollTop","clientTop","documentLeft","pageXOffset","scrollLeft","clientLeft","attribute","fallbackHref","getSelectorFromElement","getElementById","substr","test","view","defaultView","opener","getComputedStyle","parentNode","classRegex","includeSelf","nodeType","HTMLElement","nodeName","removeClassFactory","regex","eventName","CustomEvent","dispatchEvent","namespace","dispatchCustomEvent","DOWN","ENTER","ESCAPE","SPACE","UP","unit","units","u","parsed","Number","OverlayKeyboardDispatcher","attachedOverlays","keydownListener","overlay","_selectOverlayFromEvent","onKeyboardEvent","overlayRef","isAttached","splice","_detach","find","overlayElement","backdropClassName","hasBackdrop","Overlay","portalElement","attached","keyboardDispatcher","OverlayOptions","uuid","newGuid","scrollStrategy","attach","overlayContainerElement","createNode","insertBefore","lastElementChild","overlayClassName","appendChild","backdropToDetach","removeChild","pointerEvents","positionStrategy","sizeConfig","_updateElementSize","_attach","updatePosition","beforeOpen","afterOpened","beforeClose","afterClosed","dispose","disable","detachBackdrop","remove","enable","_attachBackdrop","add","onAttached","hasAttached","detach","onDetached","formatCssUnit","minWidth","minHeight","maxWidth","backdropClick","ConnectedPositionStrategy","originPos","overlayPos","connectedTo","offsetX","offsetY","scrollables","preferredPositions","applied","positionLocked","boundResizeChange","_handleResizeChange","bind","origin","withFallbackPosition","pane","lastConnectedPosition","recalculateLastPosition","_validatePositions","fallbackPoint","fallbackPosition","originRect","overlayRect","viewportSize","innerHeight","pos","originPoint","_getOriginConnectionPoint","overlayPoint","_getOverlayPoint","fitsInViewport","_setElementPosition","visibleArea","lastPosition","ConnectionPositionPair","isLocked","positions","slice","rect","originStartX","_getStartX","originEndX","_getEndX","x","originX","y","originY","bottom","overlayStartX","overlayStartY","overlayX","overlayY","leftOverflow","rightOverflow","topOverflow","bottomOverflow","_subtractOverflows","originBounds","overlayBounds","scrollContainerBounds","s","isOriginClipped","isElementClippedByScrolling","isOriginOutsideView","isElementScrolledOutsideView","isOverlayClipped","isOverlayOutsideView","verticalStyleProperty","clientHeight","horizontalStyleProperty","clientWidth","p","scrollableViewProperties","_getScrollVisibility","positionChange","ConnectedOverlayPositionChange","onPositionChange","overflows","currentValue","currentOverflow","max","pair","validateHorizontalPosition","validateVerticalPosition","property","connectionPair","GlobalPositionStrategy","cssPosition","topOffset","bottomOffset","leftOffset","rightOffset","alignItems","justifyContent","wrapper","getOptions","updateSize","parentStyles","marginTop","marginBottom","marginRight","OverlayPositionBuilder","elementRef","RepositionScrollStrategy","config","handleScroll","throttle","scrollThrottle","autoClose","update","parentRects","onerror","scriptElement","async","onload","removeLoadingScript","loadingScriptWindow","loadingScripts","scripts","currentScriptElement","item","removeDomain","Promise","reject","script","getScriptBySrc","wrapFunction","newScript","createScript","head","Select","Option","text","textContent","disabled","_disabled","_text","selectElement","classes","highlighted","panelOpen","htmlSelectElement","selectedIndex","_getSelectedIndex","_init","triggerRect","triggerElement","_createOverlay","_calculateOverlayPosition","_highlightCorrectOption","_scrollActiveOptionIntoView","_shouldForward","option","tabIndex","insertAdjacentHTML","_render","select","stopPropagation","_handleKeydown","_emit","delta","keyCode","KEYCODES","_updateActiveItem","_handleActiveIndex","panelHTML","_getOverlayOptions","_onPanelDone","transformOrigin","_calculateOverlayOffsetX","optionElements","_createPositionStrategy","primaryPosition","strategy","withOffsetX","withOffsetY","shouldForwardEvent","newValue","newLabel","_getOptionIndex","arrowHtml","iconHtml","result","current","itemHeight","_getItemHeight","scrollOffset","panelTop","_getPanelMaxHeight","items","panelHeight","min","maxScroll","selectedOptionOffset","scrollBuffer","_calculateOverlayScroll","_calculateOverlayOffsetY","_checkOverlayWithinViewport","paddingWidth","_getPanelToViewportPadding","topSpaceAvailable","bottomSpaceAvailable","panelHeightTop","abs","panelHeightBottom","_adjustPanelUp","_adjustPanelDown","_getOriginBasedOnOption","distanceBelowViewport","distanceAboveViewport","optionHeightAdjustment","optimalScrollPosition","maxOptionsDisplayed","floor","padding","offsetHeight","createEvent","initEvent","selected","fallbackDuration","called","listener","transitionEndEventName","getTransitionEndEventName","transitions","WebkitTransition","url","scrollContainers","scrollContainerRect","clippedAbove","clippedBelow","clippedLeft","clippedRight","containerBounds","outsideAbove","outsideBelow","outsideLeft","outsideRight","t","n","l","clipPath","split","d","h","createElementNS","setAttributeNS","g","b","m","w","cloneNode","replaceChild","webkitClipPath","navigator","userAgent","applyClipPath","jQuery","fn","ClipPath","path","each","attr","require","module","exports","it","TypeError","isObject","toIObject","toLength","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","O","aFunction","invoke","arraySlice","factories","construct","F","len","join","that","partArgs","arguments","bound","core","version","__e","is","global","redefine","ctx","$export","source","own","out","exp","IS_FORCED","IS_GLOBAL","G","IS_PROTO","P","IS_BIND","B","S","expProto","U","W","R","exec","self","__g","dP","createDesc","object","un","cof","propertyIsEnumerable","descriptor","setToStringTag","IteratorPrototype","Constructor","NAME","next","DESCRIPTORS","getKeys","gOPS","pIE","toObject","IObject","$assign","assign","A","Symbol","K","k","T","aLen","getSymbols","isEnum","j","anObject","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","display","contentWindow","write","lt","Properties","IE8_DOM_DEFINE","toPrimitive","Attributes","defineProperties","gOPD","getOwnPropertyDescriptor","$keys","hiddenKeys","getOwnPropertyNames","getOwnPropertySymbols","ObjectProto","arrayIndexOf","names","gOPN","Reflect","ownKeys","bitmap","enumerable","configurable","writable","SRC","$toString","TO_STRING","TPL","safe","isFunction","String","proto","setPrototypeOf","buggy","__proto__","def","TAG","tag","stat","shared","uid","SHARED","store","mode","copyright","toInteger","ceil","isNaN","defined","valueOf","px","USE_SYMBOL","rApply","fApply","thisArgument","argumentsList","L","fails","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","propertyKey","attributes","deleteProperty","desc","Enumerate","iterated","_t","_i","_k","done","enumerate","getProto","receiver","$isExtensible","isExtensible","$preventExtensions","preventExtensions","setProto","V","existingDescriptor","ownDesc","timer","dummySrc","fixRespimg","findPictureImgs","onResize","mq","ua","HTMLPictureElement","match","$1","img","sizes","picture","toUpperCase","_pfLastSize","imgs","matchMedia","addListener","srcset","readyState","eminpx","alwaysCheckWDescriptor","evalId","pf","isSupportTestReady","noop","image","getImgAttr","setImgAttr","removeImgAttr","docElem","types","cfg","algorithm","srcAttr","srcsetAttr","supportAbort","curSrcProp","regWDesc","regSize","setOptions","picturefillCFG","fsCss","isVwDirty","cssCache","sizeLengthCache","DPR","devicePixelRatio","anchor","alreadyRun","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","evt","capture","attachEvent","memoize","input","isSpace","regLength","buildStr","image2","width1","isDomReady","func","timeout","timestamp","later","regReady","run","timerId","lastClientWidth","evalCSS","css","string","parsedLength","setResolution","candidate","sizesattr","cWidth","calcListLength","picturefill","opt","plen","context","qsa","reevaluate","reselect","sel","selShort","setupRun","fillImg","teardownRun","ascendingSort","getCandidateForSrc","candidates","parseSet","makeUrl","warn","implementation","hasFeature","ns","Date","getTime","supSrcset","supSizes","supPicture","complete","setSize","href","matchesMedia","matches","media","mMQ","calcLength","sourceSizeValue","supportsType","parseSize","sourceSizeStr","cands","collectCharacters","regEx","chars","descriptors","currentDescriptor","state","inputLength","parseDescriptors","lastChar","intVal","floatVal","pError","parseInt","parseFloat","has1x","tokenize","charAt","parseSrcset","getEmValue","div","originalHTMLCSS","cssText","originalBodyCSS","sourceSizeListStr","uT","winningLength","strValue","unparsedSizesList","unparsedSizesListLength","unparsedSize","lastComponentValue","regexCssLengthWithUnits","regexCssCalc","str","chrctr","componentArray","listArray","parenDepth","inComment","pushComponent","pushComponentArray","parseComponentValues","pop","parseSizes","setRes","applySetCandidate","bestCandidate","curSrc","curCan","candidateSrc","abortCurSrc","lowerValue","higherValue","dprValue","isCached","bonusFactor","bonus","meanDensity","imageData","dpr","sets","setSrcToCur","cached","sort","pow","sqrt","setSrc","origWidth","getSet","parseSets","srcsetAttribute","imageSet","isWDescripor","srcsetParsed","hasPicture","pic","sources","getAllSourceElements","supported","extreme","evaled","srcSetCandidates","matchingSet","evaluated","applyBestCandidate","vw","vh","em","rem","fillImgs","last","_","shift","define","typeUri","Image","detectTypeSupport","Datepicker","_locales","i18n","previousMonth","nextMonth","months","JSON","parse","weekdays","weekdaysShort","yearRange","moment","locale","Pikaday","field","format","onSelect","date","inputElement","InputFieldsFilled","_element","_checkValue","hidden","$","validator","valid","IFramePlayer","_boundClick","_buttonElement","_iFrameElement","play","player","Player","Recaptcha3Validator","submit","closest","siteKey","actionName","scriptUrl","culture","lang","loadScript","then","catch","exc","form","grecaptcha","ready","timerFunction","execute","action","token","RecaptchaValidator","$captcha","$form","recaptchaOnLoadCallback","render","response","sitekey","$textarea","border","margin","updateForm","getResponse","removeData","unobtrusive","SelectComponent","oldWindowWidth","PAD_WIDTH","__webpack_module_cache__","__webpack_require__","moduleId","loaded","__webpack_modules__","definition","prop","toStringTag","nmd","paths","FormFieldAccept","checkbox","checked"],"mappings":";0GAAA,I,YAAA,UAEA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,UACA,U,oLAGaA,G,GADZ,IAAAC,WAAU,CAAEC,UAAW,c,GAEtB,IAAAC,cAAaC,U,gBACd,WAAoBC,GAAsB,I,EAAA,Q,4FAAA,U,EAAA,I,sBAAA,e,gHAAA,W,IAAA,KAkGlCC,gBAAkB,WACzB,EAAKC,YAnGoC,KAAtBF,U,sDAEX,WACRG,KAAKC,QACLC,OAAOC,iBAAiB,cAAc,kBAAM,EAAKF,WACjDC,OAAOC,iBAAiB,YAAY,kBAAM,EAAKF,a,8BAI3CD,KAAKI,cACRJ,KAAKK,Y,mCAKN,IAAMC,EAAOJ,OAAOK,SAASD,KAE7B,OAAOA,IAAsC,IAA9BA,EAAKE,QAAQ,c,mCAI5B,OAAIR,KAAKI,aACDJ,KAAKH,QAAQY,cAAb,wBACWP,OAAOK,SAASD,KAAKI,UAAU,GAD1C,OAKD,O,gCAIP,IAAMb,EAAUG,KAAKW,aAErB,GAAId,EAKH,IAJI,IAAAe,UACHZ,KAAKa,QAAQC,QAG8B,aAAxCjB,EAAQkB,aAAa,eAA+B,CACvD,IAAMC,GAAS,IAAAC,+BACdpB,EACA,eACA,GAGD,GAAImB,EAAQ,CACX,IAAME,EAAM,IAAIC,WAASH,GAIrBE,EAAIE,SACPpB,KAAKD,YAELiB,EAAOb,iBACN,uBACAH,KAAKF,iBAGNoB,EAAIG,aAILrB,KAAKD,gBAINC,KAAKD,a,iCAMP,IAAMF,EAAUG,KAAKW,aAErB,GAAId,EAAS,CACZ,IAAIyB,GAAS,IAAAC,WAAU1B,GAAS2B,MAEhCF,IAAyD,GAA/C,IAAAG,eAAa,IAAAC,QAAO7B,EAAS,eACvCyB,IAA+B,GAArB,IAAAK,mBACS,IAAhB,IAAAC,cAEiD,IAAlD,IAAAC,UAAShC,EAAQiC,cAAe,gBAE/B,IADD,IAAAD,UAAShC,EAAQiC,cAAe,2BAGhCR,IAAU,IAAAS,oBAAqB,GAAK,IAIrCT,GAAU,GAGXA,EAASU,KAAKC,MAAMX,GAEpBpB,OAAOgC,SAAS,EAAGZ,S,qgBC9GtB,I,EAAA,UAEA,UACA,UACA,UACA,S,0KAIaa,GADZ,IAAA1C,WAAU,CAAEC,UAAW,a,cAgBvB,WAAoBG,I,4FAAsB,cAZlCuC,YAA6B,KAYK,KANlCC,cAA+B,KAMG,KAFlCC,kBAA4B,EAEM,KAAtBzC,UACnBG,KAAKsC,mBAAoB,IAAAT,UAAShC,EAAS,Y,sDAGnC,WACRG,KAAKuC,WAAaC,SAASC,uBAC1B,4BAGD,IAAAC,UAAS1C,KAAKH,QAAS,YAIvBG,KAAK2C,gBACLzC,OAAOC,iBAAiB,UAAU,kBAAM,EAAKwC,qB,8BAG/BnB,GACF,OAARA,GACCA,IAAQxB,KAAK4C,YAChB5C,KAAK4C,UAAYpB,EACjBxB,KAAKH,QAAQgD,MAAMrB,IAAnB,UAA4BA,EAA5B,MACAxB,KAAK8C,mB,sCAON,IAAIC,EADD/C,KAAKuC,YAAcvC,KAAKuC,WAAWS,OAAS,GAE/CC,MAAMC,KAAKlD,KAAKuC,YAAYY,SAAQ,SAAAC,GAC/BA,EAASC,UAAUC,SAAS,aAC/B,IAAAC,aAAYH,EAAStB,cAAe,cACpC,IAAAyB,aAAYH,EAAU,WACtBL,EAAUK,EAAStB,cAAcW,uBAChC,mCACC,KAEDM,EAAQS,aAAa,gBAAiB,e,sCAQtChB,SAASiB,KAAKJ,UAAUC,SAAS,cACpCtD,KAAK0D,oBACKlB,SAASiB,KAAKJ,UAAUC,SAAS,aAC3CtD,KAAK2D,oB,2CAKF,IAAAC,sBAAuB5D,KAAK6D,SAC/B7D,KAAK8D,SAAS9D,KAAK6D,W,yCAMhB,IAAAD,sBAAwB5D,KAAK6D,QAChC7D,KAAK8D,QAAQ,Q,qDCtFhB,I,wFAGaC,GADZ,EAFD,QAECtE,WAAU,CAAEC,UAAW,sB,GAIvB,WAAoBG,I,4FAAsB,cAAtBA,UACnBG,KAAKgE,SAAW,IAAIC,OAAOpE,EAAS,CACnCqE,cAAe,EACfC,aAAc,GACdC,MAAM,EACNC,MAAO,IACPC,SAAU,CACTC,MAAO,EACPC,sBAAsB,GAEvBC,YAAa,CACZC,IAAK,CACJR,cAAe,GAEhBS,KAAM,CACLT,cAAe,S,kHCfb,SACHd,EACAwB,EACAC,GAEIA,IACA,IAAAC,0BACI1B,GACA,kBAAMyB,MAVS,KAcvBE,QAAQC,IAAI,qBACZ,IAAAtC,UAASU,EAAU,UAEfwB,IACA,IAAAlC,UAASkC,EAAiB,W,mBAI3B,SACHxB,EACAwB,EACAC,IAGA,IAAAnC,UAASU,EAAU,eACnB,IAAAG,aAAYH,EAAU,UAElBwB,KAEA,IAAAlC,UAASkC,EAAiB,eAC1B,IAAArB,aAAYqB,EAAiB,YAGjC,IAAAE,0BACI1B,GACA,YAEI,IAAAG,aAAYH,EAAU,cAElBwB,IAEA,IAAArB,aAAYqB,EAAiB,cAG7BC,GACAA,MAjDW,MAJ3B,cACA,UACA,W,gECFA,oLACA,oLACA,qL,4FCFA,I,UAAA,UAEA,UACA,SACA,UACA,UACA,UACA,UAEA,UACA,U,+NAEA,I,UAIaI,G,GADZ,IAAAxF,WAAU,CAAEC,UAAW,oC,GAMtB,IAAAC,cAAaC,U,mBAYd,WAAoBC,GAAsB,I,EAAA,Q,4FAAA,U,EAAA,I,sBAAA,e,gHAAA,W,IAAA,KALlCqF,SAA0B,KAKQ,KAsHlCC,aAAe,SAACC,GACvB,EAAKC,wBAAwBD,EAAMpE,QACrBoE,EAAMpE,OACpBoE,EAAME,iBAEN,EAAKC,UA3HoC,KAqIlCC,qBAAuB,SAACJ,GAC/BA,EAAME,iBAEN,EAAKG,QAxIoC,KAAtB5F,UACnBG,KAAK0F,iBAAmBlD,SAASC,uBAChC,sBACC,GAEFzC,KAAK2F,iBAAmB9F,EAAQiC,cAAcW,uBAC7C,2BACC,GAEFzC,KAAK4F,kBAAoB3C,MAAMC,KAC9BV,SAASC,uBAAuB,4BAGjCzC,KAAK6F,iBAAmB5C,MAAMC,KAC7BV,SAASC,uBAAuB,oC,0CAvBjC,OAAO,IAAAZ,UAAS7B,KAAK2F,iBAAkB,c,oCA2B/B,WACR3F,KAAK8F,gBACL9F,KAAK+F,uBACC7F,OAAOC,iBAAiB,UAAU,kBAAM,EAAK2F,qB,6CAInD9F,KAAKH,QAAQM,iBAAiB,QAASH,KAAKmF,cAC5CnF,KAAK0F,iBAAiBvF,iBACrB,QACAH,KAAKwF,wB,gDAKF,IAAA5E,WACHZ,KAAKH,QAAQmG,oBAAoB,QAAShG,KAAKmF,cAC/CnF,KAAK0F,iBAAiBM,oBACrB,QACAhG,KAAKwF,yB,4CAMP,IAAMS,EAAYjG,KAAK2F,iBACrBO,kBAEIC,GAAe,IAAAxE,mBACXsE,GAAaE,KACR,IAAAC,cACDH,EAAUpD,MAAMwD,UAAhB,uBAA4CF,EAA5C,W,6CAOd,GADAnG,KAAK2F,iBAAiB9C,MAAMyD,WAAa,MAC1B,IAAX,IAAA1F,SAAkB,CACrB,IAAM2F,EAAcvG,KAAK2F,iBAAiBa,wBAEtCD,EAAYE,MAAQvG,OAAOwG,WADX,KAEnB1G,KAAK2F,iBAAiB9C,MAAMyD,WAC3B,KACCC,EAAYI,KACZJ,EAAYK,OACX1G,OAAOwG,WANS,KAOlB,S,sCAMH1G,KAAKyF,OAELzF,KAAK6G,sBAEL7G,KAAK8G,yB,+BAIL9G,KAAK+G,QAAU/G,KAAKyF,OAASzF,KAAKqB,S,6BAI9BrB,KAAK+G,UAGL/G,KAAKH,QAAQiC,gBAChB,IAAAY,UAAS1C,KAAKH,QAAQiC,cAAe,cAEtC,IAAAY,UAAS1C,KAAKa,QAAQmG,cAAe,yBACrChH,KAAKH,QAAQ2D,aAAa,gBAAiB,QAG1CxD,KAAK4F,kBAAkBqB,KAAI,SAAA7D,GAAQ,OAAI,IAAAvB,UAASuB,EAAU,aACxDJ,OAEHhD,KAAK4F,kBAAkBzC,SAAQ,SAAAC,IAC1B,IAAAvB,UAASuB,EAAU,YACtB,IAAA8D,kBAAiB9D,OAInB,IAAA+D,kBAAiBnH,KAAK2F,iBAAkB3F,KAAK0F,qB,6BAIxC1F,KAAK+G,UAGN/G,KAAKH,QAAQiC,gBAChB,IAAAyB,aAAYvD,KAAKH,QAAQiC,cAAe,cAEzC,IAAAyB,aAAYvD,KAAKa,QAAQmG,cAAe,yBACxChH,KAAKH,QAAQ2D,aAAa,gBAAiB,UAE3C,IAAA0D,kBAAiBlH,KAAK2F,iBAAkB3F,KAAK0F,qB,8CAWd7F,GAE/BG,KAAK6F,iBAAiB1C,SAAQ,SAAAJ,GAC7BA,EAAQS,aAAa,gBAAiB,c,kCAUpB4B,GAAmB,WAGjB,MAAjBpF,KAAKkF,WAKQlF,KAAK2F,iBAAiB9C,MAAMuE,YAY5C,IAAAD,kBAAiBnH,KAAK2F,iBAAkB3F,KAAK0F,kBAT7C1F,KAAKkF,SAAWmC,YACf,kBACC,IAAAF,kBACC,EAAKxB,iBACL,EAAKD,oBA/KgB,Q,kCA8LNN,GACnB,IAAMkC,EAAalC,EAAMmC,eAAiBnC,EAKxCkC,GACAtH,KAAKwH,kBACLF,EACA,mCAODtH,KAAK4F,kBAAkBzC,SACtB,SAAAC,GAAQ,OAAKA,EAASP,MAAMuE,WAAa,UAL1CpH,KAAK4F,kBAAkBzC,SACtB,SAAAC,GAAQ,OAAKA,EAASP,MAAMuE,WAAa,QAQ3CpH,KAAKyF,OAEDzF,KAAKkF,WACRuC,aAAazH,KAAKkF,UAClBlF,KAAKkF,SAAW,Q,wCAGQrF,EAAsB6H,GAE/C,OADe7H,EAAQ4C,uBAAuBiF,GAC9B1E,OAAS,M,ggBCxO3B,I,kBAAA,UACA,UAEA,UACA,UACA,SACA,U,iwBAGa2E,G,GADZ,IAAAlI,WAAU,CAAEC,UAAW,sB,GAEnB,IAAAC,cAAaC,U,GACb,IAAAD,cAAaiI,U,GACb,IAAAC,eAAc5C,sB,qBAEf,WAAoBpF,I,4FAAsB,4FAAtBA,U,sDAEX,WAELG,KAAKH,QAAQM,iBAAiB,SAAS,SAAAiF,GACnCA,EAAME,kBAEF,IAAA1E,UAGI,EAAKkH,SACL,EAAKA,QAAQhH,QAGjB,EAAKD,QAAQ0E,WAEEH,EAAMpE,OAEd+G,OAEP,EAAKxF,WAAWY,SAAQ,SAAAC,GAAQ,OAAIA,EAASqC,mB,qZClC7D,I,EAAA,UAEA,UACA,UACA,UACA,UACA,UACA,SACA,U,0KAIa7F,GADZ,IAAAH,WAAU,CAAEC,UAAW,a,cAiBvB,WAAoBG,GAAsB,Y,4FAAA,cAHlCkH,SAAmB,EAGe,KAwDlCiB,yBAA2B,SAAC5C,GACnCA,EAAME,kBACN,IAAA5C,UAAU0C,EAAMpE,OAAmBc,cAAe,eAElD,EAAKmG,oBAAoB9E,SAAQ,SAAA+E,GAAU,OAC1C,EAAKC,kBAAkBD,MAGxB,EAAKE,eAAe,EAAKC,qBAhEgB,KAAtBxI,UACnBG,KAAKgH,cAAgBnH,EAGrBG,KAAKsI,QAAU9F,SAASC,uBACvB,aACC,GAEFzC,KAAKuI,wBAA0BtF,MAAMC,KACpCV,SAASgG,iBAAT,8BAGDxI,KAAKyI,wBAA0BxF,MAAMC,KACpCV,SAASgG,iBAAT,+BAIDxI,KAAK0I,uBAAyBzF,MAAMC,KACnClD,KAAKsI,QAAQE,iBAAb,2BAGDxI,KAAK2I,sBAAwB1F,MAAMC,KAClCV,SAASC,uBAAuB,qBAGjCzC,KAAKqI,mBAAqBpF,MAAMC,KAAKrD,EAAQ+I,UAAUC,QAAO,SAAAC,GAAC,OAC9D,IAAAjH,UAASiH,EAAG,2BACX,GAEF9I,KAAKiI,oBAAsBhF,MAAMC,KAChClD,KAAKH,QAAQ4C,uBAAuB,yBAGrCzC,KAAK6F,iBAAmB5C,MAAMC,KAC7BV,SAASC,uBAAuB,sB,sDAIzB,WACRzC,KAAK0I,uBAAuBvF,SAAQ,SAAAJ,GAC1BA,EAAQ5C,iBAAiB,SAAS,SAAAiF,GAE1CA,EAAME,iBAEN,IAAMtE,GAAS,IAAAC,+BAA8B8B,GAEzC/B,GACH,EAAK+H,OAAO/H,SAKfhB,KAAK8F,gBACL5F,OAAOC,iBAAiB,UAAU,kBAAM,EAAK2F,qB,uIAiCtB,WAKvB,GAJI9F,KAAK+G,SACR/G,KAAKuF,UAGF,IAAA3E,SAAS,CACZZ,KAAKgJ,sBAEL,IAAMC,EAASjH,KAAKC,MACnBjC,KAAKsI,QAAQ9B,wBAAwByC,QAItChG,MAAMC,KACLlD,KAAKH,QAAQ4C,uBAAuB,qBACnCU,SAAQ,SAAA+F,GACRA,EAAuBrG,MAAMoG,OAA9B,UAA0CA,EAA1C,SAGDjJ,KAAKuI,wBAAwBpF,SAAQ,SAAAgG,GACpC,IAAM/H,GACL,IAAAS,UACCW,SAAS/B,cAAT,kBAAkC0I,EAAOC,GAAzC,OACA,eACID,EAAO1G,uBAAuB,cAAcO,OAC5CqG,EAAmBlI,WAASmI,YACjCH,GAEG/H,EACuC,IAAtC,IAAAS,UAASsH,EAAQ,mBACpBE,EAAiBhI,OAGlBgI,EAAiB5D,UAInBzF,KAAKyI,wBAAwBtF,SAAQ,SAAAtD,GAAO,OAC3CsB,WAASmI,YAAYzJ,GAAwB0J,kBAG9CvJ,KAAKwJ,yBAGLxJ,KAAKiI,oBAAoB9E,SACxB,SAAA+E,GAAU,OAAKA,EAAWrF,MAAMoG,OAAS,QAG1CjJ,KAAKuI,wBAAwBpF,SAAQ,SAAAgG,GAAM,OAC1ChI,WAASmI,YAAYH,GAAuBI,aAG7CvJ,KAAKyI,wBAAwBtF,SAAQ,SAAAtD,GAAO,OAC3C,EAAK4J,UACJ5J,EACAA,EAAQ4C,uBAAuB,aAAaO,OAAS,Q,+BAOxDhD,KAAK+G,QAAU/G,KAAKc,QAAUd,KAAK0J,S,6BAGtB,WACT1J,KAAK+G,UAKT,IAAA4C,gBAAc,YACb,IAAApG,aAAY,EAAK1D,QAAS,eAGbmC,KAAKC,MACjB,EAAK4D,iBAAiB,GAAGW,wBAAwBG,MAIlD,EAAKd,iBAAiB1C,SAAQ,SAAAJ,GAAO,OACpC,IAAAL,UAASK,EAAS,iBAMD,EAAKkF,oBAAoBY,QAAO,SAAAC,GAAC,OAClD,IAAAjH,UAASiH,EAAG,eAGE9F,QACd,EAAKoF,eAAe,EAAKC,qBAE1B,IAAA3F,UAAS,EAAK4F,QAAS,cACvB,EAAKvB,SAAU,O,8BAKX/G,KAAK+G,WAIV,IAAArE,UAAS1C,KAAKH,QAAS,eACvBG,KAAKH,QAAQgD,MAAM+D,MAAQ,KAE3B5G,KAAK6F,iBAAiB1C,SAAQ,SAAAJ,GAAO,OACpC,IAAAQ,aAAYR,EAAS,kBAItB,IAAA6G,oBAOA,IAAArG,aAAYvD,KAAKsI,QAAS,cAC1BtI,KAAK+G,SAAU,K,6BAGD/F,GAAqB,WAanC,GAZKhB,KAAK+G,UAKT/G,KAAKyI,wBAAwBtF,SAAQ,SAAAgG,GAAM,OAC1C,IAAAzG,UAASyG,EAAOjD,kBAAmB,kBAGpClG,KAAK0J,SAGF,IAAA7H,UAASb,EAAQ,eAAgB,EACpC,IAAAuC,aAAYvC,EAAQ,eAEpB,IAAMkH,EAAalH,EAAOyB,uBACzB,wBACC,GAEFzC,KAAKiI,oBAAoB9E,SAAQ,SAAA2F,GAAC,OAAI,EAAKX,kBAAkBW,MAC7D9I,KAAKoI,eAAeF,M,gCAIJlH,EAAqBK,GACtC,IAAM8H,EAASnI,EAAOyB,uBAAuB,YAAY,GAEnDM,EAAUP,SAAS/B,cAAT,mBACH0I,EAAOC,GADJ,OAIZ/H,EACHF,WAASmI,YAAYtI,GAAuBK,OAE5CF,WAASmI,YAAYtI,GAAuByE,OAG7CzF,KAAK6J,YAAY9G,EAAS1B,K,qCAGJxB,GACtB,IAAIoJ,EAASjH,KAAKC,MAAMjC,KAAKsI,QAAQ9B,wBAAwByC,QAEvDa,EAAe7G,MAAMC,KAC1BrD,EAAQiC,cAAc8G,UACrBC,QAAO,SAAAC,GAAC,OAAI,IAAAjH,UAASiH,EAAG,sBAAoB,GAE1CgB,IACHb,GAAUjH,KAAKC,MAAM6H,EAAatD,wBAAwByC,SAG3DpJ,EAAQgD,MAAMoG,OAAd,sBAAsCA,EAAtC,QAEA,IAAA1F,aAAY1D,EAAS,WACrB,IAAA6C,UAAS7C,EAAS,c,wCAGOA,GACzBA,EAAQgD,MAAMoG,OAAS,MAEvB,IAAAvG,UAAS7C,EAAS,WAClB,IAAA0D,aAAY1D,EAAS,c,kCAGFkD,EAAsB3B,GACzC2B,EAAQS,aAAa,gBAAiBpC,EAAO2I,WAAWC,oB,qDC/S1D,I,qQAIaC,GADZ,EAHD,QAGCxK,WAAU,CAAEC,UAAW,8B,cAKvB,WAAoBG,GAAsB,Y,4FAAA,cADlCqK,uBAAwB,EACU,KAAtBrK,UACnBG,KAAKmK,cAAgBtK,EACrBG,KAAKoK,MAAK,GACVlK,OAAOC,iBAAiB,UAAU,kBAAM,EAAKiK,U,oDAEtB,IAAnBC,EAAmB,wDACjBC,EAAgBpK,OAAOwG,WAAa,KACtC2D,EACCC,EACHtK,KAAKuK,mBAELvK,KAAKwK,oBAGFF,GAA+C,GAA9BtK,KAAKkK,uBACzBlK,KAAKuJ,UACLvJ,KAAKuK,oBACsB,GAAjBD,IACVtK,KAAKuJ,UACLvJ,KAAKwK,uB,0CAKP,IAAIC,EACHzK,KAAKmK,cAAc3B,iBAAiB,iBACrCxI,KAAKgE,SAAW,IAAIC,OAAOjE,KAAKmK,cAAe,CAC9CjG,cAAe,EACfC,aAAc,EAEduG,YAAY,EACZC,WAAY,CACXC,GAAI,qBACJC,WAAW,EACXC,aAAc,SAAUC,EAAOrL,GAG9B,MACC,mBACAA,EACA,KAJA+K,EAAeM,GAAOhK,aAAa,cAMnC,cAMJf,KAAKkK,uBAAwB,I,yCAI7BlK,KAAKgE,SAAW,IAAIC,OAAOjE,KAAKmK,cAAe,CAC9CjG,cAAe,EACfC,aAAc,EACdC,MAAM,EACNsG,YAAY,EACZC,WAAY,CACXC,GAAI,qBACJC,WAAW,KAGb7K,KAAKkK,uBAAwB,I,gCAI7BlK,KAAKgE,SAASuF,e,8HC1EhB,oLACA,qL,uFCDA,I,sBAAA,UACA,UACA,UAEA,UACA,UACA,S,iwBAIayB,G,GADZ,IAAAvL,WAAU,CAAEC,UAAW,sB,GAEnB,IAAAC,cAAaC,U,GACb,IAAAiI,eAAc5C,sB,GACd,IAAAtF,cAAaiI,U,GACb,IAAAjI,cAAasL,iB,qBAEd,WAAoBpL,I,4FAAsB,4HAAtBA,U,sDAEX,WACLG,KAAK8H,QAAU,IAAIF,SAAOpF,SAASC,uBAAuB,aAAa,IACvEzC,KAAKkL,eAAiB,IAAID,gBAAczI,SAASC,uBAAuB,qBAAqB,IAC7FzC,KAAK8F,gBACL5F,OAAOC,iBAAiB,UAAU,kBAAM,EAAK2F,mBAC7C5F,OAAOC,iBAAiB,UAAU,kBAAM,EAAKwC,mBAE7C3C,KAAKH,QAAQM,iBAAiB,SAAS,SAAAiF,GACnCA,EAAME,kBACF,IAAAc,YACA,EAAK0B,QAAQvC,SAEb,EAAK2F,eAAe3F,SAGpB,EAAKhD,YAAc,EAAKA,WAAWS,QACnC,EAAKT,WAAWY,SAAQ,SAAAC,GAAQ,OAAIA,EAASqC,e,sCAKrDzF,KAAK8H,QAAQhH,QACbd,KAAKkL,eAAepK,U,sCAIpBd,KAAKkL,eAAepK,a,wgBC5C5B,I,IAAA,UAEA,UACA,UACA,U,iUAGa8G,GADZ,IAAAnI,WAAU,CAAEC,UAAW,a,cAQvB,WAAoBG,GAAsB,eAAtBA,U,0CALnB,OAAO,IAAAgC,UAAS7B,KAAKH,QAAS,c,oCAOtB,WAERG,KAAK0F,iBAAmBlD,SAASC,uBAChC,sBACC,GAEFzC,KAAK0F,iBAAiBvF,iBAAiB,SAAS,WAC/C4E,QAAQC,IAAI,SAEZ,EAAKlE,a,+BAKNd,KAAK+G,QAAU/G,KAAKc,QAAUd,KAAK0J,S,6BAGtB,WACT1J,KAAK+G,UAKT,IAAA4C,gBAAc,YAEb,IAAAxC,kBAAiB,EAAKtH,QAAS,EAAK6F,kBAAkB,kBACrD,EAAK7F,QAAQsL,qBAAqB,SAAS,GAAGC,gB,8BAM3CpL,KAAK+G,WAKV,IAAA6C,oBAEA,IAAA1C,kBAAiBlH,KAAKH,QAASG,KAAK0F,uB,wBAKzBuF,GADZ,IAAAxL,WAAU,CAAEC,UAAW,qB,cAQvB,WAAoBG,GAAsB,eAAtBA,U,0CALnB,OAAO,IAAAgC,UAAS7B,KAAKH,QAAS,c,oCAOtB,WAERG,KAAK0F,iBAAmBlD,SAASC,uBAChC,sBACC,GAEFzC,KAAK0F,iBAAiBvF,iBAAiB,SAAS,WAC/C4E,QAAQC,IAAI,SACZ,EAAKlE,a,+BAKNd,KAAK+G,QAAU/G,KAAKc,QAAUd,KAAK0J,S,6BAGtB,WACT1J,KAAK+G,UAIJ/G,KAAK0F,kBAA6C2F,MAAzBrL,KAAK0F,mBAClC1F,KAAK0F,iBAAmBlD,SAASC,uBAChC,sBACC,KAGH,IAAA0E,kBAAiBnH,KAAKH,QAASG,KAAK0F,kBAAkB,kBACrD,EAAK7F,QAAQsL,qBAAqB,SAAS,GAAGC,c,8BAK1CpL,KAAK+G,UAGL/G,KAAK0F,kBAA6C2F,MAAzBrL,KAAK0F,mBAClC1F,KAAK0F,iBAAmBlD,SAASC,uBAChC,sBACC,KAEH,IAAAyE,kBAAiBlH,KAAKH,QAASG,KAAK0F,uB,0CC9GtC,I,oQAGa4F,GADZ,EAFD,QAEC7L,WAAU,CAAEC,UAAW,6B,cAIvB,WAAoBG,GAAsB,Y,4FAAA,cAmB1C0L,YAAc,WACb,GAAI,EAAKvH,UAAY,EAAKA,SAASwH,OAAQ,CAC1C,IAAMC,EAAe,EAAKzH,SAASwH,OAAO,EAAKxH,SAAS0H,eAClDC,EAAa,EAAK3H,SAASwH,OAAO,EAAKxH,SAAS4H,cAElDH,GAAgBE,KACnB,EAAKE,YAAYF,GACjB,EAAKG,WAAWL,MA1BuB,KAAtB5L,UACnBG,KAAKgE,SAAW,IAAIC,OAAOpE,EAAS,CACnCqE,cAAe,OACfC,aAAc,EACdC,MAAM,EACN2H,WAAW,CACVC,OAAQ,sBACRC,OAAQ,uBAETtB,WAAY,CACXC,GAAI,qBACJC,WAAW,GAEZqB,GAAI,CACHX,YAAavL,KAAKuL,e,uDAkBpBvL,KAAKmM,eAAenM,KAAKH,SACzBG,KAAKgE,SAASuF,Y,iCAGIqB,GAClB,IAAMwB,EAASpM,KAAKqM,WAAWzB,GAC/B,GAAIwB,EAAQ,CACX,IAAIE,EAAMF,EAAOrL,aAAa,OAC9BqL,EAAO5I,aAAa,WAAY8I,GAChCF,EAAO5I,aAAa,MAAO,O,qCAINoH,GAAiB,WACvC5K,KAAKuM,eAAe3B,GAAIzH,SAAQ,SAAAqJ,GAAC,OAAI,EAAKV,WAAWU,EAAE1K,oB,kCAGpC8I,GACnB,IAAMwB,EAASpM,KAAKqM,WAAWzB,GAC3BwB,GAAUA,EAAOK,aAAa,aACjCL,EAAO5I,aAAa,MAAO4I,EAAOrL,aAAa,e,iCAI9B6J,GAClB,GAAIA,EAAI,CACP,IAAI8B,EAAgB9B,EAAGnK,cAAc,UACrC,OAAwB,MAAjBiM,GAA+E,GAAtDA,EAAcD,aAAa,wBAAmCC,EAAgB,Q,qCAIzF9B,GACtB,GAAIA,EACH,OAAO3H,MAAMC,KAAK0H,EAAGpC,iBAAiB,gB,qIC/DlC,WACH,OAAOtI,OAAOwG,WATU,K,eAarB,WACH,OAAOxG,OAAOwG,YAbe,K,QAiB1B,WACH,OAAOxG,OAAOwG,WAjBO,M,mBAoBlB,WACH,OAAOxG,OAAOwG,WAnBmB,M,aAsB9B,WACH,OAAOxG,OAAOwG,WAxBa,M,+GAHH,I,oBACK,I,YACR,K,kBACM,K,wBACM,M,gFCG9B,SACN7B,GAEC,IADD8H,EACC,uDAD0BnK,SAASiB,KAEpC,IAAK,IAAA7C,SAAL,CAOA,IAAMgM,GAAS,IAAAhJ,sBAEXgJ,GAAU,GACbC,uBAAsB,YAChB,IAAAC,kBACJH,EAAY9J,MAAMrB,IAAlB,UAA2BuL,EAAYH,GAAvC,MAGApK,SAASiB,KAAKZ,MAAMoG,OAAS,OAC7BzG,SAASwK,gBAAgBnK,MAAMoG,OAAS,OAExC0D,EAAY9J,MAAMoK,SAAW,QAC7BN,EAAY9J,MAAM+D,MAAQ,OAC1B+F,EAAY9J,MAAMoG,OAAS,OAC3B0D,EAAY9J,MAAMqK,SAAW,UAK9B7F,YAAW,kBAAMxC,MAAY,aAzB9BA,K,kBA8BK,WAAmE,IAA1C8H,EAA0C,uDAAfnK,SAASiB,KAEnE,KAAK,IAAAqJ,gBAAgB,CAGpB,IAAMF,EAASG,GAAY,IAAAtL,cAAakL,EAAY9J,MAAMrB,MACpD2L,GAAa,IAAA1L,cAAakL,EAAY9J,MAAMsK,YAClDR,EAAY9J,MAAMrB,IAAM,KAGxBmL,EAAY9J,MAAMoK,SAAW,KAC7BN,EAAY9J,MAAM+D,MAAQ,KAC1B+F,EAAY9J,MAAMoG,OAAS,KAC3B0D,EAAY9J,MAAMqK,SAAW,KAC7BP,EAAYS,gBAAgB,SAC5BT,EAAY9J,MAAMsK,WAAaA,EAAa,KAExCP,GAAU,GACb1K,SAAS,EAAG0K,K,kBAKR,WACN,IAAMS,EAA+B,GAG/BnE,EAAS1G,SAASC,uBACvB,aACC,GACI6K,EAAgB9K,SAASC,uBAC9B,qBACC,GASF,OAPIyG,GACHmE,EAASE,KAAKrE,GAEXoE,GACHD,EAASE,KAAKD,GAGRtL,KAAKC,MACXoL,EACEpG,KAAI,SAAA6B,GAAC,OAAIA,EAAEtC,wBAAwByC,UACnCuE,QAAO,SAACC,EAAIC,GAAL,OAAYD,EAAKC,IAAI,KAtFhC,aACA,UAEA,SAuFA,SAASX,EAAYH,GACpB,OAAkB,IAAXA,EAAeA,GAAmB,EAAVA,I,2FC3FhC,I,EAAA,UACA,UAGae,GADZ,IAAAlO,WAAU,CAAEC,UAAW,e,GAGvB,WAAoBG,I,4FAAsB,cAAtBA,UACnBG,KAAK4N,SAAW,IAAIzM,WAAStB,EAAS,O,oGCqXjC,SACNA,EACAgO,GAEA9I,QAAQ+I,MACP,qIAED,IAAIC,EAAOlO,EAAO,SAMlB,OAJKkO,IACJA,EAAO,IAAI5M,EAAStB,EAASgO,IAGvBE,G,kBAzYR,cACA,UACA,UAEA,UACA,UAEA,U,s5BAEA,IAsBa5M,E,WAMZ,WAAmBtB,EAAsBgO,GAA2B,Y,4FAAA,cAgB5DA,QAA2B,CAClCG,YAAa,YACbC,kBAAmB,YACnBC,YAAa,SACbC,gBAAiB,uBACjBC,eAAgB,WAChBC,UAAW,iBACXC,iBAAkB,oBAClBC,aAAc,KACdC,mBAAoB,IACpBC,YAAY,EACZC,eAAe,EACfC,qBAAqB,EACrBC,mBAAoB,cACpBC,mBAAoB,cACpBC,mBAAoB,cACpBC,aAAc,QAhCqD,KAuC5DC,iBAAkB,EAvC0C,KA0C5DC,kBAAmB,IAAAC,uBAAsB,kBA1CmB,KAkM5DC,YAAc,SAAC/J,GAEtB,IAAMgK,EAAUhK,GAAUA,EAAMiK,cAC5BD,GAA+B,MAApBA,EAAQE,SACtBlK,EAAME,iBAGP,IAAMtE,GAAS,IAAAC,+BACdmO,EACA,EAAKvB,QAAQgB,oBAEVd,EAAO/M,EAAM,SAEZ+M,IACJA,EAAOqB,EAAO,UAGXpO,GACHG,EAASmI,YAAYtI,EAAQ+M,EAAKF,SAAStI,UApNuB,KAAjD1F,UAClBG,KAAK6N,QAAL,OACI7N,KAAK6N,SACLA,GAGC7N,KAAK6N,QAAQ/L,gBACjB9B,KAAK6N,QAAQ/L,eAAgB,IAAAb,+BAC5BpB,EACAG,KAAK6N,QAAQe,oBACb,IAIF5O,KAAKoK,O,0CAjBL,OAAOpK,KAAKuP,a,oCAsEZ,OAPCvP,KAAK6N,QAAQc,qBACbzO,OAAOsP,YAAcxP,KAAK6N,QAAQU,eAClC,IAAA1M,UAAS7B,KAAKH,QAASG,KAAK6N,QAAQS,oBAEpC,IAAA5L,UAAS1C,KAAKH,QAASG,KAAK6N,QAAQQ,YAErC,IAAA9K,aAAYvD,KAAKH,QAASG,KAAK6N,QAAQS,mBAChC,IAAAzM,UAAS7B,KAAKH,QAASG,KAAK6N,QAAQQ,a,+BAIvCrO,KAAKoB,SACJpB,KAAK6N,QAAQY,YAChBzO,KAAKyF,OAGNzF,KAAKqB,S,6BAIA,WACN,IAAIrB,KAAKgP,kBAAmBhP,KAAKoB,SAAjC,CAIA,GAAIpB,KAAK6N,QAAQa,eAAiB1O,KAAKyP,OAAQ,CAC9C,IAAMC,EAAW,IAAH,OAAO1P,KAAK6N,QAAQe,mBAApB,cAA4C5O,KAAKyP,OAAOrG,GAAxD,MACRuG,EAAU1M,MAAMC,KACrBlD,KAAKyP,OAAOjH,iBAAZ,UACIkH,EADJ,YACgB1P,KAAK6N,QAAQQ,UAD7B,aAC2CqB,EAD3C,YACuD1P,KAAK6N,QAAQM,mBAEnEtF,QAAO,SAAC+G,GAAD,OAAYA,IAAW,EAAK5O,UAErC,GAAI2O,GAAWA,EAAQ3M,OAAQ,CAM9B,GALyB2M,EAAQ9G,QAAO,SAAC+G,GACxC,IAAMvG,EAAmBuG,EAAM,SAC/B,OAAOvG,GAAoBA,EAAiB2F,mBAGxBhM,OACpB,OAGD2M,EAAQxM,SAAQ,SAACyM,GAAD,OACfzO,EAASmI,YAAYsG,GAAuBnK,WAK/CzF,KAAK6P,YAAY7P,KAAKH,QAASG,KAAKuP,a,8BAIhCvP,KAAKgP,iBAAoBhP,KAAKoB,UAIlCpB,KAAK8P,aAAa9P,KAAKH,QAASG,KAAKuP,Y,gCAIrC,IAAM1P,EAAUG,KAAKH,QAEjBA,EAAO,WACVA,EAAO,SAAmB,MAE1B,IAAA0D,aAAY1D,EAASG,KAAK6N,QAAQO,iBAClC,IAAA7K,aAAY1D,EAASG,KAAK6N,QAAQM,kBAClC,IAAA5K,aAAY1D,EAASG,KAAK6N,QAAQQ,WAE9BrO,KAAK6N,QAAQK,cAChBrO,EAAQgD,MAAM7C,KAAK6N,QAAQK,aAAe,S,6BAK9B,WAEdlO,KAAKuP,SAAWtM,MAAMC,KACrBV,SAASgG,iBAAT,WACKxI,KAAK6N,QAAQkB,aADlB,cACoC/O,KAAKH,QAAQuJ,GADjD,gBAC2DpJ,KAAK6N,QAAQgB,mBADxE,cACgG7O,KAAKH,QAAQuJ,GAD7G,QAWD,IALA,IAKA,MALgBnG,MAAMC,KACrBV,SAASgG,iBAAT,WACKxI,KAAK6N,QAAQiB,mBADlB,kBAID,eAA8B,CAAzB,IAAMvJ,EAAM,KACVvE,GAAS,IAAAC,+BACdsE,EACAvF,KAAK6N,QAAQgB,oBAEC,OAAX7N,GAAmBA,IAAWhB,KAAKH,UACtCG,KAAKgB,OAASA,EACdhB,KAAKuP,SAAShC,KAAKhI,IAIrBvF,KAAKyP,OAASzP,KAAK6N,QAAQ/L,cA7LN,aAgMG9B,KAAKH,SAE5BG,KAAKuP,SAASpM,SAAQ,SAACiM,GAAD,OACrBA,EAAQjP,iBAAiB,QAAS,EAAKgP,aAAa,MAIlDnP,KAAKyP,OACRxM,MAAMC,KACLlD,KAAKyP,OAAOjH,iBAAZ,WACKxI,KAAK6N,QAAQiB,mBADlB,wBACoD9O,KAAK6N,QAAQe,mBADjE,cACyF5O,KAAKyP,OAAOrG,GADrG,QAGCjG,SAAQ,SAACtD,GACV,EAAKkQ,2BACJ,IAAA9O,+BACCpB,EACA,EAAKgO,QAAQgB,oBAEd,CAAChP,OAIHG,KAAK+P,0BAA0B/P,KAAKH,QAASG,KAAKuP,WAGnD,IAAA7M,UAAS1C,KAAKH,QAASG,KAAK6N,QAAQO,gBAEpCpO,KAAKH,QAAL,SAA+BG,O,kCAyBZgQ,EAA8BT,GAAsB,WACvEvP,KAAKiP,iBAAiBe,EAAiB,SAEvC,IAAAzM,aAAYyM,EAAiBhQ,KAAK6N,QAAQO,iBAC1C,IAAA1L,UAASsN,EAAiBhQ,KAAK6N,QAAQM,iBACnCnO,KAAK6N,QAAQK,cAChB8B,EAAgBnN,MAAM7C,KAAK6N,QAAQK,aAClC8B,EAAgBC,aAAe,MAG7BV,GAAYA,EAASvM,QACxBuM,EAASpM,SAAQ,SAACiM,IACjB,IAAA1M,UAAS0M,EAAS,EAAKvB,QAAQG,aAC/BoB,EAAQ5L,aAAa,gBAAiB,WAIpCxD,KAAKyP,SACR,IAAA/M,UAAS1C,KAAKyP,OAAQzP,KAAK6N,QAAQG,aAGpChO,KAAKgP,iBAAkB,GAEvB,IAAAlK,0BACCkL,GACA,YACC,IAAAzM,aAAYyM,EAAiB,EAAKnC,QAAQM,kBAC1C,IAAAzL,UAASsN,EAAiB,EAAKnC,QAAQO,iBACvC,IAAA1L,UAASsN,EAAiB,EAAKnC,QAAQQ,WAEvC,EAAKW,iBAAkB,EACnB,EAAKnB,QAAQK,cAChB8B,EAAgBnN,MAAM,EAAKgL,QAAQK,aAAe,MAGnD,EAAKe,iBAAiBe,EAAiB,WAExChQ,KAAK6N,QAAQW,sB,mCAIMwB,EAA8BT,GAAsB,WA8BxE,GA7BAvP,KAAKiP,iBAAiBe,EAAiB,QAEnChQ,KAAK6N,QAAQK,cAChB8B,EAAgBnN,MAAM7C,KAAK6N,QAAQK,aAClC8B,EAAgBC,aAAe,OAGjC,IAAAvN,UAASsN,EAAiBhQ,KAAK6N,QAAQM,kBACvC,IAAA5K,aAAYyM,EAAiBhQ,KAAK6N,QAAQO,iBAC1C,IAAA7K,aAAYyM,EAAiBhQ,KAAK6N,QAAQQ,WAE1C2B,EAAgBE,YAEZX,GAAYA,EAASvM,QACxBuM,EAASpM,SAAQ,SAACiM,GACjB,IAAMpO,GAAS,IAAAC,+BACdmO,EACA,EAAKvB,QAAQgB,oBAGC,OAAX7N,KACE,IAAAa,UAASb,EAAQ,EAAK6M,QAAQQ,cAClC,IAAA9K,aAAY6L,EAAS,EAAKvB,QAAQG,aAClCoB,EAAQ5L,aAAa,gBAAiB,cAMtCxD,KAAKyP,OAAQ,CAChB,IAAMC,EAAW,IAAH,OAAO1P,KAAK6N,QAAQe,mBAApB,cAA4C5O,KAAKyP,OAAOrG,GAAxD,MACRuG,EAAU1M,MAAMC,KACrBlD,KAAKyP,OAAOjH,iBAAZ,UACIkH,EADJ,YACgB1P,KAAK6N,QAAQQ,UAD7B,aAC2CqB,EAD3C,YACuD1P,KAAK6N,QAAQM,mBAEnEtF,QAAO,SAACC,GAAD,OAAOA,IAAMkH,KAElBhQ,KAAKyP,QAA6B,IAAnBE,EAAQ3M,SAC1B,IAAAO,aAAYvD,KAAKyP,OAAQzP,KAAK6N,QAAQI,mBAIxCjO,KAAKgP,iBAAkB,EACnBhP,KAAK6N,QAAQK,cAChB8B,EAAgBnN,MAAM7C,KAAK6N,QAAQK,aAAe,OAGnD,IAAApJ,0BACCkL,GACA,WACC,EAAKhB,iBAAkB,GAEvB,IAAAzL,aAAYyM,EAAiB,EAAKnC,QAAQM,kBAC1C,IAAAzL,UAASsN,EAAiB,EAAKnC,QAAQO,gBAEnC,EAAKP,QAAQK,cAChB8B,EAAgBnN,MAAM,EAAKgL,QAAQK,aAAe,MAGnD,EAAKe,iBAAiBe,EAAiB,YAExChQ,KAAK6N,QAAQW,sB,gDAImB3O,EAAkB0P,GAAqB,WACxE,GAAI1P,EAAS,CACZ,IAAMuB,GAAS,IAAAS,UAAShC,EAASG,KAAK6N,QAAQQ,WAE1CkB,GAAYA,EAASvM,QACxBuM,EAASpM,SAAQ,SAACiM,GACjBhO,GACG,IAAAsB,UAAS0M,EAAS,EAAKvB,QAAQG,cAC/B,IAAAzK,aAAY6L,EAAS,EAAKvB,QAAQG,aAErCoB,EAAQ5L,aACP,gBACApC,EAAO2I,WAAWC,sB,mCAlStBnK,EACAgO,GAEC,IADDsC,IACC,yDACGpC,EAAOlO,EAAO,SAMlB,OAJKkO,GAAQoC,IACZpC,EAAO,IAAI5M,EAAStB,EAASgO,IAGvBE,M,2FC5FF,WACN,MAAO,uCAAuCqC,QAAQ,SAAS,SAAUC,GACxE,IAAMC,EAAqB,GAAhBtO,KAAKuO,SAAiB,EAEjC,OADU,KAALF,EAAWC,EAAS,EAAJA,EAAW,GACvBvG,SAAS,S,6ECJb,SACNyG,EACAC,GAEA,OAAO,SAAUjE,GAChBiE,EAASjE,GACTgE,EAAOE,MAAM1Q,KAAM,CAACwM,O,0ECQf,SAAiBmE,GACvB,OAAO,SAACC,GACP,IAAMC,EAAc,IAAIC,IACxBH,EAAWxN,SAAQ,SAAC4N,GAGnB,IAAMC,EAAYC,EAASC,QAAQH,GAEnC,IAAIC,EAaH,MAAM,IAAIG,MAAJ,uCAEJJ,EAAgBA,EAAcK,KAAOL,EAFjC,YAZN,IAAMM,EACLT,IAAgBpO,SAASiB,KAAOjB,SAAWoO,EAC5C3N,MAAMC,KACLmO,EAAgB5O,uBAAuBuO,EAAUtR,YAChDyD,SAAQ,SAACmO,GAAD,OACTC,EAASC,QAAQR,EAAWM,EAAqBP,MAG9CC,EAAUS,SACbZ,EAAYa,IAAIV,EAAWD,MAW1BF,EAAYc,MACf,IAAIC,kBAAiB,SAACC,GACrB,IAAMC,EAAuB,IAAIhB,IAEjCe,EAAU1O,SAAQ,SAAC4O,GAClBlB,EAAY1N,SAAQ,SAAC6O,EAAOC,GAAR,OACnBhP,MAAMC,KAAK6O,EAASG,YAClBrJ,QAAO,SAACyI,GAAD,OAAU,IAAAa,eAAcb,MAC/BrK,KAAI,SAACqK,GAAD,OAAU,IAAAc,eAAcd,MAC5BnO,SAAQ,SAACmO,GACT,IAAMe,EAAQpP,MAAMC,KACnBoO,EAAK7O,uBAAuBwP,EAAIvS,aAE7B,IAAAmC,UAASyP,EAAMW,EAAIvS,YACtB2S,EAAM9E,KAAK+D,GAEZe,EAAMlP,SAAQ,SAAC6N,GACdc,EAAqBJ,IAAIV,GAA0B,kBAClDO,EAASC,QAAQS,EAAKjB,EAA0BgB,kBAOtDF,EAAqB3O,SAAQ,SAACkN,GAAD,OAAOA,UAClCoB,QAAQjP,SAASiB,KAAM,CACzB6O,WAAW,EACXC,SAAS,MAvEb,cACA,UACA,UAEA,UAEA,UACA,UAGMC,EAAY,IAAIC,YAChBxB,EAAW,IAAIyB,WAASF,GACxBjB,EAAW,IAAIoB,WAAS1B,I,kFCR9B,c,0KAGa0B,E,WAGZ,WAAoB1B,I,4FAAoB,cAFhC2B,eAAiB,IAAI9B,IAEW,KAApBG,W,qDAGnBD,EACAM,EACAP,GACC,WAIK8B,EAAc,IAAI9B,EAAcO,GAElCtR,KAAK4S,eAAeE,IAAIxB,GAC3BtR,KAAK4S,eAAeG,IAAIzB,GAAM/D,KAAKsF,GAEnC7S,KAAK4S,eAAelB,IAAIJ,EAAM,CAACuB,IAGhCG,OAAOC,KAAKjC,EAAUkC,SAAS/P,SAAQ,SAACgQ,GACvC,IAAMC,EAAepC,EAAUkC,QAAQC,GAIjCnS,EAAS,EAAKiQ,SAASC,QAAQkC,EAAM1D,UAE3C,GAAI1O,EAAQ,CACX,IACMqS,GADaD,EAAME,YAAchC,EAAO9O,UACrBC,uBAAuBzB,EAAOtB,WAEjD6T,EAAQtQ,MAAMC,KAAKmQ,GACvBxK,QAAO,SAACC,GAAD,OAAQsK,EAAMvK,QAASuK,EAAMvK,OAAOC,MAC3C7B,KAAI,SAACuF,GAAD,OAAO,EAAKoG,eAAeG,IAAIvG,MACnC3D,QAAO,SAAC2D,GAAD,OAAOA,WACdgB,QAAO,SAACgG,EAAKC,GAAN,OAAcD,EAAIE,OAAOD,KAAM,IACtC5K,QAAO,SAAC8K,GAAD,OAAOA,EAAEd,cAAgBO,EAAM1D,YAExCmD,EAAYM,GAAYC,EAAMQ,MAAQL,EAAM,GAAKA,OAI/C,IAAAM,QAAOhB,EAAYiB,SACrBjB,EAAuBiB,c,yICnD3B,cACA,U,urBAcO,IAAMrU,GAAgC,IAAAsU,eAC5C,aACA,eAAC1D,EAAD,uDAAgB,GAAhB,YAA6BA,M,cAGvB,IAAM2D,GAA8C,IAAAC,qBAEzD,aAAa,eAAC5D,EAAD,uDAAgB,GAAhB,YAA6BA,M,4JCtB5C,c,2rBAesB6D,E,8HAEf,IAAMvU,GAAe,IAAAwU,mBAC3B,gBACA,SAACzE,GAAD,IAAiB3B,EAAjB,uDAA6B,GAA7B,UACC2B,WACAkE,OAAO,EACPN,aAAa,GACVvF,KAEJmG,G,iBAGM,IAAMrM,GAAgB,IAAAsM,mBAC5B,iBACA,SAACzE,GAAD,IAAiB3B,EAAjB,uDAA6B,GAA7B,UACC2B,WACAkE,OAAO,EACPN,aAAa,GACVvF,KAEJmG,G,kBAGM,IAAME,GAAW,IAAAD,mBACvB,YACA,SAACzE,GAAD,IAAiB3B,EAAjB,uDAA6B,GAA7B,UACC2B,WACAkE,OAAO,EACPN,aAAa,GACVvF,KAEJmG,G,aAGM,IAAMG,GAAc,IAAAF,mBAC1B,eACA,SAACzE,GAAD,IAAiB3B,EAAjB,uDAA6B,GAA7B,UACC2B,WACAkE,OAAO,EACPN,aAAa,GACVvF,KAEJmG,G,oGC1DD,cACA,U,u4BAGazB,E,uLACA6B,GACX,KAAK,IAAAT,QAAOS,GACX,MAAO,GAER,IAAMC,EAAaC,EAAcF,GAC3BG,EAAiBzU,KAAK0U,gBAAgBJ,EAAYC,IAAe,GAGvE,OADCA,IAAevB,OAAShT,KAAK2U,YAAYJ,GAAc,IAC/Bb,OAAOe,K,mCAGpBH,GACZ,KAAK,IAAAT,QAAOS,GACX,MAAO,GAER,IAAMC,EAAaC,EAAcF,GAC3BM,EAAyC,GAC/C,GAAIL,IAAevB,OAAQ,CAC1B,IAAM6B,EAAqB7U,KAAK4U,aAAaL,GAC7CvB,OAAOC,KAAK4B,GAAoB1R,SAAQ,SAACgQ,GACxCyB,EAAazB,GAAY0B,EAAmB1B,MAG9C,IAAM2B,EAAkB9U,KAAK+U,iBAAiBT,EAAYC,GAW1D,OAVIO,GACH9B,OAAOC,KAAK6B,GAAiB3R,SAAQ,SAACgQ,GACrC,IAAM6B,EAAoB,GACtBJ,EAAaK,eAAe9B,IAC/B6B,EAAWzH,KAAX,MAAAyH,EAAU,EAASJ,EAAazB,KAEjC6B,EAAWzH,KAAX,MAAAyH,EAAU,EAASF,EAAgB3B,KACnCyB,EAAazB,GAAY6B,KAGpBJ,I,sCAIPN,EACAC,GAGA,OAAID,EAAWW,eAAeC,eACrBZ,EAAmBY,eAErB,O,uCAIPZ,EACAC,GAGA,OAAID,EAAWW,eAAeE,iBACrBb,EAAmBa,iBAErB,U,sBAIT,SAASX,EAAcY,GACtB,IAAMC,EAAcrC,OAAOsC,eAAeF,EAAKG,WAI/C,OAHmBF,EAAcA,EAAYxC,YAAc,OAGtCG,O,iGCtEtB,c,61BAIA,IAAMwC,EAA6B,CAClC,eACA,gBACA,WACA,eAIY9C,E,WACZ,WAAoBF,I,4FAAsB,cAAtBA,Y,qDAIZiD,GACP,IAAMC,EAAe1V,KAAKwS,UAAUmC,YAAYc,GAEhD,GAAIC,EAAc,CACjB,IAAMC,EAAWC,EAChBF,GACA,SAACrF,GAAD,OAAOA,GAAwB,cAAnBA,EAAEwF,gBAGf,GAAIF,EAAU,CACb,IAAMG,EAAmB9V,KAAKwS,UAAUoC,aAAaa,GAErD,OAAOzV,KAAK+V,2BACXJ,EACAG,EACAL,IAKH,OAAO,O,iDAIPzE,EACA8E,EACA/E,GAEA,IAAMmC,EAAkC,GAYxC,OAVAF,OAAOC,KAAK6C,GAAkB3S,SAAQ,SAACgQ,GACtC,IAAMC,EAAQwC,EAASE,EAAiB3C,IAAW,SAAC6C,GAAD,OAClDR,EAA2BS,MAAK,SAACC,GAAD,OAAOA,GAAKA,IAAMF,EAAEH,mBAGjDzC,IACHF,EAAQC,GAAYC,MAIfpT,KAAKmW,OAAOnF,EAAWkC,EAASnC,K,6BAIvCC,EACAkC,EACAnC,GAEA,IAAMqF,EAAgBpF,EAAUkC,QAAV,OACdlC,EAAUkC,SAAYA,GAC3BA,EAEH,OAAO,IAAAc,iBAAgB,CACtBtU,UAAWsR,EAAUtR,UACrB+R,QAAST,EAAUS,QACnByB,QAASkD,M,0CAIiBlD,GAA0C,WAC/DmD,EAAa,GAOnB,OALArD,OAAOC,KAAKC,GAAS/P,SAAQ,SAACmT,GAC7B,IAAMlD,EAAQF,EAAQoD,GACtBD,EAAI9I,KAAK,EAAKgJ,kBAAkBnD,EAAOkD,OAGjCD,I,wCAGkBG,EAAUF,GACnC,MAAO,CACNhD,YAAakD,EAAElD,YACfM,MAAO4C,EAAE5C,MACT0C,eACAG,MAAM,EACN/G,SAAU8G,EAAE9G,e,sBAKf,SAASkG,EAAYc,EAAUC,GAC9B,IAAK,IAAIT,EAAIQ,EAAI1T,OAAS,EAAGkT,GAAK,EAAGA,IACpC,GAAIS,EAAUD,EAAIR,IACjB,OAAOQ,EAAIR,GAGb,OAAO,K,2mBCpFD,SACN9E,EACAwF,EACAC,EACAC,EACAC,GAMA,IAAMC,EAAWC,EAAiBL,GAElC,SAASM,IAAoD,2BAAhCC,EAAgC,yBAAhCA,EAAgC,gBAC5D,GAAInX,gBAAgBkX,EAEnB,OADAF,EAASI,KAAT,MAAAJ,EAAQ,CAAMhX,MAAN,OAAemX,IAChBnX,KAGR,IAAMqX,EAAqB,EAAKH,EAA4BC,GACtDG,EAA+B,SAACC,GAUrC,OATIR,GACHA,EAAM,WAAN,GAAOQ,GAAP,OAAeJ,KAIII,EAAItC,eAAeC,GACnCqC,EAAYrC,GACblC,OAAOwE,eAAeD,EAAKrC,EAAa,CAAElD,MAAO,KAAMkD,IAC9C3H,KAAK8J,GACVE,GAKR,OAHIT,GACHA,EAAQQ,GAEFA,EAQR,OALIT,IACHK,EAAiB3B,UAAYvC,OAAO7C,OAAO0G,EAAYtB,YAGxD2B,EAAiB3B,UAAUM,aAAezE,EACnC8F,G,oBAgBD,SACN9F,EACAwF,EACAC,GAEA,IAAMG,EAAWC,EAAiBL,GAElC,SAASa,IAA0C,2BAAlBN,EAAkB,yBAAlBA,EAAkB,gBAClD,GAAInX,gBAAgByX,EAEnB,OADAT,EAAStG,MAAM1Q,KAAMmX,GACdnX,KAGR,IAAM0X,EAAoB,EAAKD,EAAgCN,GAE/D,OAAO,SAAuBnW,EAAa2W,GAC1C,IAAM9E,EAAc7R,EAAO6R,YAGrB+E,EAAO/E,EAAYoC,eAAeE,GACpCtC,EAAoBsC,GACrBnC,OAAOwE,eAAe3E,EAAasC,EAAe,CAClDnD,MAAO,KACJmD,GACNyC,EAAKD,GAAaC,EAAK3C,eAAe0C,IAAaC,EAAKD,IAAc,GACtEC,EAAKD,GAAUE,QAAQH,IASzB,OALIb,IACHY,EAAqBlC,UAAYvC,OAAO7C,OAAO0G,EAAYtB,YAG5DkC,EAAqBlC,UAAUM,aAAezE,EACvCqG,G,qCA/GD,IAAMvC,EAAc,kB,gBACpB,IAAMC,EAAgB,qBA+D7B,SAAS8B,EAAiBL,GACzB,OAAO,WACN,GAAIA,EAAO,CACV,IAAMkB,EAASlB,EAAK,WAAL,aACf,IAAK,IAAMzD,KAAY2E,EAClBA,EAAO7C,eAAe9B,KACzBnT,KAAKmT,GAAY2E,EAAO3E,M,8xBClEtB,SACN/B,EACAwF,GAEA,IAAMmB,EAAe,WACpB,IAAMD,EAASlB,EAAQA,EAAK,WAAL,aAAiB,GACxC,UACCf,aAAczE,GACX0G,IAKL,OAFAC,EAAQC,SAAW,SAACC,GAAD,OAAcA,GAAOA,EAAIpC,eAAiBzE,GAC7D2G,EAAQlC,aAAezE,EAChB2G,I,uEChBD,SAAgBG,GACtB,MAAoB,mBAANA,G,cAHR,IAAMC,EAAOC,S,qFCEb,SAAkBvY,EAAkBH,GACtCG,KAAY,IAAAgC,UAAShC,EAASH,IACjCG,EAAQ2D,aAAa,SAAS,IAAA6U,UAASxY,GAASyY,OAAS,IAAM5Y,IALjE,aACA,W,gFCCO,SAAuBoJ,GAC7B,OAAI,IAAAqJ,eAAcrJ,GACVA,EAED,MANR,e,2ECCO,SAAoBpJ,GAI1B,OAHK6Y,EAAgB7Y,KACpB6Y,EAAgB7Y,GAAa,IAAI8Y,OAAO,UAAY9Y,EAAY,YAE1D6Y,EAAgB7Y,IALxB,IAAM6Y,EAAkB,I,0ECAjB,SAAoBE,GAC1B,IAAI5Y,EAAU2C,SAASkW,cAAc,OAGrC,OAFA7Y,EAAQ8Y,UAAYF,EACV5Y,EAAQqG,oB,wECHZ,SAAkBrG,GACxB,OAAOA,EAAQkB,aAAa,UAAY,K,yECClC,SACNlB,EACAuR,EACAwH,GAIA,GAFAA,EAAWA,IAAY,IAAAC,WAAUhZ,GAGhC,OAAO+Y,EAASE,iBAAiB1H,IAASwH,EAASxH,IAVrD,e,yECAO,SACNvR,GAEA,IAAMkZ,EAAalZ,EAAQ2G,wBAE3B,MAAO,CACNhF,IAAK,WACJ,IAAMwX,EAAgBnZ,EAAQmZ,cACxBC,EAAc/Y,OAAOgZ,aAAeF,EAAcvV,KAAK0V,UAC7D,OACCJ,EAAWvX,IAAMyX,EAAcD,EAAchM,gBAAgBoM,WAG/DzS,KAAM,WACL,IAAMqS,EAAgBnZ,EAAQmZ,cACxBK,EAAenZ,OAAOoZ,aAAeN,EAAcvV,KAAK8V,WAC9D,OACCR,EAAWpS,KACX0S,EACAL,EAAchM,gBAAgBwM,e,gGCjB3B,SACN3Z,GAGc,IAFd4Z,EAEc,uDAFF,cACZC,IACc,yDACRhK,GAAW,IAAAiK,wBAAuB9Z,EAAS4Z,EAAWC,GAE5D,OAAIhK,GAAsC,IAA1BA,EAASlP,QAAQ,KACzBgC,SAASoX,eAAelK,EAASmK,OAAO,EAAGnK,EAAS1M,OAAS,IAG9D,MAbR,c,sFCAO,SACNnD,GAGS,IAFT4Z,EAES,uDAFG,cACZC,IACS,yDACLhK,EAAW7P,EAAQkB,aAAa0Y,GAOpC,OALK/J,GAAYgK,IAChBhK,EAAW7P,EAAQkB,aAAa,SAAW,GAC3C2O,EAAW,QAAQoK,KAAKpK,GAAYA,EAAW,MAGzCA,I,0ECZD,SAAmB7P,GACzB,IAAIka,EAAOla,EAAQmZ,cAAcgB,YAMjC,OAJKD,GAASA,EAAKE,SAClBF,EAAO7Z,QAGD6Z,EAAKG,iBAAiBra,K,kFCPvB,WACN,YAA8BwL,IAAvBnL,OAAOgZ,YACXhZ,OAAOgZ,aACL1W,SAASwK,iBACXxK,SAASiB,KAAK0W,YACd3X,SAASiB,MAAsB0V,Y,2ECF5B,SAAkBtZ,EAAkBH,GAC1C,OAAOG,IAAW,IAAAua,YAAW1a,GAAWoa,MAAK,IAAAzB,UAASxY,KAJvD,cACA,U,oFCCO,SACNA,EACAH,EACA2a,GAEA,IAAI5K,EAAS5P,EAAQiC,cACrB,GAAIuY,IAAe,IAAAxY,UAAShC,EAASH,GACpC,OAAO,EAER,KAAO+P,GAAUA,EAAO6K,UAAgC,IAApB7K,EAAO6K,UAAgB,CAC1D,IAAI,IAAAzY,UAAS4N,EAAQ/P,GACpB,OAAO,EAER+P,EAASA,EAAO3N,cAEjB,OAAO,GAjBR,e,mTCAO,SAAuBgH,GAC7B,MAA8B,YAAvB,oBAAOyR,YAAP,cAAOA,cACXzR,aAAayR,YACbzR,GACa,WAAb,EAAOA,IACD,OAANA,GACe,IAAfA,EAAEwR,UACoB,iBAAfxR,EAAE0R,W,iICUN,SACNnN,EACA3N,GAEA2N,EAASlK,QAAQsX,EAAmB/a,KArBrC,cACA,SACA,UAEO,SAAS6D,EAAY1D,EAAkBH,GAC7C,GAAIG,IAAW,IAAAgC,UAAShC,EAASH,GAAY,CAC5C,IAAMgb,GAAQ,IAAAN,YAAW1a,GACzBG,EAAQ2D,aAAa,SAAS,IAAA6U,UAASxY,GAASuQ,QAAQsK,EAAO,KAAKpC,SAI/D,SAASmC,EAAmB/a,GAClC,OAAO,SAACG,GACP0D,EAAY1D,EAASH,M,oFCbhB,SAA6BG,EAAsB8a,GACzD,IAAMvV,EAAQ,IAAIwV,YAAYD,GAC9B9a,EAAQgb,cAAczV,K,wFCAhB,SAA+B0V,GACrC,OAAO,SAACjb,EAAsB8a,GAAvB,OACN,IAAAI,qBAAoBlb,EAAS8a,EAAY,IAAMG,KAJjD,e,2FCAwB,CACvBE,KAAM,GACNC,MAAO,GACPC,OAAQ,GACRC,MAAO,GACPC,GAAI,K,6ECLE,SAAsBC,GAC5B,IAAMC,EAAQ,CAAC,KAAM,MAAO,MAE5B,IAAKD,IAASC,EAAMzS,QAAO,SAAC0S,GAAD,OAA4B,IAArBF,EAAK7a,QAAQ+a,MAAWvY,OACzD,OAAO,EAGR,IAAIwY,EAASH,EAAKjL,QAAQ,IAAK,KAG/B,OAFAkL,EAAMnY,SAAQ,SAACoY,GAAD,OAAQC,EAASA,EAAOpL,QAAQmL,EAAG,OAE1CE,OAAOD,K,gECVf,oLACA,oLACA,oLACA,oLACA,oLACA,oLACA,qL,2QCJaE,E,WAOZ,WAAYlZ,GAAoB,Y,4FAAA,cALxBmZ,iBAA8B,GAKN,KA8DxBC,gBAAkB,SAACxW,GAC1B,GAAI,EAAKuW,iBAAiB3Y,OAAQ,CAEjC,IAAM6Y,EAAU,EAAKC,wBAAwB1W,GAEzCyW,EAAQE,iBACXF,EAAQE,gBAAgB3W,KAnE1BpF,KAAKwC,SAAWA,E,iDAIbwZ,GAEEhc,KAAKic,aACTjc,KAAKwC,SAASiB,KAAKtD,iBAClB,UACAH,KAAK4b,iBACL,GAED5b,KAAKic,YAAa,GAGnBjc,KAAK2b,iBAAiBpO,KAAKyO,K,6BAIrBA,GACN,IAAMjR,EAAQ/K,KAAK2b,iBAAiBnb,QAAQwb,GAExCjR,GAAS,GACZ/K,KAAK2b,iBAAiBO,OAAOnR,EAAO,GAIA,IAAjC/K,KAAK2b,iBAAiB3Y,QACzBhD,KAAKmc,Y,8CAKyB/W,GAU/B,OARwBpF,KAAK2b,iBAAiBS,MAAK,SAACP,GACnD,OACCA,EAAQQ,iBAAmBjX,EAAMpE,QACjC6a,EAAQQ,eAAe/Y,SAAS8B,EAAMpE,YAMpBhB,KAAK2b,iBAAiB3b,KAAK2b,iBAAiB3Y,OAAS,K,gCAMrEhD,KAAKic,aACRjc,KAAKwC,SAASiB,KAAKuC,oBAClB,UACAhG,KAAK4b,iBACL,GAED5b,KAAKic,YAAa,Q,4JChDpB,WAAYpO,GAA0B,Y,4FAAA,cAZtCnO,UAAa,YAYyB,KAVtC4c,kBAAqB,0BAUiB,KATtCC,aAAe,EASuB,KAFtC/N,mBAAsB,IAGjBX,GACHmF,OAAOC,KAAKpF,GACVhF,QAAO,SAACoJ,GAAD,YAAiC,IAAjBpE,EAAQoE,MAC/B9O,SAAQ,SAAC8O,GAAD,OAAU,EAAKA,GAAOpE,EAAQoE,Q,0EC+TpC,SACNpS,EACAgO,GAEA,IAAMmO,EAAa,IAAIQ,EAAQ3c,EAASgO,GAIxC,OAFAmO,EAAW7L,SAEJ6L,G,iBA7VR,cACA,UACA,SACA,UACA,UACA,UAEA,UACA,U,i2BAGaQ,E,WAkBZ,WAAmBC,EAA4B5O,I,4FAA0B,cAHjE6O,UAAW,EAGsD,KAFjEC,mBAAqB,IAAIjB,4BAA0BlZ,UAEc,KAAtDia,gBAClBzc,KAAK6N,QAAU,IAAI+O,iBAAe/O,GAElC7N,KAAK6c,MAAO,IAAAC,WAERjP,EAAQkP,gBACXlP,EAAQkP,eAAeC,OAAOhd,M,sDAO/B,IAAMid,EAA0Bza,SAASC,uBAAT,UAC5BzC,KAAK6N,QAAQnO,UADe,gBAE9B,GAEEud,EACHjd,KAAKid,wBAA0BA,GAE/Bjd,KAAKid,yBAA0B,IAAAC,YAAA,sBACfld,KAAK6N,QAAQnO,UADE,wBAI/B8C,SAASiB,KAAK0Z,aACbnd,KAAKid,wBACLza,SAASiB,KAAK2Z,mBAIhBpd,KAAKqc,gBAAiB,IAAAa,YAAA,6BACCld,KAAK6c,KADN,oBACsB7c,KAAK6N,QAAQnO,UADnC,aAIlBM,KAAK6N,QAAQwP,mBAChB,IAAA3a,UAAS1C,KAAKqc,eAAgBrc,KAAK6N,QAAQwP,kBAG5Crd,KAAKid,wBAAwBK,YAAYtd,KAAKqc,kB,oCAI9C,OAAOrc,KAAK0c,W,uCAGI,WACVa,EAAmBvd,KAAK4E,gBAE1B2Y,KAeH,IAAAha,aAAYga,EAAkB,cAE1Bvd,KAAK6N,QAAQyO,oBAChB,IAAA/Y,aAAYga,EAAkBvd,KAAK6N,QAAQyO,oBAG5C,IAAAxX,0BAAyByY,GApBJ,WAEhBA,GAAoBA,EAAiBpD,YACxCoD,EAAiBpD,WAAWqD,YAAYD,GAMrC,EAAK3Y,kBAAoB2Y,IAC5B,EAAK3Y,gBAAkB,QAUgC,KAIzD2Y,EAAiB1a,MAAM4a,cAAgB,U,uCAMpCzd,KAAK6N,QAAQ6P,kBAChB1d,KAAK6N,QAAQ6P,iBAAiBhN,U,mCAK/B,OAAO1Q,KAAK6N,U,iCAIF8P,GACV3d,KAAK6N,QAAL,OAAoB7N,KAAK6N,SAAY8P,GACrC3d,KAAK4d,uB,6BAGC,WACN5d,KAAK6d,UAKL7d,KAAK8d,kBAGL,IAAApb,UAAS1C,KAAKyc,cAAe,cAEzBzc,KAAK+d,YACR/d,KAAK+d,cAIN,IAAAjZ,0BACC9E,KAAKyc,eACL,YACC,IAAAlZ,aAAY,EAAKkZ,cAAe,eAChC,IAAA/Z,UAAS,EAAK+Z,cAAe,cAEzB,EAAKuB,aACR,EAAKA,gBAGPhe,KAAK6N,QAAQW,sB,8BAIP,WACPxO,KAAKmc,WAGL,IAAAzZ,UAAS1C,KAAKyc,cAAe,eAEzBzc,KAAKie,aACRje,KAAKie,eAGN,IAAAnZ,0BACC9E,KAAKyc,eACL,YACC,IAAAlZ,aAAY,EAAKkZ,cAAe,gBAEhC,IAAAlZ,aAAY,EAAKkZ,cAAe,eAChC,IAAAlZ,aAAY,EAAKkZ,cAAe,cAK5B,EAAKyB,aACR,EAAKA,gBAGPle,KAAK6N,QAAQW,sB,gCAMVxO,KAAKyc,eAAiBzc,KAAKyc,cAAc3a,eAC5C9B,KAAKyc,cAAc3a,cAAe0b,YAAYxd,KAAKyc,eAInDzc,KAAK6N,QAAQ6P,kBACb1d,KAAK6N,QAAQ6P,iBAAiBS,SAE9Bne,KAAK6N,QAAQ6P,iBAAiBS,UAG3Bne,KAAK6N,QAAQkP,gBAChB/c,KAAK6N,QAAQkP,eAAeqB,UAG7Bpe,KAAKqe,iBAGLre,KAAK2c,mBAAmB2B,OAAOte,Q,gCAU3BA,KAAK6N,QAAQ6P,kBAChB1d,KAAK6N,QAAQ6P,iBAAiBV,OAAOhd,MAGlCA,KAAK6N,QAAQkP,gBAChB/c,KAAK6N,QAAQkP,eAAewB,SAG7Bve,KAAKqc,eAAeiB,YAAYtd,KAAKyc,eAErCzc,KAAK4d,qBAEL5d,KAAKqc,eAAexZ,MAAM4a,cAAgB,OAEtCzd,KAAK6N,QAAQ0O,aAChBvc,KAAKwe,kBAGNxe,KAAK0c,UAAW,EAGhB1c,KAAK2c,mBAAmB8B,IAAIze,MAExBA,KAAK0e,YACR1e,KAAK0e,e,gCAKD1e,KAAK2e,gBAIV3e,KAAKqe,iBAKLre,KAAKqc,eAAexZ,MAAM4a,cAAgB,OAEtCzd,KAAK6N,QAAQ6P,kBAAoB1d,KAAK6N,QAAQ6P,iBAAiBkB,QAClE5e,KAAK6N,QAAQ6P,iBAAiBkB,SAG3B5e,KAAK6N,QAAQkP,gBAChB/c,KAAK6N,QAAQkP,eAAeqB,UAI7Bpe,KAAK2c,mBAAmB2B,OAAOte,MAE3BA,KAAK6e,YACR7e,KAAK6e,gB,wCAKmB,WACzB7e,KAAK4E,iBAAkB,IAAAsY,YAAA,sBACPld,KAAK6N,QAAQnO,UADN,uBAInBM,KAAK6N,QAAQyO,oBAChB,IAAA5Z,UAAS1C,KAAK4E,gBAAiB5E,KAAK6N,QAAQyO,mBAK7Ctc,KAAKqc,eAAeva,cAAeqb,aAClCnd,KAAK4E,gBACL5E,KAAKqc,gBAKNrc,KAAK4E,gBAAgBzE,iBAAiB,SAAS,SAACiF,GAAD,OAC9C,EAAKI,qBAAqBJ,MAI3ByH,uBAAsB,WACjB,EAAKjI,kBACR,IAAAlC,UAAS,EAAKkC,gBAAiB,mB,4CAO7B5E,KAAK6N,QAAQjH,OAAgC,IAAvB5G,KAAK6N,QAAQjH,SACtC5G,KAAKqc,eAAexZ,MAAM+D,MAAQkY,EAAc9e,KAAK6N,QAAQjH,SAG1D5G,KAAK6N,QAAQ5E,QAAkC,IAAxBjJ,KAAK6N,QAAQ5E,UACvCjJ,KAAKqc,eAAexZ,MAAMoG,OAAS6V,EAAc9e,KAAK6N,QAAQ5E,UAG3DjJ,KAAK6N,QAAQkR,UAAsC,IAA1B/e,KAAK6N,QAAQkR,YACzC/e,KAAKqc,eAAexZ,MAAMkc,SAAWD,EAAc9e,KAAK6N,QAAQkR,YAG7D/e,KAAK6N,QAAQmR,WAAwC,IAA3Bhf,KAAK6N,QAAQmR,aAC1Chf,KAAKqc,eAAexZ,MAAMmc,UAAYF,EACrC9e,KAAK6N,QAAQmR,aAIXhf,KAAK6N,QAAQoR,UAAsC,IAA1Bjf,KAAK6N,QAAQoR,YACzCjf,KAAKqc,eAAexZ,MAAMoc,SAAWH,EAAc9e,KAAK6N,QAAQoR,YAG7Djf,KAAK6N,QAAQxH,WAAwC,IAA3BrG,KAAK6N,QAAQxH,aAC1CrG,KAAKqc,eAAexZ,MAAMwD,UAAYyY,EACrC9e,KAAK6N,QAAQxH,c,2CAKajB,IAE1B,IAAAoC,mBAAkBpC,EAAMpE,OAAmBhB,KAAK6N,QAAQnO,WAAW,IAEhEM,KAAKkf,eACRlf,KAAKkf,cAAc9Z,Q,sBAiBvB,SAAS0Z,EAAc9M,GAEtB,MAAwB,iBAAVA,EAAsBA,EAA7B,UAAmDA,EAAnD,M,gHClWR,cACA,UAIA,U,oRAYamN,E,WAgCZ,WACCC,EACAC,EACQC,EACA9c,I,4FACP,cAjCM+c,QAAU,EAiChB,KA9BMC,QAAU,EA8BhB,KA3BMC,YAA6B,GA2BnC,KAxBMC,mBAA+C,GAwBrD,KAZMC,SAAU,EAYhB,KATMC,gBAAiB,EASvB,KAPMC,kBAAoB7f,KAAK8f,oBAAoBC,KAAK/f,MAOxD,KAFOsf,cAEP,KADO9c,WAERxC,KAAKggB,OAAShgB,KAAKsf,YACnBtf,KAAKigB,qBAAqBb,EAAWC,G,oDAS/BrD,GACNhc,KAAKkgB,KAAOlE,EAAWK,eAEvBnc,OAAOC,iBAAiB,SAAUH,KAAK6f,qB,+BAKvC7f,KAAK2f,SAAU,EACfzf,OAAO8F,oBAAoB,SAAUhG,KAAK6f,qB,gCAK1C7f,KAAK4e,W,8BAYL,GAAI5e,KAAK2f,SAAW3f,KAAK4f,gBAAkB5f,KAAKmgB,sBAC/CngB,KAAKogB,8BADN,CAKApgB,KAAKqgB,qBACLrgB,KAAK2f,SAAU,EAIf,IAWIW,EACAC,EA1BS,EAcP1gB,EAAUG,KAAKkgB,KACfM,EAAaxgB,KAAKggB,OAAOxZ,wBACzBia,EAAc5gB,EAAQ2G,wBAGtBka,EAAe,CACpB9Z,MAAO1G,OAAOwG,WACduC,OAAQ/I,OAAOygB,aArBH,E,w5BAAA,CA8BK3gB,KAAK0f,oBA9BV,IA8Bb,2BAA2C,KAAhCkB,EAAgC,QAGpCC,EAAc7gB,KAAK8gB,0BAA0BN,EAAYI,GACzDG,EAAe/gB,KAAKghB,iBACzBH,EACAJ,EACAC,EACAE,GAID,GAAIG,EAAaE,eAMhB,OALAjhB,KAAKkhB,oBAAoBrhB,EAAS4gB,EAAaM,EAAcH,QAG7D5gB,KAAKmgB,sBAAwBS,KAI5BN,GACDA,EAAca,YAAcJ,EAAaI,eAEzCb,EAAgBS,EAChBR,EAAmBK,IAtDR,8BA4Db5gB,KAAKkhB,oBACJrhB,EACA4gB,EACAH,EACAC,M,gDAWD,GAAKvgB,KAAKmgB,sBAAV,CAIAngB,KAAKqgB,qBAEL,IAAMG,EAAaxgB,KAAKggB,OAAOxZ,wBACzBia,EAAczgB,KAAKkgB,KAAK1Z,wBACxBka,EAAe,CACpB9Z,MAAO1G,OAAOwG,WACduC,OAAQ/I,OAAOygB,aAEVS,EACLphB,KAAKmgB,uBAAyBngB,KAAK0f,mBAAmB,GAEjDmB,EAAc7gB,KAAK8gB,0BACxBN,EACAY,GAEKL,EAAe/gB,KAAKghB,iBACzBH,EACAJ,EACAC,EACAU,GAEDphB,KAAKkhB,oBACJlhB,KAAKkgB,KACLO,EACAM,EACAK,M,+CASuB3B,GAExB,OADAzf,KAAKyf,YAAcA,EACZzf,O,2CASPof,EACAC,EACAE,EACAC,GAEA,IAAMvS,EAAW,IAAIoU,yBACpBjC,EACAC,EACAE,EACAC,GAGD,OADAxf,KAAK0f,mBAAmBnS,KAAKN,GACtBjN,O,kCAOIsB,GAEX,OADAtB,KAAKuf,QAAUje,EACRtB,O,kCAOIsB,GAEX,OADAtB,KAAKwf,QAAUle,EACRtB,O,yCASWshB,GAElB,OADAthB,KAAK4f,eAAiB0B,EACfthB,O,oCAOMuhB,GAEb,OADAvhB,KAAK0f,mBAAqB6B,EAAUC,QAC7BxhB,O,gCAOEggB,GAET,OADAhgB,KAAKggB,OAASA,EACPhgB,O,iCAOWyhB,GAClB,OAAOA,EAAK9a,O,+BAOI8a,GAChB,OAAOA,EAAKhb,Q,gDASZ+Z,EACAI,GAEA,IAAMc,EAAe1hB,KAAK2hB,WAAWnB,GAC/BoB,EAAa5hB,KAAK6hB,SAASrB,GAgBjC,MAAO,CAAEsB,EAbW,WAAhBlB,EAAImB,QACHL,EAAelB,EAAW5Z,MAAQ,EAElB,UAAhBga,EAAImB,QAAsBL,EAAeE,EAUlCI,EANQ,WAAhBpB,EAAIqB,QACHzB,EAAWhf,IAAMgf,EAAWvX,OAAS,EAErB,QAAhB2X,EAAIqB,QAAoBzB,EAAWhf,IAAMgf,EAAW0B,U,uCAYzDrB,EACAJ,EACAC,EACAE,GAIA,IAAIuB,EASAC,EAPHD,EADoB,WAAjBvB,EAAIyB,UACU5B,EAAY7Z,MAAQ,EACV,UAAjBga,EAAIyB,SACE,GAEC5B,EAAY7Z,MAK7Bwb,EADoB,WAAjBxB,EAAI0B,UACU7B,EAAYxX,OAAS,EAEL,QAAjB2X,EAAI0B,SAAqB,GAAK7B,EAAYxX,OAI3D,IAAMsW,OACkB,IAAhBqB,EAAIrB,QAA0Bvf,KAAKuf,QAAUqB,EAAIrB,QACnDC,OACkB,IAAhBoB,EAAIpB,QAA0Bxf,KAAKwf,QAAUoB,EAAIpB,QAGnDsC,EAAIjB,EAAYiB,EAAIK,EAAgB5C,EACpCyC,EAAInB,EAAYmB,EAAII,EAAgB5C,EAGpC+C,EAAe,EAAIT,EACnBU,EAAgBV,EAAIrB,EAAY7Z,MAAQ8Z,EAAa9Z,MACrD6b,EAAc,EAAIT,EAClBU,EAAiBV,EAAIvB,EAAYxX,OAASyX,EAAazX,OAevDkY,EAZenhB,KAAK2iB,mBACzBlC,EAAY7Z,MACZ2b,EACAC,GAEqBxiB,KAAK2iB,mBAC1BlC,EAAYxX,OACZwZ,EACAC,GAQD,MAAO,CAAEZ,IAAGE,IAAGf,eAFdR,EAAY7Z,MAAQ6Z,EAAYxX,SAAWkY,EAEbA,iB,2CAOHtF,GAC5B,IAAM+G,EAAe5iB,KAAKggB,OAAOxZ,wBAC3Bqc,EAAgBhH,EAAQrV,wBACxBsc,EAAwB9iB,KAAKyf,YAAYxY,KAAI,SAAC8b,GAAD,OAClDA,EAAEvc,2BAGH,MAAO,CACNwc,iBAAiB,IAAAC,6BAChBL,EACAE,GAEDI,qBAAqB,IAAAC,8BACpBP,EACAE,GAEDM,kBAAkB,IAAAH,6BACjBJ,EACAC,GAEDO,sBAAsB,IAAAF,8BACrBN,EACAC,M,0CAOFjjB,EACA4gB,EACAM,EACAH,GAIA,IAAM0C,EAAyC,WAAjB1C,EAAI0B,SAAwB,SAAW,MAI/DN,EACqB,QAA1BsB,EACGvC,EAAaiB,EACbhiB,KAAKwC,SAASwK,gBAAgBuW,cAC7BxC,EAAaiB,EAAIvB,EAAYxX,QAE5Bua,EAA2C,QAAjB5C,EAAIyB,SAAqB,QAAU,OAI7DP,EACuB,SAA5B0B,EACGzC,EAAae,EACb9hB,KAAKwC,SAASwK,gBAAgByW,aAC7B1C,EAAae,EAAIrB,EAAY7Z,OAIlC,CAAC,MAAO,SAAU,OAAQ,SAASzD,SAClC,SAACugB,GAAD,OAAQ7jB,EAAQgD,MAAM6gB,GAAK,QAG5B7jB,EAAQgD,MAAMygB,GAAd,UAA0CtB,EAA1C,MACAniB,EAAQgD,MAAM2gB,GAAd,UAA4C1B,EAA5C,MAGA,IAAM6B,EAA2B3jB,KAAK4jB,qBAAqB/jB,GACrDgkB,EAAiB,IAAIC,iCAC1BlD,EACA+C,GAGG3jB,KAAK+jB,kBACR/jB,KAAK+jB,iBAAiBF,K,yCAKG7gB,GAAgD,2BAA7BghB,EAA6B,iCAA7BA,EAA6B,kBAC1E,OAAOA,EAAUxW,QAAO,SAACyW,EAAsBC,GAC9C,OAAOD,EAAejiB,KAAKmiB,IAAID,EAAiB,KAC9ClhB,K,2CAKH,IAAKhD,KAAK0f,mBAAmB1c,OAC5B,MAAMmO,MACL,iEAMFnR,KAAK0f,mBAAmBvc,SAAQ,SAACihB,IAChC,IAAAC,4BAA2B,UAAWD,EAAKrC,UAC3C,IAAAuC,0BAAyB,UAAWF,EAAKnC,UACzC,IAAAoC,4BAA2B,WAAYD,EAAK/B,WAC5C,IAAAiC,0BAAyB,WAAYF,EAAK9B,e,4CAK3CtiB,KAAK0Q,U,gCA7aL,OAAO1Q,KAAK0f,wB,4OC8BP,SACN6E,EACAvS,GAEA,GAAc,QAAVA,GAA6B,WAAVA,GAAgC,WAAVA,EAC5C,MAAMb,MACL,qCAA8BoT,EAA9B,aAA2CvS,EAA3C,OACC,0C,6BAWG,SACNuS,EACAvS,GAEA,GAAc,UAAVA,GAA+B,QAAVA,GAA6B,WAAVA,EAC3C,MAAMb,MACL,qCAA8BoT,EAA9B,aAA2CvS,EAA3C,OACC,yC,gHArFH,WACCgO,EACAnE,EACO0D,EACAC,GACN,eAFMD,UAEN,KADMC,UAEPxf,KAAK+hB,QAAU/B,EAAO+B,QACtB/hB,KAAKiiB,QAAUjC,EAAOiC,QACtBjiB,KAAKqiB,SAAWxG,EAAQwG,SACxBriB,KAAKsiB,SAAWzG,EAAQyG,U,+EAsCzB,WAEQkC,EACAb,GACN,eAFMa,iBAEN,KADMb,6B,gGCjFT,c,0KAUac,E,WAiBZ,WAAoBjiB,I,4FAAoB,cAbhCkiB,YAAc,SAakB,KAZhCC,UAAY,GAYoB,KAXhCC,aAAe,GAWiB,KAVhCC,WAAa,GAUmB,KAThCC,YAAc,GASkB,KARhCC,WAAa,GAQmB,KAPhCC,eAAiB,GAOe,KANhCpe,MAAQ,GAMwB,KALhCqC,OAAS,GAKuB,KAFhCgc,QAA8B,KAEE,KAApBziB,W,oDAEbwZ,GACN,IAAMnO,EAAUmO,EAAWkJ,aAE3BllB,KAAKgc,WAAaA,EAEdhc,KAAK4G,QAAUiH,EAAQjH,OAC1BoV,EAAWmJ,WAAW,CAAEve,MAAO5G,KAAK4G,QAGjC5G,KAAKiJ,SAAW4E,EAAQ5E,QAC3B+S,EAAWmJ,WAAW,CAAElc,OAAQjJ,KAAKiJ,W,4BAQjB,IAAlB+I,EAAkB,uDAAV,GAIX,OAHAhS,KAAK4kB,aAAe,GACpB5kB,KAAK2kB,UAAY3S,EACjBhS,KAAK+kB,WAAa,aACX/kB,O,6BAOe,IAAlBgS,EAAkB,uDAAV,GAIZ,OAHAhS,KAAK8kB,YAAc,GACnB9kB,KAAK6kB,WAAa7S,EAClBhS,KAAKglB,eAAiB,aACfhlB,O,+BAOiB,IAAlBgS,EAAkB,uDAAV,GAId,OAHAhS,KAAK2kB,UAAY,GACjB3kB,KAAK4kB,aAAe5S,EACpBhS,KAAK+kB,WAAa,WACX/kB,O,8BAOgB,IAAlBgS,EAAkB,uDAAV,GAIb,OAHAhS,KAAK6kB,WAAa,GAClB7kB,KAAK8kB,YAAc9S,EACnBhS,KAAKglB,eAAiB,WACfhlB,O,2CAS8B,IAAnBsB,EAAmB,uDAAV,GAG3B,OAFAtB,KAAK2G,KAAKrF,GACVtB,KAAKglB,eAAiB,SACfhlB,O,yCAS4B,IAAnBsB,EAAmB,uDAAV,GAGzB,OAFAtB,KAAKwB,IAAIF,GACTtB,KAAK+kB,WAAa,SACX/kB,O,8BAaP,GAAKA,KAAKgc,WAAW2C,cAArB,CAIA,IAAM9e,EAAUG,KAAKgc,WAAWK,gBAE3Brc,KAAKilB,SAAWplB,EAAQsa,aAC5Bna,KAAKilB,QAAUjlB,KAAKwC,SAASkW,cAAc,QAC3C,IAAAhW,UAAS1C,KAAKilB,QAAS,qBACvBplB,EAAQsa,WAAWgD,aAAand,KAAKilB,QAAUplB,GAC/CG,KAAKilB,QAAS3H,YAAYzd,IAG3B,IAAMulB,EAAgBvlB,EAAQsa,WAA2BtX,MACnDgL,EAAU7N,KAAKgc,WAAWkJ,aAEhCrlB,EAAQgD,MAAMoK,SAAWjN,KAAK0kB,YAC9B7kB,EAAQgD,MAAMyD,WAA+B,SAAlBuH,EAAQjH,MAAmB,IAAM5G,KAAK6kB,WACjEhlB,EAAQgD,MAAMwiB,UAA+B,SAAnBxX,EAAQ5E,OAAoB,IAAMjJ,KAAK2kB,UACjE9kB,EAAQgD,MAAMyiB,aAAetlB,KAAK4kB,aAClC/kB,EAAQgD,MAAM0iB,YAAcvlB,KAAK8kB,YAEjCM,EAAaJ,eACM,SAAlBnX,EAAQjH,MAAmB,aAAe5G,KAAKglB,eAChDI,EAAaL,WACO,SAAnBlX,EAAQ5E,OAAoB,aAAejJ,KAAK+kB,c,gCAK7C/kB,KAAKilB,SAAWjlB,KAAKilB,QAAQ9K,aAChCna,KAAKilB,QAAQ9K,WAAWqD,YAAYxd,KAAKilB,SACzCjlB,KAAKilB,QAAU,W,kJCrJlB,cACA,U,0KAEaO,E,oLAKX,OAAO,IAAIf,yBAAuBjiB,Y,kCAUlCijB,EACArG,EACAC,GAEA,OAAO,IAAIF,4BACVC,EACAC,EACAoG,EACAjjB,e,gKC9BH,c,0KAoBakjB,E,WAIZ,WAAoBC,GAAyC,Y,4FAAA,cAFrDhG,SAAU,EAE2C,KAuBrDiG,aAAe,WACtB,IAAMC,EAAW,EAAKF,OAAS,EAAKA,OAAOG,eAAiB,EACtDC,GAAY,EAAKJ,QAAS,EAAKA,OAAOI,UAEtCC,EAAS,WAGd,GAFA,EAAKhK,WAAW8B,iBAEZiI,EAAW,CACd,IAAMtF,EAAc,EAAKzE,WAAWK,eAAe7V,wBADrC,EAEY,CACzBI,MAAO1G,OAAOwG,WACduC,OAAQ/I,OAAOygB,aAFR/Z,EAFM,EAENA,MAAOqC,EAFD,EAECA,OAOTgd,EAAc,CACnB,CACCrf,QACAqC,SACAiZ,OAAQjZ,EACRxC,MAAOG,EACPpF,IAAK,EACLmF,KAAM,KAIJ,IAAAwc,8BAA6B1C,EAAawF,KAC7C,EAAK7H,UACL,EAAKpC,WAAWlb,WAKf+kB,EAAW,EACdxe,YAAW,kBAAM2e,MAAUH,GAE3BG,KA5D2D,KAAzCL,S,oDAGb3J,GACNhc,KAAKgc,WAAaA,I,+BAKbhc,KAAK2f,UACTzf,OAAOC,iBAAiB,SAAUH,KAAK4lB,cACvC5lB,KAAK2f,SAAU,K,gCAMZ3f,KAAK2f,UACRzf,OAAO8F,oBAAoB,SAAUhG,KAAK4lB,cAC1C5lB,KAAK2f,SAAU,Q,iICnCX,SAAsBrT,GAA6C,IAAhC4Z,EAAgC,uDAAV,aACzDC,EAAgB3jB,SAASkW,cAAc,UAY7C,OAXAyN,EAAc7Z,IAAMA,EACpB6Z,EAAcC,OAAQ,EACtBD,EAAcE,OAAS,SAAC7Z,GACvB8Z,EAAoBha,IAErB6Z,EAAcD,QAAU,SAAC1Z,GACxBzH,QAAQ+I,MAAMtB,GACd8Z,EAAoBha,GACpB4Z,KAEDK,EAAoBC,eAAejZ,KAAKjB,GACjC6Z,GAjBR,IAAMI,EAAuBrmB,OAoB7B,SAASomB,EAAoBha,GAC5B,IAAMvB,EAAQwb,EAAoBC,eAAehmB,QAAQ8L,GACrDvB,GAAS,IACZwb,EAAoBC,eAAiBD,EAAoBC,eAAetK,OACvEnR,EACA,IAvBHwb,EAAoBC,eAAiBD,EAAoBC,gBAAkB,I,iFCJpE,SAAwBla,GAI9B,IADA,IAAMma,EAAUjkB,SAAS2I,qBAAqB,UACrC+K,EAAI,EAAGA,EAAIuQ,EAAQzjB,OAAQkT,IAAK,CACxC,IAAMwQ,EAAuBD,EAAQE,KAAKzQ,GAE1C,IADmB,IAAA0Q,cAAaF,EAAqBpa,OAClCA,EAClB,OAAOoa,EAGT,OAAO,MAbR,c,6ECOO,SAAoBpa,GAC1B,OAAO,IAAIua,SACV,SAAC3V,EAA+B4V,GAC/B,IAAMC,GAAS,IAAAC,gBAAe1a,GAE9B,GAAIya,GAGD,IADA7mB,OAAesmB,eAAehmB,SAAQ,IAAAomB,cAAaG,EAAOza,OAG3Dya,EAAOb,SAAU,IAAAe,cAAaF,EAAOb,QAASY,GAC9CC,EAAOV,QAAS,IAAAY,cAAaF,EAAOV,OAAQnV,IAE5CA,QAEK,CACN,IAAMgW,GAAY,IAAAC,cAAa7a,GAC/B4a,EAAUhB,QAAUY,EACpBI,EAAUb,QAAS,IAAAY,cAAaC,EAAUb,OAAQnV,GAClD1O,SAAS4kB,KAAK9J,YAAY4J,QA1B9B,aACA,UACA,UACA,UAEChnB,OAAesmB,eAAkBtmB,OAAesmB,gBAAkB,I,yECyxB5D,SAAgB3mB,GACtB,OAAO,IAAIwnB,EAAOxnB,I,yCA/xBnB,cACA,UACA,UACA,SACA,UACA,UASA,UACA,UACA,U,giCAkBaynB,E,WACZ,WAAoBznB,GAA4B,eAA5BA,UAEnBG,KAAKunB,MAAQvnB,KAAKH,QAAQ2nB,aAAe,IAAIlP,OAC7CtY,KAAKynB,SAAWznB,KAAKH,QAAQ4nB,S,2CAI7B,OAAOznB,KAAK0nB,W,aAEA1V,GACZhS,KAAK0nB,UAAY1V,I,2BAKjB,OAAOhS,KAAK2nB,O,aAEJ3V,GACRhS,KAAK2nB,MAAQ3V,I,4BAMb,OAAQhS,KAAKH,QAAQmS,OAAS,IAAIsG,W,oBAIvB+O,E,WAmEZ,WACSO,EACR/Z,GACC,eAhDM8X,OAAwB,CAC/BkC,QAAS,CACR7W,UAAW,WACXpB,OAAQ,YACRkY,YAAa,iBACbL,SAAU,gBA2CV,KAtCMtO,UAAY,EAsClB,KA/BMqG,QAAU,EA+BhB,KAvBM+B,UAAY,CACnB,CACCQ,QAAS,QACTE,QAAS,MACTI,SAAU,QACVC,SAAU,OAEX,CACCP,QAAS,QACTE,QAAS,SACTI,SAAU,QACVC,SAAU,WAYV,KAPMyF,WAAY,EAOlB,KAFOH,gBAGR5nB,KAAKoR,KAAOpR,KAAK4nB,cAAcxW,KAC/BpR,KAAKgoB,kBAAoBhoB,KAAK4nB,cAE9B5nB,KAAK2lB,OAAL,OAAmB3lB,KAAK2lB,QAAW9X,GAEnC7N,KAAKioB,cAAgBjoB,KAAKkoB,oBAE1BloB,KAAK4L,YAAe5L,KAAKioB,cAAoBjoB,KAAKioB,cAAT,EAEzCjoB,KAAK6c,MAAO,IAAAC,WAEZ9c,KAAKmoB,Q,wCA/DL,OAAQnoB,KAAKgoB,kBAAkBhW,OAAS,IAAIsG,W,kCAqErBtY,KAAK6N,SAC1B7N,KAAK6N,QAAQ7K,SACdhD,KAAK+nB,YAKN/nB,KAAKooB,YAAcpoB,KAAKqoB,eAAe7hB,wBAEvCxG,KAAK+nB,WAAY,EACjB/nB,KAAKsoB,iBAAiB5e,OAEtB1J,KAAKuoB,4BACLvoB,KAAKwoB,0BACLxoB,KAAKyoB,iC,8BAIDzoB,KAAK+nB,YACR/nB,KAAKgc,WAAWlb,QAIhBd,KAAK0oB,eAAe,W,+BAKrB1oB,KAAK+nB,UAAY/nB,KAAKc,QAAUd,KAAK0J,S,8BAGtB,WAEf1J,KAAK6N,QAAU5K,MAAMC,KAAKlD,KAAK4nB,cAAchf,UAAU3B,KACtD,SAAC0hB,GAAD,OAA+B,IAAIrB,EAAOqB,MAG3C3oB,KAAK4nB,cAAcgB,UAAY,EAC/B5oB,KAAK4nB,cAAcpkB,aAAa,cAAe,QAC/CxD,KAAK4nB,cAAcpkB,aAAa,cAAexD,KAAK6c,MACpD7c,KAAK4nB,cAAciB,mBAAmB,WAAY7oB,KAAK8oB,WACvD9oB,KAAK4nB,cAAcznB,iBAAiB,SAAS,WAC5C,EAAK4oB,OAAO3d,QACZ,EAAK1B,UAGN1J,KAAK+oB,OAASvmB,SAASoX,eAAe5Z,KAAK6c,MAC3C7c,KAAK+oB,OAAOH,SAAW,EACvB5oB,KAAK+oB,OAAOrpB,WAAa,IAAMM,KAAK4nB,cAAcloB,UAElDM,KAAKqoB,eAAiBroB,KAAK+oB,OAAOtmB,uBAAZ,UAClBzC,KAAK2lB,OAAOkC,QAAQ7W,UADF,cAEpB,GAEFhR,KAAKqoB,eAAeloB,iBAAiB,SAAS,SAACiF,GAC9CA,EAAME,iBACNF,EAAM4jB,kBACN,EAAKzjB,YAGNvF,KAAK+oB,OAAO5oB,iBAAiB,WAAW,SAACiF,GAAD,OACvC,EAAK6jB,eAAe7jB,MAGrBpF,KAAK4nB,cAAcznB,iBAAiB,UAAU,kBAC7C,EAAK+oB,MAAM,EAAKrb,QAAQ,EAAK+Z,cAAcK,gBAAgB,Q,yCAIlC7iB,GAC1B,IAAM+jB,EAAQ/jB,EAAMgkB,UAAYC,WAASjO,IAAM,EAAI,EAEnD,KAAIpb,KAAK4L,YAAcud,GAAS,GAI5BnpB,KAAK4L,YAAcud,GAASnpB,KAAK6N,QAAQ7K,QAK7C,IAAK,IAAIkT,EAAI,EAAGA,GAAKlW,KAAK6N,QAAQ7K,OAAQkT,IAAK,CAC9C,IAAMnL,GACJ/K,KAAK4L,YAAcud,EAAQjT,EAAIlW,KAAK6N,QAAQ7K,QAC7ChD,KAAK6N,QAAQ7K,OAGd,IAFahD,KAAK6N,QAAQ9C,GAEhB0c,SAET,YADAznB,KAAKspB,kBAAkBve,M,wCAMAA,GACzB/K,KAAK4L,YAAcb,I,qCAGG3F,GACtB,OAAQA,EAAMgkB,SACb,KAAKC,WAASlO,MACbnb,KAAKuF,SACL,MACD,KAAK8jB,WAASrO,KACd,KAAKqO,WAASjO,GACbpb,KAAKupB,mBAAmBnkB,GAIpBpF,KAAK+nB,WACR/nB,KAAKwoB,0BACLxoB,KAAKyoB,+BAELzoB,KAAKkpB,MAAMlpB,KAAK6N,QAAQ7N,KAAK4L,cAE9B,MACD,KAAKyd,WAASnO,OACTlb,KAAK+nB,WACR/nB,KAAKc,QAEN,MACD,KAAKuoB,WAASpO,MACRjb,KAAK+nB,WAGT/nB,KAAKkpB,MAAMlpB,KAAK6N,QAAQ7N,KAAK4L,cAI7B5L,KAAKwoB,0BACLxoB,KAAKc,SAPLd,KAAKuF,SAcRH,EAAME,iBACNF,EAAM4jB,oB,uCAO2B,WA8CjC,OA7CKhpB,KAAKgc,aACThc,KAAKgc,YAAa,IAAAH,UACjB,IAAAqB,YAAWld,KAAKwpB,WAChBxpB,KAAKypB,sBAGNzpB,KAAKgc,WAAWkD,cAAgB,kBAAM,EAAKpe,SAE3Cd,KAAKgc,WAAWgC,YAAc,kBAAM,EAAK0L,gBAEzC1pB,KAAKgc,WAAWkC,YAAc,kBAAM,EAAKlC,WAAWmC,WAEpDne,KAAKgc,WAAW0C,WAAa,WAC5B,EAAK1C,WAAWS,cAAc5Z,MAAM8mB,gBAAkB,MACtD,EAAKC,2BACL,EAAK5N,WAAWS,cAActD,UAAY,EAAKA,WAIhDnZ,KAAKgc,WAAW6C,WAAa,kBAAO,EAAKkJ,WAAY,GAErD/nB,KAAK6pB,eAAiB5mB,MAAMC,KAC3BlD,KAAKgc,WAAWS,cAAcha,uBAA9B,UACIzC,KAAK2lB,OAAOkC,QAAQ7W,UADxB,qBAKDhR,KAAK6pB,eAAe1mB,SAAQ,SAACwlB,EAAQ5d,GACpC4d,EAAOxoB,iBAAiB,SAAS,WAChC,IAAMwoB,EAAS,EAAK9a,QAAQ9C,GAExB4d,EAAOlB,WAIX,EAAKyB,MAAMP,GAIX,EAAKH,0BACL,EAAK1nB,gBAKDd,KAAKgc,a,2CAIZ,OAAO,IAAIY,iBAAe,CACzBG,eAAgB,IAAI2I,2BACpBhI,iBAAkB1d,KAAKiN,SAAWjN,KAAK8pB,0BACvCxN,kBAAmB,iCACnBC,aAAa,M,gDAqBd,IAhBA,IAAMwN,EAAkB/pB,KAAKuhB,UAAU,GACjCV,EAAc,CACnBkB,QAASgI,EAAgBhI,QACzBE,QAAS8H,EAAgB9H,SAEpBlB,EAAe,CACpBsB,SAAU0H,EAAgB1H,SAC1BC,SAAUyH,EAAgBzH,UAIrB0H,GAAW,IAAIxE,0BACnBlG,YAAYtf,KAAKqoB,eAAgBxH,EAAaE,GAC9CkJ,YAAY,GACZC,YAAYlqB,KAAKwf,SAEVtJ,EAAI,EAAGA,EAAIlW,KAAKuhB,UAAUve,OAAQkT,IAC1C8T,EAAS/J,qBACR,CACC8B,QAAS/hB,KAAKuhB,UAAUrL,GAAG6L,QAC3BE,QAASjiB,KAAKuhB,UAAUrL,GAAG+L,SAE5B,CACCI,SAAUriB,KAAKuhB,UAAUrL,GAAGmM,SAC5BC,SAAUtiB,KAAKuhB,UAAUrL,GAAGoM,WAK/B,OAAO0H,I,4BAGMrB,GAAoD,IAApCwB,IAAoC,yDAC3DC,EAAWzB,EAAO3W,MAClBqY,EAAW1B,EAAOpB,KAExBvnB,KAAKqoB,eAAe5lB,uBAApB,UACIzC,KAAK2lB,OAAOkC,QAAQ7W,UADxB,0BAEE,GAAGwW,YAAc6C,EACnBrqB,KAAKqoB,eAAe7kB,aAAa,aAAc4mB,GAE/CpqB,KAAK4nB,cAAc5V,MAAQoY,EAC3BpqB,KAAKioB,cAAgBjoB,KAAKsqB,gBAAgB3B,GAC1C3oB,KAAK4L,YAAc5L,KAAKioB,cACxBjoB,KAAK4nB,cAAcK,cAAgBjoB,KAAKioB,cAEpCkC,GACHnqB,KAAK0oB,eAAe,Y,gCAII,WACnB7a,EAAU7N,KAAK6N,QAAQL,QAAO,SAACwE,EAAO2W,EAAQ5d,GACnD,gBAAUiH,EAAV,uBACC,EAAK2T,OAAOkC,QAAQ7W,UADrB,0BAGC2X,EAAOlB,SAAP,WAAsB,EAAK9B,OAAOkC,QAAQJ,UAAa,GAHxD,mCAKmBkB,EAAOpB,KAL1B,8BAOE,IAEGgD,OAC4Blf,IAAjCrL,KAAK2lB,OAAOkC,QAAQ2C,UACa,OAAjCxqB,KAAK2lB,OAAOkC,QAAQ2C,UACpBxqB,KAAK2lB,OAAOkC,QAAQ2C,SAASxnB,OAAS,EACnChD,KAAK2lB,OAAOkC,QAAQ2C,SAHvB,uBAImBxqB,KAAK2lB,OAAOkC,QAAQ7W,UAJvC,6BAMK5B,EAAUpP,KAAK6N,QACnBhF,QAAO,SAAC8f,EAAQ5d,GAChB,OAAOA,IAAU,EAAKkd,iBAEtBza,QAAO,SAACwE,EAAO2W,GACf,gBAAU3W,EAAV,uBAA8B,EAAK2T,OAAOkC,QAAQ7W,UAAlD,6DACmC,EAAK2U,OAAOkC,QAAQ7W,UADvD,wEAEuC,EAAK2U,OAAOkC,QAAQ7W,UAF3D,oEAG8B2X,EAAOpB,KAHrC,2GAMsBgD,EANtB,kCAQE,IAIJ,OAFAvqB,KAAKwpB,UAAL,sBAAgCxpB,KAAK2lB,OAAOkC,QAAQ7W,UAApD,oBAAyEnD,EAAzE,UAEA,sBAAsB7N,KAAK2lB,OAAOkC,QAAQ7W,UAA1C,iBAA4DhR,KAAK6c,KAAjE,aAA0EzN,EAA1E,Y,sCAIuBuZ,GACvB,OAAO3oB,KAAK6N,QAAQL,QACnB,SAACid,EAAgBC,EAAiB3f,GACjC,YAAkBM,IAAXof,EACJ9B,IAAW+B,EACV3f,OACAM,EACDof,SAEJpf,K,oDAMD,IAAMsf,EAAa3qB,KAAK4qB,iBAElBC,GADoB7qB,KAAK4L,aAAe,GACL+e,EACnCG,EAAW9qB,KAAKgc,WAAWS,cAActD,UACzC9S,EAAYrG,KAAK+qB,qBAEnBF,EAAeC,EAClB9qB,KAAKgc,WAAWS,cAActD,UAAY0R,EAChCA,EAAeF,EAAaG,EAAWzkB,IACjDrG,KAAKgc,WAAWS,cAActD,UAAYnX,KAAKmiB,IAC9C,EACA0G,EAAexkB,EAAYskB,M,kDAO7B,IAAMA,EAAa3qB,KAAK4qB,iBAClBI,EAAQhrB,KAAK6N,QAAQ7K,OACrBioB,EAAcjpB,KAAKkpB,IAAIF,EAAQL,EAAY3qB,KAAK+qB,sBAIhDI,EAHwBH,EAAQL,EAGIM,EAGpCG,EAAuBprB,KAAKioB,cAI5BoD,EAAeJ,EAAc,EACnCjrB,KAAKmZ,UAAYnZ,KAAKsrB,wBACrBF,EACAC,EACAF,GAEDnrB,KAAKwf,QAAUxf,KAAKurB,yBACnBH,EACAC,EACAF,GAGDnrB,KAAKwrB,4BAA4BL,GACjCnrB,KAAKiN,SAASid,YAAYlqB,KAAKwf,W,kDASI2L,GACnC,IAAMR,EAAa3qB,KAAK4qB,iBAClBvkB,EAAYrG,KAAK+qB,qBACjBrK,GACExgB,OAAOwG,WACNxG,OAAOygB,aAEV8K,EAAezrB,KAAK0rB,6BAEpBC,EAAoB3rB,KAAKooB,YAAY5mB,IAAMiqB,EAC3CG,EACLlL,EAAsB1gB,KAAKooB,YAAYlG,OAASuJ,EAE3CI,EAAiB7pB,KAAK8pB,IAAI9rB,KAAKwf,SAK/BuM,EAJmB/pB,KAAKkpB,IAC7BlrB,KAAK6N,QAAQ7K,OAAS2nB,EACtBtkB,GAGmBwlB,EAAiB7rB,KAAKooB,YAAYnf,OAElD8iB,EAAoBH,EACvB5rB,KAAKgsB,eAAeD,EAAmBH,GAC7BC,EAAiBF,EAC3B3rB,KAAKisB,iBAAiBJ,EAAgBF,EAAmBR,GAEzDnrB,KAAKgc,WAAWS,cAAc5Z,MAAM8mB,gBAAkB3pB,KAAKksB,4B,qCAM5DH,EACAH,GAGA,IAAMO,EAAwBnqB,KAAKC,MAClC8pB,EAAoBH,GAKrB5rB,KAAKmZ,WAAagT,EAClBnsB,KAAKwf,SAAW2M,EAChBnsB,KAAKgc,WAAWS,cAAc5Z,MAAM8mB,gBAAkB3pB,KAAKksB,0BAKvDlsB,KAAKooB,YAAY5mB,IAAMxB,KAAKmZ,WAAa,IAC5CnZ,KAAKmZ,UAAY,EACjBnZ,KAAKwf,QAAU,EACfxf,KAAKgc,WAAWS,cAAc5Z,MAAM8mB,gBAAkB,oB,uCAMvDkC,EACAF,EACAR,GAGA,IAAMiB,EAAwBpqB,KAAKC,MAClC4pB,EAAiBF,GAYlB,GAPA3rB,KAAKmZ,WAAaiT,EAClBpsB,KAAKwf,SAAW4M,EAChBpsB,KAAKgc,WAAWS,cAAc5Z,MAAM8mB,gBAAkB3pB,KAAKksB,0BAKvDlsB,KAAKooB,YAAY5mB,IAAMxB,KAAKmZ,WAAagS,EAI5C,OAHAnrB,KAAKmZ,UAAYgS,EACjBnrB,KAAKwf,QAAU,OACfxf,KAAKgc,WAAWS,cAAc5Z,MAAM8mB,gBAAkB,iB,gDAOvD,IAAMgB,EAAa3qB,KAAK4qB,iBAClByB,GAA0B1B,EAAa3qB,KAAKooB,YAAYnf,QAAU,EAClEgZ,EACLjgB,KAAK8pB,IAAI9rB,KAAKwf,SAAW6M,EAAyB1B,EAAa,EAChE,oBAAc1I,EAAd,Y,8CAWAgG,EACAoD,EACAF,GAEA,IAAMR,EAAa3qB,KAAK4qB,iBAQlB0B,EAP4B3B,EAAa1C,EAQlBoD,EAPJV,EAAa,EAQtC,OAAO3oB,KAAKkpB,IAAIlpB,KAAKmiB,IAAI,EAAGmI,GAAwBnB,K,iDAWpD,IAAM1K,EAAczgB,KAAKgc,WAAWK,eAAe7V,wBAC7Cka,EACExgB,OAAOwG,WAGT+kB,GAFGvrB,OAAOygB,YAEK3gB,KAAK0rB,8BACtBnM,EAAU,EAOdA,IAAY,EAGZ,IAAMgD,EAAe,GAAK9B,EAAY9Z,KAAO4Y,GACvCiD,EACL/B,EAAYha,MACZ8Y,EACAmB,EAIG6B,EAAe,EAClBhD,GAAWgD,EAAekJ,EAChBjJ,EAAgB,IAC1BjD,GAAWiD,EAAgBiJ,GAI5BzrB,KAAKiN,SAASgd,YAAY1K,GAC1Bvf,KAAKgc,WAAW8B,mB,+CAShBmK,EACAoD,EACAF,GAEA,IAAMR,EAAa3qB,KAAK4qB,iBAClByB,GAA0B1B,EAAa3qB,KAAKooB,YAAYnf,QAAU,EAClE5C,EAAYrG,KAAK+qB,qBACjBwB,EAAsBvqB,KAAKwqB,MAAMnmB,EAAYskB,GAC7CK,EAAQhrB,KAAK6N,QAAQ7K,OA8B3B,OAAmC,GA3BZ,IAAnBhD,KAAKmZ,UACmB8O,EAAgB0C,EACjC3qB,KAAKmZ,YAAcgS,GAEAlD,GADD+C,EAAQuB,IAaZ5B,GAPvBA,GAAeK,EAAQL,EAAatkB,GAAaskB,GAYvBU,EAAeV,EAAa,GAMjB0B,I,gDAGN,WACjCrsB,KAAK6pB,eAAe1mB,SAAQ,SAACwlB,IAC5B,IAAAplB,aAAYolB,EAAQ,EAAKhD,OAAOkC,QAAQjY,SACxC,IAAArM,aAAYolB,EAAQ,EAAKhD,OAAOkC,QAAQC,iBAGzC,IAAAplB,UACC1C,KAAK6pB,eAAe7pB,KAAKioB,eACzBjoB,KAAK2lB,OAAOkC,QAAQjY,QAGjB5P,KAAKioB,gBAAkBjoB,KAAK4L,cAC/B,IAAAlJ,UACC1C,KAAK6pB,eAAe7pB,KAAK4L,aACzB5L,KAAK2lB,OAAOkC,QAAQC,e,mDAMtB,IAAMa,EAAS3oB,KAAK6pB,eAAe,GAG7B4C,GAAU,IAAAhrB,eAAa,IAAAC,QAAOinB,EAAQ,iBAE5C,OAAO3mB,KAAKC,MAAMwqB,EAAU,K,2CAK5B,OAAO,IAAAhrB,eAAa,IAAAC,QAAO1B,KAAKgc,WAAWS,cAAgB,iB,uCAI3D,OAAOzc,KAAK6pB,eAAe,GAAI6C,e,qCAQ3B1sB,KAAK+nB,UACR/nB,KAAKmZ,UAAY,EAEjBnZ,KAAKiN,SAASgd,YAAY,K,qCAOLtP,GACtB,IAAMvV,EAAQ5C,SAASmqB,YAAY,cACnCvnB,EAAMwnB,UAAUjS,GAAW,GAAO,GAClC3a,KAAK4nB,cAAc/M,cAAczV,K,0CAIjC,GAAIpF,KAAK4nB,cAAcK,eAAiB,EACvC,OAAOjoB,KAAK4nB,cAAcK,cAK3B,IAAM4E,EAAW7sB,KAAK4nB,cAAcnnB,cACnC,oBAGD,OAAKosB,EAIE5pB,MAAMC,KAAK2pB,EAAS/qB,cAAc8G,UAAUpI,QAAQqsB,GAHnD,M,4GClxBH,SACNhtB,EACAgF,GAGO,IAFPioB,EAEO,uDAFY,EACnBxO,IACO,yDACHyO,GAAS,EACPC,EAAW,SAAXA,EAAY5nB,GACjB2nB,GAAS,EACLzO,GACHze,EAAQmG,oBAAoBinB,EAAkCD,GAE/DnoB,MAG8B,IAA3BooB,EACH5lB,YAAW,WACVxC,MACEioB,IAEHjtB,EAAQM,iBAAiB8sB,EAAwBD,GAE7CF,GACHzlB,YAAW,WACL0lB,IACJ,IAAAhS,qBAAoBlb,EAASotB,KAE5BH,KAhCN,cAGMG,GAAyB,EAF/B,QAE+BC,8B,0FCHxB,WACN,IAAMrtB,EAAU2C,SAASkW,cAAc,KACjCyU,EAAc,CACnBC,iBAAkB,sBAClBhmB,WAAY,iBAGb,IAAK,IAAMA,KAAc+lB,EACxB,QAAkC9hB,IAA9BxL,EAAQgD,MAAMuE,GACjB,OAAO+lB,EAAY/lB,GAIrB,OAAO,I,4ECbD,SAAsBimB,GAC5B,OAAOA,EAAIjd,QACV,0DACA,Q,4FCIK,SACNvQ,EACAytB,GAEA,OAAOA,EAAiBrX,MAAK,SAACsX,GAC7B,IAAMC,EAAe3tB,EAAQ2B,IAAM+rB,EAAoB/rB,IACjDisB,EAAe5tB,EAAQqiB,OAASqL,EAAoBrL,OACpDwL,EAAc7tB,EAAQ8G,KAAO4mB,EAAoB5mB,KACjDgnB,EAAe9tB,EAAQ4G,MAAQ8mB,EAAoB9mB,MAEzD,OAAO+mB,GAAgBC,GAAgBC,GAAeC,O,6FCVjD,SACN9tB,EACAytB,GAEA,OAAOA,EAAiBrX,MAAK,SAAC2X,GAC7B,IAAMC,EAAehuB,EAAQqiB,OAAS0L,EAAgBpsB,IAChDssB,EAAejuB,EAAQ2B,IAAMosB,EAAgB1L,OAC7C6L,EAAcluB,EAAQ4G,MAAQmnB,EAAgBjnB,KAC9CqnB,EAAenuB,EAAQ8G,KAAOinB,EAAgBnnB,MAEpD,OAAOonB,GAAgBC,GAAgBC,GAAeC,O,yBCjBgB,4BAA+D,SAASC,GAAgB,IAAIzhB,EAAE0J,EAAE5F,EAAE4d,EAAEC,GAAmCjY,EAAE,+BAAlC1J,EAAEhK,SAASkW,cAAc,QAAyC7V,MAAMurB,SAASlY,EAAE1J,EAAE3J,MAAMurB,WAAWlY,GAAG,SAASF,EAAEiY,EAAEzhB,EAAE0J,GAAGnR,QAAQC,IAAIipB,EAAE3e,SAAS,IAAIgB,EAAE,KAAK4d,EAAE,iBAAiB,IAAI,IAAI1hB,EAAEhM,QAAQ,OAAO8P,EAAE,IAAI4d,EAAE,qBAAqB1hB,EAAEA,EAAE4D,QAAQ,WAAW,IAAI,OAAOE,EAAE,CAAC,IAAI,IAAI6d,EAAE,GAAGnY,EAAExJ,EAAE6hB,MAAM,MAAM3K,EAAE,EAAEA,EAAE1N,EAAEhT,OAAO0gB,IAAI,CAAC,IAAI5a,EAAEkN,EAAE0N,GAAG2K,MAAM,KAAKtL,EAAEtH,OAAO3S,EAAE,IAAIuH,EAAEoL,OAAO3S,EAAE,IAAI,IAAIia,IAAIA,GAAG,KAAK,IAAI1S,IAAIA,GAAG,KAAK8d,GAAGpL,EAAE,IAAI1S,EAAEqT,EAAE1N,EAAEhT,OAAO,IAAImrB,GAAG,MAAM3hB,EAAE2hB,EAAE,IAAIG,EAAEL,EAAEltB,aAAa,qBAAqB,GAAGutB,EAAG9rB,SAASoX,eAAe0U,GAAG9qB,aAAa,gBAAgB0qB,GAAG1rB,SAAS/B,cAAc,IAAI6tB,EAAE,cAAc9qB,aAAa,SAASgJ,OAAO,CAAC,IAAI+hB,EAAE,aAAavsB,KAAKuO,SAASxG,SAAS,IAAIrJ,UAAU,GAAG6a,EAAE/Y,SAASgsB,gBAAgB,6BAA6B,OAAO,GAAGjT,EAAE/X,aAAa,QAAQ,KAAK+X,EAAE/X,aAAa,SAAS,KAAK+X,EAAE/X,aAAa,oBAAoB+qB,GAAGhT,EAAEkT,eAAe,gCAAgC,cAAc,gCAAgCvY,EAAE,CAAC+X,EAAEltB,aAAa,UAAUwa,EAAE/X,aAAa,QAAQyqB,EAAEltB,aAAa,UAAUktB,EAAEzqB,aAAa,QAAQ,IAAIyqB,EAAEprB,MAAM+D,MAAM,OAAOqnB,EAAEprB,MAAMoG,OAAO,OAAOsS,EAAE1Y,MAAM+D,MAAM,OAAO2U,EAAE1Y,MAAMoG,OAAO,OAAO,IAAIylB,EAAElsB,SAASgsB,gBAAgB,6BAA6B,SAASG,EAAEnsB,SAASgsB,gBAAgB,6BAA6B,aAAahrB,aAAa,KAAK+qB,GAAGI,EAAEnrB,aAAa,gBAAgB0qB,IAAIU,EAAEpsB,SAASgsB,gBAAgB,6BAA6B,YAAYhrB,aAAa,SAASgJ,GAAG,IAAIqiB,EAAErsB,SAASgsB,gBAAgB,6BAA6B,iBAAiBK,EAAErrB,aAAa,YAAY,QAAQ+qB,EAAE,KAAKM,EAAErrB,aAAa,QAAQ,QAAQqrB,EAAErrB,aAAa,SAAS,QAAQqrB,EAAEvR,YAAY2Q,EAAEa,WAAU,IAAKvT,EAAE+B,YAAYuR,GAAGF,EAAErR,YAAYsR,GAAGF,EAAEpR,YAAYqR,GAAGpT,EAAE+B,YAAYoR,GAAGT,EAAE9T,WAAW4U,aAAaxT,EAAE0S,OAAO,CAAC,IAAIU,EAAEC,GAAGD,EAAEnsB,SAASgsB,gBAAgB,6BAA6B,aAAahrB,aAAa,KAAK+qB,GAAGI,EAAEnrB,aAAa,gBAAgB0qB,IAAIU,EAAEpsB,SAASgsB,gBAAgB,6BAA6B,YAAYhrB,aAAa,SAASgJ,GAAGmiB,EAAErR,YAAYsR,GAAGrT,EAAE+B,YAAYqR,GAAGnsB,SAASiB,KAAK6Z,YAAY/B,GAAG0S,EAAEzqB,aAAa,oBAAoB+qB,GAAGlnB,YAAW,WAAW4mB,EAAEprB,MAAMurB,SAAS,QAAQG,EAAE,MAAK,KAAK,SAAS7K,EAAEuK,EAAEzhB,EAAE0J,GAAGA,OAAE,IAASA,EAAEA,EAAEiY,OAAE,IAASF,EAAEprB,MAAMmsB,eAAef,EAAEprB,MAAMmsB,eAAe,WAAWxiB,EAAE,IAAI0J,EAAE+X,EAAEprB,MAAMurB,SAAS,WAAW5hB,EAAE,KAAK,EAAEtM,OAAO+uB,UAAUC,UAAU1uB,QAAQ,QAAQwV,EAAEiY,EAAEzhB,GAAE,GAAIwJ,EAAEiY,EAAEzhB,GAAG,SAAS1D,EAAEmlB,EAAE/X,EAAE5F,GAAG,IAAI2d,EAAE,OAAOlpB,QAAQ+I,MAAM,qBAAoB,EAAG,IAAItB,EAAEhK,SAASgG,iBAAiBylB,GAAG,IAAIhrB,MAAMsS,UAAUpS,QAAQiU,KAAK5K,GAAE,SAASyhB,GAAG,IAAIzhB,EAAEyhB,EAAEltB,aAAa,cAAcmV,EAAE1J,EAAEkX,EAAEuK,EAAEzhB,EAAE8D,GAAGvL,QAAQ+I,MAAM,0FAA0FmgB,MAAKnlB,EAAEqmB,cAAczL,EAAE,oBAAoB0L,SAAS9e,EAAE8e,OAAOlB,EAAEplB,EAAEwH,EAAE+e,GAAGC,SAAS,SAASrB,GAAG,OAAOA,IAAIjb,OAAOib,IAAIA,EAAEsB,OAAOtB,EAAEA,EAAEsB,MAAMvvB,KAAKwvB,MAAK,WAAWtB,EAAEiB,cAAcnvB,KAAKsQ,EAAEtQ,MAAMyvB,KAAK,cAAcxB,QAAOA,EAAEqB,SAASxmB,IAAh4F,UAAC,CAAC,IAAF,mB,eCAxE4mB,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,KACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRC,EAAOC,QAAU,EAAjBD,e,cCdAD,EAAQ,MACRC,EAAOC,QAAU,EAAjBD,qB,SCDAA,EAAOC,QAAU,SAAUC,GACzB,GAAiB,mBAANA,EAAkB,MAAMC,UAAUD,EAAK,uBAClD,OAAOA,I,eCFT,IAAIE,EAAWL,EAAQ,MACvBC,EAAOC,QAAU,SAAUC,GACzB,IAAKE,EAASF,GAAK,MAAMC,UAAUD,EAAK,sBACxC,OAAOA,I,eCDT,IAAIG,EAAYN,EAAQ,MACpBO,EAAWP,EAAQ,MACnBQ,EAAkBR,EAAQ,MAC9BC,EAAOC,QAAU,SAAUO,GACzB,OAAO,SAAUC,EAAOxlB,EAAIylB,GAC1B,IAGIre,EAHAse,EAAIN,EAAUI,GACdptB,EAASitB,EAASK,EAAEttB,QACpB+H,EAAQmlB,EAAgBG,EAAWrtB,GAIvC,GAAImtB,GAAevlB,GAAMA,GAAI,KAAO5H,EAAS+H,GAG3C,IAFAiH,EAAQse,EAAEvlB,OAEGiH,EAAO,OAAO,OAEtB,KAAMhP,EAAS+H,EAAOA,IAAS,IAAIolB,GAAeplB,KAASulB,IAC5DA,EAAEvlB,KAAWH,EAAI,OAAOulB,GAAeplB,GAAS,EACpD,OAAQolB,IAAgB,K,eCnB9B,IAAII,EAAYb,EAAQ,MACpBK,EAAWL,EAAQ,MACnBc,EAASd,EAAQ,MACjBe,EAAa,GAAGjP,MAChBkP,EAAY,GAEZC,EAAY,SAAUC,EAAGC,EAAK1Z,GAChC,KAAM0Z,KAAOH,GAAY,CACvB,IAAK,IAAIxC,EAAI,GAAIhY,EAAI,EAAGA,EAAI2a,EAAK3a,IAAKgY,EAAEhY,GAAK,KAAOA,EAAI,IAExDwa,EAAUG,GAAOzY,SAAS,MAAO,gBAAkB8V,EAAE4C,KAAK,KAAO,KACjE,OAAOJ,EAAUG,GAAKD,EAAGzZ,IAG7BwY,EAAOC,QAAUxX,SAAS2H,MAAQ,SAAcgR,GAC9C,IAAI1B,EAAKkB,EAAUvwB,MACfgxB,EAAWP,EAAWrZ,KAAK6Z,UAAW,GACtCC,EAAQ,SAARA,IACF,IAAI/Z,EAAO6Z,EAAStd,OAAO+c,EAAWrZ,KAAK6Z,YAC3C,OAAOjxB,gBAAgBkxB,EAAQP,EAAUtB,EAAIlY,EAAKnU,OAAQmU,GAAQqZ,EAAOnB,EAAIlY,EAAM4Z,IAGrF,OADIhB,EAASV,EAAG9Z,aAAY2b,EAAM3b,UAAY8Z,EAAG9Z,WAC1C2b,I,SCvBT,IAAInnB,EAAW,GAAGA,SAElB4lB,EAAOC,QAAU,SAAUC,GACzB,OAAO9lB,EAASqN,KAAKyY,GAAIrO,MAAM,GAAI,K,SCHrC,IAAI2P,EAAOxB,EAAOC,QAAU,CAAEwB,QAAS,UACrB,iBAAPC,MAAiBA,IAAMF,I,cCAlC,IAAIZ,EAAYb,EAAQ,MACxBC,EAAOC,QAAU,SAAUP,EAAI0B,EAAM/tB,GAEnC,GADAutB,EAAUlB,QACGhkB,IAAT0lB,EAAoB,OAAO1B,EAC/B,OAAQrsB,GACN,KAAK,EAAG,OAAO,SAAUgT,GACvB,OAAOqZ,EAAGjY,KAAK2Z,EAAM/a,IAEvB,KAAK,EAAG,OAAO,SAAUA,EAAG2Y,GAC1B,OAAOU,EAAGjY,KAAK2Z,EAAM/a,EAAG2Y,IAE1B,KAAK,EAAG,OAAO,SAAU3Y,EAAG2Y,EAAGte,GAC7B,OAAOgf,EAAGjY,KAAK2Z,EAAM/a,EAAG2Y,EAAGte,IAG/B,OAAO,WACL,OAAOgf,EAAG3e,MAAMqgB,EAAME,c,QChB1BtB,EAAOC,QAAU,SAAUC,GACzB,GAAUxkB,MAANwkB,EAAiB,MAAMC,UAAU,yBAA2BD,GAChE,OAAOA,I,eCFTF,EAAOC,SAAWF,EAAQ,KAARA,EAAoB,WACpC,OAA+E,GAAxE1c,OAAOwE,eAAe,GAAI,IAAK,CAAEzE,IAAK,WAAc,OAAO,KAAQiD,M,eCF5E,IAAI+Z,EAAWL,EAAQ,MACnBltB,EAAWktB,iBAEX4B,EAAKvB,EAASvtB,IAAautB,EAASvtB,EAASkW,eACjDiX,EAAOC,QAAU,SAAUC,GACzB,OAAOyB,EAAK9uB,EAASkW,cAAcmX,GAAM,K,SCJ3CF,EAAOC,QACL,gGACAvB,MAAM,M,eCHR,IAAIkD,EAAS7B,EAAQ,MACjByB,EAAOzB,EAAQ,MACfjqB,EAAOiqB,EAAQ,MACf8B,EAAW9B,EAAQ,MACnB+B,EAAM/B,EAAQ,KAGdgC,EAAU,SAAVA,EAAoBjc,EAAMrE,EAAMugB,GAClC,IAQI1f,EAAK2f,EAAKC,EAAKC,EARfC,EAAYtc,EAAOic,EAAQd,EAC3BoB,EAAYvc,EAAOic,EAAQO,EAE3BC,EAAWzc,EAAOic,EAAQS,EAC1BC,EAAU3c,EAAOic,EAAQW,EACzBrxB,EAASgxB,EAAYT,EAHT9b,EAAOic,EAAQY,EAGef,EAAOngB,KAAUmgB,EAAOngB,GAAQ,KAAOmgB,EAAOngB,IAAS,IAAjB,UAChFwe,EAAUoC,EAAYb,EAAOA,EAAK/f,KAAU+f,EAAK/f,GAAQ,IACzDmhB,EAAW3C,EAAO,YAAgBA,EAAO,UAAc,IAG3D,IAAK3d,KADD+f,IAAWL,EAASvgB,GACZugB,EAIVE,IAFAD,GAAOG,GAAa/wB,QAA0BqK,IAAhBrK,EAAOiR,IAExBjR,EAAS2wB,GAAQ1f,GAE9B6f,EAAMM,GAAWR,EAAMH,EAAII,EAAKN,GAAUW,GAA0B,mBAAPL,EAAoBJ,EAAIrZ,SAAShB,KAAMya,GAAOA,EAEvG7wB,GAAQwwB,EAASxwB,EAAQiR,EAAK4f,EAAKpc,EAAOic,EAAQc,GAElD5C,EAAQ3d,IAAQ4f,GAAKpsB,EAAKmqB,EAAS3d,EAAK6f,GACxCI,GAAYK,EAAStgB,IAAQ4f,IAAKU,EAAStgB,GAAO4f,IAG1DN,EAAOJ,KAAOA,EAEdO,EAAQd,EAAI,EACZc,EAAQO,EAAI,EACZP,EAAQY,EAAI,EACZZ,EAAQS,EAAI,EACZT,EAAQW,EAAI,GACZX,EAAQe,EAAI,GACZf,EAAQc,EAAI,GACZd,EAAQgB,EAAI,IACZ/C,EAAOC,QAAU8B,G,SC1CjB/B,EAAOC,QAAU,SAAU+C,GACzB,IACE,QAASA,IACT,MAAOnmB,GACP,OAAO,K,eCJXmjB,EAAOC,QAAUF,EAAQ,KAARA,CAAqB,4BAA6BtX,SAASrO,W,SCC5E,IAAIwnB,EAAS5B,EAAOC,QAA2B,oBAAV1vB,QAAyBA,OAAO8B,MAAQA,KACzE9B,OAAwB,oBAAR0yB,MAAuBA,KAAK5wB,MAAQA,KAAO4wB,KAE3Dxa,SAAS,cAATA,GACc,iBAAPya,MAAiBA,IAAMtB,I,SCLlC,IAAItc,EAAiB,GAAGA,eACxB0a,EAAOC,QAAU,SAAUC,EAAI5d,GAC7B,OAAOgD,EAAemC,KAAKyY,EAAI5d,K,eCFjC,IAAI6gB,EAAKpD,EAAQ,MACbqD,EAAarD,EAAQ,MACzBC,EAAOC,QAAUF,EAAQ,MAAoB,SAAUsD,EAAQ/gB,EAAKD,GAClE,OAAO8gB,EAAGnf,EAAEqf,EAAQ/gB,EAAK8gB,EAAW,EAAG/gB,KACrC,SAAUghB,EAAQ/gB,EAAKD,GAEzB,OADAghB,EAAO/gB,GAAOD,EACPghB,I,eCNT,IAAIxwB,EAAWktB,iBACfC,EAAOC,QAAUptB,GAAYA,EAASwK,iB,eCDtC2iB,EAAOC,SAAWF,EAAQ,QAAsBA,EAAQ,KAARA,EAAoB,WAClE,OAA4G,GAArG1c,OAAOwE,eAAekY,EAAQ,KAARA,CAAyB,OAAQ,IAAK,CAAE3c,IAAK,WAAc,OAAO,KAAQiD,M,SCAzG2Z,EAAOC,QAAU,SAAUP,EAAIlY,EAAM4Z,GACnC,IAAIkC,OAAc5nB,IAAT0lB,EACT,OAAQ5Z,EAAKnU,QACX,KAAK,EAAG,OAAOiwB,EAAK5D,IACAA,EAAGjY,KAAK2Z,GAC5B,KAAK,EAAG,OAAOkC,EAAK5D,EAAGlY,EAAK,IACRkY,EAAGjY,KAAK2Z,EAAM5Z,EAAK,IACvC,KAAK,EAAG,OAAO8b,EAAK5D,EAAGlY,EAAK,GAAIA,EAAK,IACjBkY,EAAGjY,KAAK2Z,EAAM5Z,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAO8b,EAAK5D,EAAGlY,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1BkY,EAAGjY,KAAK2Z,EAAM5Z,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACzD,KAAK,EAAG,OAAO8b,EAAK5D,EAAGlY,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACnCkY,EAAGjY,KAAK2Z,EAAM5Z,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAClE,OAAOkY,EAAG3e,MAAMqgB,EAAM5Z,K,cCb1B,IAAI+b,EAAMxD,EAAQ,MAElBC,EAAOC,QAAU5c,OAAO,KAAKmgB,qBAAqB,GAAKngB,OAAS,SAAU6c,GACxE,MAAkB,UAAXqD,EAAIrD,GAAkBA,EAAGxB,MAAM,IAAMrb,OAAO6c,K,8OCJrDF,EAAOC,QAAU,SAAUC,GACzB,MAAqB,WAAd,EAAOA,GAAyB,OAAPA,EAA4B,mBAAPA,I,eCAvD,IAAI1f,EAASuf,EAAQ,MACjB0D,EAAa1D,EAAQ,MACrB2D,EAAiB3D,EAAQ,MACzB4D,EAAoB,GAGxB5D,EAAQ,KAARA,CAAmB4D,EAAmB5D,EAAQ,KAARA,CAAkB,aAAa,WAAc,OAAO1vB,QAE1F2vB,EAAOC,QAAU,SAAU2D,EAAaC,EAAMC,GAC5CF,EAAYhe,UAAYpF,EAAOmjB,EAAmB,CAAEG,KAAML,EAAW,EAAGK,KACxEJ,EAAeE,EAAaC,EAAO,e,SCXrC7D,EAAOC,SAAU,G,eCEjB,IAAI8D,EAAchE,EAAQ,MACtBiE,EAAUjE,EAAQ,MAClBkE,EAAOlE,EAAQ,MACfmE,EAAMnE,EAAQ,MACdoE,EAAWpE,EAAQ,MACnBqE,EAAUrE,EAAQ,KAClBsE,EAAUhhB,OAAOihB,OAGrBtE,EAAOC,SAAWoE,GAAWtE,EAAQ,KAARA,EAAoB,WAC/C,IAAIwE,EAAI,GACJ7B,EAAI,GAEJC,EAAI6B,SACJC,EAAI,uBAGR,OAFAF,EAAE5B,GAAK,EACP8B,EAAE/F,MAAM,IAAIlrB,SAAQ,SAAUkxB,GAAKhC,EAAEgC,GAAKA,KACd,GAArBL,EAAQ,GAAIE,GAAG5B,IAAWtf,OAAOC,KAAK+gB,EAAQ,GAAI3B,IAAIvB,KAAK,KAAOsD,KACtE,SAAgBpzB,EAAQ2wB,GAM3B,IALA,IAAI2C,EAAIR,EAAS9yB,GACbuzB,EAAOtD,UAAUjuB,OACjB+H,EAAQ,EACRypB,EAAaZ,EAAKjgB,EAClB8gB,EAASZ,EAAIlgB,EACV4gB,EAAOxpB,GAMZ,IALA,IAIIkH,EAJAqgB,EAAIyB,EAAQ9C,UAAUlmB,MACtBkI,EAAOuhB,EAAab,EAAQrB,GAAG5e,OAAO8gB,EAAWlC,IAAMqB,EAAQrB,GAC/DtvB,EAASiQ,EAAKjQ,OACd0xB,EAAI,EAED1xB,EAAS0xB,GACdziB,EAAMgB,EAAKyhB,KACNhB,IAAee,EAAOrd,KAAKkb,EAAGrgB,KAAMqiB,EAAEriB,GAAOqgB,EAAErgB,IAEtD,OAAOqiB,GACPN,G,eCpCJ,IAAIW,EAAWjF,EAAQ,MACnBkF,EAAMlF,EAAQ,MACdmF,EAAcnF,EAAQ,MACtBoF,EAAWpF,EAAQ,KAARA,CAAyB,YACpCqF,EAAQ,aAIRC,EAAa,WAEf,IAIIC,EAJA7oB,EAASsjB,EAAQ,KAARA,CAAyB,UAClCxZ,EAAI2e,EAAY7xB,OAcpB,IAVAoJ,EAAOvJ,MAAMqyB,QAAU,OACvBxF,oBAA+BtjB,GAC/BA,EAAOE,IAAM,eAGb2oB,EAAiB7oB,EAAO+oB,cAAc3yB,UACvBkH,OACfurB,EAAeG,MAAMC,uCACrBJ,EAAen0B,QACfk0B,EAAaC,EAAerE,EACrB1a,YAAY8e,EAAU,UAAYH,EAAY3e,IACrD,OAAO8e,KAGTrF,EAAOC,QAAU5c,OAAO7C,QAAU,SAAgBmgB,EAAGgF,GACnD,IAAI7K,EAQJ,OAPU,OAAN6F,GACFyE,EAAK,UAAcJ,EAASrE,GAC5B7F,EAAS,IAAIsK,EACbA,EAAK,UAAc,KAEnBtK,EAAOqK,GAAYxE,GACd7F,EAASuK,SACM3pB,IAAfiqB,EAA2B7K,EAASmK,EAAInK,EAAQ6K,K,eCvCzD,IAAIX,EAAWjF,EAAQ,MACnB6F,EAAiB7F,EAAQ,MACzB8F,EAAc9F,EAAQ,MACtBoD,EAAK9f,OAAOwE,eAEhBoY,EAAQjc,EAAI+b,EAAQ,MAAoB1c,OAAOwE,eAAiB,SAAwB8Y,EAAG6B,EAAGsD,GAI5F,GAHAd,EAASrE,GACT6B,EAAIqD,EAAYrD,GAAG,GACnBwC,EAASc,GACLF,EAAgB,IAClB,OAAOzC,EAAGxC,EAAG6B,EAAGsD,GAChB,MAAOjpB,IACT,GAAI,QAASipB,GAAc,QAASA,EAAY,MAAM3F,UAAU,4BAEhE,MADI,UAAW2F,IAAYnF,EAAE6B,GAAKsD,EAAWzjB,OACtCse,I,eCdT,IAAIwC,EAAKpD,EAAQ,MACbiF,EAAWjF,EAAQ,MACnBiE,EAAUjE,EAAQ,MAEtBC,EAAOC,QAAUF,EAAQ,MAAoB1c,OAAO0iB,iBAAmB,SAA0BpF,EAAGgF,GAClGX,EAASrE,GAKT,IAJA,IAGI6B,EAHAlf,EAAO0gB,EAAQ2B,GACftyB,EAASiQ,EAAKjQ,OACdkT,EAAI,EAEDlT,EAASkT,GAAG4c,EAAGnf,EAAE2c,EAAG6B,EAAIlf,EAAKiD,KAAMof,EAAWnD,IACrD,OAAO7B,I,eCXT,IAAIuD,EAAMnE,EAAQ,MACdqD,EAAarD,EAAQ,MACrBM,EAAYN,EAAQ,MACpB8F,EAAc9F,EAAQ,MACtB5c,EAAM4c,EAAQ,MACd6F,EAAiB7F,EAAQ,MACzBiG,EAAO3iB,OAAO4iB,yBAElBhG,EAAQjc,EAAI+b,EAAQ,MAAoBiG,EAAO,SAAkCrF,EAAG6B,GAGlF,GAFA7B,EAAIN,EAAUM,GACd6B,EAAIqD,EAAYrD,GAAG,GACfoD,EAAgB,IAClB,OAAOI,EAAKrF,EAAG6B,GACf,MAAO3lB,IACT,GAAIsG,EAAIwd,EAAG6B,GAAI,OAAOY,GAAYc,EAAIlgB,EAAEyD,KAAKkZ,EAAG6B,GAAI7B,EAAE6B,M,eCbxD,IAAI0D,EAAQnG,EAAQ,MAChBoG,EAAapG,eAAmC,SAAU,aAE9DE,EAAQjc,EAAIX,OAAO+iB,qBAAuB,SAA6BzF,GACrE,OAAOuF,EAAMvF,EAAGwF,K,aCLlBlG,EAAQjc,EAAIX,OAAOgjB,uB,eCCnB,IAAIljB,EAAM4c,EAAQ,MACdoE,EAAWpE,EAAQ,MACnBoF,EAAWpF,EAAQ,KAARA,CAAyB,YACpCuG,EAAcjjB,OAAOuC,UAEzBoa,EAAOC,QAAU5c,OAAOsC,gBAAkB,SAAUgb,GAElD,OADAA,EAAIwD,EAASxD,GACTxd,EAAIwd,EAAGwE,GAAkBxE,EAAEwE,GACH,mBAAjBxE,EAAEzd,aAA6Byd,aAAaA,EAAEzd,YAChDyd,EAAEzd,YAAY0C,UACd+a,aAAatd,OAASijB,EAAc,O,eCX/C,IAAInjB,EAAM4c,EAAQ,MACdM,EAAYN,EAAQ,MACpBwG,EAAexG,EAAQ,KAARA,EAA6B,GAC5CoF,EAAWpF,EAAQ,KAARA,CAAyB,YAExCC,EAAOC,QAAU,SAAUoD,EAAQmD,GACjC,IAGIlkB,EAHAqe,EAAIN,EAAUgD,GACd9c,EAAI,EACJuU,EAAS,GAEb,IAAKxY,KAAOqe,EAAOre,GAAO6iB,GAAUhiB,EAAIwd,EAAGre,IAAQwY,EAAOld,KAAK0E,GAE/D,KAAOkkB,EAAMnzB,OAASkT,GAAOpD,EAAIwd,EAAGre,EAAMkkB,EAAMjgB,SAC7CggB,EAAazL,EAAQxY,IAAQwY,EAAOld,KAAK0E,IAE5C,OAAOwY,I,eCdT,IAAIoL,EAAQnG,EAAQ,MAChBmF,EAAcnF,EAAQ,MAE1BC,EAAOC,QAAU5c,OAAOC,MAAQ,SAAcqd,GAC5C,OAAOuF,EAAMvF,EAAGuE,K,aCLlBjF,EAAQjc,EAAI,GAAGwf,sB,eCCf,IAAIiD,EAAO1G,EAAQ,MACfkE,EAAOlE,EAAQ,MACfiF,EAAWjF,EAAQ,MACnB2G,EAAU3G,gBACdC,EAAOC,QAAUyG,GAAWA,EAAQC,SAAW,SAAiBzG,GAC9D,IAAI5c,EAAOmjB,EAAKziB,EAAEghB,EAAS9E,IACvB2E,EAAaZ,EAAKjgB,EACtB,OAAO6gB,EAAavhB,EAAKS,OAAO8gB,EAAW3E,IAAO5c,I,SCRpD0c,EAAOC,QAAU,SAAU2G,EAAQvkB,GACjC,MAAO,CACLwkB,aAAuB,EAATD,GACdE,eAAyB,EAATF,GAChBG,WAAqB,EAATH,GACZvkB,MAAOA,K,eCLX,IAAIuf,EAAS7B,EAAQ,MACjBjqB,EAAOiqB,EAAQ,MACf5c,EAAM4c,EAAQ,MACdiH,EAAMjH,EAAQ,KAARA,CAAkB,OACxBkH,EAAYlH,EAAQ,MACpBmH,EAAY,WACZC,GAAO,GAAKF,GAAWvI,MAAMwI,GAEjCnH,sBAAmC,SAAUG,GAC3C,OAAO+G,EAAUxf,KAAKyY,KAGvBF,EAAOC,QAAU,SAAUU,EAAGre,EAAKwB,EAAKsjB,GACvC,IAAIC,EAA2B,mBAAPvjB,EACpBujB,IAAYlkB,EAAIW,EAAK,SAAWhO,EAAKgO,EAAK,OAAQxB,IAClDqe,EAAEre,KAASwB,IACXujB,IAAYlkB,EAAIW,EAAKkjB,IAAQlxB,EAAKgO,EAAKkjB,EAAKrG,EAAEre,GAAO,GAAKqe,EAAEre,GAAO6kB,EAAIhG,KAAKmG,OAAOhlB,MACnFqe,IAAMiB,EACRjB,EAAEre,GAAOwB,EACCsjB,EAGDzG,EAAEre,GACXqe,EAAEre,GAAOwB,EAEThO,EAAK6qB,EAAGre,EAAKwB,WALN6c,EAAEre,GACTxM,EAAK6qB,EAAGre,EAAKwB,OAOd2E,SAAS7C,UAAWshB,GAAW,WAChC,MAAsB,mBAAR72B,MAAsBA,KAAK22B,IAAQC,EAAUxf,KAAKpX,U,eC3BlE,IAAI+vB,EAAWL,EAAQ,MACnBiF,EAAWjF,EAAQ,MACnBzvB,EAAQ,SAAUqwB,EAAG4G,GAEvB,GADAvC,EAASrE,IACJP,EAASmH,IAAoB,OAAVA,EAAgB,MAAMpH,UAAUoH,EAAQ,8BAElEvH,EAAOC,QAAU,CACfle,IAAKsB,OAAOmkB,iBAAmB,aAAe,GAC5C,SAAUrd,EAAMsd,EAAO1lB,GACrB,KACEA,EAAMge,EAAQ,IAARA,CAAkBtX,SAAShB,KAAMsY,UAA4B1c,OAAOuC,UAAW,aAAa7D,IAAK,IACnGoI,EAAM,IACVsd,IAAUtd,aAAgB7W,OAC1B,MAAOuJ,GAAK4qB,GAAQ,EACtB,OAAO,SAAwB9G,EAAG4G,GAIhC,OAHAj3B,EAAMqwB,EAAG4G,GACLE,EAAO9G,EAAE+G,UAAYH,EACpBxlB,EAAI4e,EAAG4G,GACL5G,GAVX,CAYE,IAAI,QAASjlB,GACjBpL,MAAOA,I,eCvBT,IAAIq3B,EAAM5H,UACN5c,EAAM4c,EAAQ,MACd6H,EAAM7H,EAAQ,KAARA,CAAkB,eAE5BC,EAAOC,QAAU,SAAUC,EAAI2H,EAAKC,GAC9B5H,IAAO/c,EAAI+c,EAAK4H,EAAO5H,EAAKA,EAAGta,UAAWgiB,IAAMD,EAAIzH,EAAI0H,EAAK,CAAEd,cAAc,EAAMzkB,MAAOwlB,M,eCLhG,IAAIE,EAAShI,EAAQ,KAARA,CAAqB,QAC9BiI,EAAMjI,EAAQ,MAClBC,EAAOC,QAAU,SAAU3d,GACzB,OAAOylB,EAAOzlB,KAASylB,EAAOzlB,GAAO0lB,EAAI1lB,M,eCH3C,IAAIkf,EAAOzB,EAAQ,MACf6B,EAAS7B,EAAQ,MACjBkI,EAAS,qBACTC,EAAQtG,EAAOqG,KAAYrG,EAAOqG,GAAU,KAE/CjI,EAAOC,QAAU,SAAU3d,EAAKD,GAC/B,OAAO6lB,EAAM5lB,KAAS4lB,EAAM5lB,QAAiB5G,IAAV2G,EAAsBA,EAAQ,MAChE,WAAY,IAAIzE,KAAK,CACtB6jB,QAASD,EAAKC,QACd0G,KAAMpI,EAAQ,MAAgB,OAAS,SACvCqI,UAAW,0C,eCVb,IAAIC,EAAYtI,EAAQ,MACpBvL,EAAMniB,KAAKmiB,IACX+G,EAAMlpB,KAAKkpB,IACfyE,EAAOC,QAAU,SAAU7kB,EAAO/H,GAEhC,OADA+H,EAAQitB,EAAUjtB,IACH,EAAIoZ,EAAIpZ,EAAQ/H,EAAQ,GAAKkoB,EAAIngB,EAAO/H,K,SCJzD,IAAIi1B,EAAOj2B,KAAKi2B,KACZzL,EAAQxqB,KAAKwqB,MACjBmD,EAAOC,QAAU,SAAUC,GACzB,OAAOqI,MAAMrI,GAAMA,GAAM,GAAKA,EAAK,EAAIrD,EAAQyL,GAAMpI,K,eCHvD,IAAIkE,EAAUrE,EAAQ,KAClByI,EAAUzI,EAAQ,KACtBC,EAAOC,QAAU,SAAUC,GACzB,OAAOkE,EAAQoE,EAAQtI,M,eCHzB,IAAImI,EAAYtI,EAAQ,MACpBxE,EAAMlpB,KAAKkpB,IACfyE,EAAOC,QAAU,SAAUC,GACzB,OAAOA,EAAK,EAAI3E,EAAI8M,EAAUnI,GAAK,kBAAoB,I,eCHzD,IAAIsI,EAAUzI,EAAQ,KACtBC,EAAOC,QAAU,SAAUC,GACzB,OAAO7c,OAAOmlB,EAAQtI,M,eCFxB,IAAIE,EAAWL,EAAQ,MAGvBC,EAAOC,QAAU,SAAUC,EAAIyC,GAC7B,IAAKvC,EAASF,GAAK,OAAOA,EAC1B,IAAIR,EAAI5b,EACR,GAAI6e,GAAkC,mBAArBjD,EAAKQ,EAAG9lB,YAA4BgmB,EAAStc,EAAM4b,EAAGjY,KAAKyY,IAAM,OAAOpc,EACzF,GAAgC,mBAApB4b,EAAKQ,EAAGuI,WAA2BrI,EAAStc,EAAM4b,EAAGjY,KAAKyY,IAAM,OAAOpc,EACnF,IAAK6e,GAAkC,mBAArBjD,EAAKQ,EAAG9lB,YAA4BgmB,EAAStc,EAAM4b,EAAGjY,KAAKyY,IAAM,OAAOpc,EAC1F,MAAMqc,UAAU,6C,SCVlB,IAAI1mB,EAAK,EACLivB,EAAKr2B,KAAKuO,SACdof,EAAOC,QAAU,SAAU3d,GACzB,MAAO,UAAUyB,YAAerI,IAAR4G,EAAoB,GAAKA,EAAK,QAAS7I,EAAKivB,GAAItuB,SAAS,O,eCHnF,IAAI8tB,EAAQnI,EAAQ,KAARA,CAAqB,OAC7BiI,EAAMjI,EAAQ,MACdyE,EAASzE,eACT4I,EAA8B,mBAAVnE,GAETxE,EAAOC,QAAU,SAAUxe,GACxC,OAAOymB,EAAMzmB,KAAUymB,EAAMzmB,GAC3BknB,GAAcnE,EAAO/iB,KAAUknB,EAAanE,EAASwD,GAAK,UAAYvmB,MAGjEymB,MAAQA,G,eCTjB,IAAInG,EAAUhC,EAAQ,MAEtBgC,EAAQA,EAAQY,EAAIZ,EAAQd,EAAG,SAAU,CAAEqD,OAAQvE,EAAQ,S,eCF3D,IAAIgC,EAAUhC,EAAQ,MAClBa,EAAYb,EAAQ,MACpBiF,EAAWjF,EAAQ,MACnB6I,GAAU7I,iBAAgC,IAAIhf,MAC9C8nB,EAASpgB,SAAS1H,MAEtBghB,EAAQA,EAAQY,EAAIZ,EAAQd,GAAKlB,EAAQ,KAARA,EAAoB,WACnD6I,GAAO,kBACL,UAAW,CACb7nB,MAAO,SAAe1P,EAAQy3B,EAAcC,GAC1C,IAAIpE,EAAI/D,EAAUvvB,GACd23B,EAAIhE,EAAS+D,GACjB,OAAOH,EAASA,EAAOjE,EAAGmE,EAAcE,GAAKH,EAAOphB,KAAKkd,EAAGmE,EAAcE,O,eCZ9E,IAAIjH,EAAUhC,EAAQ,MAClBvf,EAASuf,EAAQ,MACjBa,EAAYb,EAAQ,MACpBiF,EAAWjF,EAAQ,MACnBK,EAAWL,EAAQ,MACnBkJ,EAAQlJ,EAAQ,MAChB3P,EAAO2P,EAAQ,MACfmJ,GAAcnJ,iBAAgC,IAAIiB,UAIlDmI,EAAiBF,GAAM,WACzB,SAAShI,KACT,QAASiI,GAAW,cAA6B,GAAIjI,aAAcA,MAEjEmI,GAAYH,GAAM,WACpBC,GAAW,kBAGbnH,EAAQA,EAAQY,EAAIZ,EAAQd,GAAKkI,GAAkBC,GAAW,UAAW,CACvEpI,UAAW,SAAmBqI,EAAQ7hB,GACpCoZ,EAAUyI,GACVrE,EAASxd,GACT,IAAI8hB,EAAYhI,UAAUjuB,OAAS,EAAIg2B,EAASzI,EAAUU,UAAU,IACpE,GAAI8H,IAAaD,EAAgB,OAAOD,EAAWG,EAAQ7hB,EAAM8hB,GACjE,GAAID,GAAUC,EAAW,CAEvB,OAAQ9hB,EAAKnU,QACX,KAAK,EAAG,OAAO,IAAIg2B,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAO7hB,EAAK,IAC/B,KAAK,EAAG,OAAO,IAAI6hB,EAAO7hB,EAAK,GAAIA,EAAK,IACxC,KAAK,EAAG,OAAO,IAAI6hB,EAAO7hB,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjD,KAAK,EAAG,OAAO,IAAI6hB,EAAO7hB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAG5D,IAAI+hB,EAAQ,CAAC,MAEb,OADAA,EAAM3rB,KAAKmD,MAAMwoB,EAAO/hB,GACjB,IAAK4I,EAAKrP,MAAMsoB,EAAQE,IAGjC,IAAIhC,EAAQ+B,EAAU1jB,UAClBvR,EAAWmM,EAAO4f,EAASmH,GAASA,EAAQlkB,OAAOuC,WACnDkV,EAASrS,SAAS1H,MAAM0G,KAAK4hB,EAAQh1B,EAAUmT,GACnD,OAAO4Y,EAAStF,GAAUA,EAASzmB,M,eC3CvC,IAAI8uB,EAAKpD,EAAQ,MACbgC,EAAUhC,EAAQ,MAClBiF,EAAWjF,EAAQ,MACnB8F,EAAc9F,EAAQ,MAG1BgC,EAAQA,EAAQY,EAAIZ,EAAQd,EAAIlB,EAAQ,KAARA,EAAoB,WAElD2G,QAAQ7e,eAAesb,EAAGnf,EAAE,GAAI,EAAG,CAAE3B,MAAO,IAAM,EAAG,CAAEA,MAAO,OAC5D,UAAW,CACbwF,eAAgB,SAAwBxW,EAAQm4B,EAAaC,GAC3DzE,EAAS3zB,GACTm4B,EAAc3D,EAAY2D,GAAa,GACvCxE,EAASyE,GACT,IAEE,OADAtG,EAAGnf,EAAE3S,EAAQm4B,EAAaC,IACnB,EACP,MAAO5sB,GACP,OAAO,O,eClBb,IAAIklB,EAAUhC,EAAQ,MAClBiG,EAAOjG,UACPiF,EAAWjF,EAAQ,MAEvBgC,EAAQA,EAAQY,EAAG,UAAW,CAC5B+G,eAAgB,SAAwBr4B,EAAQm4B,GAC9C,IAAIG,EAAO3D,EAAKhB,EAAS3zB,GAASm4B,GAClC,QAAOG,IAASA,EAAK7C,sBAA8Bz1B,EAAOm4B,O,cCN9D,IAAIzH,EAAUhC,EAAQ,MAClBiF,EAAWjF,EAAQ,MACnB6J,EAAY,SAAUC,GACxBx5B,KAAKy5B,GAAK9E,EAAS6E,GACnBx5B,KAAK05B,GAAK,EACV,IACIznB,EADAgB,EAAOjT,KAAK25B,GAAK,GAErB,IAAK1nB,KAAOunB,EAAUvmB,EAAK1F,KAAK0E,IAElCyd,EAAQ,KAARA,CAA0B6J,EAAW,UAAU,WAC7C,IAEItnB,EAFA8e,EAAO/wB,KACPiT,EAAO8d,EAAK4I,GAEhB,GACE,GAAI5I,EAAK2I,IAAMzmB,EAAKjQ,OAAQ,MAAO,CAAEgP,WAAO3G,EAAWuuB,MAAM,YACnD3nB,EAAMgB,EAAK8d,EAAK2I,SAAU3I,EAAK0I,KAC3C,MAAO,CAAEznB,MAAOC,EAAK2nB,MAAM,MAG7BlI,EAAQA,EAAQY,EAAG,UAAW,CAC5BuH,UAAW,SAAmB74B,GAC5B,OAAO,IAAIu4B,EAAUv4B,O,eCtBzB,IAAI20B,EAAOjG,EAAQ,MACfgC,EAAUhC,EAAQ,MAClBiF,EAAWjF,EAAQ,MAEvBgC,EAAQA,EAAQY,EAAG,UAAW,CAC5BsD,yBAA0B,SAAkC50B,EAAQm4B,GAClE,OAAOxD,EAAKhiB,EAAEghB,EAAS3zB,GAASm4B,O,eCNpC,IAAIzH,EAAUhC,EAAQ,MAClBoK,EAAWpK,EAAQ,MACnBiF,EAAWjF,EAAQ,MAEvBgC,EAAQA,EAAQY,EAAG,UAAW,CAC5Bhd,eAAgB,SAAwBtU,GACtC,OAAO84B,EAASnF,EAAS3zB,Q,eCN7B,IAAI20B,EAAOjG,EAAQ,MACfpa,EAAiBoa,EAAQ,MACzB5c,EAAM4c,EAAQ,MACdgC,EAAUhC,EAAQ,MAClBK,EAAWL,EAAQ,MACnBiF,EAAWjF,EAAQ,MAcvBgC,EAAQA,EAAQY,EAAG,UAAW,CAAEvf,IAZhC,SAASA,EAAI/R,EAAQm4B,GACnB,IACIG,EAAMpC,EADN6C,EAAW9I,UAAUjuB,OAAS,EAAIhC,EAASiwB,UAAU,GAEzD,OAAI0D,EAAS3zB,KAAY+4B,EAAiB/4B,EAAOm4B,IAC7CG,EAAO3D,EAAKhiB,EAAE3S,EAAQm4B,IAAqBrmB,EAAIwmB,EAAM,SACrDA,EAAKtnB,WACQ3G,IAAbiuB,EAAKvmB,IACHumB,EAAKvmB,IAAIqE,KAAK2iB,QACd1uB,EACF0kB,EAASmH,EAAQ5hB,EAAetU,IAAiB+R,EAAImkB,EAAOiC,EAAaY,QAA7E,M,eChBF,IAAIrI,EAAUhC,EAAQ,MAEtBgC,EAAQA,EAAQY,EAAG,UAAW,CAC5Bxf,IAAK,SAAa9R,EAAQm4B,GACxB,OAAOA,KAAen4B,M,eCJ1B,IAAI0wB,EAAUhC,EAAQ,MAClBiF,EAAWjF,EAAQ,MACnBsK,EAAgBhnB,OAAOinB,aAE3BvI,EAAQA,EAAQY,EAAG,UAAW,CAC5B2H,aAAc,SAAsBj5B,GAElC,OADA2zB,EAAS3zB,IACFg5B,GAAgBA,EAAch5B,O,eCPzC,IAAI0wB,EAAUhC,EAAQ,MAEtBgC,EAAQA,EAAQY,EAAG,UAAW,CAAEgE,QAAS5G,EAAQ,S,eCFjD,IAAIgC,EAAUhC,EAAQ,MAClBiF,EAAWjF,EAAQ,MACnBwK,EAAqBlnB,OAAOmnB,kBAEhCzI,EAAQA,EAAQY,EAAG,UAAW,CAC5B6H,kBAAmB,SAA2Bn5B,GAC5C2zB,EAAS3zB,GACT,IAEE,OADIk5B,GAAoBA,EAAmBl5B,IACpC,EACP,MAAOwL,GACP,OAAO,O,eCXb,IAAIklB,EAAUhC,EAAQ,MAClB0K,EAAW1K,EAAQ,MAEnB0K,GAAU1I,EAAQA,EAAQY,EAAG,UAAW,CAC1C6E,eAAgB,SAAwBn2B,EAAQk2B,GAC9CkD,EAASn6B,MAAMe,EAAQk2B,GACvB,IAEE,OADAkD,EAAS1oB,IAAI1Q,EAAQk2B,IACd,EACP,MAAO1qB,GACP,OAAO,O,eCVb,IAAIsmB,EAAKpD,EAAQ,MACbiG,EAAOjG,EAAQ,MACfpa,EAAiBoa,EAAQ,MACzB5c,EAAM4c,EAAQ,MACdgC,EAAUhC,EAAQ,MAClBqD,EAAarD,EAAQ,MACrBiF,EAAWjF,EAAQ,MACnBK,EAAWL,EAAQ,MAwBvBgC,EAAQA,EAAQY,EAAG,UAAW,CAAE5gB,IAtBhC,SAASA,EAAI1Q,EAAQm4B,EAAakB,GAChC,IAEIC,EAAoBpD,EAFpB6C,EAAW9I,UAAUjuB,OAAS,EAAIhC,EAASiwB,UAAU,GACrDsJ,EAAU5E,EAAKhiB,EAAEghB,EAAS3zB,GAASm4B,GAEvC,IAAKoB,EAAS,CACZ,GAAIxK,EAASmH,EAAQ5hB,EAAetU,IAClC,OAAO0Q,EAAIwlB,EAAOiC,EAAakB,EAAGN,GAEpCQ,EAAUxH,EAAW,GAEvB,GAAIjgB,EAAIynB,EAAS,SAAU,CACzB,IAAyB,IAArBA,EAAQ7D,WAAuB3G,EAASgK,GAAW,OAAO,EAC9D,GAAIO,EAAqB3E,EAAKhiB,EAAEomB,EAAUZ,GAAc,CACtD,GAAImB,EAAmBvnB,KAAOunB,EAAmB5oB,MAAuC,IAAhC4oB,EAAmB5D,SAAoB,OAAO,EACtG4D,EAAmBtoB,MAAQqoB,EAC3BvH,EAAGnf,EAAEomB,EAAUZ,EAAamB,QACvBxH,EAAGnf,EAAEomB,EAAUZ,EAAapG,EAAW,EAAGsH,IACjD,OAAO,EAET,YAAuBhvB,IAAhBkvB,EAAQ7oB,MAA6B6oB,EAAQ7oB,IAAI0F,KAAK2iB,EAAUM,IAAI,O,qQCpB7E,SAAUn6B,GAET,IAIMs6B,EAEAC,EAEAC,EAqBAC,EAOAC,EAIAC,EACAzwB,EAzCF0wB,EAAK7L,UAAUC,UAEdhvB,EAAO66B,oBAAwB,OAAQjhB,KAAKghB,IAAOA,EAAGE,MAAM,cAAgBxiB,OAAOyiB,GAAK,IAC5F96B,iBAAiB,UAGZs6B,EAAWj4B,SAASkW,cAAc,UAElCgiB,EAAa,SAASQ,GACzB,IAAIvJ,EAAQwJ,EACRC,EAAUF,EAAI/gB,WAEqB,YAAnCihB,EAAQ5gB,SAAS6gB,eACpB1J,EAAS8I,EAAS3L,YAElBsM,EAAQje,aAAawU,EAAQyJ,EAAQl1B,mBACrCmB,YAAW,WACV+zB,EAAQ5d,YAAYmU,SAEVuJ,EAAII,aAAeJ,EAAIhrB,YAAcgrB,EAAII,eACpDJ,EAAII,YAAcJ,EAAIhrB,YACtBirB,EAAQD,EAAIC,MACZD,EAAIC,OAAS,SACb9zB,YAAW,WACV6zB,EAAIC,MAAQA,OAKXR,EAAkB,WACrB,IAAIzkB,EACAqlB,EAAO/4B,SAASgG,iBAAiB,qCACrC,IAAK0N,EAAI,EAAGA,EAAIqlB,EAAKv4B,OAAQkT,IAC5BwkB,EAAWa,EAAKrlB,KAGd0kB,EAAW,WACdnzB,aAAa+yB,GACbA,EAAQnzB,WAAWszB,EAAiB,KAEjCE,EAAK36B,EAAOs7B,YAAcA,WAAW,4BACrCpxB,EAAO,WACVwwB,IAEIC,GAAMA,EAAGY,aACZZ,EAAGY,YAAYb,IAIjBH,EAASiB,OAAS,6EAEd,YAAY5hB,KAAKtX,SAASm5B,YAAc,IAC3CvxB,IAEA5H,SAASrC,iBAAiB,mBAAoBiK,GAGxCwwB,IA3DV,CA8DG16B,QAQH,SAAWA,EAAQsC,EAAU6I,GAO5B,IAAUuwB,EAAQC,EAAwBC,EAF1Ct5B,EAASkW,cAAe,WAIxB,IAAIqjB,EAAK,GACLC,GAAqB,EACrBC,EAAO,aACPC,EAAQ15B,EAASkW,cAAe,OAChCyjB,EAAaD,EAAMn7B,aACnBq7B,EAAaF,EAAM14B,aACnB64B,EAAgBH,EAAM9uB,gBACtBkvB,EAAU95B,EAASwK,gBACnBuvB,EAAQ,GACRC,EAAM,CAETC,UAAW,IAERC,EAAU,aACVC,EAAaD,EAAU,MAGvB5B,EAAK7L,UAAUC,UACf0N,EAAgB,SAAU9iB,KAAKghB,IAAS,OAAQhhB,KAAKghB,IAAOA,EAAGE,MAAM,cAAgBxiB,OAAOyiB,GAAK,GACjG4B,EAAa,aACbC,EAAW,oBACXC,EAAU,sBACVC,EAAa98B,EAAO+8B,eAMpBC,EAAQ,4BACRC,GAAY,EAEZC,EAAW,GACXC,EAAkB,GAClBC,EAAMp9B,EAAOq9B,iBACbjiB,EAAQ,CACX+c,GAAI,EACJ,GAAM,IAEHmF,EAASh7B,EAASkW,cAAe,KAKjC+kB,GAAa,EAKbC,EAAqB,oBACrBC,EAA6B,qBAC7BC,EAAwB,qBACxBC,EAAsB,QACtBC,EAA0B,QAO1BC,EAAqB,oDAErB7xB,EAAK,SAAS+L,EAAK+lB,EAAK3O,EAAI4O,GAC1BhmB,EAAI9X,iBACR8X,EAAI9X,iBAAiB69B,EAAK3O,EAAI4O,IAAW,GAC9BhmB,EAAIimB,aACfjmB,EAAIimB,YAAa,KAAOF,EAAK3O,IAQ3B8O,EAAU,SAAS9O,GACtB,IAAI9b,EAAQ,GACZ,OAAO,SAAS6qB,GAIf,OAHOA,KAAS7qB,IACfA,EAAO6qB,GAAU/O,EAAG+O,IAEd7qB,EAAO6qB,KAQhB,SAASC,EAAQhuB,GAChB,MAAc,MAANA,GACM,OAANA,GACM,OAANA,GACM,OAANA,GACM,OAANA,EAUT,IAEKiuB,EASAC,EAiwBMC,EAaLC,EACAvD,EACAphB,EA0cA4kB,EAqBoBC,EACnBC,GAASC,GACTC,GAtBDC,GAEAC,GAcAC,GAyBAC,GA/wCFC,IAECb,EAAY,wBASZC,EAAWJ,GAAQ,SAASiB,GAE/B,MAAO,UAVM,WAEb,IADA,IAAIjoB,EAAO8Z,UAAWlmB,EAAQ,EAAGs0B,EAASloB,EAAK,KACtCpM,KAASoM,GACjBkoB,EAASA,EAAOjvB,QAAQ+G,EAAKpM,GAAQoM,IAAOpM,IAE7C,OAAOs0B,EAKYjvB,EAASgvB,GAAO,IAAIp1B,cAEtC,WAAY,KAGZ,KAAM,KAGN,oBAAqB,SAGrB,oBAAqB,SAGrB,eAAgB,OAGhB,2BAA4B,cAE5B,8CAA+C,IAC5C,OAGE,SAASo1B,EAAKp8B,GACpB,IAAIs8B,EACJ,KAAMF,KAAOhC,GAEZ,GADAA,EAASgC,IAAO,EACZp8B,IAAWs8B,EAAeF,EAAIpE,MAAOsD,IACxClB,EAASgC,GAAOE,EAAc,GAAMhkB,EAAMgkB,EAAc,SAGxD,IACClC,EAASgC,GAAO,IAAIhnB,SAAS,IAAKmmB,EAASa,GAA3B,CAAiC9jB,GAChD,MAAM9O,IAIV,OAAO4wB,EAASgC,KAIdG,GAAgB,SAAUC,EAAWC,GAOxC,OANKD,EAAU3Q,GACd2Q,EAAUE,OAAS3D,EAAG4D,eAAgBF,GAAa,SACnDD,EAAUnpB,IAAMmpB,EAAU3Q,EAAI2Q,EAAUE,QAExCF,EAAUnpB,IAAMmpB,EAAUlR,EAEpBkR,GAOJI,GAAc,SAAUC,GAE3B,GAAK7D,EAAL,CAEA,IAAI3uB,EAAU6I,EAAG4pB,EAEbjyB,EAAUgyB,GAAO,GAarB,GAXKhyB,EAAQR,UAA0C,IAA9BQ,EAAQR,SAASiN,WACQ,QAA5CzM,EAAQR,SAASmN,SAAS6gB,cAC9BxtB,EAAQR,SAAY,CAAEQ,EAAQR,WAE9BQ,EAAQkyB,QAAUlyB,EAAQR,SAC1BQ,EAAQR,SAAY,OAMhByyB,GAFNzyB,EAAWQ,EAAQR,UAAY0uB,EAAGiE,IAAMnyB,EAAQkyB,SAAWv9B,EAAaqL,EAAQoyB,YAAcpyB,EAAQqyB,SAAanE,EAAGoE,IAAMpE,EAAGqE,WAEzGp9B,OAAU,CAM/B,IAJA+4B,EAAGsE,SAAUxyB,GACb4vB,GAAa,EAGPvnB,EAAI,EAAGA,EAAI4pB,EAAM5pB,IACtB6lB,EAAGuE,QAAQjzB,EAAU6I,GAAKrI,GAG3BkuB,EAAGwE,YAAa1yB,MA8GlB,SAAS2yB,GAAexqB,EAAG2Y,GAC1B,OAAO3Y,EAAEK,IAAMsY,EAAEtY,IAwBlB,SAASoqB,GAAoBn0B,EAAKoF,GACjC,IAAIwE,EAAGspB,EAAWkB,EAClB,GAAKp0B,GAAOoF,EAGX,IAFAgvB,EAAa3E,EAAG4E,SAAUjvB,GAC1BpF,EAAMyvB,EAAG6E,QAAQt0B,GACX4J,EAAI,EAAGA,EAAIwqB,EAAW19B,OAAQkT,IACnC,GAAK5J,IAAQyvB,EAAG6E,QAAQF,EAAYxqB,GAAImX,KAAO,CAC9CmS,EAAYkB,EAAYxqB,GACxB,MAIH,OAAOspB,EA1ICt/B,EAAO6E,SAAWA,QAAQ87B,KAO5BhE,KAAcX,IACpBW,EAAa,OAIdN,EAAO,eAAiB,EACxBA,EAAO,cAAgB,EACvBA,EAAO,cAAgB,EAmBvBA,EAAO,iBAAoB/5B,EAASs+B,eAAeC,WAAY,2CAA4C,OAunB3GhF,EAAGiF,IAAM,MAAO,IAAIC,MAAOC,WAAWrnB,OAAO,EAAG,GAGhDkiB,EAAGoF,UAAY,WAAYjF,EAC3BH,EAAGqF,SAAW,UAAWlF,EACzBH,EAAGsF,aAAenhC,EAAO66B,mBAIrBgB,EAAGoF,WAAapF,EAAGsF,aAAetF,EAAGqF,WAC9B5C,EAKPh8B,EAASkW,cAAc,OAJzBwjB,EAAMR,OAAS,UACf8C,EAAOlyB,IAAM,UACbyvB,EAAGoF,UAAYjF,EAAMoF,WAAa9C,EAAO8C,SACzCvF,EAAGsF,WAAatF,EAAGoF,WAAapF,EAAGsF,YAKjCtF,EAAGoF,YAAcpF,EAAGqF,UAIlB3C,EAAS,6EAET3kB,EAAO,WAGI,IAFFohB,EAAIt0B,QAGfm1B,EAAGqF,UAAW,GAGfvF,EAAyBE,EAAGoF,YAAcpF,EAAGqF,SAE7CpF,GAAqB,EAErB30B,WAAWu4B,MAZR1E,EAAM14B,EAASkW,cAAc,QAe7B2N,OAASvM,EACbohB,EAAIhV,QAAUpM,EACdohB,EAAI13B,aAAa,QAAS,OAE1B03B,EAAIQ,OAAS+C,8FACbvD,EAAI5uB,IAAMmyB,GAIXzC,GAAqB,EAKtBD,EAAGqE,SAAW,0BACdrE,EAAGoE,IAAMpE,EAAGqE,SACZrE,EAAGS,IAAMA,EAKTT,EAAGuB,IAAOA,GAAQ,EAClBvB,EAAGxgB,EAAID,EAGPygB,EAAGQ,MAASA,EAEZR,EAAGwF,QAAUtF,EAQbF,EAAG6E,QAAUzC,GAAQ,SAAS7xB,GAE7B,OADAkxB,EAAOgE,KAAOl1B,EACPkxB,EAAOgE,QAUfzF,EAAGiE,IAAM,SAASD,EAASI,GAC1B,MAAS,kBAAmBJ,EAAYA,EAAQv3B,iBAAiB23B,GAAO,IAQzEpE,EAAG0F,aAAe,WASjB,OARKvhC,EAAOs7B,aAAeA,WAAY,uBAA0B,IAAIkG,QACpE3F,EAAG0F,aAAe,SAAUE,GAC3B,OAAQA,GAAWnG,WAAYmG,GAAQD,SAGxC3F,EAAG0F,aAAe1F,EAAG6F,IAGf7F,EAAG0F,aAAa/wB,MAAO1Q,KAAMixB,YASrC8K,EAAG6F,IAAM,SAAUD,GAClB,OAAOA,GAAQxC,GAAQwC,IAYxB5F,EAAG8F,WAAa,SAAUC,GAEzB,IAAI9vB,EAAQmtB,GAAQ2C,GAAiB,KAAS,EAK9C,OAJI9vB,EAAQ,IACXA,GAAQ,GAGFA,GAOR+pB,EAAGgG,aAAe,SAAUtsB,GAC3B,OAASA,GAAS8mB,EAAO9mB,IAQ1BsmB,EAAGiG,UAAY7D,GAAQ,SAAU8D,GAChC,IAAIjH,GAAUiH,GAAiB,IAAKjH,MAAM+B,GAC1C,MAAO,CACN4E,MAAO3G,GAASA,EAAM,GACtBh4B,OAAQg4B,GAASA,EAAM,OAIzBe,EAAG4E,SAAW,SAAUjvB,GAIvB,OAHMA,EAAIwwB,QACTxwB,EAAIwwB,MAloBN,SAAqB9D,EAAO1sB,GAE3B,SAASywB,EAAkBC,GAC1B,IAAIC,EACArH,EAAQoH,EAAMzP,KAAKyL,EAAM19B,UAAUkgB,IACvC,GAAIoa,EAGH,OAFAqH,EAAQrH,EAAO,GACfpa,GAAOyhB,EAAMr/B,OACNq/B,EAIT,IACIhV,EACAiV,EACAC,EACAC,EACAnyB,EALAoyB,EAAcrE,EAAMp7B,OASpB4d,EAAM,EAGN8f,EAAa,GASjB,SAASgC,IAGR,IAKI7T,EAAGP,EAAGC,EAAGrY,EAETojB,EAAMqJ,EAAU3wB,EAAO4wB,EAAQC,EAP/BC,GAAS,EAMTtD,EAAY,GAKhB,IAAKtpB,EAAI,EAAIA,EAAIosB,EAAYt/B,OAAQkT,IAGpCysB,GAFArJ,EAAOgJ,EAAapsB,IAEHojB,EAAKt2B,OAAS,GAC/BgP,EAAQsnB,EAAK54B,UAAU,EAAG44B,EAAKt2B,OAAS,GACxC4/B,EAASG,SAAS/wB,EAAO,IACzB6wB,EAAWG,WAAWhxB,GAIlB8rB,EAAwBhkB,KAAK9H,IAAwB,MAAb2wB,IAGvC9T,GAAKP,KAAIwU,GAAS,GAKP,IAAXF,EAAeE,GAAS,EAAajU,EAAI+T,GAInC7E,EAAmBjkB,KAAK9H,IAAwB,MAAb2wB,IAIzC9T,GAAKP,GAAKC,KAAIuU,GAAS,GAKvBD,EAAW,EAAIC,GAAS,EAAaxU,EAAIuU,GAInC/E,EAAwBhkB,KAAK9H,IAAwB,MAAb2wB,IAG9CpU,GAAKD,KAAIwU,GAAS,GAKP,IAAXF,EAAeE,GAAS,EAAavU,EAAIqU,GAGtCE,GAAS,EAMbA,IACJtD,EAAUnS,IAAMA,EAEZwB,IAAK2Q,EAAU3Q,EAAIA,GACnBP,IAAKkR,EAAUlR,EAAIA,GACnBC,IAAKiR,EAAUjR,EAAIA,GAClBA,GAAMD,GAAMO,IAAI2Q,EAAUlR,EAAI,GACf,IAAhBkR,EAAUlR,IAAU5c,EAAIuxB,OAAQ,GACpCzD,EAAU9tB,IAAMA,EAEhBgvB,EAAWnzB,KAAKiyB,IAUlB,SAAS0D,IAWR,IARAf,EAAkBzE,GAGlB6E,EAAoB,GAGpBC,EAAQ,kBAEK,CAUZ,GAPAnyB,EAAI+tB,EAAM+E,OAAOviB,GAOH,kBAAV4hB,EAOH,GAAInE,EAAQhuB,GACPkyB,IACHD,EAAY/0B,KAAKg1B,GACjBA,EAAoB,GACpBC,EAAQ,wBAOH,IAAU,MAANnyB,EAMV,OALAuQ,GAAO,EACH2hB,GACHD,EAAY/0B,KAAKg1B,QAElBG,IAKM,GAAU,MAANryB,EACVkyB,GAAwClyB,EACxCmyB,EAAQ,gBAKF,IAAU,KAANnyB,EAKV,OAJIkyB,GACHD,EAAY/0B,KAAKg1B,QAElBG,IAMAH,GAAwClyB,QAKnC,GAAc,cAAVmyB,EAIV,GAAU,MAANnyB,EACHkyB,GAAwClyB,EACxCmyB,EAAQ,oBAKF,IAAU,KAANnyB,EAGV,OAFAiyB,EAAY/0B,KAAKg1B,QACjBG,IAMAH,GAAwClyB,OAInC,GAAc,qBAAVmyB,EAIV,GAAInE,EAAQhuB,QAGL,IAAU,KAANA,EAEV,YADAqyB,IAMAF,EAAQ,gBACR5hB,GAAO,EAMTA,GAAO,GAST,OAAa,CAIZ,GAHAuhB,EAAkBxE,GAGd/c,GAAO6hB,EACV,OAAO/B,EAKRrT,EAAM8U,EAAkBvE,GAGxB0E,EAAc,GAKQ,MAAlBjV,EAAI7L,OAAO,IACd6L,EAAMA,EAAIjd,QAAQytB,EAAqB,IAEvC6E,KAIAQ,KAsXWE,CAAY1xB,EAAIgqB,OAAQhqB,IAE9BA,EAAIwwB,OAQZnG,EAAGsH,WAAa,WACf,IAAI5/B,EACJ,IAAMm4B,IAAWn4B,EAAOjB,EAASiB,MAAQ,CACxC,IAAI6/B,EAAM9gC,EAASkW,cAAe,OACjC6qB,EAAkBjH,EAAQz5B,MAAM2gC,QAChCC,EAAkBhgC,EAAKZ,MAAM2gC,QAE9BF,EAAIzgC,MAAM2gC,QA7/BI,uJAigCdlH,EAAQz5B,MAAM2gC,QAAUtG,EACxBz5B,EAAKZ,MAAM2gC,QAAUtG,EAErBz5B,EAAK6Z,YAAagmB,GAClB1H,EAAS0H,EAAIpzB,YACbzM,EAAK+Z,YAAa8lB,GAGlB1H,EAASoH,WAAYpH,EAAQ,IAG7BU,EAAQz5B,MAAM2gC,QAAUD,EACxB9/B,EAAKZ,MAAM2gC,QAAUC,EAGtB,OAAO7H,GAAU,IAMlBG,EAAG4D,eAAiB,SAAU+D,GAI7B,KAAOA,KAAqBrG,IAAoBb,EAAImH,GAAK,CACxD,IAAIC,EAAgB7H,EAAG8F,WAnYzB,SAAoBgC,GAUnB,IAMI3tB,EACA4tB,EACAC,EACAC,EACAC,EACAtyB,EAqFuCoR,EAhGvCmhB,EAA0B,0GAI1BC,EAAe,0CAgHnB,IAHAJ,GADAD,EA5FA,SAA8BM,GAC7B,IAAIC,EACArzB,EAAY,GACZszB,EAAiB,GACjBC,EAAY,GACZC,EAAa,EACb5jB,EAAM,EACN6jB,GAAY,EAEhB,SAASC,IACJ1zB,IACHszB,EAAe/2B,KAAKyD,GACpBA,EAAY,IAId,SAAS2zB,IACJL,EAAe,KAClBC,EAAUh3B,KAAK+2B,GACfA,EAAiB,IAKnB,OAAa,CAGZ,GAAe,MAFfD,EAASD,EAAIjB,OAAOviB,IAKnB,OAFA8jB,IACAC,IACOJ,EACD,GAAIE,EAAJ,CACN,GAAgB,MAAXJ,GAAqC,MAAjBD,EAAIxjB,EAAM,GAAa,CAC/C6jB,GAAY,EACZ7jB,GAAO,EACP8jB,IACA,SAEA9jB,GAAO,MAPF,CAUA,GAAIyd,EAAQgG,GAAS,CAI3B,GAAMD,EAAIjB,OAAOviB,EAAM,IAAMyd,EAAS+F,EAAIjB,OAAOviB,EAAM,MAAW5P,EAAY,CAC7E4P,GAAO,EACP,SACM,GAAmB,IAAf4jB,EAAkB,CAC5BE,IACA9jB,GAAM,EACN,SAGAyjB,EAAS,SAEJ,GAAe,MAAXA,EACVG,GAAc,OACR,GAAe,MAAXH,EACVG,GAAc,MACR,IAAe,MAAXH,EAAgB,CAC1BK,IACAC,IACA/jB,GAAO,EACP,SACM,GAAiB,MAAXyjB,GAA4C,MAAxBD,EAAIjB,OAAOviB,EAAM,GAAc,CAC/D6jB,GAAY,EACZ7jB,GAAO,EACP,UAGD5P,GAAwBqzB,EACxBzjB,GAAO,IAoBWgkB,CAAqBf,IACG7gC,OAGvCkT,EAAI,EAAGA,EAAI6tB,EAAyB7tB,IAkBxC,GAtC0C6M,EAoC1CkhB,GAfAD,EAAeF,EAAkB5tB,IAeC8tB,EAAahhC,OAAS,GAnCpDkhC,EAAwBpqB,KAAKiJ,IAAOigB,WAAWjgB,IAAM,GACrDohB,EAAarqB,KAAKiJ,IAIX,MAANA,GAAqB,OAANA,GAAsB,OAANA,EAgCpC,CAUA,GATCpR,EAAOsyB,EACPD,EAAaa,MAQc,IAAxBb,EAAahhC,OAChB,OAAO2O,EAYR,GADAqyB,EAAeA,EAAalT,KAAK,KAC3BiL,EAAG0F,aAAcuC,GAKvB,OAAOryB,EAKR,MAAO,QAkN6BmzB,CAAYpB,IAE/CrG,EAAiBqG,GAAuBE,GAAgBtoB,EAAM1U,MAG/D,OAAOy2B,EAAiBqG,IAazB3H,EAAGgJ,OAAS,SAAUrzB,GACrB,IAAIgvB,EACJ,GAAKhvB,EAIJ,IAAM,IAAIwE,EAAI,EAAG2a,GAFjB6P,EAAa3E,EAAG4E,SAAUjvB,IAEQ1O,OAAQkT,EAAI2a,EAAK3a,IAClDqpB,GAAemB,EAAYxqB,GAAKxE,EAAIypB,OAGtC,OAAOuF,GAGR3E,EAAGgJ,OAAO1uB,IAAMkpB,GAEhBxD,EAAGiJ,kBAAoB,SAAUtE,EAAYxF,GAC5C,GAAMwF,EAAW19B,OAAjB,CACA,IAAIw8B,EACHtpB,EACAwe,EACA1xB,EACAiiC,EACAC,EACAC,EACAC,EACAC,EAt1BqBC,EAAYC,EAAaC,EAAUC,EACrDC,EAAsBC,EAAOC,EAu1B7BC,EAAY3K,EAAKa,EAAGiF,IACpB8E,EAAM/J,EAAGuB,IAwBb,GAtBA4H,EAASW,EAAUX,QAAUhK,EAAI2B,IAEjCsI,EAASU,EAAUV,QA/yBpB,SAAsBjK,EAAK5uB,EAAKoF,GAC/B,IAAI8tB,EAiBJ,OAhBM9tB,GAAOpF,IAEZoF,GADAA,EAAMwpB,EAAKa,EAAGiF,IAAK+E,OACNr0B,EAAIA,EAAI1O,OAAS,KAG/Bw8B,EAAYiB,GAAmBn0B,EAAKoF,MAGnCpF,EAAMyvB,EAAG6E,QAAQt0B,GACjB4uB,EAAKa,EAAGiF,IAAKkE,OAAS54B,EACtB4uB,EAAKa,EAAGiF,IAAKmE,OAAS3F,EAEhBA,EAAUnpB,KACfkpB,GAAeC,EAAWA,EAAU9tB,IAAIypB,QAGnCqE,EA6xBsBwG,CAAY9K,EAAKgK,EAAQxE,EAAW,GAAGhvB,OAGrDyzB,EAAOzzB,MAAQgvB,EAAY,GAAIhvB,OAI7C2zB,EAAezI,IAAiB1B,EAAIoG,UAAY6D,EAAO9uB,IAAM,GAAMyvB,KAGlEX,EAAOc,QAAS,EAIXd,EAAO9uB,KAAOyvB,IAClBb,EAAgBE,MAKbF,EAOL,IALAvE,EAAWwF,KAAM1F,IAGjByE,EAAgBvE,GADhB19B,EAAS09B,EAAW19B,QACiB,GAE/BkT,EAAI,EAAGA,EAAIlT,EAAQkT,IAExB,IADAspB,EAAYkB,EAAYxqB,IACTG,KAAOyvB,EAAM,CAS1Bb,EAJGvE,EAJJhM,EAAIxe,EAAI,KAKNmvB,GAAeH,IAAWnJ,EAAG6E,QAASpB,EAAUnS,QAh4B/BiY,EAi4BL5E,EAAYhM,GAAIre,IAj4BCkvB,EAi4BI/F,EAAUnpB,IAj4BDmvB,EAi4BMM,EAj4BIL,EAi4BC/E,EAAYhM,GAAIuR,OAh4BtEP,SAAsBC,SAAOC,SAGX,aAAlBpJ,EAAIC,UACF6I,EAAa,IACjBM,EAAcJ,EAAW,GAKzBG,GAHUJ,EAAcC,IACxBE,EAAc1jC,KAAKmkC,IAAIb,EAAa,GAAK,MAIrCG,IACHE,GAAS,GAAMD,GAGhBE,EAAcN,EAAaK,GAG5BC,EAAeJ,EAAW,EACzBxjC,KAAKokC,KAAKd,EAAaC,GACvBD,EAGKM,EAAcJ,GA02BD9E,EAAYhM,GAGZ8K,EAEjB,MAKEyF,IAEJG,EAAerJ,EAAG6E,QAASqE,EAAc5X,KAEzCwY,EAAUX,OAASE,EACnBS,EAAUV,OAASF,EAEdG,IAAiBF,GACrBnJ,EAAGsK,OAAQnL,EAAK+J,GAEjBlJ,EAAGwF,QAASrG,MAIda,EAAGsK,OAAS,SAAUnL,EAAK+J,GAC1B,IAAIqB,EACJpL,EAAI5uB,IAAM24B,EAAc5X,IAGQ,kBAA3B4X,EAAcvzB,IAAI+D,OACtB6wB,EAAYpL,EAAIr4B,MAAM+D,MACtBs0B,EAAIr4B,MAAM+D,MAASs0B,EAAIhrB,YAAc,EAAK,KAIrCgrB,EAAIhrB,YAAc,IACtBgrB,EAAIr4B,MAAM+D,MAAQ0/B,KAKrBvK,EAAGwK,OAAS,SAAUrL,GACrB,IAAIhlB,EAAGxE,EAAKqwB,EACR/G,GAAQ,EACR+K,EAAO7K,EAAMa,EAAGiF,IAAK+E,KAEzB,IAAM7vB,EAAI,EAAGA,EAAI6vB,EAAK/iC,SAAWg4B,EAAO9kB,IAGvC,IAFAxE,EAAMq0B,EAAK7vB,IAEDwlB,QAAWK,EAAG0F,aAAc/vB,EAAIiwB,SAAaI,EAAehG,EAAGgG,aAAcrwB,EAAI+D,OAA3F,CAIsB,YAAjBssB,IACJrwB,EAAMqwB,GAGP/G,EAAQtpB,EACR,MAGD,OAAOspB,GAGRe,EAAGyK,UAAY,SAAU3mC,EAAS4P,EAAQ5B,GACzC,IAAI44B,EAAiBC,EAAUC,EAAcC,EAEzCC,EAAap3B,GAA4C,YAAlCA,EAAO+K,SAAS6gB,cACvCwK,EAAYhmC,EAASk8B,EAAGiF,KAEvB6E,EAAUv5B,MAAQjB,GAAawC,EAAQvB,OAC3Cu5B,EAAUv5B,IAAM6vB,EAAW/kB,KAAMvX,EAAS,OACrCgmC,EAAUv5B,IACd8vB,EAAWhlB,KAAMvX,EAAS68B,EAASmJ,EAAUv5B,KAE7C+vB,EAAcjlB,KAAMvX,EAAS68B,KAI1BmJ,EAAUnK,SAAWrwB,GAAawC,EAAQ6tB,SAAWK,EAAGoF,WAAathC,EAAQ67B,UACjF+K,EAAkBtK,EAAW/kB,KAAMvX,EAAS,UAC5CgmC,EAAUnK,OAAS+K,EACnBG,GAAe,GAGhBf,EAAUE,KAAO,GAEZc,IACJhB,EAAUiB,KAAM,EAz4BlB,SAA+B1L,EAASsF,GACvC,IAAIxqB,EAAG2a,EAAKc,EAAQ+J,EAKhBqL,EAAU3L,EAAQjwB,qBAAsB,UAE5C,IAAM+K,EAAI,EAAG2a,EAAMkW,EAAQ/jC,OAAQkT,EAAI2a,EAAK3a,KAC3Cyb,EAASoV,EAAS7wB,IACV6lB,EAAGiF,KAAO,GAClBtF,EAAS/J,EAAO5wB,aAAc,YAI7B2/B,EAAWnzB,KAAM,CAChBmuB,OAAQA,EACRiG,MAAOhQ,EAAO5wB,aAAc,SAC5B0U,KAAMkc,EAAO5wB,aAAc,QAC3Bo6B,MAAOxJ,EAAO5wB,aAAc,WAu3B9BimC,CAAsBv3B,EAAQo2B,EAAUE,OAGpCF,EAAUnK,QACdgL,EAAW,CACVhL,OAAQmK,EAAUnK,OAClBP,MAAOgB,EAAW/kB,KAAMvX,EAAS,UAGlCgmC,EAAUE,KAAKx4B,KAAMm5B,IAErBC,GAAgB9K,GAA0BgK,EAAUv5B,MAAQwwB,EAAShjB,KAAK+rB,EAAUnK,QAAU,OAGxEmK,EAAUv5B,KAAQm0B,GAAmBoF,EAAUv5B,IAAKo6B,IAAcA,EAASzD,QAChGyD,EAAShL,QAAU,KAAOmK,EAAUv5B,IACpCo6B,EAASxE,MAAM30B,KAAK,CACnB8f,IAAKwY,EAAUv5B,IACfgiB,EAAG,EACH5c,IAAKg1B,MAIIb,EAAUv5B,KACrBu5B,EAAUE,KAAKx4B,KAAM,CACpBmuB,OAAQmK,EAAUv5B,IAClB6uB,MAAO,OAIT0K,EAAUV,OAAS,KACnBU,EAAUX,OAAS75B,EAInBw6B,EAAUoB,YAAeJ,GAAgBH,IAAa3K,EAAGoF,WAAgBwF,IAAiB5K,EAAGqF,UAExFwF,GAAgB7K,EAAGoF,YAAc0E,EAAUoB,YAC1CR,GACJrK,EAAWhlB,KAAMvX,EAAS88B,EAAY8J,GACtC5mC,EAAQ67B,OAAS,IAEjBW,EAAcjlB,KAAMvX,EAAS88B,IAI3BkJ,EAAUoB,YAAcpB,EAAUnK,UAAamK,EAAUv5B,KAAOzM,EAAQyM,KAASzM,EAAQyM,MAAQyvB,EAAG6E,QAAQiF,EAAUv5B,QACnG,OAAlBu5B,EAAUv5B,IACbzM,EAAQuN,gBAAgB,OAExBvN,EAAQyM,IAAMu5B,EAAUv5B,KAI1Bu5B,EAAUrqB,QAAS,GAGpBugB,EAAGuE,QAAU,SAASzgC,EAASgO,GAC9B,IAAIg4B,EACAqB,EAAUr5B,EAAQqyB,UAAYryB,EAAQoyB,WAGpCpgC,EAASk8B,EAAGiF,MACjBnhC,EAASk8B,EAAGiF,IAAO,IAGpB6E,EAAYhmC,EAASk8B,EAAGiF,KAKlBkG,GAAWrB,EAAUsB,SAAWrL,KAIhC+J,EAAUrqB,SAAU3N,EAAQoyB,YACjClE,EAAGyK,UAAW3mC,EAASA,EAAQsa,WAAYtM,GAGtCg4B,EAAUoB,UAGfpB,EAAUsB,OAASrL,EAlhCrB,SAA6BZ,GAC5B,IAAIkM,EACAC,EAActL,EAAGwK,OAAQrL,GACzBoM,GAAY,EACK,YAAhBD,IACJC,EAAYxL,EACPuL,IACJD,EAAmBrL,EAAGgJ,OAAQsC,GAC9BtL,EAAGiJ,kBAAmBoC,EAAkBlM,KAG1CA,EAAKa,EAAGiF,IAAKmG,OAASG,EAqgCrBC,CAAoB1nC,KAMtBk8B,EAAGsE,SAAW,WACP5C,IAAcN,GAAcG,IAAQp9B,EAAOq9B,mBAtkCjDJ,GAAY,EACZG,EAAMp9B,EAAOq9B,iBACbH,EAAW,GACXC,EAAkB,GAElBtB,EAAGuB,IAAMA,GAAO,EAEhBhiB,EAAM1U,MAAQ5E,KAAKmiB,IAAIjkB,EAAOwG,YAAc,EAAG41B,EAAQ7Y,aACvDnI,EAAMrS,OAASjH,KAAKmiB,IAAIjkB,EAAOygB,aAAe,EAAG2b,EAAQ/Y,cAEzDjI,EAAMksB,GAAKlsB,EAAM1U,MAAQ,IACzB0U,EAAMmsB,GAAKnsB,EAAMrS,OAAS,IAE1B6yB,EAAS,CAAExgB,EAAMrS,OAAQqS,EAAM1U,MAAO02B,GAAMxM,KAAK,KAEjDxV,EAAMosB,GAAK3L,EAAGsH,aACd/nB,EAAMqsB,IAAMrsB,EAAMosB,KA4jCd3L,EAAGsF,YACPzB,GAAc3D,EACdF,EAAGuE,QAAUrE,IAMR8C,GAAW7+B,EAAOg+B,YAAc,QAAU,WAE1Cc,GAAM,SAANA,IACH,IAAIrD,EAAan5B,EAASm5B,YAAc,GAExCsD,GAAU53B,WAAW23B,EAAoB,YAAfrD,EAA2B,IAAO,KACvDn5B,EAASiB,OACbs4B,EAAG6L,YACHlJ,EAAaA,GAAcK,GAASjlB,KAAK6hB,KAExCl0B,aAAcw3B,MAMbA,GAAU53B,WAAW23B,GAAKx8B,EAASiB,KAAO,EAAI,IAyB9Cy7B,GAAkB5C,EAAQ/Y,aAS9BrX,EAAIhM,EAAQ,UA9BYy+B,EAsBT,WACdxB,EAAYn7B,KAAKmiB,IAAIjkB,EAAOwG,YAAc,EAAG41B,EAAQ7Y,eAAiBnI,EAAM1U,OAAS01B,EAAQ/Y,eAAiB2b,GAC9GA,GAAkB5C,EAAQ/Y,aACrB4Z,GACJpB,EAAG6L,YAIoC,GA5BpC9I,GAAQ,SAARA,IACH,IAAI+I,EAAQ,IAAI5G,KAAUpC,GAEtBgJ,EAyBmC,GAxBtCjJ,GAAUv3B,WAAWy3B,EAwBiB,GAxBH+I,IAEnCjJ,GAAU,KACVD,MAIK,WACNE,GAAY,IAAIoC,KAEXrC,KACJA,GAAUv3B,WAAWy3B,GAaiB,QACzC5yB,EAAI1J,EAAU,mBAAoBw8B,KAIpCjD,EAAG6D,YAAcA,GAEjB7D,EAAG6L,SAAWhI,GACd7D,EAAGwE,YAActE,EAGjB2D,GAAYkI,EAAI/L,EAEhB77B,EAAO+8B,eAAiB,CACvBlB,GAAIA,EACJxuB,KAAM,SAAS4J,GACd,IAAI/F,EAAO+F,EAAK4wB,QACQ,mBAAbhM,EAAG3qB,GACb2qB,EAAG3qB,GAAMV,MAAMqrB,EAAI5kB,IAEnBqlB,EAAIprB,GAAQ+F,EAAK,GACbsmB,GACH1B,EAAG6L,SAAU,CAAE1H,UAAU,OAM7B,KAAOlD,GAAcA,EAAWh6B,QAC/B9C,EAAO+8B,eAAe1vB,KAAKyvB,EAAW+K,SAIvC7nC,EAAO0/B,YAAcA,GAGE,WAAlB,EAAOjQ,IAAiD,WAA1B,EAAOA,EAAOC,SAEhDD,EAAOC,QAAUgQ,IAGjBoI,aAAoC,OAAOpI,IAArC,kCAID7D,EAAGsF,aACR9E,EAAO,cA5sCR,SAA4B9mB,EAAMwyB,GAGjC,IAAI/L,EAAQ,IAAIh8B,EAAOgoC,MAUvB,OATAhM,EAAMhW,QAAU,WACfqW,EAAO9mB,IAAS,EAChBmqB,MAED1D,EAAM7V,OAAS,WACdkW,EAAO9mB,GAAyB,IAAhBymB,EAAMt1B,MACtBg5B,MAED1D,EAAM5vB,IAgsCkD,0IA/rCjD,UA+rCiB67B,CAAkB,eAr7C5C,CAw7CKjoC,OAAQsC,W,gFC18CN,SACH47B,GAEA,OAAKA,IAAU,IAAAv8B,UAASu8B,EAAO,8BAIxB57B,SAAS/B,cAAT,sBACY29B,EAAMhtB,KADlB,sCAHI,M,iBAjEf,I,EAAA,UAEA,U,0KAKqBg3B,GADpB,IAAA3oC,WAAU,CAAEC,UAAW,sBAAuB+R,SAAS,G,cAapD,WAAoB5R,I,4FAA2B,cAA3BA,U,sDAEX,WACLG,KAAKqoC,SAAW,CACZC,KAAM,CACFC,cAAevoC,KAAKH,QAAQkB,aAAa,uBACzCynC,UAAWxoC,KAAKH,QAAQkB,aAAa,mBACrC0nC,OAAQC,KAAKC,MAAM3oC,KAAKH,QAAQkB,aAAa,gBAC7C6nC,SAAUF,KAAKC,MACX3oC,KAAKH,QAAQkB,aAAa,kBAE9B8nC,cAAeH,KAAKC,MAChB3oC,KAAKH,QAAQkB,aAAa,yBAGlC+nC,UAAWJ,KAAKC,MAAM3oC,KAAKH,QAAQkB,aAAa,qBAGpDgoC,OAAOC,OAAOhpC,KAAKH,QAAQkB,aAAa,gBAExC,IAAIkoC,QAAQ,CACRC,MAAOlpC,KAAKH,QACZipC,UAAW9oC,KAAKqoC,SAASS,UACzBR,KAAMtoC,KAAKqoC,SAASC,KACpBa,OAAQ,aACRC,SAAU,SAAAC,GACN,IAAMC,EAAe9mC,SAASoX,eAAT,UACd,EAAK/Z,QAAQuJ,GADC,YAIrBkgC,EAAat3B,MAAQq3B,EACfN,OAAOM,GAAMF,OAAO,cACpB,KAEN,IAAM/jC,EAAQ5C,SAASmqB,YAAY,cACnCvnB,EAAMwnB,UAAU,UAAU,GAAO,GACjC0c,EAAazuB,cAAczV,W,wHCvD3C,I,EAAA,UAEA,UACA,UACA,U,0KAGqBmkC,GADpB,IAAA9pC,WAAU,CAAEC,UAAW,wBAAyB+R,SAAS,G,cAEtD,WAAoB+3B,I,4FAAgD,cAAhDA,W,sDAEL,WACX,IAAI,IAAA3nC,UAAS7B,KAAKwpC,SAAU,aAAc,CAMtC,IAAMzgB,EAAS/oB,KAAKwpC,SAAS1nC,cAAcqJ,qBACvC,UACF,GAEE4d,IAWA/oB,KAAKypC,YAAY1gB,GACjBA,EAAO5oB,iBAAiB,UAAU,kBAC9B,EAAKspC,YAAY1gB,YAGtB,IAAI,IAAAlnB,UAAS7B,KAAKwpC,SAAU,uBAAwB,CACvD,IAAME,EAAS1pC,KAAKwpC,SAAS1nC,cAAcrB,cAA5B,qCACmBT,KAAKwpC,SAASp4B,KAAKhB,QAC7C,cACA,IAHO,OAOXs5B,IACA1pC,KAAKypC,YAAYC,GACjBA,EAAOvpC,iBAAiB,UAAU,kBAAM,EAAKspC,YAAYC,YAG7D1pC,KAAKypC,cACLzpC,KAAKwpC,SAASrpC,iBAAiB,SAAS,kBAAM,EAAKspC,iBACnDzpC,KAAKwpC,SAASrpC,iBAAiB,UAAU,kBAAM,EAAKspC,iBAKxDjnC,SAASrC,iBAAiB,oBAAoB,kBAAM,EAAKspC,mB,oCAK3D,IADE5pC,EACF,uDADkDG,KAAKwpC,SAE7B,WAApB3pC,EAAQyP,SAEJq6B,GAAKA,EAAEC,WAAa/pC,EAAQmS,OAC5B23B,EAAE9pC,GAASgqC,QAIfhqC,EAAQmS,OACR,IAAAtP,UAAS1C,KAAKwpC,SAAU,gBAExB,IAAAjmC,aAAYvD,KAAKwpC,SAAU,oB,mICzEvC,I,EAAA,UACA,U,oQAEA,IAGMM,E,WAMF,WAAoBjqC,GAAsB,eAFlCkqC,YAAc/pC,KAAKmF,aAAa4a,KAAK/f,MAEH,KAAtBH,UAChBG,KAAKgqC,eAAiBnqC,EAAQ4C,uBAC1B,mBACF,GAEFzC,KAAKiqC,eAAiBpqC,EAAQsL,qBAAqB,UAAU,GAE7DnL,KAAKmoB,Q,qDAhBQ,WAqBSnoB,KAAKH,SAEnBG,KAAKgqC,gBAAkBhqC,KAAKiqC,gBAC5BjqC,KAAKgqC,eAAe7pC,iBAAiB,QAASH,KAAK+pC,aAI3D/pC,KAAKH,QAAL,OAA6BG,O,qCAI7BA,KAAKkqC,OACLlqC,KAAKgqC,eAAehkC,oBAAoB,QAAShG,KAAK+pC,e,6BAMtD,IAAqD,IAAjD/pC,KAAKiqC,eAAe39B,IAAI9L,QAAQ,YAAoB,CACpD,IAA8C,IAA1CR,KAAKiqC,eAAe39B,IAAI9L,QAAQ,KAChCR,KAAKiqC,eAAe39B,KAAO,kBACxB,CACH,IAAIA,EAAMtM,KAAKiqC,eAAe39B,IAAI+hB,MAAM,KACxCruB,KAAKiqC,eAAe39B,IAAMA,EAAI,GAAK,eAAiBA,EAAI,IAE5D,IAAA5J,UAAS1C,KAAKH,QAAS,mB,sBAMpB,SAASsqC,EAAOtqC,GAC3B,IAAIkO,EAAOlO,EAAO,OAMlB,OAJKkO,IACDA,EAAO,IAAI+7B,EAAajqC,IAGrBkO,E,IAIEq8B,GADZ,IAAA3qC,WAAU,CAAEC,UAAW,YAAa+R,SAAS,G,GAE1C,WAAoB5R,GAAsB,eAAtBA,UAChBsqC,EAAOtqC,M,uFCJA,SACdA,GAEA,OAAO,IAAIwqC,EAAoBxqC,I,6BAnEhC,c,0KAEawqC,E,WAKZ,WAAoBxqC,GAA2B,Y,4FAAA,cAA3BA,UACnBG,KAAKsqC,OAAStqC,KAAKH,QACjB0qC,QAAQ,QACR9pC,cAAc,iBAChBT,KAAKwqC,QAAUxqC,KAAKH,QAAQkB,aAAa,iBACzCf,KAAKyqC,WAAazqC,KAAKH,QAAQkB,aAAa,oBAE5C,IAAI2pC,EACH,4CAA8C1qC,KAAKwqC,QAC9CG,EAAUnoC,SAASwK,gBAAgB49B,KACrCD,IACHD,GAAa,OAASC,IAGvB,IAAAE,YAAWH,GACTI,MAAK,WACL,EAAK1gC,UAEL2gC,OAAM,SAACC,GAAD,OAASjmC,QAAQ+I,MAAM,QAASk9B,M,oDAG1B,WAEdhrC,KAAKH,QAAQorC,KAAKxqC,cAAc,iBAAiB+C,aAAa,WAAW,YAEzE0nC,WAAWC,OAAM,WAChB,EAAKC,qB,sCAiBiB,WACvBF,WACEG,QAAQrrC,KAAKwqC,QAAS,CACtBc,OAAQtrC,KAAKyqC,aAEbK,MAAK,SAACS,GAEN,EAAK1rC,QAAQorC,KAAKxqC,cAAc,iBAAiB2M,gBAAgB,YACjE,EAAKvN,QAAQmS,MAAQu5B,KAEvBlkC,YAAW,kBAAM,EAAK+jC,kBAAiB,U,yHCe1B,SACbvrC,GAEA,OAAO,IAAI2rC,EAAmB3rC,I,4BA9EhC,c,0KAEa2rC,E,WAKX,WAAoB3rC,GAAsB,Y,4FAAA,cAAtBA,UAClBG,KAAKyrC,SAAW9B,EAAE9pC,GAClBG,KAAK0rC,MAAQ1rC,KAAKyrC,SAASlB,QAAQ,QAEnC,IAAIG,EACF,mFACIC,EAAU3qC,KAAKyrC,SAAS19B,KAAK,MAC/B48B,IACFD,GAAa,OAASC,IAGxB,IAAAE,YAAWH,GAAWK,OAAM,SAACC,GAAD,OAASjmC,QAAQ+I,MAAM,QAASk9B,MAE5D9qC,OAAOyrC,wBAA0B,WAC/B,EAAKvhC,Q,oDAIM,WACb,IACE8gC,WAAWU,OAAO5rC,KAAKyrC,SAAS,GAAI,CAClC5mC,SAAU,SAACgnC,GAAD,OAAc,EAAKhnC,SAASgnC,IACtCC,QAAS9rC,KAAKyrC,SAAS19B,KAAK,aAG9B/N,KAAK+rC,UAAY/rC,KAAK0rC,MAAMtvB,KAAK,yBAEjCpc,KAAK+rC,UACFtc,KAAK,oBAAqBzvB,KAAKyrC,SAAS19B,KAAK,YAC7C0hB,KAAK,WAAY,QACjBA,KAAK,WAAY,YACjBA,KAAK,WAAY,YACjB2P,IAAI,CACHlK,QAAS,QACTjsB,OAAQ,MACRrC,MAAO,MACPolC,OAAQ,OACRC,OAAQ,MAGZjsC,KAAKksC,aAELlsC,KAAK0rC,MAAMx/B,GAAG,UAAU,SAACM,GAGvB,OAAwB,IAFP0+B,WAAWiB,cAEfnpC,UAMf,MAAO8K,O,+BAKM+9B,GACf7rC,KAAK+rC,UAAUlC,QACf7pC,KAAKksC,e,mCAILlsC,KAAK0rC,MAAMU,WAAW,aACtBpsC,KAAK0rC,MAAMU,WAAW,yBACtBzC,EAAEC,UAAUyC,YAAY1D,MAAM3oC,KAAK0rC,Y,uICvEvC,I,EAAA,UACA,UAGaY,GADZ,IAAA7sC,WAAU,CAAEC,UAAW,a,GAGpB,WAAoBG,I,4FAA4B,cAA5BA,UAChBG,KAAK+oB,OAAS,IAAI1B,SAAOxnB,EAAS,CACvCgoB,QAAS,CACR7W,UAAW,WACXpB,OAAQ,WACRkY,YAAa,gBACbL,SAAU,aACV+C,SAAU,S,sCCbd,QACA,OAEA,QACA,Q,yECAO,WACH,OAAOtqB,OAAOwG,WALU,M,sBAarB,WACH,OAAOxG,OAAOwG,YAAc,M,qCAGzB,SAA4C6lC,GAG/C,OAFkBA,EAAiBC,IAClB5rC,K,iDAnBO,KACrB,IAAM4rC,EAAY,KAQlB,SAAS5rC,IACZ,OAAOV,OAAOwG,WAAa8lC,E,+FCJxB,SACN3nC,GAEC,IADD8H,EACC,uDAD0BnK,SAASiB,KAEpC,IAAK,IAAA7C,SAAL,CAOA,IAAMgM,GAAS,IAAAhJ,sBAEXgJ,GAAU,GACbC,uBAAsB,WACrBF,EAAY9J,MAAMrB,IAAlB,UAA2BuL,EAAYH,GAAvC,MAGApK,SAASiB,KAAKZ,MAAMoG,OAAS,OAC7BzG,SAASwK,gBAAgBnK,MAAMoG,OAAS,OAExC0D,EAAY9J,MAAMoK,SAAW,QAC7BN,EAAY9J,MAAM+D,MAAQ,OAC1B+F,EAAY9J,MAAMoG,OAAS,OAC3B0D,EAAY9J,MAAMqK,SAAW,SAI7B7F,YAAW,kBAAMxC,MAAY,aAvB9BA,K,kBA4BK,WAAmE,IAA1C8H,EAA0C,uDAAfnK,SAASiB,KACnE,IAAK,IAAA7C,SAAL,CAMA,IAAMgM,EAASG,GAAY,IAAAtL,cAAakL,EAAY9J,MAAMrB,MAE1DmL,EAAY9J,MAAMrB,IAAM,KAGxBmL,EAAY9J,MAAMoK,SAAW,KAC7BN,EAAY9J,MAAM+D,MAAQ,KAC1B+F,EAAY9J,MAAMoG,OAAS,KAC3B0D,EAAY9J,MAAMqK,SAAW,KAEzBN,GAAU,GACb1K,SAAS,EAAG0K,K,kBAIP,WACN,IAAMS,EAA+B,GAG/BnE,EAAS1G,SAASC,uBACvB,qBACC,GAYF,OAXsBD,SAASC,uBAC9B,qBACC,GAEEyG,GACHmE,EAASE,KAAKrE,GAMRlH,KAAKC,MACXoL,EACEpG,KAAI,SAAA6B,GAAC,OAAIA,EAAEtC,wBAAwByC,UACnCuE,QAAO,SAACC,EAAIC,GAAL,OAAYD,EAAKC,IAAI,KAlFhC,aACA,UACA,UAoFA,SAASX,EAAYH,GACpB,OAAkB,IAAXA,EAAeA,GAAmB,EAAVA,I,2CCtFhC,SAAgB,kBAAkB,kBAAkB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,iBAAiB,iBAAiB,kBAAkB,kBAAkB,aAAa,aAAa,KAAO,OAAO,aAAa,aAAa,SAAW,WAAW,iBAAiB,iBAAiB,gBAAgB,gBAAgB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,uBAAuB,uBAAuB,eAAe,eAAe,qBAAqB,qBAAqB,2BAA2B,2BAA2B,iCAAiC,iCAAiC,iCAAiC,iCAAiC,iCAAiC,iCAAiC,kCAAkC,kCAAkC,kCAAkC,kCAAkC,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,YAAY,YAAY,oCAAoC,oCAAoC,oCAAoC,oCAAoC,oCAAoC,oCAAoC,oCAAoC,oCAAoC,sCAAsC,sCAAsC,yCAAyC,yCAAyC,yCAAyC,yCAAyC,yCAAyC,yCAAyC,y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AAY,YAAY,YAAY,YAAY,SAAS,SAAS,cAAc,cAAc,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,SAAS,SAAS,cAAc,cAAc,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,SAAS,SAAS,cAAc,cAAc,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,SAAS,SAAS,cAAc,cAAc,cAAc,cAAc,aAAa,aAAa,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,YAAY,YAAY,iBAAiB,iBAAiB,gBAAgB,gBAAgB,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,eAAe,eAAe,eAAe,eAAe,iBAAiB,iBAAiB,gBAAgB,gBAAgB,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,eAAe,eAAe,eAAe,eAAe,iBAAiB,iBAAiB,gBAAgB,gBAAgB,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,eAAe,eAAe,eAAe,eAAe,iBAAiB,iBAAiB,gBAAgB,gBAAgB,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,eAAe,eAAe,eAAe,eAAe,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,qBAAqB,qBAAqB,qBAAqB,qBAAqB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,wBAAwB,wBAAwB,wBAAwB,wBAAwB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,wBAAwB,wBAAwB,wBAAwB,wBAAwB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,wBAAwB,wBAAwB,wBAAwB,wBAAwB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,uBAAuB,wBAAwB,wBAAwB,wBAAwB,wBAAwB,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,iBAAiB,iBAAiB,wBAAwB,wBAAwB,SAAS,SAAS,kBAAkB,kBAAkB,mBAAmB,mBAAmB,kBAAkB,kBAAkB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,uBAAuB,uBAAuB,UAAU,UAAU,4BAA4B,4BAA4B,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,sBAAsB,sBAAsB,4BAA4B,4BAA4B,iBAAiB,iBAAiB,oBAAoB,oBAAoB,uBAAuB,uBAAuB,qBAAqB,qBAAqB,SAAS,SAAS,iBAAiB,iBAAiB,YAAc,cAAc,wBAAwB,wBAAwB,QAAQ,QAAQ,SAAS,SAAS,mBAAmB,mBAAmB,iBAAiB,iBAAiB,gBAAgB,gBAAgB,aAAa,aAAa,kBAAkB,kBAAkB,YAAY,YAAY,sBAAsB,sBAAsB,uBAAuB,uBAAuB,YAAY,YAAY,aAAa,aAAa,oBAAoB,oBAAoB,0BAA0B,0BAA0B,iCAAiC,iCAAiC,mBAAmB,mBAAmB,YAAY,YAAY,WAAW,WAAW,aAAa,aAAa,2BAA2B,2BAA2B,cAAc,cAAc,oBAAoB,oBAAoB,2BAA2B,2BAA2B,kBAAkB,kBAAkB,0BAA0B,0BAA0B,gBAAgB,gBAAgB,iBAAiB,iBAAiB,SAAS,SAAS,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,gCAAgC,gCAAgC,gBAAgB,gBAAgB,OAAS,SAAS,qBAAqB,qBAAqB,YAAc,cAAc,wBAAwB,wBAAwB,eAAiB,iBAAiB,cAAc,cAAc,iBAAiB,iBAAiB,QAAU,UAAU,sBAAsB,sBAAsB,aAAe,eAAe,yBAAyB,yBAAyB,gBAAkB,kBAAkB,eAAe,eAAe,0BAA0B,0BAA0B,qCAAqC,qCAAqC,iBAAiB,iBAAiB,WAAW,WAAW,gBAAgB,gBAAgB,oBAAoB,oBAAoB,WAAW,WAAW,aAAa,aAAa,iBAAiB,iBAAiB,gCAAgC,gCAAgC,2CAA2C,2CAA2C,uCAAuC,uCAAuC,6CAA6C,6CAA6C,WAAW,WAAW,mBAAmB,mBAAmB,WAAW,WAAW,uBAAuB,uBAAuB,SAAS,SAAS,WAAW,WAAW,gBAAgB,gBAAgB,oBAAoB,oBAAoB,iCAAiC,iCAAiC,uCAAuC,uCAAuC,kBAAkB,kBAAkB,uBAAuB,uBAAuB,aAAa,aAAa,4BAA4B,4BAA4B,YAAY,YAAY,4BAA4B,4BAA4B,6BAA6B,6BAA6B,oBAAoB,oBAAoB,WAAW,WAAW,gCAAgC,gCAAgC,kBAAkB,kBAAkB,sBAAsB,sBAAsB,wBAAwB,wBAAwB,cAAc,cAAc,cAAc,cAAc,mBAAmB,mBAAmB,4BAA4B,4BAA4B,kCAAkC,kCAAkC,wCAAwC,wCAAwC,mBAAmB,mBAAmB,wBAAwB,wBAAwB,kBAAkB,kBAAkB,WAAW,WAAW,iBAAiB,iBAAiB,sBAAsB,sBAAsB,uBAAuB,uBAAuB,4BAA4B,4BAA4B,yBAAyB,yBAAyB,0BAA0B,0BAA0B,cAAc,cAAc,qBAAqB,qBAAqB,UAAU,UAAU,sBAAsB,sBAAsB,yBAAyB,yBAAyB,4BAA4B,4BAA4B,qBAAqB,qBAAqB,qBAAqB,qBAAqB,qBAAqB,qBAAqB,8BAA8B,8BAA8B,oCAAoC,oCAAoC,8BAA8B,8BAA8B,WAAW,WAAW,oBAAoB,oBAAoB,kBAAkB,kBAAkB,iBAAiB,iBAAiB,YAAY,YAAY,uBAAuB,uBAAuB,uBAAuB,uBAAuB,UAAU,UAAU,yBAAyB,yBAAyB,aAAa,aAAa,4BAA4B,4BAA4B,YAAY,YAAY,cAAc,cAAc,gBAAgB,gBAAgB,6BAA6B,6BAA6B,WAAW,WAAW,iCAAiC,iCAAiC,MAAQ,QAAQ,2BAA2B,2BAA2B,cAAc,cAAc,mCAAmC,mCAAmC,aAAa,aAAa,OAAS,SAAS,+BAA+B,+BAA+B,cAAc,cAAc,MAAQ,QAAQ,eAAe,eAAe,yBAAyB,yBAAyB,yBAAyB,yBAAyB,wBAAwB,wBAAwB,6BAA6B,6BAA6B,iDAAiD,iDAAiD,wCAAwC,wCAAwC,qCAAqC,qCAAqC,6CAA6C,6CAA6C,yCAAyC,yCAAyC,kDAAkD,kDAAkD,0CAA0C,0CAA0C,iDAAiD,iDAAiD,wBAAwB,wBAAwB,wBAAwB,wBAAwB,uBAAuB,uBAAuB,mBAAmB,mBAAmB,2BAA2B,2BAA2B,4BAA4B,4BAA4B,cAAc,cAAc,WAAW,WAAW,aAAa,aAAa,cAAc,cAAc,cAAc,cAAc,aAAa,aAAa,WAAW,WAAW,gBAAgB,gBAAgB,MAAQ,QAAQ,kBAAkB,kBAAkB,cAAc,cAAc,WAAW,WAAW,sBAAsB,sBAAsB,kBAAkB,kBAAkB,wBAAwB,wBAAwB,iBAAiB,iBAAiB,kBAAkB,kBAAkB,kBAAkB,kBAAkB,kBAAkB,kBAAkB,uBAAuB,uBAAuB,iBAAiB,iBAAiB,aAAa,aAAa,qBAAqB,qBAAqB,iBAAiB,iBAAiB,eAAe,eAAe,sBAAsB,sBAAsB,6BAA6B,6BAA6B,4BAA4B,4BAA4B,gBAAgB,gBAAgB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,0BAA0B,0BAA0B,mCAAmC,mCAAmC,yBAAyB,yBAAyB,0BAA0B,0BAA0B,WAAW,WAAW,mBAAmB,mBAAmB,iBAAiB,iBAAiB,0BAA0B,0BAA0B,oBAAoB,oBAAoB,2BAA2B,2BAA2B,kCAAkC,kCAAkC,iCAAiC,iCAAiC,gCAAgC,gCAAgC,iCAAiC,iCAAiC,4BAA4B,4BAA4B,cAAc,cAAc,0BAA0B,0BAA0B,sBAAsB,sBAAsB,kCAAkC,kCAAkC,iCAAiC,iCAAiC,+BAA+B,+BAA+B,mCAAmC,mCAAmC,6BAA6B,6BAA6B,qCAAqC,qCAAqC,qCAAqC,qCAAqC,4BAA4B,4BAA4B,qCAAqC,qCAAqC,UAAU,UAAU,UAAU,UAAU,gBAAgB,gBAAgB,gBAAgB,gBAAgB,aAAa,aAAa,mBAAmB,mBAAmB,mBAAmB,mBAAmB,aAAa,aAAa,mBAAmB,mBAAmB,mBAAmB,mBAAmB,aAAa,aAAa,mBAAmB,mBAAmB,mBAAmB,mBAAmB,aAAa,aAAa,mBAAmB,mBAAmB,mBAAmB,mBAAmB,kBAAkB,kBAAkB,wBAAwB,wBAAwB,wBAAwB,wBAAwB,wBAAwB,wBAAwB,wBAAwB,wBAAwB,qBAAqB,qBAAqB,kBAAkB,kBAAkB,wBAAwB,wBAAwB,yBAAyB,yBAAyB,wBAAwB,wBAAwB,OAAS,SAAS,kBAAkB,kBAAkB,iBAAiB,iBAAiB,wBAAwB,wBAAwB,+BAA+B,+BAA+B,oBAAoB,oBAAoB,yBAAyB,yBAAyB,YAAY,YAAY,kBAAkB,kBAAkB,sBAAsB,sBAAsB,2BAA2B,2BAA2B,4BAA4B,4BAA4B,0BAA0B,0BAA0B,6BAA6B,6BAA6B,qBAAqB,qBAAqB,oBAAoB,oBAAoB,kBAAkB,kBAAkB,iBAAiB,iBAAiB,qBAAqB,qBAAqB,qBAAqB,qBAAqB,yBAAyB,yBAAyB,uBAAuB,uBAAuB,6BAA6B,6BAA6B,aAAa,aAAa,qBAAqB,qBAAqB,oBAAoB,oBAAoB,2BAA2B,2BAA2B,6BAA6B,6BAA6B,6BAA6B,6BAA6B,2BAA2B,2BAA2B,4BAA4B,4BAA4B,+BAA+B,+BAA+B,oCAAoC,oCAAoC,2BAA2B,2BAA2B,kCAAkC,kCAAkC,uCAAuC,uCAAuC,uCAAuC,uCAAuC,4CAA4C,4CAA4C,uCAAuC,uCAAuC,4CAA4C,4CAA4C,8BAA8B,8BAA8B,6BAA6B,6BAA6B,gCAAgC,gCAAgC,qCAAqC,qCAAqC,yCAAyC,yCAAyC,yBAAyB,yBAAyB,mBAAmB,mBAAmB,4BAA4B,4BAA4B,8BAA8B,8BAA8B,4BAA4B,4BAA4B,wBAAwB,wBAAwB,+BAA+B,+BAA+B,wBAAwB,wBAAwB,wBAAwB,wBAAwB,sBAAsB,sBAAsB,wBAAwB,wBAAwB,wBAAwB,wBAAwB,uBAAuB,uBAAuB,wBAAwB,wBAAwB,8BAA8B,8BAA8B,8BAA8B,8BAA8B,sBAAsB,sBAAsB,mBAAmB,mBAAmB,cAAc,cAAc,qBAAqB,qBAAqB,cAAc,cAAc,sBAAsB,sBAAsB,cAAc,cAAc,oBAAoB,oBAAoB,oBAAoB,oBAAoB,cAAc,cAAc,kBAAkB,kBAAkB,eAAe,eAAe,4BAA4B,4BAA4B,4CAA4C,4CAA4C,oCAAoC,oCAAoC,wCAAwC,wCAAwC,6BAA6B,6BAA6B,oCAAoC,oCAAoC,WAAW,WAAW,kBAAkB,kBAAkB,oBAAoB,oBAAoB,kBAAkB,kBAAkB,cAAc,cAAc,gCAAgC,gCAAgC,yCAAyC,yCAAyC,sBAAsB,sBAAsB,cAAc,cAAc,uBAAuB,uBAAuB,8BAA8B,8BAA8B,uCAAuC,uCAAuC,gCAAgC,gCAAgC,qBAAqB,qBAAqB,6BAA6B,6BAA6B,2BAA2B,2BAA2B,4BAA4B,4BAA4B,6BAA6B,6BAA6B,6CAA6C,6CAA6C,yCAAyC,yCAAyC,6CAA6C,6CAA6C,8BAA8B,8BAA8B,uCAAuC,uCAAuC,gBAAgB,gBAAgB,0CAA0C,0CAA0C,sBAAsB,sBAAsB,0CAA0C,0CAA0C,0CAA0C,0CAA0C,0CAA0C,0CAA0C,0CAA0C,6CCAx96D6/B,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,GAAGF,EAAyBE,GAC3B,OAAOF,EAAyBE,GAAU/c,QAG3C,IAAID,EAAS8c,EAAyBE,GAAY,CACjDvjC,GAAIujC,EACJC,QAAQ,EACRhd,QAAS,IAUV,OANAid,EAAoBF,GAAUhd,EAAQA,EAAOC,QAAS8c,GAGtD/c,EAAOid,QAAS,EAGTjd,EAAOC,QCtBf8c,EAAoBpe,EAAI,CAACsB,EAASkd,KACjC,IAAI,IAAI76B,KAAO66B,EACXJ,EAAoB5jC,EAAEgkC,EAAY76B,KAASy6B,EAAoB5jC,EAAE8mB,EAAS3d,IAC5Ee,OAAOwE,eAAeoY,EAAS3d,EAAK,CAAEukB,YAAY,EAAMzjB,IAAK+5B,EAAW76B,MCJ3Ey6B,EAAoB5jC,EAAI,CAACmP,EAAK80B,IAAS/5B,OAAOuC,UAAUN,eAAemC,KAAKa,EAAK80B,GCCjFL,EAAoBp8B,EAAKsf,IACH,oBAAXuE,QAA0BA,OAAO6Y,aAC1Ch6B,OAAOwE,eAAeoY,EAASuE,OAAO6Y,YAAa,CAAEh7B,MAAO,WAE7DgB,OAAOwE,eAAeoY,EAAS,aAAc,CAAE5d,OAAO,KCLvD06B,EAAoBO,IAAOtd,IAC1BA,EAAOud,MAAQ,GACVvd,EAAO/mB,WAAU+mB,EAAO/mB,SAAW,IACjC+mB,G,MCHR,cACA,QACA,MAEA,I,MAAA,UAEA,UACA,aACA,UAEA,aACA,aACA,YACA,UACA,UAEA,UAEA,UACA,UACA,UACA,S,qJAGM6b,GADL,IAAA/rC,WAAU,CAAEC,UAAW,eAAgB+R,SAAS,G,GAEhD,WAAoB5R,GAAsB,eAAtBA,WACnB,aAAmBA,M,EAKfwqC,GADL,IAAA5qC,WAAU,CAAEC,UAAW,iBAAkB+R,SAAS,G,GAElD,WAAoB5R,GAA2B,eAA3BA,WACnB,aAAoBA,M,EAKhBstC,GADL,IAAA1tC,WAAU,CAAEC,UAAW,wBAAyB+R,SAAS,G,GAEzD,WAAoB5R,GAAsB,eAAtBA,UACfA,EAAQ4M,aAAa,YACxB5M,EAAQM,iBAAiB,SAAS,WACjC,IAAMiJ,EAAKvJ,EAAQkB,aAAa,WAC1BqsC,EAAW5qC,SAAS/B,cACzB,QAAU2I,EAAK,MAGZgkC,IACHA,EAASC,SAAU,S,GAOxB,IAAAt1B,SAAQ,CACPpK,oBACAy8B,SACAkC,kBACAnqC,SACAvC,SACA+H,gBACA4hC,UACA4D,EACA3B,EACAnB,EACAjC,UACA5oC,SACA8L,gCACArB,iCACAlG,2BAfD,CAgBGvB,SAASiB,O","file":"Scripts/hblsolutions.js","sourcesContent":["import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { getOffset } from '@opten/dom/get-offset';\r\nimport { Collapse } from '@opten/collapse/initializer';\r\nimport { getSelectorElementFromElement } from '@opten/dom/get-selector-element-from-element';\r\nimport { getCss } from '@opten/dom/get-css';\r\nimport { parseCssUnit } from '@opten/number/parse-css-unit';\r\nimport { getStickyOffset } from '../../../Opten.HypothekarbankLenzburg.Web.Static/app/utilities/scroll-helper';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { isDesktopSmaller, isPad, isPadSmall } from '../utilities/detection';\r\nimport { ComponentRef } from '@opten/compiler/metadata/di';\r\nimport { Navbar } from './navbar';\r\n\r\n@Component({ className: 'js-anchor' })\r\nexport class Anchor implements OnInit {\r\n\t@ComponentRef(Navbar) _navbar: Navbar;\r\n\tconstructor(private element: HTMLElement) {}\r\n\r\n\tonInit() {\r\n\t\tthis.check();\r\n\t\twindow.addEventListener('hashchange', () => this.check());\r\n\t\twindow.addEventListener('popstate', () => this.check());\r\n\t}\r\n\r\n\tcheck() {\r\n\t\tif (this._canScroll()) {\r\n\t\t\tthis._scroll();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _canScroll(): boolean {\r\n\t\tconst hash = window.location.hash;\r\n\r\n\t\treturn hash && hash.indexOf('#anchor-') !== -1;\r\n\t}\r\n\r\n\tprivate getElement(): HTMLElement {\r\n\t\tif (this._canScroll()) {\r\n\t\t\treturn this.element.querySelector(\r\n\t\t\t\t`[data-anchor='${window.location.hash.substring(1)}']`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _scroll() {\r\n\t\tconst element = this.getElement();\r\n\r\n\t\tif (element) {\r\n\t\t\tif (isPad()) {\r\n\t\t\t\tthis._navbar.close();\r\n\t\t\t}\r\n\t\t\t// check if it's an accordion element, so we can open it\r\n\t\t\tif (element.getAttribute('data-toggle') === 'collapse') {\r\n\t\t\t\tconst target = getSelectorElementFromElement(\r\n\t\t\t\t\telement,\r\n\t\t\t\t\t'data-target',\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (target) {\r\n\t\t\t\t\tconst api = new Collapse(target);\r\n\r\n\t\t\t\t\t// check if the collapse is already open\r\n\t\t\t\t\t// because then the shown event might not be triggered!\r\n\t\t\t\t\tif (api.isOpen()) {\r\n\t\t\t\t\t\tthis._animate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttarget.addEventListener(\r\n\t\t\t\t\t\t\t'shown.opten.collapse',\r\n\t\t\t\t\t\t\tthis._handleCollapse\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tapi.show();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// fallback\r\n\t\t\t\t\tthis._animate();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// otherwise just scroll to the element...\r\n\t\t\t\tthis._animate();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _animate() {\r\n\t\tconst element = this.getElement();\r\n\r\n\t\tif (element) {\r\n\t\t\tlet offset = getOffset(element).top();\r\n\r\n\t\t\toffset += parseCssUnit(getCss(element, 'margin-top')) * -1;\r\n\t\t\toffset += getStickyOffset() * -1;\r\n\t\t\tif(isPadSmall() == false){\r\n\t\t\t\tif (\r\n\t\t\t\t\thasClass(element.parentElement, 'theme--base') == false &&\r\n\t\t\t\t\thasClass(element.parentElement, 'theme--base-secondary') ==\r\n\t\t\t\t\t\tfalse\r\n\t\t\t\t) {\r\n\t\t\t\t\toffset -= isDesktopSmaller() ? 75 : 90;\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\toffset -= 75;\r\n\t\t\t}\r\n\r\n\t\t\toffset = Math.round(offset);\r\n\r\n\t\t\twindow.scrollTo(0, offset);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleCollapse = () => {\r\n\t\tthis._animate();\r\n\t};\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { getWindowScrollTop } from '@opten/dom/get-window-scroll-top';\r\nimport { isPad } from '../../utilities/detection';\r\n\r\n@Component({ className: 'js-header' })\r\nexport class Header implements OnInit {\r\n\tprivate _height: number;\r\n\tprivate _topCache: number;\r\n\tprivate _paddingTop: number | null = null;\r\n\t// private _sidebar: Sidebar;\r\n\tprivate _dropdowns: HTMLCollectionOf;\r\n\r\n\t// prevent multiple resizings to add more height\r\n\t// if it's the same height as before!\r\n\tprivate _cachedHeight: number | null = null;\r\n\r\n\t// if we don't have a tangram,\r\n\t// we always want to show the shadow!\r\n\tprivate _handleBoxShadow: boolean = true;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis._handleBoxShadow = !hasClass(element, '--shadow');\r\n\t}\r\n\r\n\tonInit() {\r\n\t\tthis._dropdowns = document.getElementsByClassName(\r\n\t\t\t'js-navbar-mega-dropdown'\r\n\t\t);\r\n\r\n\t\taddClass(this.element, '--sticky');\r\n\t\t// this._sidebar = new Sidebar(\r\n\t\t// \tdocument.getElementsByClassName('js-sidebar')[0] as HTMLElement\r\n\t\t// );\r\n\t\tthis._handleScroll();\r\n\t\twindow.addEventListener('scroll', () => this._handleScroll());\r\n\t}\r\n\r\n\tpublic _update(top: number) {\r\n\t\tif (top !== null) {\r\n\t\t\tif (top !== this._topCache) {\r\n\t\t\t\tthis._topCache = top;\r\n\t\t\t\tthis.element.style.top = `${top}px`;\r\n\t\t\t\tthis._hideDropdown();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _hideDropdown() {\r\n\t\tif (this._dropdowns && this._dropdowns.length > 0) {\r\n\t\t\tlet toggler;\r\n\t\t\tArray.from(this._dropdowns).forEach(dropdown => {\r\n\t\t\t\tif (dropdown.classList.contains('--show')) {\r\n\t\t\t\t\tremoveClass(dropdown.parentElement, 'is-active');\r\n\t\t\t\t\tremoveClass(dropdown, '--show');\r\n\t\t\t\t\ttoggler = dropdown.parentElement.getElementsByClassName(\r\n\t\t\t\t\t\t'js-navbar-mega-dropdown-toggler'\r\n\t\t\t\t\t)[0];\r\n\t\t\t\t\tif (toggler) {\r\n\t\t\t\t\t\ttoggler.setAttribute('aria-expanded', 'false');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleScroll() {\r\n\t\tif (document.body.classList.contains('going-down')) {\r\n\t\t\tthis._handleScrollDown();\r\n\t\t} else if (document.body.classList.contains('going-up')) {\r\n\t\t\tthis._handleScrollUp();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleScrollDown() {\r\n\t\tif (getWindowScrollTop() > this._height) {\r\n\t\t\tthis._update(-this._height);\r\n\t\t\t// this._sidebar._update(0);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleScrollUp() {\r\n\t\tif (getWindowScrollTop() <= this._height) {\r\n\t\t\tthis._update(0);\r\n\t\t\t// this._sidebar._update(this._height);\r\n\t\t} else {\r\n\t\t\tthis._update(0);\r\n\t\t\t// this._sidebar._update(this._height);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\n\r\n@Component({ className: 'js-logolist-slider' })\r\nexport class LogoListSliderComponent {\r\n\tprivate instance: Swiper;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.instance = new Swiper(element, {\r\n\t\t\tslidesPerView: 4,\r\n\t\t\tspaceBetween: 10,\r\n\t\t\tloop: true,\r\n\t\t\tspeed: 5000,\r\n\t\t\tautoplay: {\r\n\t\t\t\tdelay: 0,\r\n\t\t\t\tdisableOnInteraction: false\r\n\t\t\t},\r\n\t\t\tbreakpoints: {\r\n\t\t\t\t768: {\r\n\t\t\t\t\tslidesPerView: 4\r\n\t\t\t\t},\r\n\t\t\t\t1024: {\r\n\t\t\t\t\tslidesPerView: 6\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { addTransitionEndListener } from '@opten/transition/add-transition-end-listener';\r\n\r\nconst transitionDuration = 600;\r\n\r\nexport function showMegaDropdown(\r\n dropdown: HTMLElement,\r\n backdropElement?: HTMLElement,\r\n callback?: () => void\r\n) {\r\n if (callback) {\r\n addTransitionEndListener(\r\n dropdown,\r\n () => callback(),\r\n transitionDuration\r\n );\r\n }\r\n console.log('showMegaDropdown');\r\n addClass(dropdown, '--show');\r\n\r\n if (backdropElement) {\r\n addClass(backdropElement, '--show');\r\n }\r\n}\r\n\r\nexport function hideMegaDropdown(\r\n dropdown: HTMLElement,\r\n backdropElement?: HTMLElement,\r\n callback?: () => void\r\n) {\r\n // add fade-out class for faster animations\r\n addClass(dropdown, '--fade-out');\r\n removeClass(dropdown, '--show');\r\n\r\n if (backdropElement) {\r\n // add fade-out class for faster animations\r\n addClass(backdropElement, '--fade-out');\r\n removeClass(backdropElement, '--show');\r\n }\r\n\r\n addTransitionEndListener(\r\n dropdown,\r\n () => {\r\n // remove fade-out so if we hover again, they're still slow\r\n removeClass(dropdown, '--fade-out');\r\n\r\n if (backdropElement) {\r\n // remove fade-out so if we hover again, they're still slow\r\n removeClass(backdropElement, '--fade-out');\r\n }\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n },\r\n transitionDuration\r\n );\r\n}\r\n","export * from './navbar';\r\nexport * from './navbar-toggler';\r\nexport * from './navbar-mega-dropdown';\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { showMegaDropdown, hideMegaDropdown } from '../mega-dropdown';\r\nimport { isPad, isMobile } from '../../utilities/detection';\r\nimport { getStickyOffset } from '../../utilities/scroll-helper';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\n\r\nimport { ComponentRef } from '@opten/compiler/metadata/di';\r\nimport { Navbar } from './navbar';\r\n\r\nconst mouseEnterDuration = 300;\r\n\r\n// todo: update arias also in dekstop e.g. for mega-dropdown\r\n@Component({ className: 'js-navbar-mega-dropdown-toggler' })\r\nexport class NavbarMegaDropdown implements OnInit {\r\n\tprivate _backdropElement: HTMLElement;\r\n\tprivate _dropdownElement: HTMLElement;\r\n\tprivate _dropdownElements: Array;\r\n\tprivate _togglerElements: Array;\r\n\t@ComponentRef(Navbar) _navbar: Navbar;\r\n\r\n\tget _isOpen(): boolean {\r\n\t\treturn hasClass(this._dropdownElement, '--show');\r\n\t}\r\n\r\n\t// used to know if we're still animating\r\n\tprivate _timeout: number | null = null;\r\n\r\n\t// private _boundShow = this._handleShow.bind(this);\r\n\t// private _boundHide = this._handleHide.bind(this);\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t'js-navbar-backdrop'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._dropdownElement = element.parentElement.getElementsByClassName(\r\n\t\t\t'js-navbar-mega-dropdown'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._dropdownElements = Array.from(\r\n\t\t\tdocument.getElementsByClassName('js-navbar-mega-dropdown')\r\n\t\t) as Array;\r\n\r\n\t\tthis._togglerElements = Array.from(\r\n\t\t\tdocument.getElementsByClassName('js-navbar-mega-dropdown-toggler')\r\n\t\t) as Array;\r\n\t}\r\n\r\n\tonInit() {\r\n\t\tthis._handleResize();\r\n\t\tthis._addDesktopListeners();\r\n window.addEventListener('resize', () => this._handleResize());\r\n\t}\r\n\r\n private _addDesktopListeners() {\r\n\t\tthis.element.addEventListener('click', this._handleClick);\r\n\t\tthis._backdropElement.addEventListener(\r\n\t\t\t'click',\r\n\t\t\tthis._handleBackdropClick\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _removeDesktopListener() {\r\n\t\tif (isPad()) {\r\n\t\t\tthis.element.removeEventListener('click', this._handleClick);\r\n\t\t\tthis._backdropElement.removeEventListener(\r\n\t\t\t\t'click',\r\n\t\t\t\tthis._handleBackdropClick\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _setContainerHeight() {\r\n\t\tconst container = this._dropdownElement\r\n\t\t\t.firstElementChild as HTMLElement;\r\n\r\n\t\tconst stickyOffset = getStickyOffset();\r\n if (container && stickyOffset) {\r\n if (!isMobile()) { \r\n container.style.maxHeight = `calc(100vh - ${stickyOffset}px)`;\r\n }\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _setDropdownPosition() {\r\n\t\tthis._dropdownElement.style.marginLeft = '0px';\r\n\t\tif (isPad() == false) {\r\n\t\t\tconst dropdownBox = this._dropdownElement.getBoundingClientRect();\r\n\t\t\tconst spacerRight = 40;\r\n\t\t\tif (dropdownBox.right > window.innerWidth - spacerRight) {\r\n\t\t\t\tthis._dropdownElement.style.marginLeft =\r\n\t\t\t\t\t'-' +\r\n\t\t\t\t\t(dropdownBox.left +\r\n\t\t\t\t\t\tdropdownBox.width -\r\n\t\t\t\t\t\t(window.innerWidth - spacerRight)) +\r\n\t\t\t\t\t'px';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleResize() {\r\n\t\tthis.hide();\r\n\r\n\t\tthis._setContainerHeight();\r\n\t\t\r\n\t\tthis._setDropdownPosition();\r\n\t}\r\n\r\n\tpublic toggle() {\r\n\t\tthis._isOpen ? this.hide() : this.show();\r\n\t}\r\n\r\n\tpublic show() {\r\n\t\tif (this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.element.parentElement) { \r\n\t\t\taddClass(this.element.parentElement, 'is-active');\r\n\t\t}\r\n\t\taddClass(this._navbar.navbarElement, '--mega-dropdown--open');\r\n\t\tthis.element.setAttribute('aria-expanded', 'true');\r\n\t\t// check if another one is open, to hide it except the backdrop\r\n\t\tconst anyOpen =\r\n\t\t\tthis._dropdownElements.map(dropdown => hasClass(dropdown, '--show'))\r\n\t\t\t\t.length > 0;\r\n\r\n\t\tthis._dropdownElements.forEach(dropdown => {\r\n\t\t\tif (hasClass(dropdown, '--show')) {\r\n\t\t\t\thideMegaDropdown(dropdown);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tshowMegaDropdown(this._dropdownElement, this._backdropElement);\r\n\t}\r\n\r\n\tpublic hide() {\r\n\t\tif (!this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.element.parentElement) { \r\n\t\t\tremoveClass(this.element.parentElement, 'is-active');\r\n\t\t}\r\n\t\tremoveClass(this._navbar.navbarElement, '--mega-dropdown--open');\r\n\t\tthis.element.setAttribute('aria-expanded', 'false');\r\n\r\n\t\thideMegaDropdown(this._dropdownElement, this._backdropElement);\r\n\t}\r\n\r\n\tprivate _handleClick = (event: MouseEvent) => {\r\n\t\tthis._resetAllAriaAttributes(event.target as HTMLElement);\r\n\t\tlet element = event.target as HTMLElement;\r\n\t\tevent.preventDefault();\r\n\r\n\t\tthis.toggle();\r\n\t};\r\n\r\n\tprivate _resetAllAriaAttributes(element: HTMLElement) {\r\n\t\tlet expanded: boolean;\r\n\t\tthis._togglerElements.forEach(toggler => {\r\n\t\t\ttoggler.setAttribute('aria-expanded', 'false');\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _handleBackdropClick = (event: MouseEvent) => {\r\n\t\tevent.preventDefault();\r\n\r\n\t\tthis.hide();\r\n\t};\r\n\r\n\tprivate _handleShow(event: MouseEvent) {\r\n\t\t// add an delay so we don't show it directly when the user\r\n\t\t// hover over the link\r\n\t\tif (this._timeout != null) {\r\n\t\t\t// don't do anything if we still animating\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst animate = !this._dropdownElement.style.transition;\r\n\r\n\t\tif (animate) {\r\n\t\t\tthis._timeout = setTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t\tshowMegaDropdown(\r\n\t\t\t\t\t\tthis._dropdownElement,\r\n\t\t\t\t\t\tthis._backdropElement\r\n\t\t\t\t\t),\r\n\t\t\t\tmouseEnterDuration\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tshowMegaDropdown(this._dropdownElement, this._backdropElement);\r\n\t\t}\r\n\r\n\t\t// close the search so we don't have to handle the backdrop\r\n\t\t// by re-adding it if the search is open...\r\n\t\t// if (this._search) {\r\n\t\t// this._search.close();\r\n\t\t// }\r\n\t}\r\n\r\n\tprivate _handleHide(event: MouseEvent) {\r\n\t\tconst toElement = (event.relatedTarget || event) as HTMLElement;\r\n\r\n\t\t// nicer animation, if we go over an other element\r\n\t\t// we just hide it instead of animate it\r\n\t\tif (\r\n\t\t\t!toElement ||\r\n\t\t\t!this.isAncestorOfClass(\r\n\t\t\t\ttoElement,\r\n\t\t\t\t'js-navbar-mega-dropdown-toggler'\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\tthis._dropdownElements.forEach(\r\n\t\t\t\tdropdown => (dropdown.style.transition = null)\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tthis._dropdownElements.forEach(\r\n\t\t\t\tdropdown => (dropdown.style.transition = 'none')\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.hide();\r\n\r\n\t\tif (this._timeout) {\r\n\t\t\tclearTimeout(this._timeout);\r\n\t\t\tthis._timeout = null;\r\n\t\t}\r\n\t}\r\n\tprivate isAncestorOfClass(element: HTMLElement, childclass: string) {\r\n\t\tlet children = element.getElementsByClassName(childclass);\r\n\t\treturn children.length < 0;\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { ComponentRef, ComponentRefs } from '@opten/compiler/metadata/di';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { Navbar } from './navbar';\r\nimport { Search } from '../search';\r\nimport { isPad } from '../../utilities/detection';\r\nimport { NavbarMegaDropdown } from './navbar-mega-dropdown';\r\n\r\n@Component({ className: 'js-navbar-toggler' })\r\nexport class NavbarToggler implements OnInit {\r\n @ComponentRef(Navbar) _navbar: Navbar;\r\n @ComponentRef(Search) _search: Search;\r\n @ComponentRefs(NavbarMegaDropdown) _dropdowns: Array;\r\n\r\n constructor(private element: HTMLElement) {}\r\n\r\n onInit() {\r\n \r\n this.element.addEventListener('click', event => {\r\n event.preventDefault();\r\n\r\n if (isPad()) {\r\n // close the search so we don't have to handle the backdrop\r\n // by re-adding it if the search is open...\r\n if (this._search) {\r\n this._search.close();\r\n }\r\n\r\n this._navbar.toggle();\r\n } else {\r\n const target = event.target as HTMLElement;\r\n\r\n target.blur(); // remove focus\r\n\r\n this._dropdowns.forEach(dropdown => dropdown.hide());\r\n }\r\n });\r\n }\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { getSelectorElementFromElement } from '@opten/dom/get-selector-element-from-element';\r\nimport { Collapse } from '@opten/collapse/initializer';\r\nimport { isPad } from '../../utilities/detection';\r\nimport { lockScrollbar, unlockScrollbar } from '../../utilities/scroll-helper';\r\n\r\n// todo: @opten/typescrpit?\r\n@Component({ className: 'js-navbar' })\r\nexport class Navbar implements OnInit {\r\n\r\n\tprivate _header: HTMLElement;\r\n\r\n\tprivate _navbarTogglerElements: Array;\r\n\tprivate _navbar1stLevelElements: Array;\r\n\tprivate _navbar2ndLevelElements: Array;\r\n\tprivate _navbarHeaderElements: Array;\r\n\r\n\tprivate _mainScrollElement: HTMLElement;\r\n\tprivate _scrollableElements: Array;\r\n\tprivate _togglerElements: Array;\r\n\r\n\tprivate _isOpen: boolean = false;\r\n\tnavbarElement: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.navbarElement = element;\r\n\r\n\t\t// todo: @ComponentRef()?\r\n\t\tthis._header = document.getElementsByClassName(\r\n\t\t\t'js-header'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._navbar1stLevelElements = Array.from(\r\n\t\t\tdocument.querySelectorAll(`[id^=\"c-navbar-nav-true\"]`)\r\n\t\t);\r\n\r\n\t\tthis._navbar2ndLevelElements = Array.from(\r\n\t\t\tdocument.querySelectorAll(`[id^=\"c-navbar-collapse-\"]`)\r\n\t\t);\r\n\r\n\t\t// not navbar because we could also have some in the header\r\n\t\tthis._navbarTogglerElements = Array.from(\r\n\t\t\tthis._header.querySelectorAll(`[data-toggle='navbar']`)\r\n\t\t);\r\n\r\n\t\tthis._navbarHeaderElements = Array.from(\r\n\t\t\tdocument.getElementsByClassName('js-navbar-header')\r\n\t\t) as Array;\r\n\r\n\t\tthis._mainScrollElement = Array.from(element.children).filter(o =>\r\n\t\t\thasClass(o, 'c-navbar__scrollable')\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._scrollableElements = Array.from(\r\n\t\t\tthis.element.getElementsByClassName('c-navbar__scrollable')\r\n\t\t) as Array;\r\n\r\n\t\tthis._togglerElements = Array.from(\r\n\t\t\tdocument.getElementsByClassName('js-navbar-toggler')\r\n\t\t) as Array;\r\n\t}\r\n\r\n\tonInit() {\r\n\t\tthis._navbarTogglerElements.forEach(toggler => {\r\n toggler.addEventListener('click', event => {\r\n \r\n\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\tconst target = getSelectorElementFromElement(toggler);\r\n\r\n\t\t\t\tif (target) {\r\n\t\t\t\t\tthis._click(target);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis._handleResize();\r\n\t\twindow.addEventListener('resize', () => this._handleResize());\r\n\t}\r\n\r\n\tprivate _handleNavbarHeaderClick = (event: MouseEvent) => {\r\n\t\tevent.preventDefault();\r\n\t\taddClass((event.target as Element).parentElement, '--collapsed');\r\n\r\n\t\tthis._scrollableElements.forEach(scrollable =>\r\n\t\t\tthis._removeScrollable(scrollable)\r\n\t\t);\r\n\r\n\t\tthis._setScrollable(this._mainScrollElement);\r\n\t};\r\n\r\n\tprivate _addMobileListeners() {\r\n\t\t// if (isPad()) {\r\n\t\t// this._navbarHeaderElements.forEach(header =>\r\n\t\t// header.addEventListener('click', this._handleNavbarHeaderClick)\r\n\t\t// );\r\n\t\t// }\r\n\t}\r\n\r\n\tprivate _removeMobileListeners() {\r\n\t\t// if (!isPad()) {\r\n\t\t// this._navbarHeaderElements.forEach(header =>\r\n\t\t// header.removeEventListener(\r\n\t\t// 'click',\r\n\t\t// this._handleNavbarHeaderClick\r\n\t\t// )\r\n\t\t// );\r\n\t\t// }\r\n\t}\r\n\r\n\tprivate _handleResize() {\r\n\t\tif (this._isOpen) {\r\n\t\t\tthis.toggle();\r\n\t\t}\r\n\r\n\t\tif (isPad()) {\r\n\t\t\tthis._addMobileListeners();\r\n\r\n\t\t\tconst height = Math.round(\r\n\t\t\t\tthis._header.getBoundingClientRect().height\r\n\t\t\t);\r\n\r\n\t\t\t// make the headers same height as the header itself\r\n\t\t\tArray.from(\r\n\t\t\t\tthis.element.getElementsByClassName('c-navbar__header')\r\n\t\t\t).forEach(header => {\r\n\t\t\t\t(header as HTMLElement).style.height = `${height}px`;\r\n\t\t\t});\r\n\r\n\t\t\tthis._navbar1stLevelElements.forEach(navbar => {\r\n\t\t\t\tconst isOpen =\r\n\t\t\t\t\thasClass(\r\n\t\t\t\t\t\tdocument.querySelector(`a[href='${navbar.id}']`),\r\n\t\t\t\t\t\t'is--active'\r\n\t\t\t\t\t) || navbar.getElementsByClassName('is--active').length;\r\n\t\t\t\tconst collapseInstance = Collapse.getInstance(\r\n\t\t\t\t\tnavbar as HTMLElement\r\n\t\t\t\t);\r\n\t\t\t\tif (isOpen) {\r\n\t\t\t\t\tif (hasClass(navbar, 'collapse--show') == false) {\r\n\t\t\t\t\t\tcollapseInstance.show();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcollapseInstance.hide();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._navbar2ndLevelElements.forEach(element =>\r\n\t\t\t\tCollapse.getInstance(element as HTMLElement).destroy()\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tthis._removeMobileListeners();\r\n\r\n\t\t\t// reset height, because we don't need it\r\n\t\t\tthis._scrollableElements.forEach(\r\n\t\t\t\tscrollable => (scrollable.style.height = null)\r\n\t\t\t);\r\n\r\n\t\t\tthis._navbar1stLevelElements.forEach(navbar =>\r\n\t\t\t\tCollapse.getInstance(navbar as HTMLElement).destroy()\r\n\t\t\t);\r\n\r\n\t\t\tthis._navbar2ndLevelElements.forEach(element =>\r\n\t\t\t\tthis._collapse(\r\n\t\t\t\t\telement,\r\n\t\t\t\t\telement.getElementsByClassName('is-active').length > 0\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic toggle() {\r\n\t\tthis._isOpen ? this.close() : this.open();\r\n\t}\r\n\r\n\tpublic open() {\r\n\t\tif (this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// mostly for iOS devices\r\n\t\tlockScrollbar(() => {\r\n\t\t\tremoveClass(this.element, '--collapsed');\r\n\r\n\t\t\t// set the width to the navbar-toggler\r\n\t\t\tconst left = Math.round(\r\n\t\t\t\tthis._togglerElements[0].getBoundingClientRect().left\r\n\t\t\t);\r\n\t\t\t/*this.element.style.width = `${left}px`;*/\r\n\r\n\t\t\tthis._togglerElements.forEach(toggler =>\r\n\t\t\t\taddClass(toggler, '--expanded')\r\n\t\t\t);\r\n\r\n\t\t\t// check if we're on a page (a container already has --scroll)\r\n\t\t\t// so we don't apply the scroll class otherwise we might cut off\r\n\t\t\t// a sub-navigation.\r\n\t\t\tconst hasScroll = this._scrollableElements.filter(o =>\r\n\t\t\t\thasClass(o, '--scroll')\r\n\t\t\t);\r\n\r\n\t\t\tif (!hasScroll.length) {\r\n\t\t\t\tthis._setScrollable(this._mainScrollElement);\r\n\t\t\t}\r\n\t\t\taddClass(this._header, '--expanded');\r\n\t\t\tthis._isOpen = true;\r\n\t\t});\r\n\t}\r\n\r\n\tpublic close() {\r\n\t\tif (!this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\taddClass(this.element, '--collapsed');\r\n\t\tthis.element.style.width = null; // reset to default\r\n\r\n\t\tthis._togglerElements.forEach(toggler =>\r\n\t\t\tremoveClass(toggler, '--expanded')\r\n\t\t);\r\n\r\n\t\t// mostly for iOS devices\r\n\t\tunlockScrollbar();\r\n\r\n\t\t// if (!isPad()) {\r\n\t\t// this._navbar1stLevelElements.forEach(navbar =>\r\n\t\t// Collapse.getInstance(navbar as HTMLElement).hide()\r\n\t\t// );\r\n\t\t// }\r\n\t\tremoveClass(this._header, '--expanded');\r\n\t\tthis._isOpen = false;\r\n\t}\r\n\r\n\tprivate _click(target: HTMLElement) {\r\n\t\tif (!this._isOpen) {\r\n\t\t\t// todo: better way? if we have a slower animation you see the other closing...\r\n\t\t\t// maybe we have some --collapsed in the cshtml\r\n\t\t\t// because we're on a certain page\r\n\t\t\t// so close all of them...\r\n\t\t\tthis._navbar2ndLevelElements.forEach(navbar =>\r\n\t\t\t\taddClass(navbar.firstElementChild, '--collapsed')\r\n\t\t\t);\r\n\r\n\t\t\tthis.open();\r\n\t\t}\r\n\r\n\t\tif (hasClass(target, '--collapsed')) {\r\n\t\t\tremoveClass(target, '--collapsed');\r\n\r\n\t\t\tconst scrollable = target.getElementsByClassName(\r\n\t\t\t\t'c-navbar__scrollable'\r\n\t\t\t)[0] as HTMLElement;\r\n\r\n\t\t\tthis._scrollableElements.forEach(o => this._removeScrollable(o));\r\n\t\t\tthis._setScrollable(scrollable);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _collapse(target: HTMLElement, show: boolean) {\r\n\t\tconst navbar = target.getElementsByClassName('c-navbar')[0];\r\n\r\n\t\tconst toggler = document.querySelector(\r\n\t\t\t`a[href='#${navbar.id}']`\r\n\t\t) as HTMLElement;\r\n\r\n\t\tif (show) {\r\n\t\t\tCollapse.getInstance(target as HTMLElement).show();\r\n\t\t} else {\r\n\t\t\tCollapse.getInstance(target as HTMLElement).hide();\r\n\t\t}\r\n\r\n\t\tthis._updateAria(toggler, show);\r\n\t}\r\n\r\n\tprivate _setScrollable(element: HTMLElement) {\r\n\t\tlet height = Math.round(this._header.getBoundingClientRect().height);\r\n\r\n\t\tconst titleElement = Array.from(\r\n\t\t\telement.parentElement.children\r\n\t\t).filter(o => hasClass(o, 'c-navbar__title'))[0];\r\n\r\n\t\tif (titleElement) {\r\n\t\t\theight += Math.round(titleElement.getBoundingClientRect().height);\r\n\t\t}\r\n\r\n\t\telement.style.height = `calc(100% - ${height}px)`;\r\n\r\n\t\tremoveClass(element, '--lock');\r\n\t\taddClass(element, '--scroll');\r\n\t}\r\n\r\n\tprivate _removeScrollable(element: HTMLElement) {\r\n\t\telement.style.height = null;\r\n\r\n\t\taddClass(element, '--lock');\r\n\t\tremoveClass(element, '--scroll');\r\n\t}\r\n\r\n\tprivate _updateAria(toggler: HTMLElement, isOpen: boolean) {\r\n\t\ttoggler.setAttribute('aria-expanded', isOpen.toString().toLowerCase());\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { getParentWithClass } from '@opten/dom/get-parent-with-class';\r\n\r\n@Component({ className: 'js-products-preview-slider' })\r\nexport class ProductsPreviewSliderComponent {\r\n\tprivate instance: Swiper;\r\n\tprivate sliderElement: HTMLElement;\r\n\tprivate currentSliderIsMobile = false;\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.sliderElement = element;\r\n\t\tthis.init(true);\r\n\t\twindow.addEventListener('resize', () => this.init());\r\n\t}\r\n\tinit(isInitial = false) {\r\n\t\tconst isMobileWidth = window.innerWidth < 1024;\r\n\t\tif (isInitial) {\r\n\t\t\tif (isMobileWidth) {\r\n\t\t\t\tthis.initMobileSlider();\r\n\t\t\t} else {\r\n\t\t\t\tthis.initDesktopSlider();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (isMobileWidth && this.currentSliderIsMobile == false) {\r\n\t\t\t\tthis.destroy();\r\n\t\t\t\tthis.initMobileSlider();\r\n\t\t\t} else if (isMobileWidth == false) {\r\n\t\t\t\tthis.destroy();\r\n\t\t\t\tthis.initDesktopSlider();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tinitDesktopSlider() {\r\n\t\tvar sliderElements =\r\n\t\t\tthis.sliderElement.querySelectorAll('.swiper-slide');\r\n\t\tthis.instance = new Swiper(this.sliderElement, {\r\n\t\t\tslidesPerView: 1,\r\n\t\t\tspaceBetween: 0,\r\n\t\t\t//effect: 'fade',\r\n\t\t\tautoHeight: false,\r\n\t\t\tpagination: {\r\n\t\t\t\tel: '.swiper-pagination',\r\n\t\t\t\tclickable: true,\r\n\t\t\t\trenderBullet: function (index, className) {\r\n\t\t\t\t\tconst title =\r\n\t\t\t\t\t\tsliderElements[index].getAttribute('data-title');\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\ttitle +\r\n\t\t\t\t\t\t''\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.currentSliderIsMobile = false;\r\n\t}\r\n\r\n\tinitMobileSlider() {\r\n\t\tthis.instance = new Swiper(this.sliderElement, {\r\n\t\t\tslidesPerView: 1,\r\n\t\t\tspaceBetween: 0,\r\n\t\t\tloop: true,\r\n\t\t\tautoHeight: false,\r\n\t\t\tpagination: {\r\n\t\t\t\tel: '.swiper-pagination',\r\n\t\t\t\tclickable: true\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.currentSliderIsMobile = true;\r\n\t}\r\n\r\n\tdestroy() {\r\n\t\tthis.instance.destroy();\r\n\t}\r\n}\r\n","export * from './search';\r\nexport * from './search-toggler';\r\n","import { NavbarMegaDropdown } from './../navbar/navbar-mega-dropdown';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\nimport { ComponentRef, ComponentRefs } from '@opten/compiler/metadata/di';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { Navbar } from '../navbar';\r\nimport { Search, SearchDesktop } from './search';\r\nimport { isMobile } from '../../utilities/detection';\r\n\r\n\r\n@Component({ className: 'js-search-toggler' })\r\nexport class SearchToggler implements OnInit {\r\n @ComponentRef(Navbar) _navbar: Navbar;\r\n @ComponentRefs(NavbarMegaDropdown) _dropdowns: Array;\r\n @ComponentRef(Search) _search: Search;\r\n @ComponentRef(SearchDesktop) _searchDesktop: SearchDesktop;\r\n\r\n constructor(private element: HTMLElement) {}\r\n\r\n onInit() {\r\n this._search = new Search(document.getElementsByClassName('js-search')[0] as HTMLElement);\r\n this._searchDesktop = new SearchDesktop(document.getElementsByClassName('js-search-desktop')[0] as HTMLElement);\r\n this._handleResize();\r\n window.addEventListener('resize', () => this._handleResize());\r\n window.addEventListener('scroll', () => this._handleScroll());\r\n \r\n this.element.addEventListener('click', event => {\r\n event.preventDefault();\r\n if (isMobile()) {\r\n this._search.toggle();\r\n } else { \r\n this._searchDesktop.toggle();\r\n }\r\n\r\n if (this._dropdowns && this._dropdowns.length) {\r\n this._dropdowns.forEach(dropdown => dropdown.hide());\r\n }\r\n });\r\n }\r\n private _handleResize() {\r\n this._search.close();\r\n this._searchDesktop.close();\r\n\t}\r\n\r\n private _handleScroll() {\r\n this._searchDesktop.close();\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { showMegaDropdown, hideMegaDropdown } from '../mega-dropdown';\r\nimport { lockScrollbar, unlockScrollbar } from '../../utilities/scroll-helper';\r\n\r\n@Component({ className: 'js-search'})\r\nexport class Search implements OnInit {\r\n\tget _isOpen(): boolean {\r\n\t\treturn hasClass(this.element, '--show');\r\n\t}\r\n\r\n\tprivate _backdropElement: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {}\r\n\r\n\tonInit() {\r\n\t\t// todo: own backdrop or resuse navbar?\r\n\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t'js-search-backdrop'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._backdropElement.addEventListener('click', () => {\r\n\t\t\tconsole.log('click');\r\n\t\t\t// this.close();\r\n\t\t\tthis.close();\r\n\t\t});\r\n\t}\r\n\r\n\tpublic toggle() {\r\n\t\tthis._isOpen ? this.close() : this.open();\r\n\t}\r\n\r\n\tpublic open() {\r\n\t\tif (this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// mostly for iOS devices\r\n\t\tlockScrollbar(() => {\r\n\t\t\t// show and then focus search\r\n\t\t\tshowMegaDropdown(this.element, this._backdropElement, () =>\r\n\t\t\t\tthis.element.getElementsByTagName('input')[0].focus()\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tpublic close() {\r\n\t\tif (!this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// mostly for iOS devices\r\n\t\tunlockScrollbar();\r\n\r\n\t\thideMegaDropdown(this.element, this._backdropElement);\r\n\t}\r\n}\r\n\r\n@Component({ className: 'js-search-desktop'})\r\nexport class SearchDesktop implements OnInit {\r\n\tget _isOpen(): boolean {\r\n\t\treturn hasClass(this.element, '--show');\r\n\t}\r\n\r\n\tprivate _backdropElement: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {}\r\n\r\n\tonInit() {\r\n\t\t// todo: own backdrop or resuse navbar?\r\n\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t'js-search-backdrop'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._backdropElement.addEventListener('click', () => {\r\n\t\t\tconsole.log('click');\r\n\t\t\tthis.close();\r\n\t\t});\r\n\t}\r\n\r\n\tpublic toggle() {\r\n\t\tthis._isOpen ? this.close() : this.open();\r\n\t}\r\n\r\n\tpublic open() {\r\n\t\tif (this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this._backdropElement || this._backdropElement == undefined) {\r\n\t\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t\t'js-search-backdrop'\r\n\t\t\t)[0] as HTMLElement;\r\n\t\t}\r\n\t\t// show and then focus search\r\n\t\tshowMegaDropdown(this.element, this._backdropElement, () =>\r\n\t\t\tthis.element.getElementsByTagName('input')[0].focus()\r\n\t\t);\r\n\t}\r\n\r\n\tpublic close() {\r\n\t\tif (!this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!this._backdropElement || this._backdropElement == undefined) {\r\n\t\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t\t'js-search-backdrop'\r\n\t\t\t)[0] as HTMLElement;\r\n\t\t}\r\n\t\thideMegaDropdown(this.element, this._backdropElement);\r\n\t}\r\n}","import { Component } from '@opten/compiler/metadata/component';\r\n\r\n@Component({ className: 'js-success-stories-slider' })\r\nexport class SuccessStoriesSliderComponent {\r\n\tprivate instance: Swiper;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.instance = new Swiper(element, {\r\n\t\t\tslidesPerView: 'auto',\r\n\t\t\tspaceBetween: 0,\r\n\t\t\tloop: true,\r\n\t\t\tnavigation:{\r\n\t\t\t\tnextEl: '.swiper-button-next',\r\n\t\t\t\tprevEl: '.swiper-button-prev'\r\n\t\t\t},\r\n\t\t\tpagination: {\r\n\t\t\t\tel: '.swiper-pagination',\r\n\t\t\t\tclickable: true\r\n\t\t\t},\r\n\t\t\ton: {\r\n\t\t\t\tslideChange: this.slideChange\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tslideChange = () => {\r\n\t\tif (this.instance && this.instance.slides) {\r\n\t\t\tconst previousItem = this.instance.slides[this.instance.previousIndex];\r\n\t\t\tconst activeItem = this.instance.slides[this.instance.activeIndex];\r\n\r\n\t\t\tif (previousItem || activeItem) {\r\n\t\t\t\tthis.startIFrame(activeItem);\r\n\t\t\t\tthis.stopIFrame(previousItem);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tdestroy() {\r\n\t\tthis.stopAllIFrames(this.element);\r\n\t\tthis.instance.destroy();\r\n\t}\r\n\r\n\tprivate stopIFrame(el: HTMLElement) {\r\n\t\tconst iframe = this.findIFrame(el);\r\n\t\tif (iframe) {\r\n\t\t\tvar src = iframe.getAttribute('src');\r\n\t\t\tiframe.setAttribute('data-src', src);\r\n\t\t\tiframe.setAttribute('src', '');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate stopAllIFrames(el: HTMLElement) {\r\n\t\tthis.findAllIFrames(el).forEach(e => this.stopIFrame(e.parentElement));\r\n\t}\r\n\r\n\tprivate startIFrame(el: HTMLElement) {\r\n\t\tconst iframe = this.findIFrame(el);\r\n\t\tif (iframe && iframe.hasAttribute('data-src')) {\r\n\t\t\tiframe.setAttribute('src', iframe.getAttribute('data-src'));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate findIFrame(el: HTMLElement): HTMLElement {\r\n\t\tif (el) {\r\n\t\t\tvar iFrameElement = el.querySelector('iframe');\r\n\t\t\treturn iFrameElement != null && iFrameElement.hasAttribute('data-cookieblock-src') == false ? iFrameElement : null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate findAllIFrames(el: HTMLElement): HTMLElement[] {\r\n\t\tif (el) {\r\n\t\t\treturn Array.from(el.querySelectorAll('iframe')) as HTMLElement[];\r\n\t\t}\r\n\t}\r\n}\r\n","export const MOBILE_WIDTH = 768;\r\nexport const TINY_MOBILE_WIDTH = 600;\r\nexport const PAD_WIDTH = 1200;\r\nexport const PAD_WIDTH_SMALL = 1024;\r\nexport const DESKTOP_LARGEST_WIDTH = 1500;\r\n\r\n\r\n// todo: something like Angular? Breakpoint detection?\r\nexport function isMobile() {\r\n return window.innerWidth < MOBILE_WIDTH;\r\n}\r\n\r\n// todo: something like Angular? Breakpoint detection?\r\nexport function isTinyMobile() {\r\n return window.innerWidth <= TINY_MOBILE_WIDTH;\r\n}\r\n\r\n// todo: something like Angular? Breakpoint detection?\r\nexport function isPad() {\r\n return window.innerWidth < PAD_WIDTH;\r\n}\r\n\r\nexport function isDesktopSmaller() {\r\n return window.innerWidth < DESKTOP_LARGEST_WIDTH;\r\n}\r\n\r\nexport function isPadSmall() {\r\n return window.innerWidth < PAD_WIDTH_SMALL;\r\n}","import { getWindowScrollTop } from '@opten/dom/get-window-scroll-top';\r\nimport { parseCssUnit } from '@opten/number/parse-css-unit';\r\n\r\nimport { isPad, isTinyMobile } from './detection';\r\n\r\n// todo: @opten/typings?\r\n\r\nexport function lockScrollbar(\r\n\tcallback: () => void,\r\n\tbodyElement: HTMLElement = document.body\r\n) {\r\n\tif (!isPad()) {\r\n\t\tcallback();\r\n\t\treturn;\r\n\t}\r\n\r\n\t// preserve the current scrolling because `--navbar--expanded`\r\n\t// fixes the body, so iOS doesn't scroll in the background!\r\n\tconst scroll = getWindowScrollTop();\r\n\r\n\tif (scroll >= 0) {\r\n\t\trequestAnimationFrame(() => {\r\n\t\t\tif (!isTinyMobile()) {\r\n\t\t\t\tbodyElement.style.top = `${clampScroll(scroll)}px`;\r\n\r\n\t\t\t\t// todo: cache old values?\r\n\t\t\t\tdocument.body.style.height = '100%';\r\n\t\t\t\tdocument.documentElement.style.height = '100%';\r\n\r\n\t\t\t\tbodyElement.style.position = 'fixed';\r\n\t\t\t\tbodyElement.style.width = '100%';\r\n\t\t\t\tbodyElement.style.height = '100%';\r\n\t\t\t\tbodyElement.style.overflow = 'hidden';\r\n\t\t\t}\r\n\r\n\t\t\t// some weird behaviour in iOS if we set the element fixed\r\n\t\t\t// the navbar closes immediately, so we have a timeout...\r\n\t\t\tsetTimeout(() => callback(), 150);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport function unlockScrollbar(bodyElement: HTMLElement = document.body) {\r\n\r\n\tif (!isTinyMobile()) {\r\n\t\t// preserve the cached scroll, so we can scroll\r\n\t\t// back to this state.\r\n\t\tconst scroll = clampScroll(parseCssUnit(bodyElement.style.top));\r\n\t\tconst paddingTop = parseCssUnit(bodyElement.style.paddingTop);\r\n\t\tbodyElement.style.top = null;\r\n\r\n\t\t// todo: reset old values?\r\n\t\tbodyElement.style.position = null;\r\n\t\tbodyElement.style.width = null;\r\n\t\tbodyElement.style.height = null;\r\n\t\tbodyElement.style.overflow = null;\r\n\t\tbodyElement.removeAttribute('style');\r\n\t\tbodyElement.style.paddingTop = paddingTop + 'px';\r\n\r\n\t\tif (scroll >= 0) {\r\n\t\t\tscrollTo(0, scroll);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function getStickyOffset() {\r\n\tconst elements: Array = [];\r\n\r\n\t// todo: better way?\r\n\tconst header = document.getElementsByClassName(\r\n\t\t'js-header'\r\n\t)[0] as HTMLElement;\r\n\tconst cookieConsent = document.getElementsByClassName(\r\n\t\t'js-cookie-consent'\r\n\t)[0] as HTMLElement;\r\n\r\n\tif (header) {\r\n\t\telements.push(header);\r\n\t}\r\n\tif (cookieConsent) {\r\n\t\telements.push(cookieConsent);\r\n\t}\r\n\r\n\treturn Math.round(\r\n\t\telements\r\n\t\t\t.map(o => o.getBoundingClientRect().height)\r\n\t\t\t.reduce((pv, cv) => pv + cv, 0)\r\n\t);\r\n}\r\n\r\nfunction clampScroll(scroll: number) {\r\n\treturn scroll === 0 ? scroll : scroll * -1;\r\n}","import { Component } from '@opten/compiler/metadata/component';\nimport { Collapse } from './initializer';\n\n@Component({ className: 'js-collapse' })\nexport class CollapseComponent {\n\tcollapse: Collapse;\n\tconstructor(private element: HTMLElement) {\n\t\tthis.collapse = new Collapse(element, {});\n\t}\n}\n","import { addClass } from '@opten/dom/add-class';\nimport { hasClass } from '@opten/dom/has-class';\nimport { removeClass } from '@opten/dom/remove-class';\n\nimport { getSelectorElementFromElement } from '@opten/dom/get-selector-element-from-element';\nimport { addTransitionEndListener } from '@opten/transition/add-transition-end-listener';\n\nimport { eventNamespaceFactory } from '@opten/events/event-namespace-factory';\n\nconst stringCollapse = 'Collapse';\n\nexport interface CollapseOptions {\n\tcomponentClass?: string;\n\tactiveClass?: string;\n\tactiveParentClass?: string;\n\tshowClass?: string;\n\tshowClassDesktop?: string;\n\tdesktopWidth?: number;\n\tcollapsingClass?: string;\n\tparentElement?: HTMLElement;\n\ttransitionDuration?: number;\n\tanimateProp?: 'height' | 'width' | false;\n\tisHideable?: boolean;\n\tcloseSiblings?: boolean;\n\tuseShowClassDesktop?: boolean;\n\tdataParentSelector?: string;\n\tdataTargetSelector?: string;\n\tdataToggleSelector?: string;\n\threfSelector?: string;\n}\n\nexport class Collapse {\n\t// TODO: Uggly naming\n\tget toggles(): HTMLElement[] {\n\t\treturn this.triggers;\n\t}\n\n\tconstructor(public element: HTMLElement, options?: CollapseOptions) {\n\t\tthis.options = {\n\t\t\t...this.options,\n\t\t\t...options,\n\t\t};\n\n\t\tif (!this.options.parentElement) {\n\t\t\tthis.options.parentElement = getSelectorElementFromElement(\n\t\t\t\telement,\n\t\t\t\tthis.options.dataParentSelector,\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\n\t\tthis.init();\n\t}\n\tprivate options: CollapseOptions = {\n\t\tactiveClass: 'is-active',\n\t\tactiveParentClass: 'is-active',\n\t\tanimateProp: 'height',\n\t\tcollapsingClass: 'collapse--collapsing',\n\t\tcomponentClass: 'collapse',\n\t\tshowClass: 'collapse--show',\n\t\tshowClassDesktop: 'collapse--md-show',\n\t\tdesktopWidth: 1024,\n\t\ttransitionDuration: 600,\n\t\tisHideable: true,\n\t\tcloseSiblings: true,\n\t\tuseShowClassDesktop: false,\n\t\tdataParentSelector: 'data-parent',\n\t\tdataTargetSelector: 'data-target',\n\t\tdataToggleSelector: 'data-toggle',\n\t\threfSelector: 'href',\n\t};\n\n\tprivate parent: HTMLElement;\n\tprivate triggers: HTMLElement[];\n\n\tprivate target: Element;\n\tprivate isTransitioning = false; // when true it will prevent click handlers\n\n\t// event names\n\tprivate eventNamespaceFn = eventNamespaceFactory('opten.collapse');\n\n\tstatic getInstance(\n\t\telement: HTMLElement,\n\t\toptions?: CollapseOptions,\n\t\tcreate = true\n\t) {\n\t\tlet data = element[stringCollapse] as Collapse;\n\n\t\tif (!data && create) {\n\t\t\tdata = new Collapse(element, options);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tisOpen(): boolean {\n\t\tif (\n\t\t\tthis.options.useShowClassDesktop &&\n\t\t\twindow.outerWidth >= this.options.desktopWidth &&\n\t\t\thasClass(this.element, this.options.showClassDesktop)\n\t\t) {\n\t\t\taddClass(this.element, this.options.showClass);\n\t\t}\n\t\tremoveClass(this.element, this.options.showClassDesktop);\n\t\treturn hasClass(this.element, this.options.showClass);\n\t}\n\n\ttoggle() {\n\t\tif (this.isOpen()) {\n\t\t\tif (this.options.isHideable) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tshow() {\n\t\tif (this.isTransitioning || this.isOpen()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.closeSiblings && this.parent) {\n\t\t\tconst selector = `[${this.options.dataParentSelector}=\"#${this.parent.id}\"]`;\n\t\t\tconst actives = Array.from(\n\t\t\t\tthis.parent.querySelectorAll(\n\t\t\t\t\t`${selector}.${this.options.showClass}, ${selector}.${this.options.collapsingClass}`\n\t\t\t\t)\n\t\t\t).filter((active) => active !== this.target);\n\n\t\t\tif (actives && actives.length) {\n\t\t\t\tconst anyTransitioning = actives.filter((active) => {\n\t\t\t\t\tconst collapseInstance = active[stringCollapse] as Collapse;\n\t\t\t\t\treturn collapseInstance && collapseInstance.isTransitioning;\n\t\t\t\t});\n\n\t\t\t\tif (anyTransitioning.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tactives.forEach((active) =>\n\t\t\t\t\tCollapse.getInstance(active as HTMLElement).hide()\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis._handleShow(this.element, this.triggers);\n\t}\n\n\thide() {\n\t\tif (this.isTransitioning || !this.isOpen()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._handleClose(this.element, this.triggers);\n\t}\n\n\tdestroy() {\n\t\tconst element = this.element;\n\n\t\tif (element[stringCollapse]) {\n\t\t\telement[stringCollapse] = null;\n\n\t\t\tremoveClass(element, this.options.componentClass);\n\t\t\tremoveClass(element, this.options.collapsingClass);\n\t\t\tremoveClass(element, this.options.showClass);\n\n\t\t\tif (this.options.animateProp) {\n\t\t\t\telement.style[this.options.animateProp] = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate init() {\n\t\t// todo: only initalize once, like bootstrap does it?\n\t\tthis.triggers = Array.from(\n\t\t\tdocument.querySelectorAll(\n\t\t\t\t`[${this.options.hrefSelector}=\"#${this.element.id}\"], [${this.options.dataTargetSelector}=\"#${this.element.id}\"]`\n\t\t\t)\n\t\t);\n\n\t\t// todo: why do we need that?\n\t\tconst toggles = Array.from(\n\t\t\tdocument.querySelectorAll(\n\t\t\t\t`[${this.options.dataToggleSelector}=\"collapse\"]`\n\t\t\t)\n\t\t);\n\t\tfor (const toggle of toggles) {\n\t\t\tconst target = getSelectorElementFromElement(\n\t\t\t\ttoggle,\n\t\t\t\tthis.options.dataTargetSelector\n\t\t\t);\n\t\t\tif (target !== null && target === this.element) {\n\t\t\t\tthis.target = target;\n\t\t\t\tthis.triggers.push(toggle as HTMLElement);\n\t\t\t}\n\t\t}\n\n\t\tthis.parent = this.options.parentElement;\n\n\t\t// init\n\t\tif (!(stringCollapse in this.element)) {\n\t\t\t// prevent adding event handlers twice\n\t\t\tthis.triggers.forEach((trigger) =>\n\t\t\t\ttrigger.addEventListener('click', this.handleClick, false)\n\t\t\t);\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\tArray.from(\n\t\t\t\tthis.parent.querySelectorAll(\n\t\t\t\t\t`[${this.options.dataToggleSelector}=\"collapse\"][${this.options.dataParentSelector}=\"#${this.parent.id}\"]`\n\t\t\t\t)\n\t\t\t).forEach((element) => {\n\t\t\t\tthis._addAriaAndCollapsedClass(\n\t\t\t\t\tgetSelectorElementFromElement(\n\t\t\t\t\t\telement,\n\t\t\t\t\t\tthis.options.dataTargetSelector\n\t\t\t\t\t),\n\t\t\t\t\t[element]\n\t\t\t\t);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._addAriaAndCollapsedClass(this.element, this.triggers);\n\t\t}\n\n\t\taddClass(this.element, this.options.componentClass);\n\n\t\tthis.element[stringCollapse] = this;\n\t}\n\n\tprivate handleClick = (event: Event) => {\n\t\t// preventDefault only for elements (which change the URL) not inside the collapsible element\n\t\tconst trigger = event && (event.currentTarget as HTMLElement);\n\t\tif (trigger && trigger.tagName === 'A') {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\tconst target = getSelectorElementFromElement(\n\t\t\ttrigger,\n\t\t\tthis.options.dataTargetSelector\n\t\t);\n\t\tlet data = target[stringCollapse] as Collapse;\n\n\t\tif (!data) {\n\t\t\tdata = trigger[stringCollapse] as Collapse;\n\t\t}\n\n\t\tif (target) {\n\t\t\tCollapse.getInstance(target, data.options).toggle();\n\t\t}\n\t};\n\n\tprivate _handleShow(collapseElement: HTMLElement, triggers?: Element[]) {\n\t\tthis.eventNamespaceFn(collapseElement, 'show');\n\n\t\tremoveClass(collapseElement, this.options.componentClass);\n\t\taddClass(collapseElement, this.options.collapsingClass);\n\t\tif (this.options.animateProp) {\n\t\t\tcollapseElement.style[this.options.animateProp] =\n\t\t\t\tcollapseElement.scrollHeight + 'px';\n\t\t}\n\n\t\tif (triggers && triggers.length) {\n\t\t\ttriggers.forEach((trigger) => {\n\t\t\t\taddClass(trigger, this.options.activeClass);\n\t\t\t\ttrigger.setAttribute('aria-expanded', 'true');\n\t\t\t});\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\taddClass(this.parent, this.options.activeClass);\n\t\t}\n\n\t\tthis.isTransitioning = true;\n\n\t\taddTransitionEndListener(\n\t\t\tcollapseElement,\n\t\t\t() => {\n\t\t\t\tremoveClass(collapseElement, this.options.collapsingClass);\n\t\t\t\taddClass(collapseElement, this.options.componentClass);\n\t\t\t\taddClass(collapseElement, this.options.showClass);\n\n\t\t\t\tthis.isTransitioning = false;\n\t\t\t\tif (this.options.animateProp) {\n\t\t\t\t\tcollapseElement.style[this.options.animateProp] = null;\n\t\t\t\t}\n\n\t\t\t\tthis.eventNamespaceFn(collapseElement, 'shown');\n\t\t\t},\n\t\t\tthis.options.transitionDuration\n\t\t);\n\t}\n\n\tprivate _handleClose(collapseElement: HTMLElement, triggers?: Element[]) {\n\t\tthis.eventNamespaceFn(collapseElement, 'hide');\n\n\t\tif (this.options.animateProp) {\n\t\t\tcollapseElement.style[this.options.animateProp] =\n\t\t\t\tcollapseElement.scrollHeight + 'px';\n\t\t}\n\n\t\taddClass(collapseElement, this.options.collapsingClass);\n\t\tremoveClass(collapseElement, this.options.componentClass);\n\t\tremoveClass(collapseElement, this.options.showClass);\n\t\t// force reflow to enable transition\n\t\tcollapseElement.offsetWidth; // tslint:disable-line\n\n\t\tif (triggers && triggers.length) {\n\t\t\ttriggers.forEach((trigger) => {\n\t\t\t\tconst target = getSelectorElementFromElement(\n\t\t\t\t\ttrigger,\n\t\t\t\t\tthis.options.dataTargetSelector\n\t\t\t\t);\n\n\t\t\t\tif (target !== null) {\n\t\t\t\t\tif (!hasClass(target, this.options.showClass)) {\n\t\t\t\t\t\tremoveClass(trigger, this.options.activeClass);\n\t\t\t\t\t\ttrigger.setAttribute('aria-expanded', 'false');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\tconst selector = `[${this.options.dataParentSelector}=\"#${this.parent.id}\"]`;\n\t\t\tconst actives = Array.from(\n\t\t\t\tthis.parent.querySelectorAll(\n\t\t\t\t\t`${selector}.${this.options.showClass}, ${selector}.${this.options.collapsingClass}`\n\t\t\t\t)\n\t\t\t).filter((o) => o !== collapseElement);\n\n\t\t\tif (this.parent && actives.length === 0) {\n\t\t\t\tremoveClass(this.parent, this.options.activeParentClass);\n\t\t\t}\n\t\t}\n\n\t\tthis.isTransitioning = true;\n\t\tif (this.options.animateProp) {\n\t\t\tcollapseElement.style[this.options.animateProp] = null;\n\t\t}\n\n\t\taddTransitionEndListener(\n\t\t\tcollapseElement,\n\t\t\t() => {\n\t\t\t\tthis.isTransitioning = false;\n\n\t\t\t\tremoveClass(collapseElement, this.options.collapsingClass);\n\t\t\t\taddClass(collapseElement, this.options.componentClass);\n\n\t\t\t\tif (this.options.animateProp) {\n\t\t\t\t\tcollapseElement.style[this.options.animateProp] = null;\n\t\t\t\t}\n\n\t\t\t\tthis.eventNamespaceFn(collapseElement, 'hidden');\n\t\t\t},\n\t\t\tthis.options.transitionDuration\n\t\t);\n\t}\n\n\tprivate _addAriaAndCollapsedClass(element: Element, triggers: Element[]) {\n\t\tif (element) {\n\t\t\tconst isOpen = hasClass(element, this.options.showClass);\n\n\t\t\tif (triggers && triggers.length) {\n\t\t\t\ttriggers.forEach((trigger) => {\n\t\t\t\t\tisOpen\n\t\t\t\t\t\t? addClass(trigger, this.options.activeClass)\n\t\t\t\t\t\t: removeClass(trigger, this.options.activeClass);\n\n\t\t\t\t\ttrigger.setAttribute(\n\t\t\t\t\t\t'aria-expanded',\n\t\t\t\t\t\tisOpen.toString().toLowerCase()\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function collapse(\n\telement: HTMLElement,\n\toptions?: CollapseOptions\n): Collapse {\n\tconsole.error(\n\t\t'collapse deprecated: use new Collapse(element, options) instead. (initialized elements can be accessed via Collapse.getInstance()'\n\t);\n\tlet data = element[stringCollapse] as Collapse;\n\n\tif (!data) {\n\t\tdata = new Collapse(element, options);\n\t}\n\n\treturn data;\n}\n","export function newGuid(): string {\n\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n\t\tconst r = (Math.random() * 16) | 0,\n\t\t\tv = c == 'x' ? r : (r & 0x3) | 0x8;\n\t\treturn v.toString(16);\n\t});\n}\n","export function wrapFunction(\r\n\tbaseFn: (this: HTMLElement, e: T) => void,\r\n\textendFn: (e: T) => void\r\n) {\r\n\treturn function (e: T) {\r\n\t\textendFn(e);\r\n\t\tbaseFn.apply(this, [e]);\r\n\t};\r\n}\r\n","import { asHTMLElement } from '@opten/dom/as-html-element';\nimport { hasClass } from '@opten/dom/has-class';\nimport { isHTMLElement } from '@opten/dom/is-html-element';\n\nimport { Compiler } from '../';\nimport { Component } from '../metadata/component';\nimport { Reflector } from '../reflector';\nimport { Resolver } from '../resolver';\n\n// todo: cache, static, inject?\nconst reflector = new Reflector();\nconst resolver = new Resolver(reflector);\nconst compiler = new Compiler(resolver);\n\nexport function factory(components: any[]) {\n\treturn (rootElement: HTMLElement) => {\n\t\tconst observables = new Map();\n\t\tcomponents.forEach((componentType) => {\n\t\t\t// todo: inject resolver, or cache?\n\t\t\t// todo: static or something to cache?\n\t\t\tconst component = resolver.resolve(componentType);\n\n\t\t\tif (component) {\n\t\t\t\tconst safeRootElement =\n\t\t\t\t\trootElement === document.body ? document : rootElement;\n\t\t\t\tArray.from(\n\t\t\t\t\tsafeRootElement.getElementsByClassName(component.className)\n\t\t\t\t).forEach((node) =>\n\t\t\t\t\tcompiler.compile(component, node as HTMLElement, componentType)\n\t\t\t\t);\n\n\t\t\t\tif (component.observe) {\n\t\t\t\t\tobservables.set(component, componentType);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`No @Component annotation for ${\n\t\t\t\t\t\tcomponentType ? componentType.name : componentType\n\t\t\t\t\t} found!`\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tif (observables.size) {\n\t\t\tnew MutationObserver((mutations) => {\n\t\t\t\tconst componentInitializer = new Map void>();\n\n\t\t\t\tmutations.forEach((mutation) => {\n\t\t\t\t\tobservables.forEach((value, key) =>\n\t\t\t\t\t\tArray.from(mutation.addedNodes)\n\t\t\t\t\t\t\t.filter((node) => isHTMLElement(node))\n\t\t\t\t\t\t\t.map((node) => asHTMLElement(node))\n\t\t\t\t\t\t\t.forEach((node) => {\n\t\t\t\t\t\t\t\tconst comps = Array.from(\n\t\t\t\t\t\t\t\t\tnode.getElementsByClassName(key.className)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif (hasClass(node, key.className)) {\n\t\t\t\t\t\t\t\t\tcomps.push(node);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcomps.forEach((component) => {\n\t\t\t\t\t\t\t\t\tcomponentInitializer.set(component as HTMLElement, () =>\n\t\t\t\t\t\t\t\t\t\tcompiler.compile(key, component as HTMLElement, value)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tcomponentInitializer.forEach((c) => c());\n\t\t\t}).observe(document.body, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true,\n\t\t\t});\n\t\t}\n\t};\n}\n","import { Component } from './metadata/component';\nimport { Query } from './metadata/di';\nimport { OnInit } from './metadata/lifecycle';\nimport { Resolver } from './resolver';\nimport { isType } from './util/type';\n\n// todo: move whole project to @opten/initializer?\nexport class Compiler {\n\tprivate componentCache = new Map();\n\n\tconstructor(private resolver: Resolver) {}\n\n\tcompile(\n\t\tcomponent: Component,\n\t\tnode: HTMLElement,\n\t\tcomponentType: /*Type*/ any\n\t) {\n\t\t// todo: cache everything?\n\n\t\t// todo: cache that also?\n\t\tconst constructor = new componentType(node);\n\n\t\tif (this.componentCache.has(node)) {\n\t\t\tthis.componentCache.get(node).push(constructor);\n\t\t} else {\n\t\t\tthis.componentCache.set(node, [constructor]);\n\t\t}\n\n\t\tObject.keys(component.queries).forEach((propName) => {\n\t\t\tconst query: Query = component.queries[propName];\n\n\t\t\t// todo: why do we have to inject the resolver?\n\t\t\t// can we not get the class name by some other way?\n\t\t\tconst target = this.resolver.resolve(query.selector);\n\n\t\t\tif (target) {\n\t\t\t\tconst targetNode = query.descendants ? node : document;\n\t\t\t\tconst nodes = targetNode.getElementsByClassName(target.className);\n\n\t\t\t\tconst cache = Array.from(nodes)\n\t\t\t\t\t.filter((o) => (query.filter ? query.filter(o) : true))\n\t\t\t\t\t.map((e) => this.componentCache.get(e as HTMLElement))\n\t\t\t\t\t.filter((e) => e !== undefined && e !== null)\n\t\t\t\t\t.reduce((acc, val) => acc.concat(val), [])\n\t\t\t\t\t.filter((f) => f.constructor === query.selector);\n\n\t\t\t\tconstructor[propName] = query.first ? cache[0] : cache;\n\t\t\t}\n\t\t});\n\n\t\tif (isType(constructor.onInit)) {\n\t\t\t(constructor as OnInit).onInit();\n\t\t}\n\t}\n}\n","import { makeDecorator, TypeDecorator } from '../util/decorators';\nimport { makeMetadataFactory, MetadataFactory } from '../util/factories';\n\nexport interface ComponentDecorator {\n\t(obj: Component): TypeDecorator;\n\tnew (obj: Component): Component;\n}\n\nexport interface Component {\n\tclassName?: string;\n\tobserve?: boolean;\n\tqueries?: { [key: string]: any };\n}\n\n// tslint:disable-next-line:variable-name\nexport const Component: ComponentDecorator = makeDecorator(\n\t'Component',\n\t(c: Component = {}) => ({ ...c })\n);\n\nexport const createComponent: MetadataFactory = makeMetadataFactory<\n\tComponent\n>('Component', (c: Component = {}) => ({ ...c }));\n","import { makePropDecorator } from '../util/decorators';\n\n// tslint:disable:variable-name\n\nexport interface Metadata extends Query {\n\tmetadataName: string;\n}\n\nexport interface Query {\n\tdescendants: boolean;\n\tfirst: boolean;\n\tselector: any;\n\tfilter: (e: Element) => boolean;\n}\n\nexport abstract class Query {}\n\nexport const ComponentRef = makePropDecorator(\n\t'ComponentRef',\n\t(selector?: any, data: any = {}) => ({\n\t\tselector,\n\t\tfirst: true,\n\t\tdescendants: false,\n\t\t...data,\n\t}),\n\tQuery\n);\n\nexport const ComponentRefs = makePropDecorator(\n\t'ComponentRefs',\n\t(selector?: any, data: any = {}) => ({\n\t\tselector,\n\t\tfirst: false,\n\t\tdescendants: false,\n\t\t...data,\n\t}),\n\tQuery\n);\n\nexport const ChildRef = makePropDecorator(\n\t'ChildRef',\n\t(selector?: any, data: any = {}) => ({\n\t\tselector,\n\t\tfirst: true,\n\t\tdescendants: true,\n\t\t...data,\n\t}),\n\tQuery\n);\n\nexport const ChildrenRef = makePropDecorator(\n\t'ChildrenRef',\n\t(selector?: any, data: any = {}) => ({\n\t\tselector,\n\t\tfirst: false,\n\t\tdescendants: true,\n\t\t...data,\n\t}),\n\tQuery\n);\n","import { ANNOTATIONS, PROP_METADATA } from '../util/decorators';\nimport { isType, Type } from '../util/type';\n\n// todo: @opten/reflector? or @opten/initializer/reflector?\nexport class Reflector {\n\tannotations(typeOrFunc: Type): any[] {\n\t\tif (!isType(typeOrFunc)) {\n\t\t\treturn [];\n\t\t}\n\t\tconst parentCtor = getParentCtor(typeOrFunc);\n\t\tconst ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];\n\t\tconst parentAnnotations =\n\t\t\tparentCtor !== Object ? this.annotations(parentCtor) : [];\n\t\treturn parentAnnotations.concat(ownAnnotations);\n\t}\n\n\tpropMetadata(typeOrFunc: any): { [key: string]: any[] } {\n\t\tif (!isType(typeOrFunc)) {\n\t\t\treturn {};\n\t\t}\n\t\tconst parentCtor = getParentCtor(typeOrFunc);\n\t\tconst propMetadata: { [key: string]: any[] } = {};\n\t\tif (parentCtor !== Object) {\n\t\t\tconst parentPropMetadata = this.propMetadata(parentCtor);\n\t\t\tObject.keys(parentPropMetadata).forEach((propName) => {\n\t\t\t\tpropMetadata[propName] = parentPropMetadata[propName];\n\t\t\t});\n\t\t}\n\t\tconst ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);\n\t\tif (ownPropMetadata) {\n\t\t\tObject.keys(ownPropMetadata).forEach((propName) => {\n\t\t\t\tconst decorators: any[] = [];\n\t\t\t\tif (propMetadata.hasOwnProperty(propName)) {\n\t\t\t\t\tdecorators.push(...propMetadata[propName]);\n\t\t\t\t}\n\t\t\t\tdecorators.push(...ownPropMetadata[propName]);\n\t\t\t\tpropMetadata[propName] = decorators;\n\t\t\t});\n\t\t}\n\t\treturn propMetadata;\n\t}\n\n\tprivate _ownAnnotations(\n\t\ttypeOrFunc: Type,\n\t\tparentCtor: any\n\t): any[] | null {\n\t\t// API for metadata created by invoking the decorators.\n\t\tif (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {\n\t\t\treturn (typeOrFunc as any)[ANNOTATIONS];\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate _ownPropMetadata(\n\t\ttypeOrFunc: any,\n\t\tparentCtor: any\n\t): { [key: string]: any[] } | null {\n\t\t// API for metadata created by invoking the decorators.\n\t\tif (typeOrFunc.hasOwnProperty(PROP_METADATA)) {\n\t\t\treturn (typeOrFunc as any)[PROP_METADATA];\n\t\t}\n\t\treturn null;\n\t}\n}\n\nfunction getParentCtor(ctor: Type): Type {\n\tconst parentProto = Object.getPrototypeOf(ctor.prototype);\n\tconst parentCtor = parentProto ? parentProto.constructor : null;\n\t// Note: We always use `Object` as the null value\n\t// to simplify checking later on.\n\treturn parentCtor || Object;\n}\n","import { Component, createComponent } from '../metadata/component';\nimport { Query } from '../metadata/di';\nimport { Reflector } from '../reflector';\n\nconst QUERY_METADATA_IDENTIFIERS = [\n\t'ComponentRef',\n\t'ComponentRefs',\n\t'ChildRef',\n\t'ChildrenRef',\n];\n\n// todo: @opten/resolver? or @opten/initializer/resolver?\nexport class Resolver {\n\tconstructor(private reflector: Reflector) {}\n\n\t// propertyCache = new Map();\n\n\tresolve(type: any /*Type*/): Component | null {\n\t\tconst typeMetadata = this.reflector.annotations(type);\n\n\t\tif (typeMetadata) {\n\t\t\tconst metadata = findLast(\n\t\t\t\ttypeMetadata,\n\t\t\t\t(c) => c && c.metadataName === 'Component'\n\t\t\t);\n\n\t\t\tif (metadata) {\n\t\t\t\tconst propertyMetadata = this.reflector.propMetadata(type);\n\n\t\t\t\treturn this._mergeWithPropertyMetadata(\n\t\t\t\t\tmetadata,\n\t\t\t\t\tpropertyMetadata,\n\t\t\t\t\ttype\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate _mergeWithPropertyMetadata(\n\t\tcomponent: Component,\n\t\tpropertyMetadata: { [key: string]: any[] },\n\t\tcomponentType: /*Type*/ any\n\t): Component {\n\t\tconst queries: { [key: string]: any } = {};\n\n\t\tObject.keys(propertyMetadata).forEach((propName: string) => {\n\t\t\tconst query = findLast(propertyMetadata[propName], (a) =>\n\t\t\t\tQUERY_METADATA_IDENTIFIERS.some((i) => i && i === a.metadataName)\n\t\t\t);\n\n\t\t\tif (query) {\n\t\t\t\tqueries[propName] = query;\n\t\t\t}\n\t\t});\n\n\t\treturn this._merge(component, queries, componentType);\n\t}\n\n\tprivate _merge(\n\t\tcomponent: Component,\n\t\tqueries: { [key: string]: any },\n\t\tcomponentType: /*Type*/ any\n\t): Component {\n\t\tconst mergedQueries = component.queries\n\t\t\t? { ...component.queries, ...queries }\n\t\t\t: queries;\n\n\t\treturn createComponent({\n\t\t\tclassName: component.className,\n\t\t\tobserve: component.observe,\n\t\t\tqueries: mergedQueries,\n\t\t});\n\t}\n\n\tprivate _getQueriesMetadata(queries: { [key: string]: Query }): any[] {\n\t\tconst res: any[] = [];\n\n\t\tObject.keys(queries).forEach((propertyName: string) => {\n\t\t\tconst query = queries[propertyName];\n\t\t\tres.push(this._getQueryMetadata(query, propertyName));\n\t\t});\n\n\t\treturn res;\n\t}\n\n\tprivate _getQueryMetadata(q: Query, propertyName: string): any {\n\t\treturn {\n\t\t\tdescendants: q.descendants,\n\t\t\tfirst: q.first,\n\t\t\tpropertyName,\n\t\t\tread: false,\n\t\t\tselector: q.selector,\n\t\t};\n\t}\n}\n\nfunction findLast(arr: T[], condition: (value: T) => boolean): T | null {\n\tfor (let i = arr.length - 1; i >= 0; i--) {\n\t\tif (condition(arr[i])) {\n\t\t\treturn arr[i];\n\t\t}\n\t}\n\treturn null;\n}\n","import { Type } from './type';\n\nexport const ANNOTATIONS = '__annotations__';\nexport const PROP_METADATA = '__prop__metadata__';\n\nexport interface TypeDecorator {\n\t// Invoke as ES7 decorator.\n\t>(type: T): T;\n\n\t// Make TypeDecorator assignable to built-in ParameterDecorator type.\n\t// ParameterDecorator is declared in lib.d.ts as a `declare type`\n\t// so we cannot declare this interface as a subtype.\n\t// see https://github.com/angular/angular/issues/3379#issuecomment-126169417\n\t(\n\t\ttarget: object,\n\t\tpropertyKey?: string | symbol,\n\t\tparameterIndex?: number\n\t): void;\n}\n\nexport function makeDecorator(\n\tname: string,\n\tprops?: (...args: any[]) => any,\n\tparentClass?: any,\n\tchainFn?: (fn: TypeDecorator) => void,\n\ttypeFn?: (type: Type, ...args: any[]) => void\n): {\n\tnew (...args: any[]): any;\n\t(...args: any[]): any;\n\t(...args: any[]): (cls: any) => any;\n} {\n\tconst metaCtor = makeMetadataCtor(props);\n\n\tfunction DecoratorFactory(...args: any[]): (cls: any) => any {\n\t\tif (this instanceof DecoratorFactory) {\n\t\t\tmetaCtor.call(this, ...args);\n\t\t\treturn this;\n\t\t}\n\n\t\tconst annotationInstance = new (DecoratorFactory as any)(...args);\n\t\tconst typeDecorator: TypeDecorator = (cls: Type) => {\n\t\t\tif (typeFn) {\n\t\t\t\ttypeFn(cls, ...args);\n\t\t\t}\n\t\t\t// Use of Object.defineProperty is important since it creates non-enumerable property which\n\t\t\t// prevents the property is copied during subclassing.\n\t\t\tconst annotations = cls.hasOwnProperty(ANNOTATIONS)\n\t\t\t\t? (cls as any)[ANNOTATIONS]\n\t\t\t\t: Object.defineProperty(cls, ANNOTATIONS, { value: [] })[ANNOTATIONS];\n\t\t\tannotations.push(annotationInstance);\n\t\t\treturn cls;\n\t\t};\n\t\tif (chainFn) {\n\t\t\tchainFn(typeDecorator);\n\t\t}\n\t\treturn typeDecorator;\n\t}\n\n\tif (parentClass) {\n\t\tDecoratorFactory.prototype = Object.create(parentClass.prototype);\n\t}\n\n\tDecoratorFactory.prototype.metadataName = name;\n\treturn DecoratorFactory as any;\n}\n\nfunction makeMetadataCtor(props?: (...args: any[]) => any): any {\n\treturn function ctor(...args: any[]) {\n\t\tif (props) {\n\t\t\tconst values = props(...args);\n\t\t\tfor (const propName in values) {\n\t\t\t\tif (values.hasOwnProperty(propName)) {\n\t\t\t\t\tthis[propName] = values[propName];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport function makePropDecorator(\n\tname: string,\n\tprops?: (...args: any[]) => any,\n\tparentClass?: any\n): any {\n\tconst metaCtor = makeMetadataCtor(props);\n\n\tfunction PropDecoratorFactory(...args: any[]): any {\n\t\tif (this instanceof PropDecoratorFactory) {\n\t\t\tmetaCtor.apply(this, args);\n\t\t\treturn this;\n\t\t}\n\n\t\tconst decoratorInstance = new (PropDecoratorFactory as any)(...args);\n\n\t\treturn function PropDecorator(target: any, metaName: string) {\n\t\t\tconst constructor = target.constructor;\n\t\t\t// Use of Object.defineProperty is important since it creates non-enumerable property which\n\t\t\t// prevents the property is copied during subclassing.\n\t\t\tconst meta = constructor.hasOwnProperty(PROP_METADATA)\n\t\t\t\t? (constructor as any)[PROP_METADATA]\n\t\t\t\t: Object.defineProperty(constructor, PROP_METADATA, {\n\t\t\t\t\t\tvalue: {},\n\t\t\t\t })[PROP_METADATA];\n\t\t\tmeta[metaName] = (meta.hasOwnProperty(metaName) && meta[metaName]) || [];\n\t\t\tmeta[metaName].unshift(decoratorInstance);\n\t\t};\n\t}\n\n\tif (parentClass) {\n\t\tPropDecoratorFactory.prototype = Object.create(parentClass.prototype);\n\t}\n\n\tPropDecoratorFactory.prototype.metadataName = name;\n\treturn PropDecoratorFactory;\n}\n","export interface MetadataFactory {\n\t(...args: any[]): T;\n\tmetadataName: string;\n\tisTypeOf(obj: any): obj is T;\n}\n\nexport function makeMetadataFactory(\n\tname: string,\n\tprops?: (...args: any[]) => T\n): MetadataFactory {\n\tconst factory: any = (...args: any[]) => {\n\t\tconst values = props ? props(...args) : {};\n\t\treturn {\n\t\t\tmetadataName: name,\n\t\t\t...values,\n\t\t};\n\t};\n\tfactory.isTypeOf = (obj: any) => obj && obj.metadataName === name;\n\tfactory.metadataName = name;\n\treturn factory;\n}\n","// tslint:disable-next-line:variable-name\nexport const Type = Function;\n\nexport function isType(v: any): v is Type {\n\treturn typeof v === 'function';\n}\n\nexport type Type = new (...args: any[]) => T;\n","import { getClass } from '../get-class';\r\nimport { hasClass } from '../has-class';\r\n\r\nexport function addClass(element: Element, className: string) {\r\n\tif (element && !hasClass(element, className)) {\r\n\t\telement.setAttribute('class', getClass(element).trim() + ' ' + className);\r\n\t}\r\n}\r\n","import { isHTMLElement } from '../is-html-element';\r\n\r\nexport function asHTMLElement(o: any): HTMLElement {\r\n\tif (isHTMLElement(o)) {\r\n\t\treturn o as HTMLElement;\r\n\t}\r\n\treturn null;\r\n}\r\n","const classRegexCache = {};\r\nexport function classRegex(className: string): RegExp {\r\n\tif (!classRegexCache[className]) {\r\n\t\tclassRegexCache[className] = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\r\n\t}\r\n\treturn classRegexCache[className];\r\n}\r\n","export function createNode(html: string): HTMLElement {\r\n\tlet element = document.createElement('div') as HTMLElement;\r\n\telement.innerHTML = html;\r\n\telement = element.firstElementChild as HTMLElement;\r\n\treturn element;\r\n}\r\n","export function getClass(element: Element) {\r\n\treturn element.getAttribute('class') || '';\r\n}\r\n","import { getStyles } from '../get-styles';\r\n\r\nexport function getCss(\r\n\telement: Element,\r\n\tname: string,\r\n\tcomputed?: CSSStyleDeclaration\r\n): string {\r\n\tcomputed = computed || getStyles(element);\r\n\r\n\tif (computed) {\r\n\t\treturn computed.getPropertyValue(name) || computed[name];\r\n\t}\r\n\r\n\treturn undefined;\r\n}\r\n","export function getOffset(\r\n\telement: Element\r\n): { top: () => number; left: () => number } {\r\n\tconst clientRect = element.getBoundingClientRect();\r\n\r\n\treturn {\r\n\t\ttop: () => {\r\n\t\t\tconst ownerDocument = element.ownerDocument;\r\n\t\t\tconst documentTop = window.pageYOffset || ownerDocument.body.scrollTop;\r\n\t\t\treturn (\r\n\t\t\t\tclientRect.top + documentTop - ownerDocument.documentElement.clientTop\r\n\t\t\t);\r\n\t\t},\r\n\t\tleft: () => {\r\n\t\t\tconst ownerDocument = element.ownerDocument;\r\n\t\t\tconst documentLeft = window.pageXOffset || ownerDocument.body.scrollLeft;\r\n\t\t\treturn (\r\n\t\t\t\tclientRect.left +\r\n\t\t\t\tdocumentLeft -\r\n\t\t\t\townerDocument.documentElement.clientLeft\r\n\t\t\t);\r\n\t\t},\r\n\t};\r\n}\r\n","import { getSelectorFromElement } from '../get-selector-from-element';\r\n\r\nexport function getSelectorElementFromElement(\r\n\telement: Element,\r\n\tattribute = 'data-target',\r\n\tfallbackHref = true\r\n): HTMLElement {\r\n\tconst selector = getSelectorFromElement(element, attribute, fallbackHref);\r\n\r\n\tif (selector && selector.indexOf('#') === 0) {\r\n\t\treturn document.getElementById(selector.substr(1, selector.length - 1));\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n","export function getSelectorFromElement(\r\n\telement: Element,\r\n\tattribute = 'data-target',\r\n\tfallbackHref = true\r\n): string {\r\n\tlet selector = element.getAttribute(attribute);\r\n\r\n\tif (!selector && fallbackHref) {\r\n\t\tselector = element.getAttribute('href') || '';\r\n\t\tselector = /^#.*/i.test(selector) ? selector : null;\r\n\t}\r\n\r\n\treturn selector;\r\n}\r\n","export function getStyles(element: Element) {\r\n\tlet view = element.ownerDocument.defaultView;\r\n\r\n\tif (!view || !view.opener) {\r\n\t\tview = window;\r\n\t}\r\n\r\n\treturn view.getComputedStyle(element);\r\n}\r\n","export function getWindowScrollTop() {\r\n\treturn window.pageYOffset !== undefined\r\n\t\t? window.pageYOffset\r\n\t\t: ((document.documentElement ||\r\n\t\t\t\tdocument.body.parentNode ||\r\n\t\t\t\tdocument.body) as HTMLElement).scrollTop;\r\n}\r\n","import { classRegex } from '../class-regex';\r\nimport { getClass } from '../get-class';\r\n\r\nexport function hasClass(element: Element, className: string): boolean {\r\n\treturn element && classRegex(className).test(getClass(element));\r\n}\r\n","import { hasClass } from '../has-class';\r\n\r\nexport function isAncestorOfClass(\r\n\telement: Element,\r\n\tclassName: string,\r\n\tincludeSelf: boolean\r\n): boolean {\r\n\tlet parent = element.parentElement;\r\n\tif (includeSelf && hasClass(element, className)) {\r\n\t\treturn true;\r\n\t}\r\n\twhile (parent && parent.nodeType && parent.nodeType === 1) {\r\n\t\tif (hasClass(parent, className)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tparent = parent.parentElement;\r\n\t}\r\n\treturn false;\r\n}\r\n","export function isHTMLElement(o: any) {\r\n\treturn typeof HTMLElement === 'object'\r\n\t\t? o instanceof HTMLElement\r\n\t\t: o &&\r\n\t\t\t\ttypeof o === 'object' &&\r\n\t\t\t\to !== null &&\r\n\t\t\t\to.nodeType === 1 &&\r\n\t\t\t\ttypeof o.nodeName === 'string';\r\n}\r\n","import { classRegex } from '../class-regex';\r\nimport { getClass } from '../get-class';\r\nimport { hasClass } from '../has-class';\r\n\r\nexport function removeClass(element: Element, className: string) {\r\n\tif (element && hasClass(element, className)) {\r\n\t\tconst regex = classRegex(className);\r\n\t\telement.setAttribute('class', getClass(element).replace(regex, ' ').trim());\r\n\t}\r\n}\r\n\r\nexport function removeClassFactory(className: string) {\r\n\treturn (element: Element) => {\r\n\t\tremoveClass(element, className);\r\n\t};\r\n}\r\n\r\nexport function removeClassOnCollection(\r\n\telements: Element[],\r\n\tclassName: string\r\n) {\r\n\telements.forEach(removeClassFactory(className));\r\n}\r\n","export function dispatchCustomEvent(element: EventTarget, eventName: string) {\n\tconst event = new CustomEvent(eventName);\n\telement.dispatchEvent(event);\n}\n","import { dispatchCustomEvent } from '../dispatch-custom-event';\n\nexport function eventNamespaceFactory(namespace: string) {\n\treturn (element: EventTarget, eventName: string) =>\n\t\tdispatchCustomEvent(element, eventName + '.' + namespace);\n}\n","export const KEYCODES = {\n\tDOWN: 40,\n\tENTER: 13,\n\tESCAPE: 27,\n\tSPACE: 32,\n\tUP: 38,\n};\n","export function parseCssUnit(unit: string): number {\n\tconst units = ['px', 'rem', 'em'];\n\n\tif (!unit || !units.filter((u) => unit.indexOf(u) !== -1).length) {\n\t\treturn 0;\n\t}\n\n\tlet parsed = unit.replace(',', '.');\n\tunits.forEach((u) => (parsed = parsed.replace(u, '')));\n\n\treturn Number(parsed);\n}\n","export * from './position/connected-position-strategy';\r\nexport * from './position/connected-position';\r\nexport * from './position/global-position-strategy';\r\nexport * from './position/overlay-position-builder';\r\nexport * from './position/position-strategy';\r\nexport * from './overlay-options';\r\nexport * from './overlay';\r\n","import { Overlay } from '../overlay';\r\n\r\nexport class OverlayKeyboardDispatcher {\r\n\t/** Currently attached overlays in the order they were attached. */\r\n\tprivate attachedOverlays: Overlay[] = [];\r\n\r\n\tprivate document: Document;\r\n\tprivate isAttached: boolean;\r\n\r\n\tconstructor(document: Document) {\r\n\t\tthis.document = document;\r\n\t}\r\n\r\n\t/** Add a new overlay to the list of attached overlay refs. */\r\n\tadd(overlayRef: Overlay): void {\r\n\t\t// Lazily start dispatcher once first overlay is added\r\n\t\tif (!this.isAttached) {\r\n\t\t\tthis.document.body.addEventListener(\r\n\t\t\t\t'keydown',\r\n\t\t\t\tthis.keydownListener,\r\n\t\t\t\ttrue\r\n\t\t\t);\r\n\t\t\tthis.isAttached = true;\r\n\t\t}\r\n\r\n\t\tthis.attachedOverlays.push(overlayRef);\r\n\t}\r\n\r\n\t/** Remove an overlay from the list of attached overlay refs. */\r\n\tremove(overlayRef: Overlay): void {\r\n\t\tconst index = this.attachedOverlays.indexOf(overlayRef);\r\n\r\n\t\tif (index > -1) {\r\n\t\t\tthis.attachedOverlays.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t// Remove the global listener once there are no more overlays.\r\n\t\tif (this.attachedOverlays.length === 0) {\r\n\t\t\tthis._detach();\r\n\t\t}\r\n\t}\r\n\r\n\t/** Select the appropriate overlay from a keydown event. */\r\n\tprivate _selectOverlayFromEvent(event: KeyboardEvent): Overlay {\r\n\t\t// Check if any overlays contain the event\r\n\t\tconst targetedOverlay = this.attachedOverlays.find((overlay) => {\r\n\t\t\treturn (\r\n\t\t\t\toverlay.overlayElement === event.target ||\r\n\t\t\t\toverlay.overlayElement.contains(event.target as HTMLElement)\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\t// Use the overlay if it exists, otherwise choose the most recently attached one\r\n\t\treturn (\r\n\t\t\ttargetedOverlay || this.attachedOverlays[this.attachedOverlays.length - 1]\r\n\t\t);\r\n\t}\r\n\r\n\t/** Detaches the global keyboard event listener. */\r\n\tprivate _detach() {\r\n\t\tif (this.isAttached) {\r\n\t\t\tthis.document.body.removeEventListener(\r\n\t\t\t\t'keydown',\r\n\t\t\t\tthis.keydownListener,\r\n\t\t\t\ttrue\r\n\t\t\t);\r\n\t\t\tthis.isAttached = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/** Keyboard event listener that will be attached to the body. */\r\n\tprivate keydownListener = (event: KeyboardEvent) => {\r\n\t\tif (this.attachedOverlays.length) {\r\n\t\t\t// Dispatch keydown event to the correct overlay.\r\n\t\t\tconst overlay = this._selectOverlayFromEvent(event);\r\n\r\n\t\t\tif (overlay.onKeyboardEvent) {\r\n\t\t\t\toverlay.onKeyboardEvent(event);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}\r\n","import { PositionStrategy } from './position/position-strategy';\r\nimport { ScrollStrategy } from './scroll/scroll-strategy';\r\n\r\nexport class OverlayOptions {\r\n\tpositionStrategy?: PositionStrategy;\r\n\tscrollStrategy?: ScrollStrategy;\r\n\tclassName? = 'c-overlay';\r\n\toverlayClassName?: string;\r\n\tbackdropClassName? = 'c-overlay-dark-backdrop';\r\n\thasBackdrop? = true;\r\n\twidth?: number | string;\r\n\theight?: number | string;\r\n\tminWidth?: number | string;\r\n\tminHeight?: number | string;\r\n\tmaxWidth?: number | string;\r\n\tmaxHeight?: number | string;\r\n\ttransitionDuration? = 300;\r\n\r\n\tconstructor(options?: OverlayOptions) {\r\n\t\tif (options) {\r\n\t\t\tObject.keys(options)\r\n\t\t\t\t.filter((key) => typeof options[key] !== 'undefined')\r\n\t\t\t\t.forEach((key) => (this[key] = options[key]));\r\n\t\t}\r\n\t}\r\n}\r\n","import { addClass } from '@opten/dom/add-class';\r\nimport { newGuid } from '@opten/common/new-guid';\r\nimport { createNode } from '@opten/dom/create-node';\r\nimport { isAncestorOfClass } from '@opten/dom/is-ancestor-of-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { addTransitionEndListener } from '@opten/transition/add-transition-end-listener';\r\n\r\nimport { OverlayOptions } from './overlay-options';\r\nimport { OverlayKeyboardDispatcher } from './keyboard/overlay-keyboard-dispatcher';\r\n\r\n// todo: do it more like angular with backdrop configuration etc...\r\nexport class Overlay {\r\n\toverlayElement: HTMLElement;\r\n\tonAttached: () => void;\r\n\tonDetached: () => void;\r\n\tbeforeOpen: () => void;\r\n\tbeforeClose: () => void;\r\n\tafterOpened: () => void;\r\n\tafterClosed: () => void;\r\n\tonKeyboardEvent: (event: KeyboardEvent) => void;\r\n\tbackdropClick: (event: MouseEvent) => void;\r\n\r\n\tprivate uuid: string;\r\n\tprivate options: OverlayOptions;\r\n\tprivate overlayContainerElement: HTMLElement;\r\n\tprivate backdropElement: HTMLElement;\r\n\tprivate attached = false;\r\n\tprivate keyboardDispatcher = new OverlayKeyboardDispatcher(document);\r\n\r\n\tconstructor(public portalElement: HTMLElement, options?: OverlayOptions) {\r\n\t\tthis.options = new OverlayOptions(options);\r\n\r\n\t\tthis.uuid = newGuid();\r\n\r\n\t\tif (options.scrollStrategy) {\r\n\t\t\toptions.scrollStrategy.attach(this);\r\n\t\t}\r\n\t}\r\n\r\n\tcreate() {\r\n\t\t// we want to re-use existing containers\r\n\t\t// so search it in the dom before we create it again!\r\n\t\tconst overlayContainerElement = document.getElementsByClassName(\r\n\t\t\t`${this.options.className}__container`\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tif (overlayContainerElement) {\r\n\t\t\tthis.overlayContainerElement = overlayContainerElement;\r\n\t\t} else {\r\n\t\t\tthis.overlayContainerElement = createNode(\r\n\t\t\t\t`
`\r\n\t\t\t);\r\n\r\n\t\t\tdocument.body.insertBefore(\r\n\t\t\t\tthis.overlayContainerElement,\r\n\t\t\t\tdocument.body.lastElementChild\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.overlayElement = createNode(\r\n\t\t\t`
`\r\n\t\t);\r\n\r\n\t\tif (this.options.overlayClassName) {\r\n\t\t\taddClass(this.overlayElement, this.options.overlayClassName);\r\n\t\t}\r\n\r\n\t\tthis.overlayContainerElement.appendChild(this.overlayElement);\r\n\t}\r\n\r\n\thasAttached() {\r\n\t\treturn this.attached;\r\n\t}\r\n\r\n\tdetachBackdrop() {\r\n\t\tconst backdropToDetach = this.backdropElement;\r\n\r\n\t\tif (backdropToDetach) {\r\n\t\t\tconst finishDetach = () => {\r\n\t\t\t\t// It may not be attached to anything in certain cases (e.g. unit tests).\r\n\t\t\t\tif (backdropToDetach && backdropToDetach.parentNode) {\r\n\t\t\t\t\tbackdropToDetach.parentNode.removeChild(backdropToDetach);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// It is possible that a new portal has been attached to this overlay since we started\r\n\t\t\t\t// removing the backdrop. If that is the case, only clear the backdrop reference if it\r\n\t\t\t\t// is still the same instance that we started to remove.\r\n\t\t\t\tif (this.backdropElement === backdropToDetach) {\r\n\t\t\t\t\tthis.backdropElement = null;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tremoveClass(backdropToDetach, 'is-showing');\r\n\r\n\t\t\tif (this.options.backdropClassName) {\r\n\t\t\t\tremoveClass(backdropToDetach, this.options.backdropClassName);\r\n\t\t\t}\r\n\r\n\t\t\taddTransitionEndListener(backdropToDetach, finishDetach, 500);\r\n\r\n\t\t\t// If the backdrop doesn't have a transition, the `transitionend` event won't fire.\r\n\t\t\t// In this case we make it unclickable and we try to remove it after a delay.\r\n\t\t\tbackdropToDetach.style.pointerEvents = 'none';\r\n\t\t}\r\n\t}\r\n\r\n\t/** Updates the position of the overlay based on the position strategy. */\r\n\tupdatePosition() {\r\n\t\tif (this.options.positionStrategy) {\r\n\t\t\tthis.options.positionStrategy.apply();\r\n\t\t}\r\n\t}\r\n\r\n\tgetOptions() {\r\n\t\treturn this.options;\r\n\t}\r\n\r\n\t/** Update the size properties of the overlay. */\r\n\tupdateSize(sizeConfig: OverlaySizeConfig) {\r\n\t\tthis.options = { ...this.options, ...sizeConfig };\r\n\t\tthis._updateElementSize();\r\n\t}\r\n\r\n\topen() {\r\n\t\tthis._attach();\r\n\r\n\t\t// Update the position once, so that the overlay will be fully rendered\r\n\t\t// before attempting to position it, as the position may depend on the size of the rendered\r\n\t\t// content.\r\n\t\tthis.updatePosition();\r\n\r\n\t\t// animate\r\n\t\taddClass(this.portalElement, 'is-showing');\r\n\r\n\t\tif (this.beforeOpen) {\r\n\t\t\tthis.beforeOpen();\r\n\t\t}\r\n\r\n\t\t// todo: Aniamte like Angular Material?\r\n\t\taddTransitionEndListener(\r\n\t\t\tthis.portalElement,\r\n\t\t\t() => {\r\n\t\t\t\tremoveClass(this.portalElement, 'is-showing');\r\n\t\t\t\taddClass(this.portalElement, 'is-visible');\r\n\r\n\t\t\t\tif (this.afterOpened) {\r\n\t\t\t\t\tthis.afterOpened();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tthis.options.transitionDuration\r\n\t\t);\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis._detach();\r\n\r\n\t\t// animate\r\n\t\taddClass(this.portalElement, 'is-fade-out');\r\n\r\n\t\tif (this.beforeClose) {\r\n\t\t\tthis.beforeClose();\r\n\t\t}\r\n\r\n\t\taddTransitionEndListener(\r\n\t\t\tthis.portalElement,\r\n\t\t\t() => {\r\n\t\t\t\tremoveClass(this.portalElement, 'is-fade-out');\r\n\t\t\t\t// todo: why?! otherwise animation only works once...\r\n\t\t\t\tremoveClass(this.portalElement, 'is-showing');\r\n\t\t\t\tremoveClass(this.portalElement, 'is-visible');\r\n\r\n\t\t\t\t// should be called by caller\r\n\t\t\t\t// this._dispose();\r\n\r\n\t\t\t\tif (this.afterClosed) {\r\n\t\t\t\t\tthis.afterClosed();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tthis.options.transitionDuration\r\n\t\t);\r\n\t}\r\n\r\n\t/** Cleans up the overlay from the DOM. */\r\n\tdispose() {\r\n\t\tif (this.portalElement && this.portalElement.parentElement) {\r\n\t\t\tthis.portalElement.parentElement!.removeChild(this.portalElement);\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tthis.options.positionStrategy &&\r\n\t\t\tthis.options.positionStrategy.dispose\r\n\t\t) {\r\n\t\t\tthis.options.positionStrategy.dispose();\r\n\t\t}\r\n\r\n\t\tif (this.options.scrollStrategy) {\r\n\t\t\tthis.options.scrollStrategy.disable();\r\n\t\t}\r\n\r\n\t\tthis.detachBackdrop();\r\n\r\n\t\t// Remove this overlay from keyboard dispatcher tracking\r\n\t\tthis.keyboardDispatcher.remove(this);\r\n\t}\r\n\r\n\tprivate _attach() {\r\n\t\t// todo: do it like angular so we have this method public\r\n\t\t// and we transfer the portalElement over here?\r\n\t\t// it should work with referencing the portalElement in e.g. select.ts\r\n\t\t// to calculate stuff. Because it works in menu.ts too (this.menu.portalElement.parentElement is c-overlay)!\r\n\t\t// Maybe then we can use ._overlayRef.position()... instead of OverlayPositionBuilder\r\n\r\n\t\tif (this.options.positionStrategy) {\r\n\t\t\tthis.options.positionStrategy.attach(this);\r\n\t\t}\r\n\r\n\t\tif (this.options.scrollStrategy) {\r\n\t\t\tthis.options.scrollStrategy.enable();\r\n\t\t}\r\n\r\n\t\tthis.overlayElement.appendChild(this.portalElement);\r\n\r\n\t\tthis._updateElementSize();\r\n\r\n\t\tthis.overlayElement.style.pointerEvents = 'auto';\r\n\r\n\t\tif (this.options.hasBackdrop) {\r\n\t\t\tthis._attachBackdrop();\r\n\t\t}\r\n\r\n\t\tthis.attached = true;\r\n\r\n\t\t// Track this overlay by the keyboard dispatcher\r\n\t\tthis.keyboardDispatcher.add(this);\r\n\r\n\t\tif (this.onAttached) {\r\n\t\t\tthis.onAttached();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _detach() {\r\n\t\tif (!this.hasAttached()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.detachBackdrop();\r\n\r\n\t\t// When the overlay is detached, the element should disable pointer events.\r\n\t\t// This is necessary because otherwise the element will cover the page and disable\r\n\t\t// pointer events therefore. Depends on the position strategy and the applied boundaries.\r\n\t\tthis.overlayElement.style.pointerEvents = 'none';\r\n\r\n\t\tif (this.options.positionStrategy && this.options.positionStrategy.detach) {\r\n\t\t\tthis.options.positionStrategy.detach();\r\n\t\t}\r\n\r\n\t\tif (this.options.scrollStrategy) {\r\n\t\t\tthis.options.scrollStrategy.disable();\r\n\t\t}\r\n\r\n\t\t// Remove this overlay from keyboard dispatcher tracking\r\n\t\tthis.keyboardDispatcher.remove(this);\r\n\r\n\t\tif (this.onDetached) {\r\n\t\t\tthis.onDetached();\r\n\t\t}\r\n\t}\r\n\r\n\t/** Attaches a backdrop for this overlay. */\r\n\tprivate _attachBackdrop() {\r\n\t\tthis.backdropElement = createNode(\r\n\t\t\t`
`\r\n\t\t);\r\n\r\n\t\tif (this.options.backdropClassName) {\r\n\t\t\taddClass(this.backdropElement, this.options.backdropClassName);\r\n\t\t}\r\n\r\n\t\t// Insert the backdrop before the overlay in the DOM order,\r\n\t\t// in order to handle stacked overlays properly.\r\n\t\tthis.overlayElement.parentElement!.insertBefore(\r\n\t\t\tthis.backdropElement,\r\n\t\t\tthis.overlayElement\r\n\t\t);\r\n\r\n\t\t// Forward backdrop clicks such that the consumer of the overlay can perform whatever\r\n\t\t// action desired when such a click occurs (usually closing the overlay).\r\n\t\tthis.backdropElement.addEventListener('click', (event: MouseEvent) =>\r\n\t\t\tthis._handleBackdropClick(event)\r\n\t\t);\r\n\r\n\t\t// Add class to fade-in the backdrop after one frame.\r\n\t\trequestAnimationFrame(() => {\r\n\t\t\tif (this.backdropElement) {\r\n\t\t\t\taddClass(this.backdropElement, 'is-showing');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/** Updates the size of the overlay element based on the overlay config. */\r\n\tprivate _updateElementSize() {\r\n\t\tif (this.options.width || this.options.width === 0) {\r\n\t\t\tthis.overlayElement.style.width = formatCssUnit(this.options.width);\r\n\t\t}\r\n\r\n\t\tif (this.options.height || this.options.height === 0) {\r\n\t\t\tthis.overlayElement.style.height = formatCssUnit(this.options.height);\r\n\t\t}\r\n\r\n\t\tif (this.options.minWidth || this.options.minWidth === 0) {\r\n\t\t\tthis.overlayElement.style.minWidth = formatCssUnit(this.options.minWidth);\r\n\t\t}\r\n\r\n\t\tif (this.options.minHeight || this.options.minHeight === 0) {\r\n\t\t\tthis.overlayElement.style.minHeight = formatCssUnit(\r\n\t\t\t\tthis.options.minHeight\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (this.options.maxWidth || this.options.maxWidth === 0) {\r\n\t\t\tthis.overlayElement.style.maxWidth = formatCssUnit(this.options.maxWidth);\r\n\t\t}\r\n\r\n\t\tif (this.options.maxHeight || this.options.maxHeight === 0) {\r\n\t\t\tthis.overlayElement.style.maxHeight = formatCssUnit(\r\n\t\t\t\tthis.options.maxHeight\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleBackdropClick(event: MouseEvent) {\r\n\t\tif (\r\n\t\t\t!isAncestorOfClass(event.target as Element, this.options.className, true)\r\n\t\t) {\r\n\t\t\tif (this.backdropClick) {\r\n\t\t\t\tthis.backdropClick(event);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function overlay(\r\n\telement: HTMLElement,\r\n\toptions?: OverlayOptions\r\n): Overlay {\r\n\tconst overlayRef = new Overlay(element, options);\r\n\r\n\toverlayRef.create();\r\n\r\n\treturn overlayRef;\r\n}\r\n\r\nfunction formatCssUnit(value: number | string) {\r\n\t// todo: @opten/typescript?\r\n\treturn typeof value === 'string' ? (value as string) : `${value}px`;\r\n}\r\n\r\n/** Size properties for an overlay. */\r\nexport interface OverlaySizeConfig {\r\n\twidth?: number | string;\r\n\theight?: number | string;\r\n\tminWidth?: number | string;\r\n\tminHeight?: number | string;\r\n\tmaxWidth?: number | string;\r\n\tmaxHeight?: number | string;\r\n}\r\n","import { isElementClippedByScrolling } from '@opten/viewport/is-element-clipped-by-scrolling';\r\nimport { isElementScrolledOutsideView } from '@opten/viewport/is-element-scrolled-outside-view';\r\n\r\nimport { PositionStrategy } from './position-strategy';\r\n\r\nimport {\r\n\tConnectionPositionPair,\r\n\tOriginConnectionPosition,\r\n\tOverlayConnectionPosition,\r\n\tScrollingVisibility,\r\n\tConnectedOverlayPositionChange,\r\n\tvalidateHorizontalPosition,\r\n\tvalidateVerticalPosition,\r\n} from './connected-position';\r\n\r\nimport { Overlay } from '../overlay';\r\n\r\nexport class ConnectedPositionStrategy implements PositionStrategy {\r\n\tonPositionChange: (change: ConnectedOverlayPositionChange) => void;\r\n\r\n\t/** The offset in pixels for the overlay connection point on the x-axis */\r\n\tprivate offsetX = 0;\r\n\r\n\t/** The offset in pixels for the overlay connection point on the y-axis */\r\n\tprivate offsetY = 0;\r\n\r\n\t/** The Scrollable containers used to check scrollable view properties on position change. */\r\n\tprivate scrollables: HTMLElement[] = [];\r\n\r\n\t/** Ordered list of preferred positions, from most to least desirable. */\r\n\tprivate preferredPositions: ConnectionPositionPair[] = [];\r\n\r\n\t/** The origin element against which the overlay will be positioned. */\r\n\tprivate origin: HTMLElement;\r\n\r\n\t/** The overlay pane element. */\r\n\tprivate pane: HTMLElement;\r\n\r\n\t/** The last position to have been calculated as the best fit position. */\r\n\tprivate lastConnectedPosition: ConnectionPositionPair;\r\n\r\n\t/** Whether the position strategy is applied currently. */\r\n\tprivate applied = false;\r\n\r\n\t/** Whether the overlay position is locked. */\r\n\tprivate positionLocked = false;\r\n\r\n\tprivate boundResizeChange = this._handleResizeChange.bind(this);\r\n\r\n\tconstructor(\r\n\t\toriginPos: OriginConnectionPosition,\r\n\t\toverlayPos: OverlayConnectionPosition,\r\n\t\tprivate connectedTo: HTMLElement,\r\n\t\tprivate document: Document\r\n\t) {\r\n\t\tthis.origin = this.connectedTo;\r\n\t\tthis.withFallbackPosition(originPos, overlayPos);\r\n\t}\r\n\r\n\t/** Ordered list of preferred positions, from most to least desirable. */\r\n\tget positions(): ConnectionPositionPair[] {\r\n\t\treturn this.preferredPositions;\r\n\t}\r\n\r\n\t/** Attach this position strategy to an overlay. */\r\n\tattach(overlayRef: Overlay): void {\r\n\t\tthis.pane = overlayRef.overlayElement;\r\n\r\n\t\twindow.addEventListener('resize', this.boundResizeChange);\r\n\t}\r\n\r\n\t/** @docs-private */\r\n\tdetach() {\r\n\t\tthis.applied = false;\r\n\t\twindow.removeEventListener('resize', this.boundResizeChange);\r\n\t}\r\n\r\n\t/** Disposes all resources used by the position strategy. */\r\n\tdispose() {\r\n\t\tthis.detach();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the position of the overlay element, using whichever preferred position relative\r\n\t * to the origin fits on-screen.\r\n\t * @docs-private\r\n\t */\r\n\tapply(): void {\r\n\t\t// If the position has been applied already (e.g. when the overlay was opened) and the\r\n\t\t// consumer opted into locking in the position, re-use the old position, in order to\r\n\t\t// prevent the overlay from jumping around.\r\n\t\tif (this.applied && this.positionLocked && this.lastConnectedPosition) {\r\n\t\t\tthis.recalculateLastPosition();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._validatePositions();\r\n\t\tthis.applied = true;\r\n\r\n\t\t// We need the bounding rects for the origin and the overlay to determine how to position\r\n\t\t// the overlay relative to the origin.\r\n\t\tconst element = this.pane;\r\n\t\tconst originRect = this.origin.getBoundingClientRect();\r\n\t\tconst overlayRect = element.getBoundingClientRect();\r\n\r\n\t\t// We use the viewport size to determine whether a position would go off-screen.\r\n\t\tconst viewportSize = {\r\n\t\t\twidth: window.innerWidth,\r\n\t\t\theight: window.innerHeight,\r\n\t\t};\r\n\r\n\t\t// Fallback point if none of the fallbacks fit into the viewport.\r\n\t\tlet fallbackPoint: OverlayPoint | undefined;\r\n\t\tlet fallbackPosition: ConnectionPositionPair | undefined;\r\n\r\n\t\t// We want to place the overlay in the first of the preferred positions such that the\r\n\t\t// overlay fits on-screen.\r\n\t\tfor (const pos of this.preferredPositions) {\r\n\t\t\t// Get the (x, y) point of connection on the origin, and then use that to get the\r\n\t\t\t// (top, left) coordinate for the overlay at `pos`.\r\n\t\t\tconst originPoint = this._getOriginConnectionPoint(originRect, pos);\r\n\t\t\tconst overlayPoint = this._getOverlayPoint(\r\n\t\t\t\toriginPoint,\r\n\t\t\t\toverlayRect,\r\n\t\t\t\tviewportSize,\r\n\t\t\t\tpos\r\n\t\t\t);\r\n\r\n\t\t\t// If the overlay in the calculated position fits on-screen, put it there and we're done.\r\n\t\t\tif (overlayPoint.fitsInViewport) {\r\n\t\t\t\tthis._setElementPosition(element, overlayRect, overlayPoint, pos);\r\n\r\n\t\t\t\t// Save the last connected position in case the position needs to be re-calculated.\r\n\t\t\t\tthis.lastConnectedPosition = pos;\r\n\r\n\t\t\t\treturn;\r\n\t\t\t} else if (\r\n\t\t\t\t!fallbackPoint ||\r\n\t\t\t\tfallbackPoint.visibleArea < overlayPoint.visibleArea\r\n\t\t\t) {\r\n\t\t\t\tfallbackPoint = overlayPoint;\r\n\t\t\t\tfallbackPosition = pos;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If none of the preferred positions were in the viewport, take the one\r\n\t\t// with the largest visible area.\r\n\t\tthis._setElementPosition(\r\n\t\t\telement,\r\n\t\t\toverlayRect,\r\n\t\t\tfallbackPoint!,\r\n\t\t\tfallbackPosition!\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Re-positions the overlay element with the trigger in its last calculated position,\r\n\t * even if a position higher in the \"preferred positions\" list would now fit. This\r\n\t * allows one to re-align the panel without changing the orientation of the panel.\r\n\t */\r\n\trecalculateLastPosition(): void {\r\n\t\t// If the overlay has never been positioned before, do nothing.\r\n\t\tif (!this.lastConnectedPosition) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._validatePositions();\r\n\r\n\t\tconst originRect = this.origin.getBoundingClientRect();\r\n\t\tconst overlayRect = this.pane.getBoundingClientRect();\r\n\t\tconst viewportSize = {\r\n\t\t\twidth: window.innerWidth,\r\n\t\t\theight: window.innerHeight,\r\n\t\t};\r\n\t\tconst lastPosition =\r\n\t\t\tthis.lastConnectedPosition || this.preferredPositions[0];\r\n\r\n\t\tconst originPoint = this._getOriginConnectionPoint(\r\n\t\t\toriginRect,\r\n\t\t\tlastPosition\r\n\t\t);\r\n\t\tconst overlayPoint = this._getOverlayPoint(\r\n\t\t\toriginPoint,\r\n\t\t\toverlayRect,\r\n\t\t\tviewportSize,\r\n\t\t\tlastPosition\r\n\t\t);\r\n\t\tthis._setElementPosition(\r\n\t\t\tthis.pane,\r\n\t\t\toverlayRect,\r\n\t\t\toverlayPoint,\r\n\t\t\tlastPosition\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the list of Scrollable containers that host the origin element so that\r\n\t * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\r\n\t * Scrollable must be an ancestor element of the strategy's origin element.\r\n\t */\r\n\twithScrollableContainers(scrollables: HTMLElement[]): this {\r\n\t\tthis.scrollables = scrollables;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a new preferred fallback position.\r\n\t * @param originPos\r\n\t * @param overlayPos\r\n\t */\r\n\twithFallbackPosition(\r\n\t\toriginPos: OriginConnectionPosition,\r\n\t\toverlayPos: OverlayConnectionPosition,\r\n\t\toffsetX?: number,\r\n\t\toffsetY?: number\r\n\t): this {\r\n\t\tconst position = new ConnectionPositionPair(\r\n\t\t\toriginPos,\r\n\t\t\toverlayPos,\r\n\t\t\toffsetX,\r\n\t\t\toffsetY\r\n\t\t);\r\n\t\tthis.preferredPositions.push(position);\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets an offset for the overlay's connection point on the x-axis\r\n\t * @param offset New offset in the X axis.\r\n\t */\r\n\twithOffsetX(offset: number): this {\r\n\t\tthis.offsetX = offset;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets an offset for the overlay's connection point on the y-axis\r\n\t * @param offset New offset in the Y axis.\r\n\t */\r\n\twithOffsetY(offset: number): this {\r\n\t\tthis.offsetY = offset;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets whether the overlay's position should be locked in after it is positioned\r\n\t * initially. When an overlay is locked in, it won't attempt to reposition itself\r\n\t * when the position is re-applied (e.g. when the user scrolls away).\r\n\t * @param isLocked Whether the overlay should locked in.\r\n\t */\r\n\twithLockedPosition(isLocked: boolean): this {\r\n\t\tthis.positionLocked = isLocked;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Overwrites the current set of positions with an array of new ones.\r\n\t * @param positions Position pairs to be set on the strategy.\r\n\t */\r\n\twithPositions(positions: ConnectionPositionPair[]): this {\r\n\t\tthis.preferredPositions = positions.slice();\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the origin element, relative to which to position the overlay.\r\n\t * @param origin Reference to the new origin element.\r\n\t */\r\n\tsetOrigin(origin: HTMLElement): this {\r\n\t\tthis.origin = origin;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the horizontal (x) \"start\" dimension\r\n\t * @param rect\r\n\t */\r\n\tprivate _getStartX(rect: ClientRect): number {\r\n\t\treturn rect.left;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the horizontal (x) \"end\" dimension\r\n\t * @param rect\r\n\t */\r\n\tprivate _getEndX(rect: ClientRect): number {\r\n\t\treturn rect.right;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\r\n\t * @param originRect\r\n\t * @param pos\r\n\t */\r\n\tprivate _getOriginConnectionPoint(\r\n\t\toriginRect: ClientRect,\r\n\t\tpos: ConnectionPositionPair\r\n\t): Point {\r\n\t\tconst originStartX = this._getStartX(originRect);\r\n\t\tconst originEndX = this._getEndX(originRect);\r\n\r\n\t\tlet x: number;\r\n\t\tif (pos.originX === 'center') {\r\n\t\t\tx = originStartX + originRect.width / 2;\r\n\t\t} else {\r\n\t\t\tx = pos.originX === 'start' ? originStartX : originEndX;\r\n\t\t}\r\n\r\n\t\tlet y: number;\r\n\t\tif (pos.originY === 'center') {\r\n\t\t\ty = originRect.top + originRect.height / 2;\r\n\t\t} else {\r\n\t\t\ty = pos.originY === 'top' ? originRect.top : originRect.bottom;\r\n\t\t}\r\n\r\n\t\treturn { x, y };\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\r\n\t * origin point to which the overlay should be connected, as well as how much of the element\r\n\t * would be inside the viewport at that position.\r\n\t */\r\n\tprivate _getOverlayPoint(\r\n\t\toriginPoint: Point,\r\n\t\toverlayRect: ClientRect,\r\n\t\tviewportSize: { width: number; height: number },\r\n\t\tpos: ConnectionPositionPair\r\n\t): OverlayPoint {\r\n\t\t// Calculate the (overlayStartX, overlayStartY), the start of the potential overlay position\r\n\t\t// relative to the origin point.\r\n\t\tlet overlayStartX: number;\r\n\t\tif (pos.overlayX === 'center') {\r\n\t\t\toverlayStartX = -overlayRect.width / 2;\r\n\t\t} else if (pos.overlayX === 'start') {\r\n\t\t\toverlayStartX = 0;\r\n\t\t} else {\r\n\t\t\toverlayStartX = -overlayRect.width;\r\n\t\t}\r\n\r\n\t\tlet overlayStartY: number;\r\n\t\tif (pos.overlayY === 'center') {\r\n\t\t\toverlayStartY = -overlayRect.height / 2;\r\n\t\t} else {\r\n\t\t\toverlayStartY = pos.overlayY === 'top' ? 0 : -overlayRect.height;\r\n\t\t}\r\n\r\n\t\t// The (x, y) offsets of the overlay based on the current position.\r\n\t\tconst offsetX =\r\n\t\t\ttypeof pos.offsetX === 'undefined' ? this.offsetX : pos.offsetX;\r\n\t\tconst offsetY =\r\n\t\t\ttypeof pos.offsetY === 'undefined' ? this.offsetY : pos.offsetY;\r\n\r\n\t\t// The (x, y) coordinates of the overlay.\r\n\t\tconst x = originPoint.x + overlayStartX + offsetX;\r\n\t\tconst y = originPoint.y + overlayStartY + offsetY;\r\n\r\n\t\t// How much the overlay would overflow at this position, on each side.\r\n\t\tconst leftOverflow = 0 - x;\r\n\t\tconst rightOverflow = x + overlayRect.width - viewportSize.width;\r\n\t\tconst topOverflow = 0 - y;\r\n\t\tconst bottomOverflow = y + overlayRect.height - viewportSize.height;\r\n\r\n\t\t// Visible parts of the element on each axis.\r\n\t\tconst visibleWidth = this._subtractOverflows(\r\n\t\t\toverlayRect.width,\r\n\t\t\tleftOverflow,\r\n\t\t\trightOverflow\r\n\t\t);\r\n\t\tconst visibleHeight = this._subtractOverflows(\r\n\t\t\toverlayRect.height,\r\n\t\t\ttopOverflow,\r\n\t\t\tbottomOverflow\r\n\t\t);\r\n\r\n\t\t// The area of the element that's within the viewport.\r\n\t\tconst visibleArea = visibleWidth * visibleHeight;\r\n\t\tconst fitsInViewport =\r\n\t\t\toverlayRect.width * overlayRect.height === visibleArea;\r\n\r\n\t\treturn { x, y, fitsInViewport, visibleArea };\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the view properties of the trigger and overlay, including whether they are clipped\r\n\t * or completely outside the view of any of the strategy's scrollables.\r\n\t */\r\n\tprivate _getScrollVisibility(overlay: HTMLElement): ScrollingVisibility {\r\n\t\tconst originBounds = this.origin.getBoundingClientRect();\r\n\t\tconst overlayBounds = overlay.getBoundingClientRect();\r\n\t\tconst scrollContainerBounds = this.scrollables.map((s) =>\r\n\t\t\ts.getBoundingClientRect()\r\n\t\t);\r\n\r\n\t\treturn {\r\n\t\t\tisOriginClipped: isElementClippedByScrolling(\r\n\t\t\t\toriginBounds,\r\n\t\t\t\tscrollContainerBounds\r\n\t\t\t),\r\n\t\t\tisOriginOutsideView: isElementScrolledOutsideView(\r\n\t\t\t\toriginBounds,\r\n\t\t\t\tscrollContainerBounds\r\n\t\t\t),\r\n\t\t\tisOverlayClipped: isElementClippedByScrolling(\r\n\t\t\t\toverlayBounds,\r\n\t\t\t\tscrollContainerBounds\r\n\t\t\t),\r\n\t\t\tisOverlayOutsideView: isElementScrolledOutsideView(\r\n\t\t\t\toverlayBounds,\r\n\t\t\t\tscrollContainerBounds\r\n\t\t\t),\r\n\t\t};\r\n\t}\r\n\r\n\t/** Physically positions the overlay element to the given coordinate. */\r\n\tprivate _setElementPosition(\r\n\t\telement: HTMLElement,\r\n\t\toverlayRect: ClientRect,\r\n\t\toverlayPoint: Point,\r\n\t\tpos: ConnectionPositionPair\r\n\t) {\r\n\t\t// We want to set either `top` or `bottom` based on whether the overlay wants to appear above\r\n\t\t// or below the origin and the direction in which the element will expand.\r\n\t\tconst verticalStyleProperty = pos.overlayY === 'bottom' ? 'bottom' : 'top';\r\n\r\n\t\t// When using `bottom`, we adjust the y position such that it is the distance\r\n\t\t// from the bottom of the viewport rather than the top.\r\n\t\tconst y =\r\n\t\t\tverticalStyleProperty === 'top'\r\n\t\t\t\t? overlayPoint.y\r\n\t\t\t\t: this.document.documentElement.clientHeight -\r\n\t\t\t\t (overlayPoint.y + overlayRect.height);\r\n\r\n\t\tconst horizontalStyleProperty = pos.overlayX === 'end' ? 'right' : 'left';\r\n\r\n\t\t// When we're setting `right`, we adjust the x position such that it is the distance\r\n\t\t// from the right edge of the viewport rather than the left edge.\r\n\t\tconst x =\r\n\t\t\thorizontalStyleProperty === 'left'\r\n\t\t\t\t? overlayPoint.x\r\n\t\t\t\t: this.document.documentElement.clientWidth -\r\n\t\t\t\t (overlayPoint.x + overlayRect.width);\r\n\r\n\t\t// Reset any existing styles. This is necessary in case the preferred position has\r\n\t\t// changed since the last `apply`.\r\n\t\t['top', 'bottom', 'left', 'right'].forEach(\r\n\t\t\t(p) => (element.style[p] = null)\r\n\t\t);\r\n\r\n\t\telement.style[verticalStyleProperty] = `${y}px`;\r\n\t\telement.style[horizontalStyleProperty] = `${x}px`;\r\n\r\n\t\t// Notify that the position has been changed along with its change properties.\r\n\t\tconst scrollableViewProperties = this._getScrollVisibility(element);\r\n\t\tconst positionChange = new ConnectedOverlayPositionChange(\r\n\t\t\tpos,\r\n\t\t\tscrollableViewProperties\r\n\t\t);\r\n\r\n\t\tif (this.onPositionChange) {\r\n\t\t\tthis.onPositionChange(positionChange);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Subtracts the amount that an element is overflowing on an axis from it's length. */\r\n\tprivate _subtractOverflows(length: number, ...overflows: number[]): number {\r\n\t\treturn overflows.reduce((currentValue: number, currentOverflow: number) => {\r\n\t\t\treturn currentValue - Math.max(currentOverflow, 0);\r\n\t\t}, length);\r\n\t}\r\n\r\n\t/** Validates that the current position match the expected values. */\r\n\tprivate _validatePositions(): void {\r\n\t\tif (!this.preferredPositions.length) {\r\n\t\t\tthrow Error(\r\n\t\t\t\t'ConnectedPositionStrategy: At least one position is required.'\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// TODO(crisbeto): remove these once Angular's template type\r\n\t\t// checking is advanced enough to catch these cases.\r\n\t\tthis.preferredPositions.forEach((pair) => {\r\n\t\t\tvalidateHorizontalPosition('originX', pair.originX);\r\n\t\t\tvalidateVerticalPosition('originY', pair.originY);\r\n\t\t\tvalidateHorizontalPosition('overlayX', pair.overlayX);\r\n\t\t\tvalidateVerticalPosition('overlayY', pair.overlayY);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _handleResizeChange() {\r\n\t\tthis.apply();\r\n\t}\r\n}\r\n\r\n/** A simple (x, y) coordinate. */\r\n// tslint:disable-next-line:interface-name\r\ninterface Point {\r\n\tx: number;\r\n\ty: number;\r\n}\r\n\r\n/**\r\n * Expands the simple (x, y) coordinate by adding info about whether the\r\n * element would fit inside the viewport at that position, as well as\r\n * how much of the element would be visible.\r\n */\r\n// tslint:disable-next-line:interface-name\r\ninterface OverlayPoint extends Point {\r\n\tvisibleArea: number;\r\n\tfitsInViewport: boolean;\r\n}\r\n","/** Horizontal dimension of a connection point on the perimeter of the origin or overlay element. */\r\nexport type HorizontalConnectionPos = 'start' | 'center' | 'end';\r\n\r\n/** Vertical dimension of a connection point on the perimeter of the origin or overlay element. */\r\nexport type VerticalConnectionPos = 'top' | 'center' | 'bottom';\r\n\r\n/** A connection point on the origin element. */\r\n// tslint:disable-next-line:interface-name\r\nexport interface OriginConnectionPosition {\r\n\toriginX: HorizontalConnectionPos;\r\n\toriginY: VerticalConnectionPos;\r\n}\r\n\r\n/** A connection point on the overlay element. */\r\n// tslint:disable-next-line:interface-name\r\nexport interface OverlayConnectionPosition {\r\n\toverlayX: HorizontalConnectionPos;\r\n\toverlayY: VerticalConnectionPos;\r\n}\r\n\r\n/** The points of the origin element and the overlay element to connect. */\r\nexport class ConnectionPositionPair {\r\n\t/** X-axis attachment point for connected overlay origin. Can be 'start', 'end', or 'center'. */\r\n\toriginX: HorizontalConnectionPos;\r\n\t/** Y-axis attachment point for connected overlay origin. Can be 'top', 'bottom', or 'center'. */\r\n\toriginY: VerticalConnectionPos;\r\n\t/** X-axis attachment point for connected overlay. Can be 'start', 'end', or 'center'. */\r\n\toverlayX: HorizontalConnectionPos;\r\n\t/** Y-axis attachment point for connected overlay. Can be 'top', 'bottom', or 'center'. */\r\n\toverlayY: VerticalConnectionPos;\r\n\r\n\tconstructor(\r\n\t\torigin: OriginConnectionPosition,\r\n\t\toverlay: OverlayConnectionPosition,\r\n\t\tpublic offsetX?: number,\r\n\t\tpublic offsetY?: number\r\n\t) {\r\n\t\tthis.originX = origin.originX;\r\n\t\tthis.originY = origin.originY;\r\n\t\tthis.overlayX = overlay.overlayX;\r\n\t\tthis.overlayY = overlay.overlayY;\r\n\t}\r\n}\r\n\r\n/**\r\n * Set of properties regarding the position of the origin and overlay relative to the viewport\r\n * with respect to the containing Scrollable elements.\r\n *\r\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\r\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\r\n *\r\n * The overlay and origin are outside view if there is no overlap between their bounding client\r\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\r\n *\r\n * ----------- -----------\r\n * | outside | | clipped |\r\n * | view | --------------------------\r\n * | | | | | |\r\n * ---------- | ----------- |\r\n * -------------------------- | |\r\n * | | | Scrollable |\r\n * | | | |\r\n * | | --------------------------\r\n * | Scrollable |\r\n * | |\r\n * --------------------------\r\n *\r\n * @docs-private\r\n */\r\nexport class ScrollingVisibility {\r\n\tisOriginClipped: boolean;\r\n\tisOriginOutsideView: boolean;\r\n\tisOverlayClipped: boolean;\r\n\tisOverlayOutsideView: boolean;\r\n}\r\n\r\n/** The change event emitted by the strategy when a fallback position is used. */\r\nexport class ConnectedOverlayPositionChange {\r\n\tconstructor(\r\n\t\t/** The position used as a result of this change. */\r\n\t\tpublic connectionPair: ConnectionPositionPair,\r\n\t\tpublic scrollableViewProperties?: ScrollingVisibility\r\n\t) {}\r\n}\r\n\r\n/**\r\n * Validates whether a vertical position property matches the expected values.\r\n * @param property Name of the property being validated.\r\n * @param value Value of the property being validated.\r\n * @docs-private\r\n */\r\nexport function validateVerticalPosition(\r\n\tproperty: string,\r\n\tvalue: VerticalConnectionPos\r\n) {\r\n\tif (value !== 'top' && value !== 'bottom' && value !== 'center') {\r\n\t\tthrow Error(\r\n\t\t\t`ConnectedPosition: Invalid ${property} '${value}'. ` +\r\n\t\t\t\t\"Expected 'top', 'bottom' or 'center'.\"\r\n\t\t);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validates whether a horizontal position property matches the expected values.\r\n * @param property Name of the property being validated.\r\n * @param value Value of the property being validated.\r\n * @docs-private\r\n */\r\nexport function validateHorizontalPosition(\r\n\tproperty: string,\r\n\tvalue: HorizontalConnectionPos\r\n) {\r\n\tif (value !== 'start' && value !== 'end' && value !== 'center') {\r\n\t\tthrow Error(\r\n\t\t\t`ConnectedPosition: Invalid ${property} '${value}'. ` +\r\n\t\t\t\t\"Expected 'start', 'end' or 'center'.\"\r\n\t\t);\r\n\t}\r\n}\r\n","import { addClass } from '@opten/dom/add-class';\r\nimport { PositionStrategy } from './position-strategy';\r\nimport { Overlay } from '../overlay';\r\n\r\n/**\r\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\r\n * explicit position relative to the browser's viewport. We use flexbox, instead of\r\n * transforms, in order to avoid issues with subpixel rendering which can cause the\r\n * element to become blurry.\r\n */\r\nexport class GlobalPositionStrategy implements PositionStrategy {\r\n\t/** The overlay to which this strategy is attached. */\r\n\tprivate overlayRef: Overlay;\r\n\r\n\tprivate cssPosition = 'static';\r\n\tprivate topOffset = '';\r\n\tprivate bottomOffset = '';\r\n\tprivate leftOffset = '';\r\n\tprivate rightOffset = '';\r\n\tprivate alignItems = '';\r\n\tprivate justifyContent = '';\r\n\tprivate width = '';\r\n\tprivate height = '';\r\n\r\n\t/** A lazily-created wrapper for the overlay element that is used as a flex container. */\r\n\tprivate wrapper: HTMLElement | null = null;\r\n\r\n\tconstructor(private document: Document) {}\r\n\r\n\tattach(overlayRef: Overlay): void {\r\n\t\tconst options = overlayRef.getOptions();\r\n\r\n\t\tthis.overlayRef = overlayRef;\r\n\r\n\t\tif (this.width && !options.width) {\r\n\t\t\toverlayRef.updateSize({ width: this.width });\r\n\t\t}\r\n\r\n\t\tif (this.height && !options.height) {\r\n\t\t\toverlayRef.updateSize({ height: this.height });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the top position of the overlay. Clears any previously set vertical position.\r\n\t * @param value New top offset.\r\n\t */\r\n\ttop(value = ''): this {\r\n\t\tthis.bottomOffset = '';\r\n\t\tthis.topOffset = value;\r\n\t\tthis.alignItems = 'flex-start';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the left position of the overlay. Clears any previously set horizontal position.\r\n\t * @param value New left offset.\r\n\t */\r\n\tleft(value = ''): this {\r\n\t\tthis.rightOffset = '';\r\n\t\tthis.leftOffset = value;\r\n\t\tthis.justifyContent = 'flex-start';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the bottom position of the overlay. Clears any previously set vertical position.\r\n\t * @param value New bottom offset.\r\n\t */\r\n\tbottom(value = ''): this {\r\n\t\tthis.topOffset = '';\r\n\t\tthis.bottomOffset = value;\r\n\t\tthis.alignItems = 'flex-end';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the right position of the overlay. Clears any previously set horizontal position.\r\n\t * @param value New right offset.\r\n\t */\r\n\tright(value = ''): this {\r\n\t\tthis.leftOffset = '';\r\n\t\tthis.rightOffset = value;\r\n\t\tthis.justifyContent = 'flex-end';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Centers the overlay horizontally with an optional offset.\r\n\t * Clears any previously set horizontal position.\r\n\t *\r\n\t * @param offset Overlay offset from the horizontal center.\r\n\t */\r\n\tcenterHorizontally(offset = ''): this {\r\n\t\tthis.left(offset);\r\n\t\tthis.justifyContent = 'center';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Centers the overlay vertically with an optional offset.\r\n\t * Clears any previously set vertical position.\r\n\t *\r\n\t * @param offset Overlay offset from the vertical center.\r\n\t */\r\n\tcenterVertically(offset = ''): this {\r\n\t\tthis.top(offset);\r\n\t\tthis.alignItems = 'center';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Apply the position to the element.\r\n\t * @docs-private\r\n\t *\r\n\t * @returns Resolved when the styles have been applied.\r\n\t */\r\n\tapply() {\r\n\t\t// Since the overlay ref applies the strategy asynchronously, it could\r\n\t\t// have been disposed before it ends up being applied. If that is the\r\n\t\t// case, we shouldn't do anything.\r\n\t\tif (!this.overlayRef.hasAttached()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst element = this.overlayRef.overlayElement;\r\n\r\n\t\tif (!this.wrapper && element.parentNode) {\r\n\t\t\tthis.wrapper = this.document.createElement('div');\r\n\t\t\taddClass(this.wrapper, 'c-overlay__global'); // todo: settings?\r\n\t\t\telement.parentNode.insertBefore(this.wrapper!, element);\r\n\t\t\tthis.wrapper!.appendChild(element);\r\n\t\t}\r\n\r\n\t\tconst parentStyles = (element.parentNode as HTMLElement).style;\r\n\t\tconst options = this.overlayRef.getOptions();\r\n\r\n\t\telement.style.position = this.cssPosition;\r\n\t\telement.style.marginLeft = options.width === '100%' ? '0' : this.leftOffset;\r\n\t\telement.style.marginTop = options.height === '100%' ? '0' : this.topOffset;\r\n\t\telement.style.marginBottom = this.bottomOffset;\r\n\t\telement.style.marginRight = this.rightOffset;\r\n\r\n\t\tparentStyles.justifyContent =\r\n\t\t\toptions.width === '100%' ? 'flex-start' : this.justifyContent;\r\n\t\tparentStyles.alignItems =\r\n\t\t\toptions.height === '100%' ? 'flex-start' : this.alignItems;\r\n\t}\r\n\r\n\t/** Removes the wrapper element from the DOM. */\r\n\tdispose() {\r\n\t\tif (this.wrapper && this.wrapper.parentNode) {\r\n\t\t\tthis.wrapper.parentNode.removeChild(this.wrapper);\r\n\t\t\tthis.wrapper = null;\r\n\t\t}\r\n\t}\r\n}\r\n","import {\r\n\tOriginConnectionPosition,\r\n\tOverlayConnectionPosition,\r\n} from './connected-position';\r\nimport { ConnectedPositionStrategy } from './connected-position-strategy';\r\nimport { GlobalPositionStrategy } from './global-position-strategy';\r\n\r\nexport class OverlayPositionBuilder {\r\n\t/**\r\n\t * Creates a global position strategy.\r\n\t */\r\n\tglobal(): GlobalPositionStrategy {\r\n\t\treturn new GlobalPositionStrategy(document);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a relative position strategy.\r\n\t * @param elementRef\r\n\t * @param originPos\r\n\t * @param overlayPos\r\n\t */\r\n\tconnectedTo(\r\n\t\telementRef: HTMLElement,\r\n\t\toriginPos: OriginConnectionPosition,\r\n\t\toverlayPos: OverlayConnectionPosition\r\n\t): ConnectedPositionStrategy {\r\n\t\treturn new ConnectedPositionStrategy(\r\n\t\t\toriginPos,\r\n\t\t\toverlayPos,\r\n\t\t\telementRef,\r\n\t\t\tdocument\r\n\t\t);\r\n\t}\r\n}\r\n","import { isElementScrolledOutsideView } from '@opten/viewport/is-element-scrolled-outside-view';\r\n\r\nimport { ScrollStrategy } from './scroll-strategy';\r\nimport { Overlay } from '../overlay';\r\n\r\n/**\r\n * Config options for the RepositionScrollStrategy.\r\n */\r\n// tslint:disable-next-line:interface-name\r\nexport interface RepositionScrollStrategyConfig {\r\n\t/** Time in milliseconds to throttle the scroll events. */\r\n\tscrollThrottle?: number;\r\n\r\n\t/** Whether to close the overlay once the user has scrolled away completely. */\r\n\tautoClose?: boolean;\r\n}\r\n\r\n/**\r\n * Strategy that will update the element position as the user is scrolling.\r\n */\r\nexport class RepositionScrollStrategy implements ScrollStrategy {\r\n\tprivate overlayRef: Overlay;\r\n\tprivate applied = false;\r\n\r\n\tconstructor(private config?: RepositionScrollStrategyConfig) {}\r\n\r\n\t/** Attaches this scroll strategy to an overlay. */\r\n\tattach(overlayRef: Overlay) {\r\n\t\tthis.overlayRef = overlayRef;\r\n\t}\r\n\r\n\t/** Enables repositioning of the attached overlay on scroll. */\r\n\tenable() {\r\n\t\tif (!this.applied) {\r\n\t\t\twindow.addEventListener('scroll', this.handleScroll);\r\n\t\t\tthis.applied = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/** Disables repositioning of the attached overlay on scroll. */\r\n\tdisable() {\r\n\t\tif (this.applied) {\r\n\t\t\twindow.removeEventListener('scroll', this.handleScroll);\r\n\t\t\tthis.applied = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate handleScroll = () => {\r\n\t\tconst throttle = this.config ? this.config.scrollThrottle : 0;\r\n\t\tconst autoClose = this.config ? this.config.autoClose : true;\r\n\r\n\t\tconst update = () => {\r\n\t\t\tthis.overlayRef.updatePosition();\r\n\r\n\t\t\tif (autoClose) {\r\n\t\t\t\tconst overlayRect = this.overlayRef.overlayElement.getBoundingClientRect();\r\n\t\t\t\tconst { width, height } = {\r\n\t\t\t\t\twidth: window.innerWidth,\r\n\t\t\t\t\theight: window.innerHeight,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// todo: include all ancestor scroll containers here once\r\n\t\t\t\t// we have a way of exposing the trigger element to the scroll strategy.\r\n\t\t\t\tconst parentRects = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\twidth,\r\n\t\t\t\t\t\theight,\r\n\t\t\t\t\t\tbottom: height,\r\n\t\t\t\t\t\tright: width,\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0,\r\n\t\t\t\t\t},\r\n\t\t\t\t];\r\n\r\n\t\t\t\tif (isElementScrolledOutsideView(overlayRect, parentRects)) {\r\n\t\t\t\t\tthis.disable();\r\n\t\t\t\t\tthis.overlayRef.close();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tif (throttle > 0) {\r\n\t\t\tsetTimeout(() => update(), throttle);\r\n\t\t} else {\r\n\t\t\tupdate();\r\n\t\t}\r\n\t};\r\n}\r\n","interface LoadingScriptWindow extends Window {\r\n\tloadingScripts: string[];\r\n}\r\n\r\nconst loadingScriptWindow = (window as unknown) as LoadingScriptWindow;\r\n\r\nloadingScriptWindow.loadingScripts = loadingScriptWindow.loadingScripts || [];\r\n\r\nexport function createScript(src: string, onerror: () => void = () => {}) {\r\n\tconst scriptElement = document.createElement('script');\r\n\tscriptElement.src = src;\r\n\tscriptElement.async = false;\r\n\tscriptElement.onload = (e) => {\r\n\t\tremoveLoadingScript(src);\r\n\t};\r\n\tscriptElement.onerror = (e) => {\r\n\t\tconsole.error(e);\r\n\t\tremoveLoadingScript(src);\r\n\t\tonerror();\r\n\t};\r\n\tloadingScriptWindow.loadingScripts.push(src);\r\n\treturn scriptElement;\r\n}\r\n\r\nfunction removeLoadingScript(src: string) {\r\n\tconst index = loadingScriptWindow.loadingScripts.indexOf(src);\r\n\tif (index > -1) {\r\n\t\tloadingScriptWindow.loadingScripts = loadingScriptWindow.loadingScripts.splice(\r\n\t\t\tindex,\r\n\t\t\t1\r\n\t\t);\r\n\t}\r\n}\r\n","import { removeDomain } from '@opten/url/remove-domain';\r\n\r\nexport function getScriptBySrc(src: string): HTMLScriptElement {\r\n\t// HINT: NEVER EVER change to Array.from() we need this code in load-polyfill\r\n\t// and IE doesn't understand this until the polyfills are obviously loaded!\r\n\tconst scripts = document.getElementsByTagName('script');\r\n\tfor (let i = 0; i < scripts.length; i++) {\r\n\t\tconst currentScriptElement = scripts.item(i);\r\n\t\tconst currentSrc = removeDomain(currentScriptElement.src);\r\n\t\tif (currentSrc === src) {\r\n\t\t\treturn currentScriptElement;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n","import { removeDomain } from '@opten/url/remove-domain';\r\nimport { wrapFunction } from '@opten/common/wrap-function';\r\nimport { getScriptBySrc } from '../get-script-by-src';\r\nimport { createScript } from '../create-script';\r\n\r\n(window as any).loadingScripts = (window as any).loadingScripts || [];\r\n\r\nexport function loadScript(src: string) {\r\n\treturn new Promise(\r\n\t\t(resolve: (ev?: Event) => void, reject: (ev: ErrorEvent) => void) => {\r\n\t\t\tconst script = getScriptBySrc(src);\r\n\r\n\t\t\tif (script) {\r\n\t\t\t\tif (\r\n\t\t\t\t\t(window as any).loadingScripts.indexOf(removeDomain(script.src)) !==\r\n\t\t\t\t\t-1\r\n\t\t\t\t) {\r\n\t\t\t\t\tscript.onerror = wrapFunction(script.onerror, reject);\r\n\t\t\t\t\tscript.onload = wrapFunction(script.onload, resolve);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst newScript = createScript(src);\r\n\t\t\t\tnewScript.onerror = reject;\r\n\t\t\t\tnewScript.onload = wrapFunction(newScript.onload, resolve);\r\n\t\t\t\tdocument.head.appendChild(newScript);\r\n\t\t\t}\r\n\t\t}\r\n\t);\r\n}\r\n","import { newGuid } from '@opten/common/new-guid';\nimport { addClass } from '@opten/dom/add-class';\nimport { removeClass } from '@opten/dom/remove-class';\nimport { createNode } from '@opten/dom/create-node';\nimport { KEYCODES } from '@opten/keycodes';\nimport {\n\toverlay,\n\tOverlay,\n\tOverlayOptions,\n\tConnectedPositionStrategy,\n\tOverlayPositionBuilder,\n\tOriginConnectionPosition,\n\tOverlayConnectionPosition,\n} from '../overlay';\nimport { parseCssUnit } from '@opten/number/parse-css-unit';\nimport { getCss } from '@opten/dom/get-css';\nimport { RepositionScrollStrategy } from '../overlay/scroll/reposition-scroll-strategy';\n\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the alignment of the selected option over\n * the trigger element.\n */\n\nexport class SelectOptions {\n\tclasses: {\n\t\tcomponent: string;\n\t\tactive: string;\n\t\thighlighted: string;\n\t\tdisabled: string;\n\t\ticonHtml?: string;\n\t};\n}\n\nexport class Option {\n\tconstructor(private element: HTMLOptionElement) {\n\t\t// this properties are cached\n\t\tthis.text = (this.element.textContent || '').trim();\n\t\tthis.disabled = this.element.disabled;\n\t}\n\n\tget disabled() {\n\t\treturn this._disabled;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis._disabled = value;\n\t}\n\tprivate _disabled: boolean;\n\n\tget text() {\n\t\treturn this._text;\n\t}\n\tset text(value: string) {\n\t\tthis._text = value;\n\t}\n\tprivate _text: string;\n\n\tget value() {\n\t\t// don't cache value, might change!\n\t\treturn (this.element.value || '').trim();\n\t}\n}\n\nexport class Select {\n\tprivate overlayRef: Overlay;\n\tprivate position: ConnectedPositionStrategy;\n\n\tprivate select: HTMLElement;\n\tprivate options: Option[];\n\tprivate selectedIndex: number;\n\tprivate activeIndex: number;\n\tprivate uuid: string;\n\n\tprivate triggerElement: HTMLElement;\n\tprivate triggerRect: ClientRect;\n\tprivate optionElements: HTMLElement[];\n\n\tpublic name: string;\n\tpublic htmlSelectElement: HTMLSelectElement;\n\n\tget value() {\n\t\t// don't cache value, might change!\n\t\treturn (this.htmlSelectElement.value || '').trim();\n\t}\n\n\tprivate config: SelectOptions = {\n\t\tclasses: {\n\t\t\tcomponent: 'c-select',\n\t\t\tactive: 'is-active',\n\t\t\thighlighted: 'is-highlighted',\n\t\t\tdisabled: 'is-disabled',\n\t\t},\n\t};\n\n\t/** The scroll position of the overlay panel, calculated to center the selected option. */\n\tprivate scrollTop = 0;\n\n\t/**\n\t * The y-offset of the overlay panel in relation to the trigger's top start corner.\n\t * This must be adjusted to align the selected option text over the trigger text.\n\t * when the panel opens. Will change based on the y-position of the selected option.\n\t */\n\tprivate offsetY = 0;\n\n\t/**\n\t * This position config ensures that the top \"start\" corner of the overlay\n\t * is aligned with with the top \"start\" of the origin by default (overlapping\n\t * the trigger completely). If the panel cannot fit below the trigger, it\n\t * will fall back to a position above the trigger.\n\t */\n\tprivate positions = [\n\t\t{\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'top',\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'top',\n\t\t},\n\t\t{\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'bottom',\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'bottom',\n\t\t},\n\t];\n\n\t/** Whether or not the overlay panel is open. */\n\tprivate panelOpen = false;\n\n\tprivate panelHTML: string;\n\n\tconstructor(\n\t\tprivate selectElement: HTMLSelectElement,\n\t\toptions?: SelectOptions\n\t) {\n\t\tthis.name = this.selectElement.name;\n\t\tthis.htmlSelectElement = this.selectElement;\n\n\t\tthis.config = { ...this.config, ...options };\n\n\t\tthis.selectedIndex = this._getSelectedIndex();\n\n\t\tthis.activeIndex = !this.selectedIndex ? 0 : this.selectedIndex;\n\n\t\tthis.uuid = newGuid();\n\n\t\tthis._init();\n\t}\n\n\topen(): void {\n\t\t// todo: implement disabled?\n\t\tif (\n\t\t\t/*this.disabled ||*/ !this.options ||\n\t\t\t!this.options.length ||\n\t\t\tthis.panelOpen\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.triggerRect = this.triggerElement.getBoundingClientRect();\n\n\t\tthis.panelOpen = true;\n\t\tthis._createOverlay().open();\n\n\t\tthis._calculateOverlayPosition();\n\t\tthis._highlightCorrectOption();\n\t\tthis._scrollActiveOptionIntoView();\n\t}\n\n\tclose(): void {\n\t\tif (this.panelOpen) {\n\t\t\tthis.overlayRef.close();\n\n\t\t\t// todo: gets called twice?\n\t\t\t// todo: correct? forward events\n\t\t\tthis._shouldForward('blur');\n\t\t}\n\t}\n\n\ttoggle(): void {\n\t\tthis.panelOpen ? this.close() : this.open();\n\t}\n\n\tprivate _init() {\n\t\t// todo: set arias like Angular Material\n\t\tthis.options = Array.from(this.selectElement.children).map(\n\t\t\t(option: HTMLOptionElement) => new Option(option)\n\t\t);\n\n\t\tthis.selectElement.tabIndex = -1;\n\t\tthis.selectElement.setAttribute('aria-hidden', 'true');\n\t\tthis.selectElement.setAttribute('data-select', this.uuid);\n\t\tthis.selectElement.insertAdjacentHTML('afterend', this._render());\n\t\tthis.selectElement.addEventListener('focus', () => {\n\t\t\tthis.select.focus();\n\t\t\tthis.open();\n\t\t});\n\n\t\tthis.select = document.getElementById(this.uuid);\n\t\tthis.select.tabIndex = 0;\n\t\tthis.select.className += ' ' + this.selectElement.className;\n\n\t\tthis.triggerElement = this.select.getElementsByClassName(\n\t\t\t`${this.config.classes.component}__trigger`\n\t\t)[0] as HTMLElement;\n\n\t\tthis.triggerElement.addEventListener('click', (event) => {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tthis.toggle();\n\t\t});\n\n\t\tthis.select.addEventListener('keydown', (event: KeyboardEvent) =>\n\t\t\tthis._handleKeydown(event)\n\t\t);\n\n\t\tthis.selectElement.addEventListener('change', () =>\n\t\t\tthis._emit(this.options[this.selectElement.selectedIndex], false)\n\t\t);\n\t}\n\n\tprivate _handleActiveIndex(event: KeyboardEvent) {\n\t\tconst delta = event.keyCode === KEYCODES.UP ? -1 : 1;\n\n\t\tif (this.activeIndex + delta <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.activeIndex + delta >= this.options.length) {\n\t\t\treturn;\n\t\t}\n\n\t\t// continue to move up/down the list until it finds an item that is not disabled\n\t\tfor (let i = 1; i <= this.options.length; i++) {\n\t\t\tconst index =\n\t\t\t\t(this.activeIndex + delta * i + this.options.length) %\n\t\t\t\tthis.options.length;\n\t\t\tconst item = this.options[index];\n\n\t\t\tif (!item.disabled) {\n\t\t\t\tthis._updateActiveItem(index);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _updateActiveItem(index: number) {\n\t\tthis.activeIndex = index;\n\t}\n\n\tprivate _handleKeydown(event: KeyboardEvent) {\n\t\tswitch (event.keyCode) {\n\t\t\tcase KEYCODES.SPACE:\n\t\t\t\tthis.toggle();\n\t\t\t\tbreak;\n\t\t\tcase KEYCODES.DOWN:\n\t\t\tcase KEYCODES.UP:\n\t\t\t\tthis._handleActiveIndex(event);\n\n\t\t\t\t// todo: something like subscribe on selectedIndex change\n\t\t\t\t// so we can call this method there\n\t\t\t\tif (this.panelOpen) {\n\t\t\t\t\tthis._highlightCorrectOption();\n\t\t\t\t\tthis._scrollActiveOptionIntoView();\n\t\t\t\t} else {\n\t\t\t\t\tthis._emit(this.options[this.activeIndex]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase KEYCODES.ESCAPE:\n\t\t\t\tif (this.panelOpen) {\n\t\t\t\t\tthis.close();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase KEYCODES.ENTER:\n\t\t\t\tif (!this.panelOpen) {\n\t\t\t\t\tthis.toggle();\n\t\t\t\t} else {\n\t\t\t\t\tthis._emit(this.options[this.activeIndex]);\n\n\t\t\t\t\t// todo: something like subscribe on activeIndex change\n\t\t\t\t\t// so we can call this method there\n\t\t\t\t\tthis._highlightCorrectOption();\n\t\t\t\t\tthis.close();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}\n\n\t/**\n\t * This method creates the overlay from the provided select's template and saves its\n\t * OverlayRef so that it can be attached to the DOM when open is called.\n\t */\n\tprivate _createOverlay(): Overlay {\n\t\tif (!this.overlayRef) {\n\t\t\tthis.overlayRef = overlay(\n\t\t\t\tcreateNode(this.panelHTML),\n\t\t\t\tthis._getOverlayOptions()\n\t\t\t);\n\n\t\t\tthis.overlayRef.backdropClick = () => this.close();\n\n\t\t\tthis.overlayRef.afterOpened = () => this._onPanelDone();\n\n\t\t\tthis.overlayRef.afterClosed = () => this.overlayRef.dispose();\n\n\t\t\tthis.overlayRef.onAttached = () => {\n\t\t\t\tthis.overlayRef.portalElement.style.transformOrigin = 'top'; // set initial origin\n\t\t\t\tthis._calculateOverlayOffsetX();\n\t\t\t\tthis.overlayRef.portalElement.scrollTop = this.scrollTop;\n\t\t\t};\n\n\t\t\t// todo: better way? we need that here because of the RepositionScrollStrategy\n\t\t\tthis.overlayRef.onDetached = () => (this.panelOpen = false);\n\n\t\t\tthis.optionElements = Array.from(\n\t\t\t\tthis.overlayRef.portalElement.getElementsByClassName(\n\t\t\t\t\t`${this.config.classes.component}__panel__option`\n\t\t\t\t)\n\t\t\t) as HTMLElement[];\n\n\t\t\tthis.optionElements.forEach((option, index) => {\n\t\t\t\toption.addEventListener('click', () => {\n\t\t\t\t\tconst option = this.options[index];\n\n\t\t\t\t\tif (option.disabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._emit(option);\n\n\t\t\t\t\t// todo: something like subscribe on selectedIndex change\n\t\t\t\t\t// so we can call this method there\n\t\t\t\t\tthis._highlightCorrectOption();\n\t\t\t\t\tthis.close();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn this.overlayRef;\n\t}\n\n\tprivate _getOverlayOptions(): OverlayOptions {\n\t\treturn new OverlayOptions({\n\t\t\tscrollStrategy: new RepositionScrollStrategy(),\n\t\t\tpositionStrategy: this.position = this._createPositionStrategy(),\n\t\t\tbackdropClassName: 'c-overlay-transparent-backdrop',\n\t\t\thasBackdrop: true,\n\t\t});\n\t}\n\n\tprivate _createPositionStrategy(): ConnectedPositionStrategy {\n\t\tconst primaryPosition = this.positions[0];\n\t\tconst originPoint = {\n\t\t\toriginX: primaryPosition.originX,\n\t\t\toriginY: primaryPosition.originY,\n\t\t} as OriginConnectionPosition;\n\t\tconst overlayPoint = {\n\t\t\toverlayX: primaryPosition.overlayX,\n\t\t\toverlayY: primaryPosition.overlayY,\n\t\t} as OverlayConnectionPosition;\n\n\t\t// todo: like angular material this.overlayRef.position()?\n\t\tconst strategy = new OverlayPositionBuilder()\n\t\t\t.connectedTo(this.triggerElement, originPoint, overlayPoint)\n\t\t\t.withOffsetX(0)\n\t\t\t.withOffsetY(this.offsetY);\n\n\t\tfor (let i = 1; i < this.positions.length; i++) {\n\t\t\tstrategy.withFallbackPosition(\n\t\t\t\t{\n\t\t\t\t\toriginX: this.positions[i].originX,\n\t\t\t\t\toriginY: this.positions[i].originY,\n\t\t\t\t} as OriginConnectionPosition,\n\t\t\t\t{\n\t\t\t\t\toverlayX: this.positions[i].overlayX,\n\t\t\t\t\toverlayY: this.positions[i].overlayY,\n\t\t\t\t} as OverlayConnectionPosition\n\t\t\t);\n\t\t}\n\n\t\treturn strategy;\n\t}\n\n\tprivate _emit(option: Option, shouldForwardEvent: boolean = true) {\n\t\tconst newValue = option.value;\n\t\tconst newLabel = option.text;\n\n\t\tthis.triggerElement.getElementsByClassName(\n\t\t\t`${this.config.classes.component}__trigger__value-text`\n\t\t)[0].textContent = newLabel;\n\t\tthis.triggerElement.setAttribute('data-value', newValue);\n\n\t\tthis.selectElement.value = newValue;\n\t\tthis.selectedIndex = this._getOptionIndex(option);\n\t\tthis.activeIndex = this.selectedIndex;\n\t\tthis.selectElement.selectedIndex = this.selectedIndex;\n\n\t\tif (shouldForwardEvent) {\n\t\t\tthis._shouldForward('change');\n\t\t}\n\t}\n\n\tprivate _render(): string {\n\t\tconst options = this.options.reduce((value, option, index) => {\n\t\t\treturn `${value}
\n ${option.text}\n
`;\n\t\t}, '');\n\n\t\tconst arrowHtml =\n\t\t\tthis.config.classes.iconHtml !== undefined &&\n\t\t\tthis.config.classes.iconHtml !== null &&\n\t\t\tthis.config.classes.iconHtml.length > 0\n\t\t\t\t? this.config.classes.iconHtml\n\t\t\t\t: ``;\n\n\t\tconst trigger = this.options\n\t\t\t.filter((option, index) => {\n\t\t\t\treturn index === this.selectedIndex;\n\t\t\t})\n\t\t\t.reduce((value, option) => {\n\t\t\t\treturn `${value}
\n \n \n ${option.text}\n \n \n ${arrowHtml}\n
`;\n\t\t\t}, '');\n\n\t\tthis.panelHTML = `
${options}
`;\n\n\t\treturn `
${trigger}
`;\n\t}\n\n\t/** Gets the index of the provided option in the option list. */\n\tprivate _getOptionIndex(option: Option): number | undefined {\n\t\treturn this.options.reduce(\n\t\t\t(result: number, current: Option, index: number) => {\n\t\t\t\treturn result === undefined\n\t\t\t\t\t? option === current\n\t\t\t\t\t\t? index\n\t\t\t\t\t\t: undefined\n\t\t\t\t\t: result;\n\t\t\t},\n\t\t\tundefined\n\t\t);\n\t}\n\n\t/** Scrolls the active option into view. */\n\tprivate _scrollActiveOptionIntoView(): void {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst activeOptionIndex = this.activeIndex || 0;\n\t\tconst scrollOffset = activeOptionIndex * itemHeight;\n\t\tconst panelTop = this.overlayRef.portalElement.scrollTop;\n\t\tconst maxHeight = this._getPanelMaxHeight();\n\n\t\tif (scrollOffset < panelTop) {\n\t\t\tthis.overlayRef.portalElement.scrollTop = scrollOffset;\n\t\t} else if (scrollOffset + itemHeight > panelTop + maxHeight) {\n\t\t\tthis.overlayRef.portalElement.scrollTop = Math.max(\n\t\t\t\t0,\n\t\t\t\tscrollOffset - maxHeight + itemHeight\n\t\t\t);\n\t\t}\n\t}\n\n\t/** Calculates the scroll position and x- and y-offsets of the overlay panel. */\n\tprivate _calculateOverlayPosition(): void {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst items = this.options.length;\n\t\tconst panelHeight = Math.min(items * itemHeight, this._getPanelMaxHeight());\n\t\tconst scrollContainerHeight = items * itemHeight;\n\n\t\t// The farthest the panel can be scrolled before it hits the bottom\n\t\tconst maxScroll = scrollContainerHeight - panelHeight;\n\n\t\t// If no value is selected we open the popup to the first item.\n\t\tconst selectedOptionOffset = this.selectedIndex!;\n\n\t\t// We must maintain a scroll buffer so the selected option will be scrolled to the\n\t\t// center of the overlay panel rather than the top.\n\t\tconst scrollBuffer = panelHeight / 2;\n\t\tthis.scrollTop = this._calculateOverlayScroll(\n\t\t\tselectedOptionOffset,\n\t\t\tscrollBuffer,\n\t\t\tmaxScroll\n\t\t);\n\t\tthis.offsetY = this._calculateOverlayOffsetY(\n\t\t\tselectedOptionOffset,\n\t\t\tscrollBuffer,\n\t\t\tmaxScroll\n\t\t);\n\n\t\tthis._checkOverlayWithinViewport(maxScroll);\n\t\tthis.position.withOffsetY(this.offsetY);\n\t}\n\n\t/**\n\t * Checks that the attempted overlay position will fit within the viewport.\n\t * If it will not fit, tries to adjust the scroll position and the associated\n\t * y-offset so the panel can open fully on-screen. If it still won't fit,\n\t * sets the offset back to 0 to allow the fallback position to take over.\n\t */\n\tprivate _checkOverlayWithinViewport(maxScroll: number): void {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst maxHeight = this._getPanelMaxHeight();\n\t\tconst viewportSize = {\n\t\t\twidth: window.innerWidth,\n\t\t\theight: window.innerHeight,\n\t\t};\n\t\tconst paddingWidth = this._getPanelToViewportPadding();\n\n\t\tconst topSpaceAvailable = this.triggerRect.top - paddingWidth;\n\t\tconst bottomSpaceAvailable =\n\t\t\tviewportSize.height - this.triggerRect.bottom - paddingWidth;\n\n\t\tconst panelHeightTop = Math.abs(this.offsetY);\n\t\tconst totalPanelHeight = Math.min(\n\t\t\tthis.options.length * itemHeight,\n\t\t\tmaxHeight\n\t\t);\n\t\tconst panelHeightBottom =\n\t\t\ttotalPanelHeight - panelHeightTop - this.triggerRect.height;\n\n\t\tif (panelHeightBottom > bottomSpaceAvailable) {\n\t\t\tthis._adjustPanelUp(panelHeightBottom, bottomSpaceAvailable);\n\t\t} else if (panelHeightTop > topSpaceAvailable) {\n\t\t\tthis._adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll);\n\t\t} else {\n\t\t\tthis.overlayRef.portalElement.style.transformOrigin = this._getOriginBasedOnOption();\n\t\t}\n\t}\n\n\t/** Adjusts the overlay panel up to fit in the viewport. */\n\tprivate _adjustPanelUp(\n\t\tpanelHeightBottom: number,\n\t\tbottomSpaceAvailable: number\n\t) {\n\t\t// Browsers ignore fractional scroll offsets, so we need to round.\n\t\tconst distanceBelowViewport = Math.round(\n\t\t\tpanelHeightBottom - bottomSpaceAvailable\n\t\t);\n\n\t\t// Scrolls the panel up by the distance it was extending past the boundary, then\n\t\t// adjusts the offset by that amount to move the panel up into the viewport.\n\t\tthis.scrollTop -= distanceBelowViewport;\n\t\tthis.offsetY -= distanceBelowViewport;\n\t\tthis.overlayRef.portalElement.style.transformOrigin = this._getOriginBasedOnOption();\n\n\t\t// If the panel is scrolled to the very top, it won't be able to fit the panel\n\t\t// by scrolling, so set the offset to 0 to allow the fallback position to take\n\t\t// effect.\n\t\tif (this.triggerRect.top + this.scrollTop <= 0) {\n\t\t\tthis.scrollTop = 0;\n\t\t\tthis.offsetY = 0;\n\t\t\tthis.overlayRef.portalElement.style.transformOrigin = '50% bottom 0px';\n\t\t}\n\t}\n\n\t/** Adjusts the overlay panel down to fit in the viewport. */\n\tprivate _adjustPanelDown(\n\t\tpanelHeightTop: number,\n\t\ttopSpaceAvailable: number,\n\t\tmaxScroll: number\n\t) {\n\t\t// Browsers ignore fractional scroll offsets, so we need to round.\n\t\tconst distanceAboveViewport = Math.round(\n\t\t\tpanelHeightTop - topSpaceAvailable\n\t\t);\n\n\t\t// Scrolls the panel down by the distance it was extending past the boundary, then\n\t\t// adjusts the offset by that amount to move the panel down into the viewport.\n\t\tthis.scrollTop += distanceAboveViewport;\n\t\tthis.offsetY += distanceAboveViewport;\n\t\tthis.overlayRef.portalElement.style.transformOrigin = this._getOriginBasedOnOption();\n\n\t\t// If the panel is scrolled to the very bottom, it won't be able to fit the\n\t\t// panel by scrolling, so set the offset to 0 to allow the fallback position\n\t\t// to take effect.\n\t\tif (this.triggerRect.top + this.scrollTop >= maxScroll) {\n\t\t\tthis.scrollTop = maxScroll;\n\t\t\tthis.offsetY = 0;\n\t\t\tthis.overlayRef.portalElement.style.transformOrigin = '50% top 0px';\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/** Sets the transform origin point based on the selected option. */\n\tprivate _getOriginBasedOnOption(): string {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst optionHeightAdjustment = (itemHeight - this.triggerRect.height) / 2;\n\t\tconst originY =\n\t\t\tMath.abs(this.offsetY) - optionHeightAdjustment + itemHeight / 2;\n\t\treturn `50% ${originY}px 0px`;\n\t}\n\n\t/**\n\t * Calculates the scroll position of the select's overlay panel.\n\t *\n\t * Attempts to center the selected option in the panel. If the option is\n\t * too high or too low in the panel to be scrolled to the center, it clamps the\n\t * scroll position to the min or max scroll positions respectively.\n\t */\n\tprivate _calculateOverlayScroll(\n\t\tselectedIndex: number,\n\t\tscrollBuffer: number,\n\t\tmaxScroll: number\n\t): number {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst optionOffsetFromScrollTop = itemHeight * selectedIndex;\n\t\tconst halfOptionHeight = itemHeight / 2;\n\n\t\t// Starts at the optionOffsetFromScrollTop, which scrolls the option to the top of the\n\t\t// scroll container, then subtracts the scroll buffer to scroll the option down to\n\t\t// the center of the overlay panel. Half the option height must be re-added to the\n\t\t// scrollTop so the option is centered based on its middle, not its top edge.\n\t\tconst optimalScrollPosition =\n\t\t\toptionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;\n\t\treturn Math.min(Math.max(0, optimalScrollPosition), maxScroll);\n\t}\n\n\t/**\n\t * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n\t * This must be adjusted to align the selected option text over the trigger text when\n\t * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n\t * can't be calculated until the panel has been attached, because we need to know the\n\t * content width in order to constrain the panel within the viewport.\n\t */\n\tprivate _calculateOverlayOffsetX(): void {\n\t\tconst overlayRect = this.overlayRef.overlayElement.getBoundingClientRect();\n\t\tconst viewportSize = {\n\t\t\twidth: window.innerWidth,\n\t\t\theight: window.innerHeight,\n\t\t};\n\t\tconst paddingWidth = this._getPanelToViewportPadding();\n\t\tlet offsetX = 0;\n\n\t\t// todo: multiple\n\t\t// Adjust the offset, depending on the option padding.\n\t\t// offsetX = this.selectedIndex ? padding.panel * 2 : padding.panel;\n\n\t\t// Invert the offset in LTR.\n\t\toffsetX *= -1;\n\n\t\t// Determine how much the select overflows on each side.\n\t\tconst leftOverflow = 0 - (overlayRect.left + offsetX);\n\t\tconst rightOverflow =\n\t\t\toverlayRect.right +\n\t\t\toffsetX -\n\t\t\tviewportSize.width; /* +\n padding.panel * 2*/\n\n\t\t// If the element overflows on either side, reduce the offset to allow it to fit.\n\t\tif (leftOverflow > 0) {\n\t\t\toffsetX += leftOverflow + paddingWidth;\n\t\t} else if (rightOverflow > 0) {\n\t\t\toffsetX -= rightOverflow + paddingWidth;\n\t\t}\n\n\t\t// Set the offset directly\n\t\tthis.position.withOffsetX(offsetX);\n\t\tthis.overlayRef.updatePosition();\n\t}\n\n\t/**\n\t * Calculates the y-offset of the select's overlay panel in relation to the\n\t * top start corner of the trigger. It has to be adjusted in order for the\n\t * selected option to be aligned over the trigger when the panel opens.\n\t */\n\tprivate _calculateOverlayOffsetY(\n\t\tselectedIndex: number,\n\t\tscrollBuffer: number,\n\t\tmaxScroll: number\n\t): number {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst optionHeightAdjustment = (itemHeight - this.triggerRect.height) / 2;\n\t\tconst maxHeight = this._getPanelMaxHeight();\n\t\tconst maxOptionsDisplayed = Math.floor(maxHeight / itemHeight);\n\t\tconst items = this.options.length;\n\t\tlet optionOffsetFromPanelTop: number;\n\n\t\tif (this.scrollTop === 0) {\n\t\t\toptionOffsetFromPanelTop = selectedIndex * itemHeight;\n\t\t} else if (this.scrollTop === maxScroll) {\n\t\t\tconst firstDisplayedIndex = items - maxOptionsDisplayed;\n\t\t\tconst selectedDisplayIndex = selectedIndex - firstDisplayedIndex;\n\n\t\t\t// The first item is partially out of the viewport. Therefore we need to calculate what\n\t\t\t// portion of it is shown in the viewport and account for it in our offset.\n\t\t\tconst partialItemHeight =\n\t\t\t\titemHeight - ((items * itemHeight - maxHeight) % itemHeight);\n\n\t\t\t// Because the panel height is longer than the height of the options alone,\n\t\t\t// there is always extra padding at the top or bottom of the panel. When\n\t\t\t// scrolled to the very bottom, this padding is at the top of the panel and\n\t\t\t// must be added to the offset.\n\t\t\toptionOffsetFromPanelTop =\n\t\t\t\tselectedDisplayIndex * itemHeight + partialItemHeight;\n\t\t} else {\n\t\t\t// If the option was scrolled to the middle of the panel using a scroll buffer,\n\t\t\t// its offset will be the scroll buffer minus the half height that was added to\n\t\t\t// center it.\n\t\t\toptionOffsetFromPanelTop = scrollBuffer - itemHeight / 2;\n\t\t}\n\n\t\t// The final offset is the option's offset from the top, adjusted for the height\n\t\t// difference, multiplied by -1 to ensure that the overlay moves in the correct\n\t\t// direction up the page.\n\t\treturn optionOffsetFromPanelTop * -1 - optionHeightAdjustment;\n\t}\n\n\tprivate _highlightCorrectOption() {\n\t\tthis.optionElements.forEach((option) => {\n\t\t\tremoveClass(option, this.config.classes.active);\n\t\t\tremoveClass(option, this.config.classes.highlighted);\n\t\t});\n\n\t\taddClass(\n\t\t\tthis.optionElements[this.selectedIndex],\n\t\t\tthis.config.classes.active\n\t\t);\n\n\t\tif (this.selectedIndex !== this.activeIndex) {\n\t\t\taddClass(\n\t\t\t\tthis.optionElements[this.activeIndex],\n\t\t\t\tthis.config.classes.highlighted\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate _getPanelToViewportPadding() {\n\t\tconst option = this.optionElements[0]!;\n\n\t\t// todo: cache?\n\t\tconst padding = parseCssUnit(getCss(option, 'padding-left'));\n\n\t\treturn Math.round(padding / 2);\n\t}\n\n\tprivate _getPanelMaxHeight(): number {\n\t\t// todo: cache?\n\t\treturn parseCssUnit(getCss(this.overlayRef.portalElement!, 'max-height'));\n\t}\n\n\tprivate _getItemHeight(): number {\n\t\treturn this.optionElements[0]!.offsetHeight!;\n\t}\n\n\t/**\n\t * When the panel element is finished transforming in (though not fading in), it\n\t * emits an event and focuses an option if the panel is open.\n\t */\n\tprivate _onPanelDone(): void {\n\t\tif (this.panelOpen) {\n\t\t\tthis.scrollTop = 0;\n\t\t} else {\n\t\t\tthis.position.withOffsetX(0);\n\t\t}\n\t}\n\n\t/**\n\t * Forward events to the