{"version":3,"sources":["flickity/flickity.pkgd.js","main.js","partials/_accordion-toggler.js","partials/_checkbox-filter.js","partials/_debouncer.js","partials/_download-catalog-modal.js","partials/_download-page.js","partials/_filter-product.js","partials/_form-validation.js","partials/_iubenda.js","partials/_last-seen-product.js","partials/_lazy-loading-image.js","partials/_load-more.js","partials/_menu-responsive.js","partials/_modal-response.js","partials/_read-more-less.js","partials/_recaptcha.js","partials/_responsive-carousel.js","partials/_search-filter.js","partials/_searched-product.js","partials/_sidebar-highlight.js","partials/_sidebar.js","partials/_simple-heading-carousl.js","partials/_slider-application-product-carousel.js","partials/_slider-carousel-widget.js","partials/_slider-product-carousel.js","partials/_slider_gallery_widget.js","partials/_vimeo-video - Copia.js"],"names":["window","factory","define","amd","jQuery","module","_typeof","exports","require","jQueryBridget","arraySlice","Array","prototype","slice","console","logError","message","error","namespace","PluginClass","$","option","opts","isPlainObject","this","options","extend","fn","arg0","$elems","methodName","args","returnValue","pluginMethodStr","call","arguments","each","i","elem","value","instance","data","method","charAt","apply","undefined","_init","updateJQuery","bridget","global","EvEmitter","proto","on","eventName","listener","listeners","events","_events","indexOf","push","once","onceEvents","_onceEvents","off","length","index","splice","emitEvent","onceListeners","allOff","getSize","getStyleSize","num","parseFloat","isNaN","measurements","measurementsLength","getStyle","style","getComputedStyle","isBoxSizeOuter","isSetup","div","document","createElement","width","padding","borderStyle","borderWidth","boxSizing","body","documentElement","appendChild","Math","round","removeChild","querySelector","nodeType","display","size","height","innerWidth","innerHeight","outerWidth","outerHeight","isBorderBox","offsetWidth","offsetHeight","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","matchesSelector","matchesMethod","ElemProto","Element","matches","prefixes","selector","fizzyUIUtils","utils","a","b","prop","makeArray","obj","isArray","removeFrom","ary","getParent","parentNode","getQueryElement","handleEvent","event","type","filterFindElements","elems","ffElems","forEach","HTMLElement","childElems","querySelectorAll","debounceMethod","_class","threshold","timeoutName","timeout","clearTimeout","_this","setTimeout","docReady","callback","readyState","addEventListener","toDashed","str","replace","match","$1","$2","toLowerCase","htmlInit","WidgetClass","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","attr","getAttribute","JSON","parse","className","Flickity","Cell","parent","element","create","position","setAttribute","x","shift","destroy","unselect","side","originSide","setPosition","updateTarget","renderPosition","setDefaultTarget","marginProperty","target","cellAlign","getPositionValue","select","classList","add","removeAttribute","remove","wrapShift","slideableWidth","Slide","isOriginLeft","cells","addCell","cell","beginMargin","max","firstMargin","endMargin","lastCell","getLastCell","lastMargin","slideWidth","getCellElements","map","animatePrototype","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","requestAnimationFrame","wrapAround","modulo","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","cursorPosition","rightToLeft","translateX","slider","transform","progress","firstSlide","slides","positionX","slidesWidth","dispatchEvent","selectedSlide","velocity","percentPosition","isPointerDown","isFreeScrolling","selectedIndex","beforeGap","afterGap","_shiftCells","beforeShiftCells","afterShiftCells","gap","getFrictionFactor","force","dragForce","isDraggable","dragX","applyForce","selectedAttraction","_Flickity","moveElements","toElem","GUID","instances","queryElement","flickityGUID","$element","constructor","defaults","_create","accessibility","freeScrollFriction","friction","namespaceJQueryEvents","resize","setGallerySize","createMethods","cellAlignShorthands","id","guid","viewport","_createSlider","watchCSS","activate","isActive","_filterFindCellElements","children","reloadCells","tabIndex","selectInitialIndex","isInitActivated","cellSelector","_makeCells","positionCells","_getWrapShiftCells","cellElem","getLastSlide","_sizeCells","_positionCells","maxCellHeight","startCell","cellX","len","updateSlides","_containSlides","slide","nextMargin","canCellFit","_getCanCellFit","updateSelectedSlide","number","percent","groupCells","parseInt","percentMatch","reposition","positionSliderAtSelected","setCellAlign","center","left","right","shorthand","adaptiveHeight","gapX","cellIndex","_unshiftCells","_getGapCells","increment","contentWidth","isContentSmaller","beginBound","endBound","contain","isRightToLeft","min","emitArgs","$event","jQEvent","Event","trigger","isWrap","isInstant","_wrapSelect","prevIndex","startAnimation","wrapIndex","delta","abs","backWrapDelta","forewardWrapDelta","isDragSelect","previous","next","unselectSelectedSlide","selectedCells","selectedElements","selectedCell","selectedElement","initialIndex","queryCell","selectCell","getCellSlideIndex","getCell","getCells","getParentCell","getAdjacentCellElements","adjCount","cellElems","slideIndex","uiChange","childUIPointerDown","preventDefault","focus","onresize","content","deactivate","onkeydown","isNotFocused","activeElement","handler","keyboardHandlers","keyCode","37","leftMethod","39","rightMethod","prevScrollY","pageYOffset","preventScroll","scrollTo","pageXOffset","removeEventListener","removeData","setJQuery","jq","Unipointer","Object","postStartEvents","bindStartEvent","_bindStartEvent","unbindStartEvent","isAdd","bindMethod","startEvent","PointerEvent","getTouch","touches","touch","identifier","pointerIdentifier","onmousedown","button","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointer","pointerId","pointerDown","_bindPostStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","pointerMove","onmouseup","_pointerUp","onpointerup","ontouchend","_pointerDone","pointerUp","_pointerReset","pointerDone","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","getPointerPoint","pageX","y","pageY","Unidragger","cursorNodes","bindHandles","_bindHandles","unbindHandles","touchAction","_touchActionValue","handles","handle","okayPointerDown","pointerDownPointer","pointerDownBlur","TEXTAREA","INPUT","SELECT","OPTION","clickTypes","radio","checkbox","submit","image","file","isCursorNode","nodeName","isClickType","isOkay","focused","blur","moveVector","_dragPointerMove","_dragMove","isDragging","hasDragStarted","_dragStart","_dragPointerUp","_dragEnd","_staticClick","isPreventingClicks","dragStart","dragMove","bind","dragEnd","onclick","isIgnoringMouseUp","staticClick","draggable","dragThreshold","isTouch","isTouchmoveScrollCanceled","focusNodes","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","bindDrag","unbindDrag","_pointerDownPreventDefault","pointerDownFocus","pointerDownScroll","getScrollPosition","_pointerDownDefault","isTouchStart","isTouchPointer","pointerType","isFocusNode","isTouchScrolling","dragStartPosition","previousDragX","direction","originBound","dragMoveTime","Date","restingX","freeScroll","dragEndRestingSelect","getRestingPosition","dragEndBoostSelect","distance","getSlideDistance","positiveResting","_getClosestResting","negativeResting","minDistance","Infinity","condition","d","md","isWrapAround","wrap","floor","clickedCell","onscroll","scroll","scrollMoveX","scrollMoveY","svgURI","PrevNextButton","isEnabled","isPrevious","leftDirection","isLeft","svg","disable","createSVG","update","createElementNS","path","pathMovements","shape","arrowShape","x0","x1","y1","x2","y2","x3","enable","disabled","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","PageDots","holder","dots","handleClick","onClick","setDots","addDots","removeDots","count","fragment","createDocumentFragment","newDots","dot","updateSelected","selectedDot","onTap","pageDots","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","state","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","hidden","tick","time","autoPlay","clear","stop","pause","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","insert","isAppend","insertCellElement","endCells","insertBefore","cellChange","append","prepend","minCellIndex","cellSizeChange","changedCellIndex","isPositioningSlider","prevSelectedElem","LazyLoader","img","flickity","load","_createLazyload","lazyLoad","lazyImages","lazyCellImages","lazyloadAttr","srcAttr","srcsetAttr","imgs","src","srcset","onload","complete","onerror","_createAsNavFor","activateAsNavFor","deactivateAsNavFor","destroyAsNavFor","asNavForOption","asNavFor","setNavCompanion","companion","navCompanion","onNavCompanionSelect","navCompanionSelect","onNavStaticClick","firstIndex","t","selectIndex","removeNavSelectedElements","navSelectedElements","changeNavSelectedClass","navElem","cellElement","imagesLoaded","ImagesLoaded","onAlways","queryElem","elements","getImages","jqDeferred","Deferred","check","images","addElementImages","addImage","background","addElementBackgroundImages","elementNodeTypes","childImgs","child","1","9","11","LoadingImage","Background","url","Image","reURL","exec","backgroundImage","addBackground","loadingImage","onProgress","progressedCount","hasAnyBroken","isLoaded","notify","debug","log","isComplete","jqMethod","getIsImageComplete","confirm","naturalWidth","proxyImage","unbindEvents","makeJQueryPlugin","promise","_createImagesLoaded","initRecaptcha","initFormsValidation","jsLazyLoadImages","initModalResponse","initIubendaProof","initMenuResponsive","accordionToggler","initLoadMore","initSearchedProducts","initLastSeenProduct","initDownloadCatalogs","initCheckboxFilter","initCarousel","initFilterProduct","filterSearch","initSliderGalleryClick","initVimeoVideo","sidebarAnchor","initDownloadPage","initReadMoreAndLess","highlightSidebarOnScroll","arrayAccordion","accordion","parentElement","wrapperParentElement","sectionParentElement","contains","toggle","arrayCheckboxFilterCategory","arrayCheckboxFilterSubCategory","initCheckOnlyOneCheckbox","arrayCheckboxFilterMarkets","arrayCheckbox","checked","debouncer","func","timeoutId","_this2","_len","_key","checkboxArray","valuesIdFilesArray","valueInputCheckbox","indexDeleteItem","initOpenModalDownload","modalClose","containerBoxes","downloadBtn","modalDownloadCatalog","checkedFiles","errorModal","errorTestIT","errorTestEN","rect","location","pathname","includes","getBoundingClientRect","toString","goUp","paramCategory","paramMarket","paramCertification","paramLang","paramCa","paramMa","paramCe","containerFilterArray","sidenavFilter","searchLinkFilter","lang","e","containerFilter","nameFilter","hasAttribute","marketCheckbox","certificationCheckbox","categoryCheckbox","paramsQueryString","fetchSidebarFilter","queryString","fetchUrl","fetch","then","response","text","updateSidebar","innerHTML","isFormValid","contactForms","form","submitButton","singleForm","sessionStorage","modalForm","contactFormRequiredElements","setItem","temporaryDisableButton","checkFormValidity","isRecaptchaEnabled","grecaptcha","execute","arrayOfRequiredElements","errorCounter","item","isValidItem","label","checkValidity","html","btoa","encodeURI","textArea","innerText","createTextNode","name","lastSeenProductWidget","lastSeenProductSlider","split","getItem","fetchLastSeenProductCall","updateProductItem","lastSeenProductsItemsArray","clone","cloneNode","asyncImg","asyncBg","container","jsLazyLoad","lazyImgs","lazyImagesBG","notLazyNodes","_toConsumableArray","some","node","active","lazyImage","top","bottom","resizeBg","filter","buttonsArray","dataContainersArray","dataContainer","clickedButton","HTMLAnchorElement","nextPageUrl","href","result","parsedHTML","DOMParser","parseFromString","cardsToAppendArray","loadMoreButtonId","updatedButton","card","hamburgerMenu","hamburgerCloseMenu","headerMenu","menuMobile","successModal","closeErrorModal","actualUrl","URL","modalResponseDownload","searchParams","get","modalResponseContact","modalResponseNewsletter","dataSessionStorage","closeSuccessModal","removeItem","widgetMainTextSectionProductListing","widgetProductListingMainSection","behaviourReadMoreAndLess","widget","readMore","readLess","descriptionContainer","idWidgetMainTextSectionProductListing","raise","errorConstructor","requestSubmit","submitter","TypeError","DOMException","click","HTMLFormElement","script","async","defer","head","recaptchaContainer","widgetId","render","sitekey","tabindex","submitAfterCaptcha","token","formToSubmit","arrayCarousel","carouselContainer","arraySliderItems","clientWidth","inputTextSearch","searchFilterButton","dataProductId","sessionStorageIdsArray","reverse","listsSidebarArray","sectionOnContainerBodyPageArray","institutionalPage","productPage","sidebarWidget","sectionOnContainerBodyPage","parentSection","sectionRectTop","listSidebar","linkSidebar","linksArray","sidenav","link","offsetPosition","mainSimpleHeadingCarouselArray","sliderApplicationProductCarousel","mainSimpleHeadingCarousel","sliderApplicationProductItems","itemToClone","arraySliderWidgetCarousel","sliderProductCarousel","sliderWidgetCarousel","arrayItemsSlidesCarousel","sliderItemsArray","sliderProductItems","sliderGalleryArray","sliderGallery","slideSliderGallery","linkSliderGallery"],"mappings":"stCAmBA,CAAA,SAAAA,EAAAC,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,gCAAA,CAAA,UAAA,SAAAE,GACA,OAAAH,EAAAD,EAAAI,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAAC,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,QAAA,CAAA,EAIAR,EAAAS,cAAAR,EACAD,EACAA,EAAAI,MAAA,CAIA,EAAAJ,OAAA,SAAAA,EAAAI,GAKA,IAAAM,EAAAC,MAAAC,UAAAC,MAIAC,EAAAd,EAAAc,QACAC,EAAA,KAAA,IAAAD,EAAA,aACA,SAAAE,GACAF,EAAAG,MAAAD,CAAA,CACA,EAIA,SAAAP,EAAAS,EAAAC,EAAAC,IACAA,EAAAA,GAAAhB,GAAAJ,EAAAI,UAMAe,EAAAP,UAAAS,SAEAF,EAAAP,UAAAS,OAAA,SAAAC,GAEAF,EAAAG,cAAAD,CAAA,IAGAE,KAAAC,QAAAL,EAAAM,OAAA,CAAA,EAAAF,KAAAC,QAAAH,CAAA,EACA,GAIAF,EAAAO,GAAAT,GAAA,SAAAU,GACA,IAYAC,EAAAC,EAAAC,EACAC,EACAC,EA0BAR,EAxCA,MAAA,UAAA,OAAAG,GAGAG,EAAArB,EAAAwB,KAAAC,UAAA,CAAA,EASAJ,EARAA,EAUAE,EAAA,OAAAf,EAAA,MAFAY,EARAF,GAUA,MAFAC,EARAL,MAYAY,KAAA,SAAAC,EAAAC,GAEA,IAcAC,EAdAC,EAAApB,EAAAqB,KAAAH,EAAApB,CAAA,EACAsB,GAMAE,EAAAF,EAAAV,KACA,KAAAA,EAAAa,OAAA,CAAA,GAMAJ,EAAAG,EAAAE,MAAAJ,EAAAT,CAAA,EAEAC,EAAAa,KAAAA,IAAAb,EAAAO,EAAAP,GAPAjB,EAAAkB,EAAA,wBAAA,EAPAlB,EAAAG,EAAA,+CACAe,CAAA,CAcA,CAAA,EAEAY,KAAAA,IAAAb,EAAAA,EAAAH,IAGAJ,EAjCAG,EAAAJ,KAkCAY,KAAA,SAAAC,EAAAC,GACA,IAAAE,EAAApB,EAAAqB,KAAAH,EAAApB,CAAA,EACAsB,GAEAA,EAAAnB,OAAAI,CAAA,EACAe,EAAAM,MAAA,IAGAN,EAAA,IAAArB,EAAAmB,EAAAb,CAAA,EACAL,EAAAqB,KAAAH,EAAApB,EAAAsB,CAAA,EAEA,CAAA,EA5CAhB,KACA,EA8CAuB,EAAA3B,CAAA,EAEA,CAKA,SAAA2B,EAAA3B,GACAA,GAAAA,CAAAA,EAAA4B,UAGA5B,EAAA4B,QAAAvC,EACA,CAMA,OAJAsC,EAAA3C,GAAAJ,EAAAI,MAAA,EAIAK,CAEA,CAAA,EAUA,SAAAwC,EAAAhD,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,wBAAAD,CAAA,EACA,WAAA,aAAA,OAAAI,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EAAA,EAGAgD,EAAAC,UAAAjD,EAAA,CAGA,EAAA,aAAA,OAAAD,OAAAA,OAAA,KAAA,EAAA,WAIA,SAAAkD,KAEA,IAAAC,EAAAD,EAAAtC,UAiFA,OA/EAuC,EAAAC,GAAA,SAAAC,EAAAC,GACA,IAMAC,EANA,GAAAF,GAAAC,EAYA,MAJA,CAAA,IAFAC,GAFAC,EAAAhC,KAAAiC,QAAAjC,KAAAiC,SAAA,IAEAJ,GAAAG,EAAAH,IAAA,IAEAK,QAAAJ,CAAA,GACAC,EAAAI,KAAAL,CAAA,EAGA9B,IACA,EAEA2B,EAAAS,KAAA,SAAAP,EAAAC,GACA,IAOAO,EAPA,GAAAR,GAAAC,EAaA,OATA9B,KAAA4B,GAAAC,EAAAC,CAAA,IAGAO,EAAArC,KAAAsC,YAAAtC,KAAAsC,aAAA,IAEAT,GAAAQ,EAAAR,IAAA,IAEAC,GAAA,CAAA,EAEA9B,IACA,EAEA2B,EAAAY,IAAA,SAAAV,EAAAC,GACAC,EAAA/B,KAAAiC,SAAAjC,KAAAiC,QAAAJ,GACA,GAAAE,GAAAA,EAAAS,OAQA,MAJA,CAAA,IADAC,EAAAV,EAAAG,QAAAJ,CAAA,IAEAC,EAAAW,OAAAD,EAAA,CAAA,EAGAzC,IACA,EAEA2B,EAAAgB,UAAA,SAAAd,EAAAtB,GACA,IAAAwB,EAAA/B,KAAAiC,SAAAjC,KAAAiC,QAAAJ,GACA,GAAAE,GAAAA,EAAAS,OAAA,CAIAT,EAAAA,EAAA1C,MAAA,CAAA,EACAkB,EAAAA,GAAA,GAIA,IAFA,IAAAqC,EAAA5C,KAAAsC,aAAAtC,KAAAsC,YAAAT,GAEAhB,EAAA,EAAAA,EAAAkB,EAAAS,OAAA3B,CAAA,GAAA,CACA,IAAAiB,EAAAC,EAAAlB,GACA+B,GAAAA,EAAAd,KAIA9B,KAAAuC,IAAAV,EAAAC,CAAA,EAEA,OAAAc,EAAAd,IAGAA,EAAAV,MAAApB,KAAAO,CAAA,CACA,CAEA,OAAAP,IArBA,CAsBA,EAEA2B,EAAAkB,OAAA,WACA,OAAA7C,KAAAiC,QACA,OAAAjC,KAAAsC,WACA,EAEAZ,CAEA,CAAA,EAWA,SAAAlD,EAAAC,GAEA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,oBAAAD,CAAA,EACA,WAAA,aAAA,OAAAI,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EAAA,EAGAD,EAAAsE,QAAArE,EAAA,CAGA,EAAAD,OAAA,WAMA,SAAAuE,EAAAhC,GACA,IAAAiC,EAAAC,WAAAlC,CAAA,EAGA,MADA,CAAA,GAAAA,EAAAmB,QAAA,GAAA,GAAA,CAAAgB,MAAAF,CAAA,GACAA,CACA,CAIA,IAAAzD,EAAA,aAAA,OAAAD,QAFA,aAGA,SAAAE,GACAF,QAAAG,MAAAD,CAAA,CACA,EAIA2D,EAAA,CACA,cACA,eACA,aACA,gBACA,aACA,cACA,YACA,eACA,kBACA,mBACA,iBACA,qBAGAC,EAAAD,EAAAX,OAwBA,SAAAa,EAAAvC,GACAwC,EAAAC,iBAAAzC,CAAA,EAMA,OALAwC,GACA/D,EAAA,kBAAA+D,EAEA,2FAAA,EAEAA,CACA,CAIA,IAEAE,EAFAC,EAAA,CAAA,EAyCA,SAAAX,EAAAhC,GASA,GAvCA2C,IAGAA,EAAA,CAAA,GAQAC,EAAAC,SAAAC,cAAA,KAAA,GACAN,MAAAO,MAAA,QACAH,EAAAJ,MAAAQ,QAAA,kBACAJ,EAAAJ,MAAAS,YAAA,QACAL,EAAAJ,MAAAU,YAAA,kBACAN,EAAAJ,MAAAW,UAAA,cAEAC,EAAAP,SAAAO,MAAAP,SAAAQ,iBACAC,YAAAV,CAAA,EACAJ,EAAAD,EAAAK,CAAA,EAEAF,EAAA,KAAAa,KAAAC,MAAAvB,EAAAO,EAAAO,KAAA,CAAA,EACAf,EAAAU,eAAAA,EAEAU,EAAAK,YAAAb,CAAA,IAUA5C,EADA,UAAA,OAAAA,EACA6C,SAAAa,cAAA1D,CAAA,EAIAA,IAAA,UAAAhC,QAAAgC,CAAA,GAAAA,EAAA2D,SAAA,CAIA,IAAAnB,EAAAD,EAAAvC,CAAA,EAGA,GAAA,QAAAwC,EAAAoB,QAAA,CAlFA,IARA,IAAAC,EAAA,CACAd,MAAA,EACAe,OAAA,EACAC,WAAA,EACAC,YAAA,EACAC,WAAA,EACAC,YAAA,CACA,EACAnE,EAAA,EAAAA,EAAAuC,EAAAvC,CAAA,GAEA8D,EADAxB,EAAAtC,IACA,EAEA,OAAA8D,CAgFA,CASA,IAPA,IAAAA,EAAA,GAIAM,GAHAN,EAAAd,MAAA/C,EAAAoE,YACAP,EAAAC,OAAA9D,EAAAqE,aAEAR,EAAAM,YAAA,cAAA3B,EAAAW,WAGApD,EAAA,EAAAA,EAAAuC,EAAAvC,CAAA,GAAA,CACA,IAAAuE,EAAAjC,EAAAtC,GACAE,EAAAuC,EAAA8B,GACApC,EAAAC,WAAAlC,CAAA,EAEA4D,EAAAS,GAAAlC,MAAAF,CAAA,EAAA,EAAAA,CACA,CAEA,IAAAqC,EAAAV,EAAAW,YAAAX,EAAAY,aACAC,EAAAb,EAAAc,WAAAd,EAAAe,cACAC,EAAAhB,EAAAiB,WAAAjB,EAAAkB,YACAC,EAAAnB,EAAAoB,UAAApB,EAAAqB,aACAhC,EAAAW,EAAAsB,gBAAAtB,EAAAuB,iBACAC,EAAAxB,EAAAyB,eAAAzB,EAAA0B,kBAEAC,EAAArB,GAAAzB,EAGA+C,EAAAxD,EAAAO,EAAAO,KAAA,EAOA2C,GANA,CAAA,IAAAD,IACA5B,EAAAd,MAAA0C,GAEAD,EAAA,EAAAjB,EAAArB,IAGAjB,EAAAO,EAAAsB,MAAA,GAaA,MAZA,CAAA,IAAA4B,IACA7B,EAAAC,OAAA4B,GAEAF,EAAA,EAAAd,EAAAW,IAGAxB,EAAAE,WAAAF,EAAAd,OAAAwB,EAAArB,GACAW,EAAAG,YAAAH,EAAAC,QAAAY,EAAAW,GAEAxB,EAAAI,WAAAJ,EAAAd,MAAA8B,EACAhB,EAAAK,YAAAL,EAAAC,OAAAkB,EAEAnB,CAtDA,CAuDA,CAEA,OAAA7B,CAEA,CAAA,EAUA,SAAAtE,EAAAC,GAIA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,6CAAAD,CAAA,EACA,WAAA,aAAA,OAAAI,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EAAA,EAGAD,EAAAiI,gBAAAhI,EAAA,CAGA,EAAAD,OAAA,WAGA,IAAAkI,EAAA,WACA,IAAAC,EAAAnI,OAAAoI,QAAAxH,UAEA,GAAAuH,EAAAE,QACA,MAAA,UAGA,GAAAF,EAAAF,gBACA,MAAA,kBAKA,IAFA,IAAAK,EAAA,CAAA,SAAA,MAAA,KAAA,KAEAjG,EAAA,EAAAA,EAAAiG,EAAAtE,OAAA3B,CAAA,GAAA,CACA,IACAK,EADA4F,EAAAjG,GACA,kBACA,GAAA8F,EAAAzF,GACA,OAAAA,CAEA,CACA,EAAA,EAEA,OAAA,SAAAJ,EAAAiG,GACA,OAAAjG,EAAA4F,GAAAK,CAAA,CACA,CAEA,CAAA,EASA,SAAAvI,EAAAC,GAIA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,uBAAA,CACA,8CACA,SAAA+H,GACA,OAAAhI,EAAAD,EAAAiI,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAA5H,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,2BAAA,CAAA,EAIAR,EAAAwI,aAAAvI,EACAD,EACAA,EAAAiI,eAAA,CAIA,EAAAjI,OAAA,SAAAA,EAAAiI,GAIA,IAAAQ,EAAA,CAKAA,OAAA,SAAAC,EAAAC,GACA,IAAA,IAAAC,KAAAD,EACAD,EAAAE,GAAAD,EAAAC,GAEA,OAAAF,CACA,EAIAD,OAAA,SAAAjE,EAAAU,GACA,OAAAV,EAAAU,EAAAA,GAAAA,CACA,CAhBA,EAoBAxE,EAAAC,MAAAC,UAAAC,MA0IAC,GAvIA2H,EAAAI,UAAA,SAAAC,GACA,OAAAnI,MAAAoI,QAAAD,CAAA,EAEAA,EAGAA,MAAAA,EACA,GAGA,UAAAxI,QAAAwI,CAAA,GAAA,UAAA,OAAAA,EAAA9E,OAGAtD,EAAAwB,KAAA4G,CAAA,EAIA,CAAAA,EACA,EAIAL,EAAAO,WAAA,SAAAC,EAAAH,GACA7E,EAAAgF,EAAAvF,QAAAoF,CAAA,EACA,CAAA,GAAA7E,GACAgF,EAAA/E,OAAAD,EAAA,CAAA,CAEA,EAIAwE,EAAAS,UAAA,SAAA5G,EAAAiG,GACA,KAAAjG,EAAA6G,YAAA7G,GAAA6C,SAAAO,MAEA,GADApD,EAAAA,EAAA6G,WACAlB,EAAA3F,EAAAiG,CAAA,EACA,OAAAjG,CAGA,EAKAmG,EAAAW,gBAAA,SAAA9G,GACA,MAAA,UAAA,OAAAA,EACA6C,SAAAa,cAAA1D,CAAA,EAEAA,CACA,EAKAmG,EAAAY,YAAA,SAAAC,GACA,IAAA5G,EAAA,KAAA4G,EAAAC,KACA/H,KAAAkB,IACAlB,KAAAkB,GAAA4G,CAAA,CAEA,EAIAb,EAAAe,mBAAA,SAAAC,EAAAlB,GAEAkB,EAAAhB,EAAAI,UAAAY,CAAA,EACA,IAAAC,EAAA,GAyBA,OAvBAD,EAAAE,QAAA,SAAArH,GAEA,GAAAA,aAAAsH,YAIA,GAAArB,EAAA,CAMAN,EAAA3F,EAAAiG,CAAA,GACAmB,EAAA/F,KAAArB,CAAA,EAKA,IAFA,IAAAuH,EAAAvH,EAAAwH,iBAAAvB,CAAA,EAEAlG,EAAA,EAAAA,EAAAwH,EAAA7F,OAAA3B,CAAA,GACAqH,EAAA/F,KAAAkG,EAAAxH,EAAA,CAVA,MAFAqH,EAAA/F,KAAArB,CAAA,CAcA,CAAA,EAEAoH,CACA,EAIAjB,EAAAsB,eAAA,SAAAC,EAAAlI,EAAAmI,GACAA,EAAAA,GAAA,IAEA,IAAAvH,EAAAsH,EAAApJ,UAAAkB,GACAoI,EAAApI,EAAA,UAEAkI,EAAApJ,UAAAkB,GAAA,WACA,IAAAqI,EAAA3I,KAAA0I,GAGAnI,GAFAqI,aAAAD,CAAA,EAEAhI,WACAkI,EAAA7I,KACAA,KAAA0I,GAAAI,WAAA,WACA5H,EAAAE,MAAAyH,EAAAtI,CAAA,EACA,OAAAsI,EAAAH,EACA,EAAAD,CAAA,CACA,CACA,EAIAxB,EAAA8B,SAAA,SAAAC,GACA,IAAAC,EAAAtF,SAAAsF,WACA,YAAAA,GAAA,eAAAA,EAEAH,WAAAE,CAAA,EAEArF,SAAAuF,iBAAA,mBAAAF,CAAA,CAEA,EAKA/B,EAAAkC,SAAA,SAAAC,GACA,OAAAA,EAAAC,QAAA,cAAA,SAAAC,EAAAC,EAAAC,GACA,OAAAD,EAAA,IAAAC,CACA,CAAA,EAAAC,YAAA,CACA,EAEAjL,EAAAc,SA4CA,OAtCA2H,EAAAyC,SAAA,SAAAC,EAAAjK,GACAuH,EAAA8B,SAAA,WACA,IAAAa,EAAA3C,EAAAkC,SAAAzJ,CAAA,EACAmK,EAAA,QAAAD,EACAE,EAAAnG,SAAA2E,iBAAA,IAAAuB,EAAA,GAAA,EACAE,EAAApG,SAAA2E,iBAAA,OAAAsB,CAAA,EACA3B,EAAAhB,EAAAI,UAAAyC,CAAA,EACAE,OAAA/C,EAAAI,UAAA0C,CAAA,CAAA,EACAE,EAAAJ,EAAA,WACAjL,EAAAJ,EAAAI,OAEAqJ,EAAAE,QAAA,SAAArH,GACA,IAEAb,EAFAiK,EAAApJ,EAAAqJ,aAAAN,CAAA,GACA/I,EAAAqJ,aAAAF,CAAA,EAEA,IACAhK,EAAAiK,GAAAE,KAAAC,MAAAH,CAAA,CAQA,CAPA,MAAAzK,GAMA,OAJA,KAAAH,GACAA,EAAAG,MAAA,iBAAAoK,EAAA,OAAA/I,EAAAwJ,UACA,KAAA7K,CAAA,EAGA,CAEAuB,EAAA,IAAA2I,EAAA7I,EAAAb,CAAA,EAEArB,GACAA,EAAAqC,KAAAH,EAAApB,EAAAsB,CAAA,CAEA,CAAA,CAEA,CAAA,CACA,EAIAiG,CAEA,CAAA,EAGA,SAAAzI,EAAAC,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,mBAAA,CACA,qBACA,SAAAoE,GACA,OAAArE,EAAAD,EAAAsE,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAAjE,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,UAAA,CAAA,GAIAR,EAAA+L,SAAA/L,EAAA+L,UAAA,GACA/L,EAAA+L,SAAAC,KAAA/L,EACAD,EACAA,EAAAsE,OAAA,EAIA,EAAAtE,OAAA,SAAAA,EAAAsE,GAIA,SAAA0H,EAAA1J,EAAA2J,GACAzK,KAAA0K,QAAA5J,EACAd,KAAAyK,OAAAA,EAEAzK,KAAA2K,OAAA,CACA,CAEA,IAAAhJ,EAAA6I,EAAApL,UA8DA,OA5DAuC,EAAAgJ,OAAA,WACA3K,KAAA0K,QAAApH,MAAAsH,SAAA,WACA5K,KAAA0K,QAAAG,aAAA,cAAA,MAAA,EACA7K,KAAA8K,EAAA,EACA9K,KAAA+K,MAAA,CACA,EAEApJ,EAAAqJ,QAAA,WAEAhL,KAAAiL,SAAA,EACAjL,KAAA0K,QAAApH,MAAAsH,SAAA,GACA,IAAAM,EAAAlL,KAAAyK,OAAAU,WACAnL,KAAA0K,QAAApH,MAAA4H,GAAA,EACA,EAEAvJ,EAAAmB,QAAA,WACA9C,KAAA2E,KAAA7B,EAAA9C,KAAA0K,OAAA,CACA,EAEA/I,EAAAyJ,YAAA,SAAAN,GACA9K,KAAA8K,EAAAA,EACA9K,KAAAqL,aAAA,EACArL,KAAAsL,eAAAR,CAAA,CACA,EAGAnJ,EAAA0J,aAAA1J,EAAA4J,iBAAA,WACA,IAAAC,EAAA,QAAAxL,KAAAyK,OAAAU,WAAA,aAAA,cACAnL,KAAAyL,OAAAzL,KAAA8K,EAAA9K,KAAA2E,KAAA6G,GACAxL,KAAA2E,KAAAd,MAAA7D,KAAAyK,OAAAiB,SACA,EAEA/J,EAAA2J,eAAA,SAAAR,GAEA,IAAAI,EAAAlL,KAAAyK,OAAAU,WACAnL,KAAA0K,QAAApH,MAAA4H,GAAAlL,KAAAyK,OAAAkB,iBAAAb,CAAA,CACA,EAEAnJ,EAAAiK,OAAA,WACA5L,KAAA0K,QAAAmB,UAAAC,IAAA,aAAA,EACA9L,KAAA0K,QAAAqB,gBAAA,aAAA,CACA,EAEApK,EAAAsJ,SAAA,WACAjL,KAAA0K,QAAAmB,UAAAG,OAAA,aAAA,EACAhM,KAAA0K,QAAAG,aAAA,cAAA,MAAA,CACA,EAKAlJ,EAAAsK,UAAA,SAAAlB,GACA/K,KAAA+K,MAAAA,EACA/K,KAAAsL,eAAAtL,KAAA8K,EAAA9K,KAAAyK,OAAAyB,eAAAnB,CAAA,CACA,EAEApJ,EAAAqK,OAAA,WACAhM,KAAA0K,QAAA/C,WAAApD,YAAAvE,KAAA0K,OAAA,CACA,EAEAF,CAEA,CAAA,EAGA,SAAAhM,EAAAC,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,oBAAAD,CAAA,EACA,WAAA,aAAA,OAAAI,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EAAA,GAGAD,EAAA+L,SAAA/L,EAAA+L,UAAA,GACA/L,EAAA+L,SAAA4B,MAAA1N,EAAA,EAGA,EAAAD,OAAA,WAGA,SAAA2N,EAAA1B,GACAzK,KAAAyK,OAAAA,EACAzK,KAAAoM,aAAA,QAAA3B,EAAAU,WACAnL,KAAAqM,MAAA,GACArM,KAAA+E,WAAA,EACA/E,KAAA4E,OAAA,CACA,CAEA,IAAAjD,EAAAwK,EAAA/M,UA4CA,OA1CAuC,EAAA2K,QAAA,SAAAC,GAKA,IAEAC,EANAxM,KAAAqM,MAAAlK,KAAAoK,CAAA,EACAvM,KAAA+E,YAAAwH,EAAA5H,KAAAI,WACA/E,KAAA4E,OAAAP,KAAAoI,IAAAF,EAAA5H,KAAAK,YAAAhF,KAAA4E,MAAA,EAEA,GAAA5E,KAAAqM,MAAA7J,SACAxC,KAAA8K,EAAAyB,EAAAzB,EACA0B,EAAAxM,KAAAoM,aAAA,aAAA,cACApM,KAAA0M,YAAAH,EAAA5H,KAAA6H,GAEA,EAEA7K,EAAA0J,aAAA,WACA,IAAAsB,EAAA3M,KAAAoM,aAAA,cAAA,aACAQ,EAAA5M,KAAA6M,YAAA,EACAC,EAAAF,EAAAA,EAAAjI,KAAAgI,GAAA,EACAI,EAAA/M,KAAA+E,YAAA/E,KAAA0M,YAAAI,GACA9M,KAAAyL,OAAAzL,KAAA8K,EAAA9K,KAAA0M,YAAAK,EAAA/M,KAAAyK,OAAAiB,SACA,EAEA/J,EAAAkL,YAAA,WACA,OAAA7M,KAAAqM,MAAArM,KAAAqM,MAAA7J,OAAA,EACA,EAEAb,EAAAiK,OAAA,WACA5L,KAAAqM,MAAAlE,QAAA,SAAAoE,GACAA,EAAAX,OAAA,CACA,CAAA,CACA,EAEAjK,EAAAsJ,SAAA,WACAjL,KAAAqM,MAAAlE,QAAA,SAAAoE,GACAA,EAAAtB,SAAA,CACA,CAAA,CACA,EAEAtJ,EAAAqL,gBAAA,WACA,OAAAhN,KAAAqM,MAAAY,IAAA,SAAAV,GACA,OAAAA,EAAA7B,OACA,CAAA,CACA,EAEAyB,CAEA,CAAA,EAGA,SAAA3N,EAAAC,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,sBAAA,CACA,wBACA,SAAAuI,GACA,OAAAxI,EAAAD,EAAAyI,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAApI,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,gBAAA,CAAA,GAIAR,EAAA+L,SAAA/L,EAAA+L,UAAA,GACA/L,EAAA+L,SAAA2C,iBAAAzO,EACAD,EACAA,EAAAwI,YAAA,EAIA,EAAAxI,OAAA,SAAAA,EAAAyI,GAMA,IAAAtF,EAAA,CAEAA,eAAA,WACA3B,KAAAmN,cAIAnN,KAAAmN,YAAA,CAAA,EACAnN,KAAAoN,cAAA,EACApN,KAAAqN,QAAA,EACA,EAEA1L,QAAA,WACA3B,KAAAsN,eAAA,EACAtN,KAAAuN,wBAAA,EAEA,IAOA1E,EAPA2E,EAAAxN,KAAA8K,EAEA9K,KAAAyN,iBAAA,EACAzN,KAAA0N,eAAA,EACA1N,KAAA2N,OAAAH,CAAA,EAEAxN,KAAAmN,cACAtE,EAAA7I,KACA4N,sBAAA,WACA/E,EAAAwE,QAAA,CACA,CAAA,EAEA,EAEA1L,eAAA,WACA,IAAAmJ,EAAA9K,KAAA8K,EAEA9K,KAAAC,QAAA4N,YAAA,EAAA7N,KAAAqM,MAAA7J,SACAsI,EAAA7D,EAAA6G,OAAAhD,EAAA9K,KAAAkM,cAAA,EACApB,GAAA9K,KAAAkM,eACAlM,KAAA+N,eAAAjD,CAAA,GAGA9K,KAAAgO,cAAAlD,EAAA9K,KAAAmN,WAAA,EACAnN,KAAAiO,oBAAA,CACA,EAEAtM,cAAA,SAAAmJ,EAAAoD,GACApD,GAAA9K,KAAAmO,eAEArD,EAAA9K,KAAAC,QAAAmO,YAAA,CAAAtD,EAAAA,EACAuD,EAAArO,KAAA2L,iBAAAb,CAAA,EAGA9K,KAAAsO,OAAAhL,MAAAiL,UAAAL,EACA,eAAAG,EAAA,QAAA,cAAAA,EAAA,GACA,EAEA1M,oBAAA,WACA,IAKA6M,EALAC,EAAAzO,KAAA0O,OAAA,GACAD,IAIAD,GADAG,EAAA,CAAA3O,KAAA8K,EAAA2D,EAAAhD,QACAzL,KAAA4O,YACA5O,KAAA6O,cAAA,SAAA,KAAA,CAAAL,EAAAG,EAAA,EACA,EAEAhN,yBAAA,WACA3B,KAAAqM,MAAA7J,SAGAxC,KAAA8K,EAAA,CAAA9K,KAAA8O,cAAArD,OACAzL,KAAA+O,SAAA,EACA/O,KAAA0N,eAAA,EACA,EAEA/L,iBAAA,SAAAiJ,GACA,OAAA5K,KAAAC,QAAA+O,gBAEA,IAAA3K,KAAAC,MAAAsG,EAAA5K,KAAA2E,KAAAE,WAAA,GAAA,EAAA,IAGAR,KAAAC,MAAAsG,CAAA,EAAA,IAEA,EAEAjJ,OAAA,SAAA6L,GAEAxN,KAAAiP,eAAA5K,KAAAC,MAAA,IAAAtE,KAAA8K,CAAA,GAAAzG,KAAAC,MAAA,IAAAkJ,CAAA,GACAxN,KAAAoN,aAAA,GAGA,EAAApN,KAAAoN,gBACApN,KAAAmN,YAAA,CAAA,EACA,OAAAnN,KAAAkP,gBAEAlP,KAAA0N,eAAA,EACA1N,KAAA6O,cAAA,SAAA,KAAA,CAAA7O,KAAAmP,cAAA,EAEA,EAEAxN,eAAA,SAAAmJ,GAEA,IAAAsE,EAAApP,KAAAmO,eAAArD,EAGAuE,GAFArP,KAAAsP,YAAAtP,KAAAuP,iBAAAH,EAAA,CAAA,CAAA,EAEApP,KAAA2E,KAAAE,YAAAiG,EAAA9K,KAAAkM,eAAAlM,KAAAmO,iBACAnO,KAAAsP,YAAAtP,KAAAwP,gBAAAH,EAAA,CAAA,CACA,EAEA1N,YAAA,SAAA0K,EAAAoD,EAAA1E,GACA,IAAA,IAAAlK,EAAA,EAAAA,EAAAwL,EAAA7J,OAAA3B,CAAA,GAAA,CACA,IAAA0L,EAAAF,EAAAxL,GAEA0L,EAAAN,UADA,EAAAwD,EAAA1E,EAAA,CACA,EACA0E,GAAAlD,EAAA5H,KAAAI,UACA,CACA,EAEApD,cAAA,SAAA0K,GACA,GAAAA,GAAAA,EAAA7J,OAGA,IAAA,IAAA3B,EAAA,EAAAA,EAAAwL,EAAA7J,OAAA3B,CAAA,GACAwL,EAAAxL,GAAAoL,UAAA,CAAA,CAEA,EAIAtK,iBAAA,WACA3B,KAAA8K,GAAA9K,KAAA+O,SACA/O,KAAA+O,UAAA/O,KAAA0P,kBAAA,CACA,EAEA/N,WAAA,SAAAgO,GACA3P,KAAA+O,UAAAY,CACA,EAEAhO,kBAAA,WACA,OAAA,EAAA3B,KAAAC,QAAAD,KAAAkP,gBAAA,qBAAA,WACA,EAEAvN,mBAAA,WAEA,OAAA3B,KAAA8K,EAAA9K,KAAA+O,UAAA,EAAA/O,KAAA0P,kBAAA,EACA,EAEA/N,eAAA,WACA,IAKAiO,EALA5P,KAAA6P,aAAA7P,KAAAiP,gBAKAW,EADA5P,KAAA8P,MAAA9P,KAAA8K,EACA9K,KAAA+O,SACA/O,KAAA+P,WAAAH,CAAA,EACA,EAEAjO,wBAAA,WAEA,IAKAgO,EALA3P,KAAA6P,aAAA7P,KAAAiP,eACAjP,KAAAkP,iBAAA,CAAAlP,KAAA0O,OAAAlM,SAIAmN,GADA,CAAA,EAAA3P,KAAA8O,cAAArD,OAAAzL,KAAA8K,GACA9K,KAAAC,QAAA+P,mBACAhQ,KAAA+P,WAAAJ,CAAA,EACA,CApKA,EAsKA,OAAAhO,CAEA,CAAA,EAGA,SAAAnD,EAAAC,GAGA,IAyBAwR,EAzBA,YAAA,OAAAvR,QAAAA,OAAAC,IAEAD,OAAA,uBAAA,CACA,wBACA,oBACA,uBACA,SACA,UACA,aACA,SAAAgD,EAAAoB,EAAAmE,EAAAuD,EAAA2B,EAAAe,GACA,OAAAzO,EAAAD,EAAAkD,EAAAoB,EAAAmE,EAAAuD,EAAA2B,EAAAe,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAArO,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,YAAA,EACAA,QAAA,UAAA,EACAA,QAAA,gBAAA,EACAA,QAAA,QAAA,EACAA,QAAA,SAAA,EACAA,QAAA,WAAA,CAAA,GAIAiR,EAAAzR,EAAA+L,SAEA/L,EAAA+L,SAAA9L,EACAD,EACAA,EAAAkD,UACAlD,EAAAsE,QACAtE,EAAAwI,aACAiJ,EAAAzF,KACAyF,EAAA9D,MACA8D,EAAA/C,gBAAA,EAIA,EAAA1O,OAAA,SAAAA,EAAAkD,EAAAoB,EACAmE,EAAAuD,EAAA2B,EAAAe,GAKA,IAAAtO,EAAAJ,EAAAI,OACA2E,EAAA/E,EAAA+E,iBACAjE,EAAAd,EAAAc,QAEA,SAAA4Q,EAAAjI,EAAAkI,GAEA,IADAlI,EAAAhB,EAAAI,UAAAY,CAAA,EACAA,EAAAzF,QACA2N,EAAA/L,YAAA6D,EAAA8C,MAAA,CAAA,CAEA,CAKA,IAAAqF,EAAA,EAEAC,EAAA,GAEA,SAAA9F,EAAAG,EAAAzK,GACA,IAUAe,EAVAsP,EAAArJ,EAAAW,gBAAA8C,CAAA,EACA,GAAA4F,EAAA,CAQA,GAFAtQ,KAAA0K,QAAA4F,EAEAtQ,KAAA0K,QAAA6F,aAGA,OAFAvP,EAAAqP,EAAArQ,KAAA0K,QAAA6F,eACA1Q,OAAAI,CAAA,EACAe,EAIApC,IACAoB,KAAAwQ,SAAA5R,EAAAoB,KAAA0K,OAAA,GAGA1K,KAAAC,QAAAgH,EAAA/G,OAAA,GAAAF,KAAAyQ,YAAAC,QAAA,EACA1Q,KAAAH,OAAAI,CAAA,EAGAD,KAAA2Q,QAAA,CAlBA,MAJArR,GACAA,EAAAG,MAAA,8BAAA6Q,GAAA5F,EAAA,CAsBA,CAEAH,EAAAmG,SAAA,CACAE,cAAA,CAAA,EAEAlF,UAAA,SAGAmF,mBAAA,KACAC,SAAA,IACAC,sBAAA,CAAA,EAEA/B,gBAAA,CAAA,EACAgC,OAAA,CAAA,EACAhB,mBAAA,KACAiB,eAAA,CAAA,CAGA,EAGA1G,EAAA2G,cAAA,GAEA,IAAAvP,EAAA4I,EAAAnL,UAoQA+R,GAlQAlK,EAAA/G,OAAAyB,EAAAD,EAAAtC,SAAA,EAEAuC,EAAAgP,QAAA,WAEA,IAqBA9O,EArBAuP,EAAApR,KAAAqR,KAAA,EAAAjB,EAqBA,IAAAvO,KApBA7B,KAAA0K,QAAA6F,aAAAa,GACAf,EAAAe,GAAApR,MAEAmP,cAAA,EAEAnP,KAAAoN,cAAA,EAEApN,KAAA8K,EAAA,EACA9K,KAAA+O,SAAA,EACA/O,KAAAmL,WAAAnL,KAAAC,QAAAmO,YAAA,QAAA,OAEApO,KAAAsR,SAAA3N,SAAAC,cAAA,KAAA,EACA5D,KAAAsR,SAAAhH,UAAA,oBACAtK,KAAAuR,cAAA,GAEAvR,KAAAC,QAAA+Q,QAAAhR,KAAAC,QAAAuR,WACAhT,EAAA0K,iBAAA,SAAAlJ,IAAA,EAIAA,KAAAC,QAAA2B,GAAA,CACA,IAAAE,EAAA9B,KAAAC,QAAA2B,GAAAC,GACA7B,KAAA4B,GAAAC,EAAAC,CAAA,CACA,CAEAyI,EAAA2G,cAAA/I,QAAA,SAAAjH,GACAlB,KAAAkB,GAAA,CACA,EAAAlB,IAAA,EAEAA,KAAAC,QAAAuR,SACAxR,KAAAwR,SAAA,EAEAxR,KAAAyR,SAAA,CAGA,EAMA9P,EAAA9B,OAAA,SAAAC,GACAmH,EAAA/G,OAAAF,KAAAC,QAAAH,CAAA,CACA,EAEA6B,EAAA8P,SAAA,WACAzR,KAAA0R,WAGA1R,KAAA0R,SAAA,CAAA,EACA1R,KAAA0K,QAAAmB,UAAAC,IAAA,kBAAA,EACA9L,KAAAC,QAAAmO,aACApO,KAAA0K,QAAAmB,UAAAC,IAAA,cAAA,EAGA9L,KAAA8C,QAAA,EAGAoN,EADAlQ,KAAA2R,wBAAA3R,KAAA0K,QAAAkH,QAAA,EACA5R,KAAAsO,MAAA,EACAtO,KAAAsR,SAAAlN,YAAApE,KAAAsO,MAAA,EACAtO,KAAA0K,QAAAtG,YAAApE,KAAAsR,QAAA,EAEAtR,KAAA6R,YAAA,EAEA7R,KAAAC,QAAA2Q,gBAEA5Q,KAAA0K,QAAAoH,SAAA,EAEA9R,KAAA0K,QAAAxB,iBAAA,UAAAlJ,IAAA,GAGAA,KAAA2C,UAAA,UAAA,EACA3C,KAAA+R,mBAAA,EAEA/R,KAAAgS,gBAAA,CAAA,EAEAhS,KAAA6O,cAAA,OAAA,EACA,EAGAlN,EAAA4P,cAAA,WAEA,IAAAjD,EAAA3K,SAAAC,cAAA,KAAA,EACA0K,EAAAhE,UAAA,kBACAgE,EAAAhL,MAAAtD,KAAAmL,YAAA,EACAnL,KAAAsO,OAAAA,CACA,EAEA3M,EAAAgQ,wBAAA,SAAA1J,GACA,OAAAhB,EAAAe,mBAAAC,EAAAjI,KAAAC,QAAAgS,YAAA,CACA,EAGAtQ,EAAAkQ,YAAA,WAEA7R,KAAAqM,MAAArM,KAAAkS,WAAAlS,KAAAsO,OAAAsD,QAAA,EACA5R,KAAAmS,cAAA,EACAnS,KAAAoS,mBAAA,EACApS,KAAAiR,eAAA,CACA,EAOAtP,EAAAuQ,WAAA,SAAAjK,GAQA,OAPAjI,KAAA2R,wBAAA1J,CAAA,EAGAgF,IAAA,SAAAoF,GACA,OAAA,IAAA7H,EAAA6H,EAAArS,IAAA,CACA,EAAAA,IAAA,CAGA,EAEA2B,EAAAkL,YAAA,WACA,OAAA7M,KAAAqM,MAAArM,KAAAqM,MAAA7J,OAAA,EACA,EAEAb,EAAA2Q,aAAA,WACA,OAAAtS,KAAA0O,OAAA1O,KAAA0O,OAAAlM,OAAA,EACA,EAGAb,EAAAwQ,cAAA,WAEAnS,KAAAuS,WAAAvS,KAAAqM,KAAA,EAEArM,KAAAwS,eAAA,CAAA,CACA,EAMA7Q,EAAA6Q,eAAA,SAAA/P,GAIAzC,KAAAyS,eAHAhQ,EAAAA,GAAA,IAGAzC,KAAAyS,eAAA,EAQA,IAPA,IAGAC,EAHAC,EAAA,EAMAC,GAJA,EAAAnQ,IAEAkQ,GADAD,EAAA1S,KAAAqM,MAAA5J,EAAA,IACAqI,EAAA4H,EAAA/N,KAAAI,YAEA/E,KAAAqM,MAAA7J,QACA3B,EAAA4B,EAAA5B,EAAA+R,EAAA/R,CAAA,GAAA,CACA,IAAA0L,EAAAvM,KAAAqM,MAAAxL,GACA0L,EAAAnB,YAAAuH,CAAA,EACAA,GAAApG,EAAA5H,KAAAI,WACA/E,KAAAyS,cAAApO,KAAAoI,IAAAF,EAAA5H,KAAAK,YAAAhF,KAAAyS,aAAA,CACA,CAEAzS,KAAAkM,eAAAyG,EAEA3S,KAAA6S,aAAA,EAEA7S,KAAA8S,eAAA,EAEA9S,KAAA4O,YAAAgE,EAAA5S,KAAAsS,aAAA,EAAA7G,OAAAzL,KAAA0O,OAAA,GAAAjD,OAAA,CACA,EAMA9J,EAAA4Q,WAAA,SAAAlG,GACAA,EAAAlE,QAAA,SAAAoE,GACAA,EAAAzJ,QAAA,CACA,CAAA,CACA,EAIAnB,EAAAkR,aAAA,WAEA,IAIAE,EAGAC,EAEAC,EAVAjT,KAAA0O,OAAA,GACA1O,KAAAqM,MAAA7J,SAIAuQ,EAAA,IAAA5G,EAAAnM,IAAA,EACAA,KAAA0O,OAAAvM,KAAA4Q,CAAA,EAEAC,EADA,QAAAhT,KAAAmL,WACA,cAAA,aAEA8H,EAAAjT,KAAAkT,eAAA,EAEAlT,KAAAqM,MAAAlE,QAAA,SAAAoE,EAAA1L,GAEA,IAKAkM,EALAgG,EAAA1G,MAAA7J,SAKAuK,EAAAgG,EAAAhO,WAAAgO,EAAArG,aACAH,EAAA5H,KAAAI,WAAAwH,EAAA5H,KAAAqO,IAEAC,EAAAvS,KAAAV,KAAAa,EAAAkM,CAAA,IAIAgG,EAAA1H,aAAA,EAEA0H,EAAA,IAAA5G,EAAAnM,IAAA,EACAA,KAAA0O,OAAAvM,KAAA4Q,CAAA,IAdAA,EAAAzG,QAAAC,CAAA,CAiBA,EAAAvM,IAAA,EAEA+S,EAAA1H,aAAA,EAEArL,KAAAmT,oBAAA,EACA,EAEAxR,EAAAuR,eAAA,WACA,IAOAE,EASAC,EAhBAC,EAAAtT,KAAAC,QAAAqT,WACA,OAAAA,EAIA,UAAA,OAAAA,GAEAF,EAAAG,SAAAD,EAAA,EAAA,EACA,SAAAzS,GACA,OAAAA,EAAAuS,GAAA,CACA,IAIAI,EAAA,UAAA,OAAAF,GACAA,EAAAhK,MAAA,UAAA,EACA+J,EAAAG,EAAAD,SAAAC,EAAA,GAAA,EAAA,EAAA,IAAA,EACA,SAAA3S,EAAAkM,GACA,OAAAA,IAAA/M,KAAA2E,KAAAE,WAAA,GAAAwO,CACA,GAjBA,WACA,MAAA,CAAA,CACA,CAgBA,EAGA1R,EAAAL,MACAK,EAAA8R,WAAA,WACAzT,KAAAmS,cAAA,EACAnS,KAAA0T,yBAAA,CACA,EAEA/R,EAAAmB,QAAA,WACA9C,KAAA2E,KAAA7B,EAAA9C,KAAA0K,OAAA,EACA1K,KAAA2T,aAAA,EACA3T,KAAAmO,eAAAnO,KAAA2E,KAAAE,WAAA7E,KAAA0L,SACA,EAEA,CAEAkI,OAAA,CACAC,KAAA,GACAC,MAAA,EACA,EACAD,KAAA,CACAA,KAAA,EACAC,MAAA,CACA,EACAA,MAAA,CACAA,MAAA,EACAD,KAAA,CACA,CACA,GAyhBA,OAvhBAlS,EAAAgS,aAAA,WACA,IAAAI,EAAA5C,EAAAnR,KAAAC,QAAAyL,WACA1L,KAAA0L,UAAAqI,EAAAA,EAAA/T,KAAAmL,YAAAnL,KAAAC,QAAAyL,SACA,EAEA/J,EAAAsP,eAAA,WACA,IACArM,EADA5E,KAAAC,QAAAgR,iBACArM,EAAA5E,KAAAC,QAAA+T,gBAAAhU,KAAA8O,cACA9O,KAAA8O,cAAAlK,OAAA5E,KAAAyS,cACAzS,KAAAsR,SAAAhO,MAAAsB,OAAAA,EAAA,KAEA,EAEAjD,EAAAyQ,mBAAA,WAEA,IAQA6B,EACAC,EATAlU,KAAAC,QAAA4N,aAIA7N,KAAAmU,cAAAnU,KAAAuP,gBAAA,EACAvP,KAAAmU,cAAAnU,KAAAwP,eAAA,EAGAyE,EAAAjU,KAAAmO,eACA+F,EAAAlU,KAAAqM,MAAA7J,OAAA,EACAxC,KAAAuP,iBAAAvP,KAAAoU,aAAAH,EAAAC,EAAA,CAAA,CAAA,EAGAD,EAAAjU,KAAA2E,KAAAE,WAAA7E,KAAAmO,eAEAnO,KAAAwP,gBAAAxP,KAAAoU,aAAAH,EAAA,EAAA,CAAA,EACA,EAEAtS,EAAAyS,aAAA,SAAAH,EAAAC,EAAAG,GAGA,IADA,IAAAhI,EAAA,GACA,EAAA4H,GAAA,CACA,IAAA1H,EAAAvM,KAAAqM,MAAA6H,GACA,GAAA,CAAA3H,EACA,MAEAF,EAAAlK,KAAAoK,CAAA,EACA2H,GAAAG,EACAJ,GAAA1H,EAAA5H,KAAAI,UACA,CACA,OAAAsH,CACA,EAKA1K,EAAAmR,eAAA,WACA,IAIAtG,EACAG,EACA2H,EAEAC,EAEAC,EACAC,EAXAzU,KAAAC,QAAAyU,SAAA1U,CAAAA,KAAAC,QAAA4N,YAAA7N,KAAAqM,MAAA7J,SAIAgK,GADAmI,EAAA3U,KAAAC,QAAAmO,aACA,cAAA,aACAzB,EAAAgI,EAAA,aAAA,cACAL,EAAAtU,KAAAkM,eAAAlM,KAAA6M,YAAA,EAAAlI,KAAAgI,GAEA4H,EAAAD,EAAAtU,KAAA2E,KAAAE,WAEA2P,EAAAxU,KAAAmO,eAAAnO,KAAAqM,MAAA,GAAA1H,KAAA6H,GACAiI,EAAAH,EAAAtU,KAAA2E,KAAAE,YAAA,EAAA7E,KAAA0L,WAEA1L,KAAA0O,OAAAvG,QAAA,SAAA4K,GACAwB,EAEAxB,EAAAtH,OAAA6I,EAAAtU,KAAA0L,WAGAqH,EAAAtH,OAAApH,KAAAoI,IAAAsG,EAAAtH,OAAA+I,CAAA,EACAzB,EAAAtH,OAAApH,KAAAuQ,IAAA7B,EAAAtH,OAAAgJ,CAAA,EAEA,EAAAzU,IAAA,EACA,EAUA2B,EAAAkN,cAAA,SAAA9G,EAAAD,EAAAvH,GACA,IAAAsU,EAAA/M,EAAA,CAAAA,GAAAkC,OAAAzJ,CAAA,EAAAA,EACAP,KAAA2C,UAAAoF,EAAA8M,CAAA,EAEAjW,GAAAoB,KAAAwQ,WAGAsE,EADA/M,GAAA/H,KAAAC,QAAA8Q,sBAAA,YAAA,GAEAjJ,KAEAiN,EAAAnW,EAAAoW,MAAAlN,CAAA,GACAC,KAAAA,EACA+M,EAAAC,GAEA/U,KAAAwQ,SAAAyE,QAAAH,EAAAvU,CAAA,EAEA,EASAoB,EAAAiK,OAAA,SAAAnJ,EAAAyS,EAAAC,GACAnV,KAAA0R,WAGAjP,EAAA8Q,SAAA9Q,EAAA,EAAA,EACAzC,KAAAoV,YAAA3S,CAAA,GAEAzC,KAAAC,QAAA4N,YAAAqH,KACAzS,EAAAwE,EAAA6G,OAAArL,EAAAzC,KAAA0O,OAAAlM,MAAA,GAGAxC,KAAA0O,OAAAjM,MAGA4S,EAAArV,KAAAmP,cACAnP,KAAAmP,cAAA1M,EACAzC,KAAAmT,oBAAA,EACAgC,EACAnV,KAAA0T,yBAAA,EAEA1T,KAAAsV,eAAA,EAEAtV,KAAAC,QAAA+T,gBACAhU,KAAAiR,eAAA,EAGAjR,KAAA6O,cAAA,SAAA,KAAA,CAAApM,EAAA,EAEAA,GAAA4S,GACArV,KAAA6O,cAAA,SAAA,KAAA,CAAApM,EAAA,EAGAzC,KAAA6O,cAAA,YAAA,EACA,EAGAlN,EAAAyT,YAAA,SAAA3S,GACA,IAAAmQ,EAAA5S,KAAA0O,OAAAlM,OAEA,GAAA,EADAxC,KAAAC,QAAA4N,YAAA,EAAA+E,GAEA,OAAAnQ,EAEA,IAAA8S,EAAAtO,EAAA6G,OAAArL,EAAAmQ,CAAA,EAEA4C,EAAAnR,KAAAoR,IAAAF,EAAAvV,KAAAmP,aAAA,EACAuG,EAAArR,KAAAoR,IAAAF,EAAA3C,EAAA5S,KAAAmP,aAAA,EACAwG,EAAAtR,KAAAoR,IAAAF,EAAA3C,EAAA5S,KAAAmP,aAAA,EACA,CAAAnP,KAAA4V,cAAAF,EAAAF,EACA/S,GAAAmQ,EACA,CAAA5S,KAAA4V,cAAAD,EAAAH,IACA/S,GAAAmQ,GAGAnQ,EAAA,EACAzC,KAAA8K,GAAA9K,KAAAkM,eACA0G,GAAAnQ,IACAzC,KAAA8K,GAAA9K,KAAAkM,eAEA,EAEAvK,EAAAkU,SAAA,SAAAX,EAAAC,GACAnV,KAAA4L,OAAA5L,KAAAmP,cAAA,EAAA+F,EAAAC,CAAA,CACA,EAEAxT,EAAAmU,KAAA,SAAAZ,EAAAC,GACAnV,KAAA4L,OAAA5L,KAAAmP,cAAA,EAAA+F,EAAAC,CAAA,CACA,EAEAxT,EAAAwR,oBAAA,WACA,IAAAJ,EAAA/S,KAAA0O,OAAA1O,KAAAmP,eAEA4D,IAIA/S,KAAA+V,sBAAA,GAEA/V,KAAA8O,cAAAiE,GACAnH,OAAA,EACA5L,KAAAgW,cAAAjD,EAAA1G,MACArM,KAAAiW,iBAAAlD,EAAA/F,gBAAA,EAGAhN,KAAAkW,aAAAnD,EAAA1G,MAAA,GACArM,KAAAmW,gBAAAnW,KAAAiW,iBAAA,GACA,EAEAtU,EAAAoU,sBAAA,WACA/V,KAAA8O,eACA9O,KAAA8O,cAAA7D,SAAA,CAEA,EAEAtJ,EAAAoQ,mBAAA,WACA,IAAAqE,EAAApW,KAAAC,QAAAmW,aAEA,GAAApW,KAAAgS,gBACAhS,KAAA4L,OAAA5L,KAAAmP,cAAA,CAAA,EAAA,CAAA,CAAA,MADA,CAKA,GAAAiH,GAAA,UAAA,OAAAA,EAEA,GADApW,KAAAqW,UAAAD,CAAA,EAGA,OADApW,KAAAA,KAAAsW,WAAAF,EAAA,CAAA,EAAA,CAAA,CAAA,EAKA,IAAA3T,EAAA,EAEA2T,GAAApW,KAAA0O,OAAA0H,KACA3T,EAAA2T,GAGApW,KAAA4L,OAAAnJ,EAAA,CAAA,EAAA,CAAA,CAAA,CAhBA,CAiBA,EAMAd,EAAA2U,WAAA,SAAAvV,EAAAmU,EAAAC,GAEA,IAAA5I,EAAAvM,KAAAqW,UAAAtV,CAAA,EACAwL,IAIA9J,EAAAzC,KAAAuW,kBAAAhK,CAAA,EACAvM,KAAA4L,OAAAnJ,EAAAyS,EAAAC,CAAA,EACA,EAEAxT,EAAA4U,kBAAA,SAAAhK,GAEA,IAAA,IAAA1L,EAAA,EAAAA,EAAAb,KAAA0O,OAAAlM,OAAA3B,CAAA,GAGA,GAAA,CAAA,GAFAb,KAAA0O,OAAA7N,GACAwL,MAAAnK,QAAAqK,CAAA,EAEA,OAAA1L,CAGA,EASAc,EAAA6U,QAAA,SAAA1V,GAEA,IAAA,IAAAD,EAAA,EAAAA,EAAAb,KAAAqM,MAAA7J,OAAA3B,CAAA,GAAA,CACA,IAAA0L,EAAAvM,KAAAqM,MAAAxL,GACA,GAAA0L,EAAA7B,SAAA5J,EACA,OAAAyL,CAEA,CACA,EAOA5K,EAAA8U,SAAA,SAAAxO,GACAA,EAAAhB,EAAAI,UAAAY,CAAA,EACA,IAAAoE,EAAA,GAOA,OANApE,EAAAE,QAAA,SAAArH,GACAyL,EAAAvM,KAAAwW,QAAA1V,CAAA,EACAyL,GACAF,EAAAlK,KAAAoK,CAAA,CAEA,EAAAvM,IAAA,EACAqM,CACA,EAMA1K,EAAAqL,gBAAA,WACA,OAAAhN,KAAAqM,MAAAY,IAAA,SAAAV,GACA,OAAAA,EAAA7B,OACA,CAAA,CACA,EAOA/I,EAAA+U,cAAA,SAAA5V,GAEA,IAAAyL,EAAAvM,KAAAwW,QAAA1V,CAAA,EACA,OAAAyL,IAIAzL,EAAAmG,EAAAS,UAAA5G,EAAA,sBAAA,EACAd,KAAAwW,QAAA1V,CAAA,EACA,EAQAa,EAAAgV,wBAAA,SAAAC,EAAAnU,GACA,GAAA,CAAAmU,EACA,OAAA5W,KAAA8O,cAAA9B,gBAAA,EAEAvK,EAAApB,KAAAA,IAAAoB,EAAAzC,KAAAmP,cAAA1M,EAEA,IAAAmQ,EAAA5S,KAAA0O,OAAAlM,OACA,GAAAoQ,GAAA,EAAA,EAAAgE,EACA,OAAA5W,KAAAgN,gBAAA,EAIA,IADA,IAAA6J,EAAA,GACAhW,EAAA4B,EAAAmU,EAAA/V,GAAA4B,EAAAmU,EAAA/V,CAAA,GAAA,CACA,IAAAiW,EAAA9W,KAAAC,QAAA4N,WAAA5G,EAAA6G,OAAAjN,EAAA+R,CAAA,EAAA/R,EACAkS,EAAA/S,KAAA0O,OAAAoI,GACA/D,IACA8D,EAAAA,EAAA7M,OAAA+I,EAAA/F,gBAAA,CAAA,EAEA,CACA,OAAA6J,CACA,EAMAlV,EAAA0U,UAAA,SAAAtP,GACA,GAAA,UAAA,OAAAA,EAEA,OAAA/G,KAAAqM,MAAAtF,GAEA,GAAA,UAAA,OAAAA,EAAA,CAEA,GAAAA,EAAAuC,MAAA,eAAA,EACA,OAGAvC,EAAA/G,KAAA0K,QAAAlG,cAAAuC,CAAA,CACA,CAEA,OAAA/G,KAAAwW,QAAAzP,CAAA,CACA,EAIApF,EAAAoV,SAAA,WACA/W,KAAA2C,UAAA,UAAA,CACA,EAGAhB,EAAAqV,mBAAA,SAAAlP,GAEA,cAAAA,EAAAC,MACAD,EAAAmP,eAAA,EAEAjX,KAAAkX,MAAA,CACA,EAIAvV,EAAAwV,SAAA,WACAnX,KAAAwR,SAAA,EACAxR,KAAAgR,OAAA,CACA,EAEA/J,EAAAsB,eAAAgC,EAAA,WAAA,GAAA,EAEA5I,EAAAqP,OAAA,WACA,IAcAmF,EAdAnW,KAAA0R,WAGA1R,KAAA8C,QAAA,EAEA9C,KAAAC,QAAA4N,aACA7N,KAAA8K,EAAA7D,EAAA6G,OAAA9N,KAAA8K,EAAA9K,KAAAkM,cAAA,GAEAlM,KAAAmS,cAAA,EACAnS,KAAAoS,mBAAA,EACApS,KAAAiR,eAAA,EACAjR,KAAA2C,UAAA,QAAA,EAGAwT,EAAAnW,KAAAiW,kBAAAjW,KAAAiW,iBAAA,GACAjW,KAAAsW,WAAAH,EAAA,CAAA,EAAA,CAAA,CAAA,EACA,EAGAxU,EAAA6P,SAAA,WACAxR,KAAAC,QAAAuR,WAOA,CAAA,GAFAjO,EAAAvD,KAAA0K,QAAA,QAAA,EAAA0M,QAEAlV,QAAA,UAAA,EACAlC,KAAAyR,SAAA,EAEAzR,KAAAqX,WAAA,EAEA,EAKA1V,EAAA2V,UAAA,SAAAxP,GAEA,IAAAyP,EAAA5T,SAAA6T,eAAA7T,SAAA6T,eAAAxX,KAAA0K,QACA1K,KAAAC,QAAA2Q,eAAA2G,CAAAA,IAIAE,EAAAlN,EAAAmN,iBAAA5P,EAAA6P,WAEAF,EAAA/W,KAAAV,IAAA,CAEA,EAEAuK,EAAAmN,iBAAA,CAEAE,GAAA,WACA,IAAAC,EAAA7X,KAAAC,QAAAmO,YAAA,OAAA,WACApO,KAAA+W,SAAA,EACA/W,KAAA6X,GAAA,CACA,EAEAC,GAAA,WACA,IAAAC,EAAA/X,KAAAC,QAAAmO,YAAA,WAAA,OACApO,KAAA+W,SAAA,EACA/W,KAAA+X,GAAA,CACA,CACA,EAIApW,EAAAuV,MAAA,WAGA,IAAAc,EAAAxZ,EAAAyZ,YACAjY,KAAA0K,QAAAwM,MAAA,CAAAgB,cAAA,CAAA,CAAA,CAAA,EAEA1Z,EAAAyZ,aAAAD,GACAxZ,EAAA2Z,SAAA3Z,EAAA4Z,YAAAJ,CAAA,CAEA,EAKArW,EAAA0V,WAAA,WACArX,KAAA0R,WAGA1R,KAAA0K,QAAAmB,UAAAG,OAAA,kBAAA,EACAhM,KAAA0K,QAAAmB,UAAAG,OAAA,cAAA,EACAhM,KAAA+V,sBAAA,EAEA/V,KAAAqM,MAAAlE,QAAA,SAAAoE,GACAA,EAAAvB,QAAA,CACA,CAAA,EACAhL,KAAA0K,QAAAnG,YAAAvE,KAAAsR,QAAA,EAEApB,EAAAlQ,KAAAsO,OAAAsD,SAAA5R,KAAA0K,OAAA,EACA1K,KAAAC,QAAA2Q,gBACA5Q,KAAA0K,QAAAqB,gBAAA,UAAA,EACA/L,KAAA0K,QAAA2N,oBAAA,UAAArY,IAAA,GAGAA,KAAA0R,SAAA,CAAA,EACA1R,KAAA2C,UAAA,YAAA,EACA,EAEAhB,EAAAqJ,QAAA,WACAhL,KAAAqX,WAAA,EACA7Y,EAAA6Z,oBAAA,SAAArY,IAAA,EACAA,KAAA6C,OAAA,EACA7C,KAAA2C,UAAA,SAAA,EACA/D,GAAAoB,KAAAwQ,UACA5R,EAAA0Z,WAAAtY,KAAA0K,QAAA,UAAA,EAEA,OAAA1K,KAAA0K,QAAA6F,aACA,OAAAF,EAAArQ,KAAAqR,KACA,EAIApK,EAAA/G,OAAAyB,EAAAuL,CAAA,EASA3C,EAAAtJ,KAAA,SAAAH,GAEAsQ,GADAtQ,EAAAmG,EAAAW,gBAAA9G,CAAA,IACAA,EAAAyP,aACA,OAAAa,GAAAf,EAAAe,EACA,EAEAnK,EAAAyC,SAAAa,EAAA,UAAA,EAEA3L,GAAAA,EAAA4C,SACA5C,EAAA4C,QAAA,WAAA+I,CAAA,EAIAA,EAAAgO,UAAA,SAAAC,GACA5Z,EAAA4Z,CACA,EAEAjO,EAAAC,KAAAA,EACAD,EAAA4B,MAAAA,EAEA5B,CAEA,CAAA,EAUA,SAAA/L,EAAAC,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,wBAAA,CACA,yBACA,SAAAgD,GACA,OAAAjD,EAAAD,EAAAkD,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAA7C,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,YAAA,CAAA,EAIAR,EAAAia,WAAAha,EACAD,EACAA,EAAAkD,SAAA,CAIA,EAAAlD,OAAA,SAAAA,EAAAkD,GAMA,SAAA+W,KAGA,IAAA9W,EAAA8W,EAAArZ,UAAAsZ,OAAA/N,OAAAjJ,EAAAtC,SAAA,EA+FAuZ,GA7FAhX,EAAAiX,eAAA,SAAA9X,GACAd,KAAA6Y,gBAAA/X,EAAA,CAAA,CAAA,CACA,EAEAa,EAAAmX,iBAAA,SAAAhY,GACAd,KAAA6Y,gBAAA/X,EAAA,CAAA,CAAA,CACA,EAMAa,EAAAkX,gBAAA,SAAA/X,EAAAiY,GAGA,IAAAC,GADAD,EAAA1X,KAAAA,IAAA0X,GAAAA,GACA,mBAAA,sBAGAE,EAAA,YACAza,EAAA0a,aAEAD,EAAA,cACA,iBAAAza,IAEAya,EAAA,cAEAnY,EAAAkY,GAAAC,EAAAjZ,IAAA,CACA,EAGA2B,EAAAkG,YAAA,SAAAC,GACA,IAAA5G,EAAA,KAAA4G,EAAAC,KACA/H,KAAAkB,IACAlB,KAAAkB,GAAA4G,CAAA,CAEA,EAGAnG,EAAAwX,SAAA,SAAAC,GACA,IAAA,IAAAvY,EAAA,EAAAA,EAAAuY,EAAA5W,OAAA3B,CAAA,GAAA,CACA,IAAAwY,EAAAD,EAAAvY,GACA,GAAAwY,EAAAC,YAAAtZ,KAAAuZ,kBACA,OAAAF,CAEA,CACA,EAIA1X,EAAA6X,YAAA,SAAA1R,GAEA,IAAA2R,EAAA3R,EAAA2R,OACAA,GAAA,IAAAA,GAAA,IAAAA,GAGAzZ,KAAA0Z,aAAA5R,EAAAA,CAAA,CACA,EAEAnG,EAAAgY,aAAA,SAAA7R,GACA9H,KAAA0Z,aAAA5R,EAAAA,EAAA8R,eAAA,EAAA,CACA,EAEAjY,EAAAkY,cAAA,SAAA/R,GACA9H,KAAA0Z,aAAA5R,EAAAA,CAAA,CACA,EAOAnG,EAAA+X,aAAA,SAAA5R,EAAAgS,GAGAhS,EAAA2R,QAAAzZ,KAAAiP,gBAIAjP,KAAAiP,cAAA,CAAA,EAEAjP,KAAAuZ,kBAAAlY,KAAAA,IAAAyY,EAAAC,UAEAD,EAAAC,UAAAD,EAAAR,WAEAtZ,KAAAga,YAAAlS,EAAAgS,CAAA,EACA,EAEAnY,EAAAqY,YAAA,SAAAlS,EAAAgS,GACA9Z,KAAAia,qBAAAnS,CAAA,EACA9H,KAAA2C,UAAA,cAAA,CAAAmF,EAAAgS,EAAA,CACA,EAGA,CACAI,UAAA,CAAA,YAAA,WACAC,WAAA,CAAA,YAAA,WAAA,eACAC,YAAA,CAAA,cAAA,YAAA,gBACA,GA8JA,OA5JAzY,EAAAsY,qBAAA,SAAAnS,GACAA,KAIA9F,EAAA2W,EAAA7Q,EAAAC,OAEAI,QAAA,SAAAtG,GACArD,EAAA0K,iBAAArH,EAAA7B,IAAA,CACA,EAAAA,IAAA,EAEAA,KAAAqa,oBAAArY,EACA,EAEAL,EAAA2Y,uBAAA,WAEAta,KAAAqa,sBAGAra,KAAAqa,oBAAAlS,QAAA,SAAAtG,GACArD,EAAA6Z,oBAAAxW,EAAA7B,IAAA,CACA,EAAAA,IAAA,EAEA,OAAAA,KAAAqa,oBACA,EAIA1Y,EAAA4Y,YAAA,SAAAzS,GACA9H,KAAAwa,aAAA1S,EAAAA,CAAA,CACA,EAEAnG,EAAA8Y,cAAA,SAAA3S,GACAA,EAAAiS,WAAA/Z,KAAAuZ,mBACAvZ,KAAAwa,aAAA1S,EAAAA,CAAA,CAEA,EAEAnG,EAAA+Y,YAAA,SAAA5S,GACA,IAAAuR,EAAArZ,KAAAmZ,SAAArR,EAAA8R,cAAA,EACAP,GACArZ,KAAAwa,aAAA1S,EAAAuR,CAAA,CAEA,EAQA1X,EAAA6Y,aAAA,SAAA1S,EAAAgS,GACA9Z,KAAA2a,YAAA7S,EAAAgS,CAAA,CACA,EAGAnY,EAAAgZ,YAAA,SAAA7S,EAAAgS,GACA9Z,KAAA2C,UAAA,cAAA,CAAAmF,EAAAgS,EAAA,CACA,EAKAnY,EAAAiZ,UAAA,SAAA9S,GACA9H,KAAA6a,WAAA/S,EAAAA,CAAA,CACA,EAEAnG,EAAAmZ,YAAA,SAAAhT,GACAA,EAAAiS,WAAA/Z,KAAAuZ,mBACAvZ,KAAA6a,WAAA/S,EAAAA,CAAA,CAEA,EAEAnG,EAAAoZ,WAAA,SAAAjT,GACA,IAAAuR,EAAArZ,KAAAmZ,SAAArR,EAAA8R,cAAA,EACAP,GACArZ,KAAA6a,WAAA/S,EAAAuR,CAAA,CAEA,EAQA1X,EAAAkZ,WAAA,SAAA/S,EAAAgS,GACA9Z,KAAAgb,aAAA,EACAhb,KAAAib,UAAAnT,EAAAgS,CAAA,CACA,EAGAnY,EAAAsZ,UAAA,SAAAnT,EAAAgS,GACA9Z,KAAA2C,UAAA,YAAA,CAAAmF,EAAAgS,EAAA,CACA,EAKAnY,EAAAqZ,aAAA,WACAhb,KAAAkb,cAAA,EACAlb,KAAAsa,uBAAA,EACAta,KAAAmb,YAAA,CACA,EAEAxZ,EAAAuZ,cAAA,WAEAlb,KAAAiP,cAAA,CAAA,EACA,OAAAjP,KAAAuZ,iBACA,EAEA5X,EAAAwZ,YAzNA,aA6NAxZ,EAAAyZ,gBAAA,SAAAtT,GACAA,EAAAiS,WAAA/Z,KAAAuZ,mBACAvZ,KAAAqb,eAAAvT,EAAAA,CAAA,CAEA,EAEAnG,EAAA2Z,cAAA,SAAAxT,GACA,IAAAuR,EAAArZ,KAAAmZ,SAAArR,EAAA8R,cAAA,EACAP,GACArZ,KAAAqb,eAAAvT,EAAAuR,CAAA,CAEA,EAQA1X,EAAA0Z,eAAA,SAAAvT,EAAAgS,GACA9Z,KAAAgb,aAAA,EACAhb,KAAAub,cAAAzT,EAAAgS,CAAA,CACA,EAGAnY,EAAA4Z,cAAA,SAAAzT,EAAAgS,GACA9Z,KAAA2C,UAAA,gBAAA,CAAAmF,EAAAgS,EAAA,CACA,EAKArB,EAAA+C,gBAAA,SAAA1B,GACA,MAAA,CACAhP,EAAAgP,EAAA2B,MACAC,EAAA5B,EAAA6B,KACA,CACA,EAIAlD,CAEA,CAAA,EAUA,SAAAja,EAAAC,GAIA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,wBAAA,CACA,yBACA,SAAA+Z,GACA,OAAAha,EAAAD,EAAAia,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAA5Z,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,YAAA,CAAA,EAIAR,EAAAod,WAAAnd,EACAD,EACAA,EAAAia,UAAA,CAIA,EAAAja,OAAA,SAAAA,EAAAia,GAMA,SAAAmD,KAGA,IAAAja,EAAAia,EAAAxc,UAAAsZ,OAAA/N,OAAA8N,EAAArZ,SAAA,EA2DAyc,GAvDAla,EAAAma,YAAA,WACA9b,KAAA+b,aAAA,CAAA,CAAA,CACA,EAEApa,EAAAqa,cAAA,WACAhc,KAAA+b,aAAA,CAAA,CAAA,CACA,EAMApa,EAAAoa,aAAA,SAAAhD,GAMA,IAFA,IAAAC,GAFAD,EAAA1X,KAAAA,IAAA0X,GAAAA,GAEA,mBAAA,sBACAkD,EAAAlD,EAAA/Y,KAAAkc,kBAAA,GACArb,EAAA,EAAAA,EAAAb,KAAAmc,QAAA3Z,OAAA3B,CAAA,GAAA,CACA,IAAAub,EAAApc,KAAAmc,QAAAtb,GACAb,KAAA6Y,gBAAAuD,EAAArD,CAAA,EACAqD,EAAApD,GAAA,QAAAhZ,IAAA,EAEAxB,EAAA0a,eACAkD,EAAA9Y,MAAA2Y,YAAAA,EAEA,CACA,EAGAta,EAAAua,kBAAA,OASAva,EAAAqY,YAAA,SAAAlS,EAAAgS,GACA9Z,KAAAqc,gBAAAvU,CAAA,IAKA9H,KAAAsc,mBAAAxC,EAEAhS,EAAAmP,eAAA,EACAjX,KAAAuc,gBAAA,EAEAvc,KAAAia,qBAAAnS,CAAA,EACA9H,KAAA2C,UAAA,cAAA,CAAAmF,EAAAgS,EAAA,EACA,EAGA,CACA0C,SAAA,CAAA,EACAC,MAAA,CAAA,EACAC,OAAA,CAAA,EACAC,OAAA,CAAA,CACA,GAGAC,EAAA,CACAC,MAAA,CAAA,EACAC,SAAA,CAAA,EACArD,OAAA,CAAA,EACAsD,OAAA,CAAA,EACAC,MAAA,CAAA,EACAC,KAAA,CAAA,CACA,EAgKA,OA7JAtb,EAAA0a,gBAAA,SAAAvU,GACA,IAAAoV,EAAArB,EAAA/T,EAAA2D,OAAA0R,UACAC,EAAAR,EAAA9U,EAAA2D,OAAA1D,MACAsV,EAAA,CAAAH,GAAAE,EAIA,OAHAC,GACArd,KAAAkb,cAAA,EAEAmC,CACA,EAGA1b,EAAA4a,gBAAA,WACA,IAAAe,EAAA3Z,SAAA6T,cAEA8F,GAAAA,EAAAC,MAAAD,GAAA3Z,SAAAO,MAEAoZ,EAAAC,KAAA,CAEA,EASA5b,EAAAgZ,YAAA,SAAA7S,EAAAgS,GACA,IAAA0D,EAAAxd,KAAAyd,iBAAA3V,EAAAgS,CAAA,EACA9Z,KAAA2C,UAAA,cAAA,CAAAmF,EAAAgS,EAAA0D,EAAA,EACAxd,KAAA0d,UAAA5V,EAAAgS,EAAA0D,CAAA,CACA,EAGA7b,EAAA8b,iBAAA,SAAA3V,EAAAgS,GACA,IAAA0D,EAAA,CACA1S,EAAAgP,EAAA2B,MAAAzb,KAAAsc,mBAAAb,MACAC,EAAA5B,EAAA6B,MAAA3b,KAAAsc,mBAAAX,KACA,EAKA,MAHA,CAAA3b,KAAA2d,YAAA3d,KAAA4d,eAAAJ,CAAA,GACAxd,KAAA6d,WAAA/V,EAAAgS,CAAA,EAEA0D,CACA,EAGA7b,EAAAic,eAAA,SAAAJ,GACA,OAAA,EAAAnZ,KAAAoR,IAAA+H,EAAA1S,CAAA,GAAA,EAAAzG,KAAAoR,IAAA+H,EAAA9B,CAAA,CACA,EASA/Z,EAAAsZ,UAAA,SAAAnT,EAAAgS,GACA9Z,KAAA2C,UAAA,YAAA,CAAAmF,EAAAgS,EAAA,EACA9Z,KAAA8d,eAAAhW,EAAAgS,CAAA,CACA,EAEAnY,EAAAmc,eAAA,SAAAhW,EAAAgS,GACA9Z,KAAA2d,WACA3d,KAAA+d,SAAAjW,EAAAgS,CAAA,EAGA9Z,KAAAge,aAAAlW,EAAAgS,CAAA,CAEA,EAKAnY,EAAAkc,WAAA,SAAA/V,EAAAgS,GACA9Z,KAAA2d,WAAA,CAAA,EAEA3d,KAAAie,mBAAA,CAAA,EACAje,KAAAke,UAAApW,EAAAgS,CAAA,CACA,EAEAnY,EAAAuc,UAAA,SAAApW,EAAAgS,GACA9Z,KAAA2C,UAAA,YAAA,CAAAmF,EAAAgS,EAAA,CACA,EAGAnY,EAAA+b,UAAA,SAAA5V,EAAAgS,EAAA0D,GAEAxd,KAAA2d,YAIA3d,KAAAme,SAAArW,EAAAgS,EAAA0D,CAAA,CACA,EAEA7b,EAAAwc,SAAA,SAAArW,EAAAgS,EAAA0D,GACA1V,EAAAmP,eAAA,EACAjX,KAAA2C,UAAA,WAAA,CAAAmF,EAAAgS,EAAA0D,EAAA,CACA,EAGA7b,EAAAoc,SAAA,SAAAjW,EAAAgS,GAEA9Z,KAAA2d,WAAA,CAAA,EAEA7U,WAAA,WACA,OAAA9I,KAAAie,kBACA,EAAAG,KAAApe,IAAA,CAAA,EAEAA,KAAAqe,QAAAvW,EAAAgS,CAAA,CACA,EAEAnY,EAAA0c,QAAA,SAAAvW,EAAAgS,GACA9Z,KAAA2C,UAAA,UAAA,CAAAmF,EAAAgS,EAAA,CACA,EAKAnY,EAAA2c,QAAA,SAAAxW,GACA9H,KAAAie,oBACAnW,EAAAmP,eAAA,CAEA,EAKAtV,EAAAqc,aAAA,SAAAlW,EAAAgS,GAEA9Z,KAAAue,mBAAA,WAAAzW,EAAAC,OAIA/H,KAAAwe,YAAA1W,EAAAgS,CAAA,EAGA,WAAAhS,EAAAC,OACA/H,KAAAue,kBAAA,CAAA,EAEAzV,WAAA,WACA,OAAA9I,KAAAue,iBACA,EAAAH,KAAApe,IAAA,EAAA,GAAA,GAEA,EAEA2B,EAAA6c,YAAA,SAAA1W,EAAAgS,GACA9Z,KAAA2C,UAAA,cAAA,CAAAmF,EAAAgS,EAAA,CACA,EAIA8B,EAAAJ,gBAAA/C,EAAA+C,gBAIAI,CAEA,CAAA,EAGA,SAAApd,EAAAC,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,mBAAA,CACA,aACA,wBACA,wBACA,SAAA6L,EAAAqR,EAAA3U,GACA,OAAAxI,EAAAD,EAAA+L,EAAAqR,EAAA3U,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAApI,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,YAAA,EACAA,QAAA,YAAA,EACAA,QAAA,gBAAA,CAAA,EAIAR,EAAA+L,SAAA9L,EACAD,EACAA,EAAA+L,SACA/L,EAAAod,WACApd,EAAAwI,YAAA,CAIA,EAAAxI,OAAA,SAAAA,EAAA+L,EAAAqR,EAAA3U,GAMAA,EAAA/G,OAAAqK,EAAAmG,SAAA,CACA+N,UAAA,KACAC,cAAA,CACA,CAAA,EAIAnU,EAAA2G,cAAA/O,KAAA,aAAA,EAIA,IAAAR,EAAA4I,EAAAnL,UAMAuf,GALA1X,EAAA/G,OAAAyB,EAAAia,EAAAxc,SAAA,EACAuC,EAAAua,kBAAA,QAIA,gBAAAvY,UACAib,EAAA,CAAA,EAmGAC,GAjGAld,EAAAmd,YAAA,WACA9e,KAAA4B,GAAA,WAAA5B,KAAA+e,cAAA,EACA/e,KAAA4B,GAAA,WAAA5B,KAAAgf,aAAA,EACAhf,KAAA4B,GAAA,aAAA5B,KAAAif,gBAAA,EACAjf,KAAA4B,GAAA,aAAA5B,KAAAkf,eAAA,EAIAP,GAAA,CAAAC,IACApgB,EAAA0K,iBAAA,YAAA,YAAA,EACA0V,EAAA,CAAA,EAEA,EAEAjd,EAAAod,eAAA,WACA/e,KAAAmc,QAAA,CAAAnc,KAAAsR,UACAtR,KAAA8b,YAAA,EACA9b,KAAAkf,gBAAA,CACA,EAEAvd,EAAAsd,iBAAA,WACAjf,KAAAgc,cAAA,EACAhc,KAAA0K,QAAAmB,UAAAG,OAAA,cAAA,CACA,EAEArK,EAAAud,gBAAA,WAEA,MAAAlf,KAAAC,QAAAwe,UACAze,KAAA6P,YAAA,EAAA7P,KAAA0O,OAAAlM,OAEAxC,KAAA6P,YAAA7P,KAAAC,QAAAwe,UAEAze,KAAA6P,YACA7P,KAAA0K,QAAAmB,UAAAC,IAAA,cAAA,EAEA9L,KAAA0K,QAAAmB,UAAAG,OAAA,cAAA,CAEA,EAGArK,EAAAwd,SAAA,WACAnf,KAAAC,QAAAwe,UAAA,CAAA,EACAze,KAAAkf,gBAAA,CACA,EAEAvd,EAAAyd,WAAA,WACApf,KAAAC,QAAAwe,UAAA,CAAA,EACAze,KAAAkf,gBAAA,CACA,EAEAvd,EAAAqd,cAAA,WACA,OAAAhf,KAAAkP,eACA,EAIAvN,EAAAqY,YAAA,SAAAlS,EAAAgS,GACA9Z,KAAA6P,YAIA7P,KAAAqc,gBAAAvU,CAAA,IAKA9H,KAAAqf,2BAAAvX,CAAA,EACA9H,KAAAsf,iBAAAxX,CAAA,EAEAnE,SAAA6T,eAAAxX,KAAA0K,SAEA1K,KAAAuc,gBAAA,EAIAvc,KAAA8P,MAAA9P,KAAA8K,EACA9K,KAAAsR,SAAAzF,UAAAC,IAAA,iBAAA,EAEA9L,KAAAuf,kBAAAC,EAAA,EACAhhB,EAAA0K,iBAAA,SAAAlJ,IAAA,EAEAA,KAAAyf,oBAAA3X,EAAAgS,CAAA,GAvBA9Z,KAAAyf,oBAAA3X,EAAAgS,CAAA,CAwBA,EAGAnY,EAAA8d,oBAAA,SAAA3X,EAAAgS,GAGA9Z,KAAAsc,mBAAA,CACAb,MAAA3B,EAAA2B,MACAE,MAAA7B,EAAA6B,KACA,EAEA3b,KAAAia,qBAAAnS,CAAA,EACA9H,KAAA6O,cAAA,cAAA/G,EAAA,CAAAgS,EAAA,CACA,EAEA,CACA2C,MAAA,CAAA,EACAD,SAAA,CAAA,EACAE,OAAA,CAAA,CACA,GA+NA,SAAA8C,IACA,MAAA,CACA1U,EAAAtM,EAAA4Z,YACAsD,EAAAld,EAAAyZ,WACA,CACA,CAIA,OAtOAtW,EAAA2d,iBAAA,SAAAxX,GACA+W,EAAA/W,EAAA2D,OAAA0R,WAEAnd,KAAAkX,MAAA,CAEA,EAEAvV,EAAA0d,2BAAA,SAAAvX,GACA,IAAA4X,EAAA,cAAA5X,EAAAC,KACA4X,EAAA,SAAA7X,EAAA8X,YACAC,EAAAhB,EAAA/W,EAAA2D,OAAA0R,UACAuC,GAAAC,GAAAE,GACA/X,EAAAmP,eAAA,CAEA,EAIAtV,EAAAic,eAAA,SAAAJ,GACA,OAAAnZ,KAAAoR,IAAA+H,EAAA1S,CAAA,EAAA9K,KAAAC,QAAAye,aACA,EAIA/c,EAAAsZ,UAAA,SAAAnT,EAAAgS,GACA,OAAA9Z,KAAA8f,iBACA9f,KAAAsR,SAAAzF,UAAAG,OAAA,iBAAA,EACAhM,KAAA6O,cAAA,YAAA/G,EAAA,CAAAgS,EAAA,EACA9Z,KAAA8d,eAAAhW,EAAAgS,CAAA,CACA,EAEAnY,EAAAwZ,YAAA,WACA3c,EAAA6Z,oBAAA,SAAArY,IAAA,EACA,OAAAA,KAAAuf,iBACA,EAIA5d,EAAAuc,UAAA,SAAApW,EAAAgS,GACA9Z,KAAA6P,cAGA7P,KAAA+f,kBAAA/f,KAAA8K,EACA9K,KAAAsV,eAAA,EACA9W,EAAA6Z,oBAAA,SAAArY,IAAA,EACAA,KAAA6O,cAAA,YAAA/G,EAAA,CAAAgS,EAAA,EACA,EAEAnY,EAAAgZ,YAAA,SAAA7S,EAAAgS,GACA,IAAA0D,EAAAxd,KAAAyd,iBAAA3V,EAAAgS,CAAA,EACA9Z,KAAA6O,cAAA,cAAA/G,EAAA,CAAAgS,EAAA0D,EAAA,EACAxd,KAAA0d,UAAA5V,EAAAgS,EAAA0D,CAAA,CACA,EAEA7b,EAAAwc,SAAA,SAAArW,EAAAgS,EAAA0D,GACA,IAiBA1N,EACA2E,EAlBAzU,KAAA6P,cAGA/H,EAAAmP,eAAA,EAEAjX,KAAAggB,cAAAhgB,KAAA8P,MAEAmQ,EAAAjgB,KAAAC,QAAAmO,YAAA,CAAA,EAAA,EACApO,KAAAC,QAAA4N,aAEA2P,EAAA1S,EAAA0S,EAAA1S,EAAA9K,KAAAkM,gBAEA4D,EAAA9P,KAAA+f,kBAAAvC,EAAA1S,EAAAmV,EAEA,CAAAjgB,KAAAC,QAAA4N,YAAA7N,KAAA0O,OAAAlM,SAKAsN,GAFAA,GADAoQ,EAAA7b,KAAAoI,IAAA,CAAAzM,KAAA0O,OAAA,GAAAjD,OAAAzL,KAAA+f,iBAAA,GACAjQ,EAAA,IAAAA,EAAAoQ,GAAApQ,IACA2E,EAAApQ,KAAAuQ,IAAA,CAAA5U,KAAAsS,aAAA,EAAA7G,OAAAzL,KAAA+f,iBAAA,GACA,IAAAjQ,EAAA2E,GAAA3E,GAGA9P,KAAA8P,MAAAA,EAEA9P,KAAAmgB,aAAA,IAAAC,KACApgB,KAAA6O,cAAA,WAAA/G,EAAA,CAAAgS,EAAA0D,EAAA,EACA,EAEA7b,EAAA0c,QAAA,SAAAvW,EAAAgS,GACA,IAOArX,EAMA4d,EAbArgB,KAAA6P,cAGA7P,KAAAC,QAAAqgB,aACAtgB,KAAAkP,gBAAA,CAAA,GAGAzM,EAAAzC,KAAAugB,qBAAA,EAEAvgB,KAAAC,QAAAqgB,YAAA,CAAAtgB,KAAAC,QAAA4N,YAIAwS,EAAArgB,KAAAwgB,mBAAA,EACAxgB,KAAAkP,gBAAA,CAAAmR,EAAArgB,KAAA0O,OAAA,GAAAjD,QACA,CAAA4U,EAAArgB,KAAAsS,aAAA,EAAA7G,QACAzL,KAAAC,QAAAqgB,YAAA7d,GAAAzC,KAAAmP,gBAEA1M,GAAAzC,KAAAygB,mBAAA,GAEA,OAAAzgB,KAAAggB,cAIAhgB,KAAA4V,aAAA5V,KAAAC,QAAA4N,WACA7N,KAAA4L,OAAAnJ,CAAA,EACA,OAAAzC,KAAA4V,aACA5V,KAAA6O,cAAA,UAAA/G,EAAA,CAAAgS,EAAA,EACA,EAEAnY,EAAA4e,qBAAA,WACA,IAAAF,EAAArgB,KAAAwgB,mBAAA,EAEAE,EAAArc,KAAAoR,IAAAzV,KAAA2gB,iBAAA,CAAAN,EAAArgB,KAAAmP,aAAA,CAAA,EAEAyR,EAAA5gB,KAAA6gB,mBAAAR,EAAAK,EAAA,CAAA,EACAI,EAAA9gB,KAAA6gB,mBAAAR,EAAAK,EAAA,CAAA,CAAA,EAIA,OAFAE,EAAAF,SAAAI,EAAAJ,SACAE,EAAAE,GAAAre,KAEA,EAUAd,EAAAkf,mBAAA,SAAAR,EAAAK,EAAArM,GAMA,IALA,IAAA5R,EAAAzC,KAAAmP,cACA4R,EAAAC,EAAAA,EACAC,EAAAjhB,KAAAC,QAAAyU,SAAA,CAAA1U,KAAAC,QAAA4N,WAEA,SAAAqT,EAAAC,GAAA,OAAAD,GAAAC,CAAA,EAAA,SAAAD,EAAAC,GAAA,OAAAD,EAAAC,CAAA,EACAF,EAAAP,EAAAK,CAAA,IAGAA,EAAAL,EAEA,QADAA,EAAA1gB,KAAA2gB,iBAAA,CAAAN,EAFA5d,GAAA4R,CAEA,KAIAqM,EAAArc,KAAAoR,IAAAiL,CAAA,EAEA,MAAA,CACAA,SAAAK,EAEAte,MAAAA,EAAA4R,CACA,CACA,EAOA1S,EAAAgf,iBAAA,SAAA7V,EAAArI,GACA,IAAAmQ,EAAA5S,KAAA0O,OAAAlM,OAEA4e,EAAAphB,KAAAC,QAAA4N,YAAA,EAAA+E,EACAkE,EAAAsK,EAAAna,EAAA6G,OAAArL,EAAAmQ,CAAA,EAAAnQ,EACAsQ,EAAA/S,KAAA0O,OAAAoI,GACA,OAAA/D,GAIAsO,EAAAD,EAAAphB,KAAAkM,eAAA7H,KAAAid,MAAA7e,EAAAmQ,CAAA,EAAA,EACA9H,GAAAiI,EAAAtH,OAAA4V,IAJA,IAKA,EAEA1f,EAAA8e,mBAAA,WAEA,IAMAC,EACAlL,EAPA,OAAAnU,KAAAA,IAAArB,KAAAggB,eAAA,CAAAhgB,KAAAmgB,cAEA,IAAA,IAAAC,KAAApgB,KAAAmgB,aACA,GAGAO,EAAA1gB,KAAA2gB,iBAAA,CAAA3gB,KAAA8P,MAAA9P,KAAAmP,aAAA,EACAqG,EAAAxV,KAAAggB,cAAAhgB,KAAA8P,MACA,EAAA4Q,GAAA,EAAAlL,EAEA,EACAkL,EAAA,GAAAlL,EAAA,EAEA,CAAA,EAEA,EACA,EAIA7T,EAAA6c,YAAA,SAAA1W,EAAAgS,GAEA,IAAAyH,EAAAvhB,KAAA0W,cAAA5O,EAAA2D,MAAA,EACA4G,EAAAkP,GAAAA,EAAA7W,QACAwJ,EAAAqN,GAAAvhB,KAAAqM,MAAAnK,QAAAqf,CAAA,EACAvhB,KAAA6O,cAAA,cAAA/G,EAAA,CAAAgS,EAAAzH,EAAA6B,EAAA,CACA,EAIAvS,EAAA6f,SAAA,WACA,IAAAC,EAAAjC,EAAA,EACAkC,EAAA1hB,KAAAuf,kBAAAzU,EAAA2W,EAAA3W,EACA6W,EAAA3hB,KAAAuf,kBAAA7D,EAAA+F,EAAA/F,GAEA,EAAArX,KAAAoR,IAAAiM,CAAA,GAAA,EAAArd,KAAAoR,IAAAkM,CAAA,IACA3hB,KAAAgb,aAAA,CAEA,EAaAzQ,CAEA,CAAA,EAGA,SAAA/L,EAAAC,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,+BAAA,CACA,aACA,wBACA,wBACA,SAAA6L,EAAAkO,EAAAxR,GACA,OAAAxI,EAAAD,EAAA+L,EAAAkO,EAAAxR,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAApI,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,YAAA,EACAA,QAAA,YAAA,EACAA,QAAA,gBAAA,CAAA,EAIAP,EACAD,EACAA,EAAA+L,SACA/L,EAAAia,WACAja,EAAAwI,YAAA,CAIA,EAAAxI,OAAA,SAAAA,EAAA+L,EAAAkO,EAAAxR,GAGA,IAAA2a,EAAA,6BAIA,SAAAC,EAAA5B,EAAAxV,GACAzK,KAAAigB,UAAAA,EACAjgB,KAAAyK,OAAAA,EACAzK,KAAA2Q,QAAA,CACA,EAEAkR,EAAAziB,UAAAsZ,OAAA/N,OAAA8N,EAAArZ,SAAA,GAEAuR,QAAA,WAEA3Q,KAAA8hB,UAAA,CAAA,EACA9hB,KAAA+hB,WAAA,CAAA,GAAA/hB,KAAAigB,UACA,IAAA+B,EAAAhiB,KAAAyK,OAAAxK,QAAAmO,YAAA,EAAA,CAAA,EAGA1D,GAFA1K,KAAAiiB,OAAAjiB,KAAAigB,WAAA+B,EAEAhiB,KAAA0K,QAAA/G,SAAAC,cAAA,QAAA,GAWAse,GAVAxX,EAAAJ,UAAA,4CACAI,EAAAJ,WAAAtK,KAAA+hB,WAAA,YAAA,QAEArX,EAAAG,aAAA,OAAA,QAAA,EAEA7K,KAAAmiB,QAAA,EAEAzX,EAAAG,aAAA,aAAA7K,KAAA+hB,WAAA,WAAA,MAAA,EAGA/hB,KAAAoiB,UAAA,GACA1X,EAAAtG,YAAA8d,CAAA,EAEAliB,KAAAyK,OAAA7I,GAAA,SAAA5B,KAAAqiB,OAAAjE,KAAApe,IAAA,CAAA,EACAA,KAAA4B,GAAA,cAAA5B,KAAAyK,OAAAuM,mBAAAoH,KAAApe,KAAAyK,MAAA,CAAA,CACA,EAEAoX,EAAAziB,UAAAqS,SAAA,WACAzR,KAAA4Y,eAAA5Y,KAAA0K,OAAA,EACA1K,KAAA0K,QAAAxB,iBAAA,QAAAlJ,IAAA,EAEAA,KAAAyK,OAAAC,QAAAtG,YAAApE,KAAA0K,OAAA,CACA,EAEAmX,EAAAziB,UAAAiY,WAAA,WAEArX,KAAAyK,OAAAC,QAAAnG,YAAAvE,KAAA0K,OAAA,EAEA1K,KAAA8Y,iBAAA9Y,KAAA0K,OAAA,EACA1K,KAAA0K,QAAA2N,oBAAA,QAAArY,IAAA,CACA,EAEA6hB,EAAAziB,UAAAgjB,UAAA,WACA,IAAAF,EAAAve,SAAA2e,gBAAAV,EAAA,KAAA,EAGAW,GAFAL,EAAArX,aAAA,QAAA,sBAAA,EACAqX,EAAArX,aAAA,UAAA,aAAA,EACAlH,SAAA2e,gBAAAV,EAAA,MAAA,GACAY,EAcA,UAAA,OAFAC,EAZAziB,KAAAyK,OAAAxK,QAAAyiB,YAkBA,KAAAD,EAAAE,GACA,SAAAF,EAAAG,GAAA,KAAAH,EAAAI,GAAA,IACA,MAAAJ,EAAAK,GAAA,KAAAL,EAAAM,GAAA,IACA,MAAAN,EAAAO,GACA,UAAAP,EAAAK,GAAA,KAAA,GAAAL,EAAAM,IACA,MAAAN,EAAAG,GAAA,KAAA,GAAAH,EAAAI,IACA,KATAJ,EAPA,OAPAF,EAAA1X,aAAA,IAAA2X,CAAA,EACAD,EAAA1X,aAAA,QAAA,OAAA,EAEA7K,KAAAiiB,QACAM,EAAA1X,aAAA,YAAA,kCAAA,EAEAqX,EAAA9d,YAAAme,CAAA,EACAL,CACA,EAkBAL,EAAAziB,UAAAyI,YAAAZ,EAAAY,YAEAga,EAAAziB,UAAAkf,QAAA,WACA,IAIApd,EAJAlB,KAAA8hB,YAGA9hB,KAAAyK,OAAAsM,SAAA,EACA7V,EAAAlB,KAAA+hB,WAAA,WAAA,OACA/hB,KAAAyK,OAAAvJ,GAAA,EACA,EAIA2gB,EAAAziB,UAAA6jB,OAAA,WACAjjB,KAAA8hB,YAGA9hB,KAAA0K,QAAAwY,SAAA,CAAA,EACAljB,KAAA8hB,UAAA,CAAA,EACA,EAEAD,EAAAziB,UAAA+iB,QAAA,WACAniB,KAAA8hB,YAGA9hB,KAAA0K,QAAAwY,SAAA,CAAA,EACAljB,KAAA8hB,UAAA,CAAA,EACA,EAEAD,EAAAziB,UAAAijB,OAAA,WAEA,IAAA3T,EAAA1O,KAAAyK,OAAAiE,OAEA1O,KAAAyK,OAAAxK,QAAA4N,YAAA,EAAAa,EAAAlM,OACAxC,KAAAijB,OAAA,GAGAE,EAAAzU,EAAAlM,OAAAkM,EAAAlM,OAAA,EAAA,EACA4gB,EAAApjB,KAAA+hB,WAAA,EAAAoB,EAEAnjB,KADAA,KAAAyK,OAAA0E,eAAAiU,EAAA,UAAA,UACA,EACA,EAEAvB,EAAAziB,UAAA4L,QAAA,WACAhL,KAAAqX,WAAA,EACArX,KAAA6C,OAAA,CACA,EAIAoE,EAAA/G,OAAAqK,EAAAmG,SAAA,CACA2S,gBAAA,CAAA,EACAX,WAAA,CACAC,GAAA,GACAC,GAAA,GAAAC,GAAA,GACAC,GAAA,GAAAC,GAAA,GACAC,GAAA,EACA,CACA,CAAA,EAEAzY,EAAA2G,cAAA/O,KAAA,wBAAA,EACAR,EAAA4I,EAAAnL,UA6BA,OA3BAuC,EAAA2hB,uBAAA,WACAtjB,KAAAC,QAAAojB,kBAIArjB,KAAAujB,WAAA,IAAA1B,EAAA,CAAA,EAAA7hB,IAAA,EACAA,KAAAwjB,WAAA,IAAA3B,EAAA,EAAA7hB,IAAA,EAEAA,KAAA4B,GAAA,WAAA5B,KAAAyjB,uBAAA,EACA,EAEA9hB,EAAA8hB,wBAAA,WACAzjB,KAAAujB,WAAA9R,SAAA,EACAzR,KAAAwjB,WAAA/R,SAAA,EACAzR,KAAA4B,GAAA,aAAA5B,KAAA0jB,yBAAA,CACA,EAEA/hB,EAAA+hB,0BAAA,WACA1jB,KAAAujB,WAAAlM,WAAA,EACArX,KAAAwjB,WAAAnM,WAAA,EACArX,KAAAuC,IAAA,aAAAvC,KAAA0jB,yBAAA,CACA,EAIAnZ,EAAAsX,eAAAA,EAEAtX,CAEA,CAAA,EAGA,SAAA/L,EAAAC,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,wBAAA,CACA,aACA,wBACA,wBACA,SAAA6L,EAAAkO,EAAAxR,GACA,OAAAxI,EAAAD,EAAA+L,EAAAkO,EAAAxR,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAApI,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,YAAA,EACAA,QAAA,YAAA,EACAA,QAAA,gBAAA,CAAA,EAIAP,EACAD,EACAA,EAAA+L,SACA/L,EAAAia,WACAja,EAAAwI,YAAA,CAIA,EAAAxI,OAAA,SAAAA,EAAA+L,EAAAkO,EAAAxR,GAMA,SAAA0c,EAAAlZ,GACAzK,KAAAyK,OAAAA,EACAzK,KAAA2Q,QAAA,CACA,EAEAgT,EAAAvkB,UAAAsZ,OAAA/N,OAAA8N,EAAArZ,SAAA,GAEAuR,QAAA,WAEA3Q,KAAA4jB,OAAAjgB,SAAAC,cAAA,IAAA,EACA5D,KAAA4jB,OAAAtZ,UAAA,qBAEAtK,KAAA6jB,KAAA,GAEA7jB,KAAA8jB,YAAA9jB,KAAA+jB,QAAA3F,KAAApe,IAAA,EACAA,KAAA4B,GAAA,cAAA5B,KAAAyK,OAAAuM,mBAAAoH,KAAApe,KAAAyK,MAAA,CAAA,CACA,EAEAkZ,EAAAvkB,UAAAqS,SAAA,WACAzR,KAAAgkB,QAAA,EACAhkB,KAAA4jB,OAAA1a,iBAAA,QAAAlJ,KAAA8jB,WAAA,EACA9jB,KAAA4Y,eAAA5Y,KAAA4jB,MAAA,EAEA5jB,KAAAyK,OAAAC,QAAAtG,YAAApE,KAAA4jB,MAAA,CACA,EAEAD,EAAAvkB,UAAAiY,WAAA,WACArX,KAAA4jB,OAAAvL,oBAAA,QAAArY,KAAA8jB,WAAA,EACA9jB,KAAA8Y,iBAAA9Y,KAAA4jB,MAAA,EAEA5jB,KAAAyK,OAAAC,QAAAnG,YAAAvE,KAAA4jB,MAAA,CACA,EAEAD,EAAAvkB,UAAA4kB,QAAA,WAEA,IAAAxO,EAAAxV,KAAAyK,OAAAiE,OAAAlM,OAAAxC,KAAA6jB,KAAArhB,OACA,EAAAgT,EACAxV,KAAAikB,QAAAzO,CAAA,EACAA,EAAA,GACAxV,KAAAkkB,WAAA,CAAA1O,CAAA,CAEA,EAEAmO,EAAAvkB,UAAA6kB,QAAA,SAAAE,GAMA,IALA,IAAAC,EAAAzgB,SAAA0gB,uBAAA,EACAC,EAAA,GACA9hB,EAAAxC,KAAA6jB,KAAArhB,OACAiK,EAAAjK,EAAA2hB,EAEAtjB,EAAA2B,EAAA3B,EAAA4L,EAAA5L,CAAA,GAAA,CACA,IAAA0jB,EAAA5gB,SAAAC,cAAA,IAAA,EACA2gB,EAAAja,UAAA,MACAia,EAAA1Z,aAAA,aAAA,aAAAhK,EAAA,EAAA,EACAujB,EAAAhgB,YAAAmgB,CAAA,EACAD,EAAAniB,KAAAoiB,CAAA,CACA,CAEAvkB,KAAA4jB,OAAAxf,YAAAggB,CAAA,EACApkB,KAAA6jB,KAAA7jB,KAAA6jB,KAAA7Z,OAAAsa,CAAA,CACA,EAEAX,EAAAvkB,UAAA8kB,WAAA,SAAAC,GAEAnkB,KAAA6jB,KAAAnhB,OAAA1C,KAAA6jB,KAAArhB,OAAA2hB,EAAAA,CAAA,EAEAhc,QAAA,SAAAoc,GACAvkB,KAAA4jB,OAAArf,YAAAggB,CAAA,CACA,EAAAvkB,IAAA,CACA,EAEA2jB,EAAAvkB,UAAAolB,eAAA,WAEAxkB,KAAAykB,cACAzkB,KAAAykB,YAAAna,UAAA,MACAtK,KAAAykB,YAAA1Y,gBAAA,cAAA,GAGA/L,KAAA6jB,KAAArhB,SAGAxC,KAAAykB,YAAAzkB,KAAA6jB,KAAA7jB,KAAAyK,OAAA0E,eACAnP,KAAAykB,YAAAna,UAAA,kBACAtK,KAAAykB,YAAA5Z,aAAA,eAAA,MAAA,EACA,EAEA8Y,EAAAvkB,UAAAslB,MACAf,EAAAvkB,UAAA2kB,QAAA,SAAAjc,GACA,IAAA2D,EAAA3D,EAAA2D,OAEA,MAAAA,EAAA0R,WAIAnd,KAAAyK,OAAAsM,SAAA,EACAtU,EAAAzC,KAAA6jB,KAAA3hB,QAAAuJ,CAAA,EACAzL,KAAAyK,OAAAmB,OAAAnJ,CAAA,EACA,EAEAkhB,EAAAvkB,UAAA4L,QAAA,WACAhL,KAAAqX,WAAA,EACArX,KAAA6C,OAAA,CACA,EAEA0H,EAAAoZ,SAAAA,EAIA1c,EAAA/G,OAAAqK,EAAAmG,SAAA,CACAiU,SAAA,CAAA,CACA,CAAA,EAEApa,EAAA2G,cAAA/O,KAAA,iBAAA,EAEAR,EAAA4I,EAAAnL,UAmCA,OAjCAuC,EAAAijB,gBAAA,WACA5kB,KAAAC,QAAA0kB,WAGA3kB,KAAA2kB,SAAA,IAAAhB,EAAA3jB,IAAA,EAEAA,KAAA4B,GAAA,WAAA5B,KAAA6kB,gBAAA,EACA7kB,KAAA4B,GAAA,SAAA5B,KAAA8kB,sBAAA,EACA9kB,KAAA4B,GAAA,aAAA5B,KAAA+kB,cAAA,EACA/kB,KAAA4B,GAAA,SAAA5B,KAAA+kB,cAAA,EACA/kB,KAAA4B,GAAA,aAAA5B,KAAAglB,kBAAA,EACA,EAEArjB,EAAAkjB,iBAAA,WACA7kB,KAAA2kB,SAAAlT,SAAA,CACA,EAEA9P,EAAAmjB,uBAAA,WACA9kB,KAAA2kB,SAAAH,eAAA,CACA,EAEA7iB,EAAAojB,eAAA,WACA/kB,KAAA2kB,SAAAX,QAAA,CACA,EAEAriB,EAAAqjB,mBAAA,WACAhlB,KAAA2kB,SAAAtN,WAAA,CACA,EAIA9M,EAAAoZ,SAAAA,EAEApZ,CAEA,CAAA,EAGA,SAAA/L,EAAAC,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,qBAAA,CACA,wBACA,uBACA,cAEAD,CACA,EACA,WAAA,aAAA,OAAAI,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAO,QAAA,YAAA,EACAA,QAAA,gBAAA,EACAA,QAAA,YAAA,CAAA,EAIAP,EACAD,EAAAkD,UACAlD,EAAAwI,aACAxI,EAAA+L,QAAA,CAIA,EAAA/L,OAAA,SAAAkD,EAAAuF,EAAAsD,GAMA,SAAA0a,EAAAxa,GACAzK,KAAAyK,OAAAA,EACAzK,KAAAklB,MAAA,UAEAllB,KAAAmlB,mBAAAnlB,KAAAolB,iBAAAhH,KAAApe,IAAA,EACAA,KAAAqlB,iBAAArlB,KAAAslB,eAAAlH,KAAApe,IAAA,CACA,EAEAilB,EAAA7lB,UAAAsZ,OAAA/N,OAAAjJ,EAAAtC,SAAA,GAGAmmB,KAAA,WACA,WAAAvlB,KAAAklB,QAIAvhB,SAAA6hB,OAEA7hB,SAAAuF,iBAAA,mBAAAlJ,KAAAqlB,gBAAA,GAIArlB,KAAAklB,MAAA,UAEAvhB,SAAAuF,iBAAA,mBAAAlJ,KAAAmlB,kBAAA,EAEAnlB,KAAAylB,KAAA,GACA,EAEAR,EAAA7lB,UAAAqmB,KAAA,WAEA,IAMAC,EACA7c,EAPA,WAAA7I,KAAAklB,QAMAQ,EAAA,UAAA,OAAAA,EAFA1lB,KAAAyK,OAAAxK,QAAA0lB,UAEAD,EAAA,KACA7c,EAAA7I,MAEA4lB,MAAA,EACA5lB,KAAA2I,QAAAG,WAAA,WACAD,EAAA4B,OAAAqL,KAAA,CAAA,CAAA,EACAjN,EAAA4c,KAAA,CACA,EAAAC,CAAA,EACA,EAEAT,EAAA7lB,UAAAymB,KAAA,WACA7lB,KAAAklB,MAAA,UACAllB,KAAA4lB,MAAA,EAEAjiB,SAAA0U,oBAAA,mBAAArY,KAAAmlB,kBAAA,CACA,EAEAF,EAAA7lB,UAAAwmB,MAAA,WACAhd,aAAA5I,KAAA2I,OAAA,CACA,EAEAsc,EAAA7lB,UAAA0mB,MAAA,WACA,WAAA9lB,KAAAklB,QACAllB,KAAAklB,MAAA,SACAllB,KAAA4lB,MAAA,EAEA,EAEAX,EAAA7lB,UAAA2mB,QAAA,WAEA,UAAA/lB,KAAAklB,OACAllB,KAAAulB,KAAA,CAEA,EAGAN,EAAA7lB,UAAAgmB,iBAAA,WAEAplB,KADA2D,SAAA6hB,OACA,QAAA,WAAA,CACA,EAEAP,EAAA7lB,UAAAkmB,eAAA,WACAtlB,KAAAulB,KAAA,EACA5hB,SAAA0U,oBAAA,mBAAArY,KAAAqlB,gBAAA,CACA,EAIApe,EAAA/G,OAAAqK,EAAAmG,SAAA,CACAsV,qBAAA,CAAA,CACA,CAAA,EAEAzb,EAAA2G,cAAA/O,KAAA,eAAA,EACAR,EAAA4I,EAAAnL,UA+DA,OA7DAuC,EAAAskB,cAAA,WACAjmB,KAAAkmB,OAAA,IAAAjB,EAAAjlB,IAAA,EAEAA,KAAA4B,GAAA,WAAA5B,KAAAmmB,cAAA,EACAnmB,KAAA4B,GAAA,WAAA5B,KAAAomB,UAAA,EACApmB,KAAA4B,GAAA,cAAA5B,KAAAomB,UAAA,EACApmB,KAAA4B,GAAA,aAAA5B,KAAAqmB,gBAAA,CACA,EAEA1kB,EAAAwkB,eAAA,WACAnmB,KAAAC,QAAA0lB,WAGA3lB,KAAAkmB,OAAAX,KAAA,EACAvlB,KAAA0K,QAAAxB,iBAAA,aAAAlJ,IAAA,EACA,EAIA2B,EAAA2kB,WAAA,WACAtmB,KAAAkmB,OAAAX,KAAA,CACA,EAEA5jB,EAAAykB,WAAA,WACApmB,KAAAkmB,OAAAL,KAAA,CACA,EAEAlkB,EAAA4kB,YAAA,WACAvmB,KAAAkmB,OAAAJ,MAAA,CACA,EAEAnkB,EAAA6kB,cAAA,WACAxmB,KAAAkmB,OAAAH,QAAA,CACA,EAEApkB,EAAA0kB,iBAAA,WACArmB,KAAAkmB,OAAAL,KAAA,EACA7lB,KAAA0K,QAAA2N,oBAAA,aAAArY,IAAA,CACA,EAKA2B,EAAA8kB,aAAA,WACAzmB,KAAAC,QAAA+lB,uBAGAhmB,KAAAkmB,OAAAJ,MAAA,EACA9lB,KAAA0K,QAAAxB,iBAAA,aAAAlJ,IAAA,EACA,EAGA2B,EAAA+kB,aAAA,WACA1mB,KAAAkmB,OAAAH,QAAA,EACA/lB,KAAA0K,QAAA2N,oBAAA,aAAArY,IAAA,CACA,EAIAuK,EAAA0a,OAAAA,EAEA1a,CAEA,CAAA,EAGA,SAAA/L,EAAAC,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,8BAAA,CACA,aACA,wBACA,SAAA6L,EAAAtD,GACA,OAAAxI,EAAAD,EAAA+L,EAAAtD,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAApI,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,YAAA,EACAA,QAAA,gBAAA,CAAA,EAIAP,EACAD,EACAA,EAAA+L,SACA/L,EAAAwI,YAAA,CAIA,EAAAxI,OAAA,SAAAA,EAAA+L,EAAAtD,GAeA,IAAAtF,EAAA4I,EAAAnL,UAmHA,OA5GAuC,EAAAglB,OAAA,SAAA1e,EAAAxF,GACA,IAIAmQ,EArBAwR,EA2BAwC,EAIAC,EAYAC,EA1BAza,EAAArM,KAAAkS,WAAAjK,CAAA,EACAoE,GAAAA,EAAA7J,SAGAoQ,EAAA5S,KAAAqM,MAAA7J,OAEAC,EAAApB,KAAAA,IAAAoB,EAAAmQ,EAAAnQ,EAxBA4J,EA0BAA,EAzBA+X,EAAAzgB,SAAA0gB,uBAAA,EACAhY,EAAAlE,QAAA,SAAAoE,GACA6X,EAAAhgB,YAAAmI,EAAA7B,OAAA,CACA,CAAA,EAsBA0Z,EArBAA,GAuBAwC,EAAAnkB,GAAAmQ,GAEA5S,KAAAsO,OAAAlK,YAAAggB,CAAA,GAEAyC,EAAA7mB,KAAAqM,MAAA5J,GAAAiI,QACA1K,KAAAsO,OAAAyY,aAAA3C,EAAAyC,CAAA,GAGA,IAAApkB,EAEAzC,KAAAqM,MAAAA,EAAArC,OAAAhK,KAAAqM,KAAA,EACAua,EAEA5mB,KAAAqM,MAAArM,KAAAqM,MAAArC,OAAAqC,CAAA,GAGAya,EAAA9mB,KAAAqM,MAAA3J,OAAAD,EAAAmQ,EAAAnQ,CAAA,EACAzC,KAAAqM,MAAArM,KAAAqM,MAAArC,OAAAqC,CAAA,EAAArC,OAAA8c,CAAA,GAGA9mB,KAAAuS,WAAAlG,CAAA,EACArM,KAAAgnB,WAAAvkB,EAAA,CAAA,CAAA,EACA,EAEAd,EAAAslB,OAAA,SAAAhf,GACAjI,KAAA2mB,OAAA1e,EAAAjI,KAAAqM,MAAA7J,MAAA,CACA,EAEAb,EAAAulB,QAAA,SAAAjf,GACAjI,KAAA2mB,OAAA1e,EAAA,CAAA,CACA,EAMAtG,EAAAqK,OAAA,SAAA/D,GACA,IAKAkf,EALA9a,EAAArM,KAAAyW,SAAAxO,CAAA,EACAoE,GAAAA,EAAA7J,SAIA2kB,EAAAnnB,KAAAqM,MAAA7J,OAAA,EAEA6J,EAAAlE,QAAA,SAAAoE,GACAA,EAAAP,OAAA,EACA,IAAAvJ,EAAAzC,KAAAqM,MAAAnK,QAAAqK,CAAA,EACA4a,EAAA9iB,KAAAuQ,IAAAnS,EAAA0kB,CAAA,EACAlgB,EAAAO,WAAAxH,KAAAqM,MAAAE,CAAA,CACA,EAAAvM,IAAA,EAEAA,KAAAgnB,WAAAG,EAAA,CAAA,CAAA,EACA,EAMAxlB,EAAAylB,eAAA,SAAAtmB,GACA,IAAAyL,EAAAvM,KAAAwW,QAAA1V,CAAA,EACAyL,IAGAA,EAAAzJ,QAAA,EAEAL,EAAAzC,KAAAqM,MAAAnK,QAAAqK,CAAA,EACAvM,KAAAgnB,WAAAvkB,CAAA,EACA,EAMAd,EAAAqlB,WAAA,SAAAK,EAAAC,GACA,IAAAC,EAAAvnB,KAAAmW,gBAMA5J,GALAvM,KAAAwS,eAAA6U,CAAA,EACArnB,KAAAoS,mBAAA,EACApS,KAAAiR,eAAA,EAGAjR,KAAAwW,QAAA+Q,CAAA,GACAhb,IACAvM,KAAAmP,cAAAnP,KAAAuW,kBAAAhK,CAAA,GAEAvM,KAAAmP,cAAA9K,KAAAuQ,IAAA5U,KAAA0O,OAAAlM,OAAA,EAAAxC,KAAAmP,aAAA,EAEAnP,KAAA2C,UAAA,aAAA,CAAA0kB,EAAA,EAEArnB,KAAA4L,OAAA5L,KAAAmP,aAAA,EAEAmY,GACAtnB,KAAA0T,yBAAA,CAEA,EAIAnJ,CAEA,CAAA,EAGA,SAAA/L,EAAAC,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,uBAAA,CACA,aACA,wBACA,SAAA6L,EAAAtD,GACA,OAAAxI,EAAAD,EAAA+L,EAAAtD,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAApI,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,YAAA,EACAA,QAAA,gBAAA,CAAA,EAIAP,EACAD,EACAA,EAAA+L,SACA/L,EAAAwI,YAAA,CAIA,EAAAxI,OAAA,SAAAA,EAAA+L,EAAAtD,GAGAsD,EAAA2G,cAAA/O,KAAA,iBAAA,EACA,IAAAR,EAAA4I,EAAAnL,UAgDA,SAAAooB,EAAAC,EAAAC,GACA1nB,KAAAynB,IAAAA,EACAznB,KAAA0nB,SAAAA,EACA1nB,KAAA2nB,KAAA,CACA,CA+CA,OAjGAhmB,EAAAimB,gBAAA,WACA5nB,KAAA4B,GAAA,SAAA5B,KAAA6nB,QAAA,CACA,EAEAlmB,EAAAkmB,SAAA,WACA,IAQAC,EARAD,EAAA7nB,KAAAC,QAAA4nB,SACAA,IAKAhR,EAAA7W,KAAA2W,wBADA,UAAA,OAAAkR,EAAAA,EAAA,CACA,EAEAC,EAAA,GACAjR,EAAA1O,QAAA,SAAAkK,GACA0V,EASA,SAAA1V,GAEA,GAAA,OAAAA,EAAA8K,SAAA,CACA,IAAA6K,EAAA3V,EAAAlI,aAAA,wBAAA,EACA8d,EAAA5V,EAAAlI,aAAA,4BAAA,EACA+d,EAAA7V,EAAAlI,aAAA,+BAAA,EACA,GAAA6d,GAAAC,GAAAC,EACA,MAAA,CAAA7V,EAEA,CAIA8V,EAAA9V,EAAA/J,iBAFA,kGAEA,EACA,OAAArB,EAAAI,UAAA8gB,CAAA,CACA,EAxBA9V,CAAA,EACAyV,EAAAA,EAAA9d,OAAA+d,CAAA,CACA,CAAA,EAEAD,EAAA3f,QAAA,SAAAsf,GACA,IAAAD,EAAAC,EAAAznB,IAAA,CACA,EAAAA,IAAA,EACA,EA8BAwnB,EAAApoB,UAAAyI,YAAAZ,EAAAY,YAEA2f,EAAApoB,UAAAuoB,KAAA,WACA3nB,KAAAynB,IAAAve,iBAAA,OAAAlJ,IAAA,EACAA,KAAAynB,IAAAve,iBAAA,QAAAlJ,IAAA,EAEA,IAAAooB,EAAApoB,KAAAynB,IAAAtd,aAAA,wBAAA,GACAnK,KAAAynB,IAAAtd,aAAA,4BAAA,EACAke,EAAAroB,KAAAynB,IAAAtd,aAAA,+BAAA,EAEAnK,KAAAynB,IAAAW,IAAAA,EACAC,GACAroB,KAAAynB,IAAA5c,aAAA,SAAAwd,CAAA,EAGAroB,KAAAynB,IAAA1b,gBAAA,wBAAA,EACA/L,KAAAynB,IAAA1b,gBAAA,4BAAA,EACA/L,KAAAynB,IAAA1b,gBAAA,+BAAA,CACA,EAEAyb,EAAApoB,UAAAkpB,OAAA,SAAAxgB,GACA9H,KAAAuoB,SAAAzgB,EAAA,qBAAA,CACA,EAEA0f,EAAApoB,UAAAopB,QAAA,SAAA1gB,GACA9H,KAAAuoB,SAAAzgB,EAAA,oBAAA,CACA,EAEA0f,EAAApoB,UAAAmpB,SAAA,SAAAzgB,EAAAwC,GAEAtK,KAAAynB,IAAApP,oBAAA,OAAArY,IAAA,EACAA,KAAAynB,IAAApP,oBAAA,QAAArY,IAAA,EAEA,IAAAuM,EAAAvM,KAAA0nB,SAAAhR,cAAA1W,KAAAynB,GAAA,EACApV,EAAA9F,GAAAA,EAAA7B,QACA1K,KAAA0nB,SAAAN,eAAA/U,CAAA,EAEArS,KAAAynB,IAAA5b,UAAAC,IAAAxB,CAAA,EACAtK,KAAA0nB,SAAA7Y,cAAA,WAAA/G,EAAAuK,CAAA,CACA,EAIA9H,EAAAid,WAAAA,EAEAjd,CAEA,CAAA,EAaA,SAAA9L,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,oBAAA,CACA,aACA,SACA,qBACA,cACA,WACA,oBACA,cACAD,CAAA,EACA,WAAA,aAAA,OAAAI,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,UAEAF,OAAAE,QAAAN,EACAO,QAAA,YAAA,EACAA,QAAA,QAAA,EACAA,QAAA,oBAAA,EACAA,QAAA,aAAA,EACAA,QAAA,UAAA,EACAA,QAAA,mBAAA,EACAA,QAAA,YAAA,CAAA,EAIA,GAAAR,OAAA,SAAA+L,GAEA,OAAAA,CACA,EAAA,EASA,SAAA/L,EAAAC,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,iCAAA,CACA,oBACA,wBACAD,CAAA,EACA,WAAA,aAAA,OAAAI,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAO,QAAA,UAAA,EACAA,QAAA,gBAAA,CAAA,EAIAR,EAAA+L,SAAA9L,EACAD,EAAA+L,SACA/L,EAAAwI,YAAA,CAIA,EAAAxI,OAAA,SAAA+L,EAAAtD,GAQAsD,EAAA2G,cAAA/O,KAAA,iBAAA,EAEA,IAAAR,EAAA4I,EAAAnL,UA2GA,OAzGAuC,EAAA8mB,gBAAA,WACAzoB,KAAA4B,GAAA,WAAA5B,KAAA0oB,gBAAA,EACA1oB,KAAA4B,GAAA,aAAA5B,KAAA2oB,kBAAA,EACA3oB,KAAA4B,GAAA,UAAA5B,KAAA4oB,eAAA,EAEA,IAKA/f,EALAggB,EAAA7oB,KAAAC,QAAA6oB,SACAD,IAIAhgB,EAAA7I,KACA8I,WAAA,WACAD,EAAAkgB,gBAAAF,CAAA,CACA,CAAA,EACA,EAEAlnB,EAAAonB,gBAAA,SAAAjoB,GACAA,EAAAmG,EAAAW,gBAAA9G,CAAA,EACA,IAQA+H,EARAmgB,EAAAze,EAAAtJ,KAAAH,CAAA,EAEAkoB,GAAAA,GAAAhpB,OAIAA,KAAAipB,aAAAD,GAEAngB,EAAA7I,MACAkpB,qBAAA,WACArgB,EAAAsgB,mBAAA,CACA,EACAH,EAAApnB,GAAA,SAAA5B,KAAAkpB,oBAAA,EAEAlpB,KAAA4B,GAAA,cAAA5B,KAAAopB,gBAAA,EAEAppB,KAAAmpB,mBAAA,CAAA,CAAA,EACA,EAEAxnB,EAAAwnB,mBAAA,SAAAhU,GACA,IAKAkU,EACAlG,EAkBAmG,EAxBAtpB,KAAAipB,eAIA/S,EAAAlW,KAAAipB,aAAAjT,cAAA,GACAqT,EAAArpB,KAAAipB,aAAA5c,MAAAnK,QAAAgU,CAAA,EACAiN,EAAAkG,EAAArpB,KAAAipB,aAAAjT,cAAAxT,OAAA,EACA+mB,EAAAllB,KAAAid,OAiBAgI,EAhBAtpB,KAAAipB,aAAAvd,WADAyX,EAAAkG,GAkBAC,EAlBAD,EACA,EACArpB,KAAAsW,WAAAiT,EAAA,CAAA,EAAApU,CAAA,EAEAnV,KAAAwpB,0BAAA,EAEAD,GAAAvpB,KAAAqM,MAAA7J,SAIAwT,EAAAhW,KAAAqM,MAAAhN,MAAAgqB,EAAA,EAAAlG,CAAA,EACAnjB,KAAAypB,oBAAAzT,EAAA/I,IAAA,SAAAV,GACA,OAAAA,EAAA7B,OACA,CAAA,EACA1K,KAAA0pB,uBAAA,KAAA,GACA,EAMA/nB,EAAA+nB,uBAAA,SAAAxoB,GACAlB,KAAAypB,oBAAAthB,QAAA,SAAAwhB,GACAA,EAAA9d,UAAA3K,GAAA,iBAAA,CACA,CAAA,CACA,EAEAS,EAAA+mB,iBAAA,WACA1oB,KAAAmpB,mBAAA,CAAA,CAAA,CACA,EAEAxnB,EAAA6nB,0BAAA,WACAxpB,KAAAypB,sBAGAzpB,KAAA0pB,uBAAA,QAAA,EACA,OAAA1pB,KAAAypB,oBACA,EAEA9nB,EAAAynB,iBAAA,SAAAthB,EAAAgS,EAAA8P,EAAA1V,GACA,UAAA,OAAAA,GACAlU,KAAAipB,aAAA3S,WAAApC,CAAA,CAEA,EAEAvS,EAAAgnB,mBAAA,WACA3oB,KAAAwpB,0BAAA,CACA,EAEA7nB,EAAAinB,gBAAA,WACA5oB,KAAAipB,eAGAjpB,KAAAipB,aAAA1mB,IAAA,SAAAvC,KAAAkpB,oBAAA,EACAlpB,KAAAuC,IAAA,cAAAvC,KAAAopB,gBAAA,EACA,OAAAppB,KAAAipB,aACA,EAIA1e,CAEA,CAAA,EAQA,SAAA/L,EAAAC,GAKA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,4BAAA,CACA,yBACA,SAAAgD,GACA,OAAAjD,EAAAD,EAAAkD,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAA7C,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,YAAA,CAAA,EAIAR,EAAAqrB,aAAAprB,EACAD,EACAA,EAAAkD,SAAA,CAIA,EAAA,aAAA,OAAAlD,OAAAA,OAAA,KAAA,EAIA,SAAAA,EAAAkD,GAIA,IAAA9B,EAAApB,EAAAI,OACAU,EAAAd,EAAAc,QAKA,SAAAY,EAAAgH,EAAAC,GACA,IAAA,IAAAC,KAAAD,EACAD,EAAAE,GAAAD,EAAAC,GAEA,OAAAF,CACA,CAEA,IAAAhI,EAAAC,MAAAC,UAAAC,MA0BA,SAAAyqB,EAAAhpB,EAAAb,EAAA8pB,GAEA,GAAA,EAAA/pB,gBAAA8pB,GACA,OAAA,IAAAA,EAAAhpB,EAAAb,EAAA8pB,CAAA,EAGA,IA7BAziB,EA6BA0iB,EAAAlpB,GAEAkpB,EADA,UAAA,OAAAlpB,EACA6C,SAAA2E,iBAAAxH,CAAA,EAGAkpB,IAKAhqB,KAAAiqB,UAvCA3iB,EAuCA0iB,EAtCA7qB,MAAAoI,QAAAD,CAAA,EAEAA,EAGA,UAAAxI,QAAAwI,CAAA,GAAA,UAAA,OAAAA,EAAA9E,OAGAtD,EAAAwB,KAAA4G,CAAA,EAIA,CAAAA,IA2BAtH,KAAAC,QAAAC,EAAA,GAAAF,KAAAC,OAAA,EAEA,YAAA,OAAAA,EACA8pB,EAAA9pB,EAEAC,EAAAF,KAAAC,QAAAA,CAAA,EAGA8pB,GACA/pB,KAAA4B,GAAA,SAAAmoB,CAAA,EAGA/pB,KAAAkqB,UAAA,EAEAtqB,IAEAI,KAAAmqB,WAAA,IAAAvqB,EAAAwqB,UAIAthB,WAAA9I,KAAAqqB,MAAAjM,KAAApe,IAAA,CAAA,GAzBAV,EAAAG,MAAA,iCAAAuqB,GAAAlpB,EAAA,CA0BA,EAEAgpB,EAAA1qB,UAAAsZ,OAAA/N,OAAAjJ,EAAAtC,SAAA,GAEAa,QAAA,GAEA6pB,EAAA1qB,UAAA8qB,UAAA,WACAlqB,KAAAsqB,OAAA,GAGAtqB,KAAAiqB,SAAA9hB,QAAAnI,KAAAuqB,iBAAAvqB,IAAA,CACA,EAKA8pB,EAAA1qB,UAAAmrB,iBAAA,SAAAzpB,GAEA,OAAAA,EAAAqc,UACAnd,KAAAwqB,SAAA1pB,CAAA,EAGA,CAAA,IAAAd,KAAAC,QAAAwqB,YACAzqB,KAAA0qB,2BAAA5pB,CAAA,EAKA,IAAA2D,EAAA3D,EAAA2D,SACA,GAAAA,GAAAkmB,EAAAlmB,GAAA,CAKA,IAFA,IAAAmmB,EAAA9pB,EAAAwH,iBAAA,KAAA,EAEAzH,EAAA,EAAAA,EAAA+pB,EAAApoB,OAAA3B,CAAA,GAAA,CACA,IAAA4mB,EAAAmD,EAAA/pB,GACAb,KAAAwqB,SAAA/C,CAAA,CACA,CAGA,GAAA,UAAA,OAAAznB,KAAAC,QAAAwqB,WAEA,IADA,IAAA7Y,EAAA9Q,EAAAwH,iBAAAtI,KAAAC,QAAAwqB,UAAA,EACA5pB,EAAA,EAAAA,EAAA+Q,EAAApP,OAAA3B,CAAA,GAAA,CACA,IAAAgqB,EAAAjZ,EAAA/Q,GACAb,KAAA0qB,2BAAAG,CAAA,CACA,CAdA,CAgBA,EAEA,IAAAF,EAAA,CACAG,EAAA,CAAA,EACAC,EAAA,CAAA,EACAC,GAAA,CAAA,CACA,EAuFA,SAAAC,EAAAxD,GACAznB,KAAAynB,IAAAA,CACA,CAgEA,SAAAyD,EAAAC,EAAAzgB,GACA1K,KAAAmrB,IAAAA,EACAnrB,KAAA0K,QAAAA,EACA1K,KAAAynB,IAAA,IAAA2D,KACA,CA+CA,OA1MAtB,EAAA1qB,UAAAsrB,2BAAA,SAAA5pB,GACA,IAAAwC,EAAAC,iBAAAzC,CAAA,EACA,GAAAwC,EAOA,IAFA,IAAA+nB,EAAA,0BACAxkB,EAAAwkB,EAAAC,KAAAhoB,EAAAioB,eAAA,EACA,OAAA1kB,GAAA,CACA,IAAAskB,EAAAtkB,GAAAA,EAAA,GACAskB,GACAnrB,KAAAwrB,cAAAL,EAAArqB,CAAA,EAEA+F,EAAAwkB,EAAAC,KAAAhoB,EAAAioB,eAAA,CACA,CACA,EAKAzB,EAAA1qB,UAAAorB,SAAA,SAAA/C,GACAgE,EAAA,IAAAR,EAAAxD,CAAA,EACAznB,KAAAsqB,OAAAnoB,KAAAspB,CAAA,CACA,EAEA3B,EAAA1qB,UAAAosB,cAAA,SAAAL,EAAArqB,GACA2pB,EAAA,IAAAS,EAAAC,EAAArqB,CAAA,EACAd,KAAAsqB,OAAAnoB,KAAAsoB,CAAA,CACA,EAEAX,EAAA1qB,UAAAirB,MAAA,WACA,IAAAxhB,EAAA7I,KASA,SAAA0rB,EAAA1O,EAAAlc,EAAAtB,GAEAsJ,WAAA,WACAD,EAAA2F,SAAAwO,EAAAlc,EAAAtB,CAAA,CACA,CAAA,CACA,CAbAQ,KAAA2rB,gBAAA,EACA3rB,KAAA4rB,aAAA,CAAA,EAEA5rB,KAAAsqB,OAAA9nB,OAYAxC,KAAAsqB,OAAAniB,QAAA,SAAAsjB,GACAA,EAAArpB,KAAA,WAAAspB,CAAA,EACAD,EAAApB,MAAA,CACA,CAAA,EAdArqB,KAAAuoB,SAAA,CAeA,EAEAuB,EAAA1qB,UAAAoP,SAAA,SAAAwO,EAAAlc,EAAAtB,GACAQ,KAAA2rB,eAAA,GACA3rB,KAAA4rB,aAAA5rB,KAAA4rB,cAAA,CAAA5O,EAAA6O,SAEA7rB,KAAA2C,UAAA,WAAA,CAAA3C,KAAAgd,EAAAlc,EAAA,EACAd,KAAAmqB,YAAAnqB,KAAAmqB,WAAA2B,QACA9rB,KAAAmqB,WAAA2B,OAAA9rB,KAAAgd,CAAA,EAGAhd,KAAA2rB,iBAAA3rB,KAAAsqB,OAAA9nB,QACAxC,KAAAuoB,SAAA,EAGAvoB,KAAAC,QAAA8rB,OAAAzsB,GACAA,EAAA0sB,IAAA,aAAAxsB,EAAAwd,EAAAlc,CAAA,CAEA,EAEAgpB,EAAA1qB,UAAAmpB,SAAA,WACA,IAAA1mB,EAAA7B,KAAA4rB,aAAA,OAAA,OACA5rB,KAAAisB,WAAA,CAAA,EACAjsB,KAAA2C,UAAAd,EAAA,CAAA7B,KAAA,EACAA,KAAA2C,UAAA,SAAA,CAAA3C,KAAA,EACAA,KAAAmqB,aACA+B,EAAAlsB,KAAA4rB,aAAA,SAAA,UACA5rB,KAAAmqB,WAAA+B,GAAAlsB,IAAA,EAEA,GAQAirB,EAAA7rB,UAAAsZ,OAAA/N,OAAAjJ,EAAAtC,SAAA,GAEAirB,MAAA,WAGArqB,KAAAmsB,mBAAA,EAGAnsB,KAAAosB,QAAA,IAAApsB,KAAAynB,IAAA4E,aAAA,cAAA,GAKArsB,KAAAssB,WAAA,IAAAlB,MACAprB,KAAAssB,WAAApjB,iBAAA,OAAAlJ,IAAA,EACAA,KAAAssB,WAAApjB,iBAAA,QAAAlJ,IAAA,EAEAA,KAAAynB,IAAAve,iBAAA,OAAAlJ,IAAA,EACAA,KAAAynB,IAAAve,iBAAA,QAAAlJ,IAAA,EACAA,KAAAssB,WAAAlE,IAAApoB,KAAAynB,IAAAW,IACA,EAEA6C,EAAA7rB,UAAA+sB,mBAAA,WAGA,OAAAnsB,KAAAynB,IAAAc,UAAAvoB,KAAAynB,IAAA4E,YACA,EAEApB,EAAA7rB,UAAAgtB,QAAA,SAAAP,EAAArsB,GACAQ,KAAA6rB,SAAAA,EACA7rB,KAAA2C,UAAA,WAAA,CAAA3C,KAAAA,KAAAynB,IAAAjoB,EAAA,CACA,EAKAyrB,EAAA7rB,UAAAyI,YAAA,SAAAC,GACA,IAAA5G,EAAA,KAAA4G,EAAAC,KACA/H,KAAAkB,IACAlB,KAAAkB,GAAA4G,CAAA,CAEA,EAEAmjB,EAAA7rB,UAAAkpB,OAAA,WACAtoB,KAAAosB,QAAA,CAAA,EAAA,QAAA,EACApsB,KAAAusB,aAAA,CACA,EAEAtB,EAAA7rB,UAAAopB,QAAA,WACAxoB,KAAAosB,QAAA,CAAA,EAAA,SAAA,EACApsB,KAAAusB,aAAA,CACA,EAEAtB,EAAA7rB,UAAAmtB,aAAA,WACAvsB,KAAAssB,WAAAjU,oBAAA,OAAArY,IAAA,EACAA,KAAAssB,WAAAjU,oBAAA,QAAArY,IAAA,EACAA,KAAAynB,IAAApP,oBAAA,OAAArY,IAAA,EACAA,KAAAynB,IAAApP,oBAAA,QAAArY,IAAA,CACA,GAWAkrB,EAAA9rB,UAAAsZ,OAAA/N,OAAAsgB,EAAA7rB,SAAA,GAEAirB,MAAA,WACArqB,KAAAynB,IAAAve,iBAAA,OAAAlJ,IAAA,EACAA,KAAAynB,IAAAve,iBAAA,QAAAlJ,IAAA,EACAA,KAAAynB,IAAAW,IAAApoB,KAAAmrB,IAEAnrB,KAAAmsB,mBAAA,IAEAnsB,KAAAosB,QAAA,IAAApsB,KAAAynB,IAAA4E,aAAA,cAAA,EACArsB,KAAAusB,aAAA,EAEA,EAEArB,EAAA9rB,UAAAmtB,aAAA,WACAvsB,KAAAynB,IAAApP,oBAAA,OAAArY,IAAA,EACAA,KAAAynB,IAAApP,oBAAA,QAAArY,IAAA,CACA,EAEAkrB,EAAA9rB,UAAAgtB,QAAA,SAAAP,EAAArsB,GACAQ,KAAA6rB,SAAAA,EACA7rB,KAAA2C,UAAA,WAAA,CAAA3C,KAAAA,KAAA0K,QAAAlL,EAAA,CACA,GAIAsqB,EAAA0C,iBAAA,SAAA5tB,IACAA,EAAAA,GAAAJ,EAAAI,WAKAgB,EAAAhB,GAEAuB,GAAA0pB,aAAA,SAAA5pB,EAAA+I,GAEA,OADA,IAAA8gB,EAAA9pB,KAAAC,EAAA+I,CAAA,EACAmhB,WAAAsC,QAAA7sB,EAAAI,IAAA,CAAA,CACA,EACA,GAEA,EAIA8pB,CAEA,CAAA,EASA,SAAAtrB,EAAAC,GAGA,YAAA,OAAAC,QAAAA,OAAAC,IAEAD,OAAA,CACA,oBACA,6BACA,SAAA6L,EAAAsf,GACA,OAAAprB,EAAAD,EAAA+L,EAAAsf,CAAA,CACA,CAAA,EACA,WAAA,aAAA,OAAAhrB,OAAA,YAAAC,QAAAD,MAAA,IAAAA,OAAAE,QAEAF,OAAAE,QAAAN,EACAD,EACAQ,QAAA,UAAA,EACAA,QAAA,cAAA,CAAA,EAIAR,EAAA+L,SAAA9L,EACAD,EACAA,EAAA+L,SACA/L,EAAAqrB,YAAA,CAIA,EAAArrB,OAAA,SAAAA,EAAA+L,EAAAsf,GAGAtf,EAAA2G,cAAA/O,KAAA,qBAAA,EAEA,IAAAR,EAAA4I,EAAAnL,UAqBA,OAnBAuC,EAAA+qB,oBAAA,WACA1sB,KAAA4B,GAAA,WAAA5B,KAAA6pB,YAAA,CACA,EAEAloB,EAAAkoB,aAAA,WACA,IAGAhhB,EAHA7I,KAAAC,QAAA4pB,cAWAA,GARAhhB,EAAA7I,MAQAsO,MAAA,EAAA1M,GAAA,WAPA,SAAAZ,EAAAgc,GACAzQ,EAAA1D,EAAA6N,cAAAsG,EAAAyK,GAAA,EACA5e,EAAAue,eAAA7a,GAAAA,EAAA7B,OAAA,EACA7B,EAAA5I,QAAAqgB,YACAzX,EAAA6K,yBAAA,CAEA,CACA,CACA,EAEAnJ,CAEA,CAAA,ECj+IA5G,SAAAuF,iBAAA,mBAAA,SAAApB,GACA6kB,cAAA,EACAC,oBAAA,EACAC,iBAAA,EACAC,kBAAA,EACAC,iBAAA,EACAC,mBAAA,EACAC,iBAAA,EACAC,aAAA,EACAC,qBAAA,EACAC,oBAAA,EACAC,qBAAA,EACAC,mBAAA,EACAC,aAAA,EACAC,kBAAA,EACAC,aAAA,EACAC,uBAAA,EACAC,eAAA,EACAC,cAAA,EACAC,iBAAA,EACAC,oBAAA,EACAC,yBAAA,CACA,CAAA,EC3BA,IAAAd,iBAAA,WACA,IAAAe,EAAArqB,SAAA2E,iBAAA,eAAA,EACA0lB,GAAA,EAAAA,EAAAxrB,QACAwrB,EAAA7lB,QAAA,SAAA8lB,GACAA,EAAAC,cAAAriB,UAAAC,IAAA,mBAAA,EACAmiB,EAAAC,cAAAA,cAAAriB,UAAAC,IAAA,mBAAA,EACAmiB,EAAA/kB,iBAAA,QAAA,WACA,IAAAilB,EAAAF,EAAAC,cACAE,EAAAH,EAAAC,cAAAA,cACAC,EAAAtiB,UAAAwiB,SAAA,QAAA,GACAF,EAAAtiB,UAAAG,OAAA,QAAA,EACAoiB,EAAAviB,UAAAG,OAAA,QAAA,IAGAmiB,EAAAtiB,UAAAyiB,OAAA,QAAA,EACAF,EAAAviB,UAAAyiB,OAAA,QAAA,EAEA,CAAA,CACA,CAAA,CAEA,ECpBAhB,mBAAA,WACA,IAAAiB,EAAA5qB,SAAA2E,iBAAA,2BAAA,EAEAkmB,GADAC,yBAAAF,CAAA,EACA5qB,SAAA2E,iBAAA,+BAAA,GAEAomB,GADAD,yBAAAD,CAAA,EACA7qB,SAAA2E,iBAAA,0BAAA,GACAmmB,yBAAAC,CAAA,CACA,EACAD,yBAAA,SAAAE,GACAA,GAAA,EAAAA,EAAAnsB,QACAmsB,EAAAxmB,QAAA,SAAA2U,GACAA,EAAA5T,iBAAA,QAAA,WACA,IAAA,IAAArI,EAAA,EAAAA,EAAA8tB,EAAAnsB,OAAA3B,CAAA,GACA8tB,EAAA9tB,GAAA+tB,QAAA,CAAA,EAEA9R,EAAA8R,QAAA,CAAA,CACA,CAAA,CACA,CAAA,CAEA,ECPAC,UAAA,SAAAC,GAAA,IACAC,EADApmB,EAAA,EAAAhI,UAAA6B,QAAAnB,KAAAA,IAAAV,UAAA,GAAAA,UAAA,GAAA,IAEA,OAAA,WAAA,IAAA,IAAAquB,EAAAhvB,KAAAivB,EAAAtuB,UAAA6B,OAAAjC,EAAA,IAAApB,MAAA8vB,CAAA,EAAAC,EAAA,EAAAA,EAAAD,EAAAC,CAAA,GAAA3uB,EAAA2uB,GAAAvuB,UAAAuuB,GACAtmB,aAAAmmB,CAAA,EACAA,EAAAjmB,WAAA,WAAA,OAAAgmB,EAAA1tB,MAAA4tB,EAAAzuB,CAAA,CAAA,EAAAoI,CAAA,CACA,CACA,EClBA0kB,qBAAA,WACA,IAAA8B,EAAAxrB,SAAA2E,iBAAA,uBAAA,EACA8mB,EAAA,GACAD,IACAA,EAAAhnB,QAAA,SAAA2U,GACAA,EAAA5T,iBAAA,QAAA,WACA,IAAAmmB,EAAAvS,EAAAoR,cAAA1pB,cAAA,uBAAA,EACAsE,WAAA,WACA,IAMAwmB,EANA,GAAAD,EAAAT,SACAS,EAAAtuB,MAAA,IACAquB,EAAAjtB,KAAA,GAAA6H,OAAAqlB,EAAAllB,aAAA,IAAA,CAAA,CAAA,IAGAklB,EAAAtuB,MAAA,IACAuuB,EAAAF,EAAAltB,QAAAmtB,EAAAllB,aAAA,IAAA,CAAA,EACAilB,EAAA1sB,OAAA4sB,EAAA,CAAA,EAEA,EAAA,CAAA,CACA,CAAA,CACA,CAAA,EACAC,sBAAAH,CAAA,EAEA,EACAG,sBAAA,SAAAH,GACA,IAOAI,EACAC,EARAC,EAAA/rB,SAAAa,cAAA,eAAA,EACAmrB,EAAAhsB,SAAAa,cAAA,yBAAA,EACAorB,EAAAjsB,SAAAa,cAAA,sBAAA,EACAqrB,EAAAlsB,SAAAa,cAAA,0BAAA,EACAsrB,EAAAnsB,SAAAa,cAAA,sBAAA,EACAurB,EAAApsB,SAAAa,cAAA,sBAAA,EACAkrB,GAAAC,IACAH,EAAA7rB,SAAAa,cAAA,cAAA,EACAirB,EAAA9rB,SAAAa,cAAA,iBAAA,EACAkrB,EAAAxmB,iBAAA,QAAA,WACA,IAUA8mB,EAVA,IAAAZ,EAAA5sB,QACAqtB,EAAAhkB,UAAAG,OAAA,aAAA,EACAxN,OAAAyxB,SAAAC,SAAAC,SAAA,MAAA,GACAJ,EAAAlkB,UAAAG,OAAA,aAAA,EAEAxN,OAAAyxB,SAAAC,SAAAC,SAAA,MAAA,GACAL,EAAAjkB,UAAAG,OAAA,aAAA,IAIAgkB,EAAAL,EAAAS,sBAAA,EACA5xB,OAAA2Z,SAAA6X,EAAAllB,EAAAklB,EAAAtU,CAAA,EACAiU,EAAA9jB,UAAAC,IAAA,QAAA,EACA2jB,EAAA5jB,UAAAC,IAAA,cAAA,EACA8jB,EAAA7uB,MAAA,GAAAiJ,OAAAolB,EAAAiB,SAAA,CAAA,EAEA,CAAA,EACAb,EAAAtmB,iBAAA,QAAA,WACAymB,EAAA9jB,UAAAG,OAAA,QAAA,EACAyjB,EAAA5jB,UAAAG,OAAA,cAAA,CACA,CAAA,EAEA,ECxDA6hB,iBAAA,WACA,IAEAyC,EAFA3sB,SAAAa,cAAA,wBAAA,IAEA8rB,EAAA3sB,SAAAa,cAAA,QAAA,IAEA8rB,EAAAzkB,UAAAC,IAAA,aAAA,CAGA,ECNA0hB,kBAAA,WACA,IAAA+C,EACAC,EACAC,EACAC,EAEAC,EACAC,EACAC,EAOAC,EALAC,EAAAptB,SAAAa,cAAA,uBAAA,EACAwsB,EAAArtB,SAAAa,cAAA,mBAAA,EACAysB,EAAAttB,SAAAa,cAAA,MAAA,EAEAusB,GAAAC,IACAF,EAAAntB,SAAA2E,iBAAA,yBAAA,EACA3E,SAAA2E,iBAAA,qBAAA,EACAH,QAAA,SAAA2U,GACAA,EAAA5T,iBAAA,SAAA,SAAAgoB,GACAJ,EAAA3oB,QAAA,SAAAgpB,GACAA,EAAAtlB,UAAAwiB,SAAA,QAAA,KACA+C,EAAAD,EAAA3sB,cAAA,uBAAA,GACA0E,iBAAA,QAAA,SAAAgoB,GACAA,EAAAja,eAAA,CACA,CAAA,EACAma,EAAAC,aAAA,sBAAA,EACAV,EAAA,QAEAS,EAAAC,aAAA,oBAAA,EACAT,EAAA,QAEAQ,EAAAC,aAAA,kBAAA,IACAR,EAAA,SAGA,CAAA,EAEA/nB,WAAA,WAEA,GAAAgU,EAAA8R,SAAA,cAAA9R,EAAA/b,MAAA0I,YAAA,IAEAqT,EAAAoR,cAAAmD,aAAA,sBAAA,GACAL,EAAAjlB,gBAAA,mBAAA,EACAilB,EAAAjlB,gBAAA,iBAAA,EACAilB,EAAAjlB,gBAAA,eAAA,GACAulB,EAAA3tB,SAAAa,cAAA,qCAAA,IACA,aAAA8sB,EAAAvwB,MAAA0I,YAAA,IACA+mB,EAAA,MAAAxmB,OAAAsnB,EAAAvwB,KAAA,IAEAwwB,EAAA5tB,SAAAa,cAAA,mCAAA,IACA,aAAA+sB,EAAAxwB,MAAA0I,YAAA,IACAgnB,EAAA,MAAAzmB,OAAAunB,EAAAxwB,KAAA,GAEAwvB,EAAA,KAAAvmB,OAAA8S,EAAA/b,KAAA,EACAiwB,EAAAnmB,aAAA,oBAAA0lB,CAAA,EACAS,EAAAnmB,aAAA,kBAAA2lB,CAAA,EACAQ,EAAAnmB,aAAA,gBAAA4lB,CAAA,GAGA3T,EAAAoR,cAAAmD,aAAA,oBAAA,GACAL,EAAAjlB,gBAAA,mBAAA,EACAilB,EAAAjlB,gBAAA,iBAAA,EACAilB,EAAAjlB,gBAAA,eAAA,GACAylB,EAAA7tB,SAAAa,cAAA,uCAAA,IACA,aAAAgtB,EAAAzwB,MAAA0I,YAAA,IACA8mB,EAAA,KAAAvmB,OAAAwnB,EAAAzwB,KAAA,IAEAwwB,EAAA5tB,SAAAa,cAAA,mCAAA,IACA,aAAA+sB,EAAAxwB,MAAA0I,YAAA,IACAgnB,EAAA,MAAAzmB,OAAAunB,EAAAxwB,KAAA,GAEAyvB,EAAA,MAAAxmB,OAAA8S,EAAA/b,KAAA,EACAiwB,EAAAnmB,aAAA,oBAAA0lB,CAAA,EACAS,EAAAnmB,aAAA,kBAAA2lB,CAAA,EACAQ,EAAAnmB,aAAA,gBAAA4lB,CAAA,GAGA3T,EAAAoR,cAAAmD,aAAA,kBAAA,IACAL,EAAAjlB,gBAAA,mBAAA,EACAilB,EAAAjlB,gBAAA,iBAAA,EACAilB,EAAAjlB,gBAAA,eAAA,GACAylB,EAAA7tB,SAAAa,cAAA,uCAAA,IACA,aAAAgtB,EAAAzwB,MAAA0I,YAAA,IACA8mB,EAAA,KAAAvmB,OAAAwnB,EAAAzwB,KAAA,IAEAuwB,EAAA3tB,SAAAa,cAAA,qCAAA,IACA,aAAA8sB,EAAAvwB,MAAA0I,YAAA,IACA+mB,EAAA,MAAAxmB,OAAAsnB,EAAAvwB,KAAA,GAEA0vB,EAAA,MAAAzmB,OAAA8S,EAAA/b,KAAA,EACAiwB,EAAAnmB,aAAA,oBAAA0lB,CAAA,EACAS,EAAAnmB,aAAA,kBAAA2lB,CAAA,EACAQ,EAAAnmB,aAAA,gBAAA4lB,CAAA,IAIA,GAAA3T,EAAA8R,SAAA,aAAA9R,EAAA/b,MAAA0I,YAAA,IAEAqT,EAAAoR,cAAAmD,aAAA,sBAAA,GACAL,EAAAjlB,gBAAA,mBAAA,GACAulB,EAAA3tB,SAAAa,cAAA,qCAAA,IACA,aAAA8sB,EAAAvwB,MAAA0I,YAAA,IACA+mB,EAAA,MAAAxmB,OAAAsnB,EAAAvwB,KAAA,IAEAwwB,EAAA5tB,SAAAa,cAAA,mCAAA,IACA,aAAA+sB,EAAAxwB,MAAA0I,YAAA,IACAgnB,EAAA,MAAAzmB,OAAAunB,EAAAxwB,KAAA,GAEAiwB,EAAAnmB,aAAA,kBAAA2lB,CAAA,EACAQ,EAAAnmB,aAAA,gBAAA4lB,CAAA,GAGA3T,EAAAoR,cAAAmD,aAAA,oBAAA,GACAL,EAAAjlB,gBAAA,iBAAA,GACAylB,EAAA7tB,SAAAa,cAAA,uCAAA,IACA,aAAAgtB,EAAAzwB,MAAA0I,YAAA,IACA8mB,EAAA,KAAAvmB,OAAAwnB,EAAAzwB,KAAA,IAEAwwB,EAAA5tB,SAAAa,cAAA,mCAAA,IACA,aAAA+sB,EAAAxwB,MAAA0I,YAAA,IACAgnB,EAAA,MAAAzmB,OAAAunB,EAAAxwB,KAAA,GAEAiwB,EAAAnmB,aAAA,oBAAA0lB,CAAA,EACAS,EAAAnmB,aAAA,gBAAA4lB,CAAA,GAGA3T,EAAAoR,cAAAmD,aAAA,kBAAA,IACAL,EAAAjlB,gBAAA,eAAA,GACAylB,EAAA7tB,SAAAa,cAAA,uCAAA,IACA,aAAAgtB,EAAAzwB,MAAA0I,YAAA,IACA8mB,EAAA,KAAAvmB,OAAAwnB,EAAAzwB,KAAA,IAEAuwB,EAAA3tB,SAAAa,cAAA,qCAAA,IACA,aAAA8sB,EAAAvwB,MAAA0I,YAAA,IACA+mB,EAAA,MAAAxmB,OAAAsnB,EAAAvwB,KAAA,GAEAiwB,EAAAnmB,aAAA,oBAAA0lB,CAAA,EACAS,EAAAnmB,aAAA,kBAAA2lB,CAAA,IAIAE,EAAA,MAAA1mB,OAAAinB,EAAA9mB,aAAA,MAAA,CAAA,EACA6mB,EAAAnmB,aAAA,gBAAA6lB,CAAA,EAvGA,IAyGAe,EAAA,IAAAznB,OAAAumB,GAAA,EAAA,EAAAvmB,OAAAwmB,GAAA,EAAA,EAAAxmB,OAAAymB,GAAA,EAAA,EAAAzmB,OAAA0mB,GAAA,EAAA,EAAA1mB,OAAA2mB,GAAA,EAAA,EAAA3mB,OAAA4mB,GAAA,EAAA,EAAA5mB,OAAA6mB,GAAA,EAAA,EACAa,mBAAAX,EAAAU,CAAA,CACA,EAAA,CAAA,CACA,CAAA,CACA,CAAA,EAEA,EACAC,mBAAA,SAAAP,EAAAQ,GACAC,EAAA,4CAAA5nB,OAAA2nB,CAAA,EACAE,MAAAD,CAAA,EAAAE,KAAA,SAAAC,GACA,OAAAA,EAAAC,KAAA,CACA,CAAA,EAAAF,KAAA,SAAAG,GACAd,EAAAe,UAAAD,EACAhF,iBAAA,EACAK,mBAAA,EACAE,kBAAA,CACA,CAAA,CACA,ECnKA2E,YAAA,CAAA,EACAC,aAAAzuB,SAAA2E,iBAAA,MAAA,EACAskB,oBAAA,WACAwF,cAAAA,aAAAjqB,QAAA,SAAAkqB,GACA,IAAAC,EAAAD,EAAA7tB,cAAA,iBAAA,EACA8tB,EAAAppB,iBAAA,QAAA,SAAAgoB,GACAA,EAAAja,eAAA,EAEAmb,aAAAjqB,QAAA,SAAAoqB,GAAA,OAAAA,EAAAxmB,gBAAA,kBAAA,CAAA,CAAA,EACAsmB,EAAAxnB,aAAA,mBAAA,MAAA,EACA,IAAA2nB,EAAAh0B,OAAAg0B,eACAC,EAAAJ,EAAAnE,cAAA1pB,cAAA,gBAAA,EAOAkuB,GANAD,GACAD,EAAAG,QAAA,QAAA,GAAA3oB,OAAAyoB,EAAAtoB,aAAA,YAAA,CAAA,CAAA,EAGAyoB,uBAAAN,CAAA,EAEAD,EAAA/pB,iBAAA,4BAAA,GACAoqB,GAAA,EAAAA,EAAAlwB,SACA2vB,YAAAU,kBAAAH,CAAA,KAEAI,mBACAC,WAAAC,QAAAzf,SAAA8e,EAAAloB,aAAA,mBAAA,CAAA,CAAA,EAGAkoB,EAAAtV,OAAA,EAIA,CAAA,CACA,CAAA,CACA,EACA6V,uBAAA,SAAAnZ,GACAA,EAAAyJ,SAAA,CAAA,EACApa,WAAA,WACA2Q,EAAA1N,gBAAA,UAAA,CACA,EAAA,GAAA,CACA,EACA8mB,kBAAA,SAAAI,GACA,IAAAC,EAAA,EA8BA,OA7BAD,EAAA9qB,QAAA,SAAAgrB,GACA,IACAC,EAGAC,EAJAF,EAAA9B,aAAA,UAAA,IACA+B,EAAAD,EAAAG,cAAA,EAEA,aAAAH,EAAAprB,MACAsrB,EAAAF,EAAAjF,cAAA1pB,cAAA,OAAA,EACA4uB,EACAC,EAAAxnB,UAAAG,OAAA,OAAA,GAGAqnB,EAAAxnB,UAAAC,IAAA,OAAA,EACAonB,CAAA,KAKAE,EACAD,EAAAtnB,UAAAG,OAAA,OAAA,GAGAmnB,EAAAtnB,UAAAC,IAAA,OAAA,EACAonB,CAAA,IAGAC,EAAAjqB,iBAAA,QAAA,WACAiqB,EAAAtnB,UAAAG,OAAA,OAAA,CACA,CAAA,EAEA,CAAA,EACAknB,EAAA,EAAAA,EACA,ECvEAnG,iBAAA,WACAppB,SAAA2E,iBAAA,mBAAA,EAAAH,QAAA,SAAApH,GACA,IAAAwyB,EAAAC,KAAAC,UAAA1yB,EAAAmxB,SAAA,CAAA,EACAwB,EAAA/vB,SAAAC,cAAA,UAAA,EACA+vB,EAAAhwB,SAAAiwB,eAAAL,CAAA,EACAG,EAAAG,KAAA,gBACAH,EAAApwB,MAAAoB,QAAA,OACA3D,EAAAqD,YAAAsvB,CAAA,EACAA,EAAAtvB,YAAAuvB,CAAA,CACA,CAAA,CACA,ECVAvG,oBAAA,WACA,IAAA0G,EAAAnwB,SAAAa,cAAA,kCAAA,EACAuvB,EAAApwB,SAAAa,cAAA,0BAAA,EAGAysB,EADAzyB,OAAAyxB,SAAAC,SAAA8D,MAAA,GAAA,EACA,GACAD,IACApC,EAAA,QAAA3nB,OAAAxL,OAAAg0B,eAAAyB,QAAA,KAAA,EAAA,KAAA,EAAAjqB,OAAAinB,CAAA,EACAiD,yBAAAJ,EAAAC,EAAApC,CAAA,EAEA,EACAuC,yBAAA,SAAAJ,EAAAC,EAAApC,GACAC,EAAA,2CAAA5nB,OAAA2nB,CAAA,EACAE,MAAAD,CAAA,EAAAE,KAAA,SAAAC,GACA,OAAAA,EAAAC,KAAA,CACA,CAAA,EAAAF,KAAA,SAAAqC,GACAJ,EAAA7B,UAAAiC,EACAC,EAAAzwB,SAAA2E,iBAAA,+BAAA,EASA,GARA8rB,GAAA,EAAAA,EAAA5xB,OACAsxB,EAAAjoB,UAAAwiB,SAAA,aAAA,GACAyF,EAAAjoB,UAAAG,OAAA,aAAA,EAIA8nB,EAAAjoB,UAAAC,IAAA,aAAA,EAEAsoB,GAAA,EAAAA,EAAA5xB,OACA,IAAA+H,SAAAwpB,EAAA,CAEArf,QAAA,CAAA,EACA7G,WAAA,CAAA,EACAnC,UAAA,OACAgX,WAAA,oLACA,CAAA,OAGA,GAAA0R,GAAA,EAAAA,EAAA5xB,OAAA,CACA,IAAA,IAAAC,EAAA,EAAAA,EAAA,EAAAA,CAAA,GAAA,CACA,IACA4xB,EADA1wB,SAAA2E,iBAAA,+BAAA,EAAA7F,GACA6xB,UAAA,CAAA,CAAA,EACAP,EAAA3vB,YAAAiwB,CAAA,CACA,CACA,IAAA9pB,SAAAwpB,EAAA,CAEArf,QAAA,CAAA,EACA7G,WAAA,CAAA,EACAnC,UAAA,OACAgX,WAAA,oLACA,CAAA,CACA,MAEAqR,EAAAloB,UAAAC,IAAA,WAAA,CAGA,CAAA,CACA,ECzBA+gB,iBAAA,WAAA,IAAA0H,EAAA5zB,EAAA,EAAAA,UAAA6B,QAAAnB,KAAAA,IAAAV,UAAA,KAAAA,UAAA,GAAA6zB,EAAA7zB,EAAA,EAAAA,UAAA6B,QAAAnB,KAAAA,IAAAV,UAAA,KAAAA,UAAA,GAAA8zB,EAAA,EAAA9zB,UAAA6B,QAAAnB,KAAAA,IAAAV,UAAA,GAAAA,UAAA,GAAAgD,SACA,GAAA,CAAA4wB,GAAA,CAAAC,EACA,MAAA,CAAA,EAKA,SAAAE,IAEAC,EAAAJ,EAAA,GAAAl1B,MAAAqB,KAAA+zB,EAAAnsB,iBAAA,yCAAA,CAAA,EAAAqsB,EACAC,EAAAJ,EAAA,GAAAn1B,MAAAqB,KAAA+zB,EAAAnsB,iBAAA,0BAAA,CAAA,EAAAssB,EAEA,IAAAC,EAAAC,mBAAAL,EAAAnsB,iBAAA,mBAAA,CAAA,EACAqsB,EAAAxsB,QAAA,SAAAsf,GACAoN,EAAAE,KAAA,SAAAC,GAAA,OAAAA,EAAA3G,SAAA5G,CAAA,CAAA,CAAA,GACAkN,EAAAjyB,OAAA+kB,CAAA,CACA,CAAA,EAEAK,EAAA6M,EAAA3qB,OAAA4qB,CAAA,GACAK,EAAA,CAAA,KACAA,IACAA,EAAA,CAAA,EACAnN,EAAA3f,QAAA,SAAA+sB,GACAA,EAAA9E,sBAAA,EAAA+E,IAAA32B,OAAAsG,YAAA,GAAAtG,OAAAsG,aACA,GAAAowB,EAAA9E,sBAAA,EAAAgF,OAAA52B,OAAAsG,YAAA,GACA,SAAAvB,iBAAA2xB,CAAA,EAAAxwB,SACAoE,WAAA,WACAosB,EAAA/qB,aAAA,SAAA,EACAkrB,SAAA,CAAAH,EAAA,EAGAA,EAAA9M,IAAA8M,EAAA/qB,aAAA,UAAA,EAEA+qB,EAAArqB,aAAA,UAAA,GAAA,EAEA,KADAid,EAAAA,EAAAwN,OAAA,SAAAtY,GAAA,OAAAA,IAAAkY,CAAA,CAAA,GACA1yB,QACAmB,SAAA0U,oBAAA,SAAAqc,CAAA,CAEA,EAAA,GAAA,CAEA,CAAA,EACAO,EAAA,CAAA,EAEA,CAxCA,IAAAN,EAAA,GACAC,EAAA,GACA9M,EAAA,GACAmN,EAAA,CAAA,EAuCAtxB,SAAA0U,oBAAA,SAAAqc,CAAA,EACAl2B,OAAA6Z,oBAAA,SAAAwW,UAAA,WACAwG,SAAA,CACA,EAAA,GAAA,CAAA,EACA72B,OAAA6Z,oBAAA,oBAAAwW,UAAA,WACAwG,SAAA,CACA,EAAA,GAAA,CAAA,EACAX,EAAA,EACA/wB,SAAAuF,iBAAA,SAAAwrB,CAAA,EACAl2B,OAAA0K,iBAAA,SAAA2lB,UAAA,WACAwG,SAAA,CACA,EAAA,GAAA,CAAA,EACA72B,OAAA0K,iBAAA,oBAAA2lB,UAAA,WACAwG,SAAA,CACA,EAAA,GAAA,CAAA,CACA,EACAA,SAAA,SAAAH,IACAA,GAAA,GAAA71B,MAAAqB,KAAAiD,SAAA2E,iBAAA,WAAA,CAAA,GACAH,QAAA,SAAA+sB,GACA,IAAA/J,EAAA,GAGAA,EAFA3sB,OAAAqG,WAAA,KACA,IAAArG,OAAAqG,WACA,aAGA,aAIA,UAEA0mB,EAAA2J,EAAA/qB,aAAAghB,CAAA,GAAA+J,EAAA/qB,aAAA,SAAA,EACA+qB,EAAA5xB,MAAAioB,gBAAA,QAAAvhB,OAAAuhB,EAAA,IAAA,CACA,CAAA,CACA,EC/FA2B,aAAA,WACA,IAAAqI,EAAA5xB,SAAA2E,iBAAA,qBAAA,EACAktB,EAAA7xB,SAAA2E,iBAAA,2BAAA,EACAitB,GAAAC,GAAA,EAAAD,EAAA/yB,QAAA,EAAAgzB,EAAAhzB,SAEAgzB,EAAArtB,QAAA,SAAAstB,EAAAhzB,GACAgzB,EAAA5qB,aAAA,0BAAApI,EAAA4tB,SAAA,CAAA,CACA,CAAA,EACAkF,EAAAptB,QAAA,SAAAsR,EAAAhX,GAEAgX,EAAA5O,aAAA,oBAAApI,EAAA4tB,SAAA,CAAA,EACA5W,EAAAvQ,iBAAA,QAAA,SAAApB,GAEA,IACA4tB,EAFA5tB,EAAAmP,eAAA,EACAnP,EAAA2D,kBAAAkqB,qBACAD,EAAA5tB,EAAA2D,QAEAI,UAAAC,IAAA,SAAA,EACA8pB,EAAA9tB,EAAA2D,OAAAoqB,KACAhE,MAAA,GAAA7nB,OAAA4rB,EAAA,SAAA,CAAA,EACA9D,KAAA,SAAA7wB,GAEAA,EAAA+wB,KAAA,EAEAF,KAAA,SAAAgE,GAEA,IAEAC,GAFA,IAAAC,WAEAC,gBAAAH,EAAA,WAAA,EAEAI,EAAAH,EAAAztB,iBAAA,kBAAA,EAEA6tB,EAAAT,EAAAvrB,aAAA,mBAAA,EACAsrB,EAAA9xB,SAAAa,cAAA,6BAAAwF,OAAAmsB,EAAA,IAAA,CAAA,EAKAC,GAJAF,EAAA/tB,QAAA,SAAAkuB,GACAZ,EAAAxO,OAAAoP,CAAA,CACA,CAAA,EAEAN,EAAAvxB,cAAA,qBAAA,GACA,MAAA4xB,GACAV,EAAAG,KAAAO,EAAAP,KAEAH,EAAA7pB,UAAAG,OAAA,SAAA,GAIA0pB,EAAA1pB,OAAA,CAEA,CAAA,CACA,CAAA,EAEA,CAAA,CACA,CAAA,EAEA,ECnEAghB,mBAAA,WACA,IAAAsJ,EAAA3yB,SAAAa,cAAA,iBAAA,EACA+xB,EAAA5yB,SAAAa,cAAA,uBAAA,EACAgyB,EAAA7yB,SAAAa,cAAA,SAAA,EACAiyB,EAAA9yB,SAAAa,cAAA,cAAA,EACA8xB,EAAAptB,iBAAA,QAAA,WACAstB,EAAA3qB,UAAAC,IAAA,oBAAA,EACA2qB,EAAA5qB,UAAAC,IAAA,oBAAA,CACA,CAAA,EACAyqB,EAAArtB,iBAAA,QAAA,WACAstB,EAAA3qB,UAAAG,OAAA,oBAAA,EACAyqB,EAAA5qB,UAAAG,OAAA,oBAAA,CACA,CAAA,CACA,ECbA8gB,kBAAA,WACA,IASA4J,EAwBAC,EAjCAC,EAAAp4B,OAAAyxB,SAAA4F,KACA1K,EAAA,IAAA0L,IAAAD,CAAA,EAEAE,EAAA3L,EAAA4L,aAAAC,IAAA,UAAA,EACAC,EAAA9L,EAAA4L,aAAAC,IAAA,SAAA,EACAE,EAAA/L,EAAA4L,aAAAC,IAAA,YAAA,EACAv3B,EAAA,KAAA0rB,EAAA4L,aAAAC,IAAA,OAAA,EACAxE,EAAAh0B,OAAAg0B,eACA2E,EAAA3E,EAAAyB,QAAA,OAAA,EAWApE,GATA,cAAAsH,EACAT,EAAA/yB,SAAAa,cAAA,yCAAA,EAEA,gBAAA2yB,EACAT,EAAA/yB,SAAAa,cAAA,2CAAA,EAEA,oBAAA2yB,IACAT,EAAA/yB,SAAAa,cAAA,+CAAA,GAEAb,SAAAa,cAAA,cAAA,GACAkyB,IACAU,EAAAV,EAAAlyB,cAAA,aAAA,EACA,MAAAsyB,GAAA,MAAAI,GAAA,MAAAD,IACAP,EAAA7qB,UAAAG,OAAA,aAAA,EACA0qB,EAAA7qB,UAAAC,IAAA,YAAA,GAEAsrB,EAAAluB,iBAAA,QAAA,WACAwtB,EAAA7qB,UAAAG,OAAA,YAAA,EACA0qB,EAAA7qB,UAAAC,IAAA,aAAA,EACA0mB,EAAA6E,WAAA,OAAA,CACA,CAAA,GAEAxH,IACA8G,EAAAhzB,SAAAa,cAAA,0BAAA,EACA,MAAAsyB,GAAA,MAAAI,GAAA,MAAAD,GAAAx3B,CAAAA,IACAowB,EAAAhkB,UAAAG,OAAA,aAAA,EACA6jB,EAAAhkB,UAAAG,OAAA,YAAA,GAEA2qB,EAAAztB,iBAAA,QAAA,WACAvF,SAAAa,cAAA,cAAA,EAAAqH,UAAAG,OAAA,YAAA,EACArI,SAAAa,cAAA,cAAA,EAAAqH,UAAAC,IAAA,aAAA,CACA,CAAA,EAEA,EC5CAgiB,oBAAA,WACA,IAAAwJ,EAAA3zB,SAAAa,cAAA,2CAAA,EACA+yB,EAAA5zB,SAAAa,cAAA,sCAAA,GACA8yB,GAAAC,KACAD,EACAE,yBAAAF,CAAA,EAEAC,GACAC,yBAAAD,CAAA,EAGA,EACAC,yBAAA,SAAAC,GACA,IAAAC,EAAAD,EAAAjzB,cAAA,YAAA,EACAmzB,EAAAF,EAAAjzB,cAAA,YAAA,EACAozB,EAAAH,EAAAjzB,cAAA,oBAAA,EACA,IAAAozB,EAAAzyB,cACAyyB,EAAA/sB,aAAA,OAAA,MAAA,EACA6sB,EAAA7rB,UAAAC,IAAA,QAAA,EACA4rB,EAAAxuB,iBAAA,QAAA,WACA0uB,EAAA/sB,aAAA,OAAA,MAAA,EACA6sB,EAAA7rB,UAAAG,OAAA,QAAA,EACA2rB,EAAA9rB,UAAAC,IAAA,QAAA,EACA,IAAA+rB,EAAAJ,EAAAvJ,cAAA/jB,aAAA,IAAA,EACAwtB,EAAA9sB,aAAA,OAAA,IAAAb,OAAA6tB,CAAA,CAAA,CACA,CAAA,EACAF,EAAAzuB,iBAAA,QAAA,WACA0uB,EAAA/sB,aAAA,OAAA,MAAA,EACA8sB,EAAA9rB,UAAAG,OAAA,QAAA,EACA0rB,EAAA7rB,UAAAC,IAAA,QAAA,CACA,CAAA,IAGA8rB,EAAA/sB,aAAA,OAAA,EAAA,EACA6sB,EAAA7rB,UAAAG,OAAA,QAAA,EACA2rB,EAAA9rB,UAAAG,OAAA,QAAA,EAEA,ECXA8mB,oBA1BA,CAAA,SAAA1zB,GAsBA,SAAA04B,EAAAC,EAAAv4B,EAAAq0B,GACA,MAAA,IAAAkE,EAAA,2DAAAv4B,EAAA,IAAAq0B,CAAA,CACA,CAvBA,YAAA,OAAAz0B,EAAA44B,gBAEA54B,EAAA44B,cAAA,SAAAC,GAcA,IAAAA,EAAA5F,EAbA4F,GAaA5F,EAZAryB,MAYAi4B,EAZAA,aAaA7vB,aAAA0vB,EAAAI,UAAA,2CAAA,WAAA,EACA,UAAAD,EAAAlwB,MAAA+vB,EAAAI,UAAA,+CAAA,WAAA,EACAD,EAAA5F,MAAAA,GAAAyF,EAAAK,aAAA,0DAAA,eAAA,EAdAF,EAAAG,MAAA,KAGAH,EAAAt0B,SAAAC,cAAA,OAAA,GACAmE,KAAA,SACAkwB,EAAAzS,OAAA,CAAA,EACAxlB,KAAAoE,YAAA6zB,CAAA,EACAA,EAAAG,MAAA,EACAp4B,KAAAuE,YAAA0zB,CAAA,EAEA,EASA,EAAAI,gBAAAj5B,SAAA,EACA,CAAA,GACAutB,cAAA,WACA,IACA2L,EAqBA,OAtBAxF,sBACAwF,EAAA30B,SAAAC,cAAA,QAAA,GACA20B,MAAA,CAAA,EACAD,EAAAE,MAAA,CAAA,EACAF,EAAAlQ,IAAA,0CACAzkB,SAAA80B,KAAAr0B,YAAAk0B,CAAA,EACAlG,eAAA,EAAAA,aAAA5vB,QAAA4vB,aAAAjqB,QAAA,SAAAkqB,EAAAxxB,GACA,IAAA63B,EAAArG,EAAA7tB,cAAA,kBAAA,EACAk0B,GACA5vB,WAAA,WACA,IAAA6vB,EAAA5F,WAAA6F,OAAAF,EAAA,CACAG,QAAA,2CACAl0B,KAAA,YACAm0B,SAAAj4B,EACAmI,SAAA+vB,kBACA,CAAA,EAEA,OADA1G,EAAAxnB,aAAA,oBAAA8tB,EAAAtI,SAAA,CAAA,EACA,CAAA,CACA,EAAA,GAAA,CAEA,CAAA,EAEA,CAAA,CACA,EACA0I,mBAAA,SAAAC,GACA,IAAAC,EAAAt1B,SAAAa,cAAA,+BAAA,EACAy0B,EAAAz0B,cAAA,uBAAA,EACAzD,MAAAi4B,EACAC,EAAAjB,cAAA,CACA,ECzDAzK,aAAA,WACA,IAAA2L,EAAAv1B,SAAA2E,iBAAA,iBAAA,EACA4wB,GAAA,EAAAA,EAAA12B,QACA02B,EAAA/wB,QAAA,SAAAgxB,GACA,IAAAC,EAAAD,EAAA7wB,iBAAA,cAAA,GAEA6wB,EAAAE,aAAAD,EAAA,GAAAl0B,YAAAk0B,EAAA,GAAAC,cAAAD,EAAA,GAAAl0B,YAEAk0B,EAAA52B,OAGA,IAAA+H,SAAA4uB,EAAA,CAEAzkB,QAAA,CAAA,EACAiR,SAAA,CAAA,EACA9X,WAAA,CAAA,EACA6U,WAAA,sLACA,CAAA,EAGAyW,EAAAttB,UAAAC,IAAA,eAAA,CAEA,CAAA,CAEA,ECxBA2hB,aAAA,WACA,IAEA6L,EAFAC,EAAA51B,SAAAa,cAAA,qBAAA,EACA+0B,IACAD,EAAA31B,SAAAa,cAAA,qBAAA,EACA+0B,EAAArwB,iBAAA,QAAA,WACA,IAAAuoB,EAAA,MAAAznB,OAAAypB,UAAA6F,EAAAv4B,KAAA,CAAA,EACAvC,OAAAyxB,SAAA4F,KAAApE,CACA,CAAA,EAEA,ECTAtE,qBAAA,WACA,IAEAqM,EACAhH,EAOAiH,EAEAh3B,EAZAkB,SAAAa,cAAA,eAAA,IAEAg1B,EAAA71B,SAAAa,cAAA,mBAAA,EAEA,QADAguB,EAAAh0B,OAAAg0B,gBACAyB,QAAA,KAAA,IACAwF,EAAA,IACAt3B,KAAAq3B,EAAArvB,aAAA,iBAAA,CAAA,EACAqoB,EAAAG,QAAA,MAAA8G,EAAApJ,SAAA,CAAA,KAGAoJ,EAAAjH,EAAAyB,QAAA,KAAA,EAAAD,MAAA,GAAA,GACA7D,SAAAqJ,EAAArvB,aAAA,iBAAA,CAAA,EAEA,CAAA,GADA1H,EAAAg3B,EAAAv3B,QAAAs3B,EAAArvB,aAAA,iBAAA,CAAA,KAEAsvB,EAAA/2B,OAAAD,EAAA,CAAA,EACAg3B,EAAAt3B,KAAAq3B,EAAArvB,aAAA,iBAAA,CAAA,EACAsvB,EAAAC,QAAA,IAIA,GAAAD,EAAAj3B,SACAi3B,EAAAC,QAAA,EACAD,EAAA1uB,MAAA,GAKA0uB,EAAAt3B,KAAAq3B,EAAArvB,aAAA,iBAAA,CAAA,EACAsvB,EAAAC,QAAA,GAGAlH,EAAAG,QAAA,MAAA8G,EAAApJ,SAAA,CAAA,GAGA,ECnCAtC,yBAAA,WACA,IAKA4L,EAEAC,EAPAC,EAAAl2B,SAAAa,cAAA,qBAAA,EACAs1B,EAAAn2B,SAAAa,cAAA,eAAA,GACAq1B,GAAAC,KACAC,EAAAp2B,SAAAa,cAAA,gBAAA,KAEAm1B,EAAAI,EAAAzxB,iBAAA,OAAA,EAEAsxB,EADAj2B,SAAAa,cAAA,qBAAA,EACA8D,iBAAA,qBAAA,IACA,EAAAsxB,EAAAp3B,QACAhE,OAAA0K,iBAAA,SAAA,WACA0wB,EAAAzxB,QAAA,SAAA6xB,GACA,IAAAC,EAAAD,EAAA9L,cACAgM,EAAAD,EAAA7J,sBAAA,EAAA+E,IACA,IAAA+E,GAAAA,EAAA,KACAP,EAAAxxB,QAAA,SAAAgyB,GACA,IAAAC,EAAAD,EAAA31B,cAAA,eAAA,EAGA,GAFAlF,QAAA0sB,IAAAiO,EAAA9vB,aAAA,IAAA,CAAA,EACA7K,QAAA0sB,IAAAoO,EAAAjwB,aAAA,MAAA,EAAAd,QAAA,IAAA,EAAA,CAAA,EACA4wB,EAAA9vB,aAAA,IAAA,GAAAiwB,EAAAjwB,aAAA,MAAA,EAAAd,QAAA,IAAA,EAAA,GACA,CAAA+wB,EAAAvuB,UAAAwiB,SAAA,QAAA,EAAA,CACA,IAAA,IAAAxtB,EAAA,EAAAA,EAAA84B,EAAAn3B,OAAA3B,CAAA,GACA84B,EAAA94B,GAAAgL,UAAAG,OAAA,QAAA,EAEAmuB,EAAAtuB,UAAAC,IAAA,QAAA,CACA,CAEA,CAAA,CAEA,CAAA,CACA,CAAA,CAIA,EClCA8hB,cAAA,WACA,IAGAyM,EAHAC,EAAA32B,SAAAa,cAAA,UAAA,EACA81B,IAEAD,EADAC,EAAA91B,cAAA,UAAA,EACA8D,iBAAA,SAAA,GACAH,QAAA,SAAAoyB,GACAA,aAAA5E,mBACA4E,EAAArxB,iBAAA,QAAA,SAAAgoB,GACA,CAAA,GAAAqJ,EAAApwB,aAAA,MAAA,EAAAjI,QAAA,GAAA,IACAgvB,EAAAja,eAAA,EAGAujB,EAFA72B,SAAAa,cAAA,GAAAwF,OAAAuwB,EAAApwB,aAAA,MAAA,CAAA,CAAA,EACAimB,sBAAA,EAAA+E,IACA32B,OAAAyZ,YAAA,IACAzZ,OAAA2Z,SAAA,CACAgd,IAAAqF,CACA,CAAA,GAEA,IAAA,IAAA35B,EAAA,EAAAA,EAAAw5B,EAAA73B,OAAA3B,CAAA,GACAw5B,EAAAx5B,GAAAqtB,cAAAriB,UAAAG,OAAA,QAAA,EAEAuuB,EAAArM,cAAAriB,UAAAC,IAAA,QAAA,CACA,CAAA,CACA,CAAA,CAEA,ECxBA2uB,+BAAA92B,SAAA2E,iBAAA,wBAAA,ECAAoyB,kCDCAD,gCAAA,EAAAA,+BAAAj4B,QACAi4B,+BAAAtyB,QAAA,SAAAwyB,GACA,EAAAA,EAAAryB,iBAAA,gBAAA,EAAA9F,SACA,cAAAm4B,EAAAxwB,aAAA,gBAAA,EACA,IAAAI,SAAAowB,EAAA,CAEAjmB,QAAA,CAAA,EACAiR,SAAA,CAAA,EACA9X,WAAA,CAAA,EACA6U,WAAA,oLACA,CAAA,EAGA,IAAAnY,SAAAowB,EAAA,CAEAjmB,QAAA,CAAA,EACAiR,SAAA,CAAA,EACAjD,WAAA,oLACA,CAAA,EAGA,CAAA,ECtBA/e,SAAAa,cAAA,sCAAA,GACA,GAAAk2B,iCAAA,CACA,IAAAE,8BAAAF,iCAAApyB,iBAAA,cAAA,EACA,GAAAsyB,+BAAA,EAAAA,8BAAAp4B,OAAA,CACA,IAAA,IAAAC,MAAA,EAAAA,MAAA,EAAAA,KAAA,GAAA,CACA,IAAAo4B,YAAAl3B,SAAA2E,iBAAA,mDAAA,EAAA7F,OACA4xB,MAAAwG,YAAAvG,UAAA,CAAA,CAAA,EACAoG,iCAAAt2B,YAAAiwB,KAAA,CACA,CACA,IAAA3M,SAAA,IAAAnd,SAAAmwB,iCAAA,CAEAhmB,QAAA,CAAA,EACAiR,SAAA,CAAA,EACA9X,WAAA,CAAA,EACAgc,aAAA,CAAA,EACAnH,WAAA,sLACA,CAAA,EACAgF,SAAA9lB,GAAA,SAAA,WAAA,OAAA8lB,SAAAjU,WAAA,CAAA,CAAA,CACA,MAEAinB,iCAAA7uB,UAAAC,IAAA,YAAA,CAEA,CCtBA,IAAAgvB,0BAAAn3B,SAAA2E,iBAAA,yBAAA,ECAAyyB,uBDCAD,2BACAA,0BAAA3yB,QAAA,SAAA6yB,GACA,IAAAC,EAAAD,EAAA1yB,iBAAA,cAAA,EACA,GAAA,KAAA9J,OAAAqG,WACA,EAAAo2B,EAAAz4B,OACA,IAAA+H,SAAAywB,EAAA,CAEAtmB,QAAA,CAAA,EACA7G,WAAA,CAAA,EACAnC,UAAA,OACAgX,WAAA,oLACA,CAAA,EAGAsY,EAAAnvB,UAAAC,IAAA,SAAA,MAGA,CACAovB,EAAAF,EAAA1yB,iBAAA,cAAA,EACA,GAAA4yB,GAAA,EAAAA,EAAA14B,OAAA,CACA,IAAA,IAAAC,EAAA,EAAAA,EAAA,EAAAA,CAAA,GAAA,CACA,IACA4xB,EADA2G,EAAA1yB,iBAAA,cAAA,EAAA7F,GACA6xB,UAAA,CAAA,CAAA,EACA0G,EAAA52B,YAAAiwB,CAAA,CACA,CACA,IAAA9pB,SAAAywB,EAAA,CAEAtmB,QAAA,CAAA,EACA7G,WAAA,CAAA,EACAnC,UAAA,OACAgX,WAAA,oLACA,CAAA,CACA,CACA,CACA,CAAA,ECnCA/e,SAAAa,cAAA,0BAAA,GACA,GAAAu2B,sBAAA,CACA,IAAAI,mBAAAJ,sBAAAzyB,iBAAA,cAAA,EACA,GAAA6yB,oBAAA,EAAAA,mBAAA34B,OAAA,CACA,IAAA,IAAAC,QAAA,EAAAA,QAAA,EAAAA,OAAA,GAAA,CACA,IAAAo4B,cAAAl3B,SAAA2E,iBAAA,uCAAA,EAAA7F,SACA4xB,QAAAwG,cAAAvG,UAAA,CAAA,CAAA,EACAyG,sBAAA32B,YAAAiwB,OAAA,CACA,CACA,IAAA3M,UAAA,IAAAnd,SAAAwwB,sBAAA,CAEArmB,QAAA,CAAA,EACAiR,SAAA,CAAA,EACA9X,WAAA,CAAA,EACAgc,aAAA,CAAA,EACAnH,WAAA,sLACA,CAAA,EACAgF,UAAA9lB,GAAA,SAAA,WAAA,OAAA8lB,UAAAjU,WAAA,CAAA,CAAA,CACA,MAEAsnB,sBAAAlvB,UAAAC,IAAA,YAAA,CAEA,CCtBA,IAAA4hB,uBAAA,WACA,IAAA0N,EAAAz3B,SAAA2E,iBAAA,0BAAA,EACA8yB,GAAA,EAAAA,EAAA54B,QACA44B,EAAAjzB,QAAA,SAAAkzB,GACAA,EAAA/yB,iBAAA,cAAA,EACAH,QAAA,SAAAmzB,GACAA,EAAApyB,iBAAA,QAAA,WACA,IAAAqyB,EAAAD,EAAA92B,cAAA,mBAAA,EACAyrB,SAAA4F,KAAA0F,EAAA1F,IACA,CAAA,CACA,CAAA,CACA,CAAA,CAEA,ECbAlI,eAAA,WACA,IAEA2K,EAFA30B,SAAAa,cAAA,sBAAA,KAEA8zB,EAAA30B,SAAAC,cAAA,QAAA,GACA20B,MAAA,CAAA,EACAD,EAAAlQ,IAAA,yCACAzkB,SAAA80B,KAAAr0B,YAAAk0B,CAAA,EAEA","file":"scriptsbundle.js","sourcesContent":["/*!\r\n * Flickity PACKAGED v2.2.0\r\n * Touch, responsive, flickable carousels\r\n *\r\n * Licensed GPLv3 for open source use\r\n * or Flickity Commercial License for commercial use\r\n *\r\n * https://flickity.metafizzy.co\r\n * Copyright 2015-2018 Metafizzy\r\n */\r\n\r\n/**\r\n * Bridget makes jQuery widgets\r\n * v2.0.1\r\n * MIT license\r\n */\r\n\r\n/* jshint browser: true, strict: true, undef: true, unused: true */\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /*jshint strict: false */ /* globals define, module, require */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) {\r\n return factory( window, jQuery );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('jquery')\r\n );\r\n } else {\r\n // browser global\r\n window.jQueryBridget = factory(\r\n window,\r\n window.jQuery\r\n );\r\n }\r\n\r\n}( window, function factory( window, jQuery ) {\r\n'use strict';\r\n\r\n// ----- utils ----- //\r\n\r\nvar arraySlice = Array.prototype.slice;\r\n\r\n// helper function for logging errors\r\n// $.error breaks jQuery chaining\r\nvar console = window.console;\r\nvar logError = typeof console == 'undefined' ? function() {} :\r\n function( message ) {\r\n console.error( message );\r\n };\r\n\r\n// ----- jQueryBridget ----- //\r\n\r\nfunction jQueryBridget( namespace, PluginClass, $ ) {\r\n $ = $ || jQuery || window.jQuery;\r\n if ( !$ ) {\r\n return;\r\n }\r\n\r\n // add option method -> $().plugin('option', {...})\r\n if ( !PluginClass.prototype.option ) {\r\n // option setter\r\n PluginClass.prototype.option = function( opts ) {\r\n // bail out if not an object\r\n if ( !$.isPlainObject( opts ) ){\r\n return;\r\n }\r\n this.options = $.extend( true, this.options, opts );\r\n };\r\n }\r\n\r\n // make jQuery plugin\r\n $.fn[ namespace ] = function( arg0 /*, arg1 */ ) {\r\n if ( typeof arg0 == 'string' ) {\r\n // method call $().plugin( 'methodName', { options } )\r\n // shift arguments by 1\r\n var args = arraySlice.call( arguments, 1 );\r\n return methodCall( this, arg0, args );\r\n }\r\n // just $().plugin({ options })\r\n plainCall( this, arg0 );\r\n return this;\r\n };\r\n\r\n // $().plugin('methodName')\r\n function methodCall( $elems, methodName, args ) {\r\n var returnValue;\r\n var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\r\n\r\n $elems.each( function( i, elem ) {\r\n // get instance\r\n var instance = $.data( elem, namespace );\r\n if ( !instance ) {\r\n logError( namespace + ' not initialized. Cannot call methods, i.e. ' +\r\n pluginMethodStr );\r\n return;\r\n }\r\n\r\n var method = instance[ methodName ];\r\n if ( !method || methodName.charAt(0) == '_' ) {\r\n logError( pluginMethodStr + ' is not a valid method' );\r\n return;\r\n }\r\n\r\n // apply method, get return value\r\n var value = method.apply( instance, args );\r\n // set return value if value is returned, use only first value\r\n returnValue = returnValue === undefined ? value : returnValue;\r\n });\r\n\r\n return returnValue !== undefined ? returnValue : $elems;\r\n }\r\n\r\n function plainCall( $elems, options ) {\r\n $elems.each( function( i, elem ) {\r\n var instance = $.data( elem, namespace );\r\n if ( instance ) {\r\n // set options & init\r\n instance.option( options );\r\n instance._init();\r\n } else {\r\n // initialize new instance\r\n instance = new PluginClass( elem, options );\r\n $.data( elem, namespace, instance );\r\n }\r\n });\r\n }\r\n\r\n updateJQuery( $ );\r\n\r\n}\r\n\r\n// ----- updateJQuery ----- //\r\n\r\n// set $.bridget for v1 backwards compatibility\r\nfunction updateJQuery( $ ) {\r\n if ( !$ || ( $ && $.bridget ) ) {\r\n return;\r\n }\r\n $.bridget = jQueryBridget;\r\n}\r\n\r\nupdateJQuery( jQuery || window.jQuery );\r\n\r\n// ----- ----- //\r\n\r\nreturn jQueryBridget;\r\n\r\n}));\r\n\r\n/**\r\n * EvEmitter v1.1.0\r\n * Lil' event emitter\r\n * MIT License\r\n */\r\n\r\n/* jshint unused: true, undef: true, strict: true */\r\n\r\n( function( global, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */ /* globals define, module, window */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD - RequireJS\r\n define( 'ev-emitter/ev-emitter',factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS - Browserify, Webpack\r\n module.exports = factory();\r\n } else {\r\n // Browser globals\r\n global.EvEmitter = factory();\r\n }\r\n\r\n}( typeof window != 'undefined' ? window : this, function() {\r\n\r\n\r\n\r\nfunction EvEmitter() {}\r\n\r\nvar proto = EvEmitter.prototype;\r\n\r\nproto.on = function( eventName, listener ) {\r\n if ( !eventName || !listener ) {\r\n return;\r\n }\r\n // set events hash\r\n var events = this._events = this._events || {};\r\n // set listeners array\r\n var listeners = events[ eventName ] = events[ eventName ] || [];\r\n // only add once\r\n if ( listeners.indexOf( listener ) == -1 ) {\r\n listeners.push( listener );\r\n }\r\n\r\n return this;\r\n};\r\n\r\nproto.once = function( eventName, listener ) {\r\n if ( !eventName || !listener ) {\r\n return;\r\n }\r\n // add event\r\n this.on( eventName, listener );\r\n // set once flag\r\n // set onceEvents hash\r\n var onceEvents = this._onceEvents = this._onceEvents || {};\r\n // set onceListeners object\r\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\r\n // set flag\r\n onceListeners[ listener ] = true;\r\n\r\n return this;\r\n};\r\n\r\nproto.off = function( eventName, listener ) {\r\n var listeners = this._events && this._events[ eventName ];\r\n if ( !listeners || !listeners.length ) {\r\n return;\r\n }\r\n var index = listeners.indexOf( listener );\r\n if ( index != -1 ) {\r\n listeners.splice( index, 1 );\r\n }\r\n\r\n return this;\r\n};\r\n\r\nproto.emitEvent = function( eventName, args ) {\r\n var listeners = this._events && this._events[ eventName ];\r\n if ( !listeners || !listeners.length ) {\r\n return;\r\n }\r\n // copy over to avoid interference if .off() in listener\r\n listeners = listeners.slice(0);\r\n args = args || [];\r\n // once stuff\r\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\r\n\r\n for ( var i=0; i < listeners.length; i++ ) {\r\n var listener = listeners[i]\r\n var isOnce = onceListeners && onceListeners[ listener ];\r\n if ( isOnce ) {\r\n // remove listener\r\n // remove before trigger to prevent recursion\r\n this.off( eventName, listener );\r\n // unset once flag\r\n delete onceListeners[ listener ];\r\n }\r\n // trigger listener\r\n listener.apply( this, args );\r\n }\r\n\r\n return this;\r\n};\r\n\r\nproto.allOff = function() {\r\n delete this._events;\r\n delete this._onceEvents;\r\n};\r\n\r\nreturn EvEmitter;\r\n\r\n}));\r\n\r\n/*!\r\n * getSize v2.0.3\r\n * measure size of elements\r\n * MIT license\r\n */\r\n\r\n/* jshint browser: true, strict: true, undef: true, unused: true */\r\n/* globals console: false */\r\n\r\n( function( window, factory ) {\r\n /* jshint strict: false */ /* globals define, module */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'get-size/get-size',factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory();\r\n } else {\r\n // browser global\r\n window.getSize = factory();\r\n }\r\n\r\n})( window, function factory() {\r\n'use strict';\r\n\r\n// -------------------------- helpers -------------------------- //\r\n\r\n// get a number from a string, not a percentage\r\nfunction getStyleSize( value ) {\r\n var num = parseFloat( value );\r\n // not a percent like '100%', and a number\r\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\r\n return isValid && num;\r\n}\r\n\r\nfunction noop() {}\r\n\r\nvar logError = typeof console == 'undefined' ? noop :\r\n function( message ) {\r\n console.error( message );\r\n };\r\n\r\n// -------------------------- measurements -------------------------- //\r\n\r\nvar measurements = [\r\n 'paddingLeft',\r\n 'paddingRight',\r\n 'paddingTop',\r\n 'paddingBottom',\r\n 'marginLeft',\r\n 'marginRight',\r\n 'marginTop',\r\n 'marginBottom',\r\n 'borderLeftWidth',\r\n 'borderRightWidth',\r\n 'borderTopWidth',\r\n 'borderBottomWidth'\r\n];\r\n\r\nvar measurementsLength = measurements.length;\r\n\r\nfunction getZeroSize() {\r\n var size = {\r\n width: 0,\r\n height: 0,\r\n innerWidth: 0,\r\n innerHeight: 0,\r\n outerWidth: 0,\r\n outerHeight: 0\r\n };\r\n for ( var i=0; i < measurementsLength; i++ ) {\r\n var measurement = measurements[i];\r\n size[ measurement ] = 0;\r\n }\r\n return size;\r\n}\r\n\r\n// -------------------------- getStyle -------------------------- //\r\n\r\n/**\r\n * getStyle, get style of element, check for Firefox bug\r\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\r\n */\r\nfunction getStyle( elem ) {\r\n var style = getComputedStyle( elem );\r\n if ( !style ) {\r\n logError( 'Style returned ' + style +\r\n '. Are you running this code in a hidden iframe on Firefox? ' +\r\n 'See https://bit.ly/getsizebug1' );\r\n }\r\n return style;\r\n}\r\n\r\n// -------------------------- setup -------------------------- //\r\n\r\nvar isSetup = false;\r\n\r\nvar isBoxSizeOuter;\r\n\r\n/**\r\n * setup\r\n * check isBoxSizerOuter\r\n * do on first getSize() rather than on page load for Firefox bug\r\n */\r\nfunction setup() {\r\n // setup once\r\n if ( isSetup ) {\r\n return;\r\n }\r\n isSetup = true;\r\n\r\n // -------------------------- box sizing -------------------------- //\r\n\r\n /**\r\n * Chrome & Safari measure the outer-width on style.width on border-box elems\r\n * IE11 & Firefox<29 measures the inner-width\r\n */\r\n var div = document.createElement('div');\r\n div.style.width = '200px';\r\n div.style.padding = '1px 2px 3px 4px';\r\n div.style.borderStyle = 'solid';\r\n div.style.borderWidth = '1px 2px 3px 4px';\r\n div.style.boxSizing = 'border-box';\r\n\r\n var body = document.body || document.documentElement;\r\n body.appendChild( div );\r\n var style = getStyle( div );\r\n // round value for browser zoom. desandro/masonry#928\r\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\r\n getSize.isBoxSizeOuter = isBoxSizeOuter;\r\n\r\n body.removeChild( div );\r\n}\r\n\r\n// -------------------------- getSize -------------------------- //\r\n\r\nfunction getSize( elem ) {\r\n setup();\r\n\r\n // use querySeletor if elem is string\r\n if ( typeof elem == 'string' ) {\r\n elem = document.querySelector( elem );\r\n }\r\n\r\n // do not proceed on non-objects\r\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\r\n return;\r\n }\r\n\r\n var style = getStyle( elem );\r\n\r\n // if hidden, everything is 0\r\n if ( style.display == 'none' ) {\r\n return getZeroSize();\r\n }\r\n\r\n var size = {};\r\n size.width = elem.offsetWidth;\r\n size.height = elem.offsetHeight;\r\n\r\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\r\n\r\n // get all measurements\r\n for ( var i=0; i < measurementsLength; i++ ) {\r\n var measurement = measurements[i];\r\n var value = style[ measurement ];\r\n var num = parseFloat( value );\r\n // any 'auto', 'medium' value will be 0\r\n size[ measurement ] = !isNaN( num ) ? num : 0;\r\n }\r\n\r\n var paddingWidth = size.paddingLeft + size.paddingRight;\r\n var paddingHeight = size.paddingTop + size.paddingBottom;\r\n var marginWidth = size.marginLeft + size.marginRight;\r\n var marginHeight = size.marginTop + size.marginBottom;\r\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\r\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\r\n\r\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\r\n\r\n // overwrite width and height if we can get it from style\r\n var styleWidth = getStyleSize( style.width );\r\n if ( styleWidth !== false ) {\r\n size.width = styleWidth +\r\n // add padding and border unless it's already including it\r\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\r\n }\r\n\r\n var styleHeight = getStyleSize( style.height );\r\n if ( styleHeight !== false ) {\r\n size.height = styleHeight +\r\n // add padding and border unless it's already including it\r\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\r\n }\r\n\r\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\r\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\r\n\r\n size.outerWidth = size.width + marginWidth;\r\n size.outerHeight = size.height + marginHeight;\r\n\r\n return size;\r\n}\r\n\r\nreturn getSize;\r\n\r\n});\r\n\r\n/**\r\n * matchesSelector v2.0.2\r\n * matchesSelector( element, '.selector' )\r\n * MIT license\r\n */\r\n\r\n/*jshint browser: true, strict: true, undef: true, unused: true */\r\n\r\n( function( window, factory ) {\r\n /*global define: false, module: false */\r\n 'use strict';\r\n // universal module definition\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'desandro-matches-selector/matches-selector',factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory();\r\n } else {\r\n // browser global\r\n window.matchesSelector = factory();\r\n }\r\n\r\n}( window, function factory() {\r\n 'use strict';\r\n\r\n var matchesMethod = ( function() {\r\n var ElemProto = window.Element.prototype;\r\n // check for the standard method name first\r\n if ( ElemProto.matches ) {\r\n return 'matches';\r\n }\r\n // check un-prefixed\r\n if ( ElemProto.matchesSelector ) {\r\n return 'matchesSelector';\r\n }\r\n // check vendor prefixes\r\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\r\n\r\n for ( var i=0; i < prefixes.length; i++ ) {\r\n var prefix = prefixes[i];\r\n var method = prefix + 'MatchesSelector';\r\n if ( ElemProto[ method ] ) {\r\n return method;\r\n }\r\n }\r\n })();\r\n\r\n return function matchesSelector( elem, selector ) {\r\n return elem[ matchesMethod ]( selector );\r\n };\r\n\r\n}));\r\n\r\n/**\r\n * Fizzy UI utils v2.0.7\r\n * MIT license\r\n */\r\n\r\n/*jshint browser: true, undef: true, unused: true, strict: true */\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /*jshint strict: false */ /*globals define, module, require */\r\n\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'fizzy-ui-utils/utils',[\r\n 'desandro-matches-selector/matches-selector'\r\n ], function( matchesSelector ) {\r\n return factory( window, matchesSelector );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('desandro-matches-selector')\r\n );\r\n } else {\r\n // browser global\r\n window.fizzyUIUtils = factory(\r\n window,\r\n window.matchesSelector\r\n );\r\n }\r\n\r\n}( window, function factory( window, matchesSelector ) {\r\n\r\n\r\n\r\nvar utils = {};\r\n\r\n// ----- extend ----- //\r\n\r\n// extends objects\r\nutils.extend = function( a, b ) {\r\n for ( var prop in b ) {\r\n a[ prop ] = b[ prop ];\r\n }\r\n return a;\r\n};\r\n\r\n// ----- modulo ----- //\r\n\r\nutils.modulo = function( num, div ) {\r\n return ( ( num % div ) + div ) % div;\r\n};\r\n\r\n// ----- makeArray ----- //\r\n\r\nvar arraySlice = Array.prototype.slice;\r\n\r\n// turn element or nodeList into an array\r\nutils.makeArray = function( obj ) {\r\n if ( Array.isArray( obj ) ) {\r\n // use object if already an array\r\n return obj;\r\n }\r\n // return empty array if undefined or null. #6\r\n if ( obj === null || obj === undefined ) {\r\n return [];\r\n }\r\n\r\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\r\n if ( isArrayLike ) {\r\n // convert nodeList to array\r\n return arraySlice.call( obj );\r\n }\r\n\r\n // array of single index\r\n return [ obj ];\r\n};\r\n\r\n// ----- removeFrom ----- //\r\n\r\nutils.removeFrom = function( ary, obj ) {\r\n var index = ary.indexOf( obj );\r\n if ( index != -1 ) {\r\n ary.splice( index, 1 );\r\n }\r\n};\r\n\r\n// ----- getParent ----- //\r\n\r\nutils.getParent = function( elem, selector ) {\r\n while ( elem.parentNode && elem != document.body ) {\r\n elem = elem.parentNode;\r\n if ( matchesSelector( elem, selector ) ) {\r\n return elem;\r\n }\r\n }\r\n};\r\n\r\n// ----- getQueryElement ----- //\r\n\r\n// use element as selector string\r\nutils.getQueryElement = function( elem ) {\r\n if ( typeof elem == 'string' ) {\r\n return document.querySelector( elem );\r\n }\r\n return elem;\r\n};\r\n\r\n// ----- handleEvent ----- //\r\n\r\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\r\nutils.handleEvent = function( event ) {\r\n var method = 'on' + event.type;\r\n if ( this[ method ] ) {\r\n this[ method ]( event );\r\n }\r\n};\r\n\r\n// ----- filterFindElements ----- //\r\n\r\nutils.filterFindElements = function( elems, selector ) {\r\n // make array of elems\r\n elems = utils.makeArray( elems );\r\n var ffElems = [];\r\n\r\n elems.forEach( function( elem ) {\r\n // check that elem is an actual element\r\n if ( !( elem instanceof HTMLElement ) ) {\r\n return;\r\n }\r\n // add elem if no selector\r\n if ( !selector ) {\r\n ffElems.push( elem );\r\n return;\r\n }\r\n // filter & find items if we have a selector\r\n // filter\r\n if ( matchesSelector( elem, selector ) ) {\r\n ffElems.push( elem );\r\n }\r\n // find children\r\n var childElems = elem.querySelectorAll( selector );\r\n // concat childElems to filterFound array\r\n for ( var i=0; i < childElems.length; i++ ) {\r\n ffElems.push( childElems[i] );\r\n }\r\n });\r\n\r\n return ffElems;\r\n};\r\n\r\n// ----- debounceMethod ----- //\r\n\r\nutils.debounceMethod = function( _class, methodName, threshold ) {\r\n threshold = threshold || 100;\r\n // original method\r\n var method = _class.prototype[ methodName ];\r\n var timeoutName = methodName + 'Timeout';\r\n\r\n _class.prototype[ methodName ] = function() {\r\n var timeout = this[ timeoutName ];\r\n clearTimeout( timeout );\r\n\r\n var args = arguments;\r\n var _this = this;\r\n this[ timeoutName ] = setTimeout( function() {\r\n method.apply( _this, args );\r\n delete _this[ timeoutName ];\r\n }, threshold );\r\n };\r\n};\r\n\r\n// ----- docReady ----- //\r\n\r\nutils.docReady = function( callback ) {\r\n var readyState = document.readyState;\r\n if ( readyState == 'complete' || readyState == 'interactive' ) {\r\n // do async to allow for other scripts to run. metafizzy/flickity#441\r\n setTimeout( callback );\r\n } else {\r\n document.addEventListener( 'DOMContentLoaded', callback );\r\n }\r\n};\r\n\r\n// ----- htmlInit ----- //\r\n\r\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\r\nutils.toDashed = function( str ) {\r\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\r\n return $1 + '-' + $2;\r\n }).toLowerCase();\r\n};\r\n\r\nvar console = window.console;\r\n/**\r\n * allow user to initialize classes via [data-namespace] or .js-namespace class\r\n * htmlInit( Widget, 'widgetName' )\r\n * options are parsed from data-namespace-options\r\n */\r\nutils.htmlInit = function( WidgetClass, namespace ) {\r\n utils.docReady( function() {\r\n var dashedNamespace = utils.toDashed( namespace );\r\n var dataAttr = 'data-' + dashedNamespace;\r\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\r\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\r\n var elems = utils.makeArray( dataAttrElems )\r\n .concat( utils.makeArray( jsDashElems ) );\r\n var dataOptionsAttr = dataAttr + '-options';\r\n var jQuery = window.jQuery;\r\n\r\n elems.forEach( function( elem ) {\r\n var attr = elem.getAttribute( dataAttr ) ||\r\n elem.getAttribute( dataOptionsAttr );\r\n var options;\r\n try {\r\n options = attr && JSON.parse( attr );\r\n } catch ( error ) {\r\n // log error, do not initialize\r\n if ( console ) {\r\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\r\n ': ' + error );\r\n }\r\n return;\r\n }\r\n // initialize\r\n var instance = new WidgetClass( elem, options );\r\n // make available via $().data('namespace')\r\n if ( jQuery ) {\r\n jQuery.data( elem, namespace, instance );\r\n }\r\n });\r\n\r\n });\r\n};\r\n\r\n// ----- ----- //\r\n\r\nreturn utils;\r\n\r\n}));\r\n\r\n// Flickity.Cell\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/cell',[\r\n 'get-size/get-size'\r\n ], function( getSize ) {\r\n return factory( window, getSize );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('get-size')\r\n );\r\n } else {\r\n // browser global\r\n window.Flickity = window.Flickity || {};\r\n window.Flickity.Cell = factory(\r\n window,\r\n window.getSize\r\n );\r\n }\r\n\r\n}( window, function factory( window, getSize ) {\r\n\r\n\r\n\r\nfunction Cell( elem, parent ) {\r\n this.element = elem;\r\n this.parent = parent;\r\n\r\n this.create();\r\n}\r\n\r\nvar proto = Cell.prototype;\r\n\r\nproto.create = function() {\r\n this.element.style.position = 'absolute';\r\n this.element.setAttribute( 'aria-hidden', 'true' );\r\n this.x = 0;\r\n this.shift = 0;\r\n};\r\n\r\nproto.destroy = function() {\r\n // reset style\r\n this.unselect();\r\n this.element.style.position = '';\r\n var side = this.parent.originSide;\r\n this.element.style[ side ] = '';\r\n};\r\n\r\nproto.getSize = function() {\r\n this.size = getSize( this.element );\r\n};\r\n\r\nproto.setPosition = function( x ) {\r\n this.x = x;\r\n this.updateTarget();\r\n this.renderPosition( x );\r\n};\r\n\r\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\r\nproto.updateTarget = proto.setDefaultTarget = function() {\r\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\r\n this.target = this.x + this.size[ marginProperty ] +\r\n this.size.width * this.parent.cellAlign;\r\n};\r\n\r\nproto.renderPosition = function( x ) {\r\n // render position of cell with in slider\r\n var side = this.parent.originSide;\r\n this.element.style[ side ] = this.parent.getPositionValue( x );\r\n};\r\n\r\nproto.select = function() {\r\n this.element.classList.add('is-selected');\r\n this.element.removeAttribute('aria-hidden');\r\n};\r\n\r\nproto.unselect = function() {\r\n this.element.classList.remove('is-selected');\r\n this.element.setAttribute( 'aria-hidden', 'true' );\r\n};\r\n\r\n/**\r\n * @param {Integer} factor - 0, 1, or -1\r\n**/\r\nproto.wrapShift = function( shift ) {\r\n this.shift = shift;\r\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\r\n};\r\n\r\nproto.remove = function() {\r\n this.element.parentNode.removeChild( this.element );\r\n};\r\n\r\nreturn Cell;\r\n\r\n}));\r\n\r\n// slide\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/slide',factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory();\r\n } else {\r\n // browser global\r\n window.Flickity = window.Flickity || {};\r\n window.Flickity.Slide = factory();\r\n }\r\n\r\n}( window, function factory() {\r\n'use strict';\r\n\r\nfunction Slide( parent ) {\r\n this.parent = parent;\r\n this.isOriginLeft = parent.originSide == 'left';\r\n this.cells = [];\r\n this.outerWidth = 0;\r\n this.height = 0;\r\n}\r\n\r\nvar proto = Slide.prototype;\r\n\r\nproto.addCell = function( cell ) {\r\n this.cells.push( cell );\r\n this.outerWidth += cell.size.outerWidth;\r\n this.height = Math.max( cell.size.outerHeight, this.height );\r\n // first cell stuff\r\n if ( this.cells.length == 1 ) {\r\n this.x = cell.x; // x comes from first cell\r\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\r\n this.firstMargin = cell.size[ beginMargin ];\r\n }\r\n};\r\n\r\nproto.updateTarget = function() {\r\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\r\n var lastCell = this.getLastCell();\r\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\r\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\r\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\r\n};\r\n\r\nproto.getLastCell = function() {\r\n return this.cells[ this.cells.length - 1 ];\r\n};\r\n\r\nproto.select = function() {\r\n this.cells.forEach( function( cell ) {\r\n cell.select();\r\n });\r\n};\r\n\r\nproto.unselect = function() {\r\n this.cells.forEach( function( cell ) {\r\n cell.unselect();\r\n });\r\n};\r\n\r\nproto.getCellElements = function() {\r\n return this.cells.map( function( cell ) {\r\n return cell.element;\r\n });\r\n};\r\n\r\nreturn Slide;\r\n\r\n}));\r\n\r\n// animate\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/animate',[\r\n 'fizzy-ui-utils/utils'\r\n ], function( utils ) {\r\n return factory( window, utils );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n window.Flickity = window.Flickity || {};\r\n window.Flickity.animatePrototype = factory(\r\n window,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( window, utils ) {\r\n\r\n\r\n\r\n// -------------------------- animate -------------------------- //\r\n\r\nvar proto = {};\r\n\r\nproto.startAnimation = function() {\r\n if ( this.isAnimating ) {\r\n return;\r\n }\r\n\r\n this.isAnimating = true;\r\n this.restingFrames = 0;\r\n this.animate();\r\n};\r\n\r\nproto.animate = function() {\r\n this.applyDragForce();\r\n this.applySelectedAttraction();\r\n\r\n var previousX = this.x;\r\n\r\n this.integratePhysics();\r\n this.positionSlider();\r\n this.settle( previousX );\r\n // animate next frame\r\n if ( this.isAnimating ) {\r\n var _this = this;\r\n requestAnimationFrame( function animateFrame() {\r\n _this.animate();\r\n });\r\n }\r\n};\r\n\r\nproto.positionSlider = function() {\r\n var x = this.x;\r\n // wrap position around\r\n if ( this.options.wrapAround && this.cells.length > 1 ) {\r\n x = utils.modulo( x, this.slideableWidth );\r\n x = x - this.slideableWidth;\r\n this.shiftWrapCells( x );\r\n }\r\n\r\n this.setTranslateX( x, this.isAnimating );\r\n this.dispatchScrollEvent();\r\n};\r\n\r\nproto.setTranslateX = function( x, is3d ) {\r\n x += this.cursorPosition;\r\n // reverse if right-to-left and using transform\r\n x = this.options.rightToLeft ? -x : x;\r\n var translateX = this.getPositionValue( x );\r\n // use 3D tranforms for hardware acceleration on iOS\r\n // but use 2D when settled, for better font-rendering\r\n this.slider.style.transform = is3d ?\r\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\r\n};\r\n\r\nproto.dispatchScrollEvent = function() {\r\n var firstSlide = this.slides[0];\r\n if ( !firstSlide ) {\r\n return;\r\n }\r\n var positionX = -this.x - firstSlide.target;\r\n var progress = positionX / this.slidesWidth;\r\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\r\n};\r\n\r\nproto.positionSliderAtSelected = function() {\r\n if ( !this.cells.length ) {\r\n return;\r\n }\r\n this.x = -this.selectedSlide.target;\r\n this.velocity = 0; // stop wobble\r\n this.positionSlider();\r\n};\r\n\r\nproto.getPositionValue = function( position ) {\r\n if ( this.options.percentPosition ) {\r\n // percent position, round to 2 digits, like 12.34%\r\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';\r\n } else {\r\n // pixel positioning\r\n return Math.round( position ) + 'px';\r\n }\r\n};\r\n\r\nproto.settle = function( previousX ) {\r\n // keep track of frames where x hasn't moved\r\n if ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {\r\n this.restingFrames++;\r\n }\r\n // stop animating if resting for 3 or more frames\r\n if ( this.restingFrames > 2 ) {\r\n this.isAnimating = false;\r\n delete this.isFreeScrolling;\r\n // render position with translateX when settled\r\n this.positionSlider();\r\n this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\r\n }\r\n};\r\n\r\nproto.shiftWrapCells = function( x ) {\r\n // shift before cells\r\n var beforeGap = this.cursorPosition + x;\r\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\r\n // shift after cells\r\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\r\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\r\n};\r\n\r\nproto._shiftCells = function( cells, gap, shift ) {\r\n for ( var i=0; i < cells.length; i++ ) {\r\n var cell = cells[i];\r\n var cellShift = gap > 0 ? shift : 0;\r\n cell.wrapShift( cellShift );\r\n gap -= cell.size.outerWidth;\r\n }\r\n};\r\n\r\nproto._unshiftCells = function( cells ) {\r\n if ( !cells || !cells.length ) {\r\n return;\r\n }\r\n for ( var i=0; i < cells.length; i++ ) {\r\n cells[i].wrapShift( 0 );\r\n }\r\n};\r\n\r\n// -------------------------- physics -------------------------- //\r\n\r\nproto.integratePhysics = function() {\r\n this.x += this.velocity;\r\n this.velocity *= this.getFrictionFactor();\r\n};\r\n\r\nproto.applyForce = function( force ) {\r\n this.velocity += force;\r\n};\r\n\r\nproto.getFrictionFactor = function() {\r\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\r\n};\r\n\r\nproto.getRestingPosition = function() {\r\n // my thanks to Steven Wittens, who simplified this math greatly\r\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\r\n};\r\n\r\nproto.applyDragForce = function() {\r\n if ( !this.isDraggable || !this.isPointerDown ) {\r\n return;\r\n }\r\n // change the position to drag position by applying force\r\n var dragVelocity = this.dragX - this.x;\r\n var dragForce = dragVelocity - this.velocity;\r\n this.applyForce( dragForce );\r\n};\r\n\r\nproto.applySelectedAttraction = function() {\r\n // do not attract if pointer down or no slides\r\n var dragDown = this.isDraggable && this.isPointerDown;\r\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\r\n return;\r\n }\r\n var distance = this.selectedSlide.target * -1 - this.x;\r\n var force = distance * this.options.selectedAttraction;\r\n this.applyForce( force );\r\n};\r\n\r\nreturn proto;\r\n\r\n}));\r\n\r\n// Flickity main\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/flickity',[\r\n 'ev-emitter/ev-emitter',\r\n 'get-size/get-size',\r\n 'fizzy-ui-utils/utils',\r\n './cell',\r\n './slide',\r\n './animate'\r\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\r\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('ev-emitter'),\r\n require('get-size'),\r\n require('fizzy-ui-utils'),\r\n require('./cell'),\r\n require('./slide'),\r\n require('./animate')\r\n );\r\n } else {\r\n // browser global\r\n var _Flickity = window.Flickity;\r\n\r\n window.Flickity = factory(\r\n window,\r\n window.EvEmitter,\r\n window.getSize,\r\n window.fizzyUIUtils,\r\n _Flickity.Cell,\r\n _Flickity.Slide,\r\n _Flickity.animatePrototype\r\n );\r\n }\r\n\r\n}( window, function factory( window, EvEmitter, getSize,\r\n utils, Cell, Slide, animatePrototype ) {\r\n\r\n\r\n\r\n// vars\r\nvar jQuery = window.jQuery;\r\nvar getComputedStyle = window.getComputedStyle;\r\nvar console = window.console;\r\n\r\nfunction moveElements( elems, toElem ) {\r\n elems = utils.makeArray( elems );\r\n while ( elems.length ) {\r\n toElem.appendChild( elems.shift() );\r\n }\r\n}\r\n\r\n// -------------------------- Flickity -------------------------- //\r\n\r\n// globally unique identifiers\r\nvar GUID = 0;\r\n// internal store of all Flickity intances\r\nvar instances = {};\r\n\r\nfunction Flickity( element, options ) {\r\n var queryElement = utils.getQueryElement( element );\r\n if ( !queryElement ) {\r\n if ( console ) {\r\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\r\n }\r\n return;\r\n }\r\n this.element = queryElement;\r\n // do not initialize twice on same element\r\n if ( this.element.flickityGUID ) {\r\n var instance = instances[ this.element.flickityGUID ];\r\n instance.option( options );\r\n return instance;\r\n }\r\n\r\n // add jQuery\r\n if ( jQuery ) {\r\n this.$element = jQuery( this.element );\r\n }\r\n // options\r\n this.options = utils.extend( {}, this.constructor.defaults );\r\n this.option( options );\r\n\r\n // kick things off\r\n this._create();\r\n}\r\n\r\nFlickity.defaults = {\r\n accessibility: true,\r\n // adaptiveHeight: false,\r\n cellAlign: 'center',\r\n // cellSelector: undefined,\r\n // contain: false,\r\n freeScrollFriction: 0.075, // friction when free-scrolling\r\n friction: 0.28, // friction when selecting\r\n namespaceJQueryEvents: true,\r\n // initialIndex: 0,\r\n percentPosition: true,\r\n resize: true,\r\n selectedAttraction: 0.025,\r\n setGallerySize: true\r\n // watchCSS: false,\r\n // wrapAround: false\r\n};\r\n\r\n// hash of methods triggered on _create()\r\nFlickity.createMethods = [];\r\n\r\nvar proto = Flickity.prototype;\r\n// inherit EventEmitter\r\nutils.extend( proto, EvEmitter.prototype );\r\n\r\nproto._create = function() {\r\n // add id for Flickity.data\r\n var id = this.guid = ++GUID;\r\n this.element.flickityGUID = id; // expando\r\n instances[ id ] = this; // associate via id\r\n // initial properties\r\n this.selectedIndex = 0;\r\n // how many frames slider has been in same position\r\n this.restingFrames = 0;\r\n // initial physics properties\r\n this.x = 0;\r\n this.velocity = 0;\r\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\r\n // create viewport & slider\r\n this.viewport = document.createElement('div');\r\n this.viewport.className = 'flickity-viewport';\r\n this._createSlider();\r\n\r\n if ( this.options.resize || this.options.watchCSS ) {\r\n window.addEventListener( 'resize', this );\r\n }\r\n\r\n // add listeners from on option\r\n for ( var eventName in this.options.on ) {\r\n var listener = this.options.on[ eventName ];\r\n this.on( eventName, listener );\r\n }\r\n\r\n Flickity.createMethods.forEach( function( method ) {\r\n this[ method ]();\r\n }, this );\r\n\r\n if ( this.options.watchCSS ) {\r\n this.watchCSS();\r\n } else {\r\n this.activate();\r\n }\r\n\r\n};\r\n\r\n/**\r\n * set options\r\n * @param {Object} opts\r\n */\r\nproto.option = function( opts ) {\r\n utils.extend( this.options, opts );\r\n};\r\n\r\nproto.activate = function() {\r\n if ( this.isActive ) {\r\n return;\r\n }\r\n this.isActive = true;\r\n this.element.classList.add('flickity-enabled');\r\n if ( this.options.rightToLeft ) {\r\n this.element.classList.add('flickity-rtl');\r\n }\r\n\r\n this.getSize();\r\n // move initial cell elements so they can be loaded as cells\r\n var cellElems = this._filterFindCellElements( this.element.children );\r\n moveElements( cellElems, this.slider );\r\n this.viewport.appendChild( this.slider );\r\n this.element.appendChild( this.viewport );\r\n // get cells from children\r\n this.reloadCells();\r\n\r\n if ( this.options.accessibility ) {\r\n // allow element to focusable\r\n this.element.tabIndex = 0;\r\n // listen for key presses\r\n this.element.addEventListener( 'keydown', this );\r\n }\r\n\r\n this.emitEvent('activate');\r\n this.selectInitialIndex();\r\n // flag for initial activation, for using initialIndex\r\n this.isInitActivated = true;\r\n // ready event. #493\r\n this.dispatchEvent('ready');\r\n};\r\n\r\n// slider positions the cells\r\nproto._createSlider = function() {\r\n // slider element does all the positioning\r\n var slider = document.createElement('div');\r\n slider.className = 'flickity-slider';\r\n slider.style[ this.originSide ] = 0;\r\n this.slider = slider;\r\n};\r\n\r\nproto._filterFindCellElements = function( elems ) {\r\n return utils.filterFindElements( elems, this.options.cellSelector );\r\n};\r\n\r\n// goes through all children\r\nproto.reloadCells = function() {\r\n // collection of item elements\r\n this.cells = this._makeCells( this.slider.children );\r\n this.positionCells();\r\n this._getWrapShiftCells();\r\n this.setGallerySize();\r\n};\r\n\r\n/**\r\n * turn elements into Flickity.Cells\r\n * @param {Array or NodeList or HTMLElement} elems\r\n * @returns {Array} items - collection of new Flickity Cells\r\n */\r\nproto._makeCells = function( elems ) {\r\n var cellElems = this._filterFindCellElements( elems );\r\n\r\n // create new Flickity for collection\r\n var cells = cellElems.map( function( cellElem ) {\r\n return new Cell( cellElem, this );\r\n }, this );\r\n\r\n return cells;\r\n};\r\n\r\nproto.getLastCell = function() {\r\n return this.cells[ this.cells.length - 1 ];\r\n};\r\n\r\nproto.getLastSlide = function() {\r\n return this.slides[ this.slides.length - 1 ];\r\n};\r\n\r\n// positions all cells\r\nproto.positionCells = function() {\r\n // size all cells\r\n this._sizeCells( this.cells );\r\n // position all cells\r\n this._positionCells( 0 );\r\n};\r\n\r\n/**\r\n * position certain cells\r\n * @param {Integer} index - which cell to start with\r\n */\r\nproto._positionCells = function( index ) {\r\n index = index || 0;\r\n // also measure maxCellHeight\r\n // start 0 if positioning all cells\r\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\r\n var cellX = 0;\r\n // get cellX\r\n if ( index > 0 ) {\r\n var startCell = this.cells[ index - 1 ];\r\n cellX = startCell.x + startCell.size.outerWidth;\r\n }\r\n var len = this.cells.length;\r\n for ( var i=index; i < len; i++ ) {\r\n var cell = this.cells[i];\r\n cell.setPosition( cellX );\r\n cellX += cell.size.outerWidth;\r\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\r\n }\r\n // keep track of cellX for wrap-around\r\n this.slideableWidth = cellX;\r\n // slides\r\n this.updateSlides();\r\n // contain slides target\r\n this._containSlides();\r\n // update slidesWidth\r\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\r\n};\r\n\r\n/**\r\n * cell.getSize() on multiple cells\r\n * @param {Array} cells\r\n */\r\nproto._sizeCells = function( cells ) {\r\n cells.forEach( function( cell ) {\r\n cell.getSize();\r\n });\r\n};\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nproto.updateSlides = function() {\r\n this.slides = [];\r\n if ( !this.cells.length ) {\r\n return;\r\n }\r\n\r\n var slide = new Slide( this );\r\n this.slides.push( slide );\r\n var isOriginLeft = this.originSide == 'left';\r\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\r\n\r\n var canCellFit = this._getCanCellFit();\r\n\r\n this.cells.forEach( function( cell, i ) {\r\n // just add cell if first cell in slide\r\n if ( !slide.cells.length ) {\r\n slide.addCell( cell );\r\n return;\r\n }\r\n\r\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\r\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\r\n\r\n if ( canCellFit.call( this, i, slideWidth ) ) {\r\n slide.addCell( cell );\r\n } else {\r\n // doesn't fit, new slide\r\n slide.updateTarget();\r\n\r\n slide = new Slide( this );\r\n this.slides.push( slide );\r\n slide.addCell( cell );\r\n }\r\n }, this );\r\n // last slide\r\n slide.updateTarget();\r\n // update .selectedSlide\r\n this.updateSelectedSlide();\r\n};\r\n\r\nproto._getCanCellFit = function() {\r\n var groupCells = this.options.groupCells;\r\n if ( !groupCells ) {\r\n return function() {\r\n return false;\r\n };\r\n } else if ( typeof groupCells == 'number' ) {\r\n // group by number. 3 -> [0,1,2], [3,4,5], ...\r\n var number = parseInt( groupCells, 10 );\r\n return function( i ) {\r\n return ( i % number ) !== 0;\r\n };\r\n }\r\n // default, group by width of slide\r\n // parse '75%\r\n var percentMatch = typeof groupCells == 'string' &&\r\n groupCells.match(/^(\\d+)%$/);\r\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\r\n return function( i, slideWidth ) {\r\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\r\n };\r\n};\r\n\r\n// alias _init for jQuery plugin .flickity()\r\nproto._init =\r\nproto.reposition = function() {\r\n this.positionCells();\r\n this.positionSliderAtSelected();\r\n};\r\n\r\nproto.getSize = function() {\r\n this.size = getSize( this.element );\r\n this.setCellAlign();\r\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\r\n};\r\n\r\nvar cellAlignShorthands = {\r\n // cell align, then based on origin side\r\n center: {\r\n left: 0.5,\r\n right: 0.5\r\n },\r\n left: {\r\n left: 0,\r\n right: 1\r\n },\r\n right: {\r\n right: 0,\r\n left: 1\r\n }\r\n};\r\n\r\nproto.setCellAlign = function() {\r\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\r\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\r\n};\r\n\r\nproto.setGallerySize = function() {\r\n if ( this.options.setGallerySize ) {\r\n var height = this.options.adaptiveHeight && this.selectedSlide ?\r\n this.selectedSlide.height : this.maxCellHeight;\r\n this.viewport.style.height = height + 'px';\r\n }\r\n};\r\n\r\nproto._getWrapShiftCells = function() {\r\n // only for wrap-around\r\n if ( !this.options.wrapAround ) {\r\n return;\r\n }\r\n // unshift previous cells\r\n this._unshiftCells( this.beforeShiftCells );\r\n this._unshiftCells( this.afterShiftCells );\r\n // get before cells\r\n // initial gap\r\n var gapX = this.cursorPosition;\r\n var cellIndex = this.cells.length - 1;\r\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\r\n // get after cells\r\n // ending gap between last cell and end of gallery viewport\r\n gapX = this.size.innerWidth - this.cursorPosition;\r\n // start cloning at first cell, working forwards\r\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\r\n};\r\n\r\nproto._getGapCells = function( gapX, cellIndex, increment ) {\r\n // keep adding cells until the cover the initial gap\r\n var cells = [];\r\n while ( gapX > 0 ) {\r\n var cell = this.cells[ cellIndex ];\r\n if ( !cell ) {\r\n break;\r\n }\r\n cells.push( cell );\r\n cellIndex += increment;\r\n gapX -= cell.size.outerWidth;\r\n }\r\n return cells;\r\n};\r\n\r\n// ----- contain ----- //\r\n\r\n// contain cell targets so no excess sliding\r\nproto._containSlides = function() {\r\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\r\n return;\r\n }\r\n var isRightToLeft = this.options.rightToLeft;\r\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\r\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\r\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\r\n // content is less than gallery size\r\n var isContentSmaller = contentWidth < this.size.innerWidth;\r\n // bounds\r\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\r\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\r\n // contain each cell target\r\n this.slides.forEach( function( slide ) {\r\n if ( isContentSmaller ) {\r\n // all cells fit inside gallery\r\n slide.target = contentWidth * this.cellAlign;\r\n } else {\r\n // contain to bounds\r\n slide.target = Math.max( slide.target, beginBound );\r\n slide.target = Math.min( slide.target, endBound );\r\n }\r\n }, this );\r\n};\r\n\r\n// ----- ----- //\r\n\r\n/**\r\n * emits events via eventEmitter and jQuery events\r\n * @param {String} type - name of event\r\n * @param {Event} event - original event\r\n * @param {Array} args - extra arguments\r\n */\r\nproto.dispatchEvent = function( type, event, args ) {\r\n var emitArgs = event ? [ event ].concat( args ) : args;\r\n this.emitEvent( type, emitArgs );\r\n\r\n if ( jQuery && this.$element ) {\r\n // default trigger with type if no event\r\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\r\n var $event = type;\r\n if ( event ) {\r\n // create jQuery event\r\n var jQEvent = jQuery.Event( event );\r\n jQEvent.type = type;\r\n $event = jQEvent;\r\n }\r\n this.$element.trigger( $event, args );\r\n }\r\n};\r\n\r\n// -------------------------- select -------------------------- //\r\n\r\n/**\r\n * @param {Integer} index - index of the slide\r\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\r\n * @param {Boolean} isInstant - will immediately set position at selected cell\r\n */\r\nproto.select = function( index, isWrap, isInstant ) {\r\n if ( !this.isActive ) {\r\n return;\r\n }\r\n index = parseInt( index, 10 );\r\n this._wrapSelect( index );\r\n\r\n if ( this.options.wrapAround || isWrap ) {\r\n index = utils.modulo( index, this.slides.length );\r\n }\r\n // bail if invalid index\r\n if ( !this.slides[ index ] ) {\r\n return;\r\n }\r\n var prevIndex = this.selectedIndex;\r\n this.selectedIndex = index;\r\n this.updateSelectedSlide();\r\n if ( isInstant ) {\r\n this.positionSliderAtSelected();\r\n } else {\r\n this.startAnimation();\r\n }\r\n if ( this.options.adaptiveHeight ) {\r\n this.setGallerySize();\r\n }\r\n // events\r\n this.dispatchEvent( 'select', null, [ index ] );\r\n // change event if new index\r\n if ( index != prevIndex ) {\r\n this.dispatchEvent( 'change', null, [ index ] );\r\n }\r\n // old v1 event name, remove in v3\r\n this.dispatchEvent('cellSelect');\r\n};\r\n\r\n// wraps position for wrapAround, to move to closest slide. #113\r\nproto._wrapSelect = function( index ) {\r\n var len = this.slides.length;\r\n var isWrapping = this.options.wrapAround && len > 1;\r\n if ( !isWrapping ) {\r\n return index;\r\n }\r\n var wrapIndex = utils.modulo( index, len );\r\n // go to shortest\r\n var delta = Math.abs( wrapIndex - this.selectedIndex );\r\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\r\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\r\n if ( !this.isDragSelect && backWrapDelta < delta ) {\r\n index += len;\r\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\r\n index -= len;\r\n }\r\n // wrap position so slider is within normal area\r\n if ( index < 0 ) {\r\n this.x -= this.slideableWidth;\r\n } else if ( index >= len ) {\r\n this.x += this.slideableWidth;\r\n }\r\n};\r\n\r\nproto.previous = function( isWrap, isInstant ) {\r\n this.select( this.selectedIndex - 1, isWrap, isInstant );\r\n};\r\n\r\nproto.next = function( isWrap, isInstant ) {\r\n this.select( this.selectedIndex + 1, isWrap, isInstant );\r\n};\r\n\r\nproto.updateSelectedSlide = function() {\r\n var slide = this.slides[ this.selectedIndex ];\r\n // selectedIndex could be outside of slides, if triggered before resize()\r\n if ( !slide ) {\r\n return;\r\n }\r\n // unselect previous selected slide\r\n this.unselectSelectedSlide();\r\n // update new selected slide\r\n this.selectedSlide = slide;\r\n slide.select();\r\n this.selectedCells = slide.cells;\r\n this.selectedElements = slide.getCellElements();\r\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\r\n // Remove in v3?\r\n this.selectedCell = slide.cells[0];\r\n this.selectedElement = this.selectedElements[0];\r\n};\r\n\r\nproto.unselectSelectedSlide = function() {\r\n if ( this.selectedSlide ) {\r\n this.selectedSlide.unselect();\r\n }\r\n};\r\n\r\nproto.selectInitialIndex = function() {\r\n var initialIndex = this.options.initialIndex;\r\n // already activated, select previous selectedIndex\r\n if ( this.isInitActivated ) {\r\n this.select( this.selectedIndex, false, true );\r\n return;\r\n }\r\n // select with selector string\r\n if ( initialIndex && typeof initialIndex == 'string' ) {\r\n var cell = this.queryCell( initialIndex );\r\n if ( cell ) {\r\n this.selectCell( initialIndex, false, true );\r\n return;\r\n }\r\n }\r\n\r\n var index = 0;\r\n // select with number\r\n if ( initialIndex && this.slides[ initialIndex ] ) {\r\n index = initialIndex;\r\n }\r\n // select instantly\r\n this.select( index, false, true );\r\n};\r\n\r\n/**\r\n * select slide from number or cell element\r\n * @param {Element or Number} elem\r\n */\r\nproto.selectCell = function( value, isWrap, isInstant ) {\r\n // get cell\r\n var cell = this.queryCell( value );\r\n if ( !cell ) {\r\n return;\r\n }\r\n\r\n var index = this.getCellSlideIndex( cell );\r\n this.select( index, isWrap, isInstant );\r\n};\r\n\r\nproto.getCellSlideIndex = function( cell ) {\r\n // get index of slides that has cell\r\n for ( var i=0; i < this.slides.length; i++ ) {\r\n var slide = this.slides[i];\r\n var index = slide.cells.indexOf( cell );\r\n if ( index != -1 ) {\r\n return i;\r\n }\r\n }\r\n};\r\n\r\n// -------------------------- get cells -------------------------- //\r\n\r\n/**\r\n * get Flickity.Cell, given an Element\r\n * @param {Element} elem\r\n * @returns {Flickity.Cell} item\r\n */\r\nproto.getCell = function( elem ) {\r\n // loop through cells to get the one that matches\r\n for ( var i=0; i < this.cells.length; i++ ) {\r\n var cell = this.cells[i];\r\n if ( cell.element == elem ) {\r\n return cell;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * get collection of Flickity.Cells, given Elements\r\n * @param {Element, Array, NodeList} elems\r\n * @returns {Array} cells - Flickity.Cells\r\n */\r\nproto.getCells = function( elems ) {\r\n elems = utils.makeArray( elems );\r\n var cells = [];\r\n elems.forEach( function( elem ) {\r\n var cell = this.getCell( elem );\r\n if ( cell ) {\r\n cells.push( cell );\r\n }\r\n }, this );\r\n return cells;\r\n};\r\n\r\n/**\r\n * get cell elements\r\n * @returns {Array} cellElems\r\n */\r\nproto.getCellElements = function() {\r\n return this.cells.map( function( cell ) {\r\n return cell.element;\r\n });\r\n};\r\n\r\n/**\r\n * get parent cell from an element\r\n * @param {Element} elem\r\n * @returns {Flickit.Cell} cell\r\n */\r\nproto.getParentCell = function( elem ) {\r\n // first check if elem is cell\r\n var cell = this.getCell( elem );\r\n if ( cell ) {\r\n return cell;\r\n }\r\n // try to get parent cell elem\r\n elem = utils.getParent( elem, '.flickity-slider > *' );\r\n return this.getCell( elem );\r\n};\r\n\r\n/**\r\n * get cells adjacent to a slide\r\n * @param {Integer} adjCount - number of adjacent slides\r\n * @param {Integer} index - index of slide to start\r\n * @returns {Array} cells - array of Flickity.Cells\r\n */\r\nproto.getAdjacentCellElements = function( adjCount, index ) {\r\n if ( !adjCount ) {\r\n return this.selectedSlide.getCellElements();\r\n }\r\n index = index === undefined ? this.selectedIndex : index;\r\n\r\n var len = this.slides.length;\r\n if ( 1 + ( adjCount * 2 ) >= len ) {\r\n return this.getCellElements();\r\n }\r\n\r\n var cellElems = [];\r\n for ( var i = index - adjCount; i <= index + adjCount ; i++ ) {\r\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\r\n var slide = this.slides[ slideIndex ];\r\n if ( slide ) {\r\n cellElems = cellElems.concat( slide.getCellElements() );\r\n }\r\n }\r\n return cellElems;\r\n};\r\n\r\n/**\r\n * select slide from number or cell element\r\n * @param {Element, Selector String, or Number} selector\r\n */\r\nproto.queryCell = function( selector ) {\r\n if ( typeof selector == 'number' ) {\r\n // use number as index\r\n return this.cells[ selector ];\r\n }\r\n if ( typeof selector == 'string' ) {\r\n // do not select invalid selectors from hash: #123, #/. #791\r\n if ( selector.match(/^[#\\.]?[\\d\\/]/) ) {\r\n return;\r\n }\r\n // use string as selector, get element\r\n selector = this.element.querySelector( selector );\r\n }\r\n // get cell from element\r\n return this.getCell( selector );\r\n};\r\n\r\n// -------------------------- events -------------------------- //\r\n\r\nproto.uiChange = function() {\r\n this.emitEvent('uiChange');\r\n};\r\n\r\n// keep focus on element when child UI elements are clicked\r\nproto.childUIPointerDown = function( event ) {\r\n // HACK iOS does not allow touch events to bubble up?!\r\n if ( event.type != 'touchstart' ) {\r\n event.preventDefault();\r\n }\r\n this.focus();\r\n};\r\n\r\n// ----- resize ----- //\r\n\r\nproto.onresize = function() {\r\n this.watchCSS();\r\n this.resize();\r\n};\r\n\r\nutils.debounceMethod( Flickity, 'onresize', 150 );\r\n\r\nproto.resize = function() {\r\n if ( !this.isActive ) {\r\n return;\r\n }\r\n this.getSize();\r\n // wrap values\r\n if ( this.options.wrapAround ) {\r\n this.x = utils.modulo( this.x, this.slideableWidth );\r\n }\r\n this.positionCells();\r\n this._getWrapShiftCells();\r\n this.setGallerySize();\r\n this.emitEvent('resize');\r\n // update selected index for group slides, instant\r\n // TODO: position can be lost between groups of various numbers\r\n var selectedElement = this.selectedElements && this.selectedElements[0];\r\n this.selectCell( selectedElement, false, true );\r\n};\r\n\r\n// watches the :after property, activates/deactivates\r\nproto.watchCSS = function() {\r\n var watchOption = this.options.watchCSS;\r\n if ( !watchOption ) {\r\n return;\r\n }\r\n\r\n var afterContent = getComputedStyle( this.element, ':after' ).content;\r\n // activate if :after { content: 'flickity' }\r\n if ( afterContent.indexOf('flickity') != -1 ) {\r\n this.activate();\r\n } else {\r\n this.deactivate();\r\n }\r\n};\r\n\r\n// ----- keydown ----- //\r\n\r\n// go previous/next if left/right keys pressed\r\nproto.onkeydown = function( event ) {\r\n // only work if element is in focus\r\n var isNotFocused = document.activeElement && document.activeElement != this.element;\r\n if ( !this.options.accessibility ||isNotFocused ) {\r\n return;\r\n }\r\n\r\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\r\n if ( handler ) {\r\n handler.call( this );\r\n }\r\n};\r\n\r\nFlickity.keyboardHandlers = {\r\n // left arrow\r\n 37: function() {\r\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\r\n this.uiChange();\r\n this[ leftMethod ]();\r\n },\r\n // right arrow\r\n 39: function() {\r\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\r\n this.uiChange();\r\n this[ rightMethod ]();\r\n },\r\n};\r\n\r\n// ----- focus ----- //\r\n\r\nproto.focus = function() {\r\n // TODO remove scrollTo once focus options gets more support\r\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Browser_compatibility\r\n var prevScrollY = window.pageYOffset;\r\n this.element.focus({ preventScroll: true });\r\n // hack to fix scroll jump after focus, #76\r\n if ( window.pageYOffset != prevScrollY ) {\r\n window.scrollTo( window.pageXOffset, prevScrollY );\r\n }\r\n};\r\n\r\n// -------------------------- destroy -------------------------- //\r\n\r\n// deactivate all Flickity functionality, but keep stuff available\r\nproto.deactivate = function() {\r\n if ( !this.isActive ) {\r\n return;\r\n }\r\n this.element.classList.remove('flickity-enabled');\r\n this.element.classList.remove('flickity-rtl');\r\n this.unselectSelectedSlide();\r\n // destroy cells\r\n this.cells.forEach( function( cell ) {\r\n cell.destroy();\r\n });\r\n this.element.removeChild( this.viewport );\r\n // move child elements back into element\r\n moveElements( this.slider.children, this.element );\r\n if ( this.options.accessibility ) {\r\n this.element.removeAttribute('tabIndex');\r\n this.element.removeEventListener( 'keydown', this );\r\n }\r\n // set flags\r\n this.isActive = false;\r\n this.emitEvent('deactivate');\r\n};\r\n\r\nproto.destroy = function() {\r\n this.deactivate();\r\n window.removeEventListener( 'resize', this );\r\n this.allOff();\r\n this.emitEvent('destroy');\r\n if ( jQuery && this.$element ) {\r\n jQuery.removeData( this.element, 'flickity' );\r\n }\r\n delete this.element.flickityGUID;\r\n delete instances[ this.guid ];\r\n};\r\n\r\n// -------------------------- prototype -------------------------- //\r\n\r\nutils.extend( proto, animatePrototype );\r\n\r\n// -------------------------- extras -------------------------- //\r\n\r\n/**\r\n * get Flickity instance from element\r\n * @param {Element} elem\r\n * @returns {Flickity}\r\n */\r\nFlickity.data = function( elem ) {\r\n elem = utils.getQueryElement( elem );\r\n var id = elem && elem.flickityGUID;\r\n return id && instances[ id ];\r\n};\r\n\r\nutils.htmlInit( Flickity, 'flickity' );\r\n\r\nif ( jQuery && jQuery.bridget ) {\r\n jQuery.bridget( 'flickity', Flickity );\r\n}\r\n\r\n// set internal jQuery, for Webpack + jQuery v3, #478\r\nFlickity.setJQuery = function( jq ) {\r\n jQuery = jq;\r\n};\r\n\r\nFlickity.Cell = Cell;\r\nFlickity.Slide = Slide;\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n/*!\r\n * Unipointer v2.3.0\r\n * base class for doing one thing with pointer event\r\n * MIT license\r\n */\r\n\r\n/*jshint browser: true, undef: true, unused: true, strict: true */\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */ /*global define, module, require */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'unipointer/unipointer',[\r\n 'ev-emitter/ev-emitter'\r\n ], function( EvEmitter ) {\r\n return factory( window, EvEmitter );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('ev-emitter')\r\n );\r\n } else {\r\n // browser global\r\n window.Unipointer = factory(\r\n window,\r\n window.EvEmitter\r\n );\r\n }\r\n\r\n}( window, function factory( window, EvEmitter ) {\r\n\r\n\r\n\r\nfunction noop() {}\r\n\r\nfunction Unipointer() {}\r\n\r\n// inherit EvEmitter\r\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\r\n\r\nproto.bindStartEvent = function( elem ) {\r\n this._bindStartEvent( elem, true );\r\n};\r\n\r\nproto.unbindStartEvent = function( elem ) {\r\n this._bindStartEvent( elem, false );\r\n};\r\n\r\n/**\r\n * Add or remove start event\r\n * @param {Boolean} isAdd - remove if falsey\r\n */\r\nproto._bindStartEvent = function( elem, isAdd ) {\r\n // munge isAdd, default to true\r\n isAdd = isAdd === undefined ? true : isAdd;\r\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\r\n\r\n // default to mouse events\r\n var startEvent = 'mousedown';\r\n if ( window.PointerEvent ) {\r\n // Pointer Events\r\n startEvent = 'pointerdown';\r\n } else if ( 'ontouchstart' in window ) {\r\n // Touch Events. iOS Safari\r\n startEvent = 'touchstart';\r\n }\r\n elem[ bindMethod ]( startEvent, this );\r\n};\r\n\r\n// trigger handler methods for events\r\nproto.handleEvent = function( event ) {\r\n var method = 'on' + event.type;\r\n if ( this[ method ] ) {\r\n this[ method ]( event );\r\n }\r\n};\r\n\r\n// returns the touch that we're keeping track of\r\nproto.getTouch = function( touches ) {\r\n for ( var i=0; i < touches.length; i++ ) {\r\n var touch = touches[i];\r\n if ( touch.identifier == this.pointerIdentifier ) {\r\n return touch;\r\n }\r\n }\r\n};\r\n\r\n// ----- start event ----- //\r\n\r\nproto.onmousedown = function( event ) {\r\n // dismiss clicks from right or middle buttons\r\n var button = event.button;\r\n if ( button && ( button !== 0 && button !== 1 ) ) {\r\n return;\r\n }\r\n this._pointerDown( event, event );\r\n};\r\n\r\nproto.ontouchstart = function( event ) {\r\n this._pointerDown( event, event.changedTouches[0] );\r\n};\r\n\r\nproto.onpointerdown = function( event ) {\r\n this._pointerDown( event, event );\r\n};\r\n\r\n/**\r\n * pointer start\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n */\r\nproto._pointerDown = function( event, pointer ) {\r\n // dismiss right click and other pointers\r\n // button = 0 is okay, 1-4 not\r\n if ( event.button || this.isPointerDown ) {\r\n return;\r\n }\r\n\r\n this.isPointerDown = true;\r\n // save pointer identifier to match up touch events\r\n this.pointerIdentifier = pointer.pointerId !== undefined ?\r\n // pointerId for pointer events, touch.indentifier for touch events\r\n pointer.pointerId : pointer.identifier;\r\n\r\n this.pointerDown( event, pointer );\r\n};\r\n\r\nproto.pointerDown = function( event, pointer ) {\r\n this._bindPostStartEvents( event );\r\n this.emitEvent( 'pointerDown', [ event, pointer ] );\r\n};\r\n\r\n// hash of events to be bound after start event\r\nvar postStartEvents = {\r\n mousedown: [ 'mousemove', 'mouseup' ],\r\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\r\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\r\n};\r\n\r\nproto._bindPostStartEvents = function( event ) {\r\n if ( !event ) {\r\n return;\r\n }\r\n // get proper events to match start event\r\n var events = postStartEvents[ event.type ];\r\n // bind events to node\r\n events.forEach( function( eventName ) {\r\n window.addEventListener( eventName, this );\r\n }, this );\r\n // save these arguments\r\n this._boundPointerEvents = events;\r\n};\r\n\r\nproto._unbindPostStartEvents = function() {\r\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\r\n if ( !this._boundPointerEvents ) {\r\n return;\r\n }\r\n this._boundPointerEvents.forEach( function( eventName ) {\r\n window.removeEventListener( eventName, this );\r\n }, this );\r\n\r\n delete this._boundPointerEvents;\r\n};\r\n\r\n// ----- move event ----- //\r\n\r\nproto.onmousemove = function( event ) {\r\n this._pointerMove( event, event );\r\n};\r\n\r\nproto.onpointermove = function( event ) {\r\n if ( event.pointerId == this.pointerIdentifier ) {\r\n this._pointerMove( event, event );\r\n }\r\n};\r\n\r\nproto.ontouchmove = function( event ) {\r\n var touch = this.getTouch( event.changedTouches );\r\n if ( touch ) {\r\n this._pointerMove( event, touch );\r\n }\r\n};\r\n\r\n/**\r\n * pointer move\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n * @private\r\n */\r\nproto._pointerMove = function( event, pointer ) {\r\n this.pointerMove( event, pointer );\r\n};\r\n\r\n// public\r\nproto.pointerMove = function( event, pointer ) {\r\n this.emitEvent( 'pointerMove', [ event, pointer ] );\r\n};\r\n\r\n// ----- end event ----- //\r\n\r\n\r\nproto.onmouseup = function( event ) {\r\n this._pointerUp( event, event );\r\n};\r\n\r\nproto.onpointerup = function( event ) {\r\n if ( event.pointerId == this.pointerIdentifier ) {\r\n this._pointerUp( event, event );\r\n }\r\n};\r\n\r\nproto.ontouchend = function( event ) {\r\n var touch = this.getTouch( event.changedTouches );\r\n if ( touch ) {\r\n this._pointerUp( event, touch );\r\n }\r\n};\r\n\r\n/**\r\n * pointer up\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n * @private\r\n */\r\nproto._pointerUp = function( event, pointer ) {\r\n this._pointerDone();\r\n this.pointerUp( event, pointer );\r\n};\r\n\r\n// public\r\nproto.pointerUp = function( event, pointer ) {\r\n this.emitEvent( 'pointerUp', [ event, pointer ] );\r\n};\r\n\r\n// ----- pointer done ----- //\r\n\r\n// triggered on pointer up & pointer cancel\r\nproto._pointerDone = function() {\r\n this._pointerReset();\r\n this._unbindPostStartEvents();\r\n this.pointerDone();\r\n};\r\n\r\nproto._pointerReset = function() {\r\n // reset properties\r\n this.isPointerDown = false;\r\n delete this.pointerIdentifier;\r\n};\r\n\r\nproto.pointerDone = noop;\r\n\r\n// ----- pointer cancel ----- //\r\n\r\nproto.onpointercancel = function( event ) {\r\n if ( event.pointerId == this.pointerIdentifier ) {\r\n this._pointerCancel( event, event );\r\n }\r\n};\r\n\r\nproto.ontouchcancel = function( event ) {\r\n var touch = this.getTouch( event.changedTouches );\r\n if ( touch ) {\r\n this._pointerCancel( event, touch );\r\n }\r\n};\r\n\r\n/**\r\n * pointer cancel\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n * @private\r\n */\r\nproto._pointerCancel = function( event, pointer ) {\r\n this._pointerDone();\r\n this.pointerCancel( event, pointer );\r\n};\r\n\r\n// public\r\nproto.pointerCancel = function( event, pointer ) {\r\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\r\n};\r\n\r\n// ----- ----- //\r\n\r\n// utility function for getting x/y coords from event\r\nUnipointer.getPointerPoint = function( pointer ) {\r\n return {\r\n x: pointer.pageX,\r\n y: pointer.pageY\r\n };\r\n};\r\n\r\n// ----- ----- //\r\n\r\nreturn Unipointer;\r\n\r\n}));\r\n\r\n/*!\r\n * Unidragger v2.3.0\r\n * Draggable base class\r\n * MIT license\r\n */\r\n\r\n/*jshint browser: true, unused: true, undef: true, strict: true */\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /*jshint strict: false */ /*globals define, module, require */\r\n\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'unidragger/unidragger',[\r\n 'unipointer/unipointer'\r\n ], function( Unipointer ) {\r\n return factory( window, Unipointer );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('unipointer')\r\n );\r\n } else {\r\n // browser global\r\n window.Unidragger = factory(\r\n window,\r\n window.Unipointer\r\n );\r\n }\r\n\r\n}( window, function factory( window, Unipointer ) {\r\n\r\n\r\n\r\n// -------------------------- Unidragger -------------------------- //\r\n\r\nfunction Unidragger() {}\r\n\r\n// inherit Unipointer & EvEmitter\r\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\r\n\r\n// ----- bind start ----- //\r\n\r\nproto.bindHandles = function() {\r\n this._bindHandles( true );\r\n};\r\n\r\nproto.unbindHandles = function() {\r\n this._bindHandles( false );\r\n};\r\n\r\n/**\r\n * Add or remove start event\r\n * @param {Boolean} isAdd\r\n */\r\nproto._bindHandles = function( isAdd ) {\r\n // munge isAdd, default to true\r\n isAdd = isAdd === undefined ? true : isAdd;\r\n // bind each handle\r\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\r\n var touchAction = isAdd ? this._touchActionValue : '';\r\n for ( var i=0; i < this.handles.length; i++ ) {\r\n var handle = this.handles[i];\r\n this._bindStartEvent( handle, isAdd );\r\n handle[ bindMethod ]( 'click', this );\r\n // touch-action: none to override browser touch gestures. metafizzy/flickity#540\r\n if ( window.PointerEvent ) {\r\n handle.style.touchAction = touchAction;\r\n }\r\n }\r\n};\r\n\r\n// prototype so it can be overwriteable by Flickity\r\nproto._touchActionValue = 'none';\r\n\r\n// ----- start event ----- //\r\n\r\n/**\r\n * pointer start\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n */\r\nproto.pointerDown = function( event, pointer ) {\r\n var isOkay = this.okayPointerDown( event );\r\n if ( !isOkay ) {\r\n return;\r\n }\r\n // track start event position\r\n this.pointerDownPointer = pointer;\r\n\r\n event.preventDefault();\r\n this.pointerDownBlur();\r\n // bind move and end events\r\n this._bindPostStartEvents( event );\r\n this.emitEvent( 'pointerDown', [ event, pointer ] );\r\n};\r\n\r\n// nodes that have text fields\r\nvar cursorNodes = {\r\n TEXTAREA: true,\r\n INPUT: true,\r\n SELECT: true,\r\n OPTION: true,\r\n};\r\n\r\n// input types that do not have text fields\r\nvar clickTypes = {\r\n radio: true,\r\n checkbox: true,\r\n button: true,\r\n submit: true,\r\n image: true,\r\n file: true,\r\n};\r\n\r\n// dismiss inputs with text fields. flickity#403, flickity#404\r\nproto.okayPointerDown = function( event ) {\r\n var isCursorNode = cursorNodes[ event.target.nodeName ];\r\n var isClickType = clickTypes[ event.target.type ];\r\n var isOkay = !isCursorNode || isClickType;\r\n if ( !isOkay ) {\r\n this._pointerReset();\r\n }\r\n return isOkay;\r\n};\r\n\r\n// kludge to blur previously focused input\r\nproto.pointerDownBlur = function() {\r\n var focused = document.activeElement;\r\n // do not blur body for IE10, metafizzy/flickity#117\r\n var canBlur = focused && focused.blur && focused != document.body;\r\n if ( canBlur ) {\r\n focused.blur();\r\n }\r\n};\r\n\r\n// ----- move event ----- //\r\n\r\n/**\r\n * drag move\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n */\r\nproto.pointerMove = function( event, pointer ) {\r\n var moveVector = this._dragPointerMove( event, pointer );\r\n this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\r\n this._dragMove( event, pointer, moveVector );\r\n};\r\n\r\n// base pointer move logic\r\nproto._dragPointerMove = function( event, pointer ) {\r\n var moveVector = {\r\n x: pointer.pageX - this.pointerDownPointer.pageX,\r\n y: pointer.pageY - this.pointerDownPointer.pageY\r\n };\r\n // start drag if pointer has moved far enough to start drag\r\n if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\r\n this._dragStart( event, pointer );\r\n }\r\n return moveVector;\r\n};\r\n\r\n// condition if pointer has moved far enough to start drag\r\nproto.hasDragStarted = function( moveVector ) {\r\n return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\r\n};\r\n\r\n// ----- end event ----- //\r\n\r\n/**\r\n * pointer up\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n */\r\nproto.pointerUp = function( event, pointer ) {\r\n this.emitEvent( 'pointerUp', [ event, pointer ] );\r\n this._dragPointerUp( event, pointer );\r\n};\r\n\r\nproto._dragPointerUp = function( event, pointer ) {\r\n if ( this.isDragging ) {\r\n this._dragEnd( event, pointer );\r\n } else {\r\n // pointer didn't move enough for drag to start\r\n this._staticClick( event, pointer );\r\n }\r\n};\r\n\r\n// -------------------------- drag -------------------------- //\r\n\r\n// dragStart\r\nproto._dragStart = function( event, pointer ) {\r\n this.isDragging = true;\r\n // prevent clicks\r\n this.isPreventingClicks = true;\r\n this.dragStart( event, pointer );\r\n};\r\n\r\nproto.dragStart = function( event, pointer ) {\r\n this.emitEvent( 'dragStart', [ event, pointer ] );\r\n};\r\n\r\n// dragMove\r\nproto._dragMove = function( event, pointer, moveVector ) {\r\n // do not drag if not dragging yet\r\n if ( !this.isDragging ) {\r\n return;\r\n }\r\n\r\n this.dragMove( event, pointer, moveVector );\r\n};\r\n\r\nproto.dragMove = function( event, pointer, moveVector ) {\r\n event.preventDefault();\r\n this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\r\n};\r\n\r\n// dragEnd\r\nproto._dragEnd = function( event, pointer ) {\r\n // set flags\r\n this.isDragging = false;\r\n // re-enable clicking async\r\n setTimeout( function() {\r\n delete this.isPreventingClicks;\r\n }.bind( this ) );\r\n\r\n this.dragEnd( event, pointer );\r\n};\r\n\r\nproto.dragEnd = function( event, pointer ) {\r\n this.emitEvent( 'dragEnd', [ event, pointer ] );\r\n};\r\n\r\n// ----- onclick ----- //\r\n\r\n// handle all clicks and prevent clicks when dragging\r\nproto.onclick = function( event ) {\r\n if ( this.isPreventingClicks ) {\r\n event.preventDefault();\r\n }\r\n};\r\n\r\n// ----- staticClick ----- //\r\n\r\n// triggered after pointer down & up with no/tiny movement\r\nproto._staticClick = function( event, pointer ) {\r\n // ignore emulated mouse up clicks\r\n if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\r\n return;\r\n }\r\n\r\n this.staticClick( event, pointer );\r\n\r\n // set flag for emulated clicks 300ms after touchend\r\n if ( event.type != 'mouseup' ) {\r\n this.isIgnoringMouseUp = true;\r\n // reset flag after 300ms\r\n setTimeout( function() {\r\n delete this.isIgnoringMouseUp;\r\n }.bind( this ), 400 );\r\n }\r\n};\r\n\r\nproto.staticClick = function( event, pointer ) {\r\n this.emitEvent( 'staticClick', [ event, pointer ] );\r\n};\r\n\r\n// ----- utils ----- //\r\n\r\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\r\n\r\n// ----- ----- //\r\n\r\nreturn Unidragger;\r\n\r\n}));\r\n\r\n// drag\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/drag',[\r\n './flickity',\r\n 'unidragger/unidragger',\r\n 'fizzy-ui-utils/utils'\r\n ], function( Flickity, Unidragger, utils ) {\r\n return factory( window, Flickity, Unidragger, utils );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('./flickity'),\r\n require('unidragger'),\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n window.Flickity = factory(\r\n window,\r\n window.Flickity,\r\n window.Unidragger,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( window, Flickity, Unidragger, utils ) {\r\n\r\n\r\n\r\n// ----- defaults ----- //\r\n\r\nutils.extend( Flickity.defaults, {\r\n draggable: '>1',\r\n dragThreshold: 3,\r\n});\r\n\r\n// ----- create ----- //\r\n\r\nFlickity.createMethods.push('_createDrag');\r\n\r\n// -------------------------- drag prototype -------------------------- //\r\n\r\nvar proto = Flickity.prototype;\r\nutils.extend( proto, Unidragger.prototype );\r\nproto._touchActionValue = 'pan-y';\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nvar isTouch = 'createTouch' in document;\r\nvar isTouchmoveScrollCanceled = false;\r\n\r\nproto._createDrag = function() {\r\n this.on( 'activate', this.onActivateDrag );\r\n this.on( 'uiChange', this._uiChangeDrag );\r\n this.on( 'deactivate', this.onDeactivateDrag );\r\n this.on( 'cellChange', this.updateDraggable );\r\n // TODO updateDraggable on resize? if groupCells & slides change\r\n // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\r\n // #457, RubaXa/Sortable#973\r\n if ( isTouch && !isTouchmoveScrollCanceled ) {\r\n window.addEventListener( 'touchmove', function() {});\r\n isTouchmoveScrollCanceled = true;\r\n }\r\n};\r\n\r\nproto.onActivateDrag = function() {\r\n this.handles = [ this.viewport ];\r\n this.bindHandles();\r\n this.updateDraggable();\r\n};\r\n\r\nproto.onDeactivateDrag = function() {\r\n this.unbindHandles();\r\n this.element.classList.remove('is-draggable');\r\n};\r\n\r\nproto.updateDraggable = function() {\r\n // disable dragging if less than 2 slides. #278\r\n if ( this.options.draggable == '>1' ) {\r\n this.isDraggable = this.slides.length > 1;\r\n } else {\r\n this.isDraggable = this.options.draggable;\r\n }\r\n if ( this.isDraggable ) {\r\n this.element.classList.add('is-draggable');\r\n } else {\r\n this.element.classList.remove('is-draggable');\r\n }\r\n};\r\n\r\n// backwards compatibility\r\nproto.bindDrag = function() {\r\n this.options.draggable = true;\r\n this.updateDraggable();\r\n};\r\n\r\nproto.unbindDrag = function() {\r\n this.options.draggable = false;\r\n this.updateDraggable();\r\n};\r\n\r\nproto._uiChangeDrag = function() {\r\n delete this.isFreeScrolling;\r\n};\r\n\r\n// -------------------------- pointer events -------------------------- //\r\n\r\nproto.pointerDown = function( event, pointer ) {\r\n if ( !this.isDraggable ) {\r\n this._pointerDownDefault( event, pointer );\r\n return;\r\n }\r\n var isOkay = this.okayPointerDown( event );\r\n if ( !isOkay ) {\r\n return;\r\n }\r\n\r\n this._pointerDownPreventDefault( event );\r\n this.pointerDownFocus( event );\r\n // blur\r\n if ( document.activeElement != this.element ) {\r\n // do not blur if already focused\r\n this.pointerDownBlur();\r\n }\r\n\r\n // stop if it was moving\r\n this.dragX = this.x;\r\n this.viewport.classList.add('is-pointer-down');\r\n // track scrolling\r\n this.pointerDownScroll = getScrollPosition();\r\n window.addEventListener( 'scroll', this );\r\n\r\n this._pointerDownDefault( event, pointer );\r\n};\r\n\r\n// default pointerDown logic, used for staticClick\r\nproto._pointerDownDefault = function( event, pointer ) {\r\n // track start event position\r\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\r\n this.pointerDownPointer = {\r\n pageX: pointer.pageX,\r\n pageY: pointer.pageY,\r\n };\r\n // bind move and end events\r\n this._bindPostStartEvents( event );\r\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\r\n};\r\n\r\nvar focusNodes = {\r\n INPUT: true,\r\n TEXTAREA: true,\r\n SELECT: true,\r\n};\r\n\r\nproto.pointerDownFocus = function( event ) {\r\n var isFocusNode = focusNodes[ event.target.nodeName ];\r\n if ( !isFocusNode ) {\r\n this.focus();\r\n }\r\n};\r\n\r\nproto._pointerDownPreventDefault = function( event ) {\r\n var isTouchStart = event.type == 'touchstart';\r\n var isTouchPointer = event.pointerType == 'touch';\r\n var isFocusNode = focusNodes[ event.target.nodeName ];\r\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\r\n event.preventDefault();\r\n }\r\n};\r\n\r\n// ----- move ----- //\r\n\r\nproto.hasDragStarted = function( moveVector ) {\r\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\r\n};\r\n\r\n// ----- up ----- //\r\n\r\nproto.pointerUp = function( event, pointer ) {\r\n delete this.isTouchScrolling;\r\n this.viewport.classList.remove('is-pointer-down');\r\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\r\n this._dragPointerUp( event, pointer );\r\n};\r\n\r\nproto.pointerDone = function() {\r\n window.removeEventListener( 'scroll', this );\r\n delete this.pointerDownScroll;\r\n};\r\n\r\n// -------------------------- dragging -------------------------- //\r\n\r\nproto.dragStart = function( event, pointer ) {\r\n if ( !this.isDraggable ) {\r\n return;\r\n }\r\n this.dragStartPosition = this.x;\r\n this.startAnimation();\r\n window.removeEventListener( 'scroll', this );\r\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\r\n};\r\n\r\nproto.pointerMove = function( event, pointer ) {\r\n var moveVector = this._dragPointerMove( event, pointer );\r\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\r\n this._dragMove( event, pointer, moveVector );\r\n};\r\n\r\nproto.dragMove = function( event, pointer, moveVector ) {\r\n if ( !this.isDraggable ) {\r\n return;\r\n }\r\n event.preventDefault();\r\n\r\n this.previousDragX = this.dragX;\r\n // reverse if right-to-left\r\n var direction = this.options.rightToLeft ? -1 : 1;\r\n if ( this.options.wrapAround ) {\r\n // wrap around move. #589\r\n moveVector.x = moveVector.x % this.slideableWidth;\r\n }\r\n var dragX = this.dragStartPosition + moveVector.x * direction;\r\n\r\n if ( !this.options.wrapAround && this.slides.length ) {\r\n // slow drag\r\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\r\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\r\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\r\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\r\n }\r\n\r\n this.dragX = dragX;\r\n\r\n this.dragMoveTime = new Date();\r\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\r\n};\r\n\r\nproto.dragEnd = function( event, pointer ) {\r\n if ( !this.isDraggable ) {\r\n return;\r\n }\r\n if ( this.options.freeScroll ) {\r\n this.isFreeScrolling = true;\r\n }\r\n // set selectedIndex based on where flick will end up\r\n var index = this.dragEndRestingSelect();\r\n\r\n if ( this.options.freeScroll && !this.options.wrapAround ) {\r\n // if free-scroll & not wrap around\r\n // do not free-scroll if going outside of bounding slides\r\n // so bounding slides can attract slider, and keep it in bounds\r\n var restingX = this.getRestingPosition();\r\n this.isFreeScrolling = -restingX > this.slides[0].target &&\r\n -restingX < this.getLastSlide().target;\r\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\r\n // boost selection if selected index has not changed\r\n index += this.dragEndBoostSelect();\r\n }\r\n delete this.previousDragX;\r\n // apply selection\r\n // TODO refactor this, selecting here feels weird\r\n // HACK, set flag so dragging stays in correct direction\r\n this.isDragSelect = this.options.wrapAround;\r\n this.select( index );\r\n delete this.isDragSelect;\r\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\r\n};\r\n\r\nproto.dragEndRestingSelect = function() {\r\n var restingX = this.getRestingPosition();\r\n // how far away from selected slide\r\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\r\n // get closet resting going up and going down\r\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\r\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\r\n // use closer resting for wrap-around\r\n var index = positiveResting.distance < negativeResting.distance ?\r\n positiveResting.index : negativeResting.index;\r\n return index;\r\n};\r\n\r\n/**\r\n * given resting X and distance to selected cell\r\n * get the distance and index of the closest cell\r\n * @param {Number} restingX - estimated post-flick resting position\r\n * @param {Number} distance - distance to selected cell\r\n * @param {Integer} increment - +1 or -1, going up or down\r\n * @returns {Object} - { distance: {Number}, index: {Integer} }\r\n */\r\nproto._getClosestResting = function( restingX, distance, increment ) {\r\n var index = this.selectedIndex;\r\n var minDistance = Infinity;\r\n var condition = this.options.contain && !this.options.wrapAround ?\r\n // if contain, keep going if distance is equal to minDistance\r\n function( d, md ) { return d <= md; } : function( d, md ) { return d < md; };\r\n while ( condition( distance, minDistance ) ) {\r\n // measure distance to next cell\r\n index += increment;\r\n minDistance = distance;\r\n distance = this.getSlideDistance( -restingX, index );\r\n if ( distance === null ) {\r\n break;\r\n }\r\n distance = Math.abs( distance );\r\n }\r\n return {\r\n distance: minDistance,\r\n // selected was previous index\r\n index: index - increment\r\n };\r\n};\r\n\r\n/**\r\n * measure distance between x and a slide target\r\n * @param {Number} x\r\n * @param {Integer} index - slide index\r\n */\r\nproto.getSlideDistance = function( x, index ) {\r\n var len = this.slides.length;\r\n // wrap around if at least 2 slides\r\n var isWrapAround = this.options.wrapAround && len > 1;\r\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\r\n var slide = this.slides[ slideIndex ];\r\n if ( !slide ) {\r\n return null;\r\n }\r\n // add distance for wrap-around slides\r\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index / len ) : 0;\r\n return x - ( slide.target + wrap );\r\n};\r\n\r\nproto.dragEndBoostSelect = function() {\r\n // do not boost if no previousDragX or dragMoveTime\r\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\r\n // or if drag was held for 100 ms\r\n new Date() - this.dragMoveTime > 100 ) {\r\n return 0;\r\n }\r\n\r\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\r\n var delta = this.previousDragX - this.dragX;\r\n if ( distance > 0 && delta > 0 ) {\r\n // boost to next if moving towards the right, and positive velocity\r\n return 1;\r\n } else if ( distance < 0 && delta < 0 ) {\r\n // boost to previous if moving towards the left, and negative velocity\r\n return -1;\r\n }\r\n return 0;\r\n};\r\n\r\n// ----- staticClick ----- //\r\n\r\nproto.staticClick = function( event, pointer ) {\r\n // get clickedCell, if cell was clicked\r\n var clickedCell = this.getParentCell( event.target );\r\n var cellElem = clickedCell && clickedCell.element;\r\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\r\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\r\n};\r\n\r\n// ----- scroll ----- //\r\n\r\nproto.onscroll = function() {\r\n var scroll = getScrollPosition();\r\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\r\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\r\n // cancel click/tap if scroll is too much\r\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\r\n this._pointerDone();\r\n }\r\n};\r\n\r\n// ----- utils ----- //\r\n\r\nfunction getScrollPosition() {\r\n return {\r\n x: window.pageXOffset,\r\n y: window.pageYOffset\r\n };\r\n}\r\n\r\n// ----- ----- //\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n// prev/next buttons\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/prev-next-button',[\r\n './flickity',\r\n 'unipointer/unipointer',\r\n 'fizzy-ui-utils/utils'\r\n ], function( Flickity, Unipointer, utils ) {\r\n return factory( window, Flickity, Unipointer, utils );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('./flickity'),\r\n require('unipointer'),\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n factory(\r\n window,\r\n window.Flickity,\r\n window.Unipointer,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( window, Flickity, Unipointer, utils ) {\r\n'use strict';\r\n\r\nvar svgURI = 'http://www.w3.org/2000/svg';\r\n\r\n// -------------------------- PrevNextButton -------------------------- //\r\n\r\nfunction PrevNextButton( direction, parent ) {\r\n this.direction = direction;\r\n this.parent = parent;\r\n this._create();\r\n}\r\n\r\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\r\n\r\nPrevNextButton.prototype._create = function() {\r\n // properties\r\n this.isEnabled = true;\r\n this.isPrevious = this.direction == -1;\r\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\r\n this.isLeft = this.direction == leftDirection;\r\n\r\n var element = this.element = document.createElement('button');\r\n element.className = 'flickity-button flickity-prev-next-button';\r\n element.className += this.isPrevious ? ' previous' : ' next';\r\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\r\n element.setAttribute( 'type', 'button' );\r\n // init as disabled\r\n this.disable();\r\n\r\n element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\r\n\r\n // create arrow\r\n var svg = this.createSVG();\r\n element.appendChild( svg );\r\n // events\r\n this.parent.on( 'select', this.update.bind( this ) );\r\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\r\n};\r\n\r\nPrevNextButton.prototype.activate = function() {\r\n this.bindStartEvent( this.element );\r\n this.element.addEventListener( 'click', this );\r\n // add to DOM\r\n this.parent.element.appendChild( this.element );\r\n};\r\n\r\nPrevNextButton.prototype.deactivate = function() {\r\n // remove from DOM\r\n this.parent.element.removeChild( this.element );\r\n // click events\r\n this.unbindStartEvent( this.element );\r\n this.element.removeEventListener( 'click', this );\r\n};\r\n\r\nPrevNextButton.prototype.createSVG = function() {\r\n var svg = document.createElementNS( svgURI, 'svg');\r\n svg.setAttribute( 'class', 'flickity-button-icon' );\r\n svg.setAttribute( 'viewBox', '0 0 100 100' );\r\n var path = document.createElementNS( svgURI, 'path');\r\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\r\n path.setAttribute( 'd', pathMovements );\r\n path.setAttribute( 'class', 'arrow' );\r\n // rotate arrow\r\n if ( !this.isLeft ) {\r\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\r\n }\r\n svg.appendChild( path );\r\n return svg;\r\n};\r\n\r\n// get SVG path movmement\r\nfunction getArrowMovements( shape ) {\r\n // use shape as movement if string\r\n if ( typeof shape == 'string' ) {\r\n return shape;\r\n }\r\n // create movement string\r\n return 'M ' + shape.x0 + ',50' +\r\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\r\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\r\n ' L ' + shape.x3 + ',50 ' +\r\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\r\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\r\n ' Z';\r\n}\r\n\r\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\r\n\r\nPrevNextButton.prototype.onclick = function() {\r\n if ( !this.isEnabled ) {\r\n return;\r\n }\r\n this.parent.uiChange();\r\n var method = this.isPrevious ? 'previous' : 'next';\r\n this.parent[ method ]();\r\n};\r\n\r\n// ----- ----- //\r\n\r\nPrevNextButton.prototype.enable = function() {\r\n if ( this.isEnabled ) {\r\n return;\r\n }\r\n this.element.disabled = false;\r\n this.isEnabled = true;\r\n};\r\n\r\nPrevNextButton.prototype.disable = function() {\r\n if ( !this.isEnabled ) {\r\n return;\r\n }\r\n this.element.disabled = true;\r\n this.isEnabled = false;\r\n};\r\n\r\nPrevNextButton.prototype.update = function() {\r\n // index of first or last slide, if previous or next\r\n var slides = this.parent.slides;\r\n // enable is wrapAround and at least 2 slides\r\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\r\n this.enable();\r\n return;\r\n }\r\n var lastIndex = slides.length ? slides.length - 1 : 0;\r\n var boundIndex = this.isPrevious ? 0 : lastIndex;\r\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\r\n this[ method ]();\r\n};\r\n\r\nPrevNextButton.prototype.destroy = function() {\r\n this.deactivate();\r\n this.allOff();\r\n};\r\n\r\n// -------------------------- Flickity prototype -------------------------- //\r\n\r\nutils.extend( Flickity.defaults, {\r\n prevNextButtons: true,\r\n arrowShape: {\r\n x0: 10,\r\n x1: 60, y1: 50,\r\n x2: 70, y2: 40,\r\n x3: 30\r\n }\r\n});\r\n\r\nFlickity.createMethods.push('_createPrevNextButtons');\r\nvar proto = Flickity.prototype;\r\n\r\nproto._createPrevNextButtons = function() {\r\n if ( !this.options.prevNextButtons ) {\r\n return;\r\n }\r\n\r\n this.prevButton = new PrevNextButton( -1, this );\r\n this.nextButton = new PrevNextButton( 1, this );\r\n\r\n this.on( 'activate', this.activatePrevNextButtons );\r\n};\r\n\r\nproto.activatePrevNextButtons = function() {\r\n this.prevButton.activate();\r\n this.nextButton.activate();\r\n this.on( 'deactivate', this.deactivatePrevNextButtons );\r\n};\r\n\r\nproto.deactivatePrevNextButtons = function() {\r\n this.prevButton.deactivate();\r\n this.nextButton.deactivate();\r\n this.off( 'deactivate', this.deactivatePrevNextButtons );\r\n};\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nFlickity.PrevNextButton = PrevNextButton;\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n// page dots\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/page-dots',[\r\n './flickity',\r\n 'unipointer/unipointer',\r\n 'fizzy-ui-utils/utils'\r\n ], function( Flickity, Unipointer, utils ) {\r\n return factory( window, Flickity, Unipointer, utils );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('./flickity'),\r\n require('unipointer'),\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n factory(\r\n window,\r\n window.Flickity,\r\n window.Unipointer,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( window, Flickity, Unipointer, utils ) {\r\n\r\n// -------------------------- PageDots -------------------------- //\r\n\r\n\r\n\r\nfunction PageDots( parent ) {\r\n this.parent = parent;\r\n this._create();\r\n}\r\n\r\nPageDots.prototype = Object.create( Unipointer.prototype );\r\n\r\nPageDots.prototype._create = function() {\r\n // create holder element\r\n this.holder = document.createElement('ol');\r\n this.holder.className = 'flickity-page-dots';\r\n // create dots, array of elements\r\n this.dots = [];\r\n // events\r\n this.handleClick = this.onClick.bind( this );\r\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\r\n};\r\n\r\nPageDots.prototype.activate = function() {\r\n this.setDots();\r\n this.holder.addEventListener( 'click', this.handleClick );\r\n this.bindStartEvent( this.holder );\r\n // add to DOM\r\n this.parent.element.appendChild( this.holder );\r\n};\r\n\r\nPageDots.prototype.deactivate = function() {\r\n this.holder.removeEventListener( 'click', this.handleClick );\r\n this.unbindStartEvent( this.holder );\r\n // remove from DOM\r\n this.parent.element.removeChild( this.holder );\r\n};\r\n\r\nPageDots.prototype.setDots = function() {\r\n // get difference between number of slides and number of dots\r\n var delta = this.parent.slides.length - this.dots.length;\r\n if ( delta > 0 ) {\r\n this.addDots( delta );\r\n } else if ( delta < 0 ) {\r\n this.removeDots( -delta );\r\n }\r\n};\r\n\r\nPageDots.prototype.addDots = function( count ) {\r\n var fragment = document.createDocumentFragment();\r\n var newDots = [];\r\n var length = this.dots.length;\r\n var max = length + count;\r\n\r\n for ( var i = length; i < max; i++ ) {\r\n var dot = document.createElement('li');\r\n dot.className = 'dot';\r\n dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\r\n fragment.appendChild( dot );\r\n newDots.push( dot );\r\n }\r\n\r\n this.holder.appendChild( fragment );\r\n this.dots = this.dots.concat( newDots );\r\n};\r\n\r\nPageDots.prototype.removeDots = function( count ) {\r\n // remove from this.dots collection\r\n var removeDots = this.dots.splice( this.dots.length - count, count );\r\n // remove from DOM\r\n removeDots.forEach( function( dot ) {\r\n this.holder.removeChild( dot );\r\n }, this );\r\n};\r\n\r\nPageDots.prototype.updateSelected = function() {\r\n // remove selected class on previous\r\n if ( this.selectedDot ) {\r\n this.selectedDot.className = 'dot';\r\n this.selectedDot.removeAttribute('aria-current');\r\n }\r\n // don't proceed if no dots\r\n if ( !this.dots.length ) {\r\n return;\r\n }\r\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\r\n this.selectedDot.className = 'dot is-selected';\r\n this.selectedDot.setAttribute( 'aria-current', 'step' );\r\n};\r\n\r\nPageDots.prototype.onTap = // old method name, backwards-compatible\r\nPageDots.prototype.onClick = function( event ) {\r\n var target = event.target;\r\n // only care about dot clicks\r\n if ( target.nodeName != 'LI' ) {\r\n return;\r\n }\r\n\r\n this.parent.uiChange();\r\n var index = this.dots.indexOf( target );\r\n this.parent.select( index );\r\n};\r\n\r\nPageDots.prototype.destroy = function() {\r\n this.deactivate();\r\n this.allOff();\r\n};\r\n\r\nFlickity.PageDots = PageDots;\r\n\r\n// -------------------------- Flickity -------------------------- //\r\n\r\nutils.extend( Flickity.defaults, {\r\n pageDots: true\r\n});\r\n\r\nFlickity.createMethods.push('_createPageDots');\r\n\r\nvar proto = Flickity.prototype;\r\n\r\nproto._createPageDots = function() {\r\n if ( !this.options.pageDots ) {\r\n return;\r\n }\r\n this.pageDots = new PageDots( this );\r\n // events\r\n this.on( 'activate', this.activatePageDots );\r\n this.on( 'select', this.updateSelectedPageDots );\r\n this.on( 'cellChange', this.updatePageDots );\r\n this.on( 'resize', this.updatePageDots );\r\n this.on( 'deactivate', this.deactivatePageDots );\r\n};\r\n\r\nproto.activatePageDots = function() {\r\n this.pageDots.activate();\r\n};\r\n\r\nproto.updateSelectedPageDots = function() {\r\n this.pageDots.updateSelected();\r\n};\r\n\r\nproto.updatePageDots = function() {\r\n this.pageDots.setDots();\r\n};\r\n\r\nproto.deactivatePageDots = function() {\r\n this.pageDots.deactivate();\r\n};\r\n\r\n// ----- ----- //\r\n\r\nFlickity.PageDots = PageDots;\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n// player & autoPlay\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/player',[\r\n 'ev-emitter/ev-emitter',\r\n 'fizzy-ui-utils/utils',\r\n './flickity'\r\n ], function( EvEmitter, utils, Flickity ) {\r\n return factory( EvEmitter, utils, Flickity );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n require('ev-emitter'),\r\n require('fizzy-ui-utils'),\r\n require('./flickity')\r\n );\r\n } else {\r\n // browser global\r\n factory(\r\n window.EvEmitter,\r\n window.fizzyUIUtils,\r\n window.Flickity\r\n );\r\n }\r\n\r\n}( window, function factory( EvEmitter, utils, Flickity ) {\r\n\r\n\r\n\r\n// -------------------------- Player -------------------------- //\r\n\r\nfunction Player( parent ) {\r\n this.parent = parent;\r\n this.state = 'stopped';\r\n // visibility change event handler\r\n this.onVisibilityChange = this.visibilityChange.bind( this );\r\n this.onVisibilityPlay = this.visibilityPlay.bind( this );\r\n}\r\n\r\nPlayer.prototype = Object.create( EvEmitter.prototype );\r\n\r\n// start play\r\nPlayer.prototype.play = function() {\r\n if ( this.state == 'playing' ) {\r\n return;\r\n }\r\n // do not play if page is hidden, start playing when page is visible\r\n var isPageHidden = document.hidden;\r\n if ( isPageHidden ) {\r\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\r\n return;\r\n }\r\n\r\n this.state = 'playing';\r\n // listen to visibility change\r\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\r\n // start ticking\r\n this.tick();\r\n};\r\n\r\nPlayer.prototype.tick = function() {\r\n // do not tick if not playing\r\n if ( this.state != 'playing' ) {\r\n return;\r\n }\r\n\r\n var time = this.parent.options.autoPlay;\r\n // default to 3 seconds\r\n time = typeof time == 'number' ? time : 3000;\r\n var _this = this;\r\n // HACK: reset ticks if stopped and started within interval\r\n this.clear();\r\n this.timeout = setTimeout( function() {\r\n _this.parent.next( true );\r\n _this.tick();\r\n }, time );\r\n};\r\n\r\nPlayer.prototype.stop = function() {\r\n this.state = 'stopped';\r\n this.clear();\r\n // remove visibility change event\r\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\r\n};\r\n\r\nPlayer.prototype.clear = function() {\r\n clearTimeout( this.timeout );\r\n};\r\n\r\nPlayer.prototype.pause = function() {\r\n if ( this.state == 'playing' ) {\r\n this.state = 'paused';\r\n this.clear();\r\n }\r\n};\r\n\r\nPlayer.prototype.unpause = function() {\r\n // re-start play if paused\r\n if ( this.state == 'paused' ) {\r\n this.play();\r\n }\r\n};\r\n\r\n// pause if page visibility is hidden, unpause if visible\r\nPlayer.prototype.visibilityChange = function() {\r\n var isPageHidden = document.hidden;\r\n this[ isPageHidden ? 'pause' : 'unpause' ]();\r\n};\r\n\r\nPlayer.prototype.visibilityPlay = function() {\r\n this.play();\r\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\r\n};\r\n\r\n// -------------------------- Flickity -------------------------- //\r\n\r\nutils.extend( Flickity.defaults, {\r\n pauseAutoPlayOnHover: true\r\n});\r\n\r\nFlickity.createMethods.push('_createPlayer');\r\nvar proto = Flickity.prototype;\r\n\r\nproto._createPlayer = function() {\r\n this.player = new Player( this );\r\n\r\n this.on( 'activate', this.activatePlayer );\r\n this.on( 'uiChange', this.stopPlayer );\r\n this.on( 'pointerDown', this.stopPlayer );\r\n this.on( 'deactivate', this.deactivatePlayer );\r\n};\r\n\r\nproto.activatePlayer = function() {\r\n if ( !this.options.autoPlay ) {\r\n return;\r\n }\r\n this.player.play();\r\n this.element.addEventListener( 'mouseenter', this );\r\n};\r\n\r\n// Player API, don't hate the ... thanks I know where the door is\r\n\r\nproto.playPlayer = function() {\r\n this.player.play();\r\n};\r\n\r\nproto.stopPlayer = function() {\r\n this.player.stop();\r\n};\r\n\r\nproto.pausePlayer = function() {\r\n this.player.pause();\r\n};\r\n\r\nproto.unpausePlayer = function() {\r\n this.player.unpause();\r\n};\r\n\r\nproto.deactivatePlayer = function() {\r\n this.player.stop();\r\n this.element.removeEventListener( 'mouseenter', this );\r\n};\r\n\r\n// ----- mouseenter/leave ----- //\r\n\r\n// pause auto-play on hover\r\nproto.onmouseenter = function() {\r\n if ( !this.options.pauseAutoPlayOnHover ) {\r\n return;\r\n }\r\n this.player.pause();\r\n this.element.addEventListener( 'mouseleave', this );\r\n};\r\n\r\n// resume auto-play on hover off\r\nproto.onmouseleave = function() {\r\n this.player.unpause();\r\n this.element.removeEventListener( 'mouseleave', this );\r\n};\r\n\r\n// ----- ----- //\r\n\r\nFlickity.Player = Player;\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n// add, remove cell\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/add-remove-cell',[\r\n './flickity',\r\n 'fizzy-ui-utils/utils'\r\n ], function( Flickity, utils ) {\r\n return factory( window, Flickity, utils );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('./flickity'),\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n factory(\r\n window,\r\n window.Flickity,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( window, Flickity, utils ) {\r\n\r\n\r\n\r\n// append cells to a document fragment\r\nfunction getCellsFragment( cells ) {\r\n var fragment = document.createDocumentFragment();\r\n cells.forEach( function( cell ) {\r\n fragment.appendChild( cell.element );\r\n });\r\n return fragment;\r\n}\r\n\r\n// -------------------------- add/remove cell prototype -------------------------- //\r\n\r\nvar proto = Flickity.prototype;\r\n\r\n/**\r\n * Insert, prepend, or append cells\r\n * @param {Element, Array, NodeList} elems\r\n * @param {Integer} index\r\n */\r\nproto.insert = function( elems, index ) {\r\n var cells = this._makeCells( elems );\r\n if ( !cells || !cells.length ) {\r\n return;\r\n }\r\n var len = this.cells.length;\r\n // default to append\r\n index = index === undefined ? len : index;\r\n // add cells with document fragment\r\n var fragment = getCellsFragment( cells );\r\n // append to slider\r\n var isAppend = index == len;\r\n if ( isAppend ) {\r\n this.slider.appendChild( fragment );\r\n } else {\r\n var insertCellElement = this.cells[ index ].element;\r\n this.slider.insertBefore( fragment, insertCellElement );\r\n }\r\n // add to this.cells\r\n if ( index === 0 ) {\r\n // prepend, add to start\r\n this.cells = cells.concat( this.cells );\r\n } else if ( isAppend ) {\r\n // append, add to end\r\n this.cells = this.cells.concat( cells );\r\n } else {\r\n // insert in this.cells\r\n var endCells = this.cells.splice( index, len - index );\r\n this.cells = this.cells.concat( cells ).concat( endCells );\r\n }\r\n\r\n this._sizeCells( cells );\r\n this.cellChange( index, true );\r\n};\r\n\r\nproto.append = function( elems ) {\r\n this.insert( elems, this.cells.length );\r\n};\r\n\r\nproto.prepend = function( elems ) {\r\n this.insert( elems, 0 );\r\n};\r\n\r\n/**\r\n * Remove cells\r\n * @param {Element, Array, NodeList} elems\r\n */\r\nproto.remove = function( elems ) {\r\n var cells = this.getCells( elems );\r\n if ( !cells || !cells.length ) {\r\n return;\r\n }\r\n\r\n var minCellIndex = this.cells.length - 1;\r\n // remove cells from collection & DOM\r\n cells.forEach( function( cell ) {\r\n cell.remove();\r\n var index = this.cells.indexOf( cell );\r\n minCellIndex = Math.min( index, minCellIndex );\r\n utils.removeFrom( this.cells, cell );\r\n }, this );\r\n\r\n this.cellChange( minCellIndex, true );\r\n};\r\n\r\n/**\r\n * logic to be run after a cell's size changes\r\n * @param {Element} elem - cell's element\r\n */\r\nproto.cellSizeChange = function( elem ) {\r\n var cell = this.getCell( elem );\r\n if ( !cell ) {\r\n return;\r\n }\r\n cell.getSize();\r\n\r\n var index = this.cells.indexOf( cell );\r\n this.cellChange( index );\r\n};\r\n\r\n/**\r\n * logic any time a cell is changed: added, removed, or size changed\r\n * @param {Integer} changedCellIndex - index of the changed cell, optional\r\n */\r\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\r\n var prevSelectedElem = this.selectedElement;\r\n this._positionCells( changedCellIndex );\r\n this._getWrapShiftCells();\r\n this.setGallerySize();\r\n // update selectedIndex\r\n // try to maintain position & select previous selected element\r\n var cell = this.getCell( prevSelectedElem );\r\n if ( cell ) {\r\n this.selectedIndex = this.getCellSlideIndex( cell );\r\n }\r\n this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\r\n\r\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\r\n // position slider\r\n this.select( this.selectedIndex );\r\n // do not position slider after lazy load\r\n if ( isPositioningSlider ) {\r\n this.positionSliderAtSelected();\r\n }\r\n};\r\n\r\n// ----- ----- //\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n// lazyload\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/lazyload',[\r\n './flickity',\r\n 'fizzy-ui-utils/utils'\r\n ], function( Flickity, utils ) {\r\n return factory( window, Flickity, utils );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('./flickity'),\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n factory(\r\n window,\r\n window.Flickity,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( window, Flickity, utils ) {\r\n'use strict';\r\n\r\nFlickity.createMethods.push('_createLazyload');\r\nvar proto = Flickity.prototype;\r\n\r\nproto._createLazyload = function() {\r\n this.on( 'select', this.lazyLoad );\r\n};\r\n\r\nproto.lazyLoad = function() {\r\n var lazyLoad = this.options.lazyLoad;\r\n if ( !lazyLoad ) {\r\n return;\r\n }\r\n // get adjacent cells, use lazyLoad option for adjacent count\r\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\r\n var cellElems = this.getAdjacentCellElements( adjCount );\r\n // get lazy images in those cells\r\n var lazyImages = [];\r\n cellElems.forEach( function( cellElem ) {\r\n var lazyCellImages = getCellLazyImages( cellElem );\r\n lazyImages = lazyImages.concat( lazyCellImages );\r\n });\r\n // load lazy images\r\n lazyImages.forEach( function( img ) {\r\n new LazyLoader( img, this );\r\n }, this );\r\n};\r\n\r\nfunction getCellLazyImages( cellElem ) {\r\n // check if cell element is lazy image\r\n if ( cellElem.nodeName == 'IMG' ) {\r\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\r\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\r\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\r\n if ( lazyloadAttr || srcAttr || srcsetAttr ) {\r\n return [ cellElem ];\r\n }\r\n }\r\n // select lazy images in cell\r\n var lazySelector = 'img[data-flickity-lazyload], ' +\r\n 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\r\n var imgs = cellElem.querySelectorAll( lazySelector );\r\n return utils.makeArray( imgs );\r\n}\r\n\r\n// -------------------------- LazyLoader -------------------------- //\r\n\r\n/**\r\n * class to handle loading images\r\n */\r\nfunction LazyLoader( img, flickity ) {\r\n this.img = img;\r\n this.flickity = flickity;\r\n this.load();\r\n}\r\n\r\nLazyLoader.prototype.handleEvent = utils.handleEvent;\r\n\r\nLazyLoader.prototype.load = function() {\r\n this.img.addEventListener( 'load', this );\r\n this.img.addEventListener( 'error', this );\r\n // get src & srcset\r\n var src = this.img.getAttribute('data-flickity-lazyload') ||\r\n this.img.getAttribute('data-flickity-lazyload-src');\r\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\r\n // set src & serset\r\n this.img.src = src;\r\n if ( srcset ) {\r\n this.img.setAttribute( 'srcset', srcset );\r\n }\r\n // remove attr\r\n this.img.removeAttribute('data-flickity-lazyload');\r\n this.img.removeAttribute('data-flickity-lazyload-src');\r\n this.img.removeAttribute('data-flickity-lazyload-srcset');\r\n};\r\n\r\nLazyLoader.prototype.onload = function( event ) {\r\n this.complete( event, 'flickity-lazyloaded' );\r\n};\r\n\r\nLazyLoader.prototype.onerror = function( event ) {\r\n this.complete( event, 'flickity-lazyerror' );\r\n};\r\n\r\nLazyLoader.prototype.complete = function( event, className ) {\r\n // unbind events\r\n this.img.removeEventListener( 'load', this );\r\n this.img.removeEventListener( 'error', this );\r\n\r\n var cell = this.flickity.getParentCell( this.img );\r\n var cellElem = cell && cell.element;\r\n this.flickity.cellSizeChange( cellElem );\r\n\r\n this.img.classList.add( className );\r\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\r\n};\r\n\r\n// ----- ----- //\r\n\r\nFlickity.LazyLoader = LazyLoader;\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n/*!\r\n * Flickity v2.2.0\r\n * Touch, responsive, flickable carousels\r\n *\r\n * Licensed GPLv3 for open source use\r\n * or Flickity Commercial License for commercial use\r\n *\r\n * https://flickity.metafizzy.co\r\n * Copyright 2015-2018 Metafizzy\r\n */\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/index',[\r\n './flickity',\r\n './drag',\r\n './prev-next-button',\r\n './page-dots',\r\n './player',\r\n './add-remove-cell',\r\n './lazyload'\r\n ], factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n require('./flickity'),\r\n require('./drag'),\r\n require('./prev-next-button'),\r\n require('./page-dots'),\r\n require('./player'),\r\n require('./add-remove-cell'),\r\n require('./lazyload')\r\n );\r\n }\r\n\r\n})( window, function factory( Flickity ) {\r\n /*jshint strict: false*/\r\n return Flickity;\r\n});\r\n\r\n/*!\r\n * Flickity asNavFor v2.0.1\r\n * enable asNavFor for Flickity\r\n */\r\n\r\n/*jshint browser: true, undef: true, unused: true, strict: true*/\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /*jshint strict: false */ /*globals define, module, require */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity-as-nav-for/as-nav-for',[\r\n 'flickity/js/index',\r\n 'fizzy-ui-utils/utils'\r\n ], factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n require('flickity'),\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n window.Flickity = factory(\r\n window.Flickity,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( Flickity, utils ) {\r\n\r\n\r\n\r\n// -------------------------- asNavFor prototype -------------------------- //\r\n\r\n// Flickity.defaults.asNavFor = null;\r\n\r\nFlickity.createMethods.push('_createAsNavFor');\r\n\r\nvar proto = Flickity.prototype;\r\n\r\nproto._createAsNavFor = function() {\r\n this.on( 'activate', this.activateAsNavFor );\r\n this.on( 'deactivate', this.deactivateAsNavFor );\r\n this.on( 'destroy', this.destroyAsNavFor );\r\n\r\n var asNavForOption = this.options.asNavFor;\r\n if ( !asNavForOption ) {\r\n return;\r\n }\r\n // HACK do async, give time for other flickity to be initalized\r\n var _this = this;\r\n setTimeout( function initNavCompanion() {\r\n _this.setNavCompanion( asNavForOption );\r\n });\r\n};\r\n\r\nproto.setNavCompanion = function( elem ) {\r\n elem = utils.getQueryElement( elem );\r\n var companion = Flickity.data( elem );\r\n // stop if no companion or companion is self\r\n if ( !companion || companion == this ) {\r\n return;\r\n }\r\n\r\n this.navCompanion = companion;\r\n // companion select\r\n var _this = this;\r\n this.onNavCompanionSelect = function() {\r\n _this.navCompanionSelect();\r\n };\r\n companion.on( 'select', this.onNavCompanionSelect );\r\n // click\r\n this.on( 'staticClick', this.onNavStaticClick );\r\n\r\n this.navCompanionSelect( true );\r\n};\r\n\r\nproto.navCompanionSelect = function( isInstant ) {\r\n if ( !this.navCompanion ) {\r\n return;\r\n }\r\n // select slide that matches first cell of slide\r\n var selectedCell = this.navCompanion.selectedCells[0];\r\n var firstIndex = this.navCompanion.cells.indexOf( selectedCell );\r\n var lastIndex = firstIndex + this.navCompanion.selectedCells.length - 1;\r\n var selectIndex = Math.floor( lerp( firstIndex, lastIndex,\r\n this.navCompanion.cellAlign ) );\r\n this.selectCell( selectIndex, false, isInstant );\r\n // set nav selected class\r\n this.removeNavSelectedElements();\r\n // stop if companion has more cells than this one\r\n if ( selectIndex >= this.cells.length ) {\r\n return;\r\n }\r\n\r\n var selectedCells = this.cells.slice( firstIndex, lastIndex + 1 );\r\n this.navSelectedElements = selectedCells.map( function( cell ) {\r\n return cell.element;\r\n });\r\n this.changeNavSelectedClass('add');\r\n};\r\n\r\nfunction lerp( a, b, t ) {\r\n return ( b - a ) * t + a;\r\n}\r\n\r\nproto.changeNavSelectedClass = function( method ) {\r\n this.navSelectedElements.forEach( function( navElem ) {\r\n navElem.classList[ method ]('is-nav-selected');\r\n });\r\n};\r\n\r\nproto.activateAsNavFor = function() {\r\n this.navCompanionSelect( true );\r\n};\r\n\r\nproto.removeNavSelectedElements = function() {\r\n if ( !this.navSelectedElements ) {\r\n return;\r\n }\r\n this.changeNavSelectedClass('remove');\r\n delete this.navSelectedElements;\r\n};\r\n\r\nproto.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {\r\n if ( typeof cellIndex == 'number' ) {\r\n this.navCompanion.selectCell( cellIndex );\r\n }\r\n};\r\n\r\nproto.deactivateAsNavFor = function() {\r\n this.removeNavSelectedElements();\r\n};\r\n\r\nproto.destroyAsNavFor = function() {\r\n if ( !this.navCompanion ) {\r\n return;\r\n }\r\n this.navCompanion.off( 'select', this.onNavCompanionSelect );\r\n this.off( 'staticClick', this.onNavStaticClick );\r\n delete this.navCompanion;\r\n};\r\n\r\n// ----- ----- //\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n/*!\r\n * imagesLoaded v4.1.4\r\n * JavaScript is all like \"You images are done yet or what?\"\r\n * MIT License\r\n */\r\n\r\n( function( window, factory ) { 'use strict';\r\n // universal module definition\r\n\r\n /*global define: false, module: false, require: false */\r\n\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'imagesloaded/imagesloaded',[\r\n 'ev-emitter/ev-emitter'\r\n ], function( EvEmitter ) {\r\n return factory( window, EvEmitter );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('ev-emitter')\r\n );\r\n } else {\r\n // browser global\r\n window.imagesLoaded = factory(\r\n window,\r\n window.EvEmitter\r\n );\r\n }\r\n\r\n})( typeof window !== 'undefined' ? window : this,\r\n\r\n// -------------------------- factory -------------------------- //\r\n\r\nfunction factory( window, EvEmitter ) {\r\n\r\n\r\n\r\nvar $ = window.jQuery;\r\nvar console = window.console;\r\n\r\n// -------------------------- helpers -------------------------- //\r\n\r\n// extend objects\r\nfunction extend( a, b ) {\r\n for ( var prop in b ) {\r\n a[ prop ] = b[ prop ];\r\n }\r\n return a;\r\n}\r\n\r\nvar arraySlice = Array.prototype.slice;\r\n\r\n// turn element or nodeList into an array\r\nfunction makeArray( obj ) {\r\n if ( Array.isArray( obj ) ) {\r\n // use object if already an array\r\n return obj;\r\n }\r\n\r\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\r\n if ( isArrayLike ) {\r\n // convert nodeList to array\r\n return arraySlice.call( obj );\r\n }\r\n\r\n // array of single index\r\n return [ obj ];\r\n}\r\n\r\n// -------------------------- imagesLoaded -------------------------- //\r\n\r\n/**\r\n * @param {Array, Element, NodeList, String} elem\r\n * @param {Object or Function} options - if function, use as callback\r\n * @param {Function} onAlways - callback function\r\n */\r\nfunction ImagesLoaded( elem, options, onAlways ) {\r\n // coerce ImagesLoaded() without new, to be new ImagesLoaded()\r\n if ( !( this instanceof ImagesLoaded ) ) {\r\n return new ImagesLoaded( elem, options, onAlways );\r\n }\r\n // use elem as selector string\r\n var queryElem = elem;\r\n if ( typeof elem == 'string' ) {\r\n queryElem = document.querySelectorAll( elem );\r\n }\r\n // bail if bad element\r\n if ( !queryElem ) {\r\n console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\r\n return;\r\n }\r\n\r\n this.elements = makeArray( queryElem );\r\n this.options = extend( {}, this.options );\r\n // shift arguments if no options set\r\n if ( typeof options == 'function' ) {\r\n onAlways = options;\r\n } else {\r\n extend( this.options, options );\r\n }\r\n\r\n if ( onAlways ) {\r\n this.on( 'always', onAlways );\r\n }\r\n\r\n this.getImages();\r\n\r\n if ( $ ) {\r\n // add jQuery Deferred object\r\n this.jqDeferred = new $.Deferred();\r\n }\r\n\r\n // HACK check async to allow time to bind listeners\r\n setTimeout( this.check.bind( this ) );\r\n}\r\n\r\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\r\n\r\nImagesLoaded.prototype.options = {};\r\n\r\nImagesLoaded.prototype.getImages = function() {\r\n this.images = [];\r\n\r\n // filter & find items if we have an item selector\r\n this.elements.forEach( this.addElementImages, this );\r\n};\r\n\r\n/**\r\n * @param {Node} element\r\n */\r\nImagesLoaded.prototype.addElementImages = function( elem ) {\r\n // filter siblings\r\n if ( elem.nodeName == 'IMG' ) {\r\n this.addImage( elem );\r\n }\r\n // get background image on element\r\n if ( this.options.background === true ) {\r\n this.addElementBackgroundImages( elem );\r\n }\r\n\r\n // find children\r\n // no non-element nodes, #143\r\n var nodeType = elem.nodeType;\r\n if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\r\n return;\r\n }\r\n var childImgs = elem.querySelectorAll('img');\r\n // concat childElems to filterFound array\r\n for ( var i=0; i < childImgs.length; i++ ) {\r\n var img = childImgs[i];\r\n this.addImage( img );\r\n }\r\n\r\n // get child background images\r\n if ( typeof this.options.background == 'string' ) {\r\n var children = elem.querySelectorAll( this.options.background );\r\n for ( i=0; i < children.length; i++ ) {\r\n var child = children[i];\r\n this.addElementBackgroundImages( child );\r\n }\r\n }\r\n};\r\n\r\nvar elementNodeTypes = {\r\n 1: true,\r\n 9: true,\r\n 11: true\r\n};\r\n\r\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\r\n var style = getComputedStyle( elem );\r\n if ( !style ) {\r\n // Firefox returns null if in a hidden iframe https://bugzil.la/548397\r\n return;\r\n }\r\n // get url inside url(\"...\")\r\n var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\r\n var matches = reURL.exec( style.backgroundImage );\r\n while ( matches !== null ) {\r\n var url = matches && matches[2];\r\n if ( url ) {\r\n this.addBackground( url, elem );\r\n }\r\n matches = reURL.exec( style.backgroundImage );\r\n }\r\n};\r\n\r\n/**\r\n * @param {Image} img\r\n */\r\nImagesLoaded.prototype.addImage = function( img ) {\r\n var loadingImage = new LoadingImage( img );\r\n this.images.push( loadingImage );\r\n};\r\n\r\nImagesLoaded.prototype.addBackground = function( url, elem ) {\r\n var background = new Background( url, elem );\r\n this.images.push( background );\r\n};\r\n\r\nImagesLoaded.prototype.check = function() {\r\n var _this = this;\r\n this.progressedCount = 0;\r\n this.hasAnyBroken = false;\r\n // complete if no images\r\n if ( !this.images.length ) {\r\n this.complete();\r\n return;\r\n }\r\n\r\n function onProgress( image, elem, message ) {\r\n // HACK - Chrome triggers event before object properties have changed. #83\r\n setTimeout( function() {\r\n _this.progress( image, elem, message );\r\n });\r\n }\r\n\r\n this.images.forEach( function( loadingImage ) {\r\n loadingImage.once( 'progress', onProgress );\r\n loadingImage.check();\r\n });\r\n};\r\n\r\nImagesLoaded.prototype.progress = function( image, elem, message ) {\r\n this.progressedCount++;\r\n this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\r\n // progress event\r\n this.emitEvent( 'progress', [ this, image, elem ] );\r\n if ( this.jqDeferred && this.jqDeferred.notify ) {\r\n this.jqDeferred.notify( this, image );\r\n }\r\n // check if completed\r\n if ( this.progressedCount == this.images.length ) {\r\n this.complete();\r\n }\r\n\r\n if ( this.options.debug && console ) {\r\n console.log( 'progress: ' + message, image, elem );\r\n }\r\n};\r\n\r\nImagesLoaded.prototype.complete = function() {\r\n var eventName = this.hasAnyBroken ? 'fail' : 'done';\r\n this.isComplete = true;\r\n this.emitEvent( eventName, [ this ] );\r\n this.emitEvent( 'always', [ this ] );\r\n if ( this.jqDeferred ) {\r\n var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\r\n this.jqDeferred[ jqMethod ]( this );\r\n }\r\n};\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nfunction LoadingImage( img ) {\r\n this.img = img;\r\n}\r\n\r\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\r\n\r\nLoadingImage.prototype.check = function() {\r\n // If complete is true and browser supports natural sizes,\r\n // try to check for image status manually.\r\n var isComplete = this.getIsImageComplete();\r\n if ( isComplete ) {\r\n // report based on naturalWidth\r\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\r\n return;\r\n }\r\n\r\n // If none of the checks above matched, simulate loading on detached element.\r\n this.proxyImage = new Image();\r\n this.proxyImage.addEventListener( 'load', this );\r\n this.proxyImage.addEventListener( 'error', this );\r\n // bind to image as well for Firefox. #191\r\n this.img.addEventListener( 'load', this );\r\n this.img.addEventListener( 'error', this );\r\n this.proxyImage.src = this.img.src;\r\n};\r\n\r\nLoadingImage.prototype.getIsImageComplete = function() {\r\n // check for non-zero, non-undefined naturalWidth\r\n // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\r\n return this.img.complete && this.img.naturalWidth;\r\n};\r\n\r\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\r\n this.isLoaded = isLoaded;\r\n this.emitEvent( 'progress', [ this, this.img, message ] );\r\n};\r\n\r\n// ----- events ----- //\r\n\r\n// trigger specified handler for event type\r\nLoadingImage.prototype.handleEvent = function( event ) {\r\n var method = 'on' + event.type;\r\n if ( this[ method ] ) {\r\n this[ method ]( event );\r\n }\r\n};\r\n\r\nLoadingImage.prototype.onload = function() {\r\n this.confirm( true, 'onload' );\r\n this.unbindEvents();\r\n};\r\n\r\nLoadingImage.prototype.onerror = function() {\r\n this.confirm( false, 'onerror' );\r\n this.unbindEvents();\r\n};\r\n\r\nLoadingImage.prototype.unbindEvents = function() {\r\n this.proxyImage.removeEventListener( 'load', this );\r\n this.proxyImage.removeEventListener( 'error', this );\r\n this.img.removeEventListener( 'load', this );\r\n this.img.removeEventListener( 'error', this );\r\n};\r\n\r\n// -------------------------- Background -------------------------- //\r\n\r\nfunction Background( url, element ) {\r\n this.url = url;\r\n this.element = element;\r\n this.img = new Image();\r\n}\r\n\r\n// inherit LoadingImage prototype\r\nBackground.prototype = Object.create( LoadingImage.prototype );\r\n\r\nBackground.prototype.check = function() {\r\n this.img.addEventListener( 'load', this );\r\n this.img.addEventListener( 'error', this );\r\n this.img.src = this.url;\r\n // check if image is already complete\r\n var isComplete = this.getIsImageComplete();\r\n if ( isComplete ) {\r\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\r\n this.unbindEvents();\r\n }\r\n};\r\n\r\nBackground.prototype.unbindEvents = function() {\r\n this.img.removeEventListener( 'load', this );\r\n this.img.removeEventListener( 'error', this );\r\n};\r\n\r\nBackground.prototype.confirm = function( isLoaded, message ) {\r\n this.isLoaded = isLoaded;\r\n this.emitEvent( 'progress', [ this, this.element, message ] );\r\n};\r\n\r\n// -------------------------- jQuery -------------------------- //\r\n\r\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\r\n jQuery = jQuery || window.jQuery;\r\n if ( !jQuery ) {\r\n return;\r\n }\r\n // set local variable\r\n $ = jQuery;\r\n // $().imagesLoaded()\r\n $.fn.imagesLoaded = function( options, callback ) {\r\n var instance = new ImagesLoaded( this, options, callback );\r\n return instance.jqDeferred.promise( $(this) );\r\n };\r\n};\r\n// try making plugin\r\nImagesLoaded.makeJQueryPlugin();\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nreturn ImagesLoaded;\r\n\r\n});\r\n\r\n/*!\r\n * Flickity imagesLoaded v2.0.0\r\n * enables imagesLoaded option for Flickity\r\n */\r\n\r\n/*jshint browser: true, strict: true, undef: true, unused: true */\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /*jshint strict: false */ /*globals define, module, require */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( [\r\n 'flickity/js/index',\r\n 'imagesloaded/imagesloaded'\r\n ], function( Flickity, imagesLoaded ) {\r\n return factory( window, Flickity, imagesLoaded );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('flickity'),\r\n require('imagesloaded')\r\n );\r\n } else {\r\n // browser global\r\n window.Flickity = factory(\r\n window,\r\n window.Flickity,\r\n window.imagesLoaded\r\n );\r\n }\r\n\r\n}( window, function factory( window, Flickity, imagesLoaded ) {\r\n'use strict';\r\n\r\nFlickity.createMethods.push('_createImagesLoaded');\r\n\r\nvar proto = Flickity.prototype;\r\n\r\nproto._createImagesLoaded = function() {\r\n this.on( 'activate', this.imagesLoaded );\r\n};\r\n\r\nproto.imagesLoaded = function() {\r\n if ( !this.options.imagesLoaded ) {\r\n return;\r\n }\r\n var _this = this;\r\n function onImagesLoadedProgress( instance, image ) {\r\n var cell = _this.getParentCell( image.img );\r\n _this.cellSizeChange( cell && cell.element );\r\n if ( !_this.options.freeScroll ) {\r\n _this.positionSliderAtSelected();\r\n }\r\n }\r\n imagesLoaded( this.slider ).on( 'progress', onImagesLoadedProgress );\r\n};\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n","/*\n * MAIN SCRIPT\n * DON'T WRITE FUNCTION HERE, ONLY CALL THEM\n *\n * **/\ndocument.addEventListener('DOMContentLoaded', (event) => {\n initRecaptcha();\n initFormsValidation();\n jsLazyLoadImages();\n initModalResponse();\n initIubendaProof();\n initMenuResponsive();\n accordionToggler();\n initLoadMore();\n initSearchedProducts();\n initLastSeenProduct();\n initDownloadCatalogs();\n initCheckboxFilter();\n initCarousel();\n initFilterProduct();\n filterSearch();\n initSliderGalleryClick();\n initVimeoVideo();\n sidebarAnchor();\n initDownloadPage();\n initReadMoreAndLess();\n highlightSidebarOnScroll();\n});\n","const accordionToggler = () => {\n const arrayAccordion = document.querySelectorAll(\".is-accordion\");\n if (arrayAccordion && arrayAccordion.length > 0) {\n arrayAccordion.forEach((accordion) => {\n accordion.parentElement.classList.add(\"accordion-wrapper\");\n accordion.parentElement.parentElement.classList.add(\"section-accordion\");\n accordion.addEventListener(\"click\", () => {\n const wrapperParentElement = accordion.parentElement;\n const sectionParentElement = accordion.parentElement.parentElement;\n if (wrapperParentElement.classList.contains(\"active\")) {\n wrapperParentElement.classList.remove(\"active\");\n sectionParentElement.classList.remove(\"active\");\n }\n else {\n wrapperParentElement.classList.toggle(\"active\");\n sectionParentElement.classList.toggle(\"active\");\n }\n });\n });\n }\n};\n","const initCheckboxFilter = () => {\n const arrayCheckboxFilterCategory = document.querySelectorAll(\".checkbox-filter-category\");\n initCheckOnlyOneCheckbox(arrayCheckboxFilterCategory);\n const arrayCheckboxFilterSubCategory = document.querySelectorAll(\".checkbox-filter-sub-category\");\n initCheckOnlyOneCheckbox(arrayCheckboxFilterSubCategory);\n const arrayCheckboxFilterMarkets = document.querySelectorAll(\".checkbox-filter-markets\");\n initCheckOnlyOneCheckbox(arrayCheckboxFilterMarkets);\n};\nconst initCheckOnlyOneCheckbox = (arrayCheckbox) => {\n if (arrayCheckbox && arrayCheckbox.length > 0) {\n arrayCheckbox.forEach((checkbox) => {\n checkbox.addEventListener(\"click\", () => {\n for (let i = 0; i < arrayCheckbox.length; i++) {\n arrayCheckbox[i].checked = false;\n }\n checkbox.checked = true;\n });\n });\n }\n};\n","/**\n* debouncer - Limits the rate at which a function can fire.\n*\n* Example:\n*\n* $(window).resize(debouncer(function(e) {\n* function();\n* }, 300));\n*\n* @param {function} func The function you want to limit\n* @param {ms} timeout Optional: timeout of the debouncer. Defaults at 200ms.\n*/\nconst debouncer = (func, timeout = 300) => {\n let timeoutId;\n return function (...args) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => func.apply(this, args), timeout);\n };\n};\n","const initDownloadCatalogs = () => {\n const checkboxArray = document.querySelectorAll(\"[data-label-checkbox]\");\n const valuesIdFilesArray = [];\n if (checkboxArray) {\n checkboxArray.forEach((checkbox) => {\n checkbox.addEventListener(\"click\", () => {\n const valueInputCheckbox = checkbox.parentElement.querySelector(\"[data-input-checkbox]\");\n setTimeout(() => {\n if (valueInputCheckbox.checked == true) {\n valueInputCheckbox.value = \"1\";\n valuesIdFilesArray.push(`${valueInputCheckbox.getAttribute(\"id\")}`);\n }\n else {\n valueInputCheckbox.value = \"0\";\n const indexDeleteItem = valuesIdFilesArray.indexOf(valueInputCheckbox.getAttribute(\"id\"));\n valuesIdFilesArray.splice(indexDeleteItem, 1);\n }\n }, 0);\n });\n });\n initOpenModalDownload(valuesIdFilesArray);\n }\n};\nconst initOpenModalDownload = (valuesIdFilesArray) => {\n const downloadBtn = document.querySelector(\".download-btn\");\n const modalDownloadCatalog = document.querySelector(\".modal-download-catalog\");\n const checkedFiles = document.querySelector(\"[data-checked-files]\");\n const errorModal = document.querySelector(\".modal.error.not-visible\");\n const errorTestIT = document.querySelector(\".error-test-class-it\");\n const errorTestEN = document.querySelector(\".error-test-class-en\");\n if (downloadBtn && modalDownloadCatalog) {\n const modalClose = document.querySelector(\".close-modal\");\n const containerBoxes = document.querySelector(\".container-form\");\n downloadBtn.addEventListener(\"click\", () => {\n if (valuesIdFilesArray.length === 0) {\n errorModal.classList.remove(\"not-visible\");\n if (window.location.pathname.includes(\"/en/\")) {\n errorTestEN.classList.remove(\"not-visible\");\n }\n if (window.location.pathname.includes(\"/it/\")) {\n errorTestIT.classList.remove(\"not-visible\");\n }\n }\n else {\n const rect = modalDownloadCatalog.getBoundingClientRect();\n window.scrollTo(rect.x, rect.y);\n modalDownloadCatalog.classList.add(\"active\");\n containerBoxes.classList.add(\"modal-active\");\n checkedFiles.value = `${valuesIdFilesArray.toString()}`;\n }\n });\n modalClose.addEventListener(\"click\", () => {\n modalDownloadCatalog.classList.remove(\"active\");\n containerBoxes.classList.remove(\"modal-active\");\n });\n }\n};\n","const initDownloadPage = () => {\n const downloadPage = document.querySelector(\".download-catalog-page\");\n if (downloadPage) {\n const goUp = document.querySelector(\".go-up\");\n if (goUp) {\n goUp.classList.add(\"not-visible\");\n }\n }\n};\n","//---\n/*Please leave the spaces because the code is redundant, it will be easier to understand it visually*/\nconst initFilterProduct = () => {\n let paramCategory;\n let paramMarket;\n let paramCertification;\n let paramLang;\n //---\n let paramCa;\n let paramMa;\n let paramCe;\n //---\n const sidenavFilter = document.querySelector(\"[data-sidenav-filter]\");\n const searchLinkFilter = document.querySelector(\"[data-btn-filter]\");\n const lang = document.querySelector(\"html\");\n //---\n if (sidenavFilter && searchLinkFilter) {\n const containerFilterArray = document.querySelectorAll(\"[data-container-filter]\");\n const checkboxArray = document.querySelectorAll(\"[data-input-filter]\");\n checkboxArray.forEach((checkbox) => {\n checkbox.addEventListener(\"change\", (e) => {\n containerFilterArray.forEach(containerFilter => {\n if (containerFilter.classList.contains(\"active\")) {\n const nameFilter = containerFilter.querySelector(\".container-checkboxes\");\n nameFilter.addEventListener(\"click\", (e) => {\n e.preventDefault();\n });\n if (nameFilter.hasAttribute(\"data-category-filter\")) {\n paramCa = `&ca=1`;\n }\n else if (nameFilter.hasAttribute(\"data-market-filter\")) {\n paramMa = `&ma=1`;\n }\n else if (nameFilter.hasAttribute(\"data-cert-filter\")) {\n paramCe = `&ra=1`;\n }\n }\n });\n // setTimeout is important 'cause there's an animation that turn the input into checked when the animation ends.\n setTimeout(() => {\n /*FIRST CASE IF*/\n if (checkbox.checked == true && checkbox.value.toLowerCase() !== \"selectall\") {\n //1\n if (checkbox.parentElement.hasAttribute(\"data-category-filter\")) {\n searchLinkFilter.removeAttribute(\"data-btn-category\");\n searchLinkFilter.removeAttribute(\"data-btn-market\");\n searchLinkFilter.removeAttribute(\"data-btn-cert\");\n const marketCheckbox = document.querySelector(\"[data-market-filter] input[checked]\");\n if (marketCheckbox && marketCheckbox.value.toLowerCase() != \"selectall\") {\n paramMarket = `&m=${marketCheckbox.value}`;\n }\n const certificationCheckbox = document.querySelector(\"[data-cert-filter] input[checked]\");\n if (certificationCheckbox && certificationCheckbox.value.toLowerCase() != \"selectall\") {\n paramCertification = `&r=${certificationCheckbox.value}`;\n }\n paramCategory = `c=${checkbox.value}`;\n searchLinkFilter.setAttribute(\"data-btn-category\", paramCategory);\n searchLinkFilter.setAttribute(\"data-btn-market\", paramMarket);\n searchLinkFilter.setAttribute(\"data-btn-cert\", paramCertification);\n }\n //2\n else if (checkbox.parentElement.hasAttribute(\"data-market-filter\")) {\n searchLinkFilter.removeAttribute(\"data-btn-category\");\n searchLinkFilter.removeAttribute(\"data-btn-market\");\n searchLinkFilter.removeAttribute(\"data-btn-cert\");\n const categoryCheckbox = document.querySelector(\"[data-category-filter] input[checked]\");\n if (categoryCheckbox && categoryCheckbox.value.toLowerCase() != \"selectall\") {\n paramCategory = `c=${categoryCheckbox.value}`;\n }\n const certificationCheckbox = document.querySelector(\"[data-cert-filter] input[checked]\");\n if (certificationCheckbox && certificationCheckbox.value.toLowerCase() != \"selectall\") {\n paramCertification = `&r=${certificationCheckbox.value}`;\n }\n paramMarket = `&m=${checkbox.value}`;\n searchLinkFilter.setAttribute(\"data-btn-category\", paramCategory);\n searchLinkFilter.setAttribute(\"data-btn-market\", paramMarket);\n searchLinkFilter.setAttribute(\"data-btn-cert\", paramCertification);\n }\n //3\n else if (checkbox.parentElement.hasAttribute(\"data-cert-filter\")) {\n searchLinkFilter.removeAttribute(\"data-btn-category\");\n searchLinkFilter.removeAttribute(\"data-btn-market\");\n searchLinkFilter.removeAttribute(\"data-btn-cert\");\n const categoryCheckbox = document.querySelector(\"[data-category-filter] input[checked]\");\n if (categoryCheckbox && categoryCheckbox.value.toLowerCase() != \"selectall\") {\n paramCategory = `c=${categoryCheckbox.value}`;\n }\n const marketCheckbox = document.querySelector(\"[data-market-filter] input[checked]\");\n if (marketCheckbox && marketCheckbox.value.toLowerCase() != \"selectall\") {\n paramMarket = `&m=${marketCheckbox.value}`;\n }\n paramCertification = `&r=${checkbox.value}`;\n searchLinkFilter.setAttribute(\"data-btn-category\", paramCategory);\n searchLinkFilter.setAttribute(\"data-btn-market\", paramMarket);\n searchLinkFilter.setAttribute(\"data-btn-cert\", paramCertification);\n }\n }\n /*SECOND CASE IF*/\n if (checkbox.checked == true && checkbox.value.toLowerCase() == \"selectall\") {\n //1\n if (checkbox.parentElement.hasAttribute(\"data-category-filter\")) {\n searchLinkFilter.removeAttribute(\"data-btn-category\");\n const marketCheckbox = document.querySelector(\"[data-market-filter] input[checked]\");\n if (marketCheckbox && marketCheckbox.value.toLowerCase() != \"selectall\") {\n paramMarket = `&m=${marketCheckbox.value}`;\n }\n const certificationCheckbox = document.querySelector(\"[data-cert-filter] input[checked]\");\n if (certificationCheckbox && certificationCheckbox.value.toLowerCase() != \"selectall\") {\n paramCertification = `&r=${certificationCheckbox.value}`;\n }\n searchLinkFilter.setAttribute(\"data-btn-market\", paramMarket);\n searchLinkFilter.setAttribute(\"data-btn-cert\", paramCertification);\n }\n //2\n else if (checkbox.parentElement.hasAttribute(\"data-market-filter\")) {\n searchLinkFilter.removeAttribute(\"data-btn-market\");\n const categoryCheckbox = document.querySelector(\"[data-category-filter] input[checked]\");\n if (categoryCheckbox && categoryCheckbox.value.toLowerCase() != \"selectall\") {\n paramCategory = `c=${categoryCheckbox.value}`;\n }\n const certificationCheckbox = document.querySelector(\"[data-cert-filter] input[checked]\");\n if (certificationCheckbox && certificationCheckbox.value.toLowerCase() != \"selectall\") {\n paramCertification = `&r=${certificationCheckbox.value}`;\n }\n searchLinkFilter.setAttribute(\"data-btn-category\", paramCategory);\n searchLinkFilter.setAttribute(\"data-btn-cert\", paramCertification);\n }\n //3\n else if (checkbox.parentElement.hasAttribute(\"data-cert-filter\")) {\n searchLinkFilter.removeAttribute(\"data-btn-cert\");\n const categoryCheckbox = document.querySelector(\"[data-category-filter] input[checked]\");\n if (categoryCheckbox && categoryCheckbox.value.toLowerCase() != \"selectall\") {\n paramCategory = `c=${categoryCheckbox.value}`;\n }\n const marketCheckbox = document.querySelector(\"[data-market-filter] input[checked]\");\n if (marketCheckbox && marketCheckbox.value.toLowerCase() != \"selectall\") {\n paramMarket = `&m=${marketCheckbox.value}`;\n }\n searchLinkFilter.setAttribute(\"data-btn-category\", paramCategory);\n searchLinkFilter.setAttribute(\"data-btn-market\", paramMarket);\n }\n }\n //lang\n paramLang = `&l=${lang.getAttribute(\"lang\")}`;\n searchLinkFilter.setAttribute(\"data-btn-lang\", paramLang);\n //final step\n const paramsQueryString = `?${paramCategory ? paramCategory : \"\"}${paramMarket ? paramMarket : \"\"}${paramCertification ? paramCertification : \"\"}${paramLang ? paramLang : \"\"}${paramCa ? paramCa : \"\"}${paramMa ? paramMa : \"\"}${paramCe ? paramCe : \"\"}`;\n fetchSidebarFilter(sidenavFilter, paramsQueryString);\n }, 0);\n });\n });\n }\n};\nconst fetchSidebarFilter = (containerFilter, queryString) => {\n const fetchUrl = `/umbraco/surface/ProductDetail/GetSidebar${queryString}`;\n fetch(fetchUrl).then(function (response) {\n return response.text();\n }).then(function (updateSidebar) {\n containerFilter.innerHTML = updateSidebar;\n accordionToggler();\n initCheckboxFilter();\n initFilterProduct();\n });\n};\n","let isFormValid = false;\nconst contactForms = document.querySelectorAll(\"form\");\nconst initFormsValidation = () => {\n contactForms && contactForms.forEach((form) => {\n const submitButton = form.querySelector(\"[submit-button]\");\n submitButton.addEventListener(\"click\", (e) => {\n e.preventDefault();\n // set active form\n contactForms.forEach((singleForm) => singleForm.removeAttribute(\"data-active-form\"));\n form.setAttribute(\"data-active-form\", \"true\");\n const sessionStorage = window.sessionStorage;\n const modalForm = form.parentElement.querySelector(\".modal.success\");\n if (modalForm) {\n sessionStorage.setItem(`modal`, `${modalForm.getAttribute(\"data-modal\")}`);\n }\n // disable button\n temporaryDisableButton(submitButton);\n // check form validity\n const contactFormRequiredElements = form.querySelectorAll(\"[required]:not([disabled])\");\n if (contactFormRequiredElements && contactFormRequiredElements.length > 0) {\n isFormValid = checkFormValidity(contactFormRequiredElements);\n if (isFormValid) {\n if (isRecaptchaEnabled) {\n grecaptcha.execute(parseInt(form.getAttribute(\"g-recaptcha-index\")));\n }\n else {\n form.submit();\n }\n }\n }\n });\n });\n};\nconst temporaryDisableButton = (button) => {\n button.disabled = true;\n setTimeout(() => {\n button.removeAttribute(\"disabled\");\n }, 2000);\n};\nconst checkFormValidity = (arrayOfRequiredElements) => {\n let errorCounter = 0;\n arrayOfRequiredElements.forEach((item) => {\n if (item.hasAttribute(\"required\")) {\n const isValidItem = item.checkValidity();\n //handle checkbox\n if (item.type === \"checkbox\") {\n const label = item.parentElement.querySelector(\"label\");\n if (isValidItem) {\n label.classList.remove('error');\n }\n else {\n label.classList.add('error');\n errorCounter++;\n }\n //all other inputs\n }\n else {\n if (isValidItem) {\n item.classList.remove('error');\n }\n else {\n item.classList.add('error');\n errorCounter++;\n }\n }\n item.addEventListener(\"click\", () => {\n item.classList.remove('error');\n });\n }\n });\n return errorCounter > 0 ? false : true;\n};\n","const initIubendaProof = () => {\n document.querySelectorAll('form[method=POST]').forEach(function (value) {\n const html = btoa(encodeURI(value.innerHTML));\n const textArea = document.createElement(\"textarea\");\n const innerText = document.createTextNode(html);\n textArea.name = \"iubenda_proof\";\n textArea.style.display = \"none\";\n value.appendChild(textArea);\n textArea.appendChild(innerText);\n });\n};\n","const initLastSeenProduct = () => {\n const lastSeenProductWidget = document.querySelector(\".last-seen-product-slider-widget\");\n const lastSeenProductSlider = document.querySelector(\"[data-last-seen-product]\");\n //const lang: string = document.querySelector(\"html\").getAttribute(\"lang\");\n const path = window.location.pathname.split('/');\n const lang = path[1];\n if (lastSeenProductSlider) {\n const queryString = `?ids=${window.sessionStorage.getItem(\"ids\")}&l=${lang}`;\n fetchLastSeenProductCall(lastSeenProductWidget, lastSeenProductSlider, queryString);\n }\n};\nconst fetchLastSeenProductCall = (lastSeenProductWidget, lastSeenProductSlider, queryString) => {\n const fetchUrl = `/umbraco/surface/ProductDetail/GetSlider${queryString}`;\n fetch(fetchUrl).then(function (response) {\n return response.text();\n }).then(function (updateProductItem) {\n lastSeenProductSlider.innerHTML = updateProductItem;\n const lastSeenProductsItemsArray = document.querySelectorAll(\"[data-last-seen-product-item]\");\n if (lastSeenProductsItemsArray && lastSeenProductsItemsArray.length > 0) {\n if (lastSeenProductWidget.classList.contains(\"not-visible\")) {\n lastSeenProductWidget.classList.remove(\"not-visible\");\n }\n }\n else {\n lastSeenProductWidget.classList.add(\"not-visible\");\n }\n if (lastSeenProductsItemsArray && lastSeenProductsItemsArray.length > 4) {\n new Flickity(lastSeenProductSlider, {\n // options\n contain: true,\n wrapAround: true,\n cellAlign: \"left\",\n arrowShape: \"M11.291 20L18.2324 13.0586L19.0605 13.8867L12.9473 20L19.0605 26.1133L18.2324 26.9414L11.291 20Z M28.7109 20.5859L28.7109 19.4141L12.1094 19.4141L12.1094 20.5859L28.7109 20.5859Z\"\n });\n }\n else {\n if (lastSeenProductsItemsArray && lastSeenProductsItemsArray.length > 2) {\n for (let index = 0; index < 5; index++) {\n const itemToClone = document.querySelectorAll(\"[data-last-seen-product-item]\")[index];\n const clone = itemToClone.cloneNode(true);\n lastSeenProductSlider.appendChild(clone);\n }\n new Flickity(lastSeenProductSlider, {\n // options\n contain: true,\n wrapAround: true,\n cellAlign: \"left\",\n arrowShape: \"M11.291 20L18.2324 13.0586L19.0605 13.8867L12.9473 20L19.0605 26.1133L18.2324 26.9414L11.291 20Z M28.7109 20.5859L28.7109 19.4141L12.1094 19.4141L12.1094 20.5859L28.7109 20.5859Z\"\n });\n }\n else {\n lastSeenProductSlider.classList.add(\"no-slider\");\n }\n }\n });\n};\n","/**\n* LAZY LOAD IMG\n* loading non-critical img (and background img) at the moment of need\n*\n* for img use:\n* - data-src=url\n* -\n* - src=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII= *\n*\n* - class => \"notLazy\" to not include that img in lazyLoading function\n*\n* for background img use:\n* - data-bg=url\n*\n* To exclude an entire DOM element (as well as all the children) apply the class \"notLazy\" to that element.\n*\n* recall jsLazyLoadImages() every time you add images asynchronously\n*\n* @external Debouncer.fn\n* @see {@link ./frontend.util.js => debouncer}\n*\n* @external imagesloaded\n* @see {@link https://imagesloaded.desandro.com/}\n*\n* @param {object} settings => [OPTIONAL] settings object\n* @param {bool} settings0=> [OPTIONAL] add all img to lazyLoad\n* @param {bool} settings1 => [OPTIONAL] add all bacgkroundImg to lazyLoad\n* @param {bool} settings2 => [OPTIONAL] container\n*\n*/\nconst jsLazyLoadImages = (asyncImg = true, asyncBg = true, container = document) => {\n if (!asyncImg && !asyncBg)\n return false;\n let lazyImgs = [];\n let lazyImagesBG = [];\n let lazyImages = [];\n let active = false;\n const jsLazyLoad = () => {\n // Puts the contents of the querySelectorAll into the array.\n lazyImgs = asyncImg ? [].slice.call(container.querySelectorAll(\"[data-src]:not(.notLazy):not([js-done])\")) : lazyImgs;\n lazyImagesBG = asyncBg ? [].slice.call(container.querySelectorAll(\"[data-bg]:not([js-done])\")) : lazyImagesBG;\n // filter out images inside '.notLazy' containers\n const notLazyNodes = [...container.querySelectorAll('.notLazy:not(img)')];\n lazyImgs.forEach(img => {\n if (notLazyNodes.some(node => node.contains(img)))\n lazyImgs.splice(img);\n });\n //notLazyNodes\n lazyImages = lazyImgs.concat(lazyImagesBG);\n active = false;\n if (active === false) {\n active = true;\n lazyImages.forEach(lazyImage => {\n if ((lazyImage.getBoundingClientRect().top - window.innerHeight / 2 <= window.innerHeight &&\n lazyImage.getBoundingClientRect().bottom + window.innerHeight / 2 >= 0) &&\n getComputedStyle(lazyImage).display !== \"none\") {\n setTimeout(() => {\n if (lazyImage.getAttribute(\"data-bg\")) {\n resizeBg([lazyImage]);\n }\n else {\n lazyImage.src = lazyImage.getAttribute(\"data-src\");\n }\n lazyImage.setAttribute(\"js-done\", \"1\");\n lazyImages = lazyImages.filter(image => image !== lazyImage);\n if (lazyImages.length === 0) {\n document.removeEventListener(\"scroll\", jsLazyLoad);\n }\n }, 300);\n }\n });\n active = false;\n }\n };\n //clear old events\n document.removeEventListener(\"scroll\", jsLazyLoad);\n window.removeEventListener('resize', debouncer(() => {\n resizeBg();\n }, 150));\n window.removeEventListener('orientationchange', debouncer(() => {\n resizeBg();\n }, 150));\n jsLazyLoad();\n document.addEventListener(\"scroll\", jsLazyLoad);\n window.addEventListener('resize', debouncer(() => {\n resizeBg();\n }, 150));\n window.addEventListener('orientationchange', debouncer(() => {\n resizeBg();\n }, 150));\n};\nconst resizeBg = (lazyImage) => {\n const lazyImagesBG = lazyImage ? lazyImage : [].slice.call(document.querySelectorAll(\"[data-bg]\"));\n lazyImagesBG.forEach(lazyImage => {\n let url = \"\";\n if (window.innerWidth < 1200) {\n if (window.innerWidth > 767) {\n url = \"data-bg768\";\n }\n else {\n url = \"data-bg480\";\n }\n }\n else {\n url = \"data-bg\";\n }\n const backgroundImage = lazyImage.getAttribute(url) || lazyImage.getAttribute(\"data-bg\");\n lazyImage.style.backgroundImage = `url('${backgroundImage}')`;\n });\n};\n","/**\n * In the page there should be one or more listings [data-container-loadmore] with the functionality of the load more [data-btn-loadmore];\n * At the click of the load more button of the listing referenced by its ID, it executes a fetch call in GET\n * The resolution of the PROMISE of the fetch transforms the data into a text with the PROMISE Text()\n * The resolution of the PROMISE Text() gives us the result NOT parsed.\n * At this point we will instantiate a DOM Parser, so that it allows us to parse our result in text / html\n * We take only the elements we want [data-to-append]\n * We verify that the listing to which we will hang the elements received is related to the Load more button clicked\n * I append the elements to the listing.\n *\n * At this point, the button will update with the new href\n * If it doesn't have an href, the button node will be removed\n *\n * */\nconst initLoadMore = () => {\n const buttonsArray = document.querySelectorAll(\"[data-btn-loadmore]\");\n const dataContainersArray = document.querySelectorAll(\"[data-container-loadmore]\");\n if (buttonsArray && dataContainersArray && buttonsArray.length > 0 && dataContainersArray.length > 0) {\n // Put unique id on data container\n dataContainersArray.forEach((dataContainer, index) => {\n dataContainer.setAttribute(\"data-container-loadmore\", index.toString());\n });\n buttonsArray.forEach((button, index) => {\n //Put unique id on data button load more\n button.setAttribute(\"data-btn-loadmore\", index.toString());\n button.addEventListener(\"click\", (event) => {\n event.preventDefault();\n if (event.target instanceof HTMLAnchorElement) {\n const clickedButton = event.target;\n //start loading animation\n clickedButton.classList.add(\"loading\");\n const nextPageUrl = event.target.href;\n fetch(`${nextPageUrl}&part=1`)\n .then(data => {\n //convert the response into plain text\n data.text()\n //resolve the promise\n .then((result) => {\n // Initialize the DOM parser\n const parser = new DOMParser();\n // Parse the text and convert it into HTML\n const parsedHTML = parser.parseFromString(result, \"text/html\");\n //get only the cards\n const cardsToAppendArray = parsedHTML.querySelectorAll(\"[data-to-append]\");\n //append them to the deck\n const loadMoreButtonId = clickedButton.getAttribute(\"data-btn-loadmore\");\n const dataContainer = document.querySelector(`[data-container-loadmore='${loadMoreButtonId}']`);\n cardsToAppendArray.forEach(card => {\n dataContainer.append(card);\n });\n //update loadmore link or hide button\n const updatedButton = parsedHTML.querySelector(\"[data-btn-loadmore]\");\n if (updatedButton != null) {\n clickedButton.href = updatedButton.href;\n //stop loading animation\n clickedButton.classList.remove(\"loading\");\n }\n else {\n //remove load more button\n clickedButton.remove();\n }\n });\n });\n }\n });\n });\n }\n};\n","const initMenuResponsive = () => {\n const hamburgerMenu = document.querySelector(\".hamburger-menu\");\n const hamburgerCloseMenu = document.querySelector(\".hamburger-menu-close\");\n const headerMenu = document.querySelector(\".header\");\n const menuMobile = document.querySelector(\".menu-mobile\");\n hamburgerMenu.addEventListener(\"click\", () => {\n headerMenu.classList.add(\"mobile-menu-active\");\n menuMobile.classList.add(\"mobile-menu-active\");\n });\n hamburgerCloseMenu.addEventListener(\"click\", () => {\n headerMenu.classList.remove(\"mobile-menu-active\");\n menuMobile.classList.remove(\"mobile-menu-active\");\n });\n};\n","const initModalResponse = () => {\n const actualUrl = window.location.href;\n const url = new URL(actualUrl);\n /*modal for download and modal for newsletter*/\n const modalResponseDownload = url.searchParams.get(\"download\");\n const modalResponseContact = url.searchParams.get(\"contact\");\n const modalResponseNewsletter = url.searchParams.get(\"newsletter\");\n const error = url.searchParams.get(\"error\") == \"1\";\n const sessionStorage = window.sessionStorage;\n const dataSessionStorage = sessionStorage.getItem(\"modal\");\n let successModal;\n if (dataSessionStorage == \"newsletter\") {\n successModal = document.querySelector(`.modal.success[data-modal=\"newsletter\"]`);\n }\n else if (dataSessionStorage == \"contact-form\") {\n successModal = document.querySelector(`.modal.success[data-modal=\"contact-form\"]`);\n }\n else if (dataSessionStorage == \"product-download\") {\n successModal = document.querySelector(`.modal.success[data-modal=\"product-download\"]`);\n }\n const errorModal = document.querySelector(\".modal.error\");\n if (successModal) {\n const closeSuccessModal = successModal.querySelector(\".close-icon\");\n if (modalResponseDownload === \"1\" || modalResponseNewsletter === \"1\" || modalResponseContact === \"1\") {\n successModal.classList.remove('not-visible');\n successModal.classList.add('is-visible');\n }\n closeSuccessModal.addEventListener('click', () => {\n successModal.classList.remove('is-visible');\n successModal.classList.add('not-visible');\n sessionStorage.removeItem(\"modal\");\n });\n }\n if (errorModal) {\n const closeErrorModal = document.querySelector(\".modal.error .close-icon\");\n if (modalResponseDownload === \"0\" || modalResponseNewsletter === \"0\" || modalResponseContact === \"0\" || error) {\n errorModal.classList.remove('not-visible');\n errorModal.classList.remove('is-visible');\n }\n closeErrorModal.addEventListener('click', () => {\n document.querySelector(\".modal.error\").classList.remove('is-visible');\n document.querySelector(\".modal.error\").classList.add('not-visible');\n });\n }\n};\n","const initReadMoreAndLess = () => {\n const widgetMainTextSectionProductListing = document.querySelector(\".widget-main-text-section.product-listing\");\n const widgetProductListingMainSection = document.querySelector(\".widget-product-listing-main-section\");\n if (widgetMainTextSectionProductListing || widgetProductListingMainSection) {\n if (widgetMainTextSectionProductListing) {\n behaviourReadMoreAndLess(widgetMainTextSectionProductListing);\n }\n else if (widgetProductListingMainSection) {\n behaviourReadMoreAndLess(widgetProductListingMainSection);\n }\n }\n};\nconst behaviourReadMoreAndLess = (widget) => {\n const readMore = widget.querySelector(\".read-more\");\n const readLess = widget.querySelector(\".read-less\");\n const descriptionContainer = widget.querySelector(\".description[read]\");\n if (descriptionContainer.offsetHeight > 120) {\n descriptionContainer.setAttribute(\"read\", \"more\");\n readMore.classList.add(\"active\");\n readMore.addEventListener(\"click\", () => {\n descriptionContainer.setAttribute(\"read\", \"less\");\n readMore.classList.remove(\"active\");\n readLess.classList.add(\"active\");\n const idWidgetMainTextSectionProductListing = widget.parentElement.getAttribute(\"id\");\n readLess.setAttribute(\"href\", `#${idWidgetMainTextSectionProductListing}`);\n });\n readLess.addEventListener(\"click\", () => {\n descriptionContainer.setAttribute(\"read\", \"more\");\n readLess.classList.remove(\"active\");\n readMore.classList.add(\"active\");\n });\n }\n else {\n descriptionContainer.setAttribute(\"read\", \"\");\n readMore.classList.remove(\"active\");\n readLess.classList.remove(\"active\");\n }\n};\n","(function (prototype) {\n if (typeof prototype.requestSubmit == \"function\")\n return;\n prototype.requestSubmit = function (submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n }\n else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\", \"typeError\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\", \"typeError\");\n submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name);\n }\n})(HTMLFormElement.prototype);\nconst isRecaptchaEnabled = true;\nconst initRecaptcha = () => {\n if (isRecaptchaEnabled) {\n const script = document.createElement('script');\n script.async = true;\n script.defer = true;\n script.src = `https://www.google.com/recaptcha/api.js`;\n document.head.appendChild(script);\n contactForms && contactForms.length > 0 && contactForms.forEach((form, i) => {\n const recaptchaContainer = form.querySelector(\"[data-recaptcha]\");\n if (recaptchaContainer) {\n setTimeout(() => {\n const widgetId = grecaptcha.render(recaptchaContainer, {\n 'sitekey': '6LcRbzgkAAAAAFcYfQ2trYXDcuO58iyPuwGSdr0o',\n 'size': 'invisible',\n 'tabindex': i,\n 'callback': submitAfterCaptcha\n });\n form.setAttribute(\"g-recaptcha-index\", widgetId.toString());\n return true;\n }, 1000);\n }\n });\n }\n return false;\n};\nconst submitAfterCaptcha = (token) => {\n const formToSubmit = document.querySelector(`form[data-active-form='true']`);\n const recaptchaTextarea = formToSubmit.querySelector(\".g-recaptcha-response\");\n recaptchaTextarea.value = token;\n formToSubmit.requestSubmit();\n};\n","const initCarousel = () => {\n const arrayCarousel = document.querySelectorAll(\"[data-carousel]\");\n if (arrayCarousel && arrayCarousel.length > 0) {\n arrayCarousel.forEach((carouselContainer) => {\n const arraySliderItems = carouselContainer.querySelectorAll(\"[data-slide]\");\n //Max number of items that could exist into the father container\n const maxNumberOfItems = ((carouselContainer.clientWidth + (arraySliderItems[0].offsetWidth - arraySliderItems[0].clientWidth)) / arraySliderItems[0].offsetWidth);\n //Array of slider item (How many slide there are on the carousel)\n const actualSliderItemsNumber = arraySliderItems.length;\n //If Number max is less than item exist then initialize slider carousel or add a calss to center item\n if (actualSliderItemsNumber > maxNumberOfItems) {\n new Flickity(carouselContainer, {\n //slider options\n contain: true,\n autoPlay: false,\n wrapAround: true,\n arrowShape: \"M0.29101 7L7.23242 0.0585939L8.06055 0.886719L1.94726 7L8.06055 13.1133L7.23242 13.9414L0.29101 7Z M17.7109 7.58594L17.7109 6.41406L1.10938 6.41406L1.10938 7.58594L17.7109 7.58594Z\"\n });\n }\n else {\n carouselContainer.classList.add(\"is-not-slider\");\n }\n });\n }\n};\n","const filterSearch = () => {\n const searchFilterButton = document.querySelector(\"[search-btn-filter]\");\n if (searchFilterButton) {\n const inputTextSearch = document.querySelector(\"[data-input-search]\");\n searchFilterButton.addEventListener(\"click\", () => {\n const paramsQueryString = `?s=${encodeURI(inputTextSearch.value)}`;\n window.location.href = paramsQueryString;\n });\n }\n};\n","const initSearchedProducts = () => {\n const productPage = document.querySelector(\".product-page\");\n if (productPage) {\n const dataProductId = document.querySelector(\"[data-product-id]\");\n const sessionStorage = window.sessionStorage;\n if (sessionStorage.getItem(\"ids\") === null) {\n const sessionStorageIdsArray = [];\n sessionStorageIdsArray.push(dataProductId.getAttribute(\"data-product-id\"));\n sessionStorage.setItem(\"ids\", sessionStorageIdsArray.toString());\n }\n else {\n const sessionStorageIdsArray = sessionStorage.getItem(\"ids\").split(\",\");\n if (sessionStorageIdsArray.includes(dataProductId.getAttribute(\"data-product-id\"))) {\n const index = sessionStorageIdsArray.indexOf(dataProductId.getAttribute(\"data-product-id\"));\n if (index > -1) {\n sessionStorageIdsArray.splice(index, 1);\n sessionStorageIdsArray.push(dataProductId.getAttribute(\"data-product-id\"));\n sessionStorageIdsArray.reverse();\n }\n }\n else {\n if (sessionStorageIdsArray.length >= 6) {\n sessionStorageIdsArray.reverse();\n sessionStorageIdsArray.shift();\n sessionStorageIdsArray.push(dataProductId.getAttribute(\"data-product-id\"));\n sessionStorageIdsArray.reverse();\n }\n else {\n sessionStorageIdsArray.push(dataProductId.getAttribute(\"data-product-id\"));\n sessionStorageIdsArray.reverse();\n }\n }\n sessionStorage.setItem(\"ids\", sessionStorageIdsArray.toString());\n }\n }\n};\n","const highlightSidebarOnScroll = () => {\n const institutionalPage = document.querySelector(\".institutional-page\");\n const productPage = document.querySelector(\".product-page\");\n if (institutionalPage || productPage) {\n const sidebarWidget = document.querySelector(\".sidebarwidget\");\n if (sidebarWidget) {\n const listsSidebarArray = sidebarWidget.querySelectorAll(\".list\");\n const containerBodyPage = document.querySelector(\".container-bodypage\");\n const sectionOnContainerBodyPageArray = containerBodyPage.querySelectorAll(\"[data-sidebar-item]\");\n if (sectionOnContainerBodyPageArray && sectionOnContainerBodyPageArray.length > 0) {\n window.addEventListener(\"scroll\", () => {\n sectionOnContainerBodyPageArray.forEach((sectionOnContainerBodyPage) => {\n const parentSection = sectionOnContainerBodyPage.parentElement;\n const sectionRectTop = parentSection.getBoundingClientRect().top;\n if (sectionRectTop > 100 && sectionRectTop < 200) {\n listsSidebarArray.forEach((listSidebar) => {\n const linkSidebar = listSidebar.querySelector(\".link-sidebar\");\n console.log(parentSection.getAttribute(\"id\"));\n console.log(linkSidebar.getAttribute(\"href\").replace(/#/, \"\"));\n if (parentSection.getAttribute(\"id\") == linkSidebar.getAttribute(\"href\").replace(/#/, \"\")) {\n if (!linkSidebar.classList.contains(\"active\")) {\n for (let i = 0; i < listsSidebarArray.length; i++) {\n listsSidebarArray[i].classList.remove(\"active\");\n }\n listSidebar.classList.add(\"active\");\n }\n }\n });\n }\n });\n });\n }\n }\n }\n};\n","const sidebarAnchor = () => {\n const sidenav = document.querySelector(\".sidenav\");\n if (sidenav) {\n const navList = sidenav.querySelector(\".navlist\");\n const linksArray = navList.querySelectorAll(\".list a\");\n linksArray.forEach(link => {\n if (link instanceof HTMLAnchorElement)\n link.addEventListener(\"click\", (e) => {\n if (link.getAttribute(\"href\").indexOf(\"#\") != -1) {\n e.preventDefault();\n const elementToScrollIntoView = document.querySelector(`${link.getAttribute(\"href\")}`);\n const elementPosition = elementToScrollIntoView.getBoundingClientRect().top;\n const offsetPosition = elementPosition + window.pageYOffset - 120;\n window.scrollTo({\n top: offsetPosition,\n });\n }\n for (let i = 0; i < linksArray.length; i++) {\n linksArray[i].parentElement.classList.remove(\"active\");\n }\n link.parentElement.classList.add(\"active\");\n });\n });\n }\n};\n","const mainSimpleHeadingCarouselArray = document.querySelectorAll('.main-heading-carousel');\nif (mainSimpleHeadingCarouselArray && mainSimpleHeadingCarouselArray.length > 0) {\n mainSimpleHeadingCarouselArray.forEach(mainSimpleHeadingCarousel => {\n if (mainSimpleHeadingCarousel.querySelectorAll(\".image-heading\").length > 1) {\n if (mainSimpleHeadingCarousel.getAttribute(\"data-autoslide\") == \"auto-slide\") {\n new Flickity(mainSimpleHeadingCarousel, {\n // options\n contain: true,\n autoPlay: true,\n wrapAround: true,\n arrowShape: \"M11.291 20L18.2324 13.0586L19.0605 13.8867L12.9473 20L19.0605 26.1133L18.2324 26.9414L11.291 20Z M28.7109 20.5859L28.7109 19.4141L12.1094 19.4141L12.1094 20.5859L28.7109 20.5859Z\"\n });\n }\n else {\n new Flickity(mainSimpleHeadingCarousel, {\n // options\n contain: true,\n autoPlay: false,\n arrowShape: \"M11.291 20L18.2324 13.0586L19.0605 13.8867L12.9473 20L19.0605 26.1133L18.2324 26.9414L11.291 20Z M28.7109 20.5859L28.7109 19.4141L12.1094 19.4141L12.1094 20.5859L28.7109 20.5859Z\"\n });\n }\n }\n });\n}\n","const sliderApplicationProductCarousel = document.querySelector('.application-product-slider-carousel');\nif (sliderApplicationProductCarousel) {\n const sliderApplicationProductItems = sliderApplicationProductCarousel.querySelectorAll(\".slider-item\");\n if (sliderApplicationProductItems && sliderApplicationProductItems.length > 1) {\n for (let index = 0; index < 5; index++) {\n const itemToClone = document.querySelectorAll(\".application-product-slider-carousel .slider-item\")[index];\n const clone = itemToClone.cloneNode(true);\n sliderApplicationProductCarousel.appendChild(clone);\n }\n const flickity = new Flickity(sliderApplicationProductCarousel, {\n // options\n contain: true,\n autoPlay: false,\n wrapAround: true,\n imagesLoaded: true,\n arrowShape: \"M0.29101 7L7.23242 0.0585939L8.06055 0.886719L1.94726 7L8.06055 13.1133L7.23242 13.9414L0.29101 7Z M17.7109 7.58594L17.7109 6.41406L1.10938 6.41406L1.10938 7.58594L17.7109 7.58594Z\"\n });\n flickity.on(\"change\", () => flickity.reposition());\n }\n else {\n sliderApplicationProductCarousel.classList.add(\"not-slider\");\n }\n}\n","const arraySliderWidgetCarousel = document.querySelectorAll('.slider-carousel-widget');\nif (arraySliderWidgetCarousel) {\n arraySliderWidgetCarousel.forEach(sliderWidgetCarousel => {\n const arrayItemsSlidesCarousel = sliderWidgetCarousel.querySelectorAll(\".item-slider\");\n if (window.innerWidth > 1280) {\n if (arrayItemsSlidesCarousel.length > 2) {\n new Flickity(sliderWidgetCarousel, {\n // options\n contain: true,\n wrapAround: true,\n cellAlign: \"left\",\n arrowShape: \"M11.291 20L18.2324 13.0586L19.0605 13.8867L12.9473 20L19.0605 26.1133L18.2324 26.9414L11.291 20Z M28.7109 20.5859L28.7109 19.4141L12.1094 19.4141L12.1094 20.5859L28.7109 20.5859Z\"\n });\n }\n else {\n sliderWidgetCarousel.classList.add(\"no-loop\");\n }\n }\n else {\n const sliderItemsArray = sliderWidgetCarousel.querySelectorAll(\".item-slider\");\n if (sliderItemsArray && sliderItemsArray.length > 1) {\n for (let index = 0; index < 5; index++) {\n const itemToClone = sliderWidgetCarousel.querySelectorAll(\".item-slider\")[index];\n const clone = itemToClone.cloneNode(true);\n sliderWidgetCarousel.appendChild(clone);\n }\n new Flickity(sliderWidgetCarousel, {\n // options\n contain: true,\n wrapAround: true,\n cellAlign: \"left\",\n arrowShape: \"M11.291 20L18.2324 13.0586L19.0605 13.8867L12.9473 20L19.0605 26.1133L18.2324 26.9414L11.291 20Z M28.7109 20.5859L28.7109 19.4141L12.1094 19.4141L12.1094 20.5859L28.7109 20.5859Z\"\n });\n }\n }\n });\n}\n","const sliderProductCarousel = document.querySelector('.product-slider-carousel');\nif (sliderProductCarousel) {\n const sliderProductItems = sliderProductCarousel.querySelectorAll(\".slider-item\");\n if (sliderProductItems && sliderProductItems.length > 1) {\n for (let index = 0; index < 5; index++) {\n const itemToClone = document.querySelectorAll(\".product-slider-carousel .slider-item\")[index];\n const clone = itemToClone.cloneNode(true);\n sliderProductCarousel.appendChild(clone);\n }\n const flickity = new Flickity(sliderProductCarousel, {\n // options\n contain: true,\n autoPlay: false,\n wrapAround: true,\n imagesLoaded: true,\n arrowShape: \"M0.29101 7L7.23242 0.0585939L8.06055 0.886719L1.94726 7L8.06055 13.1133L7.23242 13.9414L0.29101 7Z M17.7109 7.58594L17.7109 6.41406L1.10938 6.41406L1.10938 7.58594L17.7109 7.58594Z\"\n });\n flickity.on(\"change\", () => flickity.reposition());\n }\n else {\n sliderProductCarousel.classList.add(\"not-slider\");\n }\n}\n","const initSliderGalleryClick = () => {\n const sliderGalleryArray = document.querySelectorAll(\".gallery-slider-carousel\");\n if (sliderGalleryArray && sliderGalleryArray.length > 0) {\n sliderGalleryArray.forEach((sliderGallery) => {\n const slideSliderGalleryArray = sliderGallery.querySelectorAll(\".slider-item\");\n slideSliderGalleryArray.forEach((slideSliderGallery) => {\n slideSliderGallery.addEventListener(\"click\", () => {\n const linkSliderGallery = slideSliderGallery.querySelector(\".link-slider-item\");\n location.href = linkSliderGallery.href;\n });\n });\n });\n }\n};\n","const initVimeoVideo = () => {\n const video = document.querySelector(\"[data-heading-video]\");\n if (video) {\n const script = document.createElement('script');\n script.async = true;\n script.src = `https://player.vimeo.com/api/player.js`;\n document.head.appendChild(script);\n }\n};\n"]}