{"version":3,"sources":["webpack:///./src/mixins/SwiperMixin.ts","webpack:///./src/utils/swiperUtils.ts","webpack:///./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.js","webpack:///./node_modules/ssr-window/dist/ssr-window.esm.js","webpack:///./node_modules/dom7/dist/dom7.modular.js","webpack:///./node_modules/swiper/dist/js/swiper.esm.bundle.js"],"names":["this","$refs","swiper","swiperInstance","getSwiperByRef","ref","SwiperMixin","components","Swiper","SwiperSlide","exports","SwiperClass","Vue","CoreNames","Object","prototype","hasOwnProperty","call","ComponentEvents","ComponentPropNames","DEFAULT_CLASSES","freeze","containerClass","wrapperClass","slideClass","SWIPER_EVENTS","__spreadArrays","s","i","il","arguments","length","r","Array","k","a","j","jl","SlotNames","kebabcase","string","replace","toLowerCase","handleClickSlideEvent","event","emit","_a","_b","_c","eventPath","composedPath","path","target","slides_1","from","slides","paths","includes","some","item","clickedIndex","reallyIndex","Number","clickedSlide","dataset","swiperSlideIndex","reallyIndexValue","isInteger","ClickSlide","bindSwiperEvents","forEach","eventName","on","arguments$1","args","_i","apply","kebabcaseName","INSTANCE_NAME_KEY","getDirective","globalOptions","getStandardisedOptionByAttrs","vnode","key","_d","value","data","attrs","undefined","getSwiperInstanceName","element","binding","arg","id","SwiperInstance","getSwiperInstance","instanceName","context","getSwipeOptions","getBooleanValueByInput","input","getEventEmiter","handlers","componentOptions","listeners","name","handle","fns","bind","className","indexOf","addEventListener","emitEvent","inserted","swiperOptions","vueContext","destroyed","Ready","componentUpdated","_e","_f","_g","_h","_j","_k","_l","_m","autoUpdate","AutoUpdate","isLoop","loop","loopDestroy","update","navigation","pagination","render","loopCreate","unbind","autoDestroy","AutoDestroy","initialized","destroy","DeleteInstanceOnDestroy","CleanupStylesOnDestroy","getSwiperComponent","extend","SwiperComponent","props","defaultOptions","type","required","default","options","Boolean","computed","cache","set","get","methods","handleSwiperClick","$emit","autoReLoopSwiper","updateSwiper","destroySwiper","initSwiper","$el","mounted","activated","updated","beforeDestroy","$nextTick","createElement","staticClass","click","$slots","ParallaxBg","class","Pagination","PrevButton","NextButton","Scrollbar","SwiperSlideComponent","$parent","parent","getInstaller","install","installed","component","directive","SwiperDirective","VueAwesomeSwiper","version","exporter","defineProperty","f","doc","document","body","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","children","childNodes","style","setAttribute","getElementsByTagName","location","hash","win","window","navigator","userAgent","history","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","Dom7","arr","self","$","selector","els","tempParent","html","trim","toCreate","innerHTML","push","match","split","nodeType","unique","uniqueArray","fn","Class","Methods","addClass","classes","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","getAttribute","attrName","removeAttr","removeAttribute","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","parents","handleEvent","events","dom7LiveListeners","proxyListener","dom7Listeners","off","handler","splice","dom7proxy","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","callback","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","prop","each","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","index","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parentNode","closest","find","foundElements","found","removeChild","toAdd","keys","methodName","Utils","obj","object","nextTick","delay","now","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","map","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","url","query","params","param","urlToParse","href","paramsPart","decodeURIComponent","isObject","o","constructor","to","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","testDiv","touch","Modernizr","maxTouchPoints","DocumentTouch","pointerEvents","pointerEnabled","PointerEvent","prefixedPointerEvents","msPointerEnabled","transforms3d","csstransforms3d","flexbox","observer","passiveListener","supportsPassive","opts","gestures","isIE","isEdge","isSafari","ua","isUiWebView","test","eventsListeners","priority","method","onceHandler","f7proxy","eventHandler","isArray","slice","instanceParams","instance","modules","moduleName","module","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","create","use","proto","static","m","installModule","updateSize","width","height","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidesNumberEvenToRows","slideSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","swiperSlideSize","centeredSlides","abs","slidesPerGroup","newSlidesGrid","effect","setWrapperSize","slidesGridItem","centerInsufficientSlides","allSlidesSize","slideSizeValue","allSlidesOffset","snap","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","visibleSlides","slideProgress","minTranslate","slideBefore","slideAfter","progress","updateProgress","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","updateClickedSlide","slideFound","slideToClickedSlide","getTranslate","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","transitionStart","runCallbacks","direction","autoHeight","dir","animating","slideTo","internal","slideIndex","preventInteractionOnTransition","initialSlide","allowSlideNext","allowSlidePrev","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","loopFix","_clientLeft","slidePrev","normalize","val","normalizedTranslate","normalizedSnapGrid","prevSnap","prevIndex","slideReset","slideToClosest","currentSnap","slidesPerViewDynamic","slideToIndex","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","device","ios","android","androidChrome","desktop","windows","iphone","ipod","ipad","cordova","phonegap","os","osVersion","webView","osVersionArr","metaViewport","minimalUi","pixelRatio","devicePixelRatio","onResize","breakpoints","setBreakpoint","freeMode","newTranslate","min","defaults","init","touchEventsTarget","edgeSwipeDetection","edgeSwipeThreshold","freeModeMomentum","freeModeMomentumRatio","freeModeMomentumBounce","freeModeMomentumBounceRatio","freeModeMomentumVelocityRatio","freeModeSticky","freeModeMinimumVelocity","breakpointsInverse","touchRatio","touchAngle","shortSwipes","longSwipes","longSwipesRatio","longSwipesMs","followFinger","allowTouchMove","threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","resistance","resistanceRatio","preventClicks","preventClicksPropagation","preloadImages","updateOnImagesReady","swipeHandler","noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","runCallbacksOnInit","prototypes","attachEvents","touchEvents","wrapperEl","onTouchStart","touchEventsData","touches","originalEvent","isTouchEvent","which","button","isTouched","isMoved","allowClick","currentX","targetTouches","pageX","currentY","pageY","startX","startY","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","onTouchMove","preventedByNestedSwiper","diffX","diffY","sqrt","atan2","PI","nested","stopPropagation","startTranslate","allowMomentumBounce","disableParentSwiper","velocities","position","time","onTouchEnd","touchEndTime","timeDiff","lastClickTime","clickTimeout","currentPos","lastMoveEvent","pop","velocityEvent","distance","velocity","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","once","stopIndex","groupSize","ratio","onClick","stopImmediatePropagation","start","passive","move","end","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","directionChanged","needsReLoop","changeDirection","points","point","sort","b","innerWidth","wasLocked","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","src","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","super","prototypeGroup","protoMethod","moduleParamName","swiperParams","useModulesParams","passedParams","swipers","containerEl","newParams","touchEventsTouch","touchEventsDesktop","useModules","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","deleteProps","newDefaults","Device$1","Support$1","support","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","ObserverFunc","mutations","observerUpdate","requestAnimationFrame","observe","attributes","childList","characterData","observers","observeParents","containerParents","attach","observeSlideChildren","disconnect","Observer$1","Virtual","force","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","prependIndexes","appendIndexes","$slideEl","numberOfNewSlides","newCache","cachedIndex","Virtual$1","overwriteParams","Keyboard","kc","keyCode","charCode","shiftKey","altKey","ctrlKey","metaKey","keyboard","onlyInViewport","inView","windowWidth","windowHeight","innerHeight","swiperOffset","swiperCoord","returnValue","Keyboard$1","enable","disable","Mousewheel","lastScrollTime","isSupported","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","mouseEntered","mousewheel","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","sensitivity","timeout","autoplay","autoplayDisableOnInteraction","stop","getTime","eventsTarged","handleMouseEnter","handleMouseLeave","Navigation","$nextEl","$prevEl","disabledClass","lockClass","nextEl","prevEl","onNextClick","onPrevClick","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","pointerPosition","positionRatio","clientX","clientY","setDragPosition","dragTimeout","snapOnRelease","activeListener","onDragStart","onDragMove","onDragEnd","$swiperEl","dragClass","dragEl","draggable","enableDraggable","disableDraggable","Parallax","p","currentOpacity","currentScale","parallax","setTransform","parallaxEl","$parallaxEl","parallaxDuration","Zoom","x1","y1","x2","y2","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","getDistanceBetweenTouches","$imageEl","$imageWrapEl","maxRatio","isScaling","scaleMove","minRatio","changedTouches","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","out","in","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","onGestureStart","onGestureChange","onGestureEnd","Lazy","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","preloaderClass","slideOriginalIndex","originalSlide","loadInSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Controller","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","c","controller","spline","controlled","control","multiplier","controlledTranslate","setControlledTranslate","by","getInterpolateFunction","inverse","setControlledTransition","a11y","makeElFocusable","addElRole","role","addElLabel","label","disableEl","enableEl","$targetEl","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","message","notification","liveRegion","bulletEl","$bulletEl","paginationBulletMessage","onEnterKey","History","pushState","hashNavigation","getPathValues","scrollToSlide","replaceState","setHistoryPopState","pathArray","pathname","part","slugify","currentState","state","HashNavigation","newHash","watchState","onHashCange","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","running","run","paused","waitForTransition","onTransitionEnd","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","swiperWidth","swiperHeight","cubeEffect","$cubeShadowEl","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","perspectiveOrigin","Thumbs","thumbs","thumbsParams","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","hideOnClick","isHidden","number","loadOnTransitionStart","notificationClass","updateNavigation","updatePagination","setHistory","setHash","disableOnInteraction","pause"],"mappings":"4HAWA,2B,+CAYA,OAZyC,iBAKvC,sBAAI,qBAAM,C,IAAV,W,MACE,OAAiC,QAAzB,EAAAA,KAAKC,MAAMC,cAAc,eAAEC,gB,gCAGrC,YAAAC,eAAA,SAAeC,G,MACb,OAA+B,QAAvB,EAAAL,KAAKC,MAAMI,UAAY,eAAEF,gBAVhBG,EAAW,aAN/B,YAAU,CACTC,WAAY,CACVC,OAAM,IACNC,YAAW,QAGMH,GAArB,CAAyC,WAApB,O,iCCXrB,6FAOaE,GAPb,OAOsB,IAAiBA,QAC1BC,EAAe,IAAyBA,a;;;;;;;CCAoM,SAAUC,EAASC,EAAaC,GAAK,aAK9R,IAAIC,EALuSF,EAAYA,GAAaG,OAAOC,UAAUC,eAAeC,KAAKN,EAAY,WAAWA,EAAqB,QAAEA,EAAYC,EAAIA,GAAKE,OAAOC,UAAUC,eAAeC,KAAKL,EAAI,WAAWA,EAAa,QAAEA,EAM/e,SAAWC,GACPA,EAA2B,gBAAI,SAC/BA,EAAgC,qBAAI,cACpCA,EAA2B,gBAAI,SAC/BA,EAA0B,eAAI,UAJlC,CAKGA,IAAcA,EAAY,KAC7B,IAKIK,EAKAC,EAVAC,EAAkBN,OAAOO,OAAO,CAChCC,eAAgB,mBAChBC,aAAc,iBACdC,WAAY,kBAGhB,SAAWN,GACPA,EAAuB,MAAI,QAC3BA,EAA4B,WAAI,cAFpC,CAGGA,IAAoBA,EAAkB,KAEzC,SAAWC,GACPA,EAA+B,WAAI,aACnCA,EAAgC,YAAI,cACpCA,EAA4C,wBAAI,0BAChDA,EAA2C,uBAAI,yBAJnD,CAKGA,IAAuBA,EAAqB,KAE/C,IAAIM,EAAgB,CAChB,OACA,gBACA,cACA,6BACA,2BACA,2BACA,yBACA,2BACA,yBACA,kBACA,gBACA,aACA,YACA,oBACA,aACA,WACA,QACA,MACA,YACA,cACA,WACA,iBACA,WACA,WACA,eACA,gBACA,SACA,iBACA,gBACA;;;;;;;;;;;;;;gFAgBJ,SAASC,IACL,IAAK,IAAIC,EAAI,EAAGC,EAAI,EAAGC,EAAKC,UAAUC,OAAQH,EAAIC,EAAID,IAAKD,GAAKG,UAAUF,GAAGG,OACxE,IAAIC,EAAIC,MAAMN,GAAIO,EAAI,EAA3B,IAA8BN,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,IAAIO,EAAIL,UAAUF,GAAIQ,EAAI,EAAGC,EAAKF,EAAEJ,OAAQK,EAAIC,EAAID,IAAKF,IAC1DF,EAAEE,GAAKC,EAAEC,GACjB,OAAOJ,EAMX,IAqKIM,EArKAC,EAAY,SAAUC,GACtB,OAAOA,EACFC,QAAQ,kBAAmB,SAC3BA,QAAQ,OAAQ,KAChBC,eAMLC,EAAwB,SAAUzC,EAAQ0C,EAAOC,GACjD,IAAIC,EAAIC,EAAIC,EACZ,GAAI9C,IAAYA,EAAgB,UAAG,CAC/B,IAAI+C,GAA2C,QAA7BH,EAAKF,EAAMM,oBAAiC,IAAPJ,OAAgB,EAASA,EAAG7B,KAAK2B,KAAWA,EAAMO,KACzG,IAAKP,aAAqC,EAASA,EAAMQ,SAAWH,EAAW,CAC3E,IAAII,EAAWpB,MAAMqB,KAAKpD,EAAOqD,QAC7BC,EAAQvB,MAAMqB,KAAKL,GAEvB,GAAII,EAASI,SAASb,EAAMQ,SAAWI,EAAME,KAAK,SAAUC,GAAQ,OAAON,EAASI,SAASE,KAAW,CACpG,IAAIC,EAAe1D,EAAO0D,aACtBC,EAAcC,OAA6F,QAArFd,EAAoC,QAA9BD,EAAK7C,EAAO6D,oBAAiC,IAAPhB,OAAgB,EAASA,EAAGiB,eAA4B,IAAPhB,OAAgB,EAASA,EAAGiB,kBAC/IC,EAAmBJ,OAAOK,UAAUN,GAAeA,EAAc,KACrEhB,EAAK3B,EAAgBkD,WAAYR,EAAcM,GAC/CrB,EAAKN,EAAUrB,EAAgBkD,YAAaR,EAAcM,OAKtEG,EAAmB,SAAUnE,EAAQ2C,GACrCpB,EAAc6C,QAAQ,SAAUC,GAC5BrE,EAAOsE,GAAGD,EAAW,WAIjB,IAHA,IAAIE,EAAc3C,UAEd4C,EAAO,GACFC,EAAK,EAAGA,EAAK7C,UAAUC,OAAQ4C,IACpCD,EAAKC,GAAMF,EAAYE,GAE3B9B,EAAK+B,WAAM,EAAQlD,EAAe,CAAC6C,GAAYG,IAC/C,IAAIG,EAAgBtC,EAAUgC,GAC1BM,IAAkBN,GAClB1B,EAAK+B,WAAM,EAAQlD,EAAe,CAACmD,GAAgBH,SAS/DI,EAAoB,eACxB,SAASC,EAAapE,EAAaqE,GAC/B,IAAIC,EAA+B,SAAUC,EAAOC,GAChD,IAAIrC,EAAIC,EAAIC,EAAIoC,EACZC,EAAmF,QAA1EtC,EAA2B,QAArBD,EAAKoC,EAAMI,YAAyB,IAAPxC,OAAgB,EAASA,EAAGyC,aAA0B,IAAPxC,OAAgB,EAASA,EAAGoC,GAC3H,YAAiBK,IAAVH,EACDA,EAC2E,QAA1ED,EAA2B,QAArBpC,EAAKkC,EAAMI,YAAyB,IAAPtC,OAAgB,EAASA,EAAGuC,aAA0B,IAAPH,OAAgB,EAASA,EAAG7C,EAAU4C,KAG/HM,EAAwB,SAAUC,EAASC,EAAST,GACpD,OAAQS,EAAQC,KACZX,EAA6BC,EAAOJ,IACpCY,EAAQG,IACRhF,EAAUiF,gBAEdC,EAAoB,SAAUL,EAASC,EAAST,GAChD,IAAIc,EAAeP,EAAsBC,EAASC,EAAST,GAC3D,OAAOA,EAAMe,QAAQD,IAAiB,MAEtCE,EAAkB,SAAUP,GAC5B,OAAOA,EAAQN,OAASL,GAExBmB,EAAyB,SAAUC,GACnC,MAAO,EAAC,OAAMZ,EAAW,KAAM,IAAI/B,SAAS2C,IAG5CC,EAAiB,SAAUnB,GAC3B,IAAIpC,EAAIC,EACJuD,GAAkC,QAArBxD,EAAKoC,EAAMI,YAAyB,IAAPxC,OAAgB,EAASA,EAAG0B,MAA0C,QAAjCzB,EAAKmC,EAAMqB,wBAAqC,IAAPxD,OAAgB,EAASA,EAAGyD,WACxJ,OAAO,SAAUC,GAIb,IAHA,IAMI3D,EANA2B,EAAc3C,UAEd4C,EAAO,GACFC,EAAK,EAAGA,EAAK7C,UAAUC,OAAQ4C,IACpCD,EAAKC,EAAK,GAAKF,EAAYE,GAG/B,IAAI+B,EAA6B,QAAnB5D,EAAKwD,SAA6B,IAAPxD,OAAgB,EAASA,EAAG2D,GACjEC,GACAA,EAAOC,IAAI/B,MAAM8B,EAAQhC,KAIrC,MAAO,CAEHkC,KAAM,SAAUlB,EAASC,EAAST,IAEqC,IAA/DQ,EAAQmB,UAAUC,QAAQ1F,EAAgBE,kBAC1CoE,EAAQmB,YAAenB,EAAQmB,UAAY,IAAM,IAAMzF,EAAgBE,gBAG3EoE,EAAQqB,iBAAiB,QAAS,SAAUnE,GACxC,IAAIoE,EAAYX,EAAenB,GAC3BhF,EAAS6F,EAAkBL,EAASC,EAAST,GACjDvC,EAAsBzC,EAAQ0C,EAAOoE,MAI7CC,SAAU,SAAUvB,EAASC,EAAST,GAClC,IAAIe,EAAUf,EAAMe,QAChBiB,EAAgBhB,EAAgBP,GAChCK,EAAeP,EAAsBC,EAASC,EAAST,GACvD8B,EAAYX,EAAenB,GAC3BiC,EAAalB,EACb/F,EAASiH,aAA+C,EAASA,EAAWnB,GAE3E9F,IAAUA,EAAOkH,YAClBlH,EAAS,IAAIS,EAAY+E,EAASwB,GAClCC,EAAWnB,GAAgB9F,EAC3BmE,EAAiBnE,EAAQ8G,GACzBA,EAAU9F,EAAgBmG,MAAOnH,KAMzCoH,iBAAkB,SAAU5B,EAASC,EAAST,GAC1C,IAAIpC,EAAIC,EAAIC,EAAIoC,EAAImC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAC5CC,EAAa9C,EAA6BC,EAAO/D,EAAmB6G,YACxE,GAAI7B,EAAuB4B,GAAa,CACpC,IAAI7H,EAAS6F,EAAkBL,EAASC,EAAST,GACjD,GAAIhF,EAAQ,CACR,IACI+H,EADgB/B,EAAgBP,GACTuC,KACvBD,IAC6E,QAA5ElF,EAAuB,QAAjBD,EAAK5C,SAA2B,IAAP4C,OAAgB,EAASA,EAAGqF,mBAAgC,IAAPpF,GAAyBA,EAAG9B,KAAK6B,IAEjD,QAAxEE,EAAK9C,aAAuC,EAASA,EAAOkI,cAA2B,IAAPpF,GAAyBA,EAAG/B,KAAKf,GAC/B,QAAlFqH,EAAkC,QAA5BnC,EAAKlF,EAAOmI,kBAA+B,IAAPjD,OAAgB,EAASA,EAAGgD,cAA2B,IAAPb,GAAyBA,EAAGtG,KAAKmE,GACzC,QAAlFqC,EAAkC,QAA5BD,EAAKtH,EAAOoI,kBAA+B,IAAPd,OAAgB,EAASA,EAAGe,cAA2B,IAAPd,GAAyBA,EAAGxG,KAAKuG,GACzC,QAAlFG,EAAkC,QAA5BD,EAAKxH,EAAOoI,kBAA+B,IAAPZ,OAAgB,EAASA,EAAGU,cAA2B,IAAPT,GAAyBA,EAAG1G,KAAKyG,GACxHO,IAC4E,QAA3EJ,EAAuB,QAAjBD,EAAK1H,SAA2B,IAAP0H,OAAgB,EAASA,EAAGY,kBAA+B,IAAPX,GAAyBA,EAAG5G,KAAK2G,GAC5C,QAAxEE,EAAK5H,aAAuC,EAASA,EAAOkI,cAA2B,IAAPN,GAAyBA,EAAG7G,KAAKf,OAMlIuI,OAAQ,SAAU/C,EAASC,EAAST,GAChC,IAAIpC,EACA4F,EAAczD,EAA6BC,EAAO/D,EAAmBwH,aACzE,GAAIxC,EAAuBuC,GAAc,CACrC,IAAIxI,EAAS6F,EAAkBL,EAASC,EAAST,GAC7ChF,GAAUA,EAAO0I,cACyD,QAAzE9F,EAAK5C,aAAuC,EAASA,EAAO2I,eAA4B,IAAP/F,GAAyBA,EAAG7B,KAAKf,EAAQiG,EAAuBlB,EAA6BC,EAAO/D,EAAmB2H,0BAA2B3C,EAAuBlB,EAA6BC,EAAO/D,EAAmB4H,8BAkBtU,SAASC,EAAmBrI,GACxB,IAAImC,EACJ,OAAOlC,EAAIqI,OAAO,CACdxC,KAAM5F,EAAUqI,gBAChBC,OAAQrG,EAAK,CACLsG,eAAgB,CACZC,KAAMvI,OACNwI,UAAU,EACVC,QAAS,WAAc,MAAO,KAGlCC,QAAS,CACLH,KAAMvI,OACNwI,UAAU,IAGlBxG,EAAG3B,EAAmB6G,YAAc,CAChCqB,KAAMI,QACNF,SAAS,GAGbzG,EAAG3B,EAAmBwH,aAAe,CACjCU,KAAMI,QACNF,SAAS,GAGbzG,EAAG3B,EAAmB2H,yBAA2B,CAC7CO,KAAMI,QACNH,UAAU,EACVC,SAAS,GAEbzG,EAAG3B,EAAmB4H,wBAA0B,CAC5CM,KAAMI,QACNH,UAAU,EACVC,SAAS,GAEbzG,GACJwC,KAAM,WACF,IAAIxC,EACJ,OAAOA,EAAK,IACLjC,EAAUiF,gBAAkB,KAC/BhD,GAER4G,SAAU,CACNvJ,eAAgB,CACZwJ,OAAO,EACPC,IAAK,SAAU1J,GACXF,KAAKa,EAAUiF,gBAAkB5F,GAErC2J,IAAK,WACD,OAAO7J,KAAKa,EAAUiF,kBAG9BoB,cAAe,WACX,OAAOlH,KAAKwJ,SAAWxJ,KAAKoJ,gBAEhC7H,aAAc,WACV,OAAOvB,KAAKkH,cAAc3F,cAAgBH,EAAgBG,eAGlEuI,QAAS,CAELC,kBAAmB,SAAUnH,GACzBD,EAAsB3C,KAAKG,eAAgByC,EAAO5C,KAAKgK,MAAMpD,KAAK5G,QAEtEiK,iBAAkB,WACd,IAAInH,EAAIC,EACR,GAAI/C,KAAKG,gBAAkBH,KAAKkH,cAAcgB,KAAM,CAIhD,IAAIhI,EAASF,KAAKG,eAC4D,QAA7E2C,EAAK5C,aAAuC,EAASA,EAAOiI,mBAAgC,IAAPrF,GAAyBA,EAAG7B,KAAKf,GAC1C,QAA5E6C,EAAK7C,aAAuC,EAASA,EAAOsI,kBAA+B,IAAPzF,GAAyBA,EAAG9B,KAAKf,KAG9HgK,aAAc,WACV,IAAIpH,EAAIC,EAAIC,EAAIoC,EAAImC,EAAIC,EAAIC,EAAIC,EAC5B1H,KAAKmB,EAAmB6G,aAAehI,KAAKG,iBAC5CH,KAAKiK,mBACgF,QAApFlH,EAAoC,QAA9BD,EAAK9C,KAAKG,sBAAmC,IAAP2C,OAAgB,EAASA,EAAGsF,cAA2B,IAAPrF,GAAyBA,EAAG9B,KAAK6B,GAC9B,QAA/FsC,EAA+C,QAAzCpC,EAAKhD,KAAKG,eAAekI,kBAA+B,IAAPrF,OAAgB,EAASA,EAAGoF,cAA2B,IAAPhD,GAAyBA,EAAGnE,KAAK+B,GACzC,QAA/FwE,EAA+C,QAAzCD,EAAKvH,KAAKG,eAAemI,kBAA+B,IAAPf,OAAgB,EAASA,EAAGgB,cAA2B,IAAPf,GAAyBA,EAAGvG,KAAKsG,GACzC,QAA/FG,EAA+C,QAAzCD,EAAKzH,KAAKG,eAAemI,kBAA+B,IAAPb,OAAgB,EAASA,EAAGW,cAA2B,IAAPV,GAAyBA,EAAGzG,KAAKwG,KAGjJ0C,cAAe,WACX,IAAIrH,EAAIC,EACJ/C,KAAKmB,EAAmBwH,cAAgB3I,KAAKG,gBAGzCH,KAAKG,eAAeyI,cACkE,QAArF7F,EAAoC,QAA9BD,EAAK9C,KAAKG,sBAAmC,IAAP2C,OAAgB,EAASA,EAAG+F,eAA4B,IAAP9F,GAAyBA,EAAG9B,KAAK6B,EAAI9C,KAAKmB,EAAmB2H,yBAA0B9I,KAAKmB,EAAmB4H,2BAIzNqB,WAAY,WACRpK,KAAKG,eAAiB,IAAIQ,EAAYX,KAAKqK,IAAKrK,KAAKkH,eACrD7C,EAAiBrE,KAAKG,eAAgBH,KAAKgK,MAAMpD,KAAK5G,OACtDA,KAAKgK,MAAM9I,EAAgBmG,MAAOrH,KAAKG,kBAG/CmK,QAAS,WACAtK,KAAKG,gBACNH,KAAKoK,cAIbG,UAAW,WACPvK,KAAKkK,gBAETM,QAAS,WACLxK,KAAKkK,gBAETO,cAAe,WAEXzK,KAAK0K,UAAU1K,KAAKmK,gBAExB5B,OAAQ,SAAUoC,GACd,OAAOA,EAAc,MAAO,CACxBC,YAAaxJ,EAAgBE,eAC7BkD,GAAI,CACAqG,MAAO7K,KAAK+J,oBAEjB,CACC/J,KAAK8K,OAAOxI,EAAUyI,YACtBJ,EAAc,MAAO,CACjBK,MAAOhL,KAAKuB,cACbvB,KAAK8K,OAAOvB,SACfvJ,KAAK8K,OAAOxI,EAAU2I,YACtBjL,KAAK8K,OAAOxI,EAAU4I,YACtBlL,KAAK8K,OAAOxI,EAAU6I,YACtBnL,KAAK8K,OAAOxI,EAAU8I,iBA3ItC,SAAW9I,GACPA,EAAsB,WAAI,cAC1BA,EAAsB,WAAI,aAC1BA,EAAqB,UAAI,YACzBA,EAAsB,WAAI,cAC1BA,EAAsB,WAAI,cAL9B,CAMGA,IAAcA,EAAY,KA8I7B,IAAI+I,EAAuBzK,EAAIqI,OAAO,CAClCxC,KAAM5F,EAAUwK,qBAChB3B,SAAU,CACNlI,WAAY,WACR,IAAIsB,EAAIC,EACR,OAA6F,QAApFA,EAA6B,QAAvBD,EAAK9C,KAAKsL,eAA4B,IAAPxI,OAAgB,EAASA,EAAGoE,qBAAkC,IAAPnE,OAAgB,EAASA,EAAGvB,aAAeJ,EAAgBI,aAGxKsI,QAAS,CACL1B,OAAQ,WACJ,IAAItF,EACAyI,EAASvL,KAAKsL,QAEdC,EAAOpK,EAAmB6G,cACuD,QAAhFlF,EAAKyI,aAAuC,EAASA,EAAOpL,sBAAmC,IAAP2C,GAAyBA,EAAGsF,YAIjIkC,QAAS,WACLtK,KAAKoI,UAEToC,QAAS,WACLxK,KAAKoI,UAETG,OAAQ,SAAUoC,GACd,OAAOA,EAAc,MAAO,CACxBK,MAAOhL,KAAKwB,YACbxB,KAAK8K,OAAOvB,YAOnBiC,EAAe,SAAU7K,GACzB,IAAI8K,EAAU,SAAU7K,EAAKoE,GACzB,IAAIyG,EAAQC,UAAZ,CAEA,IAAIxC,EAAkBF,EAAmBrI,GACrCqE,IACAkE,EAAgBM,QAAQL,MAAMC,eAAeG,QAAU,WAAc,OAAOvE,IAEhFpE,EAAI+K,UAAU9K,EAAUqI,gBAAiBA,GACzCtI,EAAI+K,UAAU9K,EAAUwK,qBAAsBA,GAC9CzK,EAAIgL,UAAU/K,EAAUgL,gBAAiB9G,EAAapE,EAAaqE,IACnEyG,EAAQC,WAAY,IAExB,OAAOD,GAiBPK,EAfJ,SAAkBnL,GACd,IAAImC,EACJ,OAAOA,EAAK,CACJiJ,QAAS,QACTN,QAASD,EAAa7K,GACtBiL,UAAW7G,EAAapE,KAEzBE,EAAUqI,iBAAmBF,EAAmBrI,GACnDmC,EAAGjC,EAAUwK,sBAAwBA,EACrCvI,EAMekJ,CAASrL,GAC5BoL,EAAUD,EAAiBC,QAC3BN,EAAUK,EAAiBL,QAC3BG,EAAYE,EAAiBF,UAC7BpL,EAASsL,EAAiBtL,OAC1BC,EAAcqL,EAAiBrL,YAAYC,EAAQF,OAAOA,EAAOE,EAAQD,YAAYA,EAAYC,EAAQ6I,QAAQuC,EAAiBpL,EAAQkL,UAAUA,EAAUlL,EAAQ+K,QAAQA,EAAQ/K,EAAQqL,QAAQA,EAAQjL,OAAOmL,eAAevL,EAAQ,aAAa,CAAC2E,OAAM,IAtd9L6G,CAAExL,EAAQ,EAAQ,KAAU,EAAQ,K,wCCG1G,IAAIyL,EAA2B,oBAAbC,SAA4B,CAC5CC,KAAM,GACNtF,iBAAkB,aAClBuF,oBAAqB,aACrBC,cAAe,CACbC,KAAM,aACNC,SAAU,IAEZC,cAAe,WACb,OAAO,MAETC,iBAAkB,WAChB,MAAO,IAETC,eAAgB,WACd,OAAO,MAETC,YAAa,WACX,MAAO,CACLC,UAAW,eAGfnC,cAAe,WACb,MAAO,CACLoC,SAAU,GACVC,WAAY,GACZC,MAAO,GACPC,aAAc,aACdC,qBAAsB,WACpB,MAAO,MAIbC,SAAU,CAAEC,KAAM,KAChBjB,SAEAkB,EAAyB,oBAAXC,OAA0B,CAC1CnB,SAAUD,EACVqB,UAAW,CACTC,UAAW,IAEbL,SAAU,GACVM,QAAS,GACTC,YAAa,WACX,OAAO3N,MAET+G,iBAAkB,aAClBuF,oBAAqB,aACrBsB,iBAAkB,WAChB,MAAO,CACLC,iBAAkB,WAChB,MAAO,MAIbC,MAAO,aACPC,KAAM,aACNC,OAAQ,GACRC,WAAY,aACZC,aAAc,cACZX,OCxDJ,MAAMY,EACJ,YAAYC,GACV,MAAMC,EAAOrO,KAEb,IAAK,IAAI4B,EAAI,EAAGA,EAAIwM,EAAIrM,OAAQH,GAAK,EACnCyM,EAAKzM,GAAKwM,EAAIxM,GAIhB,OAFAyM,EAAKtM,OAASqM,EAAIrM,OAEX/B,MAIX,SAASsO,EAAEC,EAAUtI,GACnB,MAAMmI,EAAM,GACZ,IAAIxM,EAAI,EACR,GAAI2M,IAAatI,GACXsI,aAAoBJ,EACtB,OAAOI,EAGX,GAAIA,EAEF,GAAwB,iBAAbA,EAAuB,CAChC,IAAIC,EACAC,EACJ,MAAMC,EAAOH,EAASI,OACtB,GAAID,EAAK5H,QAAQ,MAAQ,GAAK4H,EAAK5H,QAAQ,MAAQ,EAAG,CACpD,IAAI8H,EAAW,MAQf,IAP4B,IAAxBF,EAAK5H,QAAQ,SAAc8H,EAAW,MACd,IAAxBF,EAAK5H,QAAQ,SAAc8H,EAAW,SACd,IAAxBF,EAAK5H,QAAQ,QAAwC,IAAxB4H,EAAK5H,QAAQ,SAAc8H,EAAW,MACxC,IAA3BF,EAAK5H,QAAQ,YAAiB8H,EAAW,SACb,IAA5BF,EAAK5H,QAAQ,aAAkB8H,EAAW,WAC9CH,EAAatC,EAASxB,cAAciE,IACzBC,UAAYH,EAClB9M,EAAI,EAAGA,EAAI6M,EAAWzB,WAAWjL,OAAQH,GAAK,EACjDwM,EAAIU,KAAKL,EAAWzB,WAAWpL,SAUjC,IAFE4M,EALGvI,GAA2B,MAAhBsI,EAAS,IAAeA,EAASQ,MAAM,aAK9C9I,GAAWkG,GAAUQ,iBAAiB4B,EAASI,QAHhD,CAACxC,EAASS,eAAe2B,EAASI,OAAOK,MAAM,KAAK,KAKvDpN,EAAI,EAAGA,EAAI4M,EAAIzM,OAAQH,GAAK,EAC3B4M,EAAI5M,IAAIwM,EAAIU,KAAKN,EAAI5M,SAGxB,GAAI2M,EAASU,UAAYV,IAAajB,GAAUiB,IAAapC,EAElEiC,EAAIU,KAAKP,QACJ,GAAIA,EAASxM,OAAS,GAAKwM,EAAS,GAAGU,SAE5C,IAAKrN,EAAI,EAAGA,EAAI2M,EAASxM,OAAQH,GAAK,EACpCwM,EAAIU,KAAKP,EAAS3M,IAIxB,OAAO,IAAIuM,EAAKC,GAOlB,SAASc,EAAOd,GACd,MAAMe,EAAc,GACpB,IAAK,IAAIvN,EAAI,EAAGA,EAAIwM,EAAIrM,OAAQH,GAAK,GACE,IAAjCuN,EAAYrI,QAAQsH,EAAIxM,KAAYuN,EAAYL,KAAKV,EAAIxM,IAE/D,OAAOuN,EATTb,EAAEc,GAAKjB,EAAKpN,UACZuN,EAAEe,MAAQlB,EACVG,EAAEH,KAAOA,EA+pCS,gBAAkBa,MAAM,KCjuC1C,MAAMM,EAAU,CACdC,SD0FF,SAAkB1I,GAChB,QAAyB,IAAdA,EACT,OAAO7G,KAET,MAAMwP,EAAU3I,EAAUmI,MAAM,KAChC,IAAK,IAAIpN,EAAI,EAAGA,EAAI4N,EAAQzN,OAAQH,GAAK,EACvC,IAAK,IAAIQ,EAAI,EAAGA,EAAIpC,KAAK+B,OAAQK,GAAK,OACb,IAAZpC,KAAKoC,SAAmD,IAAtBpC,KAAKoC,GAAGqN,WAA2BzP,KAAKoC,GAAGqN,UAAUC,IAAIF,EAAQ5N,IAGlH,OAAO5B,MCnGP2P,YDqGF,SAAqB9I,GACnB,MAAM2I,EAAU3I,EAAUmI,MAAM,KAChC,IAAK,IAAIpN,EAAI,EAAGA,EAAI4N,EAAQzN,OAAQH,GAAK,EACvC,IAAK,IAAIQ,EAAI,EAAGA,EAAIpC,KAAK+B,OAAQK,GAAK,OACb,IAAZpC,KAAKoC,SAAmD,IAAtBpC,KAAKoC,GAAGqN,WAA2BzP,KAAKoC,GAAGqN,UAAUG,OAAOJ,EAAQ5N,IAGrH,OAAO5B,MC3GP6P,SD6GF,SAAkBhJ,GAChB,QAAK7G,KAAK,IACHA,KAAK,GAAGyP,UAAUK,SAASjJ,IC9GlCkJ,YDgHF,SAAqBlJ,GACnB,MAAM2I,EAAU3I,EAAUmI,MAAM,KAChC,IAAK,IAAIpN,EAAI,EAAGA,EAAI4N,EAAQzN,OAAQH,GAAK,EACvC,IAAK,IAAIQ,EAAI,EAAGA,EAAIpC,KAAK+B,OAAQK,GAAK,OACb,IAAZpC,KAAKoC,SAAmD,IAAtBpC,KAAKoC,GAAGqN,WAA2BzP,KAAKoC,GAAGqN,UAAUO,OAAOR,EAAQ5N,IAGrH,OAAO5B,MCtHPiQ,KDwHF,SAAc1K,EAAOF,GACnB,GAAyB,IAArBvD,UAAUC,QAAiC,iBAAVwD,EAEnC,OAAIvF,KAAK,GAAWA,KAAK,GAAGkQ,aAAa3K,QACzC,EAIF,IAAK,IAAI3D,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EACpC,GAAyB,IAArBE,UAAUC,OAEZ/B,KAAK4B,GAAGsL,aAAa3H,EAAOF,QAI5B,IAAK,MAAM8K,KAAY5K,EACrBvF,KAAK4B,GAAGuO,GAAY5K,EAAM4K,GAC1BnQ,KAAK4B,GAAGsL,aAAaiD,EAAU5K,EAAM4K,IAI3C,OAAOnQ,MC5IPoQ,WD+IF,SAAoBH,GAClB,IAAK,IAAIrO,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EACpC5B,KAAK4B,GAAGyO,gBAAgBJ,GAE1B,OAAOjQ,MClJPsF,KD0KF,SAAcH,EAAKE,GACjB,IAAIiL,EACJ,QAAqB,IAAVjL,EAAX,CAkBA,IAAK,IAAIzD,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,GACpC0O,EAAKtQ,KAAK4B,IACF2O,yBAAwBD,EAAGC,uBAAyB,IAC5DD,EAAGC,uBAAuBpL,GAAOE,EAEnC,OAAOrF,KApBL,GAFAsQ,EAAKtQ,KAAK,GAEF,CACN,GAAIsQ,EAAGC,wBAA2BpL,KAAOmL,EAAGC,uBAC1C,OAAOD,EAAGC,uBAAuBpL,GAGnC,MAAMqL,EAAUF,EAAGJ,qBAAqB/K,KACxC,OAAIqL,QAGJ,ICvLJC,UDqQF,SAAmBA,GACjB,IAAK,IAAI7O,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EAAG,CACvC,MAAM8O,EAAU1Q,KAAK4B,GAAGqL,MACxByD,EAAQC,gBAAkBF,EAC1BC,EAAQD,UAAYA,EAEtB,OAAOzQ,MC1QP4Q,WD4QF,SAAoBC,GACM,iBAAbA,IACTA,KAAcA,OAEhB,IAAK,IAAIjP,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EAAG,CACvC,MAAM8O,EAAU1Q,KAAK4B,GAAGqL,MACxByD,EAAQI,yBAA2BD,EACnCH,EAAQK,mBAAqBF,EAE/B,OAAO7Q,MCpRPwE,GDuRF,YAAeE,GACb,IAAKsM,EAAWC,EAAgBC,EAAUC,GAAWzM,EAOrD,SAAS0M,EAAgBC,GACvB,MAAMjO,EAASiO,EAAEjO,OACjB,IAAKA,EAAQ,OACb,MAAMkO,EAAYD,EAAEjO,OAAOmO,eAAiB,GAI5C,GAHID,EAAUxK,QAAQuK,GAAK,GACzBC,EAAUE,QAAQH,GAEhB/C,EAAElL,GAAQqO,GAAGR,GAAiBC,EAAStM,MAAMxB,EAAQkO,OACpD,CACH,MAAMI,EAAUpD,EAAElL,GAAQsO,UAC1B,IAAK,IAAIxP,EAAI,EAAGA,EAAIwP,EAAQ3P,OAAQG,GAAK,EACnCoM,EAAEoD,EAAQxP,IAAIuP,GAAGR,IAAiBC,EAAStM,MAAM8M,EAAQxP,GAAIoP,IAIvE,SAASK,EAAYN,GACnB,MAAMC,EAAYD,GAAKA,EAAEjO,QAASiO,EAAEjO,OAAOmO,eAAsB,GAC7DD,EAAUxK,QAAQuK,GAAK,GACzBC,EAAUE,QAAQH,GAEpBH,EAAStM,MAAM5E,KAAMsR,GA1BA,mBAAZ5M,EAAK,MACbsM,EAAWE,EAAUC,GAAWzM,EACjCuM,OAAiBzL,GAEd2L,IAASA,GAAU,GAwBxB,MAAMS,EAASZ,EAAUhC,MAAM,KAC/B,IAAI5M,EACJ,IAAK,IAAIR,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EAAG,CACvC,MAAM0O,EAAKtQ,KAAK4B,GAChB,GAAKqP,EAaH,IAAK7O,EAAI,EAAGA,EAAIwP,EAAO7P,OAAQK,GAAK,EAAG,CACrC,MAAMQ,EAAQgP,EAAOxP,GAChBkO,EAAGuB,oBAAmBvB,EAAGuB,kBAAoB,IAC7CvB,EAAGuB,kBAAkBjP,KAAQ0N,EAAGuB,kBAAkBjP,GAAS,IAChE0N,EAAGuB,kBAAkBjP,GAAOkM,KAAK,CAC/BoC,WACAY,cAAeV,IAEjBd,EAAGvJ,iBAAiBnE,EAAOwO,EAAiBD,QApB9C,IAAK/O,EAAI,EAAGA,EAAIwP,EAAO7P,OAAQK,GAAK,EAAG,CACrC,MAAMQ,EAAQgP,EAAOxP,GAChBkO,EAAGyB,gBAAezB,EAAGyB,cAAgB,IACrCzB,EAAGyB,cAAcnP,KAAQ0N,EAAGyB,cAAcnP,GAAS,IACxD0N,EAAGyB,cAAcnP,GAAOkM,KAAK,CAC3BoC,WACAY,cAAeH,IAEjBrB,EAAGvJ,iBAAiBnE,EAAO+O,EAAaR,IAgB9C,OAAOnR,MCjVPgS,IDmVF,YAAgBtN,GACd,IAAKsM,EAAWC,EAAgBC,EAAUC,GAAWzM,EAC9B,mBAAZA,EAAK,MACbsM,EAAWE,EAAUC,GAAWzM,EACjCuM,OAAiBzL,GAEd2L,IAASA,GAAU,GAExB,MAAMS,EAASZ,EAAUhC,MAAM,KAC/B,IAAK,IAAIpN,EAAI,EAAGA,EAAIgQ,EAAO7P,OAAQH,GAAK,EAAG,CACzC,MAAMgB,EAAQgP,EAAOhQ,GACrB,IAAK,IAAIQ,EAAI,EAAGA,EAAIpC,KAAK+B,OAAQK,GAAK,EAAG,CACvC,MAAMkO,EAAKtQ,KAAKoC,GAChB,IAAIkE,EAMJ,IALK2K,GAAkBX,EAAGyB,cACxBzL,EAAWgK,EAAGyB,cAAcnP,GACnBqO,GAAkBX,EAAGuB,oBAC9BvL,EAAWgK,EAAGuB,kBAAkBjP,IAE9B0D,GAAYA,EAASvE,OACvB,IAAK,IAAIG,EAAIoE,EAASvE,OAAS,EAAGG,GAAK,EAAGA,GAAK,EAAG,CAChD,MAAM+P,EAAU3L,EAASpE,GACrBgP,GAAYe,EAAQf,WAAaA,GACnCZ,EAAGhE,oBAAoB1J,EAAOqP,EAAQH,cAAeX,GACrD7K,EAAS4L,OAAOhQ,EAAG,IACVgP,GAAYe,EAAQf,UAAYe,EAAQf,SAASiB,WAAaF,EAAQf,SAASiB,YAAcjB,GACtGZ,EAAGhE,oBAAoB1J,EAAOqP,EAAQH,cAAeX,GACrD7K,EAAS4L,OAAOhQ,EAAG,IACTgP,IACVZ,EAAGhE,oBAAoB1J,EAAOqP,EAAQH,cAAeX,GACrD7K,EAAS4L,OAAOhQ,EAAG,MAM7B,OAAOlC,MCtXPoS,QDyYF,YAAoB1N,GAClB,MAAMkN,EAASlN,EAAK,GAAGsK,MAAM,KACvBsC,EAAY5M,EAAK,GACvB,IAAK,IAAI9C,EAAI,EAAGA,EAAIgQ,EAAO7P,OAAQH,GAAK,EAAG,CACzC,MAAMgB,EAAQgP,EAAOhQ,GACrB,IAAK,IAAIQ,EAAI,EAAGA,EAAIpC,KAAK+B,OAAQK,GAAK,EAAG,CACvC,MAAMkO,EAAKtQ,KAAKoC,GAChB,IAAIiQ,EACJ,IACEA,EAAM,IAAI/E,EAAOK,YAAY/K,EAAO,CAClC0P,OAAQhB,EACRiB,SAAS,EACTC,YAAY,IAEd,MAAOnB,IACPgB,EAAMlG,EAASU,YAAY,UACvBC,UAAUlK,GAAO,GAAM,GAC3ByP,EAAIC,OAAShB,EAGfhB,EAAGiB,cAAgB7M,EAAK+N,OAAO,CAACnN,EAAMoN,IAAcA,EAAY,GAChEpC,EAAGqC,cAAcN,GACjB/B,EAAGiB,cAAgB,UACZjB,EAAGiB,eAGd,OAAOvR,MClaP4S,cDoaF,SAAuBC,GACrB,MAAMjB,EAAS,CAAC,sBAAuB,iBACjCkB,EAAM9S,KACZ,IAAI4B,EACJ,SAASmR,EAAa1B,GAEpB,GAAIA,EAAEjO,SAAWpD,KAEjB,IADA6S,EAAS5R,KAAKjB,KAAMqR,GACfzP,EAAI,EAAGA,EAAIgQ,EAAO7P,OAAQH,GAAK,EAClCkR,EAAId,IAAIJ,EAAOhQ,GAAImR,GAGvB,GAAIF,EACF,IAAKjR,EAAI,EAAGA,EAAIgQ,EAAO7P,OAAQH,GAAK,EAClCkR,EAAItO,GAAGoN,EAAOhQ,GAAImR,GAGtB,OAAO/S,MCpbPgT,WDodF,SAAoBC,GAClB,GAAIjT,KAAK+B,OAAS,EAAG,CACnB,GAAIkR,EAAgB,CAElB,MAAMC,EAASlT,KAAKkT,SACpB,OAAOlT,KAAK,GAAGmT,YAAcC,WAAWF,EAAOrF,iBAAiB,iBAAmBuF,WAAWF,EAAOrF,iBAAiB,gBAExH,OAAO7N,KAAK,GAAGmT,YAEjB,OAAO,MC5dPE,YDyeF,SAAqBJ,GACnB,GAAIjT,KAAK+B,OAAS,EAAG,CACnB,GAAIkR,EAAgB,CAElB,MAAMC,EAASlT,KAAKkT,SACpB,OAAOlT,KAAK,GAAGsT,aAAeF,WAAWF,EAAOrF,iBAAiB,eAAiBuF,WAAWF,EAAOrF,iBAAiB,kBAEvH,OAAO7N,KAAK,GAAGsT,aAEjB,OAAO,MCjfPC,ODmfF,WACE,GAAIvT,KAAK+B,OAAS,EAAG,CACnB,MAAMuO,EAAKtQ,KAAK,GACVwT,EAAMlD,EAAGmD,wBACTpH,EAAOF,EAASE,KAChBqH,EAAYpD,EAAGoD,WAAarH,EAAKqH,WAAa,EAC9CC,EAAarD,EAAGqD,YAActH,EAAKsH,YAAc,EACjDC,EAAYtD,IAAOhD,EAASA,EAAOuG,QAAUvD,EAAGsD,UAChDE,EAAaxD,IAAOhD,EAASA,EAAOyG,QAAUzD,EAAGwD,WACvD,MAAO,CACLE,IAAMR,EAAIQ,IAAMJ,EAAaF,EAC7BO,KAAOT,EAAIS,KAAOH,EAAcH,GAIpC,OAAO,MCjgBPO,ID0hBF,SAAa/K,EAAO9D,GAClB,IAAIzD,EACJ,GAAyB,IAArBE,UAAUC,OAAc,CAC1B,GAAqB,iBAAVoH,EAEJ,CACL,IAAKvH,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EAEhC,IAAK,IAAIuS,KAAQhL,EACfnJ,KAAK4B,GAAGqL,MAAMkH,GAAQhL,EAAMgL,GAGhC,OAAOnU,KARP,GAAIA,KAAK,GAAI,OAAOsN,EAAOM,iBAAiB5N,KAAK,GAAI,MAAM6N,iBAAiB1E,GAWhF,GAAyB,IAArBrH,UAAUC,QAAiC,iBAAVoH,EAAoB,CACvD,IAAKvH,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EAChC5B,KAAK4B,GAAGqL,MAAM9D,GAAS9D,EAEzB,OAAOrF,KAET,OAAOA,MC9iBPoU,KD0jBF,SAAcvB,GAEZ,IAAKA,EAAU,OAAO7S,KAEtB,IAAK,IAAI4B,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EAEpC,IAA2C,IAAvCiR,EAAS5R,KAAKjB,KAAK4B,GAAIA,EAAG5B,KAAK4B,IAEjC,OAAO5B,KAIX,OAAOA,MCrkBP0O,KDsmBF,SAAcA,GACZ,QAAoB,IAATA,EACT,OAAO1O,KAAK,GAAKA,KAAK,GAAG6O,eAAYrJ,EAGvC,IAAK,IAAI5D,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EACpC5B,KAAK4B,GAAGiN,UAAYH,EAEtB,OAAO1O,MC7mBPqU,KDgnBF,SAAcA,GACZ,QAAoB,IAATA,EACT,OAAIrU,KAAK,GACAA,KAAK,GAAGsU,YAAY3F,OAEtB,KAGT,IAAK,IAAI/M,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EACpC5B,KAAK4B,GAAG0S,YAAcD,EAExB,OAAOrU,MC1nBPyR,GD4nBF,SAAYlD,GACV,MAAM+B,EAAKtQ,KAAK,GAChB,IAAIuU,EACA3S,EACJ,IAAK0O,QAA0B,IAAb/B,EAA0B,OAAO,EACnD,GAAwB,iBAAbA,EAAuB,CAChC,GAAI+B,EAAGkE,QAAS,OAAOlE,EAAGkE,QAAQjG,GAC7B,GAAI+B,EAAGmE,sBAAuB,OAAOnE,EAAGmE,sBAAsBlG,GAC9D,GAAI+B,EAAGoE,kBAAmB,OAAOpE,EAAGoE,kBAAkBnG,GAG3D,IADAgG,EAAcjG,EAAEC,GACX3M,EAAI,EAAGA,EAAI2S,EAAYxS,OAAQH,GAAK,EACvC,GAAI2S,EAAY3S,KAAO0O,EAAI,OAAO,EAEpC,OAAO,EACF,GAAI/B,IAAapC,EAAU,OAAOmE,IAAOnE,EAC3C,GAAIoC,IAAajB,EAAQ,OAAOgD,IAAOhD,EAE5C,GAAIiB,EAASU,UAAYV,aAAoBJ,EAAM,CAEjD,IADAoG,EAAchG,EAASU,SAAW,CAACV,GAAYA,EAC1C3M,EAAI,EAAGA,EAAI2S,EAAYxS,OAAQH,GAAK,EACvC,GAAI2S,EAAY3S,KAAO0O,EAAI,OAAO,EAEpC,OAAO,EAET,OAAO,GCppBPqE,MD4pBF,WACE,IACI/S,EADAgT,EAAQ5U,KAAK,GAEjB,GAAI4U,EAAO,CAGT,IAFAhT,EAAI,EAEuC,QAAnCgT,EAAQA,EAAMC,kBACG,IAAnBD,EAAM3F,WAAgBrN,GAAK,GAEjC,OAAOA,ICpqBTkT,GDyqBF,SAAYH,GACV,QAAqB,IAAVA,EAAuB,OAAO3U,KACzC,MAAM+B,EAAS/B,KAAK+B,OACpB,IAAIgT,EACJ,OACS,IAAI5G,EADTwG,EAAQ5S,EAAS,EACH,GAEd4S,EAAQ,GACVI,EAAchT,EAAS4S,GACL,EAAmB,GACrB,CAAC3U,KAAK+U,IAER,CAAC/U,KAAK2U,MCprBtBK,ODsrBF,YAAmBtQ,GACjB,IAAIuQ,EAEJ,IAAK,IAAI/S,EAAI,EAAGA,EAAIwC,EAAK3C,OAAQG,GAAK,EAAG,CACvC+S,EAAWvQ,EAAKxC,GAChB,IAAK,IAAIN,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EACpC,GAAwB,iBAAbqT,EAAuB,CAChC,MAAMC,EAAU/I,EAASxB,cAAc,OAEvC,IADAuK,EAAQrG,UAAYoG,EACbC,EAAQC,YACbnV,KAAK4B,GAAGwT,YAAYF,EAAQC,iBAEzB,GAAIF,aAAoB9G,EAC7B,IAAK,IAAI/L,EAAI,EAAGA,EAAI6S,EAASlT,OAAQK,GAAK,EACxCpC,KAAK4B,GAAGwT,YAAYH,EAAS7S,SAG/BpC,KAAK4B,GAAGwT,YAAYH,GAK1B,OAAOjV,MC3sBPqV,QDktBF,SAAiBJ,GACf,IAAIrT,EACAQ,EACJ,IAAKR,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EAChC,GAAwB,iBAAbqT,EAAuB,CAChC,MAAMC,EAAU/I,EAASxB,cAAc,OAEvC,IADAuK,EAAQrG,UAAYoG,EACf7S,EAAI8S,EAAQlI,WAAWjL,OAAS,EAAGK,GAAK,EAAGA,GAAK,EACnDpC,KAAK4B,GAAG0T,aAAaJ,EAAQlI,WAAW5K,GAAIpC,KAAK4B,GAAGoL,WAAW,SAE5D,GAAIiI,aAAoB9G,EAC7B,IAAK/L,EAAI,EAAGA,EAAI6S,EAASlT,OAAQK,GAAK,EACpCpC,KAAK4B,GAAG0T,aAAaL,EAAS7S,GAAIpC,KAAK4B,GAAGoL,WAAW,SAGvDhN,KAAK4B,GAAG0T,aAAaL,EAAUjV,KAAK4B,GAAGoL,WAAW,IAGtD,OAAOhN,MCnuBPuV,KDkwBF,SAAchH,GACZ,OAAIvO,KAAK+B,OAAS,EACZwM,EACEvO,KAAK,GAAGwV,oBAAsBlH,EAAEtO,KAAK,GAAGwV,oBAAoB/D,GAAGlD,GAC1D,IAAIJ,EAAK,CAACnO,KAAK,GAAGwV,qBAEpB,IAAIrH,EAAK,IAGdnO,KAAK,GAAGwV,mBAA2B,IAAIrH,EAAK,CAACnO,KAAK,GAAGwV,qBAClD,IAAIrH,EAAK,IAEX,IAAIA,EAAK,KC7wBhBsH,QD+wBF,SAAiBlH,GACf,MAAMmH,EAAU,GAChB,IAAIpF,EAAKtQ,KAAK,GACd,IAAKsQ,EAAI,OAAO,IAAInC,EAAK,IACzB,KAAOmC,EAAGkF,oBAAoB,CAC5B,MAAMD,EAAOjF,EAAGkF,mBACZjH,EACED,EAAEiH,GAAM9D,GAAGlD,IAAWmH,EAAQ5G,KAAKyG,GAClCG,EAAQ5G,KAAKyG,GACpBjF,EAAKiF,EAEP,OAAO,IAAIpH,EAAKuH,ICzxBhBC,KD2xBF,SAAcpH,GACZ,GAAIvO,KAAK+B,OAAS,EAAG,CACnB,MAAMuO,EAAKtQ,KAAK,GAChB,OAAIuO,EACE+B,EAAGsF,wBAA0BtH,EAAEgC,EAAGsF,wBAAwBnE,GAAGlD,GACxD,IAAIJ,EAAK,CAACmC,EAAGsF,yBAEf,IAAIzH,EAAK,IAGdmC,EAAGsF,uBAA+B,IAAIzH,EAAK,CAACmC,EAAGsF,yBAC5C,IAAIzH,EAAK,IAElB,OAAO,IAAIA,EAAK,KCvyBhB0H,QDyyBF,SAAiBtH,GACf,MAAMuH,EAAU,GAChB,IAAIxF,EAAKtQ,KAAK,GACd,IAAKsQ,EAAI,OAAO,IAAInC,EAAK,IACzB,KAAOmC,EAAGsF,wBAAwB,CAChC,MAAMD,EAAOrF,EAAGsF,uBACZrH,EACED,EAAEqH,GAAMlE,GAAGlD,IAAWuH,EAAQhH,KAAK6G,GAClCG,EAAQhH,KAAK6G,GACpBrF,EAAKqF,EAEP,OAAO,IAAIxH,EAAK2H,ICnzBhBvK,ODwzBF,SAAgBgD,GACd,MAAMmD,EAAU,GAChB,IAAK,IAAI9P,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EACT,OAAvB5B,KAAK4B,GAAGmU,aACNxH,EACED,EAAEtO,KAAK4B,GAAGmU,YAAYtE,GAAGlD,IAAWmD,EAAQ5C,KAAK9O,KAAK4B,GAAGmU,YAE7DrE,EAAQ5C,KAAK9O,KAAK4B,GAAGmU,aAI3B,OAAOzH,EAAEY,EAAOwC,KCl0BhBA,QDo0BF,SAAiBnD,GACf,MAAMmD,EAAU,GAChB,IAAK,IAAI9P,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EAAG,CACvC,IAAI2J,EAASvL,KAAK4B,GAAGmU,WACrB,KAAOxK,GACDgD,EACED,EAAE/C,GAAQkG,GAAGlD,IAAWmD,EAAQ5C,KAAKvD,GAEzCmG,EAAQ5C,KAAKvD,GAEfA,EAASA,EAAOwK,WAGpB,OAAOzH,EAAEY,EAAOwC,KCh1BhBsE,QDk1BF,SAAiBzH,GACf,IAAIyH,EAAUhW,KACd,YAAwB,IAAbuO,EACF,IAAIJ,EAAK,KAEb6H,EAAQvE,GAAGlD,KACdyH,EAAUA,EAAQtE,QAAQnD,GAAUuG,GAAG,IAElCkB,ICz1BPC,KD21BF,SAAc1H,GACZ,MAAM2H,EAAgB,GACtB,IAAK,IAAItU,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EAAG,CACvC,MAAMuU,EAAQnW,KAAK4B,GAAG+K,iBAAiB4B,GACvC,IAAK,IAAInM,EAAI,EAAGA,EAAI+T,EAAMpU,OAAQK,GAAK,EACrC8T,EAAcpH,KAAKqH,EAAM/T,IAG7B,OAAO,IAAI+L,EAAK+H,ICl2BhBnJ,SDo2BF,SAAkBwB,GAChB,MAAMxB,EAAW,GACjB,IAAK,IAAInL,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EAAG,CACvC,MAAMoL,EAAahN,KAAK4B,GAAGoL,WAE3B,IAAK,IAAI5K,EAAI,EAAGA,EAAI4K,EAAWjL,OAAQK,GAAK,EACrCmM,EAEiC,IAA3BvB,EAAW5K,GAAG6M,UAAkBX,EAAEtB,EAAW5K,IAAIqP,GAAGlD,IAC7DxB,EAAS+B,KAAK9B,EAAW5K,IAFM,IAA3B4K,EAAW5K,GAAG6M,UAAgBlC,EAAS+B,KAAK9B,EAAW5K,IAMjE,OAAO,IAAI+L,EAAKe,EAAOnC,KCh3BvB6C,ODk3BF,WACE,IAAK,IAAIhO,EAAI,EAAGA,EAAI5B,KAAK+B,OAAQH,GAAK,EAChC5B,KAAK4B,GAAGmU,YAAY/V,KAAK4B,GAAGmU,WAAWK,YAAYpW,KAAK4B,IAE9D,OAAO5B,MCr3BP0P,ID03BF,YAAgBhL,GACd,MAAMoO,EAAM9S,KACZ,IAAI4B,EACAQ,EACJ,IAAKR,EAAI,EAAGA,EAAI8C,EAAK3C,OAAQH,GAAK,EAAG,CACnC,MAAMyU,EAAQ/H,EAAE5J,EAAK9C,IACrB,IAAKQ,EAAI,EAAGA,EAAIiU,EAAMtU,OAAQK,GAAK,EACjC0Q,EAAIA,EAAI/Q,QAAUsU,EAAMjU,GACxB0Q,EAAI/Q,QAAU,EAGlB,OAAO+Q,GCp4BPI,ODkgBF,WACE,OAAIlT,KAAK,GAAWsN,EAAOM,iBAAiB5N,KAAK,GAAI,MAC9C,KCjgBTc,OAAOwV,KAAKhH,GAAShL,QAASiS,IAC5BjI,EAAEc,GAAGmH,GAAcjH,EAAQiH,KAG7B,MAAMC,EAAQ,CACZ,YAAYC,GACV,MAAMC,EAASD,EACf3V,OAAOwV,KAAKI,GAAQpS,QAASa,IAC3B,IACEuR,EAAOvR,GAAO,KACd,MAAOkM,IAGT,WACSqF,EAAOvR,GACd,MAAOkM,QAKbsF,SAAQ,CAAC9D,EAAU+D,EAAQ,IAClB3I,WAAW4E,EAAU+D,GAE9BC,IAAG,IACM9I,KAAK8I,MAEd,aAAavG,EAAIwG,EAAO,KACtB,IAAIC,EACAC,EACAC,EAEJ,MAAMC,EAAW5J,EAAOM,iBAAiB0C,EAAI,MA+B7C,OA7BIhD,EAAO6J,kBACTH,EAAeE,EAASzG,WAAayG,EAASvG,iBAC7B3B,MAAM,KAAKjN,OAAS,IACnCiV,EAAeA,EAAahI,MAAM,MAAMoI,IAAIjV,GAAKA,EAAEM,QAAQ,IAAK,MAAM4U,KAAK,OAI7EJ,EAAkB,IAAI3J,EAAO6J,gBAAiC,SAAjBH,EAA0B,GAAKA,IAG5ED,GADAE,EAAkBC,EAASI,cAAgBJ,EAASK,YAAcL,EAASM,aAAeN,EAASO,aAAeP,EAASzG,WAAayG,EAASrJ,iBAAiB,aAAapL,QAAQ,aAAc,uBAC5KiV,WAAW1I,MAAM,KAG/B,MAAT8H,IAE0BE,EAAxB1J,EAAO6J,gBAAgCF,EAAgBU,IAEhC,KAAlBZ,EAAOhV,OAA8BqR,WAAW2D,EAAO,KAE5C3D,WAAW2D,EAAO,KAE3B,MAATD,IAE0BE,EAAxB1J,EAAO6J,gBAAgCF,EAAgBW,IAEhC,KAAlBb,EAAOhV,OAA8BqR,WAAW2D,EAAO,KAE5C3D,WAAW2D,EAAO,KAEjCC,GAAgB,GAEzB,cAAca,GACZ,MAAMC,EAAQ,GACd,IACIlW,EACAmW,EACAC,EACAjW,EAJAkW,EAAaJ,GAAOvK,EAAOF,SAAS8K,KAKxC,GAA0B,iBAAfD,GAA2BA,EAAWlW,OAK/C,IAFAA,GADAgW,GADAE,EAAaA,EAAWnR,QAAQ,MAAQ,EAAImR,EAAWxV,QAAQ,QAAS,IAAM,IAC1DuM,MAAM,KAAKyD,OAAO0F,GAA6B,KAAfA,IACpCpW,OAEXH,EAAI,EAAGA,EAAIG,EAAQH,GAAK,EAC3BoW,EAAQD,EAAOnW,GAAGa,QAAQ,QAAS,IAAIuM,MAAM,KAC7C8I,EAAMM,mBAAmBJ,EAAM,UAA2B,IAAbA,EAAM,QAAqBxS,EAAY4S,mBAAmBJ,EAAM,KAAO,GAGxH,OAAOF,GAETO,SAASC,GACa,iBAANA,GAAwB,OAANA,GAAcA,EAAEC,aAAeD,EAAEC,cAAgBzX,OAEnF,UAAU4D,GACR,MAAM8T,EAAK1X,OAAO4D,EAAK,IACvB,IAAK,IAAI9C,EAAI,EAAGA,EAAI8C,EAAK3C,OAAQH,GAAK,EAAG,CACvC,MAAM6W,EAAa/T,EAAK9C,GACxB,GAAI6W,QAAiD,CACnD,MAAMC,EAAY5X,OAAOwV,KAAKxV,OAAO2X,IACrC,IAAK,IAAIE,EAAY,EAAGC,EAAMF,EAAU3W,OAAQ4W,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUH,EAAUC,GACpBG,EAAOhY,OAAOiY,yBAAyBN,EAAYI,QAC5CrT,IAATsT,GAAsBA,EAAKE,aACzBxC,EAAM6B,SAASG,EAAGK,KAAarC,EAAM6B,SAASI,EAAWI,IAC3DrC,EAAMvN,OAAOuP,EAAGK,GAAUJ,EAAWI,KAC3BrC,EAAM6B,SAASG,EAAGK,KAAarC,EAAM6B,SAASI,EAAWI,KACnEL,EAAGK,GAAW,GACdrC,EAAMvN,OAAOuP,EAAGK,GAAUJ,EAAWI,KAErCL,EAAGK,GAAWJ,EAAWI,MAMnC,OAAOL,IAIL,EAAW,WACf,MAAMS,EAAU9M,EAASxB,cAAc,OACvC,MAAO,CACLuO,MAAQ5L,EAAO6L,YAAwC,IAA3B7L,EAAO6L,UAAUD,UAChC5L,EAAOE,UAAU4L,eAAiB,GAAO,iBAAkB9L,GAAYA,EAAO+L,eAAiBlN,aAAoBmB,EAAO+L,eAGvIC,iBAAkBhM,EAAOE,UAAU+L,gBAAkBjM,EAAOkM,cAAiB,mBAAoBlM,EAAOE,WAAaF,EAAOE,UAAU4L,eAAiB,GACvJK,wBAAyBnM,EAAOE,UAAUkM,iBAE1C9I,WAAa,WACX,MAAM3D,EAAQgM,EAAQhM,MACtB,MAAQ,eAAgBA,GAAS,qBAAsBA,GAAS,kBAAmBA,EAFzE,GAIZ0M,aAAerM,EAAO6L,YAAkD,IAArC7L,EAAO6L,UAAUS,iBAA8B,WAChF,MAAM3M,EAAQgM,EAAQhM,MACtB,MAAQ,sBAAuBA,GAAS,mBAAoBA,GAAS,iBAAkBA,GAAS,kBAAmBA,GAAS,gBAAiBA,EAF9D,GAKjF4M,QAAU,WACR,MAAM5M,EAAQgM,EAAQhM,MAChBiG,EAAS,yKAA2KlE,MAAM,KAChM,IAAK,IAAIpN,EAAI,EAAGA,EAAIsR,EAAOnR,OAAQH,GAAK,EACtC,GAAIsR,EAAOtR,KAAMqL,EAAO,OAAO,EAEjC,OAAO,EANA,GAST6M,SACU,qBAAsBxM,GAAU,2BAA4BA,EAGtEyM,gBAAkB,WAChB,IAAIC,GAAkB,EACtB,IACE,MAAMC,EAAOnZ,OAAOmL,eAAe,GAAI,UAAW,CAEhD,MACE+N,GAAkB,KAGtB1M,EAAOvG,iBAAiB,sBAAuB,KAAMkT,GACrD,MAAO5I,IAGT,OAAO2I,EAbQ,GAgBjBE,SACS,mBAAoB5M,GAjDjB,GAsDV,EAKG,CACL6M,OAAQ7M,EAAOE,UAAUC,UAAUsB,MAAM,eAAiBzB,EAAOE,UAAUC,UAAUsB,MAAM,SAC3FqL,SAAU9M,EAAOE,UAAUC,UAAUsB,MAAM,SAC3CsL,SAPF,WACE,MAAMC,EAAKhN,EAAOE,UAAUC,UAAU/K,cACtC,OAAQ4X,EAAGxT,QAAQ,WAAa,GAAKwT,EAAGxT,QAAQ,UAAY,GAAKwT,EAAGxT,QAAQ,WAAa,EAK/EuT,GACVE,YAAa,+CAA+CC,KAAKlN,EAAOE,UAAUC,YAItF,MAAM9M,EACJ,YAAYoX,EAAS,IACnB,MAAM1J,EAAOrO,KACbqO,EAAK0J,OAASA,EAGd1J,EAAKoM,gBAAkB,GAEnBpM,EAAK0J,QAAU1J,EAAK0J,OAAOvT,IAC7B1D,OAAOwV,KAAKjI,EAAK0J,OAAOvT,IAAIF,QAASC,IACnC8J,EAAK7J,GAAGD,EAAW8J,EAAK0J,OAAOvT,GAAGD,MAKxC,GAAGqN,EAAQK,EAASyI,GAClB,MAAMrM,EAAOrO,KACb,GAAuB,mBAAZiS,EAAwB,OAAO5D,EAC1C,MAAMsM,EAASD,EAAW,UAAY,OAKtC,OAJA9I,EAAO5C,MAAM,KAAK1K,QAAS1B,IACpByL,EAAKoM,gBAAgB7X,KAAQyL,EAAKoM,gBAAgB7X,GAAS,IAChEyL,EAAKoM,gBAAgB7X,GAAO+X,GAAQ1I,KAE/B5D,EAGT,KAAKuD,EAAQK,EAASyI,GACpB,MAAMrM,EAAOrO,KACb,GAAuB,mBAAZiS,EAAwB,OAAO5D,EAC1C,SAASuM,KAAelW,GACtBuN,EAAQrN,MAAMyJ,EAAM3J,GACpB2J,EAAK2D,IAAIJ,EAAQgJ,GACbA,EAAYC,gBACPD,EAAYC,QAIvB,OADAD,EAAYC,QAAU5I,EACf5D,EAAK7J,GAAGoN,EAAQgJ,EAAaF,GAGtC,IAAI9I,EAAQK,GACV,MAAM5D,EAAOrO,KACb,OAAKqO,EAAKoM,iBACV7I,EAAO5C,MAAM,KAAK1K,QAAS1B,SACF,IAAZqP,EACT5D,EAAKoM,gBAAgB7X,GAAS,GACrByL,EAAKoM,gBAAgB7X,IAAUyL,EAAKoM,gBAAgB7X,GAAOb,QACpEsM,EAAKoM,gBAAgB7X,GAAO0B,QAAQ,CAACwW,EAAcnG,MAC7CmG,IAAiB7I,GAAY6I,EAAaD,SAAWC,EAAaD,UAAY5I,IAChF5D,EAAKoM,gBAAgB7X,GAAOsP,OAAOyC,EAAO,OAK3CtG,GAZ2BA,EAepC,QAAQ3J,GACN,MAAM2J,EAAOrO,KACb,IAAKqO,EAAKoM,gBAAiB,OAAOpM,EAClC,IAAIuD,EACAtM,EACAW,EAsBJ,MArBuB,iBAAZvB,EAAK,IAAmBzC,MAAM8Y,QAAQrW,EAAK,KACpDkN,EAASlN,EAAK,GACdY,EAAOZ,EAAKsW,MAAM,EAAGtW,EAAK3C,QAC1BkE,EAAUoI,IAEVuD,EAASlN,EAAK,GAAGkN,OACjBtM,EAAOZ,EAAK,GAAGY,KACfW,EAAUvB,EAAK,GAAGuB,SAAWoI,IAEXpM,MAAM8Y,QAAQnJ,GAAUA,EAASA,EAAO5C,MAAM,MACtD1K,QAAS1B,IACnB,GAAIyL,EAAKoM,iBAAmBpM,EAAKoM,gBAAgB7X,GAAQ,CACvD,MAAM0D,EAAW,GACjB+H,EAAKoM,gBAAgB7X,GAAO0B,QAASwW,IACnCxU,EAASwI,KAAKgM,KAEhBxU,EAAShC,QAASwW,IAChBA,EAAalW,MAAMqB,EAASX,QAI3B+I,EAGT,iBAAiB4M,GACf,MAAMC,EAAWlb,KACZkb,EAASC,SACdra,OAAOwV,KAAK4E,EAASC,SAAS7W,QAAS8W,IACrC,MAAMC,EAASH,EAASC,QAAQC,GAE5BC,EAAOtD,QACTvB,EAAMvN,OAAOgS,EAAgBI,EAAOtD,UAK1C,WAAWuD,EAAgB,IACzB,MAAMJ,EAAWlb,KACZkb,EAASC,SACdra,OAAOwV,KAAK4E,EAASC,SAAS7W,QAAS8W,IACrC,MAAMC,EAASH,EAASC,QAAQC,GAC1BG,EAAeD,EAAcF,IAAe,GAE9CC,EAAOH,UACTpa,OAAOwV,KAAK+E,EAAOH,UAAU5W,QAASkX,IACpC,MAAMC,EAAaJ,EAAOH,SAASM,GAEjCN,EAASM,GADe,mBAAfC,EACkBA,EAAW7U,KAAKsU,GAEhBO,IAK7BJ,EAAO7W,IAAM0W,EAAS1W,IACxB1D,OAAOwV,KAAK+E,EAAO7W,IAAIF,QAASoX,IAC9BR,EAAS1W,GAAGkX,EAAiBL,EAAO7W,GAAGkX,MAKvCL,EAAOM,QACTN,EAAOM,OAAO/U,KAAKsU,EAAnBG,CAA6BE,KAKnC,sBAAsBhb,GACNP,KACH4b,KADG5b,KAER4b,IAAIrb,GAGZ,qBAAqB8a,KAAWtD,GAC9B,MAAM1I,EAAQrP,KACTqP,EAAMtO,UAAUoa,UAAS9L,EAAMtO,UAAUoa,QAAU,IACxD,MAAM1U,EAAO4U,EAAO5U,SAAY3F,OAAOwV,KAAKjH,EAAMtO,UAAUoa,SAASpZ,UAAUyU,EAAMK,QAkBrF,OAjBAxH,EAAMtO,UAAUoa,QAAQ1U,GAAQ4U,EAE5BA,EAAOQ,OACT/a,OAAOwV,KAAK+E,EAAOQ,OAAOvX,QAASa,IACjCkK,EAAMtO,UAAUoE,GAAOkW,EAAOQ,MAAM1W,KAIpCkW,EAAOS,QACThb,OAAOwV,KAAK+E,EAAOS,QAAQxX,QAASa,IAClCkK,EAAMlK,GAAOkW,EAAOS,OAAO3W,KAI3BkW,EAAO5P,SACT4P,EAAO5P,QAAQ7G,MAAMyK,EAAO0I,GAEvB1I,EAGT,WAAWgM,KAAWtD,GACpB,MAAM1I,EAAQrP,KACd,OAAIiC,MAAM8Y,QAAQM,IAChBA,EAAO/W,QAAQyX,GAAK1M,EAAM2M,cAAcD,IACjC1M,GAEFA,EAAM2M,cAAcX,KAAWtD,IA2kB1C,IAAI3P,EAAS,CACX6T,WAxkBF,WACE,MAAM/b,EAASF,KACf,IAAIkc,EACAC,EACJ,MAAM9R,EAAMnK,EAAOmK,IAEjB6R,OADiC,IAAxBhc,EAAO6X,OAAOmE,MACfhc,EAAO6X,OAAOmE,MAEd7R,EAAI,GAAG+R,YAGfD,OADkC,IAAzBjc,EAAO6X,OAAOoE,OACdjc,EAAO6X,OAAOoE,OAEd9R,EAAI,GAAGgS,aAEH,IAAVH,GAAehc,EAAOoc,gBAA+B,IAAXH,GAAgBjc,EAAOqc,eAKtEL,EAAQA,EAAQM,SAASnS,EAAI6J,IAAI,gBAAiB,IAAMsI,SAASnS,EAAI6J,IAAI,iBAAkB,IAC3FiI,EAASA,EAASK,SAASnS,EAAI6J,IAAI,eAAgB,IAAMsI,SAASnS,EAAI6J,IAAI,kBAAmB,IAE7FsC,EAAMvN,OAAO/I,EAAQ,CACnBgc,QACAC,SACAM,KAAMvc,EAAOoc,eAAiBJ,EAAQC,MA+iBxCO,aA3iBF,WACE,MAAMxc,EAASF,KACT+X,EAAS7X,EAAO6X,QAEhB,WACJ4E,EAAYF,KAAMG,EAAYC,aAAcC,EAAG,SAAEC,GAC/C7c,EACE8c,EAAY9c,EAAO+c,SAAWlF,EAAOkF,QAAQC,QAC7CC,EAAuBH,EAAY9c,EAAO+c,QAAQ1Z,OAAOxB,OAAS7B,EAAOqD,OAAOxB,OAChFwB,EAASoZ,EAAW5P,aAAa7M,EAAO6X,OAAOvW,cAC/C4b,EAAeJ,EAAY9c,EAAO+c,QAAQ1Z,OAAOxB,OAASwB,EAAOxB,OACvE,IAAIsb,EAAW,GACf,MAAMC,EAAa,GACbC,EAAkB,GAExB,IAAIC,EAAezF,EAAO0F,mBACE,mBAAjBD,IACTA,EAAezF,EAAO0F,mBAAmBxc,KAAKf,IAGhD,IAAIwd,EAAc3F,EAAO4F,kBACE,mBAAhBD,IACTA,EAAc3F,EAAO4F,kBAAkB1c,KAAKf,IAG9C,MAAM0d,EAAyB1d,EAAOmd,SAAStb,OACzC8b,EAA2B3d,EAAOmd,SAAStb,OAEjD,IAiBI+b,EAaAC,EA9BAC,EAAejG,EAAOiG,aACtBC,GAAiBT,EACjBU,EAAgB,EAChBvJ,EAAQ,EACZ,QAA0B,IAAfiI,EACT,OAE0B,iBAAjBoB,GAA6BA,EAAalX,QAAQ,MAAQ,IACnEkX,EAAgB5K,WAAW4K,EAAavb,QAAQ,IAAK,KAAO,IAAOma,GAGrE1c,EAAOie,aAAeH,EAGlBlB,EAAKvZ,EAAO2Q,IAAI,CAAEkK,WAAY,GAAIC,UAAW,KAC5C9a,EAAO2Q,IAAI,CAAEoK,YAAa,GAAIC,aAAc,KAG7CxG,EAAOyG,gBAAkB,IAEzBV,EADEW,KAAKC,MAAMtB,EAAerF,EAAOyG,mBAAqBpB,EAAeld,EAAO6X,OAAOyG,gBAC5DpB,EAEAqB,KAAKE,KAAKvB,EAAerF,EAAOyG,iBAAmBzG,EAAOyG,gBAExD,SAAzBzG,EAAO6G,eAA2D,QAA/B7G,EAAO8G,sBAC5Cf,EAAyBW,KAAKK,IAAIhB,EAAwB/F,EAAO6G,cAAgB7G,EAAOyG,mBAM5F,MAAMA,EAAkBzG,EAAOyG,gBACzBO,EAAejB,EAAyBU,EACxCQ,EAAiBP,KAAKC,MAAMtB,EAAerF,EAAOyG,iBACxD,IAAK,IAAI5c,EAAI,EAAGA,EAAIwb,EAAcxb,GAAK,EAAG,CACxCmc,EAAY,EACZ,MAAMkB,EAAQ1b,EAAOuR,GAAGlT,GACxB,GAAImW,EAAOyG,gBAAkB,EAAG,CAE9B,IAAIU,EACAC,EACAC,EAC+B,WAA/BrH,EAAO8G,qBAETO,EAAMxd,GADNud,EAASV,KAAKC,MAAM9c,EAAI4c,IACJA,GAChBW,EAASH,GAAmBG,IAAWH,GAAkBI,IAAQZ,EAAkB,KACrFY,GAAO,IACIZ,IACTY,EAAM,EACND,GAAU,GAGdD,EAAqBC,EAAWC,EAAMtB,EAA0BU,EAChES,EACG/K,IAAI,CACH,4BAA6BgL,EAC7B,yBAA0BA,EAC1B,iBAAkBA,EAClB,gBAAiBA,EACjBG,MAAOH,KAIXC,EAASvd,GADTwd,EAAMX,KAAKC,MAAM9c,EAAImd,IACDA,EAEtBE,EACG/K,cACWhU,EAAOoc,eAAiB,MAAQ,SACjC,IAAR8C,GAAarH,EAAOiG,iBAAqBjG,EAAOiG,kBAElD/N,KAAK,qBAAsBkP,GAC3BlP,KAAK,kBAAmBmP,GAE7B,GAA6B,SAAzBH,EAAM/K,IAAI,WAAd,CAEA,GAA6B,SAAzB6D,EAAO6G,cAA0B,CACnC,MAAMU,EAAchS,EAAOM,iBAAiBqR,EAAM,GAAI,MAChDM,EAAmBN,EAAM,GAAGhS,MAAMwD,UAClC+O,EAAyBP,EAAM,GAAGhS,MAAM0D,gBAO9C,GANI4O,IACFN,EAAM,GAAGhS,MAAMwD,UAAY,QAEzB+O,IACFP,EAAM,GAAGhS,MAAM0D,gBAAkB,QAE/BoH,EAAO0H,aACT1B,EAAY7d,EAAOoc,eACf2C,EAAMjM,YAAW,GACjBiM,EAAM5L,aAAY,QAGtB,GAAInT,EAAOoc,eAAgB,CACzB,MAAMJ,EAAQ9I,WAAWkM,EAAYzR,iBAAiB,UAChD6R,EAActM,WAAWkM,EAAYzR,iBAAiB,iBACtD8R,EAAevM,WAAWkM,EAAYzR,iBAAiB,kBACvDuQ,EAAahL,WAAWkM,EAAYzR,iBAAiB,gBACrDyQ,EAAclL,WAAWkM,EAAYzR,iBAAiB,iBACtD+R,EAAYN,EAAYzR,iBAAiB,cAE7CkQ,EADE6B,GAA2B,eAAdA,EACH1D,EAAQkC,EAAaE,EAErBpC,EAAQwD,EAAcC,EAAevB,EAAaE,MAE3D,CACL,MAAMnC,EAAS/I,WAAWkM,EAAYzR,iBAAiB,WACjDgS,EAAazM,WAAWkM,EAAYzR,iBAAiB,gBACrDiS,EAAgB1M,WAAWkM,EAAYzR,iBAAiB,mBACxDwQ,EAAYjL,WAAWkM,EAAYzR,iBAAiB,eACpD0Q,EAAenL,WAAWkM,EAAYzR,iBAAiB,kBACvD+R,EAAYN,EAAYzR,iBAAiB,cAE7CkQ,EADE6B,GAA2B,eAAdA,EACHzD,EAASkC,EAAYE,EAErBpC,EAAS0D,EAAaC,EAAgBzB,EAAYE,EAIhEgB,IACFN,EAAM,GAAGhS,MAAMwD,UAAY8O,GAEzBC,IACFP,EAAM,GAAGhS,MAAM0D,gBAAkB6O,GAE/BzH,EAAO0H,eAAc1B,EAAYU,KAAKC,MAAMX,SAEhDA,GAAanB,GAAe7E,EAAO6G,cAAgB,GAAKZ,GAAiBjG,EAAO6G,cAC5E7G,EAAO0H,eAAc1B,EAAYU,KAAKC,MAAMX,IAE5Cxa,EAAO3B,KACL1B,EAAOoc,eACT/Y,EAAO3B,GAAGqL,MAAMiP,SAAW6B,MAE3Bxa,EAAO3B,GAAGqL,MAAMkP,UAAY4B,OAI9Bxa,EAAO3B,KACT2B,EAAO3B,GAAGme,gBAAkBhC,GAE9BR,EAAgBzO,KAAKiP,GAGjBhG,EAAOiI,gBACT/B,EAAgBA,EAAiBF,EAAY,EAAMG,EAAgB,EAAKF,EAClD,IAAlBE,GAA6B,IAANtc,IAASqc,EAAgBA,EAAiBrB,EAAa,EAAKoB,GAC7E,IAANpc,IAASqc,EAAgBA,EAAiBrB,EAAa,EAAKoB,GAC5DS,KAAKwB,IAAIhC,GAAiB,OAAUA,EAAgB,GACpDlG,EAAO0H,eAAcxB,EAAgBQ,KAAKC,MAAMT,IAChD,EAAUlG,EAAOmI,gBAAmB,GAAG7C,EAASvO,KAAKmP,GACzDX,EAAWxO,KAAKmP,KAEZlG,EAAO0H,eAAcxB,EAAgBQ,KAAKC,MAAMT,IAChD,EAAUlG,EAAOmI,gBAAmB,GAAG7C,EAASvO,KAAKmP,GACzDX,EAAWxO,KAAKmP,GAChBA,EAAgBA,EAAgBF,EAAYC,GAG9C9d,EAAOie,aAAeJ,EAAYC,EAElCE,EAAgBH,EAEhBpJ,GAAS,GAGX,IAAIwL,EAWJ,GAZAjgB,EAAOie,YAAcM,KAAKK,IAAI5e,EAAOie,YAAavB,GAAcc,EAI9DZ,GAAOC,IAA+B,UAAlBhF,EAAOqI,QAAwC,cAAlBrI,EAAOqI,SACxDzD,EAAWzI,IAAI,CAAEgI,SAAUhc,EAAOie,YAAcpG,EAAOiG,mBAEpD,EAAQnE,UAAW9B,EAAOsI,iBACzBngB,EAAOoc,eAAgBK,EAAWzI,IAAI,CAAEgI,SAAUhc,EAAOie,YAAcpG,EAAOiG,mBAC7ErB,EAAWzI,IAAI,CAAEiI,UAAWjc,EAAOie,YAAcpG,EAAOiG,oBAG3DjG,EAAOyG,gBAAkB,IAC3Bte,EAAOie,aAAeJ,EAAYhG,EAAOiG,cAAgBF,EACzD5d,EAAOie,YAAcM,KAAKE,KAAKze,EAAOie,YAAcpG,EAAOyG,iBAAmBzG,EAAOiG,aACjF9d,EAAOoc,eAAgBK,EAAWzI,IAAI,CAAEgI,SAAUhc,EAAOie,YAAcpG,EAAOiG,mBAC7ErB,EAAWzI,IAAI,CAAEiI,UAAWjc,EAAOie,YAAcpG,EAAOiG,mBACzDjG,EAAOiI,gBAAgB,CACzBG,EAAgB,GAChB,IAAK,IAAIve,EAAI,EAAGA,EAAIyb,EAAStb,OAAQH,GAAK,EAAG,CAC3C,IAAI0e,EAAiBjD,EAASzb,GAC1BmW,EAAO0H,eAAca,EAAiB7B,KAAKC,MAAM4B,IACjDjD,EAASzb,GAAK1B,EAAOie,YAAcd,EAAS,IAAI8C,EAAcrR,KAAKwR,GAEzEjD,EAAW8C,EAKf,IAAKpI,EAAOiI,eAAgB,CAC1BG,EAAgB,GAChB,IAAK,IAAIve,EAAI,EAAGA,EAAIyb,EAAStb,OAAQH,GAAK,EAAG,CAC3C,IAAI0e,EAAiBjD,EAASzb,GAC1BmW,EAAO0H,eAAca,EAAiB7B,KAAKC,MAAM4B,IACjDjD,EAASzb,IAAM1B,EAAOie,YAAcvB,GACtCuD,EAAcrR,KAAKwR,GAGvBjD,EAAW8C,EACP1B,KAAKC,MAAMxe,EAAOie,YAAcvB,GAAc6B,KAAKC,MAAMrB,EAASA,EAAStb,OAAS,IAAM,GAC5Fsb,EAASvO,KAAK5O,EAAOie,YAAcvB,GAYvC,GATwB,IAApBS,EAAStb,SAAcsb,EAAW,CAAC,IAEX,IAAxBtF,EAAOiG,eACL9d,EAAOoc,eACLQ,EAAKvZ,EAAO2Q,IAAI,CAAEkK,cAAeJ,QAChCza,EAAO2Q,IAAI,CAAEoK,eAAgBN,QAC7Bza,EAAO2Q,IAAI,CAAEqK,gBAAiBP,SAGnCjG,EAAOwI,yBAA0B,CACnC,IAAIC,EAAgB,EAKpB,GAJAjD,EAAgBjZ,QAASmc,IACvBD,GAAiBC,GAAkB1I,EAAOiG,aAAejG,EAAOiG,aAAe,MAEjFwC,GAAiBzI,EAAOiG,cACJpB,EAAY,CAC9B,MAAM8D,GAAmB9D,EAAa4D,GAAiB,EACvDnD,EAAS/Y,QAAQ,CAACqc,EAAMC,KACtBvD,EAASuD,GAAaD,EAAOD,IAE/BpD,EAAWhZ,QAAQ,CAACqc,EAAMC,KACxBtD,EAAWsD,GAAaD,EAAOD,KAKrClK,EAAMvN,OAAO/I,EAAQ,CACnBqD,SACA8Z,WACAC,aACAC,oBAGEH,IAAiBD,GACnBjd,EAAO2C,KAAK,sBAEVwa,EAAStb,SAAW6b,IAClB1d,EAAO6X,OAAO8I,eAAe3gB,EAAO4gB,gBACxC5gB,EAAO2C,KAAK,yBAEVya,EAAWvb,SAAW8b,GACxB3d,EAAO2C,KAAK,2BAGVkV,EAAOgJ,qBAAuBhJ,EAAOiJ,wBACvC9gB,EAAO+gB,sBAqRTC,iBAjRF,SAA2BC,GACzB,MAAMjhB,EAASF,KACTohB,EAAe,GACrB,IACIxf,EADAyf,EAAY,EAQhB,GANqB,iBAAVF,EACTjhB,EAAOohB,cAAcH,IACF,IAAVA,GACTjhB,EAAOohB,cAAcphB,EAAO6X,OAAOoJ,OAGD,SAAhCjhB,EAAO6X,OAAO6G,eAA4B1e,EAAO6X,OAAO6G,cAAgB,EAC1E,IAAKhd,EAAI,EAAGA,EAAI6c,KAAKE,KAAKze,EAAO6X,OAAO6G,eAAgBhd,GAAK,EAAG,CAC9D,MAAM+S,EAAQzU,EAAOqhB,YAAc3f,EACnC,GAAI+S,EAAQzU,EAAOqD,OAAOxB,OAAQ,MAClCqf,EAAatS,KAAK5O,EAAOqD,OAAOuR,GAAGH,GAAO,SAG5CyM,EAAatS,KAAK5O,EAAOqD,OAAOuR,GAAG5U,EAAOqhB,aAAa,IAIzD,IAAK3f,EAAI,EAAGA,EAAIwf,EAAarf,OAAQH,GAAK,EACxC,QAA+B,IAApBwf,EAAaxf,GAAoB,CAC1C,MAAMua,EAASiF,EAAaxf,GAAG0R,aAC/B+N,EAAYlF,EAASkF,EAAYlF,EAASkF,EAK1CA,GAAWnhB,EAAOyc,WAAWzI,IAAI,YAAamN,QAoPlDJ,mBAjPF,WACE,MAAM/gB,EAASF,KACTuD,EAASrD,EAAOqD,OACtB,IAAK,IAAI3B,EAAI,EAAGA,EAAI2B,EAAOxB,OAAQH,GAAK,EACtC2B,EAAO3B,GAAG4f,kBAAoBthB,EAAOoc,eAAiB/Y,EAAO3B,GAAG6f,WAAale,EAAO3B,GAAG8f,WA8OzFC,qBA1OF,SAA+BC,EAAa5hB,MAAQA,KAAK4hB,WAAc,GACrE,MAAM1hB,EAASF,KACT+X,EAAS7X,EAAO6X,QAEhB,OAAExU,EAAQsZ,aAAcC,GAAQ5c,EAEtC,GAAsB,IAAlBqD,EAAOxB,OAAc,YACkB,IAAhCwB,EAAO,GAAGie,mBAAmCthB,EAAO+gB,qBAE/D,IAAIY,GAAgBD,EAChB9E,IAAK+E,EAAeD,GAGxBre,EAAOoM,YAAYoI,EAAO+J,mBAE1B5hB,EAAO6hB,qBAAuB,GAC9B7hB,EAAO8hB,cAAgB,GAEvB,IAAK,IAAIpgB,EAAI,EAAGA,EAAI2B,EAAOxB,OAAQH,GAAK,EAAG,CACzC,MAAMqd,EAAQ1b,EAAO3B,GACfqgB,GACHJ,GAAgB9J,EAAOiI,eAAiB9f,EAAOgiB,eAAiB,GAAMjD,EAAMuC,oBAC1EvC,EAAMc,gBAAkBhI,EAAOiG,cACpC,GAAIjG,EAAOiJ,sBAAuB,CAChC,MAAMmB,IAAgBN,EAAe5C,EAAMuC,mBACrCY,EAAaD,EAAcjiB,EAAOqd,gBAAgB3b,IACrCugB,GAAe,GAAKA,EAAcjiB,EAAOuc,MAC9C2F,EAAa,GAAKA,GAAcliB,EAAOuc,MACvC0F,GAAe,GAAKC,GAAcliB,EAAOuc,QAErDvc,EAAO8hB,cAAclT,KAAKmQ,GAC1B/e,EAAO6hB,qBAAqBjT,KAAKlN,GACjC2B,EAAOuR,GAAGlT,GAAG2N,SAASwI,EAAO+J,oBAGjC7C,EAAMoD,SAAWvF,GAAOmF,EAAgBA,EAE1C/hB,EAAO8hB,cAAgB1T,EAAEpO,EAAO8hB,gBAsMhCM,eAnMF,SAAyBV,EAAa5hB,MAAQA,KAAK4hB,WAAc,GAC/D,MAAM1hB,EAASF,KACT+X,EAAS7X,EAAO6X,OAEhBwK,EAAiBriB,EAAOsiB,eAAiBtiB,EAAOgiB,eACtD,IAAI,SAAEG,EAAQ,YAAEI,EAAW,MAAEC,GAAUxiB,EACvC,MAAMyiB,EAAeF,EACfG,EAASF,EACQ,IAAnBH,GACFF,EAAW,EACXI,GAAc,EACdC,GAAQ,IAGRD,GADAJ,GAAYT,EAAY1hB,EAAOgiB,gBAAkB,IACvB,EAC1BQ,EAAQL,GAAY,GAEtB7L,EAAMvN,OAAO/I,EAAQ,CACnBmiB,WACAI,cACAC,WAGE3K,EAAOgJ,qBAAuBhJ,EAAOiJ,wBAAuB9gB,EAAOyhB,qBAAqBC,GAExFa,IAAgBE,GAClBziB,EAAO2C,KAAK,yBAEV6f,IAAUE,GACZ1iB,EAAO2C,KAAK,oBAET8f,IAAiBF,GAAiBG,IAAWF,IAChDxiB,EAAO2C,KAAK,YAGd3C,EAAO2C,KAAK,WAAYwf,IAiKxBQ,oBA9JF,WACE,MAAM3iB,EAASF,MAET,OACJuD,EAAM,OAAEwU,EAAM,WAAE4E,EAAU,YAAE4E,EAAW,UAAEuB,GACvC5iB,EACE8c,EAAY9c,EAAO+c,SAAWlF,EAAOkF,QAAQC,QAInD,IAAI6F,EAFJxf,EAAOoM,eAAeoI,EAAOiL,oBAAoBjL,EAAOkL,kBAAkBlL,EAAOmL,kBAAkBnL,EAAOoL,6BAA6BpL,EAAOqL,2BAA2BrL,EAAOsL,4BAI9KN,EADE/F,EACY9c,EAAOyc,WAAW1G,SAAS8B,EAAOvW,uCAAuC+f,OAEzEhe,EAAOuR,GAAGyM,IAIdhS,SAASwI,EAAOiL,kBAExBjL,EAAO7P,OAEL6a,EAAYlT,SAASkI,EAAOuL,qBAC9B3G,EACG5P,aAAagL,EAAOvW,mBAAmBuW,EAAOuL,iDAAiDR,OAC/FvT,SAASwI,EAAOoL,2BAEnBxG,EACG5P,aAAagL,EAAOvW,cAAcuW,EAAOuL,gDAAgDR,OACzFvT,SAASwI,EAAOoL,4BAIvB,IAAII,EAAYR,EAAYtN,YAAYsC,EAAOvW,cAAcsT,GAAG,GAAGvF,SAASwI,EAAOkL,gBAC/ElL,EAAO7P,MAA6B,IAArBqb,EAAUxhB,SAC3BwhB,EAAYhgB,EAAOuR,GAAG,IACZvF,SAASwI,EAAOkL,gBAG5B,IAAIO,EAAYT,EAAYlN,YAAYkC,EAAOvW,cAAcsT,GAAG,GAAGvF,SAASwI,EAAOmL,gBAC/EnL,EAAO7P,MAA6B,IAArBsb,EAAUzhB,SAC3ByhB,EAAYjgB,EAAOuR,IAAI,IACbvF,SAASwI,EAAOmL,gBAExBnL,EAAO7P,OAELqb,EAAU1T,SAASkI,EAAOuL,qBAC5B3G,EACG5P,aAAagL,EAAOvW,mBAAmBuW,EAAOuL,iDAAiDC,EAAUtT,KAAK,gCAC9GV,SAASwI,EAAOqL,yBAEnBzG,EACG5P,aAAagL,EAAOvW,cAAcuW,EAAOuL,gDAAgDC,EAAUtT,KAAK,gCACxGV,SAASwI,EAAOqL,yBAEjBI,EAAU3T,SAASkI,EAAOuL,qBAC5B3G,EACG5P,aAAagL,EAAOvW,mBAAmBuW,EAAOuL,iDAAiDE,EAAUvT,KAAK,gCAC9GV,SAASwI,EAAOsL,yBAEnB1G,EACG5P,aAAagL,EAAOvW,cAAcuW,EAAOuL,gDAAgDE,EAAUvT,KAAK,gCACxGV,SAASwI,EAAOsL,2BAiGvBI,kBA5FF,SAA4BC,GAC1B,MAAMxjB,EAASF,KACT4hB,EAAY1hB,EAAO2c,aAAe3c,EAAO0hB,WAAa1hB,EAAO0hB,WAC7D,WACJtE,EAAU,SAAED,EAAQ,OAAEtF,EAAQwJ,YAAaoC,EAAeb,UAAWc,EAAmBhD,UAAWiD,GACjG3jB,EACJ,IACI0gB,EADAW,EAAcmC,EAElB,QAA2B,IAAhBnC,EAA6B,CACtC,IAAK,IAAI3f,EAAI,EAAGA,EAAI0b,EAAWvb,OAAQH,GAAK,OACT,IAAtB0b,EAAW1b,EAAI,GACpBggB,GAAatE,EAAW1b,IAAMggB,EAAYtE,EAAW1b,EAAI,IAAO0b,EAAW1b,EAAI,GAAK0b,EAAW1b,IAAM,EACvG2f,EAAc3f,EACLggB,GAAatE,EAAW1b,IAAMggB,EAAYtE,EAAW1b,EAAI,KAClE2f,EAAc3f,EAAI,GAEXggB,GAAatE,EAAW1b,KACjC2f,EAAc3f,GAIdmW,EAAO+L,sBACLvC,EAAc,QAA4B,IAAhBA,KAA6BA,EAAc,GAS7E,IALEX,EADEvD,EAASvW,QAAQ8a,IAAc,EACrBvE,EAASvW,QAAQ8a,GAEjBnD,KAAKC,MAAM6C,EAAcxJ,EAAOmI,kBAE7B7C,EAAStb,SAAQ6e,EAAYvD,EAAStb,OAAS,GAC5Dwf,IAAgBoC,EAKlB,YAJI/C,IAAciD,IAChB3jB,EAAO0gB,UAAYA,EACnB1gB,EAAO2C,KAAK,qBAMhB,MAAMigB,EAAYtG,SAAStc,EAAOqD,OAAOuR,GAAGyM,GAAatR,KAAK,4BAA8BsR,EAAa,IAEzG/K,EAAMvN,OAAO/I,EAAQ,CACnB0gB,YACAkC,YACAa,gBACApC,gBAEFrhB,EAAO2C,KAAK,qBACZ3C,EAAO2C,KAAK,mBACR+gB,IAAsBd,GACxB5iB,EAAO2C,KAAK,mBAEd3C,EAAO2C,KAAK,gBAwCZkhB,mBArCF,SAA6B1S,GAC3B,MAAMnR,EAASF,KACT+X,EAAS7X,EAAO6X,OAChBkH,EAAQ3Q,EAAE+C,EAAEjO,QAAQ4S,YAAY+B,EAAOvW,cAAc,GAC3D,IAAIwiB,GAAa,EACjB,GAAI/E,EACF,IAAK,IAAIrd,EAAI,EAAGA,EAAI1B,EAAOqD,OAAOxB,OAAQH,GAAK,EACzC1B,EAAOqD,OAAO3B,KAAOqd,IAAO+E,GAAa,GAIjD,IAAI/E,IAAS+E,EAUX,OAFA9jB,EAAO6D,kBAAeyB,OACtBtF,EAAO0D,kBAAe4B,GARtBtF,EAAO6D,aAAekb,EAClB/e,EAAO+c,SAAW/c,EAAO6X,OAAOkF,QAAQC,QAC1Chd,EAAO0D,aAAe4Y,SAASlO,EAAE2Q,GAAOhP,KAAK,2BAA4B,IAEzE/P,EAAO0D,aAAe0K,EAAE2Q,GAAOtK,QAO/BoD,EAAOkM,0BAA+Cze,IAAxBtF,EAAO0D,cAA8B1D,EAAO0D,eAAiB1D,EAAOqhB,aACpGrhB,EAAO+jB,wBAmFX,IAAI,EAAY,CACdC,aApEF,SAAuBpN,GAAO9W,KAAKsc,eAAiB,IAAM,MACxD,MAEM,OACJvE,EAAQ8E,aAAcC,EAAG,UAAE8E,EAAS,WAAEjF,GAHzB3c,KAMf,GAAI+X,EAAOoM,iBACT,OAAOrH,GAAO8E,EAAYA,EAG5B,IAAIwC,EAAmB5N,EAAM0N,aAAavH,EAAW,GAAI7F,GAGzD,OAFIgG,IAAKsH,GAAoBA,GAEtBA,GAAoB,GAuD3BC,aApDF,SAAuBzC,EAAW0C,GAChC,MAAMpkB,EAASF,MAEb6c,aAAcC,EAAG,OAAE/E,EAAM,WAAE4E,EAAU,SAAE0F,GACrCniB,EACJ,IAuBIqkB,EAvBAC,EAAI,EACJC,EAAI,EAGJvkB,EAAOoc,eACTkI,EAAI1H,GAAO8E,EAAYA,EAEvB6C,EAAI7C,EAGF7J,EAAO0H,eACT+E,EAAI/F,KAAKC,MAAM8F,GACfC,EAAIhG,KAAKC,MAAM+F,IAGZ1M,EAAOoM,mBACN,EAAQxK,aAAcgD,EAAWlM,yBAAyB+T,QAAQC,aACjE9H,EAAWlM,uBAAuB+T,QAAQC,SAEjDvkB,EAAOwkB,kBAAoBxkB,EAAO0hB,UAClC1hB,EAAO0hB,UAAY1hB,EAAOoc,eAAiBkI,EAAIC,EAI/C,MAAMlC,EAAiBriB,EAAOsiB,eAAiBtiB,EAAOgiB,gBAEpDqC,EADqB,IAAnBhC,EACY,GAECX,EAAY1hB,EAAOgiB,gBAAkB,KAElCG,GAClBniB,EAAOoiB,eAAeV,GAGxB1hB,EAAO2C,KAAK,eAAgB3C,EAAO0hB,UAAW0C,IAc9CpC,aAXF,WACE,OAASliB,KAAKqd,SAAS,IAWvBmF,aARF,WACE,OAASxiB,KAAKqd,SAASrd,KAAKqd,SAAStb,OAAS,KA6EhD,IAAI,EAAa,CACfuf,cApEF,SAAwBzQ,EAAUyT,GACjBtkB,KAER2c,WAAW/L,WAAWC,GAFd7Q,KAIR6C,KAAK,gBAAiBgO,EAAUyT,IAgEvCK,gBA7DF,SAA0BC,GAAe,EAAMC,GAC7C,MAAM3kB,EAASF,MACT,YAAEuhB,EAAW,OAAExJ,EAAM,cAAE4L,GAAkBzjB,EAC3C6X,EAAO+M,YACT5kB,EAAOghB,mBAGT,IAAI6D,EAAMF,EASV,GARKE,IAC8BA,EAA7BxD,EAAcoC,EAAqB,OAC9BpC,EAAcoC,EAAqB,OACjC,SAGbzjB,EAAO2C,KAAK,mBAER+hB,GAAgBrD,IAAgBoC,EAAe,CACjD,GAAY,UAARoB,EAEF,YADA7kB,EAAO2C,KAAK,6BAGd3C,EAAO2C,KAAK,8BACA,SAARkiB,EACF7kB,EAAO2C,KAAK,4BAEZ3C,EAAO2C,KAAK,8BAqChB+P,cAhCF,SAAwBgS,GAAe,EAAMC,GAC3C,MAAM3kB,EAASF,MACT,YAAEuhB,EAAW,cAAEoC,GAAkBzjB,EACvCA,EAAO8kB,WAAY,EACnB9kB,EAAOohB,cAAc,GAErB,IAAIyD,EAAMF,EASV,GARKE,IAC8BA,EAA7BxD,EAAcoC,EAAqB,OAC9BpC,EAAcoC,EAAqB,OACjC,SAGbzjB,EAAO2C,KAAK,iBAER+hB,GAAgBrD,IAAgBoC,EAAe,CACjD,GAAY,UAARoB,EAEF,YADA7kB,EAAO2C,KAAK,2BAGd3C,EAAO2C,KAAK,4BACA,SAARkiB,EACF7kB,EAAO2C,KAAK,0BAEZ3C,EAAO2C,KAAK,6BAgPlB,IAAI,EAAQ,CACVoiB,QAtOF,SAAkBtQ,EAAQ,EAAGwM,EAAQnhB,KAAK+X,OAAOoJ,MAAOyD,GAAe,EAAMM,GAC3E,MAAMhlB,EAASF,KACf,IAAImlB,EAAaxQ,EACbwQ,EAAa,IAAGA,EAAa,GAEjC,MAAM,OACJpN,EAAM,SAAEsF,EAAQ,WAAEC,EAAU,cAAEqG,EAAa,YAAEpC,EAAa1E,aAAcC,GACtE5c,EACJ,GAAIA,EAAO8kB,WAAajN,EAAOqN,+BAC7B,OAAO,EAGT,IAAIxE,EAAYnC,KAAKC,MAAMyG,EAAapN,EAAOmI,gBAC3CU,GAAavD,EAAStb,SAAQ6e,EAAYvD,EAAStb,OAAS,IAE3Dwf,GAAexJ,EAAOsN,cAAgB,MAAQ1B,GAAiB,IAAMiB,GACxE1kB,EAAO2C,KAAK,0BAGd,MAAM+e,GAAavE,EAASuD,GAM5B,GAHA1gB,EAAOoiB,eAAeV,GAGlB7J,EAAO+L,oBACT,IAAK,IAAIliB,EAAI,EAAGA,EAAI0b,EAAWvb,OAAQH,GAAK,GACrC6c,KAAKC,MAAkB,IAAZkD,IAAoBnD,KAAKC,MAAsB,IAAhBpB,EAAW1b,MACxDujB,EAAavjB,GAKnB,GAAI1B,EAAO0I,aAAeuc,IAAe5D,EAAa,CACpD,IAAKrhB,EAAOolB,gBAAkB1D,EAAY1hB,EAAO0hB,WAAaA,EAAY1hB,EAAOgiB,eAC/E,OAAO,EAET,IAAKhiB,EAAOqlB,gBAAkB3D,EAAY1hB,EAAO0hB,WAAaA,EAAY1hB,EAAOsiB,iBAC1EjB,GAAe,KAAO4D,EAAY,OAAO,EAIlD,IAAIN,EAOJ,OAN8BA,EAA1BM,EAAa5D,EAAyB,OACjC4D,EAAa5D,EAAyB,OAC9B,QAIZzE,IAAQ8E,IAAc1hB,EAAO0hB,YAAgB9E,GAAO8E,IAAc1hB,EAAO0hB,WAC5E1hB,EAAOujB,kBAAkB0B,GAErBpN,EAAO+M,YACT5kB,EAAOghB,mBAEThhB,EAAO2iB,sBACe,UAAlB9K,EAAOqI,QACTlgB,EAAOmkB,aAAazC,GAEJ,UAAdiD,IACF3kB,EAAOykB,gBAAgBC,EAAcC,GACrC3kB,EAAO0S,cAAcgS,EAAcC,KAE9B,IAGK,IAAV1D,GAAgB,EAAQvQ,YAS1B1Q,EAAOohB,cAAcH,GACrBjhB,EAAOmkB,aAAazC,GACpB1hB,EAAOujB,kBAAkB0B,GACzBjlB,EAAO2iB,sBACP3iB,EAAO2C,KAAK,wBAAyBse,EAAO+D,GAC5ChlB,EAAOykB,gBAAgBC,EAAcC,GAChC3kB,EAAO8kB,YACV9kB,EAAO8kB,WAAY,EACd9kB,EAAOslB,gCACVtlB,EAAOslB,8BAAgC,SAAuBnU,GACvDnR,IAAUA,EAAOkH,WAClBiK,EAAEjO,SAAWpD,OACjBE,EAAOyc,WAAW,GAAGrQ,oBAAoB,gBAAiBpM,EAAOslB,+BACjEtlB,EAAOyc,WAAW,GAAGrQ,oBAAoB,sBAAuBpM,EAAOslB,+BACvEtlB,EAAOslB,8BAAgC,YAChCtlB,EAAOslB,8BACdtlB,EAAO0S,cAAcgS,EAAcC,MAGvC3kB,EAAOyc,WAAW,GAAG5V,iBAAiB,gBAAiB7G,EAAOslB,+BAC9DtlB,EAAOyc,WAAW,GAAG5V,iBAAiB,sBAAuB7G,EAAOslB,kCA5BtEtlB,EAAOohB,cAAc,GACrBphB,EAAOmkB,aAAazC,GACpB1hB,EAAOujB,kBAAkB0B,GACzBjlB,EAAO2iB,sBACP3iB,EAAO2C,KAAK,wBAAyBse,EAAO+D,GAC5ChlB,EAAOykB,gBAAgBC,EAAcC,GACrC3kB,EAAO0S,cAAcgS,EAAcC,KA0B9B,IAoIPY,YAjIF,SAAsB9Q,EAAQ,EAAGwM,EAAQnhB,KAAK+X,OAAOoJ,MAAOyD,GAAe,EAAMM,GAC/E,MAAMhlB,EAASF,KACf,IAAI0lB,EAAW/Q,EAKf,OAJIzU,EAAO6X,OAAO7P,OAChBwd,GAAYxlB,EAAOylB,cAGdzlB,EAAO+kB,QAAQS,EAAUvE,EAAOyD,EAAcM,IA2HrDU,UAvHF,SAAoBzE,EAAQnhB,KAAK+X,OAAOoJ,MAAOyD,GAAe,EAAMM,GAClE,MAAMhlB,EAASF,MACT,OAAE+X,EAAM,UAAEiN,GAAc9kB,EAC9B,OAAI6X,EAAO7P,MACL8c,IACJ9kB,EAAO2lB,UAEP3lB,EAAO4lB,YAAc5lB,EAAOyc,WAAW,GAAGhJ,WACnCzT,EAAO+kB,QAAQ/kB,EAAOqhB,YAAcxJ,EAAOmI,eAAgBiB,EAAOyD,EAAcM,IAElFhlB,EAAO+kB,QAAQ/kB,EAAOqhB,YAAcxJ,EAAOmI,eAAgBiB,EAAOyD,EAAcM,IA8GvFa,UA1GF,SAAoB5E,EAAQnhB,KAAK+X,OAAOoJ,MAAOyD,GAAe,EAAMM,GAClE,MAAMhlB,EAASF,MACT,OACJ+X,EAAM,UAAEiN,EAAS,SAAE3H,EAAQ,WAAEC,EAAU,aAAET,GACvC3c,EAEJ,GAAI6X,EAAO7P,KAAM,CACf,GAAI8c,EAAW,OAAO,EACtB9kB,EAAO2lB,UAEP3lB,EAAO4lB,YAAc5lB,EAAOyc,WAAW,GAAGhJ,WAG5C,SAASqS,EAAUC,GACjB,OAAIA,EAAM,GAAWxH,KAAKC,MAAMD,KAAKwB,IAAIgG,IAClCxH,KAAKC,MAAMuH,GAEpB,MAAMC,EAAsBF,EALVnJ,EAAe3c,EAAO0hB,WAAa1hB,EAAO0hB,WAMtDuE,EAAqB9I,EAASjG,IAAI6O,GAAOD,EAAUC,IAInDG,GAHuB9I,EAAWlG,IAAI6O,GAAOD,EAAUC,IAEzC5I,EAAS8I,EAAmBrf,QAAQof,IACvC7I,EAAS8I,EAAmBrf,QAAQof,GAAuB,IAC5E,IAAIG,EAKJ,YAJwB,IAAbD,IACTC,EAAY/I,EAAWxW,QAAQsf,IACf,IAAGC,EAAYnmB,EAAOqhB,YAAc,GAE/CrhB,EAAO+kB,QAAQoB,EAAWlF,EAAOyD,EAAcM,IA+EtDoB,WA3EF,SAAqBnF,EAAQnhB,KAAK+X,OAAOoJ,MAAOyD,GAAe,EAAMM,GAEnE,OADellB,KACDilB,QADCjlB,KACcuhB,YAAaJ,EAAOyD,EAAcM,IA0E/DqB,eAtEF,SAAyBpF,EAAQnhB,KAAK+X,OAAOoJ,MAAOyD,GAAe,EAAMM,GACvE,MAAMhlB,EAASF,KACf,IAAI2U,EAAQzU,EAAOqhB,YACnB,MAAMX,EAAYnC,KAAKC,MAAM/J,EAAQzU,EAAO6X,OAAOmI,gBAEnD,GAAIU,EAAY1gB,EAAOmd,SAAStb,OAAS,EAAG,CAC1C,MAAM6f,EAAY1hB,EAAO2c,aAAe3c,EAAO0hB,WAAa1hB,EAAO0hB,UAE7D4E,EAActmB,EAAOmd,SAASuD,GAG/BgB,EAAY4E,GAFAtmB,EAAOmd,SAASuD,EAAY,GAED4F,GAAe,IACzD7R,EAAQzU,EAAO6X,OAAOmI,gBAI1B,OAAOhgB,EAAO+kB,QAAQtQ,EAAOwM,EAAOyD,EAAcM,IAuDlDjB,oBApDF,WACE,MAAM/jB,EAASF,MACT,OAAE+X,EAAM,WAAE4E,GAAezc,EAEzB0e,EAAyC,SAAzB7G,EAAO6G,cAA2B1e,EAAOumB,uBAAyB1O,EAAO6G,cAC/F,IACIkE,EADA4D,EAAexmB,EAAO0D,aAE1B,GAAImU,EAAO7P,KAAM,CACf,GAAIhI,EAAO8kB,UAAW,OACtBlC,EAAYtG,SAASlO,EAAEpO,EAAO6D,cAAckM,KAAK,2BAA4B,IACzE8H,EAAOiI,eAEN0G,EAAexmB,EAAOylB,aAAgB/G,EAAgB,GACnD8H,EAAgBxmB,EAAOqD,OAAOxB,OAAS7B,EAAOylB,aAAiB/G,EAAgB,GAEnF1e,EAAO2lB,UACPa,EAAe/J,EACZ5P,aAAagL,EAAOvW,uCAAuCshB,YAAoB/K,EAAOuL,wBACtFxO,GAAG,GACHH,QAEH6B,EAAMG,SAAS,KACbzW,EAAO+kB,QAAQyB,MAGjBxmB,EAAO+kB,QAAQyB,GAERA,EAAexmB,EAAOqD,OAAOxB,OAAS6c,GAC/C1e,EAAO2lB,UACPa,EAAe/J,EACZ5P,aAAagL,EAAOvW,uCAAuCshB,YAAoB/K,EAAOuL,wBACtFxO,GAAG,GACHH,QAEH6B,EAAMG,SAAS,KACbzW,EAAO+kB,QAAQyB,MAGjBxmB,EAAO+kB,QAAQyB,QAGjBxmB,EAAO+kB,QAAQyB,KAkGnB,IAAIxe,EAAO,CACTM,WArFF,WACE,MAAMtI,EAASF,MACT,OAAE+X,EAAM,WAAE4E,GAAezc,EAE/Byc,EAAW5P,aAAagL,EAAOvW,cAAcuW,EAAOuL,uBAAuB1T,SAE3E,IAAIrM,EAASoZ,EAAW5P,aAAagL,EAAOvW,cAE5C,GAAIuW,EAAO4O,uBAAwB,CACjC,MAAMC,EAAiB7O,EAAOmI,eAAkB3c,EAAOxB,OAASgW,EAAOmI,eACvE,GAAI0G,IAAmB7O,EAAOmI,eAAgB,CAC5C,IAAK,IAAIte,EAAI,EAAGA,EAAIglB,EAAgBhlB,GAAK,EAAG,CAC1C,MAAMilB,EAAYvY,EAAEnC,EAASxB,cAAc,QAAQ4E,YAAYwI,EAAOvW,cAAcuW,EAAO+O,mBAC3FnK,EAAW3H,OAAO6R,GAEpBtjB,EAASoZ,EAAW5P,aAAagL,EAAOvW,eAIf,SAAzBuW,EAAO6G,eAA6B7G,EAAO4N,eAAc5N,EAAO4N,aAAepiB,EAAOxB,QAE1F7B,EAAOylB,aAAenJ,SAASzE,EAAO4N,cAAgB5N,EAAO6G,cAAe,IAC5E1e,EAAOylB,cAAgB5N,EAAOgP,qBAC1B7mB,EAAOylB,aAAepiB,EAAOxB,SAC/B7B,EAAOylB,aAAepiB,EAAOxB,QAG/B,MAAMilB,EAAgB,GAChBC,EAAe,GACrB1jB,EAAO6Q,KAAK,CAACO,EAAOrE,KAClB,MAAM2O,EAAQ3Q,EAAEgC,GACZqE,EAAQzU,EAAOylB,cAAcsB,EAAanY,KAAKwB,GAC/CqE,EAAQpR,EAAOxB,QAAU4S,GAASpR,EAAOxB,OAAS7B,EAAOylB,cAAcqB,EAAclY,KAAKwB,GAC9F2O,EAAMhP,KAAK,0BAA2B0E,KAExC,IAAK,IAAI/S,EAAI,EAAGA,EAAIqlB,EAAallB,OAAQH,GAAK,EAC5C+a,EAAW3H,OAAO1G,EAAE2Y,EAAarlB,GAAGslB,WAAU,IAAO3X,SAASwI,EAAOuL,sBAEvE,IAAK,IAAI1hB,EAAIolB,EAAcjlB,OAAS,EAAGH,GAAK,EAAGA,GAAK,EAClD+a,EAAWtH,QAAQ/G,EAAE0Y,EAAcplB,GAAGslB,WAAU,IAAO3X,SAASwI,EAAOuL,uBA+CzEuC,QA3CF,WACE,MAAM3lB,EAASF,MACT,OACJ+X,EAAM,YAAEwJ,EAAW,OAAEhe,EAAM,aAAEoiB,EAAY,eAAEJ,EAAc,eAAED,EAAc,SAAEjI,EAAUR,aAAcC,GACjG5c,EACJ,IAAIwlB,EACJxlB,EAAOqlB,gBAAiB,EACxBrlB,EAAOolB,gBAAiB,EAExB,MACM6B,GADiB9J,EAASkE,GACHrhB,EAAOgkB,eAIpC,GAAI3C,EAAcoE,EAAc,CAC9BD,EAAYniB,EAAOxB,OAAyB,EAAf4jB,EAAqBpE,EAClDmE,GAAYC,EACSzlB,EAAO+kB,QAAQS,EAAU,GAAG,GAAO,IAC3B,IAATyB,GAClBjnB,EAAOmkB,cAAcvH,GAAO5c,EAAO0hB,UAAY1hB,EAAO0hB,WAAauF,QAEhE,GAA8B,SAAzBpP,EAAO6G,eAA4B2C,GAA8B,EAAfoE,GAAsBpE,GAAehe,EAAOxB,OAAS4jB,EAAe,CAEhID,GAAYniB,EAAOxB,OAASwf,EAAcoE,EAC1CD,GAAYC,EACSzlB,EAAO+kB,QAAQS,EAAU,GAAG,GAAO,IAC3B,IAATyB,GAClBjnB,EAAOmkB,cAAcvH,GAAO5c,EAAO0hB,UAAY1hB,EAAO0hB,WAAauF,GAGvEjnB,EAAOqlB,eAAiBA,EACxBrlB,EAAOolB,eAAiBA,GAaxBnd,YAVF,WACE,MACM,WAAEwU,EAAU,OAAE5E,EAAM,OAAExU,GADbvD,KAEf2c,EAAW5P,aAAagL,EAAOvW,cAAcuW,EAAOuL,wBAAwBvL,EAAOvW,cAAcuW,EAAO+O,mBAAmBlX,SAC3HrM,EAAO6M,WAAW,6BAyBpB,IAAIgX,EAAa,CACfC,cAjBF,SAAwBC,GAEtB,GAAI,EAAQpO,QADGlZ,KACc+X,OAAOwP,eADrBvnB,KAC8C+X,OAAO8I,eADrD7gB,KAC6EwnB,SAAW,OACvG,MAAMlX,EAFStQ,KAEGsQ,GAClBA,EAAGrD,MAAMwa,OAAS,OAClBnX,EAAGrD,MAAMwa,OAASH,EAAS,mBAAqB,eAChDhX,EAAGrD,MAAMwa,OAASH,EAAS,eAAiB,YAC5ChX,EAAGrD,MAAMwa,OAASH,EAAS,WAAa,QAWxCI,gBARF,WAEM,EAAQxO,OADGlZ,KACc+X,OAAO8I,eADrB7gB,KAC6CwnB,WAD7CxnB,KAERsQ,GAAGrD,MAAMwa,OAAS,MA8J3B,IAAIE,EAAe,CACjBC,YAvJF,SAAsBrkB,GACpB,MAAMrD,EAASF,MACT,WAAE2c,EAAU,OAAE5E,GAAW7X,EAI/B,GAHI6X,EAAO7P,MACThI,EAAOiI,cAEa,iBAAX5E,GAAuB,WAAYA,EAC5C,IAAK,IAAI3B,EAAI,EAAGA,EAAI2B,EAAOxB,OAAQH,GAAK,EAClC2B,EAAO3B,IAAI+a,EAAW3H,OAAOzR,EAAO3B,SAG1C+a,EAAW3H,OAAOzR,GAEhBwU,EAAO7P,MACThI,EAAOsI,aAEHuP,EAAO+B,UAAY,EAAQA,UAC/B5Z,EAAOkI,UAuITyf,aAnIF,SAAuBtkB,GACrB,MAAMrD,EAASF,MACT,OAAE+X,EAAM,WAAE4E,EAAU,YAAE4E,GAAgBrhB,EAExC6X,EAAO7P,MACThI,EAAOiI,cAET,IAAIub,EAAiBnC,EAAc,EACnC,GAAsB,iBAAXhe,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAI3B,EAAI,EAAGA,EAAI2B,EAAOxB,OAAQH,GAAK,EAClC2B,EAAO3B,IAAI+a,EAAWtH,QAAQ9R,EAAO3B,IAE3C8hB,EAAiBnC,EAAche,EAAOxB,YAEtC4a,EAAWtH,QAAQ9R,GAEjBwU,EAAO7P,MACThI,EAAOsI,aAEHuP,EAAO+B,UAAY,EAAQA,UAC/B5Z,EAAOkI,SAETlI,EAAO+kB,QAAQvB,EAAgB,GAAG,IA8GlCoE,SA3GF,SAAmBnT,EAAOpR,GACxB,MAAMrD,EAASF,MACT,WAAE2c,EAAU,OAAE5E,EAAM,YAAEwJ,GAAgBrhB,EAC5C,IAAI6nB,EAAoBxG,EACpBxJ,EAAO7P,OACT6f,GAAqB7nB,EAAOylB,aAC5BzlB,EAAOiI,cACPjI,EAAOqD,OAASoZ,EAAW5P,aAAagL,EAAOvW,eAEjD,MAAMwmB,EAAa9nB,EAAOqD,OAAOxB,OACjC,GAAI4S,GAAS,EAEX,YADAzU,EAAO2nB,aAAatkB,GAGtB,GAAIoR,GAASqT,EAEX,YADA9nB,EAAO0nB,YAAYrkB,GAGrB,IAAImgB,EAAiBqE,EAAoBpT,EAAQoT,EAAoB,EAAIA,EAEzE,MAAME,EAAe,GACrB,IAAK,IAAIrmB,EAAIomB,EAAa,EAAGpmB,GAAK+S,EAAO/S,GAAK,EAAG,CAC/C,MAAMsmB,EAAehoB,EAAOqD,OAAOuR,GAAGlT,GACtCsmB,EAAatY,SACbqY,EAAazW,QAAQ0W,GAGvB,GAAsB,iBAAX3kB,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAI3B,EAAI,EAAGA,EAAI2B,EAAOxB,OAAQH,GAAK,EAClC2B,EAAO3B,IAAI+a,EAAW3H,OAAOzR,EAAO3B,IAE1C8hB,EAAiBqE,EAAoBpT,EAAQoT,EAAoBxkB,EAAOxB,OAASgmB,OAEjFpL,EAAW3H,OAAOzR,GAGpB,IAAK,IAAI3B,EAAI,EAAGA,EAAIqmB,EAAalmB,OAAQH,GAAK,EAC5C+a,EAAW3H,OAAOiT,EAAarmB,IAG7BmW,EAAO7P,MACThI,EAAOsI,aAEHuP,EAAO+B,UAAY,EAAQA,UAC/B5Z,EAAOkI,SAEL2P,EAAO7P,KACThI,EAAO+kB,QAAQvB,EAAiBxjB,EAAOylB,aAAc,GAAG,GAExDzlB,EAAO+kB,QAAQvB,EAAgB,GAAG,IA2DpCyE,YAvDF,SAAsBC,GACpB,MAAMloB,EAASF,MACT,OAAE+X,EAAM,WAAE4E,EAAU,YAAE4E,GAAgBrhB,EAE5C,IAAI6nB,EAAoBxG,EACpBxJ,EAAO7P,OACT6f,GAAqB7nB,EAAOylB,aAC5BzlB,EAAOiI,cACPjI,EAAOqD,OAASoZ,EAAW5P,aAAagL,EAAOvW,eAEjD,IACI6mB,EADA3E,EAAiBqE,EAGrB,GAA6B,iBAAlBK,GAA8B,WAAYA,EAAe,CAClE,IAAK,IAAIxmB,EAAI,EAAGA,EAAIwmB,EAAcrmB,OAAQH,GAAK,EAC7CymB,EAAgBD,EAAcxmB,GAC1B1B,EAAOqD,OAAO8kB,IAAgBnoB,EAAOqD,OAAOuR,GAAGuT,GAAezY,SAC9DyY,EAAgB3E,IAAgBA,GAAkB,GAExDA,EAAiBjF,KAAKK,IAAI4E,EAAgB,QAE1C2E,EAAgBD,EACZloB,EAAOqD,OAAO8kB,IAAgBnoB,EAAOqD,OAAOuR,GAAGuT,GAAezY,SAC9DyY,EAAgB3E,IAAgBA,GAAkB,GACtDA,EAAiBjF,KAAKK,IAAI4E,EAAgB,GAGxC3L,EAAO7P,MACThI,EAAOsI,aAGHuP,EAAO+B,UAAY,EAAQA,UAC/B5Z,EAAOkI,SAEL2P,EAAO7P,KACThI,EAAO+kB,QAAQvB,EAAiBxjB,EAAOylB,aAAc,GAAG,GAExDzlB,EAAO+kB,QAAQvB,EAAgB,GAAG,IAmBpC4E,gBAfF,WACE,MAAMpoB,EAASF,KAETooB,EAAgB,GACtB,IAAK,IAAIxmB,EAAI,EAAGA,EAAI1B,EAAOqD,OAAOxB,OAAQH,GAAK,EAC7CwmB,EAActZ,KAAKlN,GAErB1B,EAAOioB,YAAYC,KAWrB,MAAM,EAAU,WACd,MAAM9N,EAAKhN,EAAOE,UAAUC,UAEtB8a,EAAS,CACbC,KAAK,EACLC,SAAS,EACTC,eAAe,EACfC,SAAS,EACTC,SAAS,EACTC,QAAQ,EACRC,MAAM,EACNC,MAAM,EACNC,QAAS1b,EAAO0b,SAAW1b,EAAO2b,SAClCA,SAAU3b,EAAO0b,SAAW1b,EAAO2b,UAG/BL,EAAUtO,EAAGvL,MAAM,qCACnB0Z,EAAUnO,EAAGvL,MAAM,+BACnBga,EAAOzO,EAAGvL,MAAM,wBAChB+Z,EAAOxO,EAAGvL,MAAM,2BAChB8Z,GAAUE,GAAQzO,EAAGvL,MAAM,8BA+CjC,GA3CI6Z,IACFL,EAAOW,GAAK,UACZX,EAAOY,UAAYP,EAAQ,GAC3BL,EAAOK,SAAU,GAGfH,IAAYG,IACdL,EAAOW,GAAK,UACZX,EAAOY,UAAYV,EAAQ,GAC3BF,EAAOE,SAAU,EACjBF,EAAOG,cAAgBpO,EAAG5X,cAAcoE,QAAQ,WAAa,IAE3DiiB,GAAQF,GAAUC,KACpBP,EAAOW,GAAK,MACZX,EAAOC,KAAM,GAGXK,IAAWC,IACbP,EAAOY,UAAYN,EAAO,GAAGpmB,QAAQ,KAAM,KAC3C8lB,EAAOM,QAAS,GAEdE,IACFR,EAAOY,UAAYJ,EAAK,GAAGtmB,QAAQ,KAAM,KACzC8lB,EAAOQ,MAAO,GAEZD,IACFP,EAAOY,UAAYL,EAAK,GAAKA,EAAK,GAAGrmB,QAAQ,KAAM,KAAO,KAC1D8lB,EAAOM,QAAS,GAGdN,EAAOC,KAAOD,EAAOY,WAAa7O,EAAGxT,QAAQ,aAAe,GACvB,OAAnCyhB,EAAOY,UAAUna,MAAM,KAAK,KAC9BuZ,EAAOY,UAAY7O,EAAG5X,cAAcsM,MAAM,YAAY,GAAGA,MAAM,KAAK,IAKxEuZ,EAAOI,UAAYJ,EAAOW,IAAMX,EAAOE,SAAWF,EAAOa,SAGzDb,EAAOa,SAAWP,GAAUE,GAAQD,IAASxO,EAAGvL,MAAM,8BAGlDwZ,EAAOW,IAAoB,QAAdX,EAAOW,GAAc,CACpC,MAAMG,EAAed,EAAOY,UAAUna,MAAM,KACtCsa,EAAend,EAASO,cAAc,yBAC5C6b,EAAOgB,WAAahB,EAAOa,UACrBN,GAAQD,KACU,EAAlBQ,EAAa,IAAW,EAAsB,EAAlBA,EAAa,IAAU,EAAsB,EAAlBA,EAAa,GAAS,IAC9EC,GAAgBA,EAAapZ,aAAa,WAAWpJ,QAAQ,eAAiB,EAOrF,OAHAyhB,EAAOiB,WAAalc,EAAOmc,kBAAoB,EAGxClB,EAhFM,GAgnBf,SAASmB,IACP,MAAMxpB,EAASF,MAET,OAAE+X,EAAM,GAAEzH,GAAOpQ,EAEvB,GAAIoQ,GAAyB,IAAnBA,EAAG6C,YAAmB,OAG5B4E,EAAO4R,aACTzpB,EAAO0pB,gBAIT,MAAM,eAAEtE,EAAc,eAAEC,EAAc,SAAElI,GAAand,EASrD,GANAA,EAAOolB,gBAAiB,EACxBplB,EAAOqlB,gBAAiB,EAExBrlB,EAAO+b,aACP/b,EAAOwc,eAEH3E,EAAO8R,SAAU,CACnB,MAAMC,EAAerL,KAAKsL,IAAItL,KAAKK,IAAI5e,EAAO0hB,UAAW1hB,EAAOsiB,gBAAiBtiB,EAAOgiB,gBACxFhiB,EAAOmkB,aAAayF,GACpB5pB,EAAOujB,oBACPvjB,EAAO2iB,sBAEH9K,EAAO+M,YACT5kB,EAAOghB,wBAGThhB,EAAO2iB,uBACuB,SAAzB9K,EAAO6G,eAA4B7G,EAAO6G,cAAgB,IAAM1e,EAAOwiB,QAAUxiB,EAAO6X,OAAOiI,eAClG9f,EAAO+kB,QAAQ/kB,EAAOqD,OAAOxB,OAAS,EAAG,GAAG,GAAO,GAEnD7B,EAAO+kB,QAAQ/kB,EAAOqhB,YAAa,GAAG,GAAO,GAIjDrhB,EAAOqlB,eAAiBA,EACxBrlB,EAAOolB,eAAiBA,EAEpBplB,EAAO6X,OAAO8I,eAAiBxD,IAAand,EAAOmd,UACrDnd,EAAO4gB,gBAwTX,IAEIkJ,EAAW,CACbC,MAAM,EACNpF,UAAW,aACXqF,kBAAmB,YACnB7E,aAAc,EACdlE,MAAO,IAEPiE,gCAAgC,EAGhC+E,oBAAoB,EACpBC,mBAAoB,GAGpBP,UAAU,EACVQ,kBAAkB,EAClBC,sBAAuB,EACvBC,wBAAwB,EACxBC,4BAA6B,EAC7BC,8BAA+B,EAC/BC,gBAAgB,EAChBC,wBAAyB,IAGzB7F,YAAY,EAGZzE,gBAAgB,EAGhB8D,kBAAkB,EAGlB/D,OAAQ,QAGRuJ,iBAAankB,EACbolB,oBAAoB,EAGpB5M,aAAc,EACdY,cAAe,EACfJ,gBAAiB,EACjBK,oBAAqB,SACrBqB,eAAgB,EAChBF,gBAAgB,EAChBvC,mBAAoB,EACpBE,kBAAmB,EACnBmG,qBAAqB,EACrBvD,0BAA0B,EAG1BM,eAAe,EAGfpB,cAAc,EAGdoL,WAAY,EACZC,WAAY,GACZvD,eAAe,EACfwD,aAAa,EACbC,YAAY,EACZC,gBAAiB,GACjBC,aAAc,IACdC,cAAc,EACdC,gBAAgB,EAChBC,UAAW,EACXC,0BAA0B,EAC1BC,0BAA0B,EAC1BC,+BAA+B,EAC/BC,qBAAqB,EAGrBC,mBAAmB,EAGnBC,YAAY,EACZC,gBAAiB,IAGjB7K,qBAAqB,EACrBC,uBAAuB,EAGvBoG,YAAY,EAGZyE,eAAe,EACfC,0BAA0B,EAC1B7H,qBAAqB,EAGrB8H,eAAe,EACfC,qBAAqB,EAGrB9jB,MAAM,EACN6e,qBAAsB,EACtBpB,aAAc,KACdgB,wBAAwB,EAGxBpB,gBAAgB,EAChBD,gBAAgB,EAChB2G,aAAc,KACdC,WAAW,EACXC,eAAgB,oBAChBC,kBAAmB,KAGnBC,kBAAkB,EAGlBC,uBAAwB,oBACxB9qB,WAAY,eACZslB,gBAAiB,+BACjB9D,iBAAkB,sBAClBG,0BAA2B,gCAC3BrB,kBAAmB,uBACnBwB,oBAAqB,yBACrBL,eAAgB,oBAChBG,wBAAyB,8BACzBF,eAAgB,oBAChBG,wBAAyB,8BACzB9hB,aAAc,iBAGdgrB,oBAAoB,GAKtB,MAAMC,EAAa,CACjBpkB,SACAwZ,UAAS,EACThR,WAAU,EACVqO,MAAK,EACL/W,OACAkf,aACAO,eACA/V,OAnWW,CACX6a,aAtFF,WACE,MAAMvsB,EAASF,MACT,OACJ+X,EAAM,YAAE2U,EAAW,GAAEpc,EAAE,UAAEqc,GACvBzsB,EAGFA,EAAO0sB,aA/lBX,SAAuBhqB,GACrB,MAAM1C,EAASF,KACTsF,EAAOpF,EAAO2sB,iBACd,OAAE9U,EAAM,QAAE+U,GAAY5sB,EAC5B,GAAIA,EAAO8kB,WAAajN,EAAOqN,+BAC7B,OAEF,IAAI/T,EAAIzO,EAGR,GAFIyO,EAAE0b,gBAAe1b,EAAIA,EAAE0b,eAC3BznB,EAAK0nB,aAA0B,eAAX3b,EAAEhI,MACjB/D,EAAK0nB,cAAgB,UAAW3b,GAAiB,IAAZA,EAAE4b,MAAa,OACzD,IAAK3nB,EAAK0nB,cAAgB,WAAY3b,GAAKA,EAAE6b,OAAS,EAAG,OACzD,GAAI5nB,EAAK6nB,WAAa7nB,EAAK8nB,QAAS,OACpC,GAAIrV,EAAOmU,WAAa5d,EAAE+C,EAAEjO,QAAQ4S,QAAQ+B,EAAOqU,kBAAoBrU,EAAOqU,sBAAwBrU,EAAOoU,kBAAkB,GAE7H,YADAjsB,EAAOmtB,YAAa,GAGtB,GAAItV,EAAOkU,eACJ3d,EAAE+C,GAAG2E,QAAQ+B,EAAOkU,cAAc,GAAI,OAG7Ca,EAAQQ,SAAsB,eAAXjc,EAAEhI,KAAwBgI,EAAEkc,cAAc,GAAGC,MAAQnc,EAAEmc,MAC1EV,EAAQW,SAAsB,eAAXpc,EAAEhI,KAAwBgI,EAAEkc,cAAc,GAAGG,MAAQrc,EAAEqc,MAC1E,MAAMC,EAASb,EAAQQ,SACjBM,EAASd,EAAQW,SAIjBtD,EAAqBpS,EAAOoS,oBAAsBpS,EAAO8V,sBACzDzD,EAAqBrS,EAAOqS,oBAAsBrS,EAAO+V,sBAC/D,IACE3D,KACKwD,GAAUvD,GACXuD,GAAUrgB,EAAOU,OAAOkO,MAAQkO,GAHtC,CAuBA,GAfA5T,EAAMvN,OAAO3D,EAAM,CACjB6nB,WAAW,EACXC,SAAS,EACTW,qBAAqB,EACrBC,iBAAaxoB,EACbyoB,iBAAazoB,IAGfsnB,EAAQa,OAASA,EACjBb,EAAQc,OAASA,EACjBtoB,EAAK4oB,eAAiB1X,EAAMK,MAC5B3W,EAAOmtB,YAAa,EACpBntB,EAAO+b,aACP/b,EAAOiuB,oBAAiB3oB,EACpBuS,EAAOsT,UAAY,IAAG/lB,EAAK8oB,oBAAqB,GACrC,eAAX/c,EAAEhI,KAAuB,CAC3B,IAAIglB,GAAiB,EACjB/f,EAAE+C,EAAEjO,QAAQqO,GAAGnM,EAAKgpB,gBAAeD,GAAiB,GAEtDliB,EAASI,eACN+B,EAAEnC,EAASI,eAAekF,GAAGnM,EAAKgpB,eAClCniB,EAASI,gBAAkB8E,EAAEjO,QAEhC+I,EAASI,cAAcC,OAGzB,MAAM+hB,EAAuBF,GAAkBnuB,EAAOkrB,gBAAkBrT,EAAOwT,0BAC3ExT,EAAOyT,+BAAiC+C,IAC1Cld,EAAEgd,iBAGNnuB,EAAO2C,KAAK,aAAcwO,KA0hBWzK,KAAK1G,GACxCA,EAAOsuB,YAxhBX,SAAsB5rB,GACpB,MAAM1C,EAASF,KACTsF,EAAOpF,EAAO2sB,iBACd,OAAE9U,EAAM,QAAE+U,EAASjQ,aAAcC,GAAQ5c,EAC/C,IAAImR,EAAIzO,EAER,GADIyO,EAAE0b,gBAAe1b,EAAIA,EAAE0b,gBACtBznB,EAAK6nB,UAIR,YAHI7nB,EAAK2oB,aAAe3oB,EAAK0oB,aAC3B9tB,EAAO2C,KAAK,oBAAqBwO,IAIrC,GAAI/L,EAAK0nB,cAA2B,cAAX3b,EAAEhI,KAAsB,OACjD,MAAMmkB,EAAmB,cAAXnc,EAAEhI,KAAuBgI,EAAEkc,cAAc,GAAGC,MAAQnc,EAAEmc,MAC9DE,EAAmB,cAAXrc,EAAEhI,KAAuBgI,EAAEkc,cAAc,GAAGG,MAAQrc,EAAEqc,MACpE,GAAIrc,EAAEod,wBAGJ,OAFA3B,EAAQa,OAASH,OACjBV,EAAQc,OAASF,GAGnB,IAAKxtB,EAAOkrB,eAYV,OAVAlrB,EAAOmtB,YAAa,OAChB/nB,EAAK6nB,YACP3W,EAAMvN,OAAO6jB,EAAS,CACpBa,OAAQH,EACRI,OAAQF,EACRJ,SAAUE,EACVC,SAAUC,IAEZpoB,EAAK4oB,eAAiB1X,EAAMK,QAIhC,GAAIvR,EAAK0nB,cAAgBjV,EAAO0T,sBAAwB1T,EAAO7P,KAC7D,GAAIhI,EAAOqc,cAET,GACGmR,EAAQZ,EAAQc,QAAU1tB,EAAO0hB,WAAa1hB,EAAOsiB,gBAClDkL,EAAQZ,EAAQc,QAAU1tB,EAAO0hB,WAAa1hB,EAAOgiB,eAIzD,OAFA5c,EAAK6nB,WAAY,OACjB7nB,EAAK8nB,SAAU,QAGZ,GACJI,EAAQV,EAAQa,QAAUztB,EAAO0hB,WAAa1hB,EAAOsiB,gBAClDgL,EAAQV,EAAQa,QAAUztB,EAAO0hB,WAAa1hB,EAAOgiB,eAEzD,OAGJ,GAAI5c,EAAK0nB,cAAgB7gB,EAASI,eAC5B8E,EAAEjO,SAAW+I,EAASI,eAAiB+B,EAAE+C,EAAEjO,QAAQqO,GAAGnM,EAAKgpB,cAG7D,OAFAhpB,EAAK8nB,SAAU,OACfltB,EAAOmtB,YAAa,GAOxB,GAHI/nB,EAAKyoB,qBACP7tB,EAAO2C,KAAK,YAAawO,GAEvBA,EAAEkc,eAAiBlc,EAAEkc,cAAcxrB,OAAS,EAAG,OAEnD+qB,EAAQQ,SAAWE,EACnBV,EAAQW,SAAWC,EAEnB,MAAMgB,EAAQ5B,EAAQQ,SAAWR,EAAQa,OACnCgB,EAAQ7B,EAAQW,SAAWX,EAAQc,OACzC,GAAI1tB,EAAO6X,OAAOsT,WAAa5M,KAAKmQ,KAAMF,GAAS,EAAMC,GAAS,GAAMzuB,EAAO6X,OAAOsT,UAAW,OAEjG,QAAgC,IAArB/lB,EAAK0oB,YAA6B,CAC3C,IAAIlD,EACC5qB,EAAOoc,gBAAkBwQ,EAAQW,WAAaX,EAAQc,QAAY1tB,EAAOqc,cAAgBuQ,EAAQQ,WAAaR,EAAQa,OACzHroB,EAAK0oB,aAAc,EAGdU,EAAQA,EAAUC,EAAQA,GAAU,KACvC7D,EAA6D,IAA/CrM,KAAKoQ,MAAMpQ,KAAKwB,IAAI0O,GAAQlQ,KAAKwB,IAAIyO,IAAiBjQ,KAAKqQ,GACzExpB,EAAK0oB,YAAc9tB,EAAOoc,eAAiBwO,EAAa/S,EAAO+S,WAAc,GAAKA,EAAa/S,EAAO+S,YAY5G,GARIxlB,EAAK0oB,aACP9tB,EAAO2C,KAAK,oBAAqBwO,QAEH,IAArB/L,EAAK2oB,cACVnB,EAAQQ,WAAaR,EAAQa,QAAUb,EAAQW,WAAaX,EAAQc,SACtEtoB,EAAK2oB,aAAc,IAGnB3oB,EAAK0oB,YAEP,YADA1oB,EAAK6nB,WAAY,GAGnB,IAAK7nB,EAAK2oB,YACR,OAEF/tB,EAAOmtB,YAAa,EACpBhc,EAAEgd,iBACEtW,EAAOuT,2BAA6BvT,EAAOgX,QAC7C1d,EAAE2d,kBAGC1pB,EAAK8nB,UACJrV,EAAO7P,MACThI,EAAO2lB,UAETvgB,EAAK2pB,eAAiB/uB,EAAOgkB,eAC7BhkB,EAAOohB,cAAc,GACjBphB,EAAO8kB,WACT9kB,EAAOyc,WAAWvK,QAAQ,qCAE5B9M,EAAK4pB,qBAAsB,GAEvBnX,EAAOqP,aAAyC,IAA1BlnB,EAAOolB,iBAAqD,IAA1BplB,EAAOqlB,gBACjErlB,EAAOmnB,eAAc,GAEvBnnB,EAAO2C,KAAK,kBAAmBwO,IAEjCnR,EAAO2C,KAAK,aAAcwO,GAC1B/L,EAAK8nB,SAAU,EAEf,IAAIjG,EAAOjnB,EAAOoc,eAAiBoS,EAAQC,EAC3C7B,EAAQ3F,KAAOA,EAEfA,GAAQpP,EAAO8S,WACX/N,IAAKqK,GAAQA,GAEjBjnB,EAAOiuB,eAAiBhH,EAAO,EAAI,OAAS,OAC5C7hB,EAAK8e,iBAAmB+C,EAAO7hB,EAAK2pB,eAEpC,IAAIE,GAAsB,EACtBvD,EAAkB7T,EAAO6T,gBA0B7B,GAzBI7T,EAAO0T,sBACTG,EAAkB,GAEfzE,EAAO,GAAK7hB,EAAK8e,iBAAmBlkB,EAAOgiB,gBAC9CiN,GAAsB,EAClBpX,EAAO4T,aAAYrmB,EAAK8e,iBAAoBlkB,EAAOgiB,eAAiB,IAAQhiB,EAAOgiB,eAAiB5c,EAAK2pB,eAAiB9H,IAASyE,IAC9HzE,EAAO,GAAK7hB,EAAK8e,iBAAmBlkB,EAAOsiB,iBACpD2M,GAAsB,EAClBpX,EAAO4T,aAAYrmB,EAAK8e,iBAAoBlkB,EAAOsiB,eAAiB,GAAOtiB,EAAOsiB,eAAiBld,EAAK2pB,eAAiB9H,IAASyE,IAGpIuD,IACF9d,EAAEod,yBAA0B,IAIzBvuB,EAAOolB,gBAA4C,SAA1BplB,EAAOiuB,gBAA6B7oB,EAAK8e,iBAAmB9e,EAAK2pB,iBAC7F3pB,EAAK8e,iBAAmB9e,EAAK2pB,iBAE1B/uB,EAAOqlB,gBAA4C,SAA1BrlB,EAAOiuB,gBAA6B7oB,EAAK8e,iBAAmB9e,EAAK2pB,iBAC7F3pB,EAAK8e,iBAAmB9e,EAAK2pB,gBAK3BlX,EAAOsT,UAAY,EAAG,CACxB,KAAI5M,KAAKwB,IAAIkH,GAAQpP,EAAOsT,WAAa/lB,EAAK8oB,oBAW5C,YADA9oB,EAAK8e,iBAAmB9e,EAAK2pB,gBAT7B,IAAK3pB,EAAK8oB,mBAMR,OALA9oB,EAAK8oB,oBAAqB,EAC1BtB,EAAQa,OAASb,EAAQQ,SACzBR,EAAQc,OAASd,EAAQW,SACzBnoB,EAAK8e,iBAAmB9e,EAAK2pB,oBAC7BnC,EAAQ3F,KAAOjnB,EAAOoc,eAAiBwQ,EAAQQ,SAAWR,EAAQa,OAASb,EAAQW,SAAWX,EAAQc,QASvG7V,EAAOoT,gBAGRpT,EAAO8R,UAAY9R,EAAOgJ,qBAAuBhJ,EAAOiJ,yBAC1D9gB,EAAOujB,oBACPvjB,EAAO2iB,uBAEL9K,EAAO8R,WAEsB,IAA3BvkB,EAAK8pB,WAAWrtB,QAClBuD,EAAK8pB,WAAWtgB,KAAK,CACnBugB,SAAUvC,EAAQ5sB,EAAOoc,eAAiB,SAAW,UACrDgT,KAAMhqB,EAAK4oB,iBAGf5oB,EAAK8pB,WAAWtgB,KAAK,CACnBugB,SAAUvC,EAAQ5sB,EAAOoc,eAAiB,WAAa,YACvDgT,KAAM9Y,EAAMK,SAIhB3W,EAAOoiB,eAAehd,EAAK8e,kBAE3BlkB,EAAOmkB,aAAa/e,EAAK8e,oBAkVUxd,KAAK1G,GACtCA,EAAOqvB,WAhVX,SAAqB3sB,GACnB,MAAM1C,EAASF,KACTsF,EAAOpF,EAAO2sB,iBAEd,OACJ9U,EAAM,QAAE+U,EAASjQ,aAAcC,EAAG,WAAEH,EAAU,WAAEW,EAAU,SAAED,GAC1Dnd,EACJ,IAAImR,EAAIzO,EAMR,GALIyO,EAAE0b,gBAAe1b,EAAIA,EAAE0b,eACvBznB,EAAKyoB,qBACP7tB,EAAO2C,KAAK,WAAYwO,GAE1B/L,EAAKyoB,qBAAsB,GACtBzoB,EAAK6nB,UAMR,OALI7nB,EAAK8nB,SAAWrV,EAAOqP,YACzBlnB,EAAOmnB,eAAc,GAEvB/hB,EAAK8nB,SAAU,OACf9nB,EAAK2oB,aAAc,GAIjBlW,EAAOqP,YAAc9hB,EAAK8nB,SAAW9nB,EAAK6nB,aAAwC,IAA1BjtB,EAAOolB,iBAAqD,IAA1BplB,EAAOqlB,iBACnGrlB,EAAOmnB,eAAc,GAIvB,MAAMmI,EAAehZ,EAAMK,MACrB4Y,EAAWD,EAAelqB,EAAK4oB,eAwBrC,GArBIhuB,EAAOmtB,aACTntB,EAAO6jB,mBAAmB1S,GAC1BnR,EAAO2C,KAAK,MAAOwO,GACfoe,EAAW,KAAQD,EAAelqB,EAAKoqB,cAAiB,MACtDpqB,EAAKqqB,cAAczhB,aAAa5I,EAAKqqB,cACzCrqB,EAAKqqB,aAAenZ,EAAMG,SAAS,KAC5BzW,IAAUA,EAAOkH,WACtBlH,EAAO2C,KAAK,QAASwO,IACpB,MAEDoe,EAAW,KAAQD,EAAelqB,EAAKoqB,cAAiB,MACtDpqB,EAAKqqB,cAAczhB,aAAa5I,EAAKqqB,cACzCzvB,EAAO2C,KAAK,YAAawO,KAI7B/L,EAAKoqB,cAAgBlZ,EAAMK,MAC3BL,EAAMG,SAAS,KACRzW,EAAOkH,YAAWlH,EAAOmtB,YAAa,MAGxC/nB,EAAK6nB,YAAc7nB,EAAK8nB,UAAYltB,EAAOiuB,gBAAmC,IAAjBrB,EAAQ3F,MAAc7hB,EAAK8e,mBAAqB9e,EAAK2pB,eAIrH,OAHA3pB,EAAK6nB,WAAY,EACjB7nB,EAAK8nB,SAAU,OACf9nB,EAAK2oB,aAAc,GAOrB,IAAI2B,EAOJ,GAXAtqB,EAAK6nB,WAAY,EACjB7nB,EAAK8nB,SAAU,EACf9nB,EAAK2oB,aAAc,EAIjB2B,EADE7X,EAAOoT,aACIrO,EAAM5c,EAAO0hB,WAAa1hB,EAAO0hB,WAEhCtc,EAAK8e,iBAGjBrM,EAAO8R,SAAU,CACnB,GAAI+F,GAAc1vB,EAAOgiB,eAEvB,YADAhiB,EAAO+kB,QAAQ/kB,EAAOqhB,aAGxB,GAAIqO,GAAc1vB,EAAOsiB,eAMvB,YALItiB,EAAOqD,OAAOxB,OAASsb,EAAStb,OAClC7B,EAAO+kB,QAAQ5H,EAAStb,OAAS,GAEjC7B,EAAO+kB,QAAQ/kB,EAAOqD,OAAOxB,OAAS,IAK1C,GAAIgW,EAAOsS,iBAAkB,CAC3B,GAAI/kB,EAAK8pB,WAAWrtB,OAAS,EAAG,CAC9B,MAAM8tB,EAAgBvqB,EAAK8pB,WAAWU,MAChCC,EAAgBzqB,EAAK8pB,WAAWU,MAEhCE,EAAWH,EAAcR,SAAWU,EAAcV,SAClDC,EAAOO,EAAcP,KAAOS,EAAcT,KAChDpvB,EAAO+vB,SAAWD,EAAWV,EAC7BpvB,EAAO+vB,UAAY,EACfxR,KAAKwB,IAAI/f,EAAO+vB,UAAYlY,EAAO4S,0BACrCzqB,EAAO+vB,SAAW,IAIhBX,EAAO,KAAQ9Y,EAAMK,MAAQgZ,EAAcP,KAAQ,OACrDpvB,EAAO+vB,SAAW,QAGpB/vB,EAAO+vB,SAAW,EAEpB/vB,EAAO+vB,UAAYlY,EAAO0S,8BAE1BnlB,EAAK8pB,WAAWrtB,OAAS,EACzB,IAAImuB,EAAmB,IAAOnY,EAAOuS,sBACrC,MAAM6F,EAAmBjwB,EAAO+vB,SAAWC,EAE3C,IAAIE,EAAclwB,EAAO0hB,UAAYuO,EACjCrT,IAAKsT,GAAeA,GAExB,IACIC,EADAC,GAAW,EAEf,MAAMC,EAA2C,GAA5B9R,KAAKwB,IAAI/f,EAAO+vB,UAAiBlY,EAAOyS,4BAC7D,IAAIgG,EACJ,GAAIJ,EAAclwB,EAAOsiB,eACnBzK,EAAOwS,wBACL6F,EAAclwB,EAAOsiB,gBAAkB+N,IACzCH,EAAclwB,EAAOsiB,eAAiB+N,GAExCF,EAAsBnwB,EAAOsiB,eAC7B8N,GAAW,EACXhrB,EAAK4pB,qBAAsB,GAE3BkB,EAAclwB,EAAOsiB,eAEnBzK,EAAO7P,MAAQ6P,EAAOiI,iBAAgBwQ,GAAe,QACpD,GAAIJ,EAAclwB,EAAOgiB,eAC1BnK,EAAOwS,wBACL6F,EAAclwB,EAAOgiB,eAAiBqO,IACxCH,EAAclwB,EAAOgiB,eAAiBqO,GAExCF,EAAsBnwB,EAAOgiB,eAC7BoO,GAAW,EACXhrB,EAAK4pB,qBAAsB,GAE3BkB,EAAclwB,EAAOgiB,eAEnBnK,EAAO7P,MAAQ6P,EAAOiI,iBAAgBwQ,GAAe,QACpD,GAAIzY,EAAO2S,eAAgB,CAChC,IAAInH,EACJ,IAAK,IAAInhB,EAAI,EAAGA,EAAIib,EAAStb,OAAQK,GAAK,EACxC,GAAIib,EAASjb,IAAMguB,EAAa,CAC9B7M,EAAYnhB,EACZ,MASJguB,IAJEA,EADE3R,KAAKwB,IAAI5C,EAASkG,GAAa6M,GAAe3R,KAAKwB,IAAI5C,EAASkG,EAAY,GAAK6M,IAA0C,SAA1BlwB,EAAOiuB,eAC5F9Q,EAASkG,GAETlG,EAASkG,EAAY,IAUvC,GANIiN,GACFtwB,EAAOuwB,KAAK,gBAAiB,KAC3BvwB,EAAO2lB,YAIa,IAApB3lB,EAAO+vB,SAEPC,EADEpT,EACiB2B,KAAKwB,MAAMmQ,EAAclwB,EAAO0hB,WAAa1hB,EAAO+vB,UAEpDxR,KAAKwB,KAAKmQ,EAAclwB,EAAO0hB,WAAa1hB,EAAO+vB,eAEnE,GAAIlY,EAAO2S,eAEhB,YADAxqB,EAAOqmB,iBAILxO,EAAOwS,wBAA0B+F,GACnCpwB,EAAOoiB,eAAe+N,GACtBnwB,EAAOohB,cAAc4O,GACrBhwB,EAAOmkB,aAAa+L,GACpBlwB,EAAOykB,iBAAgB,EAAMzkB,EAAOiuB,gBACpCjuB,EAAO8kB,WAAY,EACnBrI,EAAW/J,cAAc,KAClB1S,IAAUA,EAAOkH,WAAc9B,EAAK4pB,sBACzChvB,EAAO2C,KAAK,kBAEZ3C,EAAOohB,cAAcvJ,EAAOoJ,OAC5BjhB,EAAOmkB,aAAagM,GACpB1T,EAAW/J,cAAc,KAClB1S,IAAUA,EAAOkH,WACtBlH,EAAO0S,sBAGF1S,EAAO+vB,UAChB/vB,EAAOoiB,eAAe8N,GACtBlwB,EAAOohB,cAAc4O,GACrBhwB,EAAOmkB,aAAa+L,GACpBlwB,EAAOykB,iBAAgB,EAAMzkB,EAAOiuB,gBAC/BjuB,EAAO8kB,YACV9kB,EAAO8kB,WAAY,EACnBrI,EAAW/J,cAAc,KAClB1S,IAAUA,EAAOkH,WACtBlH,EAAO0S,oBAIX1S,EAAOoiB,eAAe8N,GAGxBlwB,EAAOujB,oBACPvjB,EAAO2iB,2BACF,GAAI9K,EAAO2S,eAEhB,YADAxqB,EAAOqmB,iBAST,cALKxO,EAAOsS,kBAAoBoF,GAAY1X,EAAOmT,gBACjDhrB,EAAOoiB,iBACPpiB,EAAOujB,oBACPvjB,EAAO2iB,wBAMX,IAAI6N,EAAY,EACZC,EAAYzwB,EAAOqd,gBAAgB,GACvC,IAAK,IAAI3b,EAAI,EAAGA,EAAI0b,EAAWvb,OAAQH,GAAKmW,EAAOmI,oBACI,IAA1C5C,EAAW1b,EAAImW,EAAOmI,gBAC3B0P,GAActS,EAAW1b,IAAMguB,EAAatS,EAAW1b,EAAImW,EAAOmI,kBACpEwQ,EAAY9uB,EACZ+uB,EAAYrT,EAAW1b,EAAImW,EAAOmI,gBAAkB5C,EAAW1b,IAExDguB,GAActS,EAAW1b,KAClC8uB,EAAY9uB,EACZ+uB,EAAYrT,EAAWA,EAAWvb,OAAS,GAAKub,EAAWA,EAAWvb,OAAS,IAKnF,MAAM6uB,GAAShB,EAAatS,EAAWoT,IAAcC,EAErD,GAAIlB,EAAW1X,EAAOmT,aAAc,CAElC,IAAKnT,EAAOiT,WAEV,YADA9qB,EAAO+kB,QAAQ/kB,EAAOqhB,aAGM,SAA1BrhB,EAAOiuB,iBACLyC,GAAS7Y,EAAOkT,gBAAiB/qB,EAAO+kB,QAAQyL,EAAY3Y,EAAOmI,gBAClEhgB,EAAO+kB,QAAQyL,IAEQ,SAA1BxwB,EAAOiuB,iBACLyC,EAAS,EAAI7Y,EAAOkT,gBAAkB/qB,EAAO+kB,QAAQyL,EAAY3Y,EAAOmI,gBACvEhgB,EAAO+kB,QAAQyL,QAEjB,CAEL,IAAK3Y,EAAOgT,YAEV,YADA7qB,EAAO+kB,QAAQ/kB,EAAOqhB,aAGM,SAA1BrhB,EAAOiuB,gBACTjuB,EAAO+kB,QAAQyL,EAAY3Y,EAAOmI,gBAEN,SAA1BhgB,EAAOiuB,gBACTjuB,EAAO+kB,QAAQyL,KAyEc9pB,KAAK1G,GAGtCA,EAAO2wB,QAvBT,SAAkBxf,GAChB,MAAMnR,EAASF,KACVE,EAAOmtB,aACNntB,EAAO6X,OAAO8T,eAAexa,EAAEgd,iBAC/BnuB,EAAO6X,OAAO+T,0BAA4B5rB,EAAO8kB,YACnD3T,EAAE2d,kBACF3d,EAAEyf,8BAiBmBlqB,KAAK1G,GAE9B,MAAMkD,EAAsC,cAA7B2U,EAAOmS,kBAAoC5Z,EAAKqc,EACzDxb,IAAY4G,EAAOgX,OAIvB,GAAK,EAAQ7V,QAAU,EAAQI,gBAAiB,EAAQG,sBAIjD,CACL,GAAI,EAAQP,MAAO,CACjB,MAAMa,IAAwC,eAAtB2S,EAAYqE,QAA0B,EAAQhX,kBAAmBhC,EAAOsU,mBAAmB,CAAE2E,SAAS,EAAM7f,SAAS,GAC7I/N,EAAO2D,iBAAiB2lB,EAAYqE,MAAO7wB,EAAO0sB,aAAc7S,GAChE3W,EAAO2D,iBAAiB2lB,EAAYuE,KAAM/wB,EAAOsuB,YAAa,EAAQzU,gBAAkB,CAAEiX,SAAS,EAAO7f,WAAYA,GACtH/N,EAAO2D,iBAAiB2lB,EAAYwE,IAAKhxB,EAAOqvB,WAAYxV,IAEzDhC,EAAOwP,gBAAkB,EAAOiB,MAAQ,EAAOC,SAAa1Q,EAAOwP,gBAAkB,EAAQrO,OAAS,EAAOsP,OAChHplB,EAAO2D,iBAAiB,YAAa7G,EAAO0sB,cAAc,GAC1DzgB,EAASpF,iBAAiB,YAAa7G,EAAOsuB,YAAard,GAC3DhF,EAASpF,iBAAiB,UAAW7G,EAAOqvB,YAAY,SAb1DnsB,EAAO2D,iBAAiB2lB,EAAYqE,MAAO7wB,EAAO0sB,cAAc,GAChEzgB,EAASpF,iBAAiB2lB,EAAYuE,KAAM/wB,EAAOsuB,YAAard,GAChEhF,EAASpF,iBAAiB2lB,EAAYwE,IAAKhxB,EAAOqvB,YAAY,IAe5DxX,EAAO8T,eAAiB9T,EAAO+T,2BACjC1oB,EAAO2D,iBAAiB,QAAS7G,EAAO2wB,SAAS,GAKrD3wB,EAAOsE,GAAI,EAAOgkB,KAAO,EAAOC,QAAU,0CAA4C,wBAA0BiB,GAAU,IA4C1HyH,aAzCF,WACE,MAAMjxB,EAASF,MAET,OACJ+X,EAAM,YAAE2U,EAAW,GAAEpc,EAAE,UAAEqc,GACvBzsB,EAEEkD,EAAsC,cAA7B2U,EAAOmS,kBAAoC5Z,EAAKqc,EACzDxb,IAAY4G,EAAOgX,OAIvB,GAAK,EAAQ7V,QAAU,EAAQI,gBAAiB,EAAQG,sBAIjD,CACL,GAAI,EAAQP,MAAO,CACjB,MAAMa,IAAwC,iBAAtB2S,EAAYqE,QAA4B,EAAQhX,kBAAmBhC,EAAOsU,mBAAmB,CAAE2E,SAAS,EAAM7f,SAAS,GAC/I/N,EAAOkJ,oBAAoBogB,EAAYqE,MAAO7wB,EAAO0sB,aAAc7S,GACnE3W,EAAOkJ,oBAAoBogB,EAAYuE,KAAM/wB,EAAOsuB,YAAard,GACjE/N,EAAOkJ,oBAAoBogB,EAAYwE,IAAKhxB,EAAOqvB,WAAYxV,IAE5DhC,EAAOwP,gBAAkB,EAAOiB,MAAQ,EAAOC,SAAa1Q,EAAOwP,gBAAkB,EAAQrO,OAAS,EAAOsP,OAChHplB,EAAOkJ,oBAAoB,YAAapM,EAAO0sB,cAAc,GAC7DzgB,EAASG,oBAAoB,YAAapM,EAAOsuB,YAAard,GAC9DhF,EAASG,oBAAoB,UAAWpM,EAAOqvB,YAAY,SAb7DnsB,EAAOkJ,oBAAoBogB,EAAYqE,MAAO7wB,EAAO0sB,cAAc,GACnEzgB,EAASG,oBAAoBogB,EAAYuE,KAAM/wB,EAAOsuB,YAAard,GACnEhF,EAASG,oBAAoBogB,EAAYwE,IAAKhxB,EAAOqvB,YAAY,IAe/DxX,EAAO8T,eAAiB9T,EAAO+T,2BACjC1oB,EAAOkJ,oBAAoB,QAASpM,EAAO2wB,SAAS,GAKxD3wB,EAAO8R,IAAK,EAAOwW,KAAO,EAAOC,QAAU,0CAA4C,wBAA0BiB,KAuWjHC,YAhRgB,CAAEC,cA/EpB,WACE,MAAM1pB,EAASF,MACT,YACJuhB,EAAW,YAAE3Y,EAAW,aAAE+c,EAAe,EAAC,OAAE5N,GAC1C7X,EACEypB,EAAc5R,EAAO4R,YAC3B,IAAKA,GAAgBA,GAAmD,IAApC7oB,OAAOwV,KAAKqT,GAAa5nB,OAAe,OAG5E,MAAMqvB,EAAalxB,EAAOmxB,cAAc1H,GAExC,GAAIyH,GAAclxB,EAAOoxB,oBAAsBF,EAAY,CACzD,MAAMG,EAAuBH,KAAczH,EAAcA,EAAYyH,QAAc5rB,EAC/E+rB,GACF,CAAC,gBAAiB,eAAgB,kBAAkBjtB,QAAS0T,IAC3D,MAAMwZ,EAAaD,EAAqBvZ,QACd,IAAfwZ,IAITD,EAAqBvZ,GAHT,kBAAVA,GAA6C,SAAfwZ,GAAwC,SAAfA,EAEtC,kBAAVxZ,EACqB5E,WAAWoe,GAEXhV,SAASgV,EAAY,IAJrB,UASpC,MAAMC,EAAmBF,GAAwBrxB,EAAOwxB,eAClDC,EAAmBF,EAAiB5M,WAAa4M,EAAiB5M,YAAc9M,EAAO8M,UACvF+M,EAAc7Z,EAAO7P,OAASupB,EAAiB7S,gBAAkB7G,EAAO6G,eAAiB+S,GAE3FA,GAAoB/oB,GACtB1I,EAAO2xB,kBAGTrb,EAAMvN,OAAO/I,EAAO6X,OAAQ0Z,GAE5Bjb,EAAMvN,OAAO/I,EAAQ,CACnBkrB,eAAgBlrB,EAAO6X,OAAOqT,eAC9B9F,eAAgBplB,EAAO6X,OAAOuN,eAC9BC,eAAgBrlB,EAAO6X,OAAOwN,iBAGhCrlB,EAAOoxB,kBAAoBF,EAEvBQ,GAAehpB,IACjB1I,EAAOiI,cACPjI,EAAOsI,aACPtI,EAAOwc,eACPxc,EAAO+kB,QAAS1D,EAAcoE,EAAgBzlB,EAAOylB,aAAc,GAAG,IAGxEzlB,EAAO2C,KAAK,aAAc4uB,KA2BKJ,cAvBnC,SAAwB1H,GACtB,MAAMzpB,EAASF,KAEf,IAAK2pB,EAAa,OAClB,IAAIyH,GAAa,EACjB,MAAMU,EAAS,GACfhxB,OAAOwV,KAAKqT,GAAarlB,QAASytB,IAChCD,EAAOhjB,KAAKijB,KAEdD,EAAOE,KAAK,CAAC7vB,EAAG8vB,IAAMzV,SAASra,EAAG,IAAMqa,SAASyV,EAAG,KACpD,IAAK,IAAIrwB,EAAI,EAAGA,EAAIkwB,EAAO/vB,OAAQH,GAAK,EAAG,CACzC,MAAMmwB,EAAQD,EAAOlwB,GACjB1B,EAAO6X,OAAO6S,mBACZmH,GAASzkB,EAAO4kB,aAClBd,EAAaW,GAENA,GAASzkB,EAAO4kB,aAAed,IACxCA,EAAaW,GAGjB,OAAOX,GAAc,QAoRrBtQ,cAjJoB,CAAEA,cAjBxB,WACE,MAAM5gB,EAASF,KACTmyB,EAAYjyB,EAAOsnB,SAEzBtnB,EAAOsnB,SAAsC,IAA3BtnB,EAAOmd,SAAStb,OAClC7B,EAAOolB,gBAAkBplB,EAAOsnB,SAChCtnB,EAAOqlB,gBAAkBrlB,EAAOsnB,SAG5B2K,IAAcjyB,EAAOsnB,UAAUtnB,EAAO2C,KAAK3C,EAAOsnB,SAAW,OAAS,UAEtE2K,GAAaA,IAAcjyB,EAAOsnB,WACpCtnB,EAAOwiB,OAAQ,EACfxiB,EAAOmI,WAAWD,YAsJpBoH,QA9NY,CAAE4iB,WAlDhB,WACE,MACM,WACJC,EAAU,OAAEta,EAAM,IAAE+E,EAAG,IAAEzS,GAFZrK,KAITsyB,EAAW,GAEjBA,EAASxjB,KAAK,eACdwjB,EAASxjB,KAAKiJ,EAAO8M,WAEjB9M,EAAO8R,UACTyI,EAASxjB,KAAK,aAEX,EAAQ+K,SACXyY,EAASxjB,KAAK,cAEZiJ,EAAO+M,YACTwN,EAASxjB,KAAK,cAEZgO,GACFwV,EAASxjB,KAAK,OAEZiJ,EAAOyG,gBAAkB,GAC3B8T,EAASxjB,KAAK,YAEZ,EAAO2Z,SACT6J,EAASxjB,KAAK,WAEZ,EAAO0Z,KACT8J,EAASxjB,KAAK,QAGX,EAAQqL,MAAQ,EAAQC,UAAY,EAAQd,eAAiB,EAAQG,wBACxE6Y,EAASxjB,YAAYiJ,EAAO8M,aAG9ByN,EAAShuB,QAASiuB,IAChBF,EAAWvjB,KAAKiJ,EAAOuU,uBAAyBiG,KAGlDloB,EAAIkF,SAAS8iB,EAAWhb,KAAK,OAUHmb,cAP5B,WACE,MACM,IAAEnoB,EAAG,WAAEgoB,GADEryB,KAGfqK,EAAIsF,YAAY0iB,EAAWhb,KAAK,QAkOhCob,OAzKW,CACXC,UArDF,SAAoBC,EAASC,EAAKC,EAAQC,EAAOC,EAAkBlgB,GACjE,IAAImgB,EACJ,SAASC,IACHpgB,GAAUA,IAEX8f,EAAQO,UAAaH,EAmBxBE,IAlBIL,IACFI,EAAQ,IAAI1lB,EAAOQ,OACbqlB,OAASF,EACfD,EAAMI,QAAUH,EACZH,IACFE,EAAMF,MAAQA,GAEZD,IACFG,EAAMH,OAASA,GAEbD,IACFI,EAAMJ,IAAMA,IAGdK,KAkCJlH,cA1BF,WACE,MAAM7rB,EAASF,KAEf,SAASizB,IACH,MAAO/yB,GAA8CA,IAAUA,EAAOkH,iBAC9C5B,IAAxBtF,EAAOmzB,eAA4BnzB,EAAOmzB,cAAgB,GAC1DnzB,EAAOmzB,eAAiBnzB,EAAOozB,aAAavxB,SAC1C7B,EAAO6X,OAAOiU,qBAAqB9rB,EAAOkI,SAC9ClI,EAAO2C,KAAK,iBANhB3C,EAAOozB,aAAepzB,EAAOmK,IAAI4L,KAAK,OAStC,IAAK,IAAIrU,EAAI,EAAGA,EAAI1B,EAAOozB,aAAavxB,OAAQH,GAAK,EAAG,CACtD,MAAM+wB,EAAUzyB,EAAOozB,aAAa1xB,GACpC1B,EAAOwyB,UACLC,EACAA,EAAQY,YAAcZ,EAAQziB,aAAa,OAC3CyiB,EAAQE,QAAUF,EAAQziB,aAAa,UACvCyiB,EAAQG,OAASH,EAAQziB,aAAa,UACtC,EACA+iB,OAiLAO,EAAmB,GAEzB,MAAM,UAAe7yB,EACnB,eAAe+D,GACb,IAAI4L,EACAyH,EACgB,IAAhBrT,EAAK3C,QAAgB2C,EAAK,GAAG6T,aAAe7T,EAAK,GAAG6T,cAAgBzX,OACtEiX,EAASrT,EAAK,IAEb4L,EAAIyH,GAAUrT,EAEZqT,IAAQA,EAAS,IAEtBA,EAASvB,EAAMvN,OAAO,GAAI8O,GACtBzH,IAAOyH,EAAOzH,KAAIyH,EAAOzH,GAAKA,GAElCmjB,MAAM1b,GAENjX,OAAOwV,KAAKkW,GAAYloB,QAASovB,IAC/B5yB,OAAOwV,KAAKkW,EAAWkH,IAAiBpvB,QAASqvB,IAC1C,EAAO5yB,UAAU4yB,KACpB,EAAO5yB,UAAU4yB,GAAenH,EAAWkH,GAAgBC,QAMjE,MAAMzzB,EAASF,UACe,IAAnBE,EAAOib,UAChBjb,EAAOib,QAAU,IAEnBra,OAAOwV,KAAKpW,EAAOib,SAAS7W,QAAS8W,IACnC,MAAMC,EAASnb,EAAOib,QAAQC,GAC9B,GAAIC,EAAOtD,OAAQ,CACjB,MAAM6b,EAAkB9yB,OAAOwV,KAAK+E,EAAOtD,QAAQ,GAC7CwD,EAAeF,EAAOtD,OAAO6b,GACnC,GAA4B,iBAAjBrY,GAA8C,OAAjBA,EAAuB,OAC/D,KAAMqY,KAAmB7b,GAAU,YAAawD,GAAe,QAC/B,IAA5BxD,EAAO6b,KACT7b,EAAO6b,GAAmB,CAAE1W,SAAS,IAGF,iBAA5BnF,EAAO6b,IACT,YAAa7b,EAAO6b,KAEzB7b,EAAO6b,GAAiB1W,SAAU,GAE/BnF,EAAO6b,KAAkB7b,EAAO6b,GAAmB,CAAE1W,SAAS,OAKvE,MAAM2W,EAAerd,EAAMvN,OAAO,GAAI+gB,GACtC9pB,EAAO4zB,iBAAiBD,GAGxB3zB,EAAO6X,OAASvB,EAAMvN,OAAO,GAAI4qB,EAAcL,EAAkBzb,GACjE7X,EAAOwxB,eAAiBlb,EAAMvN,OAAO,GAAI/I,EAAO6X,QAChD7X,EAAO6zB,aAAevd,EAAMvN,OAAO,GAAI8O,GAGvC7X,EAAOoO,EAAIA,EAGX,MAAMjE,EAAMiE,EAAEpO,EAAO6X,OAAOzH,IAG5B,KAFAA,EAAKjG,EAAI,IAGP,OAGF,GAAIA,EAAItI,OAAS,EAAG,CAClB,MAAMiyB,EAAU,GAKhB,OAJA3pB,EAAI+J,KAAK,CAACO,EAAOsf,KACf,MAAMC,EAAY1d,EAAMvN,OAAO,GAAI8O,EAAQ,CAAEzH,GAAI2jB,IACjDD,EAAQllB,KAAK,IAAI,EAAOolB,MAEnBF,EAGT1jB,EAAGpQ,OAASA,EACZmK,EAAI/E,KAAK,SAAUpF,GAGnB,MAAMyc,EAAatS,EAAI0C,aAAa7M,EAAO6X,OAAOxW,gBAwHlD,OArHAiV,EAAMvN,OAAO/I,EAAQ,CACnBmK,MACAiG,KACAqM,aACAgQ,UAAWhQ,EAAW,GAGtB0V,WAAY,GAGZ9uB,OAAQ+K,IACRgP,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAGjBjB,aAAY,IACyB,eAA5Bpc,EAAO6X,OAAO8M,UAEvBtI,WAAU,IAC2B,aAA5Brc,EAAO6X,OAAO8M,UAGvB/H,IAA+B,QAAzBxM,EAAGyU,IAAIriB,eAAoD,QAAzB2H,EAAI6J,IAAI,aAChD2I,aAA0C,eAA5B3c,EAAO6X,OAAO8M,YAAwD,QAAzBvU,EAAGyU,IAAIriB,eAAoD,QAAzB2H,EAAI6J,IAAI,cACrG6I,SAAwC,gBAA9BJ,EAAWzI,IAAI,WAGzBqN,YAAa,EACbuB,UAAW,EAGXL,aAAa,EACbC,OAAO,EAGPd,UAAW,EACX8C,kBAAmB,EACnBrC,SAAU,EACV4N,SAAU,EACVjL,WAAW,EAGXM,eAAgBplB,EAAO6X,OAAOuN,eAC9BC,eAAgBrlB,EAAO6X,OAAOwN,eAG9BmH,YAAc,WACZ,MAAMxT,EAAQ,CAAC,aAAc,YAAa,YAC1C,IAAIyP,EAAU,CAAC,YAAa,YAAa,WAgBzC,OAfI,EAAQrP,cACVqP,EAAU,CAAC,cAAe,cAAe,aAChC,EAAQlP,wBACjBkP,EAAU,CAAC,gBAAiB,gBAAiB,gBAE/CzoB,EAAOi0B,iBAAmB,CACxBpD,MAAO7X,EAAM,GACb+X,KAAM/X,EAAM,GACZgY,IAAKhY,EAAM,IAEbhZ,EAAOk0B,mBAAqB,CAC1BrD,MAAOpI,EAAQ,GACfsI,KAAMtI,EAAQ,GACduI,IAAKvI,EAAQ,IAER,EAAQzP,QAAUhZ,EAAO6X,OAAOwP,cAAgBrnB,EAAOi0B,iBAAmBj0B,EAAOk0B,mBAlB7E,GAoBbvH,gBAAiB,CACfM,eAAW3nB,EACX4nB,aAAS5nB,EACTuoB,yBAAqBvoB,EACrB0oB,oBAAgB1oB,EAChBwoB,iBAAaxoB,EACb4e,sBAAkB5e,EAClBypB,oBAAgBzpB,EAChB4oB,wBAAoB5oB,EAEpB8oB,aAAc,iDAEdoB,cAAelZ,EAAMK,MACrB8Y,kBAAcnqB,EAEd4pB,WAAY,GACZF,yBAAqB1pB,EACrBwnB,kBAAcxnB,EACdyoB,iBAAazoB,GAIf6nB,YAAY,EAGZjC,eAAgBlrB,EAAO6X,OAAOqT,eAE9B0B,QAAS,CACPa,OAAQ,EACRC,OAAQ,EACRN,SAAU,EACVG,SAAU,EACVtG,KAAM,GAIRmM,aAAc,GACdD,aAAc,IAKhBnzB,EAAOm0B,aAGHn0B,EAAO6X,OAAOkS,MAChB/pB,EAAO+pB,OAIF/pB,EAGT,uBACE,MACM,OACJ6X,EAAM,OAAExU,EAAM,WAAE+Z,EAAYb,KAAMG,EAAU,YAAE2E,GAFjCvhB,KAIf,IAAIs0B,EAAM,EACV,GAAIvc,EAAOiI,eAAgB,CACzB,IACIuU,EADAxW,EAAYxa,EAAOge,GAAaxB,gBAEpC,IAAK,IAAIne,EAAI2f,EAAc,EAAG3f,EAAI2B,EAAOxB,OAAQH,GAAK,EAChD2B,EAAO3B,KAAO2yB,IAEhBD,GAAO,GADPvW,GAAaxa,EAAO3B,GAAGme,iBAEPnD,IAAY2X,GAAY,IAG5C,IAAK,IAAI3yB,EAAI2f,EAAc,EAAG3f,GAAK,EAAGA,GAAK,EACrC2B,EAAO3B,KAAO2yB,IAEhBD,GAAO,GADPvW,GAAaxa,EAAO3B,GAAGme,iBAEPnD,IAAY2X,GAAY,SAI5C,IAAK,IAAI3yB,EAAI2f,EAAc,EAAG3f,EAAI2B,EAAOxB,OAAQH,GAAK,EAChD0b,EAAW1b,GAAK0b,EAAWiE,GAAe3E,IAC5C0X,GAAO,GAIb,OAAOA,EAGT,SACE,MAAMp0B,EAASF,KACf,IAAKE,GAAUA,EAAOkH,UAAW,OACjC,MAAM,SAAEiW,EAAQ,OAAEtF,GAAW7X,EAU7B,SAASmkB,IACP,MAAMmQ,EAAiBt0B,EAAO2c,cAAmC,EAApB3c,EAAO0hB,UAAiB1hB,EAAO0hB,UACtEkI,EAAerL,KAAKsL,IAAItL,KAAKK,IAAI0V,EAAgBt0B,EAAOsiB,gBAAiBtiB,EAAOgiB,gBACtFhiB,EAAOmkB,aAAayF,GACpB5pB,EAAOujB,oBACPvjB,EAAO2iB,sBAET,IAAI4R,EAfA1c,EAAO4R,aACTzpB,EAAO0pB,gBAET1pB,EAAO+b,aACP/b,EAAOwc,eACPxc,EAAOoiB,iBACPpiB,EAAO2iB,sBAUH3iB,EAAO6X,OAAO8R,UAChBxF,IACInkB,EAAO6X,OAAO+M,YAChB5kB,EAAOghB,qBAIPuT,GADmC,SAAhCv0B,EAAO6X,OAAO6G,eAA4B1e,EAAO6X,OAAO6G,cAAgB,IAAM1e,EAAOwiB,QAAUxiB,EAAO6X,OAAOiI,eACnG9f,EAAO+kB,QAAQ/kB,EAAOqD,OAAOxB,OAAS,EAAG,GAAG,GAAO,GAEnD7B,EAAO+kB,QAAQ/kB,EAAOqhB,YAAa,GAAG,GAAO,KAG1D8C,IAGAtM,EAAO8I,eAAiBxD,IAAand,EAAOmd,UAC9Cnd,EAAO4gB,gBAET5gB,EAAO2C,KAAK,UAGd,gBAAgB6xB,EAAcC,GAAa,GACzC,MAAMz0B,EAASF,KACT40B,EAAmB10B,EAAO6X,OAAO8M,UAKvC,OAJK6P,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAE7DF,IAAiBE,GAAuC,eAAjBF,GAAkD,aAAjBA,EACpEx0B,GAGgB,aAArB00B,IACF10B,EAAOmK,IACJsF,eAAezP,EAAO6X,OAAOuU,+CAC7B/c,YAAYrP,EAAO6X,OAAOuU,yBAAyBoI,MAEjD,EAAQva,MAAQ,EAAQC,UAAY,EAAQd,eAAiB,EAAQG,wBACxEvZ,EAAOmK,IAAIkF,YAAYrP,EAAO6X,OAAOuU,6BAA6BoI,MAG7C,eAArBE,IACF10B,EAAOmK,IACJsF,eAAezP,EAAO6X,OAAOuU,mDAC7B/c,YAAYrP,EAAO6X,OAAOuU,yBAAyBoI,MAEjD,EAAQva,MAAQ,EAAQC,UAAY,EAAQd,eAAiB,EAAQG,wBACxEvZ,EAAOmK,IAAIkF,YAAYrP,EAAO6X,OAAOuU,6BAA6BoI,MAItEx0B,EAAO6X,OAAO8M,UAAY6P,EAE1Bx0B,EAAOqD,OAAO6Q,KAAK,CAAC+Q,EAAY0P,KACT,aAAjBH,EACFG,EAAQ5nB,MAAMiP,MAAQ,GAEtB2Y,EAAQ5nB,MAAMkP,OAAS,KAI3Bjc,EAAO2C,KAAK,mBACR8xB,GAAYz0B,EAAOkI,SAEhBlI,GAGT,OACE,MAAMA,EAASF,KACXE,EAAO0I,cAEX1I,EAAO2C,KAAK,cAGR3C,EAAO6X,OAAO4R,aAChBzpB,EAAO0pB,gBAIT1pB,EAAOkyB,aAGHlyB,EAAO6X,OAAO7P,MAChBhI,EAAOsI,aAITtI,EAAO+b,aAGP/b,EAAOwc,eAEHxc,EAAO6X,OAAO8I,eAChB3gB,EAAO4gB,gBAIL5gB,EAAO6X,OAAOqP,YAChBlnB,EAAOmnB,gBAGLnnB,EAAO6X,OAAOgU,eAChB7rB,EAAO6rB,gBAIL7rB,EAAO6X,OAAO7P,KAChBhI,EAAO+kB,QAAQ/kB,EAAO6X,OAAOsN,aAAenlB,EAAOylB,aAAc,EAAGzlB,EAAO6X,OAAOwU,oBAElFrsB,EAAO+kB,QAAQ/kB,EAAO6X,OAAOsN,aAAc,EAAGnlB,EAAO6X,OAAOwU,oBAI9DrsB,EAAOusB,eAGPvsB,EAAO0I,aAAc,EAGrB1I,EAAO2C,KAAK,SAGd,QAAQiyB,GAAiB,EAAMC,GAAc,GAC3C,MAAM70B,EAASF,MACT,OACJ+X,EAAM,IAAE1N,EAAG,WAAEsS,EAAU,OAAEpZ,GACvBrD,EAEJ,YAA6B,IAAlBA,EAAO6X,QAA0B7X,EAAOkH,UAC1C,MAGTlH,EAAO2C,KAAK,iBAGZ3C,EAAO0I,aAAc,EAGrB1I,EAAOixB,eAGHpZ,EAAO7P,MACThI,EAAOiI,cAIL4sB,IACF70B,EAAOsyB,gBACPnoB,EAAI+F,WAAW,SACfuM,EAAWvM,WAAW,SAClB7M,GAAUA,EAAOxB,QACnBwB,EACGoM,YAAY,CACXoI,EAAO+J,kBACP/J,EAAOiL,iBACPjL,EAAOkL,eACPlL,EAAOmL,gBACP7L,KAAK,MACNjH,WAAW,SACXA,WAAW,2BACXA,WAAW,sBACXA,WAAW,oBAIlBlQ,EAAO2C,KAAK,WAGZ/B,OAAOwV,KAAKpW,EAAOua,iBAAiBnW,QAASC,IAC3CrE,EAAO8R,IAAIzN,MAGU,IAAnBuwB,IACF50B,EAAOmK,IAAI,GAAGnK,OAAS,KACvBA,EAAOmK,IAAI/E,KAAK,SAAU,MAC1BkR,EAAMwe,YAAY90B,IAEpBA,EAAOkH,WAAY,EAEZ,MAGT,sBAAsB6tB,GACpBze,EAAMvN,OAAOuqB,EAAkByB,GAGjC,8BACE,OAAOzB,EAGT,sBACE,OAAOxJ,EAGT,mBACE,OAAOrpB,EAGT,eACE,OAAO2N,GAIX,IAAI4mB,EAAW,CACbzuB,KAAM,SACNoV,MAAO,CACL0M,OAAQ,GAEVzM,OAAQ,CACNyM,OAAQ,IAIR4M,EAAY,CACd1uB,KAAM,UACNoV,MAAO,CACLuZ,QAAS,GAEXtZ,OAAQ,CACNsZ,QAAS,IAITC,EAAY,CACd5uB,KAAM,UACNoV,MAAO,CACLyZ,QAAS,GAEXxZ,OAAQ,CACNwZ,QAAS,IAITC,EAAS,CACX9uB,KAAM,SACN,SACE,MAAMvG,EAASF,KACfwW,EAAMvN,OAAO/I,EAAQ,CACnBs1B,OAAQ,CACN,gBACOt1B,IAAUA,EAAOkH,WAAclH,EAAO0I,cAC3C1I,EAAO2C,KAAK,gBACZ3C,EAAO2C,KAAK,YAEd,2BACO3C,IAAUA,EAAOkH,WAAclH,EAAO0I,aAC3C1I,EAAO2C,KAAK,0BAKpB2B,GAAI,CACF,OAGE8I,EAAOvG,iBAAiB,SAFT/G,KAE0Bw1B,OAAOC,eAGhDnoB,EAAOvG,iBAAiB,oBALT/G,KAKqCw1B,OAAOE,2BAE7D,UAEEpoB,EAAOhB,oBAAoB,SADZtM,KAC6Bw1B,OAAOC,eACnDnoB,EAAOhB,oBAAoB,oBAFZtM,KAEwCw1B,OAAOE,6BAKpE,MAAMC,EAAW,CACfC,KAAMtoB,EAAOuoB,kBAAoBvoB,EAAOwoB,uBACxC,OAAO1yB,EAAQoG,EAAU,IACvB,MAAMtJ,EAASF,KAGT8Z,EAAW,IAAIic,EADAJ,EAASC,MACKI,IAIjC,GAAyB,IAArBA,EAAUj0B,OAEZ,YADA7B,EAAO2C,KAAK,iBAAkBmzB,EAAU,IAG1C,MAAMC,EAAiB,WACrB/1B,EAAO2C,KAAK,iBAAkBmzB,EAAU,KAGtC1oB,EAAO4oB,sBACT5oB,EAAO4oB,sBAAsBD,GAE7B3oB,EAAOW,WAAWgoB,EAAgB,KAItCnc,EAASqc,QAAQ/yB,EAAQ,CACvBgzB,gBAA0C,IAAvB5sB,EAAQ4sB,YAAoC5sB,EAAQ4sB,WACvEC,eAAwC,IAAtB7sB,EAAQ6sB,WAAmC7sB,EAAQ6sB,UACrEC,mBAAgD,IAA1B9sB,EAAQ8sB,eAAuC9sB,EAAQ8sB,gBAG/Ep2B,EAAO4Z,SAASyc,UAAUznB,KAAKgL,IAEjC,OACE,MAAM5Z,EAASF,KACf,GAAK,EAAQ8Z,UAAa5Z,EAAO6X,OAAO+B,SAAxC,CACA,GAAI5Z,EAAO6X,OAAOye,eAAgB,CAChC,MAAMC,EAAmBv2B,EAAOmK,IAAIqH,UACpC,IAAK,IAAI9P,EAAI,EAAGA,EAAI60B,EAAiB10B,OAAQH,GAAK,EAChD1B,EAAO4Z,SAAS4c,OAAOD,EAAiB70B,IAI5C1B,EAAO4Z,SAAS4c,OAAOx2B,EAAOmK,IAAI,GAAI,CAAEgsB,UAAWn2B,EAAO6X,OAAO4e,uBAGjEz2B,EAAO4Z,SAAS4c,OAAOx2B,EAAOyc,WAAW,GAAI,CAAEyZ,YAAY,MAE7D,UACiBp2B,KACR8Z,SAASyc,UAAUjyB,QAASwV,IACjCA,EAAS8c,eAFI52B,KAIR8Z,SAASyc,UAAY,KAIhC,IAAIM,EAAa,CACfpwB,KAAM,WACNsR,OAAQ,CACN+B,UAAU,EACV0c,gBAAgB,EAChBG,sBAAsB,GAExB,SAEEngB,EAAMvN,OADSjJ,KACM,CACnB8Z,SAAU,CACRmQ,KAAM0L,EAAS1L,KAAKrjB,KAHT5G,MAIX02B,OAAQf,EAASe,OAAO9vB,KAJb5G,MAKX6I,QAAS8sB,EAAS9sB,QAAQjC,KALf5G,MAMXu2B,UAAW,OAIjB/xB,GAAI,CACF,OACiBxE,KACR8Z,SAASmQ,QAElB,UACiBjqB,KACR8Z,SAASjR,aAKtB,MAAMiuB,EAAU,CACd,OAAOC,GACL,MAAM72B,EAASF,MACT,cAAE4e,EAAa,eAAEsB,EAAc,eAAEF,GAAmB9f,EAAO6X,QAC3D,gBAAEif,EAAe,eAAEC,GAAmB/2B,EAAO6X,OAAOkF,SAExD3Z,KAAM4zB,EACN1e,GAAI2e,EAAU,OACd5zB,EACA+Z,WAAY8Z,EAAkB,YAC9BC,EACA9jB,OAAQ+jB,GACNp3B,EAAO+c,QACX/c,EAAOujB,oBACP,MAAMlC,EAAcrhB,EAAOqhB,aAAe,EAE1C,IAAIgW,EAIAC,EACAC,EAJqBF,EAArBr3B,EAAO2c,aAA2B,QACpB3c,EAAOoc,eAAiB,OAAS,MAI/C0D,GACFwX,EAAc/Y,KAAKC,MAAME,EAAgB,GAAKsB,EAAiB8W,EAC/DS,EAAehZ,KAAKC,MAAME,EAAgB,GAAKsB,EAAiB+W,IAEhEO,EAAc5Y,GAAiBsB,EAAiB,GAAK8W,EACrDS,EAAevX,EAAiB+W,GAElC,MAAM3zB,EAAOmb,KAAKK,KAAKyC,GAAe,GAAKkW,EAAc,GACnDjf,EAAKiG,KAAKsL,KAAKxI,GAAe,GAAKiW,EAAaj0B,EAAOxB,OAAS,GAChEwR,GAAUrT,EAAOod,WAAWha,IAAS,IAAMpD,EAAOod,WAAW,IAAM,GASzE,SAASoa,IACPx3B,EAAOwc,eACPxc,EAAOoiB,iBACPpiB,EAAO2iB,sBACH3iB,EAAOy3B,MAAQz3B,EAAO6X,OAAO4f,KAAKza,SACpChd,EAAOy3B,KAAKC,OAIhB,GAhBAphB,EAAMvN,OAAO/I,EAAO+c,QAAS,CAC3B3Z,OACAkV,KACAjF,SACA+J,WAAYpd,EAAOod,aAYjB4Z,IAAiB5zB,GAAQ6zB,IAAe3e,IAAOue,EAKjD,OAJI72B,EAAOod,aAAe8Z,GAAsB7jB,IAAW+jB,GACzDp3B,EAAOqD,OAAO2Q,IAAIqjB,KAAehkB,YAEnCrT,EAAOoiB,iBAGT,GAAIpiB,EAAO6X,OAAOkF,QAAQ4a,eAcxB,OAbA33B,EAAO6X,OAAOkF,QAAQ4a,eAAe52B,KAAKf,EAAQ,CAChDqT,SACAjQ,OACAkV,KACAjV,OAAS,WACP,MAAMu0B,EAAiB,GACvB,IAAK,IAAIl2B,EAAI0B,EAAM1B,GAAK4W,EAAI5W,GAAK,EAC/Bk2B,EAAehpB,KAAKvL,EAAO3B,IAE7B,OAAOk2B,EALD,UAQVJ,IAGF,MAAMK,EAAiB,GACjBC,EAAgB,GACtB,GAAIjB,EACF72B,EAAOyc,WAAW1G,SAAS/V,EAAO6X,OAAOvW,cAAcoO,cAEvD,IAAK,IAAIhO,EAAIs1B,EAAct1B,GAAKu1B,EAAYv1B,GAAK,GAC3CA,EAAI0B,GAAQ1B,EAAI4W,IAClBtY,EAAOyc,WAAW1G,SAAS/V,EAAO6X,OAAOvW,uCAAuCI,OAAOgO,SAI7F,IAAK,IAAIhO,EAAI,EAAGA,EAAI2B,EAAOxB,OAAQH,GAAK,EAClCA,GAAK0B,GAAQ1B,GAAK4W,SACM,IAAf2e,GAA8BJ,EACvCiB,EAAclpB,KAAKlN,IAEfA,EAAIu1B,GAAYa,EAAclpB,KAAKlN,GACnCA,EAAIs1B,GAAca,EAAejpB,KAAKlN,KAIhDo2B,EAAc1zB,QAASqQ,IACrBzU,EAAOyc,WAAW3H,OAAOqiB,EAAY9zB,EAAOoR,GAAQA,MAEtDojB,EAAe/F,KAAK,CAAC7vB,EAAG8vB,IAAMA,EAAI9vB,GAAGmC,QAASqQ,IAC5CzU,EAAOyc,WAAWtH,QAAQgiB,EAAY9zB,EAAOoR,GAAQA,MAEvDzU,EAAOyc,WAAW5P,SAAS,iBAAiBmH,IAAIqjB,KAAehkB,OAC/DmkB,KAEF,YAAYzY,EAAOtK,GACjB,MAAMzU,EAASF,KACT+X,EAAS7X,EAAO6X,OAAOkF,QAC7B,GAAIlF,EAAOpO,OAASzJ,EAAO+c,QAAQtT,MAAMgL,GACvC,OAAOzU,EAAO+c,QAAQtT,MAAMgL,GAE9B,MAAMsjB,EAAWlgB,EAAOsf,YACpB/oB,EAAEyJ,EAAOsf,YAAYp2B,KAAKf,EAAQ+e,EAAOtK,IACzCrG,iBAAiBpO,EAAO6X,OAAOvW,wCAAwCmT,MAAUsK,WAGrF,OAFKgZ,EAAShoB,KAAK,4BAA4BgoB,EAAShoB,KAAK,0BAA2B0E,GACpFoD,EAAOpO,QAAOzJ,EAAO+c,QAAQtT,MAAMgL,GAASsjB,GACzCA,GAET,YAAY10B,GACV,MAAMrD,EAASF,KACf,GAAsB,iBAAXuD,GAAuB,WAAYA,EAC5C,IAAK,IAAI3B,EAAI,EAAGA,EAAI2B,EAAOxB,OAAQH,GAAK,EAClC2B,EAAO3B,IAAI1B,EAAO+c,QAAQ1Z,OAAOuL,KAAKvL,EAAO3B,SAGnD1B,EAAO+c,QAAQ1Z,OAAOuL,KAAKvL,GAE7BrD,EAAO+c,QAAQ7U,QAAO,IAExB,aAAa7E,GACX,MAAMrD,EAASF,KACTuhB,EAAcrhB,EAAOqhB,YAC3B,IAAImC,EAAiBnC,EAAc,EAC/B2W,EAAoB,EAExB,GAAIj2B,MAAM8Y,QAAQxX,GAAS,CACzB,IAAK,IAAI3B,EAAI,EAAGA,EAAI2B,EAAOxB,OAAQH,GAAK,EAClC2B,EAAO3B,IAAI1B,EAAO+c,QAAQ1Z,OAAOiO,QAAQjO,EAAO3B,IAEtD8hB,EAAiBnC,EAAche,EAAOxB,OACtCm2B,EAAoB30B,EAAOxB,YAE3B7B,EAAO+c,QAAQ1Z,OAAOiO,QAAQjO,GAEhC,GAAIrD,EAAO6X,OAAOkF,QAAQtT,MAAO,CAC/B,MAAMA,EAAQzJ,EAAO+c,QAAQtT,MACvBwuB,EAAW,GACjBr3B,OAAOwV,KAAK3M,GAAOrF,QAAS8zB,IAC1BD,EAAS3b,SAAS4b,EAAa,IAAMF,GAAqBvuB,EAAMyuB,KAElEl4B,EAAO+c,QAAQtT,MAAQwuB,EAEzBj4B,EAAO+c,QAAQ7U,QAAO,GACtBlI,EAAO+kB,QAAQvB,EAAgB,IAEjC,YAAY0E,GACV,MAAMloB,EAASF,KACf,GAAI,MAAOooB,EAAyD,OACpE,IAAI7G,EAAcrhB,EAAOqhB,YACzB,GAAItf,MAAM8Y,QAAQqN,GAChB,IAAK,IAAIxmB,EAAIwmB,EAAcrmB,OAAS,EAAGH,GAAK,EAAGA,GAAK,EAClD1B,EAAO+c,QAAQ1Z,OAAO2O,OAAOkW,EAAcxmB,GAAI,GAC3C1B,EAAO6X,OAAOkF,QAAQtT,cACjBzJ,EAAO+c,QAAQtT,MAAMye,EAAcxmB,IAExCwmB,EAAcxmB,GAAK2f,IAAaA,GAAe,GACnDA,EAAc9C,KAAKK,IAAIyC,EAAa,QAGtCrhB,EAAO+c,QAAQ1Z,OAAO2O,OAAOkW,EAAe,GACxCloB,EAAO6X,OAAOkF,QAAQtT,cACjBzJ,EAAO+c,QAAQtT,MAAMye,GAE1BA,EAAgB7G,IAAaA,GAAe,GAChDA,EAAc9C,KAAKK,IAAIyC,EAAa,GAEtCrhB,EAAO+c,QAAQ7U,QAAO,GACtBlI,EAAO+kB,QAAQ1D,EAAa,IAE9B,kBACE,MAAMrhB,EAASF,KACfE,EAAO+c,QAAQ1Z,OAAS,GACpBrD,EAAO6X,OAAOkF,QAAQtT,QACxBzJ,EAAO+c,QAAQtT,MAAQ,IAEzBzJ,EAAO+c,QAAQ7U,QAAO,GACtBlI,EAAO+kB,QAAQ,EAAG,KAItB,IAAIoT,EAAY,CACd5xB,KAAM,UACNsR,OAAQ,CACNkF,QAAS,CACPC,SAAS,EACT3Z,OAAQ,GACRoG,OAAO,EACP0tB,YAAa,KACbQ,eAAgB,KAChBb,gBAAiB,EACjBC,eAAgB,IAGpB,SAEEzgB,EAAMvN,OADSjJ,KACM,CACnBid,QAAS,CACP7U,OAAQ0uB,EAAQ1uB,OAAOxB,KAHZ5G,MAIX4nB,YAAakP,EAAQlP,YAAYhhB,KAJtB5G,MAKX6nB,aAAciP,EAAQjP,aAAajhB,KALxB5G,MAMXmoB,YAAa2O,EAAQ3O,YAAYvhB,KANtB5G,MAOXsoB,gBAAiBwO,EAAQxO,gBAAgB1hB,KAP9B5G,MAQXq3B,YAAaP,EAAQO,YAAYzwB,KARtB5G,MASXuD,OATWvD,KASI+X,OAAOkF,QAAQ1Z,OAC9BoG,MAAO,OAIbnF,GAAI,CACF,aACE,MAAMtE,EAASF,KACf,IAAKE,EAAO6X,OAAOkF,QAAQC,QAAS,OACpChd,EAAOmyB,WAAWvjB,QAAQ5O,EAAO6X,OAAOuU,iCACxC,MAAMgM,EAAkB,CACtBvX,qBAAqB,GAEvBvK,EAAMvN,OAAO/I,EAAO6X,OAAQugB,GAC5B9hB,EAAMvN,OAAO/I,EAAOwxB,eAAgB4G,GAE/Bp4B,EAAO6X,OAAOsN,cACjBnlB,EAAO+c,QAAQ7U,UAGnB,eACiBpI,KACH+X,OAAOkF,QAAQC,SADZld,KAERid,QAAQ7U,YAKrB,MAAMmwB,EAAW,CACf,OAAO31B,GACL,MAAM1C,EAASF,MACP6c,aAAcC,GAAQ5c,EAC9B,IAAImR,EAAIzO,EACJyO,EAAE0b,gBAAe1b,EAAIA,EAAE0b,eAC3B,MAAMyL,EAAKnnB,EAAEonB,SAAWpnB,EAAEqnB,SAE1B,IAAKx4B,EAAOolB,iBAAoBplB,EAAOoc,gBAAyB,KAAPkc,GAAet4B,EAAOqc,cAAuB,KAAPic,GAC7F,OAAO,EAET,IAAKt4B,EAAOqlB,iBAAoBrlB,EAAOoc,gBAAyB,KAAPkc,GAAet4B,EAAOqc,cAAuB,KAAPic,GAC7F,OAAO,EAET,KAAInnB,EAAEsnB,UAAYtnB,EAAEunB,QAAUvnB,EAAEwnB,SAAWxnB,EAAEynB,SAGzC3sB,EAASI,eAAiBJ,EAASI,cAAcE,WAA+D,UAAlDN,EAASI,cAAcE,SAAS/J,eAA+E,aAAlDyJ,EAASI,cAAcE,SAAS/J,gBAA/J,CAGA,GAAIxC,EAAO6X,OAAOghB,SAASC,iBAA0B,KAAPR,GAAoB,KAAPA,GAAoB,KAAPA,GAAoB,KAAPA,GAAY,CAC/F,IAAIS,GAAS,EAEb,GAAI/4B,EAAOmK,IAAIqH,YAAYxR,EAAO6X,OAAOvW,cAAcO,OAAS,GAAyE,IAApE7B,EAAOmK,IAAIqH,YAAYxR,EAAO6X,OAAOiL,oBAAoBjhB,OAC5H,OAEF,MAAMm3B,EAAc5rB,EAAO4kB,WACrBiH,EAAe7rB,EAAO8rB,YACtBC,EAAen5B,EAAOmK,IAAIkJ,SAC5BuJ,IAAKuc,EAAaplB,MAAQ/T,EAAOmK,IAAI,GAAGyJ,YAC5C,MAAMwlB,EAAc,CAClB,CAACD,EAAaplB,KAAMolB,EAAarlB,KACjC,CAACqlB,EAAaplB,KAAO/T,EAAOgc,MAAOmd,EAAarlB,KAChD,CAACqlB,EAAaplB,KAAMolB,EAAarlB,IAAM9T,EAAOic,QAC9C,CAACkd,EAAaplB,KAAO/T,EAAOgc,MAAOmd,EAAarlB,IAAM9T,EAAOic,SAE/D,IAAK,IAAIva,EAAI,EAAGA,EAAI03B,EAAYv3B,OAAQH,GAAK,EAAG,CAC9C,MAAMmwB,EAAQuH,EAAY13B,GAExBmwB,EAAM,IAAM,GAAKA,EAAM,IAAMmH,GAC1BnH,EAAM,IAAM,GAAKA,EAAM,IAAMoH,IAEhCF,GAAS,GAGb,IAAKA,EAAQ,OAEX/4B,EAAOoc,gBACE,KAAPkc,GAAoB,KAAPA,IACXnnB,EAAEgd,eAAgBhd,EAAEgd,iBACnBhd,EAAEkoB,aAAc,IAEX,KAAPf,IAAc1b,GAAgB,KAAP0b,GAAa1b,IAAM5c,EAAO0lB,aAC1C,KAAP4S,IAAc1b,GAAgB,KAAP0b,GAAa1b,IAAM5c,EAAO6lB,cAE3C,KAAPyS,GAAoB,KAAPA,IACXnnB,EAAEgd,eAAgBhd,EAAEgd,iBACnBhd,EAAEkoB,aAAc,GAEZ,KAAPf,GAAWt4B,EAAO0lB,YACX,KAAP4S,GAAWt4B,EAAO6lB,aAExB7lB,EAAO2C,KAAK,WAAY21B,KAG1B,SACiBx4B,KACJ+4B,SAAS7b,UACpB5O,EAAEnC,GAAU3H,GAAG,UAFAxE,KAEkB+4B,SAASryB,QAF3B1G,KAGR+4B,SAAS7b,SAAU,IAE5B,UACiBld,KACH+4B,SAAS7b,UACrB5O,EAAEnC,GAAU6F,IAAI,UAFDhS,KAEmB+4B,SAASryB,QAF5B1G,KAGR+4B,SAAS7b,SAAU,KAI9B,IAAIsc,EAAa,CACf/yB,KAAM,WACNsR,OAAQ,CACNghB,SAAU,CACR7b,SAAS,EACT8b,gBAAgB,IAGpB,SAEExiB,EAAMvN,OADSjJ,KACM,CACnB+4B,SAAU,CACR7b,SAAS,EACTuc,OAAQlB,EAASkB,OAAO7yB,KAJb5G,MAKX05B,QAASnB,EAASmB,QAAQ9yB,KALf5G,MAMX0G,OAAQ6xB,EAAS7xB,OAAOE,KANb5G,UAUjBwE,GAAI,CACF,OACE,MAAMtE,EAASF,KACXE,EAAO6X,OAAOghB,SAAS7b,SACzBhd,EAAO64B,SAASU,UAGpB,UACE,MAAMv5B,EAASF,KACXE,EAAO64B,SAAS7b,SAClBhd,EAAO64B,SAASW,aA6BxB,MAAMC,EAAa,CACjBC,eAAgBpjB,EAAMK,MACtBjU,MACM0K,EAAOE,UAAUC,UAAU3G,QAAQ,YAAc,EAAU,iBA1BnE,WAEE,IAAI+yB,EADc,YACa1tB,EAE/B,IAAK0tB,EAAa,CAChB,MAAMn0B,EAAUyG,EAASxB,cAAc,OACvCjF,EAAQwH,aALQ,UAKgB,WAChC2sB,EAA4C,mBAAvBn0B,EAAiB,QAcxC,OAXKm0B,GACA1tB,EAAS2tB,gBACT3tB,EAAS2tB,eAAeC,aAGuB,IAA/C5tB,EAAS2tB,eAAeC,WAAW,GAAI,MAG1CF,EAAc1tB,EAAS2tB,eAAeC,WAAW,eAAgB,QAG5DF,EAMEG,GAAqB,QAAU,aAExC,UAAU3oB,GAMR,IAAI4oB,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EAkDT,MA/CI,WAAY/oB,IACd6oB,EAAK7oB,EAAEiB,QAEL,eAAgBjB,IAClB6oB,GAAM7oB,EAAEgpB,WAAa,KAEnB,gBAAiBhpB,IACnB6oB,GAAM7oB,EAAEipB,YAAc,KAEpB,gBAAiBjpB,IACnB4oB,GAAM5oB,EAAEkpB,YAAc,KAIpB,SAAUlpB,GAAKA,EAAEyF,OAASzF,EAAEmpB,kBAC9BP,EAAKC,EACLA,EAAK,GAGPC,EA7BmB,GA6BdF,EACLG,EA9BmB,GA8BdF,EAED,WAAY7oB,IACd+oB,EAAK/oB,EAAEopB,QAEL,WAAYppB,IACd8oB,EAAK9oB,EAAEqpB,SAGJP,GAAMC,IAAO/oB,EAAEspB,YACE,IAAhBtpB,EAAEspB,WACJR,GAxCgB,GAyChBC,GAzCgB,KA2ChBD,GA1CgB,IA2ChBC,GA3CgB,MAgDhBD,IAAOF,IACTA,EAAME,EAAK,GAAM,EAAI,GAEnBC,IAAOF,IACTA,EAAME,EAAK,GAAM,EAAI,GAGhB,CACLQ,MAAOX,EACPY,MAAOX,EACPY,OAAQX,EACRY,OAAQX,IAGZ,mBACiBp6B,KACRg7B,cAAe,GAExB,mBACiBh7B,KACRg7B,cAAe,GAExB,OAAOp4B,GACL,IAAIyO,EAAIzO,EACR,MAAM1C,EAASF,KACT+X,EAAS7X,EAAO6X,OAAOkjB,WAE7B,IAAK/6B,EAAO86B,eAAiBjjB,EAAOmjB,eAAgB,OAAO,EAEvD7pB,EAAE0b,gBAAe1b,EAAIA,EAAE0b,eAC3B,IAAIoO,EAAQ,EACZ,MAAMC,EAAYl7B,EAAO2c,cAAgB,EAAI,EAEvCvX,EAAOq0B,EAAW3T,UAAU3U,GAElC,GAAI0G,EAAOsjB,YACT,GAAIn7B,EAAOoc,eAAgB,CACzB,KAAImC,KAAKwB,IAAI3a,EAAKw1B,QAAUrc,KAAKwB,IAAI3a,EAAKy1B,SACrC,OAAO,EADuCI,EAAQ71B,EAAKw1B,OAASM,MAEpE,MAAI3c,KAAKwB,IAAI3a,EAAKy1B,QAAUtc,KAAKwB,IAAI3a,EAAKw1B,SAC5C,OAAO,EAD8CK,EAAQ71B,EAAKy1B,YAGvEI,EAAQ1c,KAAKwB,IAAI3a,EAAKw1B,QAAUrc,KAAKwB,IAAI3a,EAAKy1B,SAAWz1B,EAAKw1B,OAASM,GAAa91B,EAAKy1B,OAG3F,GAAc,IAAVI,EAAa,OAAO,EAIxB,GAFIpjB,EAAOujB,SAAQH,GAASA,GAEvBj7B,EAAO6X,OAAO8R,SAaZ,CAED3pB,EAAO6X,OAAO7P,MAChBhI,EAAO2lB,UAET,IAAIwJ,EAAWnvB,EAAOgkB,eAAkBiX,EAAQpjB,EAAOwjB,YACvD,MAAM5Y,EAAeziB,EAAOuiB,YACtBG,EAAS1iB,EAAOwiB,MA2BtB,GAzBI2M,GAAYnvB,EAAOgiB,iBAAgBmN,EAAWnvB,EAAOgiB,gBACrDmN,GAAYnvB,EAAOsiB,iBAAgB6M,EAAWnvB,EAAOsiB,gBAEzDtiB,EAAOohB,cAAc,GACrBphB,EAAOmkB,aAAagL,GACpBnvB,EAAOoiB,iBACPpiB,EAAOujB,oBACPvjB,EAAO2iB,wBAEDF,GAAgBziB,EAAOuiB,cAAkBG,GAAU1iB,EAAOwiB,QAC9DxiB,EAAO2iB,sBAGL3iB,EAAO6X,OAAO2S,iBAChBxc,aAAahO,EAAO+6B,WAAWO,SAC/Bt7B,EAAO+6B,WAAWO,QAAUhlB,EAAMG,SAAS,KACzCzW,EAAOqmB,kBACN,MAGLrmB,EAAO2C,KAAK,SAAUwO,GAGlBnR,EAAO6X,OAAO0jB,UAAYv7B,EAAO6X,OAAO2jB,8BAA8Bx7B,EAAOu7B,SAASE,OAEtFtM,IAAanvB,EAAOgiB,gBAAkBmN,IAAanvB,EAAOsiB,eAAgB,OAAO,MA/C1D,CAC3B,GAAIhM,EAAMK,MAAQ3W,EAAO+6B,WAAWrB,eAAiB,GACnD,GAAIuB,EAAQ,EACV,GAAMj7B,EAAOwiB,QAASxiB,EAAO6X,OAAO7P,MAAUhI,EAAO8kB,WAG9C,GAAIjN,EAAOmjB,eAAgB,OAAO,OAFvCh7B,EAAO0lB,YACP1lB,EAAO2C,KAAK,SAAUwO,QAEnB,GAAMnR,EAAOuiB,cAAeviB,EAAO6X,OAAO7P,MAAUhI,EAAO8kB,WAG3D,GAAIjN,EAAOmjB,eAAgB,OAAO,OAFvCh7B,EAAO6lB,YACP7lB,EAAO2C,KAAK,SAAUwO,GAG1BnR,EAAO+6B,WAAWrB,gBAAiB,IAAKtsB,EAAOS,MAAQ6tB,UAwCzD,OAFIvqB,EAAEgd,eAAgBhd,EAAEgd,iBACnBhd,EAAEkoB,aAAc,GACd,GAET,SACE,MAAMr5B,EAASF,KACf,IAAK25B,EAAW/2B,MAAO,OAAO,EAC9B,GAAI1C,EAAO+6B,WAAW/d,QAAS,OAAO,EACtC,IAAI9Z,EAASlD,EAAOmK,IAQpB,MAP8C,cAA1CnK,EAAO6X,OAAOkjB,WAAWY,eAC3Bz4B,EAASkL,EAAEpO,EAAO6X,OAAOkjB,WAAWY,eAEtCz4B,EAAOoB,GAAG,aAActE,EAAO+6B,WAAWa,kBAC1C14B,EAAOoB,GAAG,aAActE,EAAO+6B,WAAWc,kBAC1C34B,EAAOoB,GAAGm1B,EAAW/2B,MAAO1C,EAAO+6B,WAAWv0B,QAC9CxG,EAAO+6B,WAAW/d,SAAU,GACrB,GAET,UACE,MAAMhd,EAASF,KACf,IAAK25B,EAAW/2B,MAAO,OAAO,EAC9B,IAAK1C,EAAO+6B,WAAW/d,QAAS,OAAO,EACvC,IAAI9Z,EAASlD,EAAOmK,IAMpB,MAL8C,cAA1CnK,EAAO6X,OAAOkjB,WAAWY,eAC3Bz4B,EAASkL,EAAEpO,EAAO6X,OAAOkjB,WAAWY,eAEtCz4B,EAAO4O,IAAI2nB,EAAW/2B,MAAO1C,EAAO+6B,WAAWv0B,QAC/CxG,EAAO+6B,WAAW/d,SAAU,GACrB,IA0CX,MAAM8e,EAAa,CACjB,SAEE,MAAM97B,EAASF,KACT+X,EAAS7X,EAAO6X,OAAO1P,WAE7B,GAAInI,EAAO6X,OAAO7P,KAAM,OACxB,MAAM,QAAE+zB,EAAO,QAAEC,GAAYh8B,EAAOmI,WAEhC6zB,GAAWA,EAAQn6B,OAAS,IAC1B7B,EAAOuiB,YACTyZ,EAAQ3sB,SAASwI,EAAOokB,eAExBD,EAAQvsB,YAAYoI,EAAOokB,eAE7BD,EAAQh8B,EAAO6X,OAAO8I,eAAiB3gB,EAAOsnB,SAAW,WAAa,eAAezP,EAAOqkB,YAE1FH,GAAWA,EAAQl6B,OAAS,IAC1B7B,EAAOwiB,MACTuZ,EAAQ1sB,SAASwI,EAAOokB,eAExBF,EAAQtsB,YAAYoI,EAAOokB,eAE7BF,EAAQ/7B,EAAO6X,OAAO8I,eAAiB3gB,EAAOsnB,SAAW,WAAa,eAAezP,EAAOqkB,aAGhG,YAAY/qB,GAEVA,EAAEgd,iBADaruB,KAEJyiB,cAFIziB,KAEmB+X,OAAO7P,MAF1BlI,KAGR+lB,aAET,YAAY1U,GAEVA,EAAEgd,iBADaruB,KAEJ0iB,QAFI1iB,KAEa+X,OAAO7P,MAFpBlI,KAGR4lB,aAET,OACE,MAAM1lB,EAASF,KACT+X,EAAS7X,EAAO6X,OAAO1P,WAC7B,IAAM0P,EAAOskB,SAAUtkB,EAAOukB,OAAS,OAEvC,IAAIL,EACAC,EACAnkB,EAAOskB,SACTJ,EAAU3tB,EAAEyJ,EAAOskB,QAEjBn8B,EAAO6X,OAAO2T,mBACc,iBAAlB3T,EAAOskB,QACdJ,EAAQl6B,OAAS,GACyB,IAA1C7B,EAAOmK,IAAI4L,KAAK8B,EAAOskB,QAAQt6B,SAElCk6B,EAAU/7B,EAAOmK,IAAI4L,KAAK8B,EAAOskB,UAGjCtkB,EAAOukB,SACTJ,EAAU5tB,EAAEyJ,EAAOukB,QAEjBp8B,EAAO6X,OAAO2T,mBACc,iBAAlB3T,EAAOukB,QACdJ,EAAQn6B,OAAS,GACyB,IAA1C7B,EAAOmK,IAAI4L,KAAK8B,EAAOukB,QAAQv6B,SAElCm6B,EAAUh8B,EAAOmK,IAAI4L,KAAK8B,EAAOukB,UAIjCL,GAAWA,EAAQl6B,OAAS,GAC9Bk6B,EAAQz3B,GAAG,QAAStE,EAAOmI,WAAWk0B,aAEpCL,GAAWA,EAAQn6B,OAAS,GAC9Bm6B,EAAQ13B,GAAG,QAAStE,EAAOmI,WAAWm0B,aAGxChmB,EAAMvN,OAAO/I,EAAOmI,WAAY,CAC9B4zB,UACAI,OAAQJ,GAAWA,EAAQ,GAC3BC,UACAI,OAAQJ,GAAWA,EAAQ,MAG/B,UACE,MAAMh8B,EAASF,MACT,QAAEi8B,EAAO,QAAEC,GAAYh8B,EAAOmI,WAChC4zB,GAAWA,EAAQl6B,SACrBk6B,EAAQjqB,IAAI,QAAS9R,EAAOmI,WAAWk0B,aACvCN,EAAQtsB,YAAYzP,EAAO6X,OAAO1P,WAAW8zB,gBAE3CD,GAAWA,EAAQn6B,SACrBm6B,EAAQlqB,IAAI,QAAS9R,EAAOmI,WAAWm0B,aACvCN,EAAQvsB,YAAYzP,EAAO6X,OAAO1P,WAAW8zB,kBA8EnD,MAAMlxB,EAAa,CACjB,SAEE,MAAM/K,EAASF,KACT8c,EAAM5c,EAAO4c,IACb/E,EAAS7X,EAAO6X,OAAOzP,WAC7B,IAAKyP,EAAOzH,KAAOpQ,EAAOoI,WAAWgI,KAAOpQ,EAAOoI,WAAW+B,KAAwC,IAAjCnK,EAAOoI,WAAW+B,IAAItI,OAAc,OACzG,MAAMqb,EAAeld,EAAO+c,SAAW/c,EAAO6X,OAAOkF,QAAQC,QAAUhd,EAAO+c,QAAQ1Z,OAAOxB,OAAS7B,EAAOqD,OAAOxB,OAC9GsI,EAAMnK,EAAOoI,WAAW+B,IAE9B,IAAIoyB,EACJ,MAAMC,EAAQx8B,EAAO6X,OAAO7P,KAAOuW,KAAKE,MAAMvB,EAAsC,EAAtBld,EAAOylB,cAAqBzlB,EAAO6X,OAAOmI,gBAAkBhgB,EAAOmd,SAAStb,OAc1I,GAbI7B,EAAO6X,OAAO7P,OAChBu0B,EAAUhe,KAAKE,MAAMze,EAAOqhB,YAAcrhB,EAAOylB,cAAgBzlB,EAAO6X,OAAOmI,iBACjE9C,EAAe,EAA2B,EAAtBld,EAAOylB,eACvC8W,GAAYrf,EAAsC,EAAtBld,EAAOylB,cAEjC8W,EAAUC,EAAQ,IAAGD,GAAWC,GAChCD,EAAU,GAAsC,YAAjCv8B,EAAO6X,OAAO4kB,iBAA8BF,EAAUC,EAAQD,IAEjFA,OADqC,IAArBv8B,EAAO0gB,UACb1gB,EAAO0gB,UAEP1gB,EAAOqhB,aAAe,EAGd,YAAhBxJ,EAAO1O,MAAsBnJ,EAAOoI,WAAWs0B,SAAW18B,EAAOoI,WAAWs0B,QAAQ76B,OAAS,EAAG,CAClG,MAAM66B,EAAU18B,EAAOoI,WAAWs0B,QAClC,IAAIC,EACAC,EACAC,EAiBJ,GAhBIhlB,EAAOilB,iBACT98B,EAAOoI,WAAW20B,WAAaL,EAAQ9nB,GAAG,GAAG5U,EAAOoc,eAAiB,aAAe,gBAAe,GACnGjS,EAAI6J,IAAIhU,EAAOoc,eAAiB,QAAU,YAAapc,EAAOoI,WAAW20B,YAAcllB,EAAOmlB,mBAAqB,QAC/GnlB,EAAOmlB,mBAAqB,QAA8B13B,IAAzBtF,EAAOyjB,gBAC1CzjB,EAAOoI,WAAW60B,oBAAuBV,EAAUv8B,EAAOyjB,cACtDzjB,EAAOoI,WAAW60B,mBAAsBplB,EAAOmlB,mBAAqB,EACtEh9B,EAAOoI,WAAW60B,mBAAqBplB,EAAOmlB,mBAAqB,EAC1Dh9B,EAAOoI,WAAW60B,mBAAqB,IAChDj9B,EAAOoI,WAAW60B,mBAAqB,IAG3CN,EAAaJ,EAAUv8B,EAAOoI,WAAW60B,mBAEzCJ,IADAD,EAAYD,GAAcpe,KAAKsL,IAAI6S,EAAQ76B,OAAQgW,EAAOmlB,oBAAsB,IACxDL,GAAc,GAExCD,EAAQjtB,eAAeoI,EAAOqlB,qBAAqBrlB,EAAOqlB,0BAA0BrlB,EAAOqlB,+BAA+BrlB,EAAOqlB,0BAA0BrlB,EAAOqlB,+BAA+BrlB,EAAOqlB,0BACpM/yB,EAAItI,OAAS,EACf66B,EAAQxoB,KAAK,CAACO,EAAO0oB,KACnB,MAAMC,EAAUhvB,EAAE+uB,GACZE,EAAcD,EAAQ3oB,QACxB4oB,IAAgBd,GAClBa,EAAQ/tB,SAASwI,EAAOqlB,mBAEtBrlB,EAAOilB,iBACLO,GAAeV,GAAcU,GAAeT,GAC9CQ,EAAQ/tB,YAAYwI,EAAOqlB,0BAEzBG,IAAgBV,GAClBS,EACG3nB,OACApG,YAAYwI,EAAOqlB,0BACnBznB,OACApG,YAAYwI,EAAOqlB,+BAEpBG,IAAgBT,GAClBQ,EACG/nB,OACAhG,YAAYwI,EAAOqlB,0BACnB7nB,OACAhG,YAAYwI,EAAOqlB,sCAIvB,CAGL,GAFgBR,EAAQ9nB,GAAG2nB,GACnBltB,SAASwI,EAAOqlB,mBACpBrlB,EAAOilB,eAAgB,CACzB,MAAMQ,EAAwBZ,EAAQ9nB,GAAG+nB,GACnCY,EAAuBb,EAAQ9nB,GAAGgoB,GACxC,IAAK,IAAIl7B,EAAIi7B,EAAYj7B,GAAKk7B,EAAWl7B,GAAK,EAC5Cg7B,EAAQ9nB,GAAGlT,GAAG2N,YAAYwI,EAAOqlB,0BAEnCI,EACG7nB,OACApG,YAAYwI,EAAOqlB,0BACnBznB,OACApG,YAAYwI,EAAOqlB,+BACtBK,EACGloB,OACAhG,YAAYwI,EAAOqlB,0BACnB7nB,OACAhG,YAAYwI,EAAOqlB,gCAG1B,GAAIrlB,EAAOilB,eAAgB,CACzB,MAAMU,EAAuBjf,KAAKsL,IAAI6S,EAAQ76B,OAAQgW,EAAOmlB,mBAAqB,GAC5ES,GAAmBz9B,EAAOoI,WAAW20B,WAAaS,EAAyBx9B,EAAOoI,WAAqB,YAAK,EAAMy0B,EAAW78B,EAAOoI,WAAW20B,WAC/I1F,EAAaza,EAAM,QAAU,OACnC8f,EAAQ1oB,IAAIhU,EAAOoc,eAAiBib,EAAa,SAAUoG,QAO/D,GAJoB,aAAhB5lB,EAAO1O,OACTgB,EAAI4L,SAAS8B,EAAO6lB,gBAAgBvpB,KAAK0D,EAAO8lB,sBAAsBpB,EAAU,IAChFpyB,EAAI4L,SAAS8B,EAAO+lB,cAAczpB,KAAK0D,EAAOgmB,oBAAoBrB,KAEhD,gBAAhB3kB,EAAO1O,KAAwB,CACjC,IAAI20B,EAEFA,EADEjmB,EAAOkmB,oBACc/9B,EAAOoc,eAAiB,WAAa,aAErCpc,EAAOoc,eAAiB,aAAe,WAEhE,MAAM4hB,GAASzB,EAAU,GAAKC,EAC9B,IAAIyB,EAAS,EACTC,EAAS,EACgB,eAAzBJ,EACFG,EAASD,EAETE,EAASF,EAEX7zB,EAAI4L,SAAS8B,EAAOsmB,wBAAwB5tB,uCAAuC0tB,aAAkBC,MAAWxtB,WAAW1Q,EAAO6X,OAAOoJ,OAEvH,WAAhBpJ,EAAO1O,MAAqB0O,EAAOumB,cACrCj0B,EAAIqE,KAAKqJ,EAAOumB,aAAap+B,EAAQu8B,EAAU,EAAGC,IAClDx8B,EAAO2C,KAAK,mBAAoB3C,EAAQmK,EAAI,KAE5CnK,EAAO2C,KAAK,mBAAoB3C,EAAQmK,EAAI,IAE9CA,EAAInK,EAAO6X,OAAO8I,eAAiB3gB,EAAOsnB,SAAW,WAAa,eAAezP,EAAOqkB,YAE1F,SAEE,MAAMl8B,EAASF,KACT+X,EAAS7X,EAAO6X,OAAOzP,WAC7B,IAAKyP,EAAOzH,KAAOpQ,EAAOoI,WAAWgI,KAAOpQ,EAAOoI,WAAW+B,KAAwC,IAAjCnK,EAAOoI,WAAW+B,IAAItI,OAAc,OACzG,MAAMqb,EAAeld,EAAO+c,SAAW/c,EAAO6X,OAAOkF,QAAQC,QAAUhd,EAAO+c,QAAQ1Z,OAAOxB,OAAS7B,EAAOqD,OAAOxB,OAE9GsI,EAAMnK,EAAOoI,WAAW+B,IAC9B,IAAIk0B,EAAiB,GACrB,GAAoB,YAAhBxmB,EAAO1O,KAAoB,CAC7B,MAAMm1B,EAAkBt+B,EAAO6X,OAAO7P,KAAOuW,KAAKE,MAAMvB,EAAsC,EAAtBld,EAAOylB,cAAqBzlB,EAAO6X,OAAOmI,gBAAkBhgB,EAAOmd,SAAStb,OACpJ,IAAK,IAAIH,EAAI,EAAGA,EAAI48B,EAAiB58B,GAAK,EACpCmW,EAAO0mB,aACTF,GAAkBxmB,EAAO0mB,aAAax9B,KAAKf,EAAQ0B,EAAGmW,EAAO2mB,aAE7DH,OAAsBxmB,EAAO4mB,wBAAwB5mB,EAAO2mB,kBAAkB3mB,EAAO4mB,iBAGzFt0B,EAAIqE,KAAK6vB,GACTr+B,EAAOoI,WAAWs0B,QAAUvyB,EAAI4L,SAAS8B,EAAO2mB,eAE9B,aAAhB3mB,EAAO1O,OAEPk1B,EADExmB,EAAO6mB,eACQ7mB,EAAO6mB,eAAe39B,KAAKf,EAAQ6X,EAAO6lB,aAAc7lB,EAAO+lB,4BAE/C/lB,EAAO6lB,wBACtC,sBACgB7lB,EAAO+lB,sBAE3BzzB,EAAIqE,KAAK6vB,IAES,gBAAhBxmB,EAAO1O,OAEPk1B,EADExmB,EAAO8mB,kBACQ9mB,EAAO8mB,kBAAkB59B,KAAKf,EAAQ6X,EAAOsmB,sCAE7BtmB,EAAOsmB,gCAE1Ch0B,EAAIqE,KAAK6vB,IAES,WAAhBxmB,EAAO1O,MACTnJ,EAAO2C,KAAK,mBAAoB3C,EAAOoI,WAAW+B,IAAI,KAG1D,OACE,MAAMnK,EAASF,KACT+X,EAAS7X,EAAO6X,OAAOzP,WAC7B,IAAKyP,EAAOzH,GAAI,OAEhB,IAAIjG,EAAMiE,EAAEyJ,EAAOzH,IACA,IAAfjG,EAAItI,SAGN7B,EAAO6X,OAAO2T,mBACU,iBAAd3T,EAAOzH,IACdjG,EAAItI,OAAS,GACyB,IAAtC7B,EAAOmK,IAAI4L,KAAK8B,EAAOzH,IAAIvO,SAE9BsI,EAAMnK,EAAOmK,IAAI4L,KAAK8B,EAAOzH,KAGX,YAAhByH,EAAO1O,MAAsB0O,EAAO+mB,WACtCz0B,EAAIkF,SAASwI,EAAOgnB,gBAGtB10B,EAAIkF,SAASwI,EAAOinB,cAAgBjnB,EAAO1O,MAEvB,YAAhB0O,EAAO1O,MAAsB0O,EAAOilB,iBACtC3yB,EAAIkF,YAAYwI,EAAOinB,gBAAgBjnB,EAAO1O,gBAC9CnJ,EAAOoI,WAAW60B,mBAAqB,EACnCplB,EAAOmlB,mBAAqB,IAC9BnlB,EAAOmlB,mBAAqB,IAGZ,gBAAhBnlB,EAAO1O,MAA0B0O,EAAOkmB,qBAC1C5zB,EAAIkF,SAASwI,EAAOknB,0BAGlBlnB,EAAO+mB,WACTz0B,EAAI7F,GAAG,YAAauT,EAAO2mB,cAAe,SAAiBrtB,GACzDA,EAAEgd,iBACF,IAAI1Z,EAAQrG,EAAEtO,MAAM2U,QAAUzU,EAAO6X,OAAOmI,eACxChgB,EAAO6X,OAAO7P,OAAMyM,GAASzU,EAAOylB,cACxCzlB,EAAO+kB,QAAQtQ,KAInB6B,EAAMvN,OAAO/I,EAAOoI,WAAY,CAC9B+B,MACAiG,GAAIjG,EAAI,OAGZ,UACE,MACM0N,EADS/X,KACO+X,OAAOzP,WAC7B,IAAKyP,EAAOzH,KAFGtQ,KAEWsI,WAAWgI,KAFtBtQ,KAEoCsI,WAAW+B,KAAwC,IAFvFrK,KAE6DsI,WAAW+B,IAAItI,OAAc,OACzG,MAAMsI,EAHSrK,KAGIsI,WAAW+B,IAE9BA,EAAIsF,YAAYoI,EAAOmnB,aACvB70B,EAAIsF,YAAYoI,EAAOinB,cAAgBjnB,EAAO1O,MAN/BrJ,KAOJsI,WAAWs0B,SAPP58B,KAOuBsI,WAAWs0B,QAAQjtB,YAAYoI,EAAOqlB,mBACxErlB,EAAO+mB,WACTz0B,EAAI2H,IAAI,YAAa+F,EAAO2mB,iBA0GlC,MAAMtzB,EAAY,CAChB,eACE,MAAMlL,EAASF,KACf,IAAKE,EAAO6X,OAAOonB,UAAU7uB,KAAOpQ,EAAOi/B,UAAU7uB,GAAI,OACzD,MAAM,UAAE6uB,EAAWtiB,aAAcC,EAAG,SAAEuF,GAAaniB,GAC7C,SACJk/B,EAAQ,UAAEC,EAAS,QAAEC,EAAO,IAAEj1B,GAC5B80B,EACEpnB,EAAS7X,EAAO6X,OAAOonB,UAE7B,IAAII,EAAUH,EACVI,GAAUH,EAAYD,GAAY/c,EAClCvF,GACF0iB,GAAUA,GACG,GACXD,EAAUH,EAAWI,EACrBA,EAAS,IACCA,EAASJ,EAAWC,IAC9BE,EAAUF,EAAYG,GAEfA,EAAS,GAClBD,EAAUH,EAAWI,EACrBA,EAAS,GACAA,EAASJ,EAAWC,IAC7BE,EAAUF,EAAYG,GAEpBt/B,EAAOoc,gBACL,EAAQ3C,aACV2lB,EAAQ7uB,yBAAyB+uB,cAEjCF,EAAQ7uB,wBAAwB+uB,QAElCF,EAAQ,GAAGryB,MAAMiP,SAAWqjB,QAExB,EAAQ5lB,aACV2lB,EAAQ7uB,8BAA8B+uB,WAEtCF,EAAQ7uB,wBAAwB+uB,QAElCF,EAAQ,GAAGryB,MAAMkP,UAAYojB,OAE3BxnB,EAAO0nB,OACTvxB,aAAahO,EAAOi/B,UAAU3D,SAC9BnxB,EAAI,GAAG4C,MAAMyyB,QAAU,EACvBx/B,EAAOi/B,UAAU3D,QAAUvtB,WAAW,KACpC5D,EAAI,GAAG4C,MAAMyyB,QAAU,EACvBr1B,EAAIuG,WAAW,MACd,OAGP,cAAcC,GACG7Q,KACH+X,OAAOonB,UAAU7uB,IADdtQ,KAC4Bm/B,UAAU7uB,IADtCtQ,KAERm/B,UAAUG,QAAQ1uB,WAAWC,IAEtC,aACE,MAAM3Q,EAASF,KACf,IAAKE,EAAO6X,OAAOonB,UAAU7uB,KAAOpQ,EAAOi/B,UAAU7uB,GAAI,OAEzD,MAAM,UAAE6uB,GAAcj/B,GAChB,QAAEo/B,EAAO,IAAEj1B,GAAQ80B,EAEzBG,EAAQ,GAAGryB,MAAMiP,MAAQ,GACzBojB,EAAQ,GAAGryB,MAAMkP,OAAS,GAC1B,MAAMkjB,EAAYn/B,EAAOoc,eAAiBjS,EAAI,GAAG8I,YAAc9I,EAAI,GAAGiJ,aAEhEqsB,EAAUz/B,EAAOuc,KAAOvc,EAAOie,YAC/ByhB,EAAcD,GAAWN,EAAYn/B,EAAOuc,MAClD,IAAI2iB,EAEFA,EADuC,SAArCl/B,EAAO6X,OAAOonB,UAAUC,SACfC,EAAYM,EAEZnjB,SAAStc,EAAO6X,OAAOonB,UAAUC,SAAU,IAGpDl/B,EAAOoc,eACTgjB,EAAQ,GAAGryB,MAAMiP,SAAWkjB,MAE5BE,EAAQ,GAAGryB,MAAMkP,UAAYijB,MAI7B/0B,EAAI,GAAG4C,MAAM4yB,QADXF,GAAW,EACU,OAEA,GAErBz/B,EAAO6X,OAAOonB,UAAUM,OAC1Bp1B,EAAI,GAAG4C,MAAMyyB,QAAU,GAEzBlpB,EAAMvN,OAAOk2B,EAAW,CACtBE,YACAM,UACAC,cACAR,aAEFD,EAAU90B,IAAInK,EAAO6X,OAAO8I,eAAiB3gB,EAAOsnB,SAAW,WAAa,eAAetnB,EAAO6X,OAAOonB,UAAU/C,YAErH,gBAAgB/qB,GACd,MACM,UAAE8tB,EAAWtiB,aAAcC,GADlB9c,MAET,IAAEqK,EAAG,SAAE+0B,EAAQ,UAAEC,GAAcF,EAErC,IAAIW,EAMAC,EACJA,IALED,EANa9/B,KAKJsc,eACsB,eAAXjL,EAAEhI,MAAoC,cAAXgI,EAAEhI,KAAwBgI,EAAEkc,cAAc,GAAGC,MAAQnc,EAAEmc,OAASnc,EAAE2uB,QAElF,eAAX3uB,EAAEhI,MAAoC,cAAXgI,EAAEhI,KAAwBgI,EAAEkc,cAAc,GAAGG,MAAQrc,EAAEqc,OAASrc,EAAE4uB,SAG9E51B,EAAIkJ,SAX1BvT,KAW0Csc,eAAiB,OAAS,OAAU8iB,EAAW,IAAOC,EAAYD,GAC3HW,EAAgBthB,KAAKK,IAAIL,KAAKsL,IAAIgW,EAAe,GAAI,GACjDjjB,IACFijB,EAAgB,EAAIA,GAGtB,MAAM1Q,EAjBSrvB,KAiBSkiB,gBAjBTliB,KAiBmCwiB,eAjBnCxiB,KAiB2DkiB,gBAAkB6d,EAjB7E//B,KAmBRsiB,eAAe+M,GAnBPrvB,KAoBRqkB,aAAagL,GApBLrvB,KAqBRyjB,oBArBQzjB,KAsBR6iB,uBAET,YAAYxR,GACV,MACM0G,EADS/X,KACO+X,OAAOonB,WACvB,UAAEA,EAAS,WAAExiB,GAFJ3c,MAGT,IAAEqK,EAAG,QAAEi1B,GAAYH,EAHVn/B,KAIRm/B,UAAUhS,WAAY,EAC7B9b,EAAEgd,iBACFhd,EAAE2d,kBAEFrS,EAAW/L,WAAW,KACtB0uB,EAAQ1uB,WAAW,KACnBuuB,EAAUe,gBAAgB7uB,GAE1BnD,aAZelO,KAYKm/B,UAAUgB,aAE9B91B,EAAIuG,WAAW,GACXmH,EAAO0nB,MACTp1B,EAAI6J,IAAI,UAAW,GAhBNlU,KAkBR6C,KAAK,qBAAsBwO,IAEpC,WAAWA,GACT,MACM,UAAE8tB,EAAS,WAAExiB,GADJ3c,MAET,IAAEqK,EAAG,QAAEi1B,GAAYH,EAFVn/B,KAIHm/B,UAAUhS,YAClB9b,EAAEgd,eAAgBhd,EAAEgd,iBACnBhd,EAAEkoB,aAAc,EACrB4F,EAAUe,gBAAgB7uB,GAC1BsL,EAAW/L,WAAW,GACtBvG,EAAIuG,WAAW,GACf0uB,EAAQ1uB,WAAW,GAVJ5Q,KAWR6C,KAAK,oBAAqBwO,KAEnC,UAAUA,GACR,MAAMnR,EAASF,KAET+X,EAAS7X,EAAO6X,OAAOonB,WACvB,UAAEA,GAAcj/B,GAChB,IAAEmK,GAAQ80B,EAEXj/B,EAAOi/B,UAAUhS,YACtBjtB,EAAOi/B,UAAUhS,WAAY,EACzBpV,EAAO0nB,OACTvxB,aAAahO,EAAOi/B,UAAUgB,aAC9BjgC,EAAOi/B,UAAUgB,YAAc3pB,EAAMG,SAAS,KAC5CtM,EAAI6J,IAAI,UAAW,GACnB7J,EAAIuG,WAAW,MACd,MAEL1Q,EAAO2C,KAAK,mBAAoBwO,GAC5B0G,EAAOqoB,eACTlgC,EAAOqmB,mBAGX,kBACE,MAAMrmB,EAASF,KACf,IAAKE,EAAO6X,OAAOonB,UAAU7uB,GAAI,OACjC,MAAM,UACJ6uB,EAAS,iBAAEhL,EAAgB,mBAAEC,EAAkB,OAAErc,GAC/C7X,EAEEkD,EADM+7B,EAAU90B,IACH,GACbg2B,KAAiB,EAAQtmB,kBAAmBhC,EAAOsU,mBAAmB,CAAE2E,SAAS,EAAO7f,SAAS,GACjG4I,KAAkB,EAAQA,kBAAmBhC,EAAOsU,mBAAmB,CAAE2E,SAAS,EAAM7f,SAAS,GAClG,EAAQ+H,OAKX9V,EAAO2D,iBAAiBotB,EAAiBpD,MAAO7wB,EAAOi/B,UAAUmB,YAAaD,GAC9Ej9B,EAAO2D,iBAAiBotB,EAAiBlD,KAAM/wB,EAAOi/B,UAAUoB,WAAYF,GAC5Ej9B,EAAO2D,iBAAiBotB,EAAiBjD,IAAKhxB,EAAOi/B,UAAUqB,UAAWzmB,KAN1E3W,EAAO2D,iBAAiBqtB,EAAmBrD,MAAO7wB,EAAOi/B,UAAUmB,YAAaD,GAChFl0B,EAASpF,iBAAiBqtB,EAAmBnD,KAAM/wB,EAAOi/B,UAAUoB,WAAYF,GAChFl0B,EAASpF,iBAAiBqtB,EAAmBlD,IAAKhxB,EAAOi/B,UAAUqB,UAAWzmB,KAOlF,mBACE,MAAM7Z,EAASF,KACf,IAAKE,EAAO6X,OAAOonB,UAAU7uB,GAAI,OACjC,MAAM,UACJ6uB,EAAS,iBAAEhL,EAAgB,mBAAEC,EAAkB,OAAErc,GAC/C7X,EAEEkD,EADM+7B,EAAU90B,IACH,GACbg2B,KAAiB,EAAQtmB,kBAAmBhC,EAAOsU,mBAAmB,CAAE2E,SAAS,EAAO7f,SAAS,GACjG4I,KAAkB,EAAQA,kBAAmBhC,EAAOsU,mBAAmB,CAAE2E,SAAS,EAAM7f,SAAS,GAClG,EAAQ+H,OAKX9V,EAAOkJ,oBAAoB6nB,EAAiBpD,MAAO7wB,EAAOi/B,UAAUmB,YAAaD,GACjFj9B,EAAOkJ,oBAAoB6nB,EAAiBlD,KAAM/wB,EAAOi/B,UAAUoB,WAAYF,GAC/Ej9B,EAAOkJ,oBAAoB6nB,EAAiBjD,IAAKhxB,EAAOi/B,UAAUqB,UAAWzmB,KAN7E3W,EAAOkJ,oBAAoB8nB,EAAmBrD,MAAO7wB,EAAOi/B,UAAUmB,YAAaD,GACnFl0B,EAASG,oBAAoB8nB,EAAmBnD,KAAM/wB,EAAOi/B,UAAUoB,WAAYF,GACnFl0B,EAASG,oBAAoB8nB,EAAmBlD,IAAKhxB,EAAOi/B,UAAUqB,UAAWzmB,KAOrF,OACE,MAAM7Z,EAASF,KACf,IAAKE,EAAO6X,OAAOonB,UAAU7uB,GAAI,OACjC,MAAM,UAAE6uB,EAAW90B,IAAKo2B,GAAcvgC,EAChC6X,EAAS7X,EAAO6X,OAAOonB,UAE7B,IAAI90B,EAAMiE,EAAEyJ,EAAOzH,IACfpQ,EAAO6X,OAAO2T,mBAA0C,iBAAd3T,EAAOzH,IAAmBjG,EAAItI,OAAS,GAA0C,IAArC0+B,EAAUxqB,KAAK8B,EAAOzH,IAAIvO,SAClHsI,EAAMo2B,EAAUxqB,KAAK8B,EAAOzH,KAG9B,IAAIgvB,EAAUj1B,EAAI4L,SAAS/V,EAAO6X,OAAOonB,UAAUuB,aAC5B,IAAnBpB,EAAQv9B,SACVu9B,EAAUhxB,iBAAiBpO,EAAO6X,OAAOonB,UAAUuB,qBACnDr2B,EAAI2K,OAAOsqB,IAGb9oB,EAAMvN,OAAOk2B,EAAW,CACtB90B,MACAiG,GAAIjG,EAAI,GACRi1B,UACAqB,OAAQrB,EAAQ,KAGdvnB,EAAO6oB,WACTzB,EAAU0B,mBAGd,UACiB7gC,KACRm/B,UAAU2B,qBAwErB,MAAMC,EAAW,CACf,aAAazwB,EAAI+R,GACf,MACM,IAAEvF,GADO9c,KAGTqK,EAAMiE,EAAEgC,GACR8qB,EAAYte,GAAO,EAAI,EAEvBkkB,EAAI32B,EAAI4F,KAAK,yBAA2B,IAC9C,IAAIuU,EAAIna,EAAI4F,KAAK,0BACbwU,EAAIpa,EAAI4F,KAAK,0BACjB,MAAMiuB,EAAQ7zB,EAAI4F,KAAK,8BACjByvB,EAAUr1B,EAAI4F,KAAK,gCAwBzB,GAtBIuU,GAAKC,GACPD,EAAIA,GAAK,IACTC,EAAIA,GAAK,KAdIzkB,KAeGsc,gBAChBkI,EAAIwc,EACJvc,EAAI,MAEJA,EAAIuc,EACJxc,EAAI,KAIJA,EADE,EAAI1d,QAAQ,MAAQ,KACf0V,SAASgI,EAAG,IAAMnC,EAAW+Y,QAE7B5W,EAAInC,EAAW+Y,MAGtB3W,EADE,EAAI3d,QAAQ,MAAQ,KACf0V,SAASiI,EAAG,IAAMpC,QAElBoC,EAAIpC,MAGT,MAAOqd,EAA6C,CACtD,MAAMuB,EAAiBvB,GAAYA,EAAU,IAAM,EAAIjhB,KAAKwB,IAAIoC,IAChEhY,EAAI,GAAG4C,MAAMyyB,QAAUuB,EAEzB,GAAI,MAAO/C,EACT7zB,EAAIoG,yBAAyB+T,MAAMC,eAC9B,CACL,MAAMyc,EAAehD,GAAUA,EAAQ,IAAM,EAAIzf,KAAKwB,IAAIoC,IAC1DhY,EAAIoG,yBAAyB+T,MAAMC,iBAAiByc,QAGxD,eACE,MAAMhhC,EAASF,MACT,IACJqK,EAAG,OAAE9G,EAAM,SAAE8e,EAAQ,SAAEhF,GACrBnd,EACJmK,EAAI0C,SAAS,8EACVqH,KAAK,CAACO,EAAOrE,KACZpQ,EAAOihC,SAASC,aAAa9wB,EAAI+R,KAErC9e,EAAO6Q,KAAK,CAAC+Q,EAAY0P,KACvB,IAAI5S,EAAgB4S,EAAQxS,SACxBniB,EAAO6X,OAAOmI,eAAiB,GAAqC,SAAhChgB,EAAO6X,OAAO6G,gBACpDqD,GAAiBxD,KAAKE,KAAKwG,EAAa,GAAM9C,GAAYhF,EAAStb,OAAS,IAE9EkgB,EAAgBxD,KAAKsL,IAAItL,KAAKK,IAAImD,GAAgB,GAAI,GACtD3T,EAAEumB,GAAS5e,KAAK,8EACb7B,KAAK,CAACO,EAAOrE,KACZpQ,EAAOihC,SAASC,aAAa9wB,EAAI2R,QAIzC,cAAcpR,EAAW7Q,KAAK+X,OAAOoJ,OACnC,MACM,IAAE9W,GADOrK,KAEfqK,EAAI4L,KAAK,8EACN7B,KAAK,CAACO,EAAO0sB,KACZ,MAAMC,EAAchzB,EAAE+yB,GACtB,IAAIE,EAAmB/kB,SAAS8kB,EAAYrxB,KAAK,iCAAkC,KAAOY,EACzE,IAAbA,IAAgB0wB,EAAmB,GACvCD,EAAY1wB,WAAW2wB,OA+C/B,MAAMC,EAAO,CAEX,0BAA0BnwB,GACxB,GAAIA,EAAEkc,cAAcxrB,OAAS,EAAG,OAAO,EACvC,MAAM0/B,EAAKpwB,EAAEkc,cAAc,GAAGC,MACxBkU,EAAKrwB,EAAEkc,cAAc,GAAGG,MACxBiU,EAAKtwB,EAAEkc,cAAc,GAAGC,MACxBoU,EAAKvwB,EAAEkc,cAAc,GAAGG,MAE9B,OADiBjP,KAAKmQ,MAAO+S,EAAKF,IAAO,GAAOG,EAAKF,IAAO,IAI9D,eAAerwB,GACb,MAAMnR,EAASF,KACT+X,EAAS7X,EAAO6X,OAAO8pB,KACvBA,EAAO3hC,EAAO2hC,MACd,QAAEC,GAAYD,EAGpB,GAFAA,EAAKE,oBAAqB,EAC1BF,EAAKG,kBAAmB,GACnB,EAAQ9nB,SAAU,CACrB,GAAe,eAAX7I,EAAEhI,MAAqC,eAAXgI,EAAEhI,MAAyBgI,EAAEkc,cAAcxrB,OAAS,EAClF,OAEF8/B,EAAKE,oBAAqB,EAC1BD,EAAQG,WAAaT,EAAKU,0BAA0B7wB,GAEjDywB,EAAQ7J,UAAa6J,EAAQ7J,SAASl2B,SACzC+/B,EAAQ7J,SAAW3pB,EAAE+C,EAAEjO,QAAQ4S,QAAQ,iBACP,IAA5B8rB,EAAQ7J,SAASl2B,SAAc+/B,EAAQ7J,SAAW/3B,EAAOqD,OAAOuR,GAAG5U,EAAOqhB,cAC9EugB,EAAQK,SAAWL,EAAQ7J,SAAShiB,KAAK,oBACzC6rB,EAAQM,aAAeN,EAAQK,SAAS52B,WAAWwM,EAAOzW,kBAC1DwgC,EAAQO,SAAWP,EAAQM,aAAanyB,KAAK,qBAAuB8H,EAAOsqB,SACvC,IAAhCP,EAAQM,aAAargC,SAK3B+/B,EAAQK,SAASvxB,WAAW,GAC5B1Q,EAAO2hC,KAAKS,WAAY,GALpBR,EAAQK,cAAW38B,GAOzB,gBAAgB6L,GACd,MACM0G,EADS/X,KACO+X,OAAO8pB,KACvBA,EAFS7hC,KAEK6hC,MACd,QAAEC,GAAYD,EACpB,IAAK,EAAQ3nB,SAAU,CACrB,GAAe,cAAX7I,EAAEhI,MAAoC,cAAXgI,EAAEhI,MAAwBgI,EAAEkc,cAAcxrB,OAAS,EAChF,OAEF8/B,EAAKG,kBAAmB,EACxBF,EAAQS,UAAYf,EAAKU,0BAA0B7wB,GAEhDywB,EAAQK,UAAwC,IAA5BL,EAAQK,SAASpgC,SACtC,EAAQmY,SACV2nB,EAAK3D,MAAQ7sB,EAAE6sB,MAAQ2D,EAAKX,aAE5BW,EAAK3D,MAAS4D,EAAQS,UAAYT,EAAQG,WAAcJ,EAAKX,aAE3DW,EAAK3D,MAAQ4D,EAAQO,WACvBR,EAAK3D,MAAS4D,EAAQO,SAAW,GAAQR,EAAK3D,MAAQ4D,EAAQO,SAAY,IAAM,IAE9ER,EAAK3D,MAAQnmB,EAAOyqB,WACtBX,EAAK3D,MAASnmB,EAAOyqB,SAAW,GAAQzqB,EAAOyqB,SAAWX,EAAK3D,MAAS,IAAM,IAEhF4D,EAAQK,SAAS1xB,sCAAsCoxB,EAAK3D,YAE9D,aAAa7sB,GACX,MACM0G,EADS/X,KACO+X,OAAO8pB,KACvBA,EAFS7hC,KAEK6hC,MACd,QAAEC,GAAYD,EACpB,IAAK,EAAQ3nB,SAAU,CACrB,IAAK2nB,EAAKE,qBAAuBF,EAAKG,iBACpC,OAEF,GAAe,aAAX3wB,EAAEhI,MAAmC,aAAXgI,EAAEhI,MAAuBgI,EAAEoxB,eAAe1gC,OAAS,IAAM,EAAO0mB,QAC5F,OAEFoZ,EAAKE,oBAAqB,EAC1BF,EAAKG,kBAAmB,EAErBF,EAAQK,UAAwC,IAA5BL,EAAQK,SAASpgC,SAC1C8/B,EAAK3D,MAAQzf,KAAKK,IAAIL,KAAKsL,IAAI8X,EAAK3D,MAAO4D,EAAQO,UAAWtqB,EAAOyqB,UACrEV,EAAQK,SAASvxB,WAhBF5Q,KAgBoB+X,OAAOoJ,OAAO1Q,sCAAsCoxB,EAAK3D,UAC5F2D,EAAKX,aAAeW,EAAK3D,MACzB2D,EAAKS,WAAY,EACE,IAAfT,EAAK3D,QAAa4D,EAAQ7J,cAAWzyB,KAE3C,aAAa6L,GACX,MACMwwB,EADS7hC,KACK6hC,MACd,QAAEC,EAAO,MAAE9O,GAAU6O,EACtBC,EAAQK,UAAwC,IAA5BL,EAAQK,SAASpgC,SACtCixB,EAAM7F,YACN,EAAO1E,SAASpX,EAAEgd,iBACtB2E,EAAM7F,WAAY,EAClB6F,EAAM0P,aAAale,EAAe,eAAXnT,EAAEhI,KAAwBgI,EAAEkc,cAAc,GAAGC,MAAQnc,EAAEmc,MAC9EwF,EAAM0P,aAAaje,EAAe,eAAXpT,EAAEhI,KAAwBgI,EAAEkc,cAAc,GAAGG,MAAQrc,EAAEqc,SAEhF,YAAYrc,GACV,MAAMnR,EAASF,KACT6hC,EAAO3hC,EAAO2hC,MACd,QAAEC,EAAO,MAAE9O,EAAK,SAAE/C,GAAa4R,EACrC,IAAKC,EAAQK,UAAwC,IAA5BL,EAAQK,SAASpgC,OAAc,OAExD,GADA7B,EAAOmtB,YAAa,GACf2F,EAAM7F,YAAc2U,EAAQ7J,SAAU,OAEtCjF,EAAM5F,UACT4F,EAAM9W,MAAQ4lB,EAAQK,SAAS,GAAGhvB,YAClC6f,EAAM7W,OAAS2lB,EAAQK,SAAS,GAAG7uB,aACnC0f,EAAMrF,OAASnX,EAAM0N,aAAa4d,EAAQM,aAAa,GAAI,MAAQ,EACnEpP,EAAMpF,OAASpX,EAAM0N,aAAa4d,EAAQM,aAAa,GAAI,MAAQ,EACnEN,EAAQa,WAAab,EAAQ7J,SAAS,GAAG9kB,YACzC2uB,EAAQc,YAAcd,EAAQ7J,SAAS,GAAG3kB,aAC1CwuB,EAAQM,aAAaxxB,WAAW,GAC5B1Q,EAAO4c,MACTkW,EAAMrF,QAAUqF,EAAMrF,OACtBqF,EAAMpF,QAAUoF,EAAMpF,SAI1B,MAAMiV,EAAc7P,EAAM9W,MAAQ2lB,EAAK3D,MACjC4E,EAAe9P,EAAM7W,OAAS0lB,EAAK3D,MAEzC,KAAI2E,EAAcf,EAAQa,YAAcG,EAAehB,EAAQc,aAA/D,CAUA,GARA5P,EAAM+P,KAAOtkB,KAAKsL,IAAM+X,EAAQa,WAAa,EAAME,EAAc,EAAK,GACtE7P,EAAMgQ,MAAQhQ,EAAM+P,KACpB/P,EAAMiQ,KAAOxkB,KAAKsL,IAAM+X,EAAQc,YAAc,EAAME,EAAe,EAAK,GACxE9P,EAAMkQ,MAAQlQ,EAAMiQ,KAEpBjQ,EAAMmQ,eAAe3e,EAAe,cAAXnT,EAAEhI,KAAuBgI,EAAEkc,cAAc,GAAGC,MAAQnc,EAAEmc,MAC/EwF,EAAMmQ,eAAe1e,EAAe,cAAXpT,EAAEhI,KAAuBgI,EAAEkc,cAAc,GAAGG,MAAQrc,EAAEqc,OAE1EsF,EAAM5F,UAAYyU,EAAKS,UAAW,CACrC,GACEpiC,EAAOoc,iBAEJmC,KAAKC,MAAMsU,EAAM+P,QAAUtkB,KAAKC,MAAMsU,EAAMrF,SAAWqF,EAAMmQ,eAAe3e,EAAIwO,EAAM0P,aAAale,GAChG/F,KAAKC,MAAMsU,EAAMgQ,QAAUvkB,KAAKC,MAAMsU,EAAMrF,SAAWqF,EAAMmQ,eAAe3e,EAAIwO,EAAM0P,aAAale,GAIzG,YADAwO,EAAM7F,WAAY,GAElB,IACCjtB,EAAOoc,iBAELmC,KAAKC,MAAMsU,EAAMiQ,QAAUxkB,KAAKC,MAAMsU,EAAMpF,SAAWoF,EAAMmQ,eAAe1e,EAAIuO,EAAM0P,aAAaje,GAChGhG,KAAKC,MAAMsU,EAAMkQ,QAAUzkB,KAAKC,MAAMsU,EAAMpF,SAAWoF,EAAMmQ,eAAe1e,EAAIuO,EAAM0P,aAAaje,GAIzG,YADAuO,EAAM7F,WAAY,GAItB9b,EAAEgd,iBACFhd,EAAE2d,kBAEFgE,EAAM5F,SAAU,EAChB4F,EAAM1F,SAAY0F,EAAMmQ,eAAe3e,EAAIwO,EAAM0P,aAAale,EAAKwO,EAAMrF,OACzEqF,EAAMvF,SAAYuF,EAAMmQ,eAAe1e,EAAIuO,EAAM0P,aAAaje,EAAKuO,EAAMpF,OAErEoF,EAAM1F,SAAW0F,EAAM+P,OACzB/P,EAAM1F,SAAY0F,EAAM+P,KAAO,GAAQ/P,EAAM+P,KAAO/P,EAAM1F,SAAY,IAAM,IAE1E0F,EAAM1F,SAAW0F,EAAMgQ,OACzBhQ,EAAM1F,SAAY0F,EAAMgQ,KAAO,GAAQhQ,EAAM1F,SAAW0F,EAAMgQ,KAAQ,IAAM,IAG1EhQ,EAAMvF,SAAWuF,EAAMiQ,OACzBjQ,EAAMvF,SAAYuF,EAAMiQ,KAAO,GAAQjQ,EAAMiQ,KAAOjQ,EAAMvF,SAAY,IAAM,IAE1EuF,EAAMvF,SAAWuF,EAAMkQ,OACzBlQ,EAAMvF,SAAYuF,EAAMkQ,KAAO,GAAQlQ,EAAMvF,SAAWuF,EAAMkQ,KAAQ,IAAM,IAIzEjT,EAASmT,gBAAenT,EAASmT,cAAgBpQ,EAAMmQ,eAAe3e,GACtEyL,EAASoT,gBAAepT,EAASoT,cAAgBrQ,EAAMmQ,eAAe1e,GACtEwL,EAASqT,WAAUrT,EAASqT,SAAWv1B,KAAK8I,OACjDoZ,EAASzL,GAAKwO,EAAMmQ,eAAe3e,EAAIyL,EAASmT,gBAAkBr1B,KAAK8I,MAAQoZ,EAASqT,UAAY,EACpGrT,EAASxL,GAAKuO,EAAMmQ,eAAe1e,EAAIwL,EAASoT,gBAAkBt1B,KAAK8I,MAAQoZ,EAASqT,UAAY,EAChG7kB,KAAKwB,IAAI+S,EAAMmQ,eAAe3e,EAAIyL,EAASmT,eAAiB,IAAGnT,EAASzL,EAAI,GAC5E/F,KAAKwB,IAAI+S,EAAMmQ,eAAe1e,EAAIwL,EAASoT,eAAiB,IAAGpT,EAASxL,EAAI,GAChFwL,EAASmT,cAAgBpQ,EAAMmQ,eAAe3e,EAC9CyL,EAASoT,cAAgBrQ,EAAMmQ,eAAe1e,EAC9CwL,EAASqT,SAAWv1B,KAAK8I,MAEzBirB,EAAQM,aAAa3xB,yBAAyBuiB,EAAM1F,eAAe0F,EAAMvF,mBAE3E,aACE,MACMoU,EADS7hC,KACK6hC,MACd,QAAEC,EAAO,MAAE9O,EAAK,SAAE/C,GAAa4R,EACrC,IAAKC,EAAQK,UAAwC,IAA5BL,EAAQK,SAASpgC,OAAc,OACxD,IAAKixB,EAAM7F,YAAc6F,EAAM5F,QAG7B,OAFA4F,EAAM7F,WAAY,OAClB6F,EAAM5F,SAAU,GAGlB4F,EAAM7F,WAAY,EAClB6F,EAAM5F,SAAU,EAChB,IAAImW,EAAoB,IACpBC,EAAoB,IACxB,MAAMC,EAAoBxT,EAASzL,EAAI+e,EACjCG,EAAe1Q,EAAM1F,SAAWmW,EAChCE,EAAoB1T,EAASxL,EAAI+e,EACjCI,EAAe5Q,EAAMvF,SAAWkW,EAGnB,IAAf1T,EAASzL,IAAS+e,EAAoB9kB,KAAKwB,KAAKyjB,EAAe1Q,EAAM1F,UAAY2C,EAASzL,IAC3E,IAAfyL,EAASxL,IAAS+e,EAAoB/kB,KAAKwB,KAAK2jB,EAAe5Q,EAAMvF,UAAYwC,EAASxL,IAC9F,MAAMyL,EAAmBzR,KAAKK,IAAIykB,EAAmBC,GAErDxQ,EAAM1F,SAAWoW,EACjB1Q,EAAMvF,SAAWmW,EAGjB,MAAMf,EAAc7P,EAAM9W,MAAQ2lB,EAAK3D,MACjC4E,EAAe9P,EAAM7W,OAAS0lB,EAAK3D,MACzClL,EAAM+P,KAAOtkB,KAAKsL,IAAM+X,EAAQa,WAAa,EAAME,EAAc,EAAK,GACtE7P,EAAMgQ,MAAQhQ,EAAM+P,KACpB/P,EAAMiQ,KAAOxkB,KAAKsL,IAAM+X,EAAQc,YAAc,EAAME,EAAe,EAAK,GACxE9P,EAAMkQ,MAAQlQ,EAAMiQ,KACpBjQ,EAAM1F,SAAW7O,KAAKK,IAAIL,KAAKsL,IAAIiJ,EAAM1F,SAAU0F,EAAMgQ,MAAOhQ,EAAM+P,MACtE/P,EAAMvF,SAAWhP,KAAKK,IAAIL,KAAKsL,IAAIiJ,EAAMvF,SAAUuF,EAAMkQ,MAAOlQ,EAAMiQ,MAEtEnB,EAAQM,aAAaxxB,WAAWsf,GAAkBzf,yBAAyBuiB,EAAM1F,eAAe0F,EAAMvF,kBAExG,kBACE,MACMoU,EADS7hC,KACK6hC,MACd,QAAEC,GAAYD,EAChBC,EAAQ7J,UAHGj4B,KAGgB2jB,gBAHhB3jB,KAGyCuhB,cACtDugB,EAAQK,SAAS1xB,UAAU,+BAC3BqxB,EAAQM,aAAa3xB,UAAU,sBAE/BoxB,EAAK3D,MAAQ,EACb2D,EAAKX,aAAe,EAEpBY,EAAQ7J,cAAWzyB,EACnBs8B,EAAQK,cAAW38B,EACnBs8B,EAAQM,kBAAe58B,IAI3B,OAAO6L,GACL,MACMwwB,EADS7hC,KACK6hC,KAEhBA,EAAK3D,OAAwB,IAAf2D,EAAK3D,MAErB2D,EAAKgC,MAGLhC,EAAKiC,GAAGzyB,IAGZ,GAAGA,GACD,MAAMnR,EAASF,KAET6hC,EAAO3hC,EAAO2hC,KACd9pB,EAAS7X,EAAO6X,OAAO8pB,MACvB,QAAEC,EAAO,MAAE9O,GAAU6O,EAO3B,GALKC,EAAQ7J,WACX6J,EAAQ7J,SAAW/3B,EAAO6D,aAAeuK,EAAEpO,EAAO6D,cAAgB7D,EAAOqD,OAAOuR,GAAG5U,EAAOqhB,aAC1FugB,EAAQK,SAAWL,EAAQ7J,SAAShiB,KAAK,oBACzC6rB,EAAQM,aAAeN,EAAQK,SAAS52B,WAAWwM,EAAOzW,oBAEvDwgC,EAAQK,UAAwC,IAA5BL,EAAQK,SAASpgC,OAAc,OAIxD,IAAIgiC,EACAC,EACAC,EACAC,EACAxV,EACAC,EACAwV,EACAC,EACAC,EACAC,EACAzB,EACAC,EACAyB,EACAC,EACAC,EACAC,EACA/B,EACAC,EAnBJd,EAAQ7J,SAAS1oB,YAAYwI,EAAO4sB,yBAqBA,IAAzB3R,EAAM0P,aAAale,GAAqBnT,GACjD0yB,EAAoB,aAAX1yB,EAAEhI,KAAsBgI,EAAEoxB,eAAe,GAAGjV,MAAQnc,EAAEmc,MAC/DwW,EAAoB,aAAX3yB,EAAEhI,KAAsBgI,EAAEoxB,eAAe,GAAG/U,MAAQrc,EAAEqc,QAE/DqW,EAAS/Q,EAAM0P,aAAale,EAC5Bwf,EAAShR,EAAM0P,aAAaje,GAG9Bod,EAAK3D,MAAQ4D,EAAQM,aAAanyB,KAAK,qBAAuB8H,EAAOsqB,SACrER,EAAKX,aAAeY,EAAQM,aAAanyB,KAAK,qBAAuB8H,EAAOsqB,SACxEhxB,GACFsxB,EAAab,EAAQ7J,SAAS,GAAG9kB,YACjCyvB,EAAcd,EAAQ7J,SAAS,GAAG3kB,aAGlCob,GAFAuV,EAAUnC,EAAQ7J,SAAS1kB,SAASU,MAEhB0uB,EAAa,EAAMoB,EACvCpV,GAFAuV,EAAUpC,EAAQ7J,SAAS1kB,SAASS,KAEhB4uB,EAAc,EAAMoB,EAExCK,EAAavC,EAAQK,SAAS,GAAGhvB,YACjCmxB,EAAcxC,EAAQK,SAAS,GAAG7uB,aAClCuvB,EAAcwB,EAAaxC,EAAK3D,MAChC4E,EAAewB,EAAczC,EAAK3D,MAIlCuG,IAFAF,EAAgB9lB,KAAKsL,IAAM4Y,EAAa,EAAME,EAAc,EAAK,IAGjE6B,IAFAF,EAAgB/lB,KAAKsL,IAAM6Y,EAAc,EAAME,EAAe,EAAK,KAInEqB,EAAazV,EAAQmT,EAAK3D,OAGTqG,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,IANfL,EAAazV,EAAQkT,EAAK3D,OASTsG,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,KAGfP,EAAa,EACbC,EAAa,GAEftC,EAAQM,aAAaxxB,WAAW,KAAKH,yBAAyB0zB,QAAiBC,UAC/EtC,EAAQK,SAASvxB,WAAW,KAAKH,sCAAsCoxB,EAAK3D,WAE9E,MACE,MAAMh+B,EAASF,KAET6hC,EAAO3hC,EAAO2hC,KACd9pB,EAAS7X,EAAO6X,OAAO8pB,MACvB,QAAEC,GAAYD,EAEfC,EAAQ7J,WACX6J,EAAQ7J,SAAW/3B,EAAO6D,aAAeuK,EAAEpO,EAAO6D,cAAgB7D,EAAOqD,OAAOuR,GAAG5U,EAAOqhB,aAC1FugB,EAAQK,SAAWL,EAAQ7J,SAAShiB,KAAK,oBACzC6rB,EAAQM,aAAeN,EAAQK,SAAS52B,WAAWwM,EAAOzW,mBAEvDwgC,EAAQK,UAAwC,IAA5BL,EAAQK,SAASpgC,SAE1C8/B,EAAK3D,MAAQ,EACb2D,EAAKX,aAAe,EACpBY,EAAQM,aAAaxxB,WAAW,KAAKH,UAAU,sBAC/CqxB,EAAQK,SAASvxB,WAAW,KAAKH,UAAU,+BAC3CqxB,EAAQ7J,SAAStoB,eAAeoI,EAAO4sB,oBACvC7C,EAAQ7J,cAAWzyB,IAGrB,SACE,MAAMtF,EAASF,KACT6hC,EAAO3hC,EAAO2hC,KACpB,GAAIA,EAAK3kB,QAAS,OAClB2kB,EAAK3kB,SAAU,EAEf,MAAMnD,IAA+C,eAA7B7Z,EAAOwsB,YAAYqE,QAA0B,EAAQhX,kBAAmB7Z,EAAO6X,OAAOsU,mBAAmB,CAAE2E,SAAS,EAAM7f,SAAS,GAGvJ,EAAQ+I,UACVha,EAAOyc,WAAWnY,GAAG,eAAgB,gBAAiBq9B,EAAK+C,eAAgB7qB,GAC3E7Z,EAAOyc,WAAWnY,GAAG,gBAAiB,gBAAiBq9B,EAAKgD,gBAAiB9qB,GAC7E7Z,EAAOyc,WAAWnY,GAAG,aAAc,gBAAiBq9B,EAAKiD,aAAc/qB,IACjC,eAA7B7Z,EAAOwsB,YAAYqE,QAC5B7wB,EAAOyc,WAAWnY,GAAGtE,EAAOwsB,YAAYqE,MAAO,gBAAiB8Q,EAAK+C,eAAgB7qB,GACrF7Z,EAAOyc,WAAWnY,GAAGtE,EAAOwsB,YAAYuE,KAAM,gBAAiB4Q,EAAKgD,gBAAiB9qB,GACrF7Z,EAAOyc,WAAWnY,GAAGtE,EAAOwsB,YAAYwE,IAAK,gBAAiB2Q,EAAKiD,aAAc/qB,IAInF7Z,EAAOyc,WAAWnY,GAAGtE,EAAOwsB,YAAYuE,SAAU/wB,EAAO6X,OAAO8pB,KAAKvgC,iBAAkBugC,EAAKrT,cAE9F,UACE,MAAMtuB,EAASF,KACT6hC,EAAO3hC,EAAO2hC,KACpB,IAAKA,EAAK3kB,QAAS,OAEnBhd,EAAO2hC,KAAK3kB,SAAU,EAEtB,MAAMnD,IAA+C,eAA7B7Z,EAAOwsB,YAAYqE,QAA0B,EAAQhX,kBAAmB7Z,EAAO6X,OAAOsU,mBAAmB,CAAE2E,SAAS,EAAM7f,SAAS,GAGvJ,EAAQ+I,UACVha,EAAOyc,WAAW3K,IAAI,eAAgB,gBAAiB6vB,EAAK+C,eAAgB7qB,GAC5E7Z,EAAOyc,WAAW3K,IAAI,gBAAiB,gBAAiB6vB,EAAKgD,gBAAiB9qB,GAC9E7Z,EAAOyc,WAAW3K,IAAI,aAAc,gBAAiB6vB,EAAKiD,aAAc/qB,IAClC,eAA7B7Z,EAAOwsB,YAAYqE,QAC5B7wB,EAAOyc,WAAW3K,IAAI9R,EAAOwsB,YAAYqE,MAAO,gBAAiB8Q,EAAK+C,eAAgB7qB,GACtF7Z,EAAOyc,WAAW3K,IAAI9R,EAAOwsB,YAAYuE,KAAM,gBAAiB4Q,EAAKgD,gBAAiB9qB,GACtF7Z,EAAOyc,WAAW3K,IAAI9R,EAAOwsB,YAAYwE,IAAK,gBAAiB2Q,EAAKiD,aAAc/qB,IAIpF7Z,EAAOyc,WAAW3K,IAAI9R,EAAOwsB,YAAYuE,SAAU/wB,EAAO6X,OAAO8pB,KAAKvgC,iBAAkBugC,EAAKrT,eAkHjG,MAAMuW,EAAO,CACX,YAAYpwB,EAAOqwB,GAAkB,GACnC,MAAM9kC,EAASF,KACT+X,EAAS7X,EAAO6X,OAAO4f,KAC7B,QAAqB,IAAVhjB,EAAuB,OAClC,GAA6B,IAAzBzU,EAAOqD,OAAOxB,OAAc,OAChC,MAEMk2B,EAFY/3B,EAAO+c,SAAW/c,EAAO6X,OAAOkF,QAAQC,QAGtDhd,EAAOyc,WAAW5P,aAAa7M,EAAO6X,OAAOvW,uCAAuCmT,OACpFzU,EAAOqD,OAAOuR,GAAGH,GAErB,IAAIswB,EAAUhN,EAAShiB,SAAS8B,EAAOmtB,qBAAqBntB,EAAOotB,qBAAqBptB,EAAOqtB,kBAC3FnN,EAASpoB,SAASkI,EAAOmtB,eAAkBjN,EAASpoB,SAASkI,EAAOotB,cAAiBlN,EAASpoB,SAASkI,EAAOqtB,gBAChHH,EAAUA,EAAQv1B,IAAIuoB,EAAS,KAEV,IAAnBgN,EAAQljC,QAEZkjC,EAAQ7wB,KAAK,CAACixB,EAAY1S,KACxB,MAAMwP,EAAW7zB,EAAEqkB,GACnBwP,EAAS5yB,SAASwI,EAAOqtB,cAEzB,MAAME,EAAanD,EAASlyB,KAAK,mBAC3B2iB,EAAMuP,EAASlyB,KAAK,YACpB4iB,EAASsP,EAASlyB,KAAK,eACvB6iB,EAAQqP,EAASlyB,KAAK,cAE5B/P,EAAOwyB,UAAUyP,EAAS,GAAKvP,GAAO0S,EAAazS,EAAQC,GAAO,EAAO,KACvE,GAAI,MAAO5yB,GAA8CA,KAAWA,GAAWA,EAAO6X,UAAW7X,EAAOkH,UAAxG,CAqBA,GApBIk+B,GACFnD,EAASjuB,IAAI,2BAA4BoxB,OACzCnD,EAAS/xB,WAAW,qBAEhByiB,IACFsP,EAASlyB,KAAK,SAAU4iB,GACxBsP,EAAS/xB,WAAW,gBAElB0iB,IACFqP,EAASlyB,KAAK,QAAS6iB,GACvBqP,EAAS/xB,WAAW,eAElBwiB,IACFuP,EAASlyB,KAAK,MAAO2iB,GACrBuP,EAAS/xB,WAAW,cAIxB+xB,EAAS5yB,SAASwI,EAAOotB,aAAax1B,YAAYoI,EAAOqtB,cACzDnN,EAAShiB,SAAS8B,EAAOwtB,kBAAkB31B,SACvC1P,EAAO6X,OAAO7P,MAAQ88B,EAAiB,CACzC,MAAMQ,EAAqBvN,EAAShoB,KAAK,2BACzC,GAAIgoB,EAASpoB,SAAS3P,EAAO6X,OAAOuL,qBAAsB,CACxD,MAAMmiB,EAAgBvlC,EAAOyc,WAAW5P,sCAAsCy4B,YAA6BtlC,EAAO6X,OAAOuL,wBACzHpjB,EAAOy3B,KAAK+N,YAAYD,EAAc9wB,SAAS,OAC1C,CACL,MAAMgxB,EAAkBzlC,EAAOyc,WAAW5P,aAAa7M,EAAO6X,OAAOuL,gDAAgDkiB,OACrHtlC,EAAOy3B,KAAK+N,YAAYC,EAAgBhxB,SAAS,IAGrDzU,EAAO2C,KAAK,iBAAkBo1B,EAAS,GAAIkK,EAAS,OAGtDjiC,EAAO2C,KAAK,gBAAiBo1B,EAAS,GAAIkK,EAAS,OAGvD,OACE,MAAMjiC,EAASF,MACT,WACJ2c,EAAY5E,OAAQ8b,EAAY,OAAEtwB,EAAM,YAAEge,GACxCrhB,EACE8c,EAAY9c,EAAO+c,SAAW4W,EAAa5W,QAAQC,QACnDnF,EAAS8b,EAAa8D,KAE5B,IAAI/Y,EAAgBiV,EAAajV,cAKjC,SAASgnB,EAAWjxB,GAClB,GAAIqI,GACF,GAAIL,EAAW5P,aAAa8mB,EAAaryB,uCAAuCmT,OAAW5S,OACzF,OAAO,OAEJ,GAAIwB,EAAOoR,GAAQ,OAAO,EACjC,OAAO,EAET,SAASwQ,EAAW0P,GAClB,OAAI7X,EACK1O,EAAEumB,GAAS5kB,KAAK,2BAElB3B,EAAEumB,GAASlgB,QAIpB,GApBsB,SAAlBiK,IACFA,EAAgB,GAkBb1e,EAAOy3B,KAAKkO,qBAAoB3lC,EAAOy3B,KAAKkO,oBAAqB,GAClE3lC,EAAO6X,OAAOiJ,sBAChBrE,EAAW5P,aAAa8mB,EAAa/R,qBAAqB1N,KAAK,CAAC0xB,EAASjR,KACvE,MAAMlgB,EAAQqI,EAAY1O,EAAEumB,GAAS5kB,KAAK,2BAA6B3B,EAAEumB,GAASlgB,QAClFzU,EAAOy3B,KAAK+N,YAAY/wB,UAErB,GAAIiK,EAAgB,EACzB,IAAK,IAAIhd,EAAI2f,EAAa3f,EAAI2f,EAAc3C,EAAehd,GAAK,EAC1DgkC,EAAWhkC,IAAI1B,EAAOy3B,KAAK+N,YAAY9jC,QAG7C1B,EAAOy3B,KAAK+N,YAAYnkB,GAE1B,GAAIxJ,EAAOguB,aACT,GAAInnB,EAAgB,GAAM7G,EAAOiuB,oBAAsBjuB,EAAOiuB,mBAAqB,EAAI,CACrF,MAAMC,EAASluB,EAAOiuB,mBAChB1R,EAAM1V,EACNsnB,EAAWznB,KAAKsL,IAAIxI,EAAc+S,EAAM7V,KAAKK,IAAImnB,EAAQ3R,GAAM/wB,EAAOxB,QACtEokC,EAAW1nB,KAAKK,IAAIyC,EAAc9C,KAAKK,IAAIwV,EAAK2R,GAAS,GAE/D,IAAK,IAAIrkC,EAAI2f,EAAc3C,EAAehd,EAAIskC,EAAUtkC,GAAK,EACvDgkC,EAAWhkC,IAAI1B,EAAOy3B,KAAK+N,YAAY9jC,GAG7C,IAAK,IAAIA,EAAIukC,EAAUvkC,EAAI2f,EAAa3f,GAAK,EACvCgkC,EAAWhkC,IAAI1B,EAAOy3B,KAAK+N,YAAY9jC,OAExC,CACL,MAAM2hB,EAAY5G,EAAW5P,aAAa8mB,EAAa5Q,kBACnDM,EAAUxhB,OAAS,GAAG7B,EAAOy3B,KAAK+N,YAAYvgB,EAAW5B,IAE7D,MAAMC,EAAY7G,EAAW5P,aAAa8mB,EAAa3Q,kBACnDM,EAAUzhB,OAAS,GAAG7B,EAAOy3B,KAAK+N,YAAYvgB,EAAW3B,OAiFrE,MAAM4iB,EAAa,CACjBC,aAAc,SAAsB7hB,EAAGC,GACrC,MAAM6hB,EAAgB,WACpB,IAAIJ,EACAC,EACAI,EACJ,MAAO,CAACC,EAAOvgB,KAGb,IAFAkgB,GAAY,EACZD,EAAWM,EAAMzkC,OACVmkC,EAAWC,EAAW,GAEvBK,EADJD,EAAQL,EAAWC,GAAY,IACXlgB,EAClBkgB,EAAWI,EAEXL,EAAWK,EAGf,OAAOL,GAfU,GAwBrB,IAAIO,EACAC,EAaJ,OApBA1mC,KAAKwkB,EAAIA,EACTxkB,KAAKykB,EAAIA,EACTzkB,KAAK88B,UAAYtY,EAAEziB,OAAS,EAO5B/B,KAAK2mC,YAAc,SAAqBhF,GACtC,OAAKA,GAGL+E,EAAKJ,EAAatmC,KAAKwkB,EAAGmd,GAC1B8E,EAAKC,EAAK,GAIA/E,EAAK3hC,KAAKwkB,EAAEiiB,KAAQzmC,KAAKykB,EAAEiiB,GAAM1mC,KAAKykB,EAAEgiB,KAASzmC,KAAKwkB,EAAEkiB,GAAM1mC,KAAKwkB,EAAEiiB,IAAQzmC,KAAKykB,EAAEgiB,IAR9E,GAUXzmC,MAGT,uBAAuB4mC,GACrB,MAAM1mC,EAASF,KACVE,EAAO2mC,WAAWC,SACrB5mC,EAAO2mC,WAAWC,OAAS5mC,EAAO6X,OAAO7P,KACrC,IAAIk+B,EAAWC,aAAanmC,EAAOod,WAAYspB,EAAEtpB,YACjD,IAAI8oB,EAAWC,aAAanmC,EAAOmd,SAAUupB,EAAEvpB,YAGvD,aAAagH,EAAcC,GACzB,MAAMpkB,EAASF,KACT+mC,EAAa7mC,EAAO2mC,WAAWG,QACrC,IAAIC,EACAC,EACJ,SAASC,EAAuBP,GAK9B,MAAMhlB,EAAY1hB,EAAO2c,cAAgB3c,EAAO0hB,UAAY1hB,EAAO0hB,UAC/B,UAAhC1hB,EAAO6X,OAAO8uB,WAAWO,KAC3BlnC,EAAO2mC,WAAWQ,uBAAuBT,GAGzCM,GAAuBhnC,EAAO2mC,WAAWC,OAAOH,aAAa/kB,IAG1DslB,GAAuD,cAAhChnC,EAAO6X,OAAO8uB,WAAWO,KACnDH,GAAcL,EAAEpkB,eAAiBokB,EAAE1kB,iBAAmBhiB,EAAOsiB,eAAiBtiB,EAAOgiB,gBACrFglB,GAAwBtlB,EAAY1hB,EAAOgiB,gBAAkB+kB,EAAcL,EAAE1kB,gBAG3EhiB,EAAO6X,OAAO8uB,WAAWS,UAC3BJ,EAAsBN,EAAEpkB,eAAiB0kB,GAE3CN,EAAEtkB,eAAe4kB,GACjBN,EAAEviB,aAAa6iB,EAAqBhnC,GACpC0mC,EAAEnjB,oBACFmjB,EAAE/jB,sBAEJ,GAAI5gB,MAAM8Y,QAAQgsB,GAChB,IAAK,IAAInlC,EAAI,EAAGA,EAAImlC,EAAWhlC,OAAQH,GAAK,EACtCmlC,EAAWnlC,KAAO0iB,GAAgByiB,EAAWnlC,aAAc,GAC7DulC,EAAuBJ,EAAWnlC,SAG7BmlC,aAAsB,GAAUziB,IAAiByiB,GAC1DI,EAAuBJ,IAG3B,cAAcl2B,EAAUyT,GACtB,MAAMpkB,EAASF,KACT+mC,EAAa7mC,EAAO2mC,WAAWG,QACrC,IAAIplC,EACJ,SAAS2lC,EAAwBX,GAC/BA,EAAEtlB,cAAczQ,EAAU3Q,GACT,IAAb2Q,IACF+1B,EAAEjiB,kBACEiiB,EAAE7uB,OAAO+M,YACXtO,EAAMG,SAAS,KACbiwB,EAAE1lB,qBAGN0lB,EAAEjqB,WAAW/J,cAAc,KACpBm0B,IACDH,EAAE7uB,OAAO7P,MAAwC,UAAhChI,EAAO6X,OAAO8uB,WAAWO,IAC5CR,EAAE/gB,UAEJ+gB,EAAEh0B,oBAIR,GAAI3Q,MAAM8Y,QAAQgsB,GAChB,IAAKnlC,EAAI,EAAGA,EAAImlC,EAAWhlC,OAAQH,GAAK,EAClCmlC,EAAWnlC,KAAO0iB,GAAgByiB,EAAWnlC,aAAc,GAC7D2lC,EAAwBR,EAAWnlC,SAG9BmlC,aAAsB,GAAUziB,IAAiByiB,GAC1DQ,EAAwBR,KA8D9B,MAAMS,EAAO,CACXC,gBAAgBp9B,IACdA,EAAI4F,KAAK,WAAY,KACd5F,GAETq9B,UAAS,CAACr9B,EAAKs9B,KACbt9B,EAAI4F,KAAK,OAAQ03B,GACVt9B,GAETu9B,WAAU,CAACv9B,EAAKw9B,KACdx9B,EAAI4F,KAAK,aAAc43B,GAChBx9B,GAETy9B,UAAUz9B,IACRA,EAAI4F,KAAK,iBAAiB,GACnB5F,GAET09B,SAAS19B,IACPA,EAAI4F,KAAK,iBAAiB,GACnB5F,GAET,WAAWgH,GACT,MAAMnR,EAASF,KACT+X,EAAS7X,EAAO6X,OAAOyvB,KAC7B,GAAkB,KAAdn2B,EAAEonB,QAAgB,OACtB,MAAMuP,EAAY15B,EAAE+C,EAAEjO,QAClBlD,EAAOmI,YAAcnI,EAAOmI,WAAW4zB,SAAW+L,EAAUv2B,GAAGvR,EAAOmI,WAAW4zB,WAC7E/7B,EAAOwiB,QAAUxiB,EAAO6X,OAAO7P,MACnChI,EAAO0lB,YAEL1lB,EAAOwiB,MACTxiB,EAAOsnC,KAAKS,OAAOlwB,EAAOmwB,kBAE1BhoC,EAAOsnC,KAAKS,OAAOlwB,EAAOowB,mBAG1BjoC,EAAOmI,YAAcnI,EAAOmI,WAAW6zB,SAAW8L,EAAUv2B,GAAGvR,EAAOmI,WAAW6zB,WAC7Eh8B,EAAOuiB,cAAgBviB,EAAO6X,OAAO7P,MACzChI,EAAO6lB,YAEL7lB,EAAOuiB,YACTviB,EAAOsnC,KAAKS,OAAOlwB,EAAOqwB,mBAE1BloC,EAAOsnC,KAAKS,OAAOlwB,EAAOswB,mBAG1BnoC,EAAOoI,YAAc0/B,EAAUv2B,OAAOvR,EAAO6X,OAAOzP,WAAWo2B,gBACjEsJ,EAAU,GAAGn9B,SAGjB,OAAOy9B,GACL,MACMC,EADSvoC,KACawnC,KAAKgB,WACL,IAAxBD,EAAaxmC,SACjBwmC,EAAa75B,KAAK,IAClB65B,EAAa75B,KAAK45B,KAEpB,mBACE,MAAMpoC,EAASF,KAEf,GAAIE,EAAO6X,OAAO7P,KAAM,OACxB,MAAM,QAAE+zB,EAAO,QAAEC,GAAYh8B,EAAOmI,WAEhC6zB,GAAWA,EAAQn6B,OAAS,IAC1B7B,EAAOuiB,YACTviB,EAAOsnC,KAAKM,UAAU5L,GAEtBh8B,EAAOsnC,KAAKO,SAAS7L,IAGrBD,GAAWA,EAAQl6B,OAAS,IAC1B7B,EAAOwiB,MACTxiB,EAAOsnC,KAAKM,UAAU7L,GAEtB/7B,EAAOsnC,KAAKO,SAAS9L,KAI3B,mBACE,MAAM/7B,EAASF,KACT+X,EAAS7X,EAAO6X,OAAOyvB,KACzBtnC,EAAOoI,YAAcpI,EAAO6X,OAAOzP,WAAWw2B,WAAa5+B,EAAOoI,WAAWs0B,SAAW18B,EAAOoI,WAAWs0B,QAAQ76B,QACpH7B,EAAOoI,WAAWs0B,QAAQxoB,KAAK,CAACmpB,EAAakL,KAC3C,MAAMC,EAAYp6B,EAAEm6B,GACpBvoC,EAAOsnC,KAAKC,gBAAgBiB,GAC5BxoC,EAAOsnC,KAAKE,UAAUgB,EAAW,UACjCxoC,EAAOsnC,KAAKI,WAAWc,EAAW3wB,EAAO4wB,wBAAwBlmC,QAAQ,YAAaimC,EAAU/zB,QAAU,OAIhH,OACE,MAAMzU,EAASF,KAEfE,EAAOmK,IAAI2K,OAAO9U,EAAOsnC,KAAKgB,YAG9B,MAAMzwB,EAAS7X,EAAO6X,OAAOyvB,KAC7B,IAAIvL,EACAC,EACAh8B,EAAOmI,YAAcnI,EAAOmI,WAAW4zB,UACzCA,EAAU/7B,EAAOmI,WAAW4zB,SAE1B/7B,EAAOmI,YAAcnI,EAAOmI,WAAW6zB,UACzCA,EAAUh8B,EAAOmI,WAAW6zB,SAE1BD,IACF/7B,EAAOsnC,KAAKC,gBAAgBxL,GAC5B/7B,EAAOsnC,KAAKE,UAAUzL,EAAS,UAC/B/7B,EAAOsnC,KAAKI,WAAW3L,EAASlkB,EAAOowB,kBACvClM,EAAQz3B,GAAG,UAAWtE,EAAOsnC,KAAKoB,aAEhC1M,IACFh8B,EAAOsnC,KAAKC,gBAAgBvL,GAC5Bh8B,EAAOsnC,KAAKE,UAAUxL,EAAS,UAC/Bh8B,EAAOsnC,KAAKI,WAAW1L,EAASnkB,EAAOswB,kBACvCnM,EAAQ13B,GAAG,UAAWtE,EAAOsnC,KAAKoB,aAIhC1oC,EAAOoI,YAAcpI,EAAO6X,OAAOzP,WAAWw2B,WAAa5+B,EAAOoI,WAAWs0B,SAAW18B,EAAOoI,WAAWs0B,QAAQ76B,QACpH7B,EAAOoI,WAAW+B,IAAI7F,GAAG,cAAetE,EAAO6X,OAAOzP,WAAWo2B,cAAex+B,EAAOsnC,KAAKoB,aAGhG,UACE,MAAM1oC,EAASF,KAGf,IAAIi8B,EACAC,EAHAh8B,EAAOsnC,KAAKgB,YAActoC,EAAOsnC,KAAKgB,WAAWzmC,OAAS,GAAG7B,EAAOsnC,KAAKgB,WAAW54B,SAIpF1P,EAAOmI,YAAcnI,EAAOmI,WAAW4zB,UACzCA,EAAU/7B,EAAOmI,WAAW4zB,SAE1B/7B,EAAOmI,YAAcnI,EAAOmI,WAAW6zB,UACzCA,EAAUh8B,EAAOmI,WAAW6zB,SAE1BD,GACFA,EAAQjqB,IAAI,UAAW9R,EAAOsnC,KAAKoB,YAEjC1M,GACFA,EAAQlqB,IAAI,UAAW9R,EAAOsnC,KAAKoB,YAIjC1oC,EAAOoI,YAAcpI,EAAO6X,OAAOzP,WAAWw2B,WAAa5+B,EAAOoI,WAAWs0B,SAAW18B,EAAOoI,WAAWs0B,QAAQ76B,QACpH7B,EAAOoI,WAAW+B,IAAI2H,IAAI,cAAe9R,EAAO6X,OAAOzP,WAAWo2B,cAAex+B,EAAOsnC,KAAKoB,cA0DnG,MAAMC,EAAU,CACd,OACE,MAAM3oC,EAASF,KACf,IAAKE,EAAO6X,OAAOrK,QAAS,OAC5B,IAAKJ,EAAOI,UAAYJ,EAAOI,QAAQo7B,UAGrC,OAFA5oC,EAAO6X,OAAOrK,QAAQwP,SAAU,OAChChd,EAAO6X,OAAOgxB,eAAe7rB,SAAU,GAGzC,MAAMxP,EAAUxN,EAAOwN,QACvBA,EAAQ9E,aAAc,EACtB8E,EAAQlK,MAAQqlC,EAAQG,iBACnBt7B,EAAQlK,MAAM2B,KAAQuI,EAAQlK,MAAM6B,SACzCqI,EAAQu7B,cAAc,EAAGv7B,EAAQlK,MAAM6B,MAAOnF,EAAO6X,OAAOwU,oBACvDrsB,EAAO6X,OAAOrK,QAAQw7B,cACzB57B,EAAOvG,iBAAiB,WAAY7G,EAAOwN,QAAQy7B,sBAGvD,UACE,MAAMjpC,EAASF,KACVE,EAAO6X,OAAOrK,QAAQw7B,cACzB57B,EAAOhB,oBAAoB,WAAYpM,EAAOwN,QAAQy7B,qBAG1D,qBACiBnpC,KACR0N,QAAQlK,MAAQqlC,EAAQG,gBADhBhpC,KAER0N,QAAQu7B,cAFAjpC,KAEqB+X,OAAOoJ,MAF5BnhB,KAE0C0N,QAAQlK,MAAM6B,OAAO,IAEhF,gBACE,MAAM+jC,EAAY97B,EAAOF,SAASi8B,SAASruB,MAAM,GAAGhM,MAAM,KAAKyD,OAAO62B,GAAiB,KAATA,GACxE5M,EAAQ0M,EAAUrnC,OAGxB,MAAO,CAAEoD,IAFGikC,EAAU1M,EAAQ,GAEhBr3B,MADA+jC,EAAU1M,EAAQ,KAGlC,WAAWv3B,EAAKwP,GAEd,IADe3U,KACH0N,QAAQ9E,cADL5I,KAC4B+X,OAAOrK,QAAQwP,QAAS,OACnE,MAAM+B,EAFSjf,KAEMuD,OAAOuR,GAAGH,GAC/B,IAAItP,EAAQwjC,EAAQU,QAAQtqB,EAAMhP,KAAK,iBAClC3C,EAAOF,SAASi8B,SAAS5lC,SAAS0B,KACrCE,KAAWF,KAAOE,KAEpB,MAAMmkC,EAAel8B,EAAOI,QAAQ+7B,MAChCD,GAAgBA,EAAankC,QAAUA,IAR5BrF,KAWJ+X,OAAOrK,QAAQw7B,aACxB57B,EAAOI,QAAQw7B,aAAa,CAAE7jC,SAAS,KAAMA,GAE7CiI,EAAOI,QAAQo7B,UAAU,CAAEzjC,SAAS,KAAMA,KAG9CkkC,QAAQl1B,GACCA,EAAKqD,WACTjV,QAAQ,OAAQ,KAChBA,QAAQ,WAAY,IACpBA,QAAQ,OAAQ,KAChBA,QAAQ,MAAO,IACfA,QAAQ,MAAO,IAEpB,cAAc0e,EAAO9b,EAAOuf,GAC1B,MAAM1kB,EAASF,KACf,GAAIqF,EACF,IAAK,IAAIzD,EAAI,EAAGG,EAAS7B,EAAOqD,OAAOxB,OAAQH,EAAIG,EAAQH,GAAK,EAAG,CACjE,MAAMqd,EAAQ/e,EAAOqD,OAAOuR,GAAGlT,GAE/B,GADqBinC,EAAQU,QAAQtqB,EAAMhP,KAAK,mBAC3B5K,IAAU4Z,EAAMpP,SAAS3P,EAAO6X,OAAOuL,qBAAsB,CAChF,MAAM3O,EAAQsK,EAAMtK,QACpBzU,EAAO+kB,QAAQtQ,EAAOwM,EAAOyD,SAIjC1kB,EAAO+kB,QAAQ,EAAG9D,EAAOyD,KAgD/B,MAAM8kB,EAAiB,CACrB,cACE,MAAMxpC,EAASF,KACT2pC,EAAUx9B,EAASiB,SAASC,KAAK5K,QAAQ,IAAK,IAEpD,GAAIknC,IADoBzpC,EAAOqD,OAAOuR,GAAG5U,EAAOqhB,aAAatR,KAAK,aACjC,CAC/B,MAAMyV,EAAWxlB,EAAOyc,WAAW5P,aAAa7M,EAAO6X,OAAOvW,yBAAyBmoC,OAAah1B,QACpG,QAAwB,IAAb+Q,EAA0B,OACrCxlB,EAAO+kB,QAAQS,KAGnB,UACE,MAAMxlB,EAASF,KACf,GAAKE,EAAO6oC,eAAengC,aAAgB1I,EAAO6X,OAAOgxB,eAAe7rB,QACxE,GAAIhd,EAAO6X,OAAOgxB,eAAeG,cAAgB57B,EAAOI,SAAWJ,EAAOI,QAAQw7B,aAChF57B,EAAOI,QAAQw7B,aAAa,KAAM,SAAWhpC,EAAOqD,OAAOuR,GAAG5U,EAAOqhB,aAAatR,KAAK,gBAAkB,QACpG,CACL,MAAMgP,EAAQ/e,EAAOqD,OAAOuR,GAAG5U,EAAOqhB,aAChClU,EAAO4R,EAAMhP,KAAK,cAAgBgP,EAAMhP,KAAK,gBACnD9D,EAASiB,SAASC,KAAOA,GAAQ,KAGrC,OACE,MAAMnN,EAASF,KACf,IAAKE,EAAO6X,OAAOgxB,eAAe7rB,SAAYhd,EAAO6X,OAAOrK,SAAWxN,EAAO6X,OAAOrK,QAAQwP,QAAU,OACvGhd,EAAO6oC,eAAengC,aAAc,EACpC,MAAMyE,EAAOlB,EAASiB,SAASC,KAAK5K,QAAQ,IAAK,IACjD,GAAI4K,EAAM,CACR,MAAM8T,EAAQ,EACd,IAAK,IAAIvf,EAAI,EAAGG,EAAS7B,EAAOqD,OAAOxB,OAAQH,EAAIG,EAAQH,GAAK,EAAG,CACjE,MAAMqd,EAAQ/e,EAAOqD,OAAOuR,GAAGlT,GAE/B,IADkBqd,EAAMhP,KAAK,cAAgBgP,EAAMhP,KAAK,mBACtC5C,IAAS4R,EAAMpP,SAAS3P,EAAO6X,OAAOuL,qBAAsB,CAC5E,MAAM3O,EAAQsK,EAAMtK,QACpBzU,EAAO+kB,QAAQtQ,EAAOwM,EAAOjhB,EAAO6X,OAAOwU,oBAAoB,KAIjErsB,EAAO6X,OAAOgxB,eAAea,YAC/Bt7B,EAAEhB,GAAQ9I,GAAG,aAActE,EAAO6oC,eAAec,cAGrD,UACE,MAAM3pC,EAASF,KACXE,EAAO6X,OAAOgxB,eAAea,YAC/Bt7B,EAAEhB,GAAQ0E,IAAI,aAAc9R,EAAO6oC,eAAec,eAiDxD,MAAMC,EAAW,CACf,MACE,MAAM5pC,EAASF,KACT+pC,EAAiB7pC,EAAOqD,OAAOuR,GAAG5U,EAAOqhB,aAC/C,IAAI3K,EAAQ1W,EAAO6X,OAAO0jB,SAAS7kB,MAC/BmzB,EAAe95B,KAAK,0BACtB2G,EAAQmzB,EAAe95B,KAAK,yBAA2B/P,EAAO6X,OAAO0jB,SAAS7kB,OAEhF1W,EAAOu7B,SAASD,QAAUhlB,EAAMG,SAAS,KACnCzW,EAAO6X,OAAO0jB,SAASuO,iBACrB9pC,EAAO6X,OAAO7P,MAChBhI,EAAO2lB,UACP3lB,EAAO6lB,UAAU7lB,EAAO6X,OAAOoJ,OAAO,GAAM,GAC5CjhB,EAAO2C,KAAK,aACF3C,EAAOuiB,YAGPviB,EAAO6X,OAAO0jB,SAASwO,gBAIjC/pC,EAAOu7B,SAASE,QAHhBz7B,EAAO+kB,QAAQ/kB,EAAOqD,OAAOxB,OAAS,EAAG7B,EAAO6X,OAAOoJ,OAAO,GAAM,GACpEjhB,EAAO2C,KAAK,cAJZ3C,EAAO6lB,UAAU7lB,EAAO6X,OAAOoJ,OAAO,GAAM,GAC5CjhB,EAAO2C,KAAK,aAOL3C,EAAO6X,OAAO7P,MACvBhI,EAAO2lB,UACP3lB,EAAO0lB,UAAU1lB,EAAO6X,OAAOoJ,OAAO,GAAM,GAC5CjhB,EAAO2C,KAAK,aACF3C,EAAOwiB,MAGPxiB,EAAO6X,OAAO0jB,SAASwO,gBAIjC/pC,EAAOu7B,SAASE,QAHhBz7B,EAAO+kB,QAAQ,EAAG/kB,EAAO6X,OAAOoJ,OAAO,GAAM,GAC7CjhB,EAAO2C,KAAK,cAJZ3C,EAAO0lB,UAAU1lB,EAAO6X,OAAOoJ,OAAO,GAAM,GAC5CjhB,EAAO2C,KAAK,cAOb+T,IAEL,QAEE,YAAuC,IADxB5W,KACGy7B,SAASD,WADZx7B,KAEJy7B,SAASyO,UAFLlqC,KAGRy7B,SAASyO,SAAU,EAHXlqC,KAIR6C,KAAK,iBAJG7C,KAKRy7B,SAAS0O,OACT,KAET,OACE,MAAMjqC,EAASF,KACf,QAAKE,EAAOu7B,SAASyO,eACkB,IAA5BhqC,EAAOu7B,SAASD,UAEvBt7B,EAAOu7B,SAASD,UAClBttB,aAAahO,EAAOu7B,SAASD,SAC7Bt7B,EAAOu7B,SAASD,aAAUh2B,GAE5BtF,EAAOu7B,SAASyO,SAAU,EAC1BhqC,EAAO2C,KAAK,iBACL,KAET,MAAMse,GACJ,MAAMjhB,EAASF,KACVE,EAAOu7B,SAASyO,UACjBhqC,EAAOu7B,SAAS2O,SAChBlqC,EAAOu7B,SAASD,SAASttB,aAAahO,EAAOu7B,SAASD,SAC1Dt7B,EAAOu7B,SAAS2O,QAAS,EACX,IAAVjpB,GAAgBjhB,EAAO6X,OAAO0jB,SAAS4O,mBAIzCnqC,EAAOyc,WAAW,GAAG5V,iBAAiB,gBAAiB7G,EAAOu7B,SAAS6O,iBACvEpqC,EAAOyc,WAAW,GAAG5V,iBAAiB,sBAAuB7G,EAAOu7B,SAAS6O,mBAJ7EpqC,EAAOu7B,SAAS2O,QAAS,EACzBlqC,EAAOu7B,SAAS0O,WAiFtB,MAAMI,EAAO,CACX,eACE,MAAMrqC,EAASF,MACT,OAAEuD,GAAWrD,EACnB,IAAK,IAAI0B,EAAI,EAAGA,EAAI2B,EAAOxB,OAAQH,GAAK,EAAG,CACzC,MAAMq2B,EAAW/3B,EAAOqD,OAAOuR,GAAGlT,GAElC,IAAI4oC,GADWvS,EAAS,GAAGzW,kBAEtBthB,EAAO6X,OAAOoM,mBAAkBqmB,GAAMtqC,EAAO0hB,WAClD,IAAI6oB,EAAK,EACJvqC,EAAOoc,iBACVmuB,EAAKD,EACLA,EAAK,GAEP,MAAME,EAAexqC,EAAO6X,OAAO4yB,WAAWC,UAC1CnsB,KAAKK,IAAI,EAAIL,KAAKwB,IAAIgY,EAAS,GAAG5V,UAAW,GAC7C,EAAI5D,KAAKsL,IAAItL,KAAKK,IAAImZ,EAAS,GAAG5V,UAAW,GAAI,GACrD4V,EACG/jB,IAAI,CACHwrB,QAASgL,IAEVj6B,yBAAyB+5B,QAASC,eAGzC,cAAc55B,GACZ,MAAM3Q,EAASF,MACT,OAAEuD,EAAM,WAAEoZ,GAAezc,EAE/B,GADAqD,EAAOqN,WAAWC,GACd3Q,EAAO6X,OAAOoM,kBAAiC,IAAbtT,EAAgB,CACpD,IAAIg6B,GAAiB,EACrBtnC,EAAOqP,cAAc,KACnB,GAAIi4B,EAAgB,OACpB,IAAK3qC,GAAUA,EAAOkH,UAAW,OACjCyjC,GAAiB,EACjB3qC,EAAO8kB,WAAY,EACnB,MAAM8lB,EAAgB,CAAC,sBAAuB,iBAC9C,IAAK,IAAIlpC,EAAI,EAAGA,EAAIkpC,EAAc/oC,OAAQH,GAAK,EAC7C+a,EAAWvK,QAAQ04B,EAAclpC,SAoD3C,MAAMmpC,EAAO,CACX,eACE,MACM,IACJ1gC,EAAG,WAAEsS,EAAU,OAAEpZ,EAAQ2Y,MAAO8uB,EAAa7uB,OAAQ8uB,EAAcpuB,aAAcC,EAAKL,KAAMG,GAF/E5c,KAIT+X,EAJS/X,KAIO+X,OAAOmzB,WACvB5uB,EALStc,KAKasc,eACtBU,EANShd,KAMUid,SANVjd,KAM4B+X,OAAOkF,QAAQC,QAC1D,IACIiuB,EADAC,EAAgB,EAEhBrzB,EAAOszB,SACL/uB,GAE2B,KAD7B6uB,EAAgBxuB,EAAW1G,KAAK,wBACdlU,SAChBopC,EAAgB78B,EAAE,0CAClBqO,EAAW3H,OAAOm2B,IAEpBA,EAAcj3B,IAAI,CAAEiI,UAAW6uB,SAGF,KAD7BG,EAAgB9gC,EAAI4L,KAAK,wBACPlU,SAChBopC,EAAgB78B,EAAE,0CAClBjE,EAAI2K,OAAOm2B,KAIjB,IAAK,IAAIvpC,EAAI,EAAGA,EAAI2B,EAAOxB,OAAQH,GAAK,EAAG,CACzC,MAAMq2B,EAAW10B,EAAOuR,GAAGlT,GAC3B,IAAIujB,EAAavjB,EACbob,IACFmI,EAAa3I,SAASyb,EAAShoB,KAAK,2BAA4B,KAElE,IAAIq7B,EAA0B,GAAbnmB,EACbomB,EAAQ9sB,KAAKC,MAAM4sB,EAAa,KAChCxuB,IACFwuB,GAAcA,EACdC,EAAQ9sB,KAAKC,OAAO4sB,EAAa,MAEnC,MAAMjpB,EAAW5D,KAAKK,IAAIL,KAAKsL,IAAIkO,EAAS,GAAG5V,SAAU,IAAK,GAC9D,IAAImoB,EAAK,EACLC,EAAK,EACLe,EAAK,EACLrmB,EAAa,GAAM,GACrBqlB,EAAc,GAARe,EAAY3uB,EAClB4uB,EAAK,IACKrmB,EAAa,GAAK,GAAM,GAClCqlB,EAAK,EACLgB,EAAc,GAARD,EAAY3uB,IACRuI,EAAa,GAAK,GAAM,GAClCqlB,EAAK5tB,EAAsB,EAAR2uB,EAAY3uB,EAC/B4uB,EAAK5uB,IACKuI,EAAa,GAAK,GAAM,IAClCqlB,GAAM5tB,EACN4uB,EAAM,EAAI5uB,EAA4B,EAAbA,EAAiB2uB,GAExCzuB,IACF0tB,GAAMA,GAGHluB,IACHmuB,EAAKD,EACLA,EAAK,GAGP,MAAM/5B,aAAuB6L,EAAe,GAAKgvB,iBAA0BhvB,EAAegvB,EAAa,qBAAqBd,QAASC,QAASe,OAM9I,GALInpB,GAAY,GAAKA,GAAY,IAC/B+oB,EAA8B,GAAbjmB,EAA+B,GAAX9C,EACjCvF,IAAKsuB,EAA+B,IAAbjmB,EAA+B,GAAX9C,IAEjD4V,EAASxnB,UAAUA,GACfsH,EAAO0zB,aAAc,CAEvB,IAAIC,EAAepvB,EAAe2b,EAAShiB,KAAK,6BAA+BgiB,EAAShiB,KAAK,4BACzF01B,EAAcrvB,EAAe2b,EAAShiB,KAAK,8BAAgCgiB,EAAShiB,KAAK,+BACjE,IAAxBy1B,EAAa3pC,SACf2pC,EAAep9B,qCAAqCgO,EAAe,OAAS,iBAC5E2b,EAASjjB,OAAO02B,IAES,IAAvBC,EAAY5pC,SACd4pC,EAAcr9B,qCAAqCgO,EAAe,QAAU,oBAC5E2b,EAASjjB,OAAO22B,IAEdD,EAAa3pC,SAAQ2pC,EAAa,GAAGz+B,MAAMyyB,QAAUjhB,KAAKK,KAAKuD,EAAU,IACzEspB,EAAY5pC,SAAQ4pC,EAAY,GAAG1+B,MAAMyyB,QAAUjhB,KAAKK,IAAIuD,EAAU,KAU9E,GAPA1F,EAAWzI,IAAI,CACb,uCAAwC0I,EAAa,MACrD,oCAAqCA,EAAa,MAClD,mCAAoCA,EAAa,MACjD,+BAAgCA,EAAa,QAG3C7E,EAAOszB,OACT,GAAI/uB,EACF6uB,EAAc16B,8BAA+Bu6B,EAAc,EAAKjzB,EAAO6zB,oBAAoBZ,EAAc,2CAA2CjzB,EAAO8zB,oBACtJ,CACL,MAAMC,EAAcrtB,KAAKwB,IAAImrB,GAA6D,GAA3C3sB,KAAKC,MAAMD,KAAKwB,IAAImrB,GAAiB,IAC9EnE,EAAa,KAChBxoB,KAAKstB,IAAmB,EAAdD,EAAkBrtB,KAAKqQ,GAAM,KAAO,EAC5CrQ,KAAKutB,IAAmB,EAAdF,EAAkBrtB,KAAKqQ,GAAM,KAAO,GAE7Cmd,EAASl0B,EAAO8zB,YAChBK,EAASn0B,EAAO8zB,YAAc5E,EAC9B1zB,EAASwE,EAAO6zB,aACtBT,EAAc16B,qBAAqBw7B,SAAcC,uBAA6BjB,EAAe,EAAK13B,SAAc03B,EAAe,EAAIiB,wBAGvI,MAAMC,EAAW,EAAQ9xB,UAAY,EAAQE,aAAiBqC,EAAa,EAAK,EAChFD,EACGlM,+BAA+B07B,gBA7GnBnsC,KA6GgDsc,eAAiB,EAAI8uB,iBA7GrEprC,KA6GyGsc,gBAAkB8uB,EAAgB,UAE5J,cAAcv6B,GACZ,MACM,IAAExG,EAAG,OAAE9G,GADEvD,KAEfuD,EACGqN,WAAWC,GACXoF,KAAK,gHACLrF,WAAWC,GALC7Q,KAMJ+X,OAAOmzB,WAAWG,SANdrrC,KAMgCsc,gBAC7CjS,EAAI4L,KAAK,uBAAuBrF,WAAWC,KAwDjD,MAAMu7B,EAAO,CACX,eACE,MAAMlsC,EAASF,MACT,OAAEuD,EAAQsZ,aAAcC,GAAQ5c,EACtC,IAAK,IAAI0B,EAAI,EAAGA,EAAI2B,EAAOxB,OAAQH,GAAK,EAAG,CACzC,MAAMq2B,EAAW10B,EAAOuR,GAAGlT,GAC3B,IAAIygB,EAAW4V,EAAS,GAAG5V,SACvBniB,EAAO6X,OAAOs0B,WAAWC,gBAC3BjqB,EAAW5D,KAAKK,IAAIL,KAAKsL,IAAIkO,EAAS,GAAG5V,SAAU,IAAK,IAI1D,IAAIkqB,GADY,IAAMlqB,EAElBmqB,EAAU,EACVhC,GAJWvS,EAAS,GAAGzW,kBAKvBipB,EAAK,EAYT,GAXKvqC,EAAOoc,eAKDQ,IACTyvB,GAAWA,IALX9B,EAAKD,EACLA,EAAK,EACLgC,GAAWD,EACXA,EAAU,GAKZtU,EAAS,GAAGhrB,MAAMw/B,QAAUhuB,KAAKwB,IAAIxB,KAAK8sB,MAAMlpB,IAAa9e,EAAOxB,OAEhE7B,EAAO6X,OAAOs0B,WAAWZ,aAAc,CAEzC,IAAIC,EAAexrC,EAAOoc,eAAiB2b,EAAShiB,KAAK,6BAA+BgiB,EAAShiB,KAAK,4BAClG01B,EAAczrC,EAAOoc,eAAiB2b,EAAShiB,KAAK,8BAAgCgiB,EAAShiB,KAAK,+BAC1E,IAAxBy1B,EAAa3pC,SACf2pC,EAAep9B,qCAAqCpO,EAAOoc,eAAiB,OAAS,iBACrF2b,EAASjjB,OAAO02B,IAES,IAAvBC,EAAY5pC,SACd4pC,EAAcr9B,qCAAqCpO,EAAOoc,eAAiB,QAAU,oBACrF2b,EAASjjB,OAAO22B,IAEdD,EAAa3pC,SAAQ2pC,EAAa,GAAGz+B,MAAMyyB,QAAUjhB,KAAKK,KAAKuD,EAAU,IACzEspB,EAAY5pC,SAAQ4pC,EAAY,GAAG1+B,MAAMyyB,QAAUjhB,KAAKK,IAAIuD,EAAU,IAE5E4V,EACGxnB,yBAAyB+5B,QAASC,qBAAsB+B,iBAAuBD,WAGtF,cAAc17B,GACZ,MAAM3Q,EAASF,MACT,OAAEuD,EAAM,YAAEge,EAAW,WAAE5E,GAAezc,EAK5C,GAJAqD,EACGqN,WAAWC,GACXoF,KAAK,gHACLrF,WAAWC,GACV3Q,EAAO6X,OAAOoM,kBAAiC,IAAbtT,EAAgB,CACpD,IAAIg6B,GAAiB,EAErBtnC,EAAOuR,GAAGyM,GAAa3O,cAAc,WACnC,GAAIi4B,EAAgB,OACpB,IAAK3qC,GAAUA,EAAOkH,UAAW,OAEjCyjC,GAAiB,EACjB3qC,EAAO8kB,WAAY,EACnB,MAAM8lB,EAAgB,CAAC,sBAAuB,iBAC9C,IAAK,IAAIlpC,EAAI,EAAGA,EAAIkpC,EAAc/oC,OAAQH,GAAK,EAC7C+a,EAAWvK,QAAQ04B,EAAclpC,SAsD3C,MAAM8qC,EAAY,CAChB,eACE,MAEExwB,MAAO8uB,EAAa7uB,OAAQ8uB,EAAY,OAAE1nC,EAAM,WAAEoZ,EAAU,gBAAEY,GAFjDvd,KAIT+X,EAJS/X,KAIO+X,OAAO40B,gBACvBrwB,EALStc,KAKasc,eACtB7L,EANSzQ,KAMU4hB,UACnBgrB,EAAStwB,EAA6B0uB,EAAc,EAA3Bv6B,EAA8Cw6B,EAAe,EAA5Bx6B,EAC1Do8B,EAASvwB,EAAevE,EAAO80B,QAAU90B,EAAO80B,OAChDjrB,EAAY7J,EAAO+0B,MAEzB,IAAK,IAAIlrC,EAAI,EAAGG,EAASwB,EAAOxB,OAAQH,EAAIG,EAAQH,GAAK,EAAG,CAC1D,MAAMq2B,EAAW10B,EAAOuR,GAAGlT,GACrBmc,EAAYR,EAAgB3b,GAE5BmrC,GAAqBH,EADP3U,EAAS,GAAGzW,kBACmBzD,EAAY,GAAMA,EAAahG,EAAOi1B,SAEzF,IAAIT,EAAUjwB,EAAeuwB,EAASE,EAAmB,EACrDP,EAAUlwB,EAAe,EAAIuwB,EAASE,EAEtCE,GAAcrrB,EAAYnD,KAAKwB,IAAI8sB,GAEnC3I,EAAa9nB,EAAe,EAAIvE,EAAOm1B,QAAU,EACjD/I,EAAa7nB,EAAevE,EAAOm1B,QAAU,EAAqB,EAGlEzuB,KAAKwB,IAAIkkB,GAAc,OAAOA,EAAa,GAC3C1lB,KAAKwB,IAAImkB,GAAc,OAAOA,EAAa,GAC3C3lB,KAAKwB,IAAIgtB,GAAc,OAAOA,EAAa,GAC3CxuB,KAAKwB,IAAIssB,GAAW,OAAOA,EAAU,GACrC9tB,KAAKwB,IAAIusB,GAAW,OAAOA,EAAU,GAEzC,MAAMW,iBAAgChJ,OAAgBC,OAAgB6I,iBAA0BT,iBAAuBD,QAIvH,GAFAtU,EAASxnB,UAAU08B,GACnBlV,EAAS,GAAGhrB,MAAMw/B,OAAmD,EAAzChuB,KAAKwB,IAAIxB,KAAK8sB,MAAMwB,IAC5Ch1B,EAAO0zB,aAAc,CAEvB,IAAI2B,EAAkB9wB,EAAe2b,EAAShiB,KAAK,6BAA+BgiB,EAAShiB,KAAK,4BAC5Fo3B,EAAiB/wB,EAAe2b,EAAShiB,KAAK,8BAAgCgiB,EAAShiB,KAAK,+BACjE,IAA3Bm3B,EAAgBrrC,SAClBqrC,EAAkB9+B,qCAAqCgO,EAAe,OAAS,iBAC/E2b,EAASjjB,OAAOo4B,IAEY,IAA1BC,EAAetrC,SACjBsrC,EAAiB/+B,qCAAqCgO,EAAe,QAAU,oBAC/E2b,EAASjjB,OAAOq4B,IAEdD,EAAgBrrC,SAAQqrC,EAAgB,GAAGngC,MAAMyyB,QAAUqN,EAAmB,EAAIA,EAAmB,GACrGM,EAAetrC,SAAQsrC,EAAe,GAAGpgC,MAAMyyB,SAAYqN,EAAoB,GAAKA,EAAmB,IAK/G,GAAI,EAAQzzB,eAAiB,EAAQG,sBAAuB,CAC/CkD,EAAW,GAAG1P,MACtBqgC,qBAAuBV,YAG9B,cAAc/7B,GACG7Q,KACRuD,OACJqN,WAAWC,GACXoF,KAAK,gHACLrF,WAAWC,KAgDlB,MAAM08B,EAAS,CACb,OACE,MAAMrtC,EAASF,MACPwtC,OAAQC,GAAiBvtC,EAAO6X,OAClCpX,EAAcT,EAAOqY,YACvBk1B,EAAavtC,kBAAkBS,GACjCT,EAAOstC,OAAOttC,OAASutC,EAAavtC,OACpCsW,EAAMvN,OAAO/I,EAAOstC,OAAOttC,OAAOwxB,eAAgB,CAChD3Q,qBAAqB,EACrBkD,qBAAqB,IAEvBzN,EAAMvN,OAAO/I,EAAOstC,OAAOttC,OAAO6X,OAAQ,CACxCgJ,qBAAqB,EACrBkD,qBAAqB,KAEdzN,EAAM6B,SAASo1B,EAAavtC,UACrCA,EAAOstC,OAAOttC,OAAS,IAAIS,EAAY6V,EAAMvN,OAAO,GAAIwkC,EAAavtC,OAAQ,CAC3E8gB,uBAAuB,EACvBD,qBAAqB,EACrBkD,qBAAqB,KAEvB/jB,EAAOstC,OAAOE,eAAgB,GAEhCxtC,EAAOstC,OAAOttC,OAAOmK,IAAIkF,SAASrP,EAAO6X,OAAOy1B,OAAOG,sBACvDztC,EAAOstC,OAAOttC,OAAOsE,GAAG,MAAOtE,EAAOstC,OAAOI,eAE/C,eACE,MAAM1tC,EAASF,KACT6tC,EAAe3tC,EAAOstC,OAAOttC,OACnC,IAAK2tC,EAAc,OACnB,MAAMjqC,EAAeiqC,EAAajqC,aAC5BG,EAAe8pC,EAAa9pC,aAClC,GAAIA,GAAgBuK,EAAEvK,GAAc8L,SAAS3P,EAAO6X,OAAOy1B,OAAOM,uBAAwB,OAC1F,GAAI,MAAOlqC,EAAuD,OAClE,IAAI8iB,EAMJ,GAJEA,EADEmnB,EAAa91B,OAAO7P,KACPsU,SAASlO,EAAEu/B,EAAa9pC,cAAckM,KAAK,2BAA4B,IAEvErM,EAEb1D,EAAO6X,OAAO7P,KAAM,CACtB,IAAI6lC,EAAe7tC,EAAOqhB,YACtBrhB,EAAOqD,OAAOuR,GAAGi5B,GAAcl+B,SAAS3P,EAAO6X,OAAOuL,uBACxDpjB,EAAO2lB,UAEP3lB,EAAO4lB,YAAc5lB,EAAOyc,WAAW,GAAGhJ,WAC1Co6B,EAAe7tC,EAAOqhB,aAExB,MAAM8E,EAAYnmB,EAAOqD,OAAOuR,GAAGi5B,GAAcl4B,qCAAqC6Q,OAAkB5R,GAAG,GAAGH,QACxGgE,EAAYzY,EAAOqD,OAAOuR,GAAGi5B,GAAct4B,qCAAqCiR,OAAkB5R,GAAG,GAAGH,QACxE+R,OAAb,IAAdL,EAA0C1N,OACvB,IAAdA,EAA0C0N,EACjD1N,EAAYo1B,EAAeA,EAAe1nB,EAA0B1N,EACzD0N,EAEtBnmB,EAAO+kB,QAAQyB,IAEjB,OAAOsnB,GACL,MAAM9tC,EAASF,KACT6tC,EAAe3tC,EAAOstC,OAAOttC,OACnC,IAAK2tC,EAAc,OAEnB,MAAMjvB,EAAsD,SAAtCivB,EAAa91B,OAAO6G,cACtCivB,EAAapnB,uBACbonB,EAAa91B,OAAO6G,cAExB,GAAI1e,EAAO4iB,YAAc+qB,EAAa/qB,UAAW,CAC/C,IACImrB,EADAC,EAAqBL,EAAatsB,YAEtC,GAAIssB,EAAa91B,OAAO7P,KAAM,CACxB2lC,EAAatqC,OAAOuR,GAAGo5B,GAAoBr+B,SAASg+B,EAAa91B,OAAOuL,uBAC1EuqB,EAAahoB,UAEbgoB,EAAa/nB,YAAc+nB,EAAalxB,WAAW,GAAGhJ,WACtDu6B,EAAqBL,EAAatsB,aAGpC,MAAM4sB,EAAkBN,EAAatqC,OAAOuR,GAAGo5B,GAAoBr4B,qCAAqC3V,EAAO4iB,eAAehO,GAAG,GAAGH,QAC9Hy5B,EAAkBP,EAAatqC,OAAOuR,GAAGo5B,GAAoBz4B,qCAAqCvV,EAAO4iB,eAAehO,GAAG,GAAGH,QACxFs5B,OAAb,IAApBE,EAAkDC,OACzB,IAApBA,EAAkDD,EACzDC,EAAkBF,GAAuBA,EAAqBC,EAAkCD,EAChGE,EAAkBF,EAAqBA,EAAqBC,EAAkCC,EACjFD,OAEtBF,EAAiB/tC,EAAO4iB,UAEtB+qB,EAAa9rB,qBAAqBjb,QAAQmnC,GAAkB,IAC1DJ,EAAa91B,OAAOiI,eAEpBiuB,EADEA,EAAiBC,EACFD,EAAiBxvB,KAAKC,MAAME,EAAgB,GAAK,EAEjDqvB,EAAiBxvB,KAAKC,MAAME,EAAgB,GAAK,EAE3DqvB,EAAiBC,IAC1BD,EAAiBA,EAAiBrvB,EAAgB,GAEpDivB,EAAa5oB,QAAQgpB,EAAgBD,EAAU,OAAIxoC,IAKvD,IAAI6oC,EAAmB,EACvB,MAAMC,EAAmBpuC,EAAO6X,OAAOy1B,OAAOM,sBAO9C,GALI5tC,EAAO6X,OAAO6G,cAAgB,IAAM1e,EAAO6X,OAAOiI,iBACpDquB,EAAmBnuC,EAAO6X,OAAO6G,eAGnCivB,EAAatqC,OAAOoM,YAAY2+B,GAC5BT,EAAa91B,OAAO7P,KACtB,IAAK,IAAItG,EAAI,EAAGA,EAAIysC,EAAkBzsC,GAAK,EACzCisC,EAAalxB,WAAW5P,sCAAsC7M,EAAO4iB,UAAYlhB,OAAO2N,SAAS++B,QAGnG,IAAK,IAAI1sC,EAAI,EAAGA,EAAIysC,EAAkBzsC,GAAK,EACzCisC,EAAatqC,OAAOuR,GAAG5U,EAAO4iB,UAAYlhB,GAAG2N,SAAS++B,KAwE9D,MAAM/tC,EAAa,CACjB20B,EACAC,EACAE,EACAE,EACAsB,EACAwB,EACAmB,EAvlGiB,CACjB/yB,KAAM,aACNsR,OAAQ,CACNkjB,WAAY,CACV/d,SAAS,EACTge,gBAAgB,EAChBI,QAAQ,EACRD,aAAa,EACbE,YAAa,EACbM,aAAc,cAGlB,SAEErlB,EAAMvN,OADSjJ,KACM,CACnBi7B,WAAY,CACV/d,SAAS,EACTuc,OAAQE,EAAWF,OAAO7yB,KAJf5G,MAKX05B,QAASC,EAAWD,QAAQ9yB,KALjB5G,MAMX0G,OAAQizB,EAAWjzB,OAAOE,KANf5G,MAOX87B,iBAAkBnC,EAAWmC,iBAAiBl1B,KAPnC5G,MAQX+7B,iBAAkBpC,EAAWoC,iBAAiBn1B,KARnC5G,MASX45B,eAAgBpjB,EAAMK,UAI5BrS,GAAI,CACF,OACiBxE,KACJ+X,OAAOkjB,WAAW/d,SADdld,KAC8Bi7B,WAAWxB,UAE1D,UACiBz5B,KACJi7B,WAAW/d,SADPld,KACuBi7B,WAAWvB,aAqGpC,CACjBjzB,KAAM,aACNsR,OAAQ,CACN1P,WAAY,CACVg0B,OAAQ,KACRC,OAAQ,KAERiS,aAAa,EACbpS,cAAe,yBACf+C,YAAa,uBACb9C,UAAW,uBAGf,SAEE5lB,EAAMvN,OADSjJ,KACM,CACnBqI,WAAY,CACV4hB,KAAM+R,EAAW/R,KAAKrjB,KAHX5G,MAIXoI,OAAQ4zB,EAAW5zB,OAAOxB,KAJf5G,MAKX6I,QAASmzB,EAAWnzB,QAAQjC,KALjB5G,MAMXu8B,YAAaP,EAAWO,YAAY31B,KANzB5G,MAOXw8B,YAAaR,EAAWQ,YAAY51B,KAPzB5G,UAWjBwE,GAAI,CACF,OACiBxE,KACRqI,WAAW4hB,OADHjqB,KAERqI,WAAWD,UAEpB,SACiBpI,KACRqI,WAAWD,UAEpB,WACiBpI,KACRqI,WAAWD,UAEpB,UACiBpI,KACRqI,WAAWQ,WAEpB,MAAMwI,GACJ,MAAMnR,EAASF,MACT,QAAEi8B,EAAO,QAAEC,GAAYh8B,EAAOmI,WACpC,GACEnI,EAAO6X,OAAO1P,WAAWkmC,cACrBjgC,EAAE+C,EAAEjO,QAAQqO,GAAGyqB,KACf5tB,EAAE+C,EAAEjO,QAAQqO,GAAGwqB,GACnB,CACA,IAAIuS,EACAvS,EACFuS,EAAWvS,EAAQpsB,SAAS3P,EAAO6X,OAAO1P,WAAW62B,aAC5ChD,IACTsS,EAAWtS,EAAQrsB,SAAS3P,EAAO6X,OAAO1P,WAAW62B,eAEtC,IAAbsP,EACFtuC,EAAO2C,KAAK,iBAAkB3C,GAE9BA,EAAO2C,KAAK,iBAAkB3C,GAE5B+7B,GACFA,EAAQlsB,YAAY7P,EAAO6X,OAAO1P,WAAW62B,aAE3ChD,GACFA,EAAQnsB,YAAY7P,EAAO6X,OAAO1P,WAAW62B,iBAmPpC,CACjBz4B,KAAM,aACNsR,OAAQ,CACNzP,WAAY,CACVgI,GAAI,KACJquB,cAAe,OACfG,WAAW,EACXyP,aAAa,EACb9P,aAAc,KACdI,kBAAmB,KACnBD,eAAgB,KAChBN,aAAc,KACdL,qBAAqB,EACrB50B,KAAM,UACN2zB,gBAAgB,EAChBE,mBAAoB,EACpBW,sBAAuB4Q,GAAUA,EACjC1Q,oBAAqB0Q,GAAUA,EAC/B/P,YAAa,2BACbtB,kBAAmB,kCACnB4B,cAAe,qBACfpB,aAAc,4BACdE,WAAY,0BACZoB,YAAa,2BACbb,qBAAsB,qCACtBY,yBAA0B,yCAC1BF,eAAgB,8BAChB3C,UAAW,2BAGf,SAEE5lB,EAAMvN,OADSjJ,KACM,CACnBsI,WAAY,CACV2hB,KAAMhf,EAAWgf,KAAKrjB,KAHX5G,MAIXuI,OAAQ0C,EAAW1C,OAAO3B,KAJf5G,MAKXoI,OAAQ6C,EAAW7C,OAAOxB,KALf5G,MAMX6I,QAASoC,EAAWpC,QAAQjC,KANjB5G,MAOXm9B,mBAAoB,MAI1B34B,GAAI,CACF,OACiBxE,KACRsI,WAAW2hB,OADHjqB,KAERsI,WAAWC,SAFHvI,KAGRsI,WAAWF,UAEpB,oBACE,MAAMlI,EAASF,KACXE,EAAO6X,OAAO7P,KAChBhI,EAAOoI,WAAWF,cACmB,IAArBlI,EAAO0gB,WACvB1gB,EAAOoI,WAAWF,UAGtB,kBACE,MAAMlI,EAASF,KACVE,EAAO6X,OAAO7P,MACjBhI,EAAOoI,WAAWF,UAGtB,qBACE,MAAMlI,EAASF,KACXE,EAAO6X,OAAO7P,OAChBhI,EAAOoI,WAAWC,SAClBrI,EAAOoI,WAAWF,WAGtB,uBACE,MAAMlI,EAASF,KACVE,EAAO6X,OAAO7P,OACjBhI,EAAOoI,WAAWC,SAClBrI,EAAOoI,WAAWF,WAGtB,UACiBpI,KACRsI,WAAWO,WAEpB,MAAMwI,GACJ,MAAMnR,EAASF,KACf,GACEE,EAAO6X,OAAOzP,WAAWgI,IACtBpQ,EAAO6X,OAAOzP,WAAWimC,aACzBruC,EAAOoI,WAAW+B,IAAItI,OAAS,IAC9BuM,EAAE+C,EAAEjO,QAAQyM,SAAS3P,EAAO6X,OAAOzP,WAAWo2B,aAClD,EAEiB,IADAx+B,EAAOoI,WAAW+B,IAAIwF,SAAS3P,EAAO6X,OAAOzP,WAAW42B,aAEvEh/B,EAAO2C,KAAK,iBAAkB3C,GAE9BA,EAAO2C,KAAK,iBAAkB3C,GAEhCA,EAAOoI,WAAW+B,IAAI0F,YAAY7P,EAAO6X,OAAOzP,WAAW42B,iBAkQjD,CAChBz4B,KAAM,YACNsR,OAAQ,CACNonB,UAAW,CACT7uB,GAAI,KACJ8uB,SAAU,OACVK,MAAM,EACNmB,WAAW,EACXR,eAAe,EACfhE,UAAW,wBACXsE,UAAW,0BAGf,SAEElqB,EAAMvN,OADSjJ,KACM,CACnBm/B,UAAW,CACTlV,KAAM7e,EAAU6e,KAAKrjB,KAHV5G,MAIX6I,QAASuC,EAAUvC,QAAQjC,KAJhB5G,MAKXic,WAAY7Q,EAAU6Q,WAAWrV,KALtB5G,MAMXqkB,aAAcjZ,EAAUiZ,aAAazd,KAN1B5G,MAOXshB,cAAelW,EAAUkW,cAAc1a,KAP5B5G,MAQX6gC,gBAAiBz1B,EAAUy1B,gBAAgBj6B,KARhC5G,MASX8gC,iBAAkB11B,EAAU01B,iBAAiBl6B,KATlC5G,MAUXkgC,gBAAiB90B,EAAU80B,gBAAgBt5B,KAVhC5G,MAWXsgC,YAAal1B,EAAUk1B,YAAY15B,KAXxB5G,MAYXugC,WAAYn1B,EAAUm1B,WAAW35B,KAZtB5G,MAaXwgC,UAAWp1B,EAAUo1B,UAAU55B,KAbpB5G,MAcXmtB,WAAW,EACXqO,QAAS,KACT2E,YAAa,SAInB37B,GAAI,CACF,OACiBxE,KACRm/B,UAAUlV,OADFjqB,KAERm/B,UAAUljB,aAFFjc,KAGRm/B,UAAU9a,gBAEnB,SACiBrkB,KACRm/B,UAAUljB,cAEnB,SACiBjc,KACRm/B,UAAUljB,cAEnB,iBACiBjc,KACRm/B,UAAUljB,cAEnB,eACiBjc,KACRm/B,UAAU9a,gBAEnB,cAAcxT,GACG7Q,KACRm/B,UAAU7d,cAAczQ,IAEjC,UACiB7Q,KACRm/B,UAAUt2B,aAsFN,CACfpC,KAAM,WACNsR,OAAQ,CACNopB,SAAU,CACRjkB,SAAS,IAGb,SAEE1G,EAAMvN,OADSjJ,KACM,CACnBmhC,SAAU,CACRC,aAAcL,EAASK,aAAax6B,KAHzB5G,MAIXqkB,aAAc0c,EAAS1c,aAAazd,KAJzB5G,MAKXshB,cAAeyf,EAASzf,cAAc1a,KAL3B5G,UASjBwE,GAAI,CACF,aACiBxE,KACH+X,OAAOopB,SAASjkB,UADbld,KAER+X,OAAOgJ,qBAAsB,EAFrB/gB,KAGR0xB,eAAe3Q,qBAAsB,IAE9C,OACiB/gB,KACH+X,OAAOopB,SAASjkB,SADbld,KAERmhC,SAAS9c,gBAElB,eACiBrkB,KACH+X,OAAOopB,SAASjkB,SADbld,KAERmhC,SAAS9c,gBAElB,cAAcxT,GACG7Q,KACH+X,OAAOopB,SAASjkB,SADbld,KAERmhC,SAAS7f,cAAczQ,MAkavB,CACXpK,KAAM,OACNsR,OAAQ,CACN8pB,KAAM,CACJ3kB,SAAS,EACTmlB,SAAU,EACVG,SAAU,EACVxyB,QAAQ,EACR1O,eAAgB,wBAChBqjC,iBAAkB,wBAGtB,SACE,MAAMzkC,EAASF,KACT6hC,EAAO,CACX3kB,SAAS,EACTghB,MAAO,EACPgD,aAAc,EACdoB,WAAW,EACXR,QAAS,CACP7J,cAAUzyB,EACVm9B,gBAAYn9B,EACZo9B,iBAAap9B,EACb28B,cAAU38B,EACV48B,kBAAc58B,EACd68B,SAAU,GAEZrP,MAAO,CACL7F,eAAW3nB,EACX4nB,aAAS5nB,EACT8nB,cAAU9nB,EACVioB,cAAUjoB,EACVu9B,UAAMv9B,EACNy9B,UAAMz9B,EACNw9B,UAAMx9B,EACN09B,UAAM19B,EACN0W,WAAO1W,EACP2W,YAAQ3W,EACRmoB,YAAQnoB,EACRooB,YAAQpoB,EACRk9B,aAAc,GACdS,eAAgB,IAElBlT,SAAU,CACRzL,OAAGhf,EACHif,OAAGjf,EACH49B,mBAAe59B,EACf69B,mBAAe79B,EACf89B,cAAU99B,IAId,+HAAiIwJ,MAAM,KAAK1K,QAASiS,IACnJsrB,EAAKtrB,GAAcirB,EAAKjrB,GAAY3P,KAAK1G,KAE3CsW,EAAMvN,OAAO/I,EAAQ,CACnB2hC,SAGF,IAAI3D,EAAQ,EACZp9B,OAAOmL,eAAe/L,EAAO2hC,KAAM,QAAS,CAC1Ch4B,IAAG,IACMq0B,EAET,IAAI74B,GACF,GAAI64B,IAAU74B,EAAO,CACnB,MAAMstB,EAAUzyB,EAAO2hC,KAAKC,QAAQK,SAAWjiC,EAAO2hC,KAAKC,QAAQK,SAAS,QAAK38B,EAC3EqvB,EAAU30B,EAAO2hC,KAAKC,QAAQ7J,SAAW/3B,EAAO2hC,KAAKC,QAAQ7J,SAAS,QAAKzyB,EACjFtF,EAAO2C,KAAK,aAAcwC,EAAOstB,EAASkC,GAE5CqJ,EAAQ74B,MAIdb,GAAI,CACF,OACE,MAAMtE,EAASF,KACXE,EAAO6X,OAAO8pB,KAAK3kB,SACrBhd,EAAO2hC,KAAKpI,UAGhB,UACiBz5B,KACR6hC,KAAKnI,WAEd,WAAWroB,GACMrR,KACH6hC,KAAK3kB,SADFld,KAER6hC,KAAKjV,aAAavb,IAE3B,SAASA,GACQrR,KACH6hC,KAAK3kB,SADFld,KAER6hC,KAAKtS,WAAWle,IAEzB,UAAUA,GACR,MAAMnR,EAASF,KACXE,EAAO6X,OAAO8pB,KAAK3kB,SAAWhd,EAAO2hC,KAAK3kB,SAAWhd,EAAO6X,OAAO8pB,KAAK7xB,QAC1E9P,EAAO2hC,KAAK7xB,OAAOqB,IAGvB,gBACE,MAAMnR,EAASF,KACXE,EAAO2hC,KAAK3kB,SAAWhd,EAAO6X,OAAO8pB,KAAK3kB,SAC5Chd,EAAO2hC,KAAKyI,qBAyIP,CACX7jC,KAAM,OACNsR,OAAQ,CACN4f,KAAM,CACJza,SAAS,EACT6oB,cAAc,EACdC,mBAAoB,EACpB0I,uBAAuB,EAEvBxJ,aAAc,cACdE,aAAc,sBACdD,YAAa,qBACbI,eAAgB,0BAGpB,SAEE/uB,EAAMvN,OADSjJ,KACM,CACnB23B,KAAM,CACJkO,oBAAoB,EACpBjO,KAAMmN,EAAKnN,KAAKhxB,KAJL5G,MAKX0lC,YAAaX,EAAKW,YAAY9+B,KALnB5G,UASjBwE,GAAI,CACF,aACE,MAAMtE,EAASF,KACXE,EAAO6X,OAAO4f,KAAKza,SAAWhd,EAAO6X,OAAOgU,gBAC9C7rB,EAAO6X,OAAOgU,eAAgB,IAGlC,OACE,MAAM7rB,EAASF,KACXE,EAAO6X,OAAO4f,KAAKza,UAAYhd,EAAO6X,OAAO7P,MAAuC,IAA/BhI,EAAO6X,OAAOsN,cACrEnlB,EAAOy3B,KAAKC,QAGhB,SACE,MAAM13B,EAASF,KACXE,EAAO6X,OAAO8R,WAAa3pB,EAAO6X,OAAO2S,gBAC3CxqB,EAAOy3B,KAAKC,QAGhB,SACE,MAAM13B,EAASF,KACXE,EAAO6X,OAAO4f,KAAKza,SACrBhd,EAAOy3B,KAAKC,QAGhB,oBACE,MAAM13B,EAASF,KACXE,EAAO6X,OAAO4f,KAAKza,SACrBhd,EAAOy3B,KAAKC,QAGhB,kBACE,MAAM13B,EAASF,KACXE,EAAO6X,OAAO4f,KAAKza,UACjBhd,EAAO6X,OAAO4f,KAAK+W,wBAA2BxuC,EAAO6X,OAAO4f,KAAK+W,wBAA0BxuC,EAAOy3B,KAAKkO,qBACzG3lC,EAAOy3B,KAAKC,QAIlB,gBACE,MAAM13B,EAASF,KACXE,EAAO6X,OAAO4f,KAAKza,UAAYhd,EAAO6X,OAAO4f,KAAK+W,uBACpDxuC,EAAOy3B,KAAKC,UAqID,CACjBnxB,KAAM,aACNsR,OAAQ,CACN8uB,WAAY,CACVG,aAASxhC,EACT8hC,SAAS,EACTF,GAAI,UAGR,SAEE5wB,EAAMvN,OADSjJ,KACM,CACnB6mC,WAAY,CACVG,QAHWhnC,KAGK+X,OAAO8uB,WAAWG,QAClCK,uBAAwBjB,EAAWiB,uBAAuBzgC,KAJ/C5G,MAKXqkB,aAAc+hB,EAAW/hB,aAAazd,KAL3B5G,MAMXshB,cAAe8kB,EAAW9kB,cAAc1a,KAN7B5G,UAUjBwE,GAAI,CACF,SACE,MAAMtE,EAASF,KACVE,EAAO2mC,WAAWG,SACnB9mC,EAAO2mC,WAAWC,SACpB5mC,EAAO2mC,WAAWC,YAASthC,SACpBtF,EAAO2mC,WAAWC,SAG7B,SACE,MAAM5mC,EAASF,KACVE,EAAO2mC,WAAWG,SACnB9mC,EAAO2mC,WAAWC,SACpB5mC,EAAO2mC,WAAWC,YAASthC,SACpBtF,EAAO2mC,WAAWC,SAG7B,iBACE,MAAM5mC,EAASF,KACVE,EAAO2mC,WAAWG,SACnB9mC,EAAO2mC,WAAWC,SACpB5mC,EAAO2mC,WAAWC,YAASthC,SACpBtF,EAAO2mC,WAAWC,SAG7B,aAAallB,EAAW0C,GACPtkB,KACH6mC,WAAWG,SADRhnC,KAER6mC,WAAWxiB,aAAazC,EAAW0C,IAE5C,cAAczT,EAAUyT,GACPtkB,KACH6mC,WAAWG,SADRhnC,KAER6mC,WAAWvlB,cAAczQ,EAAUyT,MAyJrC,CACT7d,KAAM,OACNsR,OAAQ,CACNyvB,KAAM,CACJtqB,SAAS,EACTyxB,kBAAmB,sBACnBtG,iBAAkB,iBAClBF,iBAAkB,aAClBC,kBAAmB,0BACnBF,iBAAkB,yBAClBS,wBAAyB,0BAG7B,SACE,MAAMzoC,EAASF,KACfwW,EAAMvN,OAAO/I,EAAQ,CACnBsnC,KAAM,CACJgB,WAAYl6B,kBAAkBpO,EAAO6X,OAAOyvB,KAAKmH,0EAGrD7tC,OAAOwV,KAAKkxB,GAAMljC,QAASiS,IACzBrW,EAAOsnC,KAAKjxB,GAAcixB,EAAKjxB,GAAY3P,KAAK1G,MAGpDsE,GAAI,CACF,OACiBxE,KACH+X,OAAOyvB,KAAKtqB,UADTld,KAERwnC,KAAKvd,OAFGjqB,KAGRwnC,KAAKoH,qBAEd,SACiB5uC,KACH+X,OAAOyvB,KAAKtqB,SADTld,KAERwnC,KAAKoH,oBAEd,WACiB5uC,KACH+X,OAAOyvB,KAAKtqB,SADTld,KAERwnC,KAAKoH,oBAEd,mBACiB5uC,KACH+X,OAAOyvB,KAAKtqB,SADTld,KAERwnC,KAAKqH,oBAEd,UACiB7uC,KACH+X,OAAOyvB,KAAKtqB,SADTld,KAERwnC,KAAK3+B,aAoFF,CACdpC,KAAM,UACNsR,OAAQ,CACNrK,QAAS,CACPwP,SAAS,EACTgsB,cAAc,EACd/jC,IAAK,WAGT,SAEEqR,EAAMvN,OADSjJ,KACM,CACnB0N,QAAS,CACPuc,KAAM4e,EAAQ5e,KAAKrjB,KAHR5G,MAIX8uC,WAAYjG,EAAQiG,WAAWloC,KAJpB5G,MAKXmpC,mBAAoBN,EAAQM,mBAAmBviC,KALpC5G,MAMXipC,cAAeJ,EAAQI,cAAcriC,KAN1B5G,MAOX6I,QAASggC,EAAQhgC,QAAQjC,KAPd5G,UAWjBwE,GAAI,CACF,OACE,MAAMtE,EAASF,KACXE,EAAO6X,OAAOrK,QAAQwP,SACxBhd,EAAOwN,QAAQuc,QAGnB,UACE,MAAM/pB,EAASF,KACXE,EAAO6X,OAAOrK,QAAQwP,SACxBhd,EAAOwN,QAAQ7E,WAGnB,gBACE,MAAM3I,EAASF,KACXE,EAAOwN,QAAQ9E,aACjB1I,EAAOwN,QAAQohC,WAAW5uC,EAAO6X,OAAOrK,QAAQvI,IAAKjF,EAAOqhB,gBAuD7C,CACrB9a,KAAM,kBACNsR,OAAQ,CACNgxB,eAAgB,CACd7rB,SAAS,EACTgsB,cAAc,EACdU,YAAY,IAGhB,SAEEpzB,EAAMvN,OADSjJ,KACM,CACnB+oC,eAAgB,CACdngC,aAAa,EACbqhB,KAAMyf,EAAezf,KAAKrjB,KAJf5G,MAKX6I,QAAS6gC,EAAe7gC,QAAQjC,KALrB5G,MAMX+uC,QAASrF,EAAeqF,QAAQnoC,KANrB5G,MAOX6pC,YAAaH,EAAeG,YAAYjjC,KAP7B5G,UAWjBwE,GAAI,CACF,OACE,MAAMtE,EAASF,KACXE,EAAO6X,OAAOgxB,eAAe7rB,SAC/Bhd,EAAO6oC,eAAe9e,QAG1B,UACE,MAAM/pB,EAASF,KACXE,EAAO6X,OAAOgxB,eAAe7rB,SAC/Bhd,EAAO6oC,eAAelgC,WAG1B,gBACE,MAAM3I,EAASF,KACXE,EAAO6oC,eAAengC,aACxB1I,EAAO6oC,eAAegG,aAoFb,CACftoC,KAAM,WACNsR,OAAQ,CACN0jB,SAAU,CACRve,SAAS,EACTtG,MAAO,IACPyzB,mBAAmB,EACnB2E,sBAAsB,EACtB/E,iBAAiB,EACjBD,kBAAkB,IAGtB,SACE,MAAM9pC,EAASF,KACfwW,EAAMvN,OAAO/I,EAAQ,CACnBu7B,SAAU,CACRyO,SAAS,EACTE,QAAQ,EACRD,IAAKL,EAASK,IAAIvjC,KAAK1G,GACvB6wB,MAAO+Y,EAAS/Y,MAAMnqB,KAAK1G,GAC3By7B,KAAMmO,EAASnO,KAAK/0B,KAAK1G,GACzB+uC,MAAOnF,EAASmF,MAAMroC,KAAK1G,GAC3B,gBAAgBmR,GACTnR,IAAUA,EAAOkH,WAAclH,EAAOyc,YACvCtL,EAAEjO,SAAWpD,OACjBE,EAAOyc,WAAW,GAAGrQ,oBAAoB,gBAAiBpM,EAAOu7B,SAAS6O,iBAC1EpqC,EAAOyc,WAAW,GAAGrQ,oBAAoB,sBAAuBpM,EAAOu7B,SAAS6O,iBAChFpqC,EAAOu7B,SAAS2O,QAAS,EACpBlqC,EAAOu7B,SAASyO,QAGnBhqC,EAAOu7B,SAAS0O,MAFhBjqC,EAAOu7B,SAASE,aAQ1Bn3B,GAAI,CACF,OACE,MAAMtE,EAASF,KACXE,EAAO6X,OAAO0jB,SAASve,SACzBhd,EAAOu7B,SAAS1K,SAGpB,sBAAsB5P,EAAO+D,GAC3B,MAAMhlB,EAASF,KACXE,EAAOu7B,SAASyO,UACdhlB,IAAahlB,EAAO6X,OAAO0jB,SAASuT,qBACtC9uC,EAAOu7B,SAASwT,MAAM9tB,GAEtBjhB,EAAOu7B,SAASE,SAItB,kBACE,MAAMz7B,EAASF,KACXE,EAAOu7B,SAASyO,UACdhqC,EAAO6X,OAAO0jB,SAASuT,qBACzB9uC,EAAOu7B,SAASE,OAEhBz7B,EAAOu7B,SAASwT,UAItB,UACE,MAAM/uC,EAASF,KACXE,EAAOu7B,SAASyO,SAClBhqC,EAAOu7B,SAASE,UAkDP,CACfl1B,KAAM,cACNsR,OAAQ,CACN4yB,WAAY,CACVC,WAAW,IAGf,SAEEp0B,EAAMvN,OADSjJ,KACM,CACnB2qC,WAAY,CACVtmB,aAAckmB,EAAKlmB,aAAazd,KAHrB5G,MAIXshB,cAAeipB,EAAKjpB,cAAc1a,KAJvB5G,UAQjBwE,GAAI,CACF,aAEE,GAA6B,SADdxE,KACJ+X,OAAOqI,OAAmB,OADtBpgB,KAERqyB,WAAWvjB,QAFH9O,KAEkB+X,OAAOuU,8BACxC,MAAMgM,EAAkB,CACtB1Z,cAAe,EACfJ,gBAAiB,EACjB0B,eAAgB,EAChBa,qBAAqB,EACrB/C,aAAc,EACdmG,kBAAkB,GAEpB3N,EAAMvN,OAXSjJ,KAWK+X,OAAQugB,GAC5B9hB,EAAMvN,OAZSjJ,KAYK0xB,eAAgB4G,IAEtC,eAE+B,SADdt4B,KACJ+X,OAAOqI,QADHpgB,KAER2qC,WAAWtmB,gBAEpB,cAAcxT,GAEiB,SADd7Q,KACJ+X,OAAOqI,QADHpgB,KAER2qC,WAAWrpB,cAAczQ,MAmIrB,CACfpK,KAAM,cACNsR,OAAQ,CACNmzB,WAAY,CACVO,cAAc,EACdJ,QAAQ,EACRO,aAAc,GACdC,YAAa,MAGjB,SAEEr1B,EAAMvN,OADSjJ,KACM,CACnBkrC,WAAY,CACV7mB,aAAc0mB,EAAK1mB,aAAazd,KAHrB5G,MAIXshB,cAAeypB,EAAKzpB,cAAc1a,KAJvB5G,UAQjBwE,GAAI,CACF,aAEE,GAA6B,SADdxE,KACJ+X,OAAOqI,OAAmB,OADtBpgB,KAERqyB,WAAWvjB,QAFH9O,KAEkB+X,OAAOuU,8BAFzBtsB,KAGRqyB,WAAWvjB,QAHH9O,KAGkB+X,OAAOuU,4BACxC,MAAMgM,EAAkB,CACtB1Z,cAAe,EACfJ,gBAAiB,EACjB0B,eAAgB,EAChBa,qBAAqB,EACrB6K,gBAAiB,EACjB5N,aAAc,EACdgC,gBAAgB,EAChBmE,kBAAkB,GAEpB3N,EAAMvN,OAdSjJ,KAcK+X,OAAQugB,GAC5B9hB,EAAMvN,OAfSjJ,KAeK0xB,eAAgB4G,IAEtC,eAE+B,SADdt4B,KACJ+X,OAAOqI,QADHpgB,KAERkrC,WAAW7mB,gBAEpB,cAAcxT,GAEiB,SADd7Q,KACJ+X,OAAOqI,QADHpgB,KAERkrC,WAAW5pB,cAAczQ,MA4ErB,CACfpK,KAAM,cACNsR,OAAQ,CACNs0B,WAAY,CACVZ,cAAc,EACda,eAAe,IAGnB,SAEE91B,EAAMvN,OADSjJ,KACM,CACnBqsC,WAAY,CACVhoB,aAAc+nB,EAAK/nB,aAAazd,KAHrB5G,MAIXshB,cAAe8qB,EAAK9qB,cAAc1a,KAJvB5G,UAQjBwE,GAAI,CACF,aAEE,GAA6B,SADdxE,KACJ+X,OAAOqI,OAAmB,OADtBpgB,KAERqyB,WAAWvjB,QAFH9O,KAEkB+X,OAAOuU,8BAFzBtsB,KAGRqyB,WAAWvjB,QAHH9O,KAGkB+X,OAAOuU,4BACxC,MAAMgM,EAAkB,CACtB1Z,cAAe,EACfJ,gBAAiB,EACjB0B,eAAgB,EAChBa,qBAAqB,EACrB/C,aAAc,EACdmG,kBAAkB,GAEpB3N,EAAMvN,OAZSjJ,KAYK+X,OAAQugB,GAC5B9hB,EAAMvN,OAbSjJ,KAaK0xB,eAAgB4G,IAEtC,eAE+B,SADdt4B,KACJ+X,OAAOqI,QADHpgB,KAERqsC,WAAWhoB,gBAEpB,cAAcxT,GAEiB,SADd7Q,KACJ+X,OAAOqI,QADHpgB,KAERqsC,WAAW/qB,cAAczQ,MA2EhB,CACpBpK,KAAM,mBACNsR,OAAQ,CACN40B,gBAAiB,CACfE,OAAQ,GACRK,QAAS,EACTJ,MAAO,IACPE,SAAU,EACVvB,cAAc,IAGlB,SAEEj1B,EAAMvN,OADSjJ,KACM,CACnB2sC,gBAAiB,CACftoB,aAAcqoB,EAAUroB,aAAazd,KAH1B5G,MAIXshB,cAAeorB,EAAUprB,cAAc1a,KAJ5B5G,UAQjBwE,GAAI,CACF,aAE+B,cADdxE,KACJ+X,OAAOqI,SADHpgB,KAGRqyB,WAAWvjB,QAHH9O,KAGkB+X,OAAOuU,mCAHzBtsB,KAIRqyB,WAAWvjB,QAJH9O,KAIkB+X,OAAOuU,4BAJzBtsB,KAMR+X,OAAOgJ,qBAAsB,EANrB/gB,KAOR0xB,eAAe3Q,qBAAsB,IAE9C,eAE+B,cADd/gB,KACJ+X,OAAOqI,QADHpgB,KAER2sC,gBAAgBtoB,gBAEzB,cAAcxT,GAEiB,cADd7Q,KACJ+X,OAAOqI,QADHpgB,KAER2sC,gBAAgBrrB,cAAczQ,MA8H5B,CACbpK,KAAM,SACNsR,OAAQ,CACNy1B,OAAQ,CACNttC,OAAQ,KACR4tC,sBAAuB,4BACvBH,qBAAsB,4BAG1B,SAEEn3B,EAAMvN,OADSjJ,KACM,CACnBwtC,OAAQ,CACNttC,OAAQ,KACR+pB,KAAMsjB,EAAOtjB,KAAKrjB,KAJP5G,MAKXoI,OAAQmlC,EAAOnlC,OAAOxB,KALX5G,MAMX4tC,aAAcL,EAAOK,aAAahnC,KANvB5G,UAUjBwE,GAAI,CACF,aACE,MACM,OAAEgpC,GADOxtC,KACW+X,OACrBy1B,GAAWA,EAAOttC,SAFRF,KAGRwtC,OAAOvjB,OAHCjqB,KAIRwtC,OAAOplC,QAAO,KAEvB,cACiBpI,KACHwtC,OAAOttC,QADJF,KAERwtC,OAAOplC,UAEhB,SACiBpI,KACHwtC,OAAOttC,QADJF,KAERwtC,OAAOplC,UAEhB,SACiBpI,KACHwtC,OAAOttC,QADJF,KAERwtC,OAAOplC,UAEhB,iBACiBpI,KACHwtC,OAAOttC,QADJF,KAERwtC,OAAOplC,UAEhB,cAAcyI,GACZ,MACMg9B,EADS7tC,KACawtC,OAAOttC,OAC9B2tC,GACLA,EAAavsB,cAAczQ,IAE7B,gBACE,MACMg9B,EADS7tC,KACawtC,OAAOttC,OAC9B2tC,GAFU7tC,KAGJwtC,OAAOE,eAAiBG,GACjCA,EAAahlC,mBAmCK,IAAf,EAAO+S,MAChB,EAAOA,IAAM,EAAOvM,MAAMuM,IAC1B,EAAOI,cAAgB,EAAO3M,MAAM2M,eAGtC,EAAOJ,IAAIrb,GAEI","file":"0.f6679c6762183d5a92d5.js","sourcesContent":["import Vue from 'vue';\nimport Component from 'vue-class-component';\n\nimport { Swiper, SwiperSlide, SwiperOptions, swiper } from '@/utils/swiperUtils';\n\n@Component({\n components: {\n Swiper,\n SwiperSlide,\n },\n})\nexport default class SwiperMixin extends Vue {\n $refs!: {\n swiper: swiper;\n };\n\n get swiper() {\n return (this.$refs.swiper as any)?.swiperInstance;\n }\n\n getSwiperByRef(ref: string) {\n return (this.$refs[ref] as any)?.swiperInstance;\n }\n}\n","import 'swiper/dist/css/swiper.css';\n\nimport VueAwesomeSwiper from 'vue-awesome-swiper';\nexport { swiper } from 'vue-awesome-swiper';\n// @ts-ignore\nexport { SwiperOptions } from 'swiper';\n\nexport const Swiper = VueAwesomeSwiper.Swiper;\nexport const SwiperSlide = (VueAwesomeSwiper as any).SwiperSlide;\n\n// // export type swiper =\n// console.log('VAS', VueAwesomeSwiper);\n// console.log('swiper', VueAwesomeSwiper.Swiper);\n// console.log('swiper-slide', (VueAwesomeSwiper as any).SwiperSlide);\n// console.log('asdfasdfasdf');\n","\n/*!\n * vue-awesome-swiper v4.1.1\n * Copyright (c) Surmon. All rights reserved.\n * Released under the MIT License.\n * Surmon \n */\n\n(function(g,f){typeof exports==='object'&&typeof module!=='undefined'?f(exports,require('swiper'),require('vue')):typeof define==='function'&&define.amd?define(['exports','swiper','vue'],f):(g=g||self,f(g.VueAwesomeSwiper={},g.Swiper,g.Vue));}(this,(function(exports, SwiperClass, Vue){'use strict';SwiperClass=SwiperClass&&Object.prototype.hasOwnProperty.call(SwiperClass,'default')?SwiperClass['default']:SwiperClass;Vue=Vue&&Object.prototype.hasOwnProperty.call(Vue,'default')?Vue['default']:Vue;/**\r\n * @file vue-awesome-swiper\r\n * @module constants\r\n * @author Surmon \r\n */\r\nvar CoreNames;\r\n(function (CoreNames) {\r\n CoreNames[\"SwiperComponent\"] = \"Swiper\";\r\n CoreNames[\"SwiperSlideComponent\"] = \"SwiperSlide\";\r\n CoreNames[\"SwiperDirective\"] = \"swiper\";\r\n CoreNames[\"SwiperInstance\"] = \"$swiper\";\r\n})(CoreNames || (CoreNames = {}));\r\nvar DEFAULT_CLASSES = Object.freeze({\r\n containerClass: 'swiper-container',\r\n wrapperClass: 'swiper-wrapper',\r\n slideClass: 'swiper-slide'\r\n});\r\nvar ComponentEvents;\r\n(function (ComponentEvents) {\r\n ComponentEvents[\"Ready\"] = \"ready\";\r\n ComponentEvents[\"ClickSlide\"] = \"clickSlide\";\r\n})(ComponentEvents || (ComponentEvents = {}));\r\nvar ComponentPropNames;\r\n(function (ComponentPropNames) {\r\n ComponentPropNames[\"AutoUpdate\"] = \"autoUpdate\";\r\n ComponentPropNames[\"AutoDestroy\"] = \"autoDestroy\";\r\n ComponentPropNames[\"DeleteInstanceOnDestroy\"] = \"deleteInstanceOnDestroy\";\r\n ComponentPropNames[\"CleanupStylesOnDestroy\"] = \"cleanupStylesOnDestroy\";\r\n})(ComponentPropNames || (ComponentPropNames = {}));\r\n// https://swiperjs.com/api/#events\r\nvar SWIPER_EVENTS = [\r\n 'init',\r\n 'beforeDestroy',\r\n 'slideChange',\r\n 'slideChangeTransitionStart',\r\n 'slideChangeTransitionEnd',\r\n 'slideNextTransitionStart',\r\n 'slideNextTransitionEnd',\r\n 'slidePrevTransitionStart',\r\n 'slidePrevTransitionEnd',\r\n 'transitionStart',\r\n 'transitionEnd',\r\n 'touchStart',\r\n 'touchMove',\r\n 'touchMoveOpposite',\r\n 'sliderMove',\r\n 'touchEnd',\r\n 'click',\r\n 'tap',\r\n 'doubleTap',\r\n 'imagesReady',\r\n 'progress',\r\n 'reachBeginning',\r\n 'reachEnd',\r\n 'fromEdge',\r\n 'setTranslate',\r\n 'setTransition',\r\n 'resize',\r\n 'observerUpdate',\r\n 'beforeLoopFix',\r\n 'loopFix'\r\n];/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module utils\r\n * @author Surmon \r\n */\r\nvar kebabcase = function (string) {\r\n return string\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n .replace(/\\s+/g, '-')\r\n .toLowerCase();\r\n};/**\r\n * @file vue-awesome-swiper\r\n * @module event\r\n * @author Surmon \r\n */\r\nvar handleClickSlideEvent = function (swiper, event, emit) {\r\n var _a, _b, _c;\r\n if (swiper && !(swiper.destroyed)) {\r\n var eventPath = ((_a = event.composedPath) === null || _a === void 0 ? void 0 : _a.call(event)) || event.path;\r\n if ((event === null || event === void 0 ? void 0 : event.target) && eventPath) {\r\n var slides_1 = Array.from(swiper.slides);\r\n var paths = Array.from(eventPath);\r\n // Click slide || slide[children]\r\n if (slides_1.includes(event.target) || paths.some(function (item) { return slides_1.includes(item); })) {\r\n var clickedIndex = swiper.clickedIndex;\r\n var reallyIndex = Number((_c = (_b = swiper.clickedSlide) === null || _b === void 0 ? void 0 : _b.dataset) === null || _c === void 0 ? void 0 : _c.swiperSlideIndex);\r\n var reallyIndexValue = Number.isInteger(reallyIndex) ? reallyIndex : null;\r\n emit(ComponentEvents.ClickSlide, clickedIndex, reallyIndexValue);\r\n emit(kebabcase(ComponentEvents.ClickSlide), clickedIndex, reallyIndexValue);\r\n }\r\n }\r\n }\r\n};\r\nvar bindSwiperEvents = function (swiper, emit) {\r\n SWIPER_EVENTS.forEach(function (eventName) {\r\n swiper.on(eventName, function () {\n var arguments$1 = arguments;\n\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments$1[_i];\r\n }\r\n emit.apply(void 0, __spreadArrays([eventName], args));\r\n var kebabcaseName = kebabcase(eventName);\r\n if (kebabcaseName !== eventName) {\r\n emit.apply(void 0, __spreadArrays([kebabcaseName], args));\r\n }\r\n });\r\n });\r\n};/**\r\n * @file vue-awesome-swiper\r\n * @module directive\r\n * @author Surmon \r\n */\r\nvar INSTANCE_NAME_KEY = 'instanceName';\r\nfunction getDirective(SwiperClass, globalOptions) {\r\n var getStandardisedOptionByAttrs = function (vnode, key) {\r\n var _a, _b, _c, _d;\r\n var value = (_b = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b[key];\r\n return value !== undefined\r\n ? value\r\n : (_d = (_c = vnode.data) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d[kebabcase(key)];\r\n };\r\n // Get swiper instace name in directive\r\n var getSwiperInstanceName = function (element, binding, vnode) {\r\n return (binding.arg ||\r\n getStandardisedOptionByAttrs(vnode, INSTANCE_NAME_KEY) ||\r\n element.id ||\r\n CoreNames.SwiperInstance);\r\n };\r\n var getSwiperInstance = function (element, binding, vnode) {\r\n var instanceName = getSwiperInstanceName(element, binding, vnode);\r\n return vnode.context[instanceName] || null;\r\n };\r\n var getSwipeOptions = function (binding) {\r\n return binding.value || globalOptions;\r\n };\r\n var getBooleanValueByInput = function (input) {\r\n return [true, undefined, null, ''].includes(input);\r\n };\r\n // Emit event in Vue directive\r\n var getEventEmiter = function (vnode) {\r\n var _a, _b;\r\n var handlers = ((_a = vnode.data) === null || _a === void 0 ? void 0 : _a.on) || ((_b = vnode.componentOptions) === null || _b === void 0 ? void 0 : _b.listeners);\r\n return function (name) {\n var arguments$1 = arguments;\n\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments$1[_i];\r\n }\r\n var _a;\r\n var handle = (_a = handlers) === null || _a === void 0 ? void 0 : _a[name];\r\n if (handle) {\r\n handle.fns.apply(handle, args);\r\n }\r\n };\r\n };\r\n return {\r\n // Init\r\n bind: function (element, binding, vnode) {\r\n // auto class name\r\n if (element.className.indexOf(DEFAULT_CLASSES.containerClass) === -1) {\r\n element.className += ((element.className ? ' ' : '') + DEFAULT_CLASSES.containerClass);\r\n }\r\n // bind click event\r\n element.addEventListener('click', function (event) {\r\n var emitEvent = getEventEmiter(vnode);\r\n var swiper = getSwiperInstance(element, binding, vnode);\r\n handleClickSlideEvent(swiper, event, emitEvent);\r\n });\r\n },\r\n // DOM inserted\r\n inserted: function (element, binding, vnode) {\r\n var context = vnode.context;\r\n var swiperOptions = getSwipeOptions(binding);\r\n var instanceName = getSwiperInstanceName(element, binding, vnode);\r\n var emitEvent = getEventEmiter(vnode);\r\n var vueContext = context;\r\n var swiper = vueContext === null || vueContext === void 0 ? void 0 : vueContext[instanceName];\r\n // Swiper will destroy but not delete instance, when used \r\n if (!swiper || swiper.destroyed) {\r\n swiper = new SwiperClass(element, swiperOptions);\r\n vueContext[instanceName] = swiper;\r\n bindSwiperEvents(swiper, emitEvent);\r\n emitEvent(ComponentEvents.Ready, swiper);\r\n // MARK: Reinstance when the nexttick with \r\n // Vue.nextTick(instancing) | setTimeout(instancing)\r\n }\r\n },\r\n // On options changed or DOM updated\r\n componentUpdated: function (element, binding, vnode) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\r\n var autoUpdate = getStandardisedOptionByAttrs(vnode, ComponentPropNames.AutoUpdate);\r\n if (getBooleanValueByInput(autoUpdate)) {\r\n var swiper = getSwiperInstance(element, binding, vnode);\r\n if (swiper) {\r\n var swiperOptions = getSwipeOptions(binding);\r\n var isLoop = swiperOptions.loop;\r\n if (isLoop) {\r\n (_b = (_a = swiper) === null || _a === void 0 ? void 0 : _a.loopDestroy) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n }\r\n (_c = swiper === null || swiper === void 0 ? void 0 : swiper.update) === null || _c === void 0 ? void 0 : _c.call(swiper);\r\n (_e = (_d = swiper.navigation) === null || _d === void 0 ? void 0 : _d.update) === null || _e === void 0 ? void 0 : _e.call(_d);\r\n (_g = (_f = swiper.pagination) === null || _f === void 0 ? void 0 : _f.render) === null || _g === void 0 ? void 0 : _g.call(_f);\r\n (_j = (_h = swiper.pagination) === null || _h === void 0 ? void 0 : _h.update) === null || _j === void 0 ? void 0 : _j.call(_h);\r\n if (isLoop) {\r\n (_l = (_k = swiper) === null || _k === void 0 ? void 0 : _k.loopCreate) === null || _l === void 0 ? void 0 : _l.call(_k);\r\n (_m = swiper === null || swiper === void 0 ? void 0 : swiper.update) === null || _m === void 0 ? void 0 : _m.call(swiper);\r\n }\r\n }\r\n }\r\n },\r\n // Destroy this directive\r\n unbind: function (element, binding, vnode) {\r\n var _a;\r\n var autoDestroy = getStandardisedOptionByAttrs(vnode, ComponentPropNames.AutoDestroy);\r\n if (getBooleanValueByInput(autoDestroy)) {\r\n var swiper = getSwiperInstance(element, binding, vnode);\r\n if (swiper && swiper.initialized) {\r\n (_a = swiper === null || swiper === void 0 ? void 0 : swiper.destroy) === null || _a === void 0 ? void 0 : _a.call(swiper, getBooleanValueByInput(getStandardisedOptionByAttrs(vnode, ComponentPropNames.DeleteInstanceOnDestroy)), getBooleanValueByInput(getStandardisedOptionByAttrs(vnode, ComponentPropNames.CleanupStylesOnDestroy)));\r\n }\r\n }\r\n }\r\n };\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module SwiperComponent\r\n * @author Surmon \r\n */\r\nvar SlotNames;\r\n(function (SlotNames) {\r\n SlotNames[\"ParallaxBg\"] = \"parallax-bg\";\r\n SlotNames[\"Pagination\"] = \"pagination\";\r\n SlotNames[\"Scrollbar\"] = \"scrollbar\";\r\n SlotNames[\"PrevButton\"] = \"button-prev\";\r\n SlotNames[\"NextButton\"] = \"button-next\";\r\n})(SlotNames || (SlotNames = {}));\r\nfunction getSwiperComponent(SwiperClass) {\r\n var _a;\r\n return Vue.extend({\r\n name: CoreNames.SwiperComponent,\r\n props: (_a = {\r\n defaultOptions: {\r\n type: Object,\r\n required: false,\r\n default: function () { return ({}); }\r\n },\r\n // eslint-disable-next-line vue/require-default-prop\r\n options: {\r\n type: Object,\r\n required: false\r\n }\r\n },\r\n _a[ComponentPropNames.AutoUpdate] = {\r\n type: Boolean,\r\n default: true\r\n },\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/550/files\r\n _a[ComponentPropNames.AutoDestroy] = {\r\n type: Boolean,\r\n default: true\r\n },\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/388\r\n _a[ComponentPropNames.DeleteInstanceOnDestroy] = {\r\n type: Boolean,\r\n required: false,\r\n default: true\r\n },\r\n _a[ComponentPropNames.CleanupStylesOnDestroy] = {\r\n type: Boolean,\r\n required: false,\r\n default: true\r\n },\r\n _a),\r\n data: function () {\r\n var _a;\r\n return _a = {},\r\n _a[CoreNames.SwiperInstance] = null,\r\n _a;\r\n },\r\n computed: {\r\n swiperInstance: {\r\n cache: false,\r\n set: function (swiper) {\r\n this[CoreNames.SwiperInstance] = swiper;\r\n },\r\n get: function () {\r\n return this[CoreNames.SwiperInstance];\r\n }\r\n },\r\n swiperOptions: function () {\r\n return this.options || this.defaultOptions;\r\n },\r\n wrapperClass: function () {\r\n return this.swiperOptions.wrapperClass || DEFAULT_CLASSES.wrapperClass;\r\n }\r\n },\r\n methods: {\r\n // Feature: click event\r\n handleSwiperClick: function (event) {\r\n handleClickSlideEvent(this.swiperInstance, event, this.$emit.bind(this));\r\n },\r\n autoReLoopSwiper: function () {\r\n var _a, _b;\r\n if (this.swiperInstance && this.swiperOptions.loop) {\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/593\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/544\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/545/files\r\n var swiper = this.swiperInstance;\r\n (_a = swiper === null || swiper === void 0 ? void 0 : swiper.loopDestroy) === null || _a === void 0 ? void 0 : _a.call(swiper);\r\n (_b = swiper === null || swiper === void 0 ? void 0 : swiper.loopCreate) === null || _b === void 0 ? void 0 : _b.call(swiper);\r\n }\r\n },\r\n updateSwiper: function () {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n if (this[ComponentPropNames.AutoUpdate] && this.swiperInstance) {\r\n this.autoReLoopSwiper();\r\n (_b = (_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.update) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n (_d = (_c = this.swiperInstance.navigation) === null || _c === void 0 ? void 0 : _c.update) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n (_f = (_e = this.swiperInstance.pagination) === null || _e === void 0 ? void 0 : _e.render) === null || _f === void 0 ? void 0 : _f.call(_e);\r\n (_h = (_g = this.swiperInstance.pagination) === null || _g === void 0 ? void 0 : _g.update) === null || _h === void 0 ? void 0 : _h.call(_g);\r\n }\r\n },\r\n destroySwiper: function () {\r\n var _a, _b;\r\n if (this[ComponentPropNames.AutoDestroy] && this.swiperInstance) {\r\n // https://github.com/surmon-china/vue-awesome-swiper/pull/341\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/340\r\n if (this.swiperInstance.initialized) {\r\n (_b = (_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.destroy) === null || _b === void 0 ? void 0 : _b.call(_a, this[ComponentPropNames.DeleteInstanceOnDestroy], this[ComponentPropNames.CleanupStylesOnDestroy]);\r\n }\r\n }\r\n },\r\n initSwiper: function () {\r\n this.swiperInstance = new SwiperClass(this.$el, this.swiperOptions);\r\n bindSwiperEvents(this.swiperInstance, this.$emit.bind(this));\r\n this.$emit(ComponentEvents.Ready, this.swiperInstance);\r\n }\r\n },\r\n mounted: function () {\r\n if (!this.swiperInstance) {\r\n this.initSwiper();\r\n }\r\n },\r\n // Update swiper when the parent component activated with `keep-alive`.\r\n activated: function () {\r\n this.updateSwiper();\r\n },\r\n updated: function () {\r\n this.updateSwiper();\r\n },\r\n beforeDestroy: function () {\r\n // https://github.com/surmon-china/vue-awesome-swiper/commit/2924a9d4d3d1cf51c0d46076410b1f804b2b8a43#diff-7f4e0261ac562c0f354cb91a1ca8864f\r\n this.$nextTick(this.destroySwiper);\r\n },\r\n render: function (createElement) {\r\n return createElement('div', {\r\n staticClass: DEFAULT_CLASSES.containerClass,\r\n on: {\r\n click: this.handleSwiperClick\r\n }\r\n }, [\r\n this.$slots[SlotNames.ParallaxBg],\r\n createElement('div', {\r\n class: this.wrapperClass\r\n }, this.$slots.default),\r\n this.$slots[SlotNames.Pagination],\r\n this.$slots[SlotNames.PrevButton],\r\n this.$slots[SlotNames.NextButton],\r\n this.$slots[SlotNames.Scrollbar]\r\n ]);\r\n }\r\n });\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module SwiperSlideComponent\r\n * @author Surmon \r\n */\r\nvar SwiperSlideComponent = Vue.extend({\r\n name: CoreNames.SwiperSlideComponent,\r\n computed: {\r\n slideClass: function () {\r\n var _a, _b;\r\n return ((_b = (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.swiperOptions) === null || _b === void 0 ? void 0 : _b.slideClass) || DEFAULT_CLASSES.slideClass;\r\n }\r\n },\r\n methods: {\r\n update: function () {\r\n var _a;\r\n var parent = this.$parent;\r\n // https://github.com/surmon-china/vue-awesome-swiper/issues/632\r\n if (parent[ComponentPropNames.AutoUpdate]) {\r\n (_a = parent === null || parent === void 0 ? void 0 : parent.swiperInstance) === null || _a === void 0 ? void 0 : _a.update();\r\n }\r\n }\r\n },\r\n mounted: function () {\r\n this.update();\r\n },\r\n updated: function () {\r\n this.update();\r\n },\r\n render: function (createElement) {\r\n return createElement('div', {\r\n class: this.slideClass\r\n }, this.$slots.default);\r\n }\r\n});/**\r\n * @file vue-awesome-swiper\r\n * @module exporter\r\n * @author Surmon \r\n */\r\nvar getInstaller = function (SwiperClass) {\r\n var install = function (Vue, globalOptions) {\r\n if (install.installed)\r\n { return; }\r\n var SwiperComponent = getSwiperComponent(SwiperClass);\r\n if (globalOptions) {\r\n SwiperComponent.options.props.defaultOptions.default = function () { return globalOptions; };\r\n }\r\n Vue.component(CoreNames.SwiperComponent, SwiperComponent);\r\n Vue.component(CoreNames.SwiperSlideComponent, SwiperSlideComponent);\r\n Vue.directive(CoreNames.SwiperDirective, getDirective(SwiperClass, globalOptions));\r\n install.installed = true;\r\n };\r\n return install;\r\n};\r\nfunction exporter(SwiperClass) {\r\n var _a;\r\n return _a = {\r\n version: '4.1.1',\r\n install: getInstaller(SwiperClass),\r\n directive: getDirective(SwiperClass)\r\n },\r\n _a[CoreNames.SwiperComponent] = getSwiperComponent(SwiperClass),\r\n _a[CoreNames.SwiperSlideComponent] = SwiperSlideComponent,\r\n _a;\r\n}/**\r\n * @file vue-awesome-swiper\r\n * @module default-export\r\n * @author Surmon \r\n */\r\nvar VueAwesomeSwiper = exporter(SwiperClass);\r\nvar version = VueAwesomeSwiper.version;\r\nvar install = VueAwesomeSwiper.install;\r\nvar directive = VueAwesomeSwiper.directive;\r\nvar Swiper = VueAwesomeSwiper.Swiper;\r\nvar SwiperSlide = VueAwesomeSwiper.SwiperSlide;exports.Swiper=Swiper;exports.SwiperSlide=SwiperSlide;exports.default=VueAwesomeSwiper;exports.directive=directive;exports.install=install;exports.version=version;Object.defineProperty(exports,'__esModule',{value:true});})));","/**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\nvar doc = (typeof document === 'undefined') ? {\n body: {},\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n activeElement: {\n blur: function blur() {},\n nodeName: '',\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() {},\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() {},\n getElementsByTagName: function getElementsByTagName() {\n return [];\n },\n };\n },\n location: { hash: '' },\n} : document; // eslint-disable-line\n\nvar win = (typeof window === 'undefined') ? {\n document: doc,\n navigator: {\n userAgent: '',\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n },\n };\n },\n Image: function Image() {},\n Date: function Date() {},\n screen: {},\n setTimeout: function setTimeout() {},\n clearTimeout: function clearTimeout() {},\n} : window; // eslint-disable-line\n\nexport { win as window, doc as document };\n","/**\n * Dom7 2.1.3\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2019, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: February 11, 2019\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n constructor(arr) {\n const self = this;\n // Create array-like object\n for (let i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n}\n\nfunction $(selector, context) {\n const arr = [];\n let i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n let els;\n let tempParent;\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || document).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === window || selector === document) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n // eslint-disable-next-line\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n // eslint-disable-next-line\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n // eslint-disable-next-line\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n const dom = this;\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n return values;\n }\n return dom[0].value;\n }\n return undefined;\n }\n\n for (let i = 0; i < dom.length; i += 1) {\n const el = dom[i];\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = `${duration}ms`; // eslint-disable-line\n }\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let evt;\n try {\n evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const events = ['webkitTransitionEnd', 'transitionend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction animationEnd(callback) {\n const events = ['webkitAnimationEnd', 'animationend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\n// Sizing/Styles\nfunction width() {\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (let prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n const arr = [];\n for (let i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction filter(callback) {\n const matchedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n return new Dom7(matchedItems);\n}\nfunction map(callback) {\n const modifiedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n } else if (selector === document) return el === document;\n else if (selector === window) return el === window;\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction indexOf(el) {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i] === el) return i;\n }\n return -1;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n let returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append(...args) {\n let newChild;\n\n for (let k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n// eslint-disable-next-line\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].childNodes;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...args) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < args.length; i += 1) {\n const toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nfunction scrollTo(...args) {\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n let done;\n if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - (Math.cos(progress * Math.PI) / 2);\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((index, el) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n}\n\nfunction click(...args) {\n return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n","/**\n * Swiper 4.5.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://www.idangero.us/swiper/\n *\n * Copyright 2014-2019 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 22, 2019\n */\n\nimport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, data, transform, transition as transition$1, on, off, trigger, transitionEnd as transitionEnd$1, outerWidth, outerHeight, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, remove, add, styles } from 'dom7/dist/dom7.modular';\nimport { window, document } from 'ssr-window';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition: transition$1,\n on,\n off,\n trigger,\n transitionEnd: transitionEnd$1,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = Methods[methodName];\n});\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(paramsPart => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\n\nconst Support = (function Support() {\n const testDiv = document.createElement('div');\n return {\n touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() {\n return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch));\n }()),\n\n pointerEvents: !!(window.navigator.pointerEnabled || window.PointerEvent || ('maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints > 0)),\n prefixedPointerEvents: !!window.navigator.msPointerEnabled,\n\n transition: (function checkTransition() {\n const style = testDiv.style;\n return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);\n }()),\n transforms3d: (window.Modernizr && window.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {\n const style = testDiv.style;\n return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);\n }()),\n\n flexbox: (function checkFlexbox() {\n const style = testDiv.style;\n const styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (let i = 0; i < styles.length; i += 1) {\n if (styles[i] in style) return true;\n }\n return false;\n }()),\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isIE: !!window.navigator.userAgent.match(/Trident/g) || !!window.navigator.userAgent.match(/MSIE/g),\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n handler.apply(self, args);\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach(m => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nfunction updateSize () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n\nfunction updateSlides () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide\n .css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n )\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (!Support.flexbox || params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.css({ marginLeft: `${spaceBetween}px` });\n else slides.css({ marginRight: `${spaceBetween}px` });\n } else slides.css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n\nfunction updateAutoHeight (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n\nfunction updateSlidesOffset () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n\nfunction updateSlidesProgress (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size)\n || (slideAfter > 0 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n\nfunction updateProgress (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n\nfunction updateActiveIndex (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n snapIndex = Math.floor(activeIndex / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n}\n\nfunction updateClickedSlide (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n\nfunction getTranslate (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n\nfunction setTranslate (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (!params.virtualTranslate) {\n if (Support.transforms3d) $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n else $wrapperEl.transform(`translate(${x}px, ${y}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate () {\n return (-this.snapGrid[0]);\n}\n\nfunction maxTranslate () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n\nvar translate = {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n};\n\nfunction setTransition (duration, byController) {\n const swiper = this;\n\n swiper.$wrapperEl.transition(duration);\n\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionStart (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n\nfunction transitionEnd (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex } = swiper;\n swiper.animating = false;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n\nfunction slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n let snapIndex = Math.floor(slideIndex / params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n\n if (speed === 0 || !Support.transition) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n\nfunction slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map(val => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n const prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let index = swiper.activeIndex;\n const snapIndex = Math.floor(index / swiper.params.slidesPerGroup);\n\n if (snapIndex < swiper.snapGrid.length - 1) {\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) {\n index = swiper.params.slidesPerGroup;\n }\n }\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n\nfunction loopCreate () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n\nfunction loopFix () {\n const swiper = this;\n const {\n params, activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n}\n\nfunction loopDestroy () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n\nfunction setGrabCursor (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n\nfunction unsetGrabCursor () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) return;\n swiper.el.style.cursor = '';\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor,\n};\n\nfunction appendSlide (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n\nfunction prependSlide (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nvar manipulation = {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n\nconst Device = (function Device() {\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n windows: false,\n iphone: false,\n ipod: false,\n ipad: false,\n cordova: window.cordova || window.phonegap,\n phonegap: window.cordova || window.phonegap,\n };\n\n const windows = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n const ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n\n\n // Windows\n if (windows) {\n device.os = 'windows';\n device.osVersion = windows[2];\n device.windows = true;\n }\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.iphone = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Desktop\n device.desktop = !(device.os || device.android || device.webView);\n\n // Webview\n device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);\n\n // Minimal UI\n if (device.os && device.os === 'ios') {\n const osVersionArr = device.osVersion.split('.');\n const metaViewport = document.querySelector('meta[name=\"viewport\"]');\n device.minimalUi = !device.webView\n && (ipod || iphone)\n && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7)\n && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nfunction onTouchStart (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$(e).closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($(e.target).is(data.formElements)) preventDefault = false;\n if (\n document.activeElement\n && $(document.activeElement).is(data.formElements)\n && document.activeElement !== e.target\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type === 'mousemove') return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n e.preventDefault();\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) {\n if (data.clickTimeout) clearTimeout(data.clickTimeout);\n data.clickTimeout = Utils.nextTick(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.emit('click', e);\n }, 300);\n }\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n if (data.clickTimeout) clearTimeout(data.clickTimeout);\n swiper.emit('doubleTap', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n\n swiper.setTransition(params.speed);\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {\n if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + params.slidesPerGroup);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + params.slidesPerGroup);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + params.slidesPerGroup);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n if (params.freeMode) {\n const newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n {\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n const capture = !!params.nested;\n\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.addEventListener('click', swiper.onClick, true);\n }\n }\n\n // Resize handler\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n const capture = !!params.nested;\n\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.removeEventListener('click', swiper.onClick, true);\n }\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nvar events = {\n attachEvents,\n detachEvents,\n};\n\nfunction setBreakpoint () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Set breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}\n\nfunction getBreakpoint (breakpoints) {\n const swiper = this;\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n const points = [];\n Object.keys(breakpoints).forEach((point) => {\n points.push(point);\n });\n points.sort((a, b) => parseInt(a, 10) - parseInt(b, 10));\n for (let i = 0; i < points.length; i += 1) {\n const point = points[i];\n if (swiper.params.breakpointsInverse) {\n if (point <= window.innerWidth) {\n breakpoint = point;\n }\n } else if (point >= window.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = { setBreakpoint, getBreakpoint };\n\nfunction addClasses () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (!Support.flexbox) {\n suffixes.push('no-flexbox');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n // WP8 Touch Events Fix\n if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n suffixes.push(`wp8-${params.direction}`);\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n\nfunction removeClasses () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n\nvar classes = { addClasses, removeClasses };\n\nfunction loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n\nfunction preloadImages () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n\nvar images = {\n loadImage,\n preloadImages,\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const wasLocked = swiper.isLocked;\n\n swiper.isLocked = swiper.snapGrid.length === 1;\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\n\nvar checkOverflow$1 = { checkOverflow };\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsInverse: false,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: true,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n};\n\n/* eslint no-param-reassign: \"off\" */\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n const $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n } else if (Support.prefixedPointerEvents) {\n desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n if (currentDirection === 'vertical') {\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}vertical wp8-vertical`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}wp8-${newDirection}`);\n }\n }\n if (currentDirection === 'horizontal') {\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}horizontal wp8-horizontal`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}wp8-${newDirection}`);\n }\n }\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nvar Device$1 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n\nvar Support$1 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n\nvar Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n\nvar Resize = {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nvar Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n },\n renderSlide(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(`
${slide}
`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide(slides) {\n const swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cache[cachedIndex];\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nvar Virtual$1 = {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40))) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38))) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if ((kc === 39 && !rtl) || (kc === 37 && rtl)) swiper.slideNext();\n if ((kc === 37 && !rtl) || (kc === 39 && rtl)) swiper.slidePrev();\n } else {\n if (kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 40) swiper.slideNext();\n if (kc === 38) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nvar Keyboard$1 = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document.implementation\n && document.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && document.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n event: (function getEvent() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n }()),\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (!swiper.mouseEntered && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) return true;\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) return true;\n }\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n } else {\n // Freemode or scrollContainer:\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest();\n }, 300);\n }\n // Emit event\n swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n enable() {\n const swiper = this;\n if (!Mousewheel.event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n if (!Mousewheel.event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nvar Mousewheel$1 = {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n lastScrollTime: Utils.now(),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nvar Navigation$1 = {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = ``\n + ' / '\n + ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n && swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nvar Pagination$1 = {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n if (Support.transforms3d) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n } else {\n $dragEl.transform(`translateX(${newPos}px)`);\n }\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n if (Support.transforms3d) {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n } else {\n $dragEl.transform(`translateY(${newPos}px)`);\n }\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el, dragSize, trackSize } = scrollbar;\n\n let pointerPosition;\n if (swiper.isHorizontal()) {\n pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);\n } else {\n pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);\n }\n let positionRatio;\n positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nvar Scrollbar$1 = {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if ((y).indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each((index, parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nvar Parallax$1 = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest('.swiper-slide');\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n gesture.$imageEl.transition(0);\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove);\n },\n};\n\nvar Zoom$1 = {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n : swiper.slides.eq(index);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nvar Lazy$1 = {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n },\n};\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n};\nvar Controller$1 = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nvar A11y = {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n },\n setHistory(key, index) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n};\n\nvar History$1 = {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nvar HashNavigation$1 = {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n\n/* eslint no-underscore-dangle: \"off\" */\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nvar Autoplay$1 = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n },\n },\n};\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFade = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nvar EffectCube = {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFlip = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);\n let translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(`
`);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(`
`);\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nvar EffectCoverflow = {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n else newThumbsIndex = prevThumbsIndex;\n } else {\n newThumbsIndex = swiper.realIndex;\n }\n if (thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n },\n};\nvar Thumbs$1 = {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(duration) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n\n// Swiper Class\n\nconst components = [\n Device$1,\n Support$1,\n Browser$1,\n Resize,\n Observer$1,\n Virtual$1,\n Keyboard$1,\n Mousewheel$1,\n Navigation$1,\n Pagination$1,\n Scrollbar$1,\n Parallax$1,\n Zoom$1,\n Lazy$1,\n Controller$1,\n A11y,\n History$1,\n HashNavigation$1,\n Autoplay$1,\n EffectFade,\n EffectCube,\n EffectFlip,\n EffectCoverflow,\n Thumbs$1\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\nexport default Swiper;\n"],"sourceRoot":""}