{"version":3,"sources":["webpack:///./node_modules/swiper/shared/get-support.js","webpack:///./node_modules/swiper/shared/get-device.js","webpack:///./node_modules/swiper/shared/get-browser.js","webpack:///./node_modules/swiper/shared/dom.js","webpack:///./node_modules/swiper/modules/virtual/virtual.js","webpack:///./node_modules/swiper/modules/keyboard/keyboard.js","webpack:///./node_modules/swiper/modules/mousewheel/mousewheel.js","webpack:///./node_modules/swiper/shared/create-element-if-not-defined.js","webpack:///./node_modules/swiper/modules/navigation/navigation.js","webpack:///./node_modules/swiper/shared/classes-to-selector.js","webpack:///./node_modules/swiper/modules/pagination/pagination.js","webpack:///./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack:///./node_modules/swiper/modules/parallax/parallax.js","webpack:///./node_modules/swiper/modules/zoom/zoom.js","webpack:///./node_modules/swiper/modules/lazy/lazy.js","webpack:///./node_modules/swiper/modules/controller/controller.js","webpack:///./node_modules/swiper/modules/a11y/a11y.js","webpack:///./node_modules/swiper/modules/history/history.js","webpack:///./node_modules/swiper/modules/hash-navigation/hash-navigation.js","webpack:///./node_modules/swiper/modules/autoplay/autoplay.js","webpack:///./node_modules/swiper/modules/thumbs/thumbs.js","webpack:///./node_modules/swiper/modules/free-mode/free-mode.js","webpack:///./node_modules/swiper/modules/grid/grid.js","webpack:///./node_modules/swiper/modules/manipulation/methods/appendSlide.js","webpack:///./node_modules/swiper/modules/manipulation/methods/prependSlide.js","webpack:///./node_modules/swiper/modules/manipulation/methods/addSlide.js","webpack:///./node_modules/swiper/modules/manipulation/methods/removeSlide.js","webpack:///./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","webpack:///./node_modules/swiper/modules/manipulation/manipulation.js","webpack:///./node_modules/swiper/shared/effect-init.js","webpack:///./node_modules/swiper/shared/effect-target.js","webpack:///./node_modules/swiper/shared/effect-virtual-transition-end.js","webpack:///./node_modules/swiper/modules/effect-fade/effect-fade.js","webpack:///./node_modules/swiper/modules/effect-cube/effect-cube.js","webpack:///./node_modules/swiper/shared/create-shadow.js","webpack:///./node_modules/swiper/modules/effect-flip/effect-flip.js","webpack:///./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack:///./node_modules/swiper/modules/effect-creative/effect-creative.js","webpack:///./node_modules/swiper/modules/effect-cards/effect-cards.js","webpack:///./node_modules/swiper/swiper.esm.js","webpack:///./node_modules/swiper/shared/utils.js"],"names":["__webpack_require__","d","__webpack_exports__","getSupport","ssr_window__WEBPACK_IMPORTED_MODULE_0__","support","window","Object","document","smoothScroll","documentElement","style","touch","DocumentTouch","passiveListener","supportsPassive","opts","defineProperty","[object Object]","addEventListener","e","gestures","calcSupport","getDevice","_get_support_js__WEBPACK_IMPORTED_MODULE_1__","deviceCached","overrides","_temp","userAgent","platform","navigator","ua","device","ios","android","screenWidth","screen","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","indexOf","os","calcDevice","getBrowser","browser","isSafari","toLowerCase","isWebView","test","calcBrowser","dom7__WEBPACK_IMPORTED_MODULE_0__","Methods","addClass","removeClass","hasClass","toggleClass","attr","removeAttr","transform","transition","on","off","trigger","transitionEnd","outerWidth","outerHeight","styles","offset","css","each","html","text","is","index","eq","append","prepend","next","nextAll","prev","prevAll","parent","parents","closest","find","children","filter","remove","keys","forEach","methodName","fn","value","writable","Virtual","_ref","cssModeTimeout","swiper","extendParams","emit","renderSlide","slide","params","virtual","cache","$slideEl","dom","call","slideClass","update","force","slidesPerView","slidesPerGroup","centeredSlides","addSlidesBefore","addSlidesAfter","from","previousFrom","to","previousTo","slides","slidesGrid","previousSlidesGrid","previousOffset","cssMode","updateActiveIndex","activeIndex","offsetProp","slidesAfter","slidesBefore","rtlTranslate","isHorizontal","Math","floor","max","min","length","onRendered","updateSlides","updateProgress","updateSlidesClasses","lazy","enabled","load","assign","renderExternal","slidesToRender","i","push","renderExternalUpdate","prependIndexes","appendIndexes","$wrapperEl","sort","a","b","undefined","classNames","containerModifierClass","watchSlidesProgress","originalParams","initialSlide","_immediateVirtual","clearTimeout","setTimeout","utils","wrapperEl","virtualSize","appendSlide","prependSlide","newActiveIndex","numberOfNewSlides","Array","isArray","unshift","newCache","cachedIndex","$cachedEl","cachedElIndex","parseInt","slideTo","removeSlide","slidesIndexes","splice","removeAllSlides","Keyboard","ssr_window_esm","handle","event","rtl","originalEvent","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","allowSlideNext","isVertical","allowSlidePrev","shiftKey","altKey","ctrlKey","metaKey","activeElement","nodeName","onlyInViewport","inView","$el","slideActiveClass","swiperWidth","clientWidth","swiperHeight","clientHeight","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","left","scrollLeft","swiperCoord","top","point","preventDefault","returnValue","slideNext","slidePrev","enable","disable","Mousewheel","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","direction","isEnd","loop","animating","raw","isBeginning","Date","getTime","disableParentSwiper","target","contains","rtlFactor","data","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","normalize","abs","positions","getTranslate","minTranslate","maxTranslate","nested","stopPropagation","freeMode","time","sign","ignoreWheelEvents","loopFix","position","wasBeginning","wasEnd","setTransition","setTranslate","sticky","shift","prevEvent","firstEvent","snapToThreshold","slideToClosest","speed","autoplay","autoplayDisableOnInteraction","stop","releaseScroll","events","method","removeEventListener","createElementIfNotDefined","checkProps","createElements","key","auto","element","createElement","className","Navigation","getEl","el","uniqueNavElements","toggleEl","disabled","navigation","disabledClass","tagName","watchOverflow","isLocked","lockClass","$nextEl","$prevEl","rewind","onPrevClick","onNextClick","init","nextEl","prevEl","destroy","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetEl","pagination","clickable","isHidden","classesToSelector","classes","trim","replace","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","type","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","slidesLength","current","total","ceil","loopedSlides","snapGrid","paginationType","snapIndex","firstIndex","lastIndex","midIndex","previousIndex","map","suffix","join","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","this","Scrollbar","dragStartPos","dragSize","trackSize","divider","isTouched","dragTimeout","scrollbar","progress","$dragEl","newSize","newPos","hide","opacity","updateSize","offsetWidth","offsetHeight","size","slidesOffsetBefore","display","getPointerPosition","targetTouches","clientX","clientY","setDragPosition","positionRatio","onDragStart","getBoundingClientRect","onDragMove","onDragEnd","snapOnRelease","touchEventsTouch","touchEventsDesktop","activeListener","passiveListeners","passive","capture","eventMethod","start","move","end","$swiperEl","dragClass","dragEl","draggable","scrollbarDisabledClass","duration","Parallax","parallax","setTransform","p","x","y","currentOpacity","currentScale","slideEl","slideIndex","slideProgress","_swiper","parallaxEl","$parallaxEl","parallaxDuration","Zoom","zoom","maxRatio","minRatio","toggle","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","isScaling","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","image","isMoved","currentX","currentY","minX","minY","maxX","maxY","startX","startY","touchesStart","touchesCurrent","velocity","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","pageX","y1","pageY","x2","y2","sqrt","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","changedTouches","onTouchMove","allowClick","scaledWidth","scaledHeight","cancelable","now","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","diffX","diffY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","overflow","touchAction","scrollX","scrollY","zoomOut","zoomToggle","getListeners","touchEvents","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","cancel","get","imageEl","onTouchStart","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTouchEnd","in","out","Lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","src","srcset","sizes","$pictureEl","loadImage","destroyed","sourceEl","$source","slideOriginalIndex","slideDuplicateClass","autoHeight","updateAutoHeight","swiperParams","isVirtual","slideExist","slideVisibleClass","amount","spv","maxIndex","minIndex","nextSlide","slideNextClass","prevSlide","slidePrevClass","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","preloadImages","touchReleaseOnEdges","resistanceRatio","Controller","LinearSpline","binarySearch","guess","array","val","i1","i3","interpolate","removeSpline","controller","control","spline","inverse","by","translate","byController","_t","controlled","multiplier","controlledTranslate","Swiper","constructor","setControlledTranslate","c","getInterpolateFunction","setControlledTransition","transitionStart","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","id","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","label","disableEl","enableEl","onEnterOrSpaceKey","$targetEl","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handleFocus","includes","isActive","isVisible","visibleSlides","initSlides","classList","$containerEl","repeat","round","random","toString","getRandomNumber","live","addElId","addElLive","updateNavigation","bulletEl","updatePagination","History","history","root","replaceState","keepQuery","initialized","paths","slugify","getPathValues","urlOverride","location","pathArray","URL","pathname","slice","split","part","setHistory","url","search","currentState","state","pushState","scrollToSlide","runCallbacks","setHistoryPopState","hashNavigation","runCallbacksOnInit","HashNavigation","watchState","onHashChange","newHash","hash","newIndex","setHash","Autoplay","run","$activeSlideEl","delay","autoplayResult","reverseDirection","stopOnLastSlide","running","pause","paused","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","internal","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","clickedIndex","clickedSlide","slideToIndex","currentIndex","_clientLeft","clientLeft","prevIndex","nextIndex","thumbsParams","SwiperClass","slideToClickedSlide","thumbsSwiperParams","initial","slidesPerViewDynamic","thumbsToActivate","thumbActiveClass","realIndex","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","visibleSlidesIndexes","once","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","touchEventsData","velocities","currentPos","touches","touchStartTime","_ref2","timeDiff","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","allowMomentumBounce","j","swipeDirection","moveDistance","currentSlideSize","slidesSizesGrid","longSwipesMs","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","grid","rows","fill","updateSlide","getDirectionLabel","spaceBetween","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","-webkit-order","order","updateWrapperSize","slideSize","roundLengths","newSlidesGrid","slidesGridItem","appendSlide_appendSlide","loopDestroy","loopCreate","observer","prependSlide_prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide_removeSlide","indexToRemove","removeAllSlides_removeAllSlides","Manipulation","bind","effectInit","effect","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","slideShadows","$","requestAnimationFrame","effectTarget","effectParams","transformEl","backface-visibility","-webkit-backface-visibility","effectVirtualTransitionEnd","allSlides","virtualTranslate","$transitionEndTarget","eventTriggered","triggerEvents","EffectFade","fadeEffect","crossFade","tx","swiperSlideOffset","ty","slideOpacity","EffectCube","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","swiperSize","$cubeShadowEl","wrapperRotate","slideAngle","tz","-webkit-transform-origin","transform-origin","shadowAngle","sin","PI","cos","scale1","scale2","zFactor","setProperty","createShadow","side","shadowClass","$shadowContainer","$shadowEl","EffectFlip","flipEffect","limitRotation","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","rotate","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","parseFloat","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","originalProgress","t","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","origin","EffectCards","cardsEffect","startTranslate","currentTranslate","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","core","animateCSSModeScroll","deleteProps","nextTick","isObject","extend","setCSSProperty","obj","object","callback","matrix","curTransform","transformMatrix","curStyle","getComputedStyle","currentStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","m41","m42","o","prototype","arguments","noExtend","nextSource","node","HTMLElement","nodeType","keysArray","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","varName","varValue","targetPosition","startPosition","startTime","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","animate","easeProgress","currentPosition","scrollTo"],"mappings":";2FAAAA,EAAAC,EAAAC,EAAA,sBAAAC,IAAA,IAAAC,EAAAJ,EAAA,GACA,IAAAK,EA+BA,SAAAF,IAKA,OAJAE,IACAA,EA/BA,WACA,MAAAC,EAAiBC,OAAAH,EAAA,EAAAG,GACjBC,EAAmBD,OAAAH,EAAA,EAAAG,GACnB,OACAE,aAAAD,EAAAE,iBAAA,mBAAAF,EAAAE,gBAAAC,MACAC,SAAA,iBAAAN,KAAAO,eAAAL,aAAAF,EAAAO,eACAC,gBAAA,WACA,IAAAC,GAAA,EAEA,IACA,MAAAC,EAAAT,OAAAU,eAAA,GAA6C,WAE7CC,MACAH,GAAA,KAIAT,EAAAa,iBAAA,2BAAAH,GACO,MAAAI,IAGP,OAAAL,EAfA,GAiBAM,SACA,mBAAAf,GAOAgB,IAGAjB,qCCrCAL,EAAAC,EAAAC,EAAA,sBAAAqB,IAAA,IAAAnB,EAAAJ,EAAA,GAAAwB,EAAAxB,EAAA,KAEA,IAAAyB,EA+CA,SAAAF,EAAAG,GASA,YARA,IAAAA,IACAA,EAAA,IAGAD,IACAA,EAnDA,SAAAE,GACA,IAAAC,UACAA,QACG,IAAAD,EAAA,GAAwBA,EAC3B,MAAAtB,EAAkBE,OAAAiB,EAAA,EAAAjB,GAClBD,EAAiBC,OAAAH,EAAA,EAAAG,GACjBsB,EAAAvB,EAAAwB,UAAAD,SACAE,EAAAH,GAAAtB,EAAAwB,UAAAF,UACAI,EAAA,CACAC,KAAA,EACAC,SAAA,GAEAC,EAAA7B,EAAA8B,OAAAC,MACAC,EAAAhC,EAAA8B,OAAAG,OACAL,EAAAH,EAAAS,MAAA,+BAEA,IAAAC,EAAAV,EAAAS,MAAA,wBACA,MAAAE,EAAAX,EAAAS,MAAA,2BACAG,GAAAF,GAAAV,EAAAS,MAAA,8BACAI,EAAA,UAAAf,EACA,IAAAgB,EAAA,aAAAhB,EAsBA,OAlBAY,GAAAI,GAAAxC,EAAAO,OAFA,wIAEAkC,WAAgEX,KAAeG,MAAa,KAC5FG,EAAAV,EAAAS,MAAA,0BACAC,EAAA,gBACAI,GAAA,GAIAX,IAAAU,IACAZ,EAAAe,GAAA,UACAf,EAAAE,SAAA,IAGAO,GAAAE,GAAAD,KACAV,EAAAe,GAAA,MACAf,EAAAC,KAAA,GAIAD,EASAgB,CAAAtB,IAGAD,qCC1DAzB,EAAAC,EAAAC,EAAA,sBAAA+C,IAAA,IAAA7C,EAAAJ,EAAA,GACA,IAAAkD,EAgBA,SAAAD,IAKA,OAJAC,IACAA,EAhBA,WACA,MAAA5C,EAAiBC,OAAAH,EAAA,EAAAG,GAOjB,OACA4C,SANA,WACA,MAAApB,EAAAzB,EAAAwB,UAAAF,UAAAwB,cACA,OAAArB,EAAAe,QAAA,cAAAf,EAAAe,QAAA,aAAAf,EAAAe,QAAA,aAIAK,GACAE,UAAA,+CAAAC,KAAAhD,EAAAwB,UAAAF,YAMA2B,IAGAL,mCCtBA,IAAAM,EAAAxD,EAAA,IACA,MAAAyD,EAAA,CACEC,SAAAF,EAAA,EACAG,YAAAH,EAAA,EACAI,SAAAJ,EAAA,EACAK,YAAAL,EAAA,EACAM,KAAAN,EAAA,EACAO,WAAAP,EAAA,EACAQ,UAAAR,EAAA,EACAS,WAAAT,EAAA,EACAU,GAAAV,EAAA,EACAW,IAAAX,EAAA,EACAY,QAAAZ,EAAA,EACAa,cAAAb,EAAA,EACAc,WAAAd,EAAA,EACAe,YAAAf,EAAA,EACAgB,OAAAhB,EAAA,EACAiB,OAAAjB,EAAA,EACAkB,IAAAlB,EAAA,EACAmB,KAAAnB,EAAA,EACAoB,KAAApB,EAAA,EACAqB,KAAArB,EAAA,EACAsB,GAAAtB,EAAA,EACAuB,MAAAvB,EAAA,EACAwB,GAAAxB,EAAA,EACAyB,OAAAzB,EAAA,EACA0B,QAAA1B,EAAA,EACA2B,KAAA3B,EAAA,EACA4B,QAAA5B,EAAA,EACA6B,KAAA7B,EAAA,EACA8B,QAAA9B,EAAA,EACA+B,OAAA/B,EAAA,EACAgC,QAAAhC,EAAA,EACAiC,QAAAjC,EAAA,EACAkC,KAAAlC,EAAA,EACAmC,SAAAnC,EAAA,EACAoC,OAAApC,EAAA,EACAqC,OAAArC,EAAA,GAEFjD,OAAAuF,KAAArC,GAAAsC,QAAAC,IACAzF,OAAAU,eAAwBuC,EAAA,EAACyC,GAAAD,EAAA,CACzBE,MAAAzC,EAAAuC,GACAG,UAAA,MAGejG,EAAA,EAAAsD,EAAC,sEC3CD,SAAA4C,EAAAC,GACf,IAkBAC,GAlBAC,OACAA,EAAAC,aACAA,EAAAtC,GACAA,EAAAuC,KACAA,GACGJ,EAuBH,SAAAK,EAAAC,EAAA5B,GACA,MAAA6B,EAAAL,EAAAK,OAAAC,QAEA,GAAAD,EAAAE,OAAAP,EAAAM,QAAAC,MAAA/B,GACA,OAAAwB,EAAAM,QAAAC,MAAA/B,GAGA,MAAAgC,EAAAH,EAAAF,YAA0CnG,OAAAyG,EAAA,EAAAzG,CAACqG,EAAAF,YAAAO,KAAAV,EAAAI,EAAA5B,IAAkDxE,OAAAyG,EAAA,EAAAzG,gBAAiBgG,EAAAK,OAAAM,wCAAsDnC,MAAU4B,WAG9K,OAFAI,EAAAjD,KAAA,4BAAAiD,EAAAjD,KAAA,0BAAAiB,GACA6B,EAAAE,QAAAP,EAAAM,QAAAC,MAAA/B,GAAAgC,GACAA,EAGA,SAAAI,EAAAC,GACA,MAAAC,cACAA,EAAAC,eACAA,EAAAC,eACAA,GACKhB,EAAAK,QACLY,gBACAA,EAAAC,eACAA,GACKlB,EAAAK,OAAAC,SAELa,KAAAC,EACAC,GAAAC,EAAAC,OACAA,EACAC,WAAAC,EACAvD,OAAAwD,GACK1B,EAAAM,QAELN,EAAAK,OAAAsB,SACA3B,EAAA4B,oBAGA,MAAAC,EAAA7B,EAAA6B,aAAA,EACA,IAAAC,EAEAC,EACAC,EAFAF,EAAA9B,EAAAiC,aAAA,QAAkDjC,EAAAkC,eAAA,aAIlDlB,GACAe,EAAAI,KAAAC,MAAAtB,EAAA,GAAAC,EAAAG,EACAc,EAAAG,KAAAC,MAAAtB,EAAA,GAAAC,EAAAE,IAEAc,EAAAjB,GAAAC,EAAA,GAAAG,EACAc,EAAAjB,EAAAE,GAGA,MAAAE,EAAAgB,KAAAE,KAAAR,GAAA,GAAAG,EAAA,GACAX,EAAAc,KAAAG,KAAAT,GAAA,GAAAE,EAAAR,EAAAgB,OAAA,GACArE,GAAA8B,EAAAwB,WAAAL,IAAA,IAAAnB,EAAAwB,WAAA,OAQA,SAAAgB,IACAxC,EAAAyC,eACAzC,EAAA0C,iBACA1C,EAAA2C,sBAEA3C,EAAA4C,MAAA5C,EAAAK,OAAAuC,KAAAC,SACA7C,EAAA4C,KAAAE,OAGA5C,EAAA,iBAGA,GAnBAlG,OAAA+I,OAAA/C,EAAAM,QAAA,CACAa,OACAE,KACAnD,SACAsD,WAAAxB,EAAAwB,aAeAJ,IAAAD,GAAAG,IAAAD,IAAAR,EAOA,OANAb,EAAAwB,aAAAC,GAAAvD,IAAAwD,GACA1B,EAAAuB,OAAApD,IAAA2D,KAAyC5D,OAGzC8B,EAAA0C,sBACAxC,EAAA,iBAIA,GAAAF,EAAAK,OAAAC,QAAA0C,eAsBA,OArBAhD,EAAAK,OAAAC,QAAA0C,eAAAtC,KAAAV,EAAA,CACA9B,SACAiD,OACAE,KACAE,OAAA,WACA,MAAA0B,EAAA,GAEA,QAAAC,EAAA/B,EAA4B+B,GAAA7B,EAAS6B,GAAA,EACrCD,EAAAE,KAAA5B,EAAA2B,IAGA,OAAAD,EAPA,UAWAjD,EAAAK,OAAAC,QAAA8C,qBACAZ,IAEAtC,EAAA,kBAMA,MAAAmD,EAAA,GACAC,EAAA,GAEA,GAAAzC,EACAb,EAAAuD,WAAApE,SAAiCa,EAAAK,OAAAM,cAAyBrB,cAE1D,QAAA4D,EAAA9B,EAAgC8B,GAAA5B,EAAiB4B,GAAA,GACjDA,EAAA/B,GAAA+B,EAAA7B,IACArB,EAAAuD,WAAApE,SAAqCa,EAAAK,OAAAM,uCAAqDuC,OAAE5D,SAK5F,QAAA4D,EAAA,EAAmBA,EAAA3B,EAAAgB,OAAmBW,GAAA,EACtCA,GAAA/B,GAAA+B,GAAA7B,SACA,IAAAC,GAAAT,EACAyC,EAAAH,KAAAD,IAEAA,EAAA5B,GAAAgC,EAAAH,KAAAD,GACAA,EAAA9B,GAAAiC,EAAAF,KAAAD,KAKAI,EAAA9D,QAAAhB,IACAwB,EAAAuD,WAAA7E,OAAAyB,EAAAoB,EAAA/C,SAEA6E,EAAAG,KAAA,CAAAC,EAAAC,MAAAD,GAAAjE,QAAAhB,IACAwB,EAAAuD,WAAA5E,QAAAwB,EAAAoB,EAAA/C,SAEAwB,EAAAuD,WAAAnE,SAAA,iBAAAjB,IAAA2D,KAAmE5D,OACnEsE,IA/JAvC,EAAA,CACAK,QAAA,CACAuC,SAAA,EACAtB,OAAA,GACAhB,OAAA,EACAJ,YAAA,KACA6C,eAAA,KACAI,sBAAA,EACAnC,gBAAA,EACAC,eAAA,KAIAlB,EAAAM,QAAA,CACAC,MAAA,GACAY,UAAAwC,EACAtC,QAAAsC,EACApC,OAAA,GACArD,OAAA,EACAsD,WAAA,IAwOA7D,EAAA,kBACAqC,EAAAK,OAAAC,QAAAuC,UACA7C,EAAAM,QAAAiB,OAAAvB,EAAAK,OAAAC,QAAAiB,OACAvB,EAAA4D,WAAAT,QAA8BnD,EAAAK,OAAAwD,iCAC9B7D,EAAAK,OAAAyD,qBAAA,EACA9D,EAAA+D,eAAAD,qBAAA,EAEA9D,EAAAK,OAAA2D,cACApD,OAGAjD,EAAA,oBACAqC,EAAAK,OAAAC,QAAAuC,UAEA7C,EAAAK,OAAAsB,UAAA3B,EAAAiE,mBACAC,aAAAnE,GACAA,EAAAoE,WAAA,KACAvD,KACO,MAEPA,OAGAjD,EAAA,0BACAqC,EAAAK,OAAAC,QAAAuC,SAEA7C,EAAAK,OAAAsB,SACM3H,OAAAoK,EAAA,EAAApK,CAAcgG,EAAAqE,UAAA,2BAA+CrE,EAAAsE,mBAGnEtK,OAAA+I,OAAA/C,EAAAM,QAAA,CACAiE,YAxHA,SAAAhD,GACA,oBAAAA,GAAA,WAAAA,EACA,QAAA2B,EAAA,EAAqBA,EAAA3B,EAAAgB,OAAmBW,GAAA,EACxC3B,EAAA2B,IAAAlD,EAAAM,QAAAiB,OAAA4B,KAAA5B,EAAA2B,SAGAlD,EAAAM,QAAAiB,OAAA4B,KAAA5B,GAGAX,GAAA,IAgHA4D,aA7GA,SAAAjD,GACA,MAAAM,EAAA7B,EAAA6B,YACA,IAAA4C,EAAA5C,EAAA,EACA6C,EAAA,EAEA,GAAAC,MAAAC,QAAArD,GAAA,CACA,QAAA2B,EAAA,EAAqBA,EAAA3B,EAAAgB,OAAmBW,GAAA,EACxC3B,EAAA2B,IAAAlD,EAAAM,QAAAiB,OAAAsD,QAAAtD,EAAA2B,IAGAuB,EAAA5C,EAAAN,EAAAgB,OACAmC,EAAAnD,EAAAgB,YAEAvC,EAAAM,QAAAiB,OAAAsD,QAAAtD,GAGA,GAAAvB,EAAAK,OAAAC,QAAAC,MAAA,CACA,MAAAA,EAAAP,EAAAM,QAAAC,MACAuE,EAAA,GACA9K,OAAAuF,KAAAgB,GAAAf,QAAAuF,IACA,MAAAC,EAAAzE,EAAAwE,GACAE,EAAAD,EAAAzH,KAAA,2BAEA0H,GACAD,EAAAzH,KAAA,0BAAA2H,SAAAD,EAAA,IAAAP,GAGAI,EAAAI,SAAAH,EAAA,IAAAL,GAAAM,IAEAhF,EAAAM,QAAAC,MAAAuE,EAGAlE,GAAA,GACAZ,EAAAmF,QAAAV,EAAA,IA6EAW,YA1EA,SAAAC,GACA,SAAAA,EAAA,OACA,IAAAxD,EAAA7B,EAAA6B,YAEA,GAAA8C,MAAAC,QAAAS,GACA,QAAAnC,EAAAmC,EAAA9C,OAAA,EAA4CW,GAAA,EAAQA,GAAA,EACpDlD,EAAAM,QAAAiB,OAAA+D,OAAAD,EAAAnC,GAAA,GAEAlD,EAAAK,OAAAC,QAAAC,cACAP,EAAAM,QAAAC,MAAA8E,EAAAnC,IAGAmC,EAAAnC,GAAArB,OAAA,GACAA,EAAAM,KAAAE,IAAAR,EAAA,QAGA7B,EAAAM,QAAAiB,OAAA+D,OAAAD,EAAA,GAEArF,EAAAK,OAAAC,QAAAC,cACAP,EAAAM,QAAAC,MAAA8E,GAGAA,EAAAxD,OAAA,GACAA,EAAAM,KAAAE,IAAAR,EAAA,GAGAjB,GAAA,GACAZ,EAAAmF,QAAAtD,EAAA,IAgDA0D,gBA7CA,WACAvF,EAAAM,QAAAiB,OAAA,GAEAvB,EAAAK,OAAAC,QAAAC,QACAP,EAAAM,QAAAC,MAAA,IAGAK,GAAA,GACAZ,EAAAmF,QAAA,MAsCAvE,sBCpSe,SAAA4E,EAAA1F,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,EAAAuC,KACAA,GACGJ,EACH,MAAA7F,EAAmBD,OAAAyL,EAAA,EAAAzL,GACnBD,EAAiBC,OAAAyL,EAAA,EAAAzL,GAYjB,SAAA0L,EAAAC,GACA,IAAA3F,EAAA6C,QAAA,OACA,MACAZ,aAAA2D,GACK5F,EACL,IAAAnF,EAAA8K,EACA9K,EAAAgL,gBAAAhL,IAAAgL,eAEA,MAAAC,EAAAjL,EAAAkL,SAAAlL,EAAAmL,SACAC,EAAAjG,EAAAK,OAAA6F,SAAAD,WACAE,EAAAF,GAAA,KAAAH,EACAM,EAAAH,GAAA,KAAAH,EACAO,EAAA,KAAAP,EACAQ,EAAA,KAAAR,EACAS,EAAA,KAAAT,EACAU,EAAA,KAAAV,EAEA,IAAA9F,EAAAyG,iBAAAzG,EAAAkC,gBAAAoE,GAAAtG,EAAA0G,cAAAF,GAAAJ,GACA,SAGA,IAAApG,EAAA2G,iBAAA3G,EAAAkC,gBAAAmE,GAAArG,EAAA0G,cAAAH,GAAAJ,GACA,SAGA,KAAAtL,EAAA+L,UAAA/L,EAAAgM,QAAAhM,EAAAiM,SAAAjM,EAAAkM,SAIA9M,EAAA+M,eAAA/M,EAAA+M,cAAAC,WAAA,UAAAhN,EAAA+M,cAAAC,SAAApK,eAAA,aAAA5C,EAAA+M,cAAAC,SAAApK,gBAAA,CAIA,GAAAmD,EAAAK,OAAA6F,SAAAgB,iBAAAf,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAA,CACA,IAAAW,GAAA,EAEA,GAAAnH,EAAAoH,IAAAnI,YAAiCe,EAAAK,OAAAM,cAAyB4B,OAAA,GAAuE,IAAvEvC,EAAAoH,IAAAnI,YAAwCe,EAAAK,OAAAgH,oBAA+B9E,OACjI,OAGA,MAAA6E,EAAApH,EAAAoH,IACAE,EAAAF,EAAA,GAAAG,YACAC,EAAAJ,EAAA,GAAAK,aACAC,EAAA3N,EAAA4N,WACAC,EAAA7N,EAAA8N,YACAC,EAAA9H,EAAAoH,IAAAlJ,SACA0H,IAAAkC,EAAAC,MAAA/H,EAAAoH,IAAA,GAAAY,YACA,MAAAC,EAAA,EAAAH,EAAAC,KAAAD,EAAAI,KAAA,CAAAJ,EAAAC,KAAAT,EAAAQ,EAAAI,KAAA,CAAAJ,EAAAC,KAAAD,EAAAI,IAAAV,GAAA,CAAAM,EAAAC,KAAAT,EAAAQ,EAAAI,IAAAV,IAEA,QAAAtE,EAAA,EAAqBA,EAAA+E,EAAA1F,OAAwBW,GAAA,GAC7C,MAAAiF,EAAAF,EAAA/E,GAEA,GAAAiF,EAAA,OAAAA,EAAA,IAAAT,GAAAS,EAAA,OAAAA,EAAA,IAAAP,EAAA,CACA,OAAAO,EAAA,QAAAA,EAAA,YAEAhB,GAAA,GAIA,IAAAA,EAAA,OAGAnH,EAAAkC,iBACAiE,GAAAC,GAAAC,GAAAC,KACAzL,EAAAuN,eAAAvN,EAAAuN,iBAAiDvN,EAAAwN,aAAA,KAGjDjC,GAAAE,KAAAV,IAAAO,GAAAE,IAAAT,IAAA5F,EAAAsI,cACAnC,GAAAE,KAAAT,IAAAQ,GAAAE,IAAAV,IAAA5F,EAAAuI,eAEApC,GAAAC,GAAAG,GAAAC,KACA3L,EAAAuN,eAAAvN,EAAAuN,iBAAiDvN,EAAAwN,aAAA,IAGjDjC,GAAAI,IAAAxG,EAAAsI,aACAnC,GAAAI,IAAAvG,EAAAuI,aAGArI,EAAA,WAAA4F,IAIA,SAAA0C,IACAxI,EAAAkG,SAAArD,UACI7I,OAAAyG,EAAA,EAAAzG,CAACC,GAAA0D,GAAA,UAAA+H,GACL1F,EAAAkG,SAAArD,SAAA,GAGA,SAAA4F,IACAzI,EAAAkG,SAAArD,UACI7I,OAAAyG,EAAA,EAAAzG,CAACC,GAAA2D,IAAA,UAAA8H,GACL1F,EAAAkG,SAAArD,SAAA,GAtGA7C,EAAAkG,SAAA,CACArD,SAAA,GAEA5C,EAAA,CACAiG,SAAA,CACArD,SAAA,EACAqE,gBAAA,EACAjB,YAAA,KAkGAtI,EAAA,YACAqC,EAAAK,OAAA6F,SAAArD,SACA2F,MAGA7K,EAAA,eACAqC,EAAAkG,SAAArD,SACA4F,MAGAzO,OAAA+I,OAAA/C,EAAAkG,SAAA,CACAsC,SACAC,YC7He,SAAAC,EAAA5I,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,EAAAuC,KACAA,GACGJ,EACH,MAAA/F,EAAiBC,OAAAyL,EAAA,EAAAzL,GAgBjB,IAAA2O,EAfA1I,EAAA,CACA2I,WAAA,CACA/F,SAAA,EACAgG,gBAAA,EACAC,QAAA,EACAC,aAAA,EACAC,YAAA,EACAC,aAAA,YACAC,eAAA,KACAC,cAAA,QAGAnJ,EAAA4I,WAAA,CACA/F,SAAA,GAGA,IACAuG,EADAC,EAAuBrP,OAAAoK,EAAA,EAAApK,GAEvB,MAAAsP,EAAA,GAkFA,SAAAC,IACAvJ,EAAA6C,UACA7C,EAAAwJ,cAAA,GAGA,SAAAC,IACAzJ,EAAA6C,UACA7C,EAAAwJ,cAAA,GAGA,SAAAE,EAAAC,GACA,QAAA3J,EAAAK,OAAAuI,WAAAM,gBAAAS,EAAAC,MAAA5J,EAAAK,OAAAuI,WAAAM,oBAKAlJ,EAAAK,OAAAuI,WAAAO,eAAkDnP,OAAAoK,EAAA,EAAApK,GAAGqP,EAAArJ,EAAAK,OAAAuI,WAAAO,iBAQrDQ,EAAAC,OAAA,GAA+B5P,OAAAoK,EAAA,EAAApK,GAAGqP,EAAA,KAiBlCM,EAAAE,UAAA,EACA7J,EAAA8J,QAAA9J,EAAAK,OAAA0J,MAAA/J,EAAAgK,YACAhK,EAAAsI,YACApI,EAAA,SAAAyJ,EAAAM,MAEKjK,EAAAkK,cAAAlK,EAAAK,OAAA0J,MAAA/J,EAAAgK,YACLhK,EAAAuI,YACArI,EAAA,SAAAyJ,EAAAM,MAIAZ,GAAA,IAAAtP,EAAAoQ,MAAAC,WAEA,KAmBA,SAAA1E,EAAAC,GACA,IAAA9K,EAAA8K,EACA0E,GAAA,EACA,IAAArK,EAAA6C,QAAA,OACA,MAAAxC,EAAAL,EAAAK,OAAAuI,WAEA5I,EAAAK,OAAAsB,SACA9G,EAAAuN,iBAGA,IAAAkC,EAAAtK,EAAAoH,IAMA,GAJA,cAAApH,EAAAK,OAAAuI,WAAAK,eACAqB,EAAetQ,OAAAyG,EAAA,EAAAzG,CAACgG,EAAAK,OAAAuI,WAAAK,gBAGhBjJ,EAAAwJ,eAAAc,EAAA,GAAAC,SAAA1P,EAAAyP,UAAAjK,EAAAwI,eAAA,SACAhO,EAAAgL,gBAAAhL,IAAAgL,eAEA,IAAA+D,EAAA,EACA,MAAAY,EAAAxK,EAAAiC,cAAA,IACAwI,EA9KA,SAAA5P,GAKA,IAAA6P,EAAA,EACAC,EAAA,EAEAC,EAAA,EACAC,EAAA,EA+DA,MA5DA,WAAAhQ,IACA8P,EAAA9P,EAAAiQ,QAGA,eAAAjQ,IACA8P,GAAA9P,EAAAkQ,WAAA,KAGA,gBAAAlQ,IACA8P,GAAA9P,EAAAmQ,YAAA,KAGA,gBAAAnQ,IACA6P,GAAA7P,EAAAoQ,YAAA,KAIA,SAAApQ,KAAAqQ,OAAArQ,EAAAsQ,kBACAT,EAAAC,EACAA,EAAA,GAGAC,EAhCA,GAgCAF,EACAG,EAjCA,GAiCAF,EAEA,WAAA9P,IACAgQ,EAAAhQ,EAAAuQ,QAGA,WAAAvQ,IACA+P,EAAA/P,EAAAwQ,QAGAxQ,EAAA+L,WAAAgE,IAEAA,EAAAC,EACAA,EAAA,IAGAD,GAAAC,IAAAhQ,EAAAyQ,YACA,IAAAzQ,EAAAyQ,WAEAV,GAnDA,GAoDAC,GApDA,KAuDAD,GAtDA,IAuDAC,GAvDA,MA4DAD,IAAAF,IACAA,EAAAE,EAAA,QAGAC,IAAAF,IACAA,EAAAE,EAAA,QAGA,CACAU,MAAAb,EACAc,MAAAb,EACAc,OAAAb,EACAc,OAAAb,GAkGAc,CAAA9Q,GAEA,GAAAwF,EAAA0I,YACA,GAAA/I,EAAAkC,eAAA,CACA,KAAAC,KAAAyJ,IAAAnB,EAAAgB,QAAAtJ,KAAAyJ,IAAAnB,EAAAiB,SAA4F,SAA5F9B,GAAAa,EAAAgB,OAAAjB,MACO,MAAArI,KAAAyJ,IAAAnB,EAAAiB,QAAAvJ,KAAAyJ,IAAAnB,EAAAgB,SAA8E,SAA9E7B,GAAAa,EAAAiB,YAEP9B,EAAAzH,KAAAyJ,IAAAnB,EAAAgB,QAAAtJ,KAAAyJ,IAAAnB,EAAAiB,SAAAjB,EAAAgB,OAAAjB,GAAAC,EAAAiB,OAGA,OAAA9B,EAAA,SACAvJ,EAAAyI,SAAAc,MAEA,IAAAiC,EAAA7L,EAAA8L,eAAAlC,EAAAvJ,EAAA2I,YAaA,GAZA6C,GAAA7L,EAAA+L,iBAAAF,EAAA7L,EAAA+L,gBACAF,GAAA7L,EAAAgM,iBAAAH,EAAA7L,EAAAgM,iBAQA3B,IAAArK,EAAAK,OAAA0J,QAAA8B,IAAA7L,EAAA+L,gBAAAF,IAAA7L,EAAAgM,kBACAhM,EAAAK,OAAA4L,QAAApR,EAAAqR,kBAEAlM,EAAAK,OAAA8L,UAAAnM,EAAAK,OAAA8L,SAAAtJ,QAkCK,CAML,MAAA8G,EAAA,CACAyC,KAAcpS,OAAAoK,EAAA,EAAApK,GACd4P,MAAAzH,KAAAyJ,IAAAhC,GACAC,UAAA1H,KAAAkK,KAAAzC,IAEA0C,EAAAlD,GAAAO,EAAAyC,KAAAhD,EAAAgD,KAAA,KAAAzC,EAAAC,OAAAR,EAAAQ,OAAAD,EAAAE,YAAAT,EAAAS,UAEA,IAAAyC,EAAA,CACAlD,OAAAzF,EAEA3D,EAAAK,OAAA0J,MACA/J,EAAAuM,UAGA,IAAAC,EAAAxM,EAAA8L,eAAAlC,EAAAvJ,EAAA2I,YACA,MAAAyD,EAAAzM,EAAAkK,YACAwC,EAAA1M,EAAA8J,MAaA,GAZA0C,GAAAxM,EAAA+L,iBAAAS,EAAAxM,EAAA+L,gBACAS,GAAAxM,EAAAgM,iBAAAQ,EAAAxM,EAAAgM,gBACAhM,EAAA2M,cAAA,GACA3M,EAAA4M,aAAAJ,GACAxM,EAAA0C,iBACA1C,EAAA4B,oBACA5B,EAAA2C,wBAEA8J,GAAAzM,EAAAkK,cAAAwC,GAAA1M,EAAA8J,QACA9J,EAAA2C,sBAGA3C,EAAAK,OAAA8L,SAAAU,OAAA,CAYA3I,aAAAyE,GACAA,OAAAhF,EAEA2F,EAAA/G,QAAA,IACA+G,EAAAwD,QAGA,MAAAC,EAAAzD,EAAA/G,OAAA+G,IAAA/G,OAAA,QAAAoB,EACAqJ,EAAA1D,EAAA,GAGA,GAFAA,EAAAnG,KAAAwG,GAEAoD,IAAApD,EAAAC,MAAAmD,EAAAnD,OAAAD,EAAAE,YAAAkD,EAAAlD,WAEAP,EAAAhE,OAAA,QACW,GAAAgE,EAAA/G,QAAA,IAAAoH,EAAAyC,KAAAY,EAAAZ,KAAA,KAAAY,EAAApD,MAAAD,EAAAC,OAAA,GAAAD,EAAAC,OAAA,GAOX,MAAAqD,EAAArD,EAAA,QACAR,EAAAO,EACAL,EAAAhE,OAAA,GACAqD,EAAsB3O,OAAAoK,EAAA,EAAApK,CAAQ,KAC9BgG,EAAAkN,eAAAlN,EAAAK,OAAA8M,OAAA,OAAAxJ,EAAAsJ,IACa,GAGbtE,IAIAA,EAAsB3O,OAAAoK,EAAA,EAAApK,CAAQ,KAE9BoP,EAAAO,EACAL,EAAAhE,OAAA,GACAtF,EAAAkN,eAAAlN,EAAAK,OAAA8M,OAAA,OAAAxJ,EAHA,KAIa,MASb,GAJA2I,GAAApM,EAAA,SAAArF,GAEAmF,EAAAK,OAAA+M,UAAApN,EAAAK,OAAAgN,8BAAArN,EAAAoN,SAAAE,OAEAd,IAAAxM,EAAA+L,gBAAAS,IAAAxM,EAAAgM,eAAA,cAhIA,CAEA,MAAArC,EAAA,CACAyC,KAAcpS,OAAAoK,EAAA,EAAApK,GACd4P,MAAAzH,KAAAyJ,IAAAhC,GACAC,UAAA1H,KAAAkK,KAAAzC,GACAK,IAAAtE,GAGA2D,EAAA/G,QAAA,GACA+G,EAAAwD,QAGA,MAAAC,EAAAzD,EAAA/G,OAAA+G,IAAA/G,OAAA,QAAAoB,EAkBA,GAjBA2F,EAAAnG,KAAAwG,GAOAoD,GACApD,EAAAE,YAAAkD,EAAAlD,WAAAF,EAAAC,MAAAmD,EAAAnD,OAAAD,EAAAyC,KAAAW,EAAAX,KAAA,MACA1C,EAAAC,GAGAD,EAAAC,GAzFA,SAAAA,GACA,MAAAtJ,EAAAL,EAAAK,OAAAuI,WAEA,GAAAe,EAAAE,UAAA,GACA,GAAA7J,EAAA8J,QAAA9J,EAAAK,OAAA0J,MAAA1J,EAAAwI,eAEA,cAEK,GAAA7I,EAAAkK,cAAAlK,EAAAK,OAAA0J,MAAA1J,EAAAwI,eAEL,SAGA,SAiFA0E,CAAA5D,GACA,SAqGA,OADA9O,EAAAuN,eAAAvN,EAAAuN,iBAA6CvN,EAAAwN,aAAA,GAC7C,EAGA,SAAAmF,EAAAC,GACA,IAAAnD,EAAAtK,EAAAoH,IAEA,cAAApH,EAAAK,OAAAuI,WAAAK,eACAqB,EAAetQ,OAAAyG,EAAA,EAAAzG,CAACgG,EAAAK,OAAAuI,WAAAK,eAGhBqB,EAAAmD,GAAA,aAAAlE,GACAe,EAAAmD,GAAA,aAAAhE,GACAa,EAAAmD,GAAA,QAAA/H,GAGA,SAAA8C,IACA,OAAAxI,EAAAK,OAAAsB,SACA3B,EAAAqE,UAAAqJ,oBAAA,QAAAhI,IACA,IAGA1F,EAAA4I,WAAA/F,UACA2K,EAAA,MACAxN,EAAA4I,WAAA/F,SAAA,GACA,GAGA,SAAA4F,IACA,OAAAzI,EAAAK,OAAAsB,SACA3B,EAAAqE,UAAAzJ,iBAAA+K,MAAAD,IACA,KAGA1F,EAAA4I,WAAA/F,UACA2K,EAAA,OACAxN,EAAA4I,WAAA/F,SAAA,GACA,GAGAlF,EAAA,aACAqC,EAAAK,OAAAuI,WAAA/F,SAAA7C,EAAAK,OAAAsB,SACA8G,IAGAzI,EAAAK,OAAAuI,WAAA/F,SAAA2F,MAEA7K,EAAA,eACAqC,EAAAK,OAAAsB,SACA6G,IAGAxI,EAAA4I,WAAA/F,SAAA4F,MAEAzO,OAAA+I,OAAA/C,EAAA4I,WAAA,CACAJ,SACAC,YCnae,SAAAkF,EAAA3N,EAAA+D,EAAA1D,EAAAuN,GACf,MAAA3T,EAAmBD,OAAAyL,EAAA,EAAAzL,GAmBnB,OAjBAgG,EAAAK,OAAAwN,gBACA7T,OAAAuF,KAAAqO,GAAApO,QAAAsO,IACA,IAAAzN,EAAAyN,KAAA,IAAAzN,EAAA0N,KAAA,CACA,IAAAC,EAAAhO,EAAAoH,IAAAhI,aAA8CwO,EAAAE,MAAgB,GAE9DE,KACAA,EAAA/T,EAAAgU,cAAA,QACAC,UAAAN,EAAAE,GACA9N,EAAAoH,IAAA1I,OAAAsP,IAGA3N,EAAAyN,GAAAE,EACAjK,EAAA+J,GAAAE,KAKA3N,ECnBe,SAAA8N,EAAArO,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,EAAAuC,KACAA,GACGJ,EAmBH,SAAAsO,EAAAC,GACA,IAAAjH,EAUA,OARAiH,IACAjH,EAAYpN,OAAAyG,EAAA,EAAAzG,CAACqU,GAEbrO,EAAAK,OAAAiO,mBAAA,iBAAAD,GAAAjH,EAAA7E,OAAA,OAAAvC,EAAAoH,IAAAjI,KAAAkP,GAAA9L,SACA6E,EAAApH,EAAAoH,IAAAjI,KAAAkP,KAIAjH,EAGA,SAAAmH,EAAAnH,EAAAoH,GACA,MAAAnO,EAAAL,EAAAK,OAAAoO,WAEArH,KAAA7E,OAAA,IACA6E,EAAAoH,EAAA,0BAAAnO,EAAAqO,eACAtH,EAAA,eAAAA,EAAA,GAAAuH,UAAAvH,EAAA,GAAAoH,YAEAxO,EAAAK,OAAAuO,eAAA5O,EAAA6C,SACAuE,EAAApH,EAAA6O,SAAA,0BAAAxO,EAAAyO,YAKA,SAAAlO,IAEA,GAAAZ,EAAAK,OAAA0J,KAAA,OACA,MAAAgF,QACAA,EAAAC,QACAA,GACKhP,EAAAyO,WACLF,EAAAS,EAAAhP,EAAAkK,cAAAlK,EAAAK,OAAA4O,QACAV,EAAAQ,EAAA/O,EAAA8J,QAAA9J,EAAAK,OAAA4O,QAGA,SAAAC,EAAArU,GACAA,EAAAuN,mBACApI,EAAAkK,aAAAlK,EAAAK,OAAA0J,MAAA/J,EAAAK,OAAA4O,UACAjP,EAAAuI,YACArI,EAAA,mBAGA,SAAAiP,EAAAtU,GACAA,EAAAuN,mBACApI,EAAA8J,OAAA9J,EAAAK,OAAA0J,MAAA/J,EAAAK,OAAA4O,UACAjP,EAAAsI,YACApI,EAAA,mBAGA,SAAAkP,IACA,MAAA/O,EAAAL,EAAAK,OAAAoO,WAKA,GAJAzO,EAAAK,OAAAoO,WAA+Bd,EAAyB3N,IAAA+D,eAAA0K,WAAAzO,EAAAK,OAAAoO,WAAA,CACxDY,OAAA,qBACAC,OAAA,wBAEAjP,EAAAgP,SAAAhP,EAAAiP,OAAA,OACA,MAAAP,EAAAX,EAAA/N,EAAAgP,QACAL,EAAAZ,EAAA/N,EAAAiP,QAEAP,KAAAxM,OAAA,GACAwM,EAAApR,GAAA,QAAAwR,GAGAH,KAAAzM,OAAA,GACAyM,EAAArR,GAAA,QAAAuR,GAGAlV,OAAA+I,OAAA/C,EAAAyO,WAAA,CACAM,UACAM,OAAAN,KAAA,GACAC,UACAM,OAAAN,KAAA,KAGAhP,EAAA6C,UACAkM,KAAA5R,SAAAkD,EAAAyO,WACAE,KAAA7R,SAAAkD,EAAAyO,YAIA,SAAAS,IACA,MAAAR,QACAA,EAAAC,QACAA,GACKhP,EAAAyO,WAELM,KAAAxM,SACAwM,EAAAnR,IAAA,QAAAuR,GACAJ,EAAA3R,YAAA4C,EAAAK,OAAAoO,WAAAC,gBAGAM,KAAAzM,SACAyM,EAAApR,IAAA,QAAAsR,GACAF,EAAA5R,YAAA4C,EAAAK,OAAAoO,WAAAC,gBAlHAzO,EAAA,CACAwO,WAAA,CACAY,OAAA,KACAC,OAAA,KACAE,aAAA,EACAd,cAAA,yBACAe,YAAA,uBACAX,UAAA,qBACAY,wBAAA,gCAGA1P,EAAAyO,WAAA,CACAY,OAAA,KACAN,QAAA,KACAO,OAAA,KACAN,QAAA,MAuGArR,EAAA,aACA,IAAAqC,EAAAK,OAAAoO,WAAA5L,QAEA4F,KAEA2G,IACAxO,OAGAjD,EAAA,mCACAiD,MAEAjD,EAAA,eACA4R,MAEA5R,EAAA,sBACA,MAAAoR,QACAA,EAAAC,QACAA,GACKhP,EAAAyO,WAELM,GACAA,EAAA/O,EAAA6C,QAAA,0BAAA7C,EAAAK,OAAAoO,WAAAK,WAGAE,GACAA,EAAAhP,EAAA6C,QAAA,0BAAA7C,EAAAK,OAAAoO,WAAAK,aAGAnR,EAAA,SAAAgS,EAAA9U,KACA,MAAAkU,QACAA,EAAAC,QACAA,GACKhP,EAAAyO,WACLmB,EAAA/U,EAAAyP,OAEA,GAAAtK,EAAAK,OAAAoO,WAAAe,cAAiDxV,OAAAyG,EAAA,EAAAzG,CAAC4V,GAAArR,GAAAyQ,KAA2BhV,OAAAyG,EAAA,EAAAzG,CAAC4V,GAAArR,GAAAwQ,GAAA,CAC9E,GAAA/O,EAAA6P,YAAA7P,EAAAK,OAAAwP,YAAA7P,EAAAK,OAAAwP,WAAAC,YAAA9P,EAAA6P,WAAAxB,KAAAuB,GAAA5P,EAAA6P,WAAAxB,GAAA9D,SAAAqF,IAAA,OACA,IAAAG,EAEAhB,EACAgB,EAAAhB,EAAA1R,SAAA2C,EAAAK,OAAAoO,WAAAgB,aACOT,IACPe,EAAAf,EAAA3R,SAAA2C,EAAAK,OAAAoO,WAAAgB,cAIAvP,GADA,IAAA6P,EACA,iBAEA,kBAGAhB,GACAA,EAAAzR,YAAA0C,EAAAK,OAAAoO,WAAAgB,aAGAT,GACAA,EAAA1R,YAAA0C,EAAAK,OAAAoO,WAAAgB,gBAKA,MAMAhH,EAAA,KACAzI,EAAAoH,IAAAjK,SAAA6C,EAAAK,OAAAoO,WAAAiB,yBACAH,KAGAvV,OAAA+I,OAAA/C,EAAAyO,WAAA,CACAjG,OAZA,KACAxI,EAAAoH,IAAAhK,YAAA4C,EAAAK,OAAAoO,WAAAiB,yBACAN,IACAxO,KAUA6H,UACA7H,SACAwO,OACAG,YC7Me,SAAAS,EAAAC,GAKf,YAJA,IAAAA,IACAA,EAAA,QAGaA,EAAAC,OAAAC,QAAA,sBACbA,QAAA,YCHe,SAAAC,EAAAtQ,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,EAAAuC,KACAA,GACGJ,EACH,MAAAuQ,EAAA,oBAsCA,IAAAC,EArCArQ,EAAA,CACA4P,WAAA,CACAxB,GAAA,KACAkC,cAAA,OACAT,WAAA,EACAN,aAAA,EACAgB,aAAA,KACAC,kBAAA,KACAC,eAAA,KACAC,aAAA,KACAC,qBAAA,EACAC,KAAA,UAEAC,gBAAA,EACAC,mBAAA,EACAC,sBAAAC,KACAC,oBAAAD,KACAE,eAAsBd,WACtBe,qBAA4Bf,kBAC5BgB,iBAAwBhB,KACxBiB,gBAAuBjB,YACvBkB,cAAqBlB,UACrBZ,eAAsBY,WACtBmB,wBAA+BnB,qBAC/BoB,4BAAmCpB,yBACnCqB,kBAAyBrB,cACzBvB,aAAoBuB,SACpBsB,mBAA0BtB,eAC1BuB,iBAAwBvB,aACxBwB,2BAAkCxB,gBAGlCrQ,EAAA6P,WAAA,CACAxB,GAAA,KACAjH,IAAA,KACA0K,QAAA,IAGA,IAAAC,EAAA,EAEA,SAAAC,IACA,OAAAhS,EAAAK,OAAAwP,WAAAxB,KAAArO,EAAA6P,WAAAxB,KAAArO,EAAA6P,WAAAzI,KAAA,IAAApH,EAAA6P,WAAAzI,IAAA7E,OAGA,SAAA0P,EAAAC,EAAA1F,GACA,MAAA4E,kBACAA,GACKpR,EAAAK,OAAAwP,WACLqC,EAAA1F,KAAArP,YAAsCiU,KAAqB5E,KAASA,KAAArP,YAA2BiU,KAAqB5E,KAAYA,KAGhI,SAAA5L,IAEA,MAAAgF,EAAA5F,EAAA4F,IACAvF,EAAAL,EAAAK,OAAAwP,WACA,GAAAmC,IAAA,OACA,MAAAG,EAAAnS,EAAAM,SAAAN,EAAAK,OAAAC,QAAAuC,QAAA7C,EAAAM,QAAAiB,OAAAgB,OAAAvC,EAAAuB,OAAAgB,OACA6E,EAAApH,EAAA6P,WAAAzI,IAEA,IAAAgL,EACA,MAAAC,EAAArS,EAAAK,OAAA0J,KAAA5H,KAAAmQ,MAAAH,EAAA,EAAAnS,EAAAuS,cAAAvS,EAAAK,OAAAU,gBAAAf,EAAAwS,SAAAjQ,OAkBA,GAhBAvC,EAAAK,OAAA0J,OACAqI,EAAAjQ,KAAAmQ,MAAAtS,EAAA6B,YAAA7B,EAAAuS,cAAAvS,EAAAK,OAAAU,iBAEAoR,EAAA,IAAAnS,EAAAuS,eACAH,GAAAD,EAAA,EAAAnS,EAAAuS,cAGAH,EAAAC,EAAA,IAAAD,GAAAC,GACAD,EAAA,eAAApS,EAAAK,OAAAoS,iBAAAL,EAAAC,EAAAD,IAEAA,OADK,IAAApS,EAAA0S,UACL1S,EAAA0S,UAEA1S,EAAA6B,aAAA,EAIA,YAAAxB,EAAAwQ,MAAA7Q,EAAA6P,WAAAiC,SAAA9R,EAAA6P,WAAAiC,QAAAvP,OAAA,GACA,MAAAuP,EAAA9R,EAAA6P,WAAAiC,QACA,IAAAa,EACAC,EACAC,EAuBA,GArBAxS,EAAAyQ,iBACAR,EAAAwB,EAAArT,GAAA,GAAAuB,EAAAkC,eAAA,gCACAkF,EAAAjJ,IAAA6B,EAAAkC,eAAA,oBAA+DoO,GAAAjQ,EAAA0Q,mBAAA,QAE/D1Q,EAAA0Q,mBAAA,QAAApN,IAAA3D,EAAA8S,iBACAf,GAAAK,GAAApS,EAAA8S,cAAA9S,EAAAuS,cAAA,IAEAlS,EAAA0Q,mBAAA,EACAgB,EAAA1R,EAAA0Q,mBAAA,EACWgB,EAAA,IACXA,EAAA,IAIAY,EAAAxQ,KAAAE,IAAA+P,EAAAL,EAAA,GAEAc,IADAD,EAAAD,GAAAxQ,KAAAG,IAAAwP,EAAAvP,OAAAlC,EAAA0Q,oBAAA,IACA4B,GAAA,GAGAb,EAAA1U,YAAA,uDAAA2V,IAAAC,MAAuG3S,EAAA+Q,oBAA2B4B,KAAOC,KAAA,MAEzI7L,EAAA7E,OAAA,EACAuP,EAAA1T,KAAA8U,IACA,MAAAC,EAA0BnZ,OAAAyG,EAAA,EAAAzG,CAACkZ,GAC3BE,EAAAD,EAAA3U,QAEA4U,IAAAhB,GACAe,EAAAhW,SAAAkD,EAAA+Q,mBAGA/Q,EAAAyQ,iBACAsC,GAAAT,GAAAS,GAAAR,GACAO,EAAAhW,YAAkCkD,EAAA+Q,0BAGlCgC,IAAAT,GACAV,EAAAkB,EAAA,QAGAC,IAAAR,GACAX,EAAAkB,EAAA,eAIO,CACP,MAAAA,EAAArB,EAAArT,GAAA2T,GACAgB,EAAAD,EAAA3U,QAGA,GAFA2U,EAAAhW,SAAAkD,EAAA+Q,mBAEA/Q,EAAAyQ,eAAA,CACA,MAAAuC,EAAAvB,EAAArT,GAAAkU,GACAW,EAAAxB,EAAArT,GAAAmU,GAEA,QAAA1P,EAAAyP,EAAkCzP,GAAA0P,EAAgB1P,GAAA,EAClD4O,EAAArT,GAAAyE,GAAA/F,YAAsCkD,EAAA+Q,0BAGtC,GAAApR,EAAAK,OAAA0J,KACA,GAAAqJ,GAAAtB,EAAAvP,OAAA,CACA,QAAAW,EAAA7C,EAAA0Q,mBAAqD7N,GAAA,EAAQA,GAAA,EAC7D4O,EAAArT,GAAAqT,EAAAvP,OAAAW,GAAA/F,YAA2DkD,EAAA+Q,0BAG3DU,EAAArT,GAAAqT,EAAAvP,OAAAlC,EAAA0Q,mBAAA,GAAA5T,YAAqFkD,EAAA+Q,+BAErFa,EAAAoB,EAAA,QACApB,EAAAqB,EAAA,aAGArB,EAAAoB,EAAA,QACApB,EAAAqB,EAAA,SAKA,GAAAjT,EAAAyQ,eAAA,CACA,MAAAyC,EAAApR,KAAAG,IAAAwP,EAAAvP,OAAAlC,EAAA0Q,mBAAA,GACAyC,GAAAlD,EAAAiD,EAAAjD,GAAA,EAAAuC,EAAAvC,EACAxO,EAAA8D,EAAA,eACAkM,EAAA3T,IAAA6B,EAAAkC,eAAAJ,EAAA,SAAmE0R,QASnE,GALA,aAAAnT,EAAAwQ,OACAzJ,EAAAjI,KAAe6Q,EAAiB3P,EAAAiR,eAAAhT,KAAA+B,EAAA2Q,sBAAAoB,EAAA,IAChChL,EAAAjI,KAAe6Q,EAAiB3P,EAAAkR,aAAAjT,KAAA+B,EAAA6Q,oBAAAmB,KAGhC,gBAAAhS,EAAAwQ,KAAA,CACA,IAAA4C,EAGAA,EADApT,EAAAuQ,oBACA5Q,EAAAkC,eAAA,wBAEAlC,EAAAkC,eAAA,wBAGA,MAAAwR,GAAAtB,EAAA,GAAAC,EACA,IAAAsB,EAAA,EACAC,EAAA,EAEA,eAAAH,EACAE,EAAAD,EAEAE,EAAAF,EAGAtM,EAAAjI,KAAe6Q,EAAiB3P,EAAAmR,uBAAA/T,uCAAsEkW,aAAkBC,MAAOlW,WAAAsC,EAAAK,OAAA8M,OAG/H,WAAA9M,EAAAwQ,MAAAxQ,EAAAsQ,cACAvJ,EAAA/I,KAAAgC,EAAAsQ,aAAA3Q,EAAAoS,EAAA,EAAAC,IACAnS,EAAA,mBAAAkH,EAAA,KAEAlH,EAAA,mBAAAkH,EAAA,IAGApH,EAAAK,OAAAuO,eAAA5O,EAAA6C,SACAuE,EAAApH,EAAA6O,SAAA,0BAAAxO,EAAAyO,WAIA,SAAA+E,IAEA,MAAAxT,EAAAL,EAAAK,OAAAwP,WACA,GAAAmC,IAAA,OACA,MAAAG,EAAAnS,EAAAM,SAAAN,EAAAK,OAAAC,QAAAuC,QAAA7C,EAAAM,QAAAiB,OAAAgB,OAAAvC,EAAAuB,OAAAgB,OACA6E,EAAApH,EAAA6P,WAAAzI,IACA,IAAA0M,EAAA,GAEA,eAAAzT,EAAAwQ,KAAA,CACA,IAAAkD,EAAA/T,EAAAK,OAAA0J,KAAA5H,KAAAmQ,MAAAH,EAAA,EAAAnS,EAAAuS,cAAAvS,EAAAK,OAAAU,gBAAAf,EAAAwS,SAAAjQ,OAEAvC,EAAAK,OAAA8L,UAAAnM,EAAAK,OAAA8L,SAAAtJ,UAAA7C,EAAAK,OAAA0J,MAAAgK,EAAA5B,IACA4B,EAAA5B,GAGA,QAAAjP,EAAA,EAAqBA,EAAA6Q,EAAqB7Q,GAAA,EAC1C7C,EAAAmQ,aACAsD,GAAAzT,EAAAmQ,aAAA9P,KAAAV,EAAAkD,EAAA7C,EAAA8Q,aAEA2C,OAAgCzT,EAAAkQ,wBAA+BlQ,EAAA8Q,kBAAyB9Q,EAAAkQ,iBAIxFnJ,EAAA/I,KAAAyV,GACA9T,EAAA6P,WAAAiC,QAAA1K,EAAAjI,KAA2C6Q,EAAiB3P,EAAA8Q,cAG5D,aAAA9Q,EAAAwQ,OAEAiD,EADAzT,EAAAqQ,eACArQ,EAAAqQ,eAAAhQ,KAAAV,EAAAK,EAAAiR,aAAAjR,EAAAkR,4BAEyClR,EAAAiR,wBAAoB,sBAAqCjR,EAAAkR,sBAGlGnK,EAAA/I,KAAAyV,IAGA,gBAAAzT,EAAAwQ,OAEAiD,EADAzT,EAAAoQ,kBACApQ,EAAAoQ,kBAAA/P,KAAAV,EAAAK,EAAAmR,sCAEyCnR,EAAAmR,gCAGzCpK,EAAA/I,KAAAyV,IAGA,WAAAzT,EAAAwQ,MACA3Q,EAAA,mBAAAF,EAAA6P,WAAAzI,IAAA,IAIA,SAAAgI,IACApP,EAAAK,OAAAwP,WAA+BlC,EAAyB3N,IAAA+D,eAAA8L,WAAA7P,EAAAK,OAAAwP,WAAA,CACxDxB,GAAA,sBAEA,MAAAhO,EAAAL,EAAAK,OAAAwP,WACA,IAAAxP,EAAAgO,GAAA,OACA,IAAAjH,EAAcpN,OAAAyG,EAAA,EAAAzG,CAACqG,EAAAgO,IACf,IAAAjH,EAAA7E,SAEAvC,EAAAK,OAAAiO,mBAAA,iBAAAjO,EAAAgO,IAAAjH,EAAA7E,OAAA,IACA6E,EAAApH,EAAAoH,IAAAjI,KAAAkB,EAAAgO,KAEA9L,OAAA,IACA6E,IAAA/H,OAAAgP,GACcrU,OAAAyG,EAAA,EAAAzG,CAACqU,GAAApP,QAAA,gBAAAe,EAAAqO,KAMf,YAAAhO,EAAAwQ,MAAAxQ,EAAAyP,WACA1I,EAAAjK,SAAAkD,EAAAqR,gBAGAtK,EAAAjK,SAAAkD,EAAAgR,cAAAhR,EAAAwQ,MACAzJ,EAAAjK,SAAA6C,EAAAkC,eAAA7B,EAAAsR,gBAAAtR,EAAAuR,eAEA,YAAAvR,EAAAwQ,MAAAxQ,EAAAyQ,iBACA1J,EAAAjK,YAAsBkD,EAAAgR,gBAAuBhR,EAAAwQ,gBAC7CkB,EAAA,EAEA1R,EAAA0Q,mBAAA,IACA1Q,EAAA0Q,mBAAA,IAIA,gBAAA1Q,EAAAwQ,MAAAxQ,EAAAuQ,qBACAxJ,EAAAjK,SAAAkD,EAAAoR,0BAGApR,EAAAyP,WACA1I,EAAAzJ,GAAA,QAAsBqS,EAAiB3P,EAAA8Q,aAAA,SAAAtW,GACvCA,EAAAuN,iBACA,IAAA5J,EAAoBxE,OAAAyG,EAAA,EAAAzG,CAACga,MAAAxV,QAAAwB,EAAAK,OAAAU,eACrBf,EAAAK,OAAA0J,OAAAvL,GAAAwB,EAAAuS,cACAvS,EAAAmF,QAAA3G,KAIAxE,OAAA+I,OAAA/C,EAAA6P,WAAA,CACAzI,MACAiH,GAAAjH,EAAA,KAGApH,EAAA6C,SACAuE,EAAAjK,SAAAkD,EAAAyO,YAIA,SAAAS,IACA,MAAAlP,EAAAL,EAAAK,OAAAwP,WACA,GAAAmC,IAAA,OACA,MAAA5K,EAAApH,EAAA6P,WAAAzI,IACAA,EAAAhK,YAAAiD,EAAAoP,aACArI,EAAAhK,YAAAiD,EAAAgR,cAAAhR,EAAAwQ,MACAzJ,EAAAhK,YAAA4C,EAAAkC,eAAA7B,EAAAsR,gBAAAtR,EAAAuR,eACA5R,EAAA6P,WAAAiC,SAAA9R,EAAA6P,WAAAiC,QAAA1U,aAAA4C,EAAA6P,WAAAiC,QAAA1U,YAAAiD,EAAA+Q,mBAEA/Q,EAAAyP,WACA1I,EAAAxJ,IAAA,QAAuBoS,EAAiB3P,EAAA8Q,cAIxCxT,EAAA,aACA,IAAAqC,EAAAK,OAAAwP,WAAAhN,QAEA4F,KAEA2G,IACAyE,IACAjT,OAGAjD,EAAA,yBACAqC,EAAAK,OAAA0J,KACAnJ,SACK,IAAAZ,EAAA0S,WACL9R,MAGAjD,EAAA,uBACAqC,EAAAK,OAAA0J,MACAnJ,MAGAjD,EAAA,0BACAqC,EAAAK,OAAA0J,OACA8J,IACAjT,OAGAjD,EAAA,4BACAqC,EAAAK,OAAA0J,OACA8J,IACAjT,OAGAjD,EAAA,eACA4R,MAEA5R,EAAA,sBACA,MAAAyJ,IACAA,GACKpH,EAAA6P,WAELzI,GACAA,EAAApH,EAAA6C,QAAA,0BAAA7C,EAAAK,OAAAwP,WAAAf,aAGAnR,EAAA,mBACAiD,MAEAjD,EAAA,SAAAgS,EAAA9U,KACA,MAAA+U,EAAA/U,EAAAyP,QACAlD,IACAA,GACKpH,EAAA6P,WAEL,GAAA7P,EAAAK,OAAAwP,WAAAxB,IAAArO,EAAAK,OAAAwP,WAAAL,aAAApI,KAAA7E,OAAA,IAAyGvI,OAAAyG,EAAA,EAAAzG,CAAC4V,GAAAvS,SAAA2C,EAAAK,OAAAwP,WAAAsB,aAAA,CAC1G,GAAAnR,EAAAyO,aAAAzO,EAAAyO,WAAAY,QAAAO,IAAA5P,EAAAyO,WAAAY,QAAArP,EAAAyO,WAAAa,QAAAM,IAAA5P,EAAAyO,WAAAa,QAAA,OACA,MAAAS,EAAA3I,EAAA/J,SAAA2C,EAAAK,OAAAwP,WAAAJ,aAGAvP,GADA,IAAA6P,EACA,iBAEA,kBAGA3I,EAAA9J,YAAA0C,EAAAK,OAAAwP,WAAAJ,gBAIA,MAYAhH,EAAA,KACAzI,EAAAoH,IAAAjK,SAAA6C,EAAAK,OAAAwP,WAAAgC,yBAEA7R,EAAA6P,WAAAzI,KACApH,EAAA6P,WAAAzI,IAAAjK,SAAA6C,EAAAK,OAAAwP,WAAAgC,yBAGAtC,KAGAvV,OAAA+I,OAAA/C,EAAA6P,WAAA,CACArH,OAvBA,KACAxI,EAAAoH,IAAAhK,YAAA4C,EAAAK,OAAAwP,WAAAgC,yBAEA7R,EAAA6P,WAAAzI,KACApH,EAAA6P,WAAAzI,IAAAhK,YAAA4C,EAAAK,OAAAwP,WAAAgC,yBAGAzC,IACAyE,IACAjT,KAeA6H,UACAoL,SACAjT,SACAwO,OACAG,YCnbe,SAAA0E,EAAAnU,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,EAAAuC,KACAA,GACGJ,EACH,MAAA7F,EAAmBD,OAAAyL,EAAA,EAAAzL,GACnB,IAGAka,EACAC,EACAC,EACAC,EANAC,GAAA,EACA3L,EAAA,KACA4L,EAAA,KA0BA,SAAA3H,IACA,IAAA5M,EAAAK,OAAAmU,UAAAnG,KAAArO,EAAAwU,UAAAnG,GAAA,OACA,MAAAmG,UACAA,EACAvS,aAAA2D,EAAA6O,SACAA,GACKzU,GACL0U,QACAA,EAAAtN,IACAA,GACKoN,EACLnU,EAAAL,EAAAK,OAAAmU,UACA,IAAAG,EAAAR,EACAS,GAAAR,EAAAD,GAAAM,EAEA7O,GACAgP,MAEA,GACAD,EAAAR,EAAAS,EACAA,EAAA,IACOA,EAAAT,EAAAC,IACPO,EAAAP,EAAAQ,GAEKA,EAAA,GACLD,EAAAR,EAAAS,EACAA,EAAA,GACKA,EAAAT,EAAAC,IACLO,EAAAP,EAAAQ,GAGA5U,EAAAkC,gBACAwS,EAAAjX,yBAAuCmX,cACvCF,EAAA,GAAAta,MAAA0B,SAAkC6Y,QAElCD,EAAAjX,8BAA4CmX,WAC5CF,EAAA,GAAAta,MAAA4B,UAAmC2Y,OAGnCtU,EAAAwU,OACA3Q,aAAAyE,GACAvB,EAAA,GAAAhN,MAAA0a,QAAA,EACAnM,EAAAxE,WAAA,KACAiD,EAAA,GAAAhN,MAAA0a,QAAA,EACA1N,EAAA1J,WAAA,MACO,MASP,SAAAqX,IACA,IAAA/U,EAAAK,OAAAmU,UAAAnG,KAAArO,EAAAwU,UAAAnG,GAAA,OACA,MAAAmG,UACAA,GACKxU,GACL0U,QACAA,EAAAtN,IACAA,GACKoN,EACLE,EAAA,GAAAta,MAAA0B,MAAA,GACA4Y,EAAA,GAAAta,MAAA4B,OAAA,GACAoY,EAAApU,EAAAkC,eAAAkF,EAAA,GAAA4N,YAAA5N,EAAA,GAAA6N,aACAZ,EAAArU,EAAAkV,MAAAlV,EAAAsE,YAAAtE,EAAAK,OAAA8U,oBAAAnV,EAAAK,OAAAW,eAAAhB,EAAAwS,SAAA,OAGA2B,EADA,SAAAnU,EAAAK,OAAAmU,UAAAL,SACAC,EAAAC,EAEAnP,SAAAlF,EAAAK,OAAAmU,UAAAL,SAAA,IAGAnU,EAAAkC,eACAwS,EAAA,GAAAta,MAAA0B,SAAkCqY,MAElCO,EAAA,GAAAta,MAAA4B,UAAmCmY,MAInC/M,EAAA,GAAAhN,MAAAgb,QADAf,GAAA,EACA,OAEA,GAGArU,EAAAK,OAAAmU,UAAAK,OACAzN,EAAA,GAAAhN,MAAA0a,QAAA,GAGA9U,EAAAK,OAAAuO,eAAA5O,EAAA6C,SACA2R,EAAApN,IAAApH,EAAA6O,SAAA,0BAAA7O,EAAAK,OAAAmU,UAAA1F,WAIA,SAAAuG,EAAAxa,GACA,OAAAmF,EAAAkC,eACA,eAAArH,EAAAgW,MAAA,cAAAhW,EAAAgW,KAAAhW,EAAAya,cAAA,GAAAC,QAAA1a,EAAA0a,QAGA,eAAA1a,EAAAgW,MAAA,cAAAhW,EAAAgW,KAAAhW,EAAAya,cAAA,GAAAE,QAAA3a,EAAA2a,QAGA,SAAAC,EAAA5a,GACA,MAAA2Z,UACAA,EACAvS,aAAA2D,GACK5F,GACLoH,IACAA,GACKoN,EACL,IAAAkB,EACAA,GAAAL,EAAAxa,GAAAuM,EAAAlJ,SAAA8B,EAAAkC,eAAA,sBAAAgS,IAAAC,EAAA,KAAAC,EAAAD,GACAuB,EAAAvT,KAAAE,IAAAF,KAAAG,IAAAoT,EAAA,MAEA9P,IACA8P,EAAA,EAAAA,GAGA,MAAAlJ,EAAAxM,EAAA+L,gBAAA/L,EAAAgM,eAAAhM,EAAA+L,gBAAA2J,EACA1V,EAAA0C,eAAA8J,GACAxM,EAAA4M,aAAAJ,GACAxM,EAAA4B,oBACA5B,EAAA2C,sBAGA,SAAAgT,EAAA9a,GACA,MAAAwF,EAAAL,EAAAK,OAAAmU,WACAA,UACAA,EAAAjR,WACAA,GACKvD,GACLoH,IACAA,EAAAsN,QACAA,GACKF,EACLF,GAAA,EACAJ,EAAArZ,EAAAyP,SAAAoK,EAAA,IAAA7Z,EAAAyP,SAAAoK,EAAAW,EAAAxa,KAAAyP,OAAAsL,wBAAA5V,EAAAkC,eAAA,mBACArH,EAAAuN,iBACAvN,EAAAqR,kBACA3I,EAAA7F,WAAA,KACAgX,EAAAhX,WAAA,KACA+X,EAAA5a,GACAqJ,aAAAqQ,GACAnN,EAAA1J,WAAA,GAEA2C,EAAAwU,MACAzN,EAAAjJ,IAAA,aAGA6B,EAAAK,OAAAsB,SACA3B,EAAAuD,WAAApF,IAAA,2BAGA+B,EAAA,qBAAArF,GAGA,SAAAgb,EAAAhb,GACA,MAAA2Z,UACAA,EAAAjR,WACAA,GACKvD,GACLoH,IACAA,EAAAsN,QACAA,GACKF,EACLF,IACAzZ,EAAAuN,eAAAvN,EAAAuN,iBAA6CvN,EAAAwN,aAAA,EAC7CoN,EAAA5a,GACA0I,EAAA7F,WAAA,GACA0J,EAAA1J,WAAA,GACAgX,EAAAhX,WAAA,GACAwC,EAAA,oBAAArF,IAGA,SAAAib,EAAAjb,GACA,MAAAwF,EAAAL,EAAAK,OAAAmU,WACAA,UACAA,EAAAjR,WACAA,GACKvD,GACLoH,IACAA,GACKoN,EACLF,IACAA,GAAA,EAEAtU,EAAAK,OAAAsB,UACA3B,EAAAuD,WAAApF,IAAA,uBACAoF,EAAA7F,WAAA,KAGA2C,EAAAwU,OACA3Q,aAAAqQ,GACAA,EAAoBva,OAAAoK,EAAA,EAAApK,CAAQ,KAC5BoN,EAAAjJ,IAAA,aACAiJ,EAAA1J,WAAA,MACO,MAGPwC,EAAA,mBAAArF,GAEAwF,EAAA0V,eACA/V,EAAAkN,kBAIA,SAAAM,EAAAC,GACA,MAAA+G,UACAA,EAAAwB,iBACAA,EAAAC,mBACAA,EAAA5V,OACAA,EAAAvG,QACAA,GACKkG,EACLoH,EAAAoN,EAAApN,IACA,IAAAA,EAAA,OACA,MAAAkD,EAAAlD,EAAA,GACA8O,KAAApc,EAAAS,kBAAA8F,EAAA8V,mBAAA,CACAC,SAAA,EACAC,SAAA,GAEA9b,KAAAT,EAAAS,kBAAA8F,EAAA8V,mBAAA,CACAC,SAAA,EACAC,SAAA,GAEA,IAAA/L,EAAA,OACA,MAAAgM,EAAA,OAAA7I,EAAA,yCAEA3T,EAAAO,OAKAiQ,EAAAgM,GAAAN,EAAAO,MAAAZ,EAAAO,GACA5L,EAAAgM,GAAAN,EAAAQ,KAAAX,EAAAK,GACA5L,EAAAgM,GAAAN,EAAAS,IAAAX,EAAAvb,KANA+P,EAAAgM,GAAAL,EAAAM,MAAAZ,EAAAO,GACAjc,EAAAqc,GAAAL,EAAAO,KAAAX,EAAAK,GACAjc,EAAAqc,GAAAL,EAAAQ,IAAAX,EAAAvb,IAkBA,SAAA6U,IACA,MAAAoF,UACAA,EACApN,IAAAsP,GACK1W,EACLA,EAAAK,OAAAmU,UAA8B7G,EAAyB3N,IAAA+D,eAAAyQ,UAAAxU,EAAAK,OAAAmU,UAAA,CACvDnG,GAAA,qBAEA,MAAAhO,EAAAL,EAAAK,OAAAmU,UACA,IAAAnU,EAAAgO,GAAA,OACA,IAAAjH,EAAcpN,OAAAyG,EAAA,EAAAzG,CAACqG,EAAAgO,IAEfrO,EAAAK,OAAAiO,mBAAA,iBAAAjO,EAAAgO,IAAAjH,EAAA7E,OAAA,OAAAmU,EAAAvX,KAAAkB,EAAAgO,IAAA9L,SACA6E,EAAAsP,EAAAvX,KAAAkB,EAAAgO,KAGAjH,EAAAjK,SAAA6C,EAAAkC,eAAA7B,EAAAsR,gBAAAtR,EAAAuR,eACA,IAAA8C,EAAAtN,EAAAjI,SAA+Ba,EAAAK,OAAAmU,UAAAmC,aAE/B,IAAAjC,EAAAnS,SACAmS,EAAgB1a,OAAAyG,EAAA,EAAAzG,gBAAiBgG,EAAAK,OAAAmU,UAAAmC,qBACjCvP,EAAA1I,OAAAgW,IAGA1a,OAAA+I,OAAAyR,EAAA,CACApN,MACAiH,GAAAjH,EAAA,GACAsN,UACAkC,OAAAlC,EAAA,KAGArU,EAAAwW,WAxCA7W,EAAAK,OAAAmU,UAAAnG,IAAArO,EAAAwU,UAAAnG,IACAb,EAAA,MA2CApG,GACAA,EAAApH,EAAA6C,QAAA,0BAAA7C,EAAAK,OAAAmU,UAAA1F,WAIA,SAAAS,IACA,MAAAlP,EAAAL,EAAAK,OAAAmU,UACApN,EAAApH,EAAAwU,UAAApN,IAEAA,GACAA,EAAAhK,YAAA4C,EAAAkC,eAAA7B,EAAAsR,gBAAAtR,EAAAuR,eAjDA5R,EAAAK,OAAAmU,UAAAnG,IAAArO,EAAAwU,UAAAnG,IACAb,EAAA,OA5QAvN,EAAA,CACAuU,UAAA,CACAnG,GAAA,KACA8F,SAAA,OACAU,MAAA,EACAgC,WAAA,EACAd,eAAA,EACAjH,UAAA,wBACA6H,UAAA,wBACAG,uBAAA,4BACAnF,gBAAA,8BACAC,cAAA,+BAGA5R,EAAAwU,UAAA,CACAnG,GAAA,KACAuI,OAAA,KACAxP,IAAA,KACAsN,QAAA,MAgTA/W,EAAA,aACA,IAAAqC,EAAAK,OAAAmU,UAAA3R,QAEA4F,KAEA2G,IACA2F,IACAnI,OAGAjP,EAAA,gDACAoX,MAEApX,EAAA,oBACAiP,MAEAjP,EAAA,iBAAAgS,EAAAoH,MA5QA,SAAAA,GACA/W,EAAAK,OAAAmU,UAAAnG,IAAArO,EAAAwU,UAAAnG,IACArO,EAAAwU,UAAAE,QAAAhX,WAAAqZ,GA2QApK,CAAAoK,KAEApZ,EAAA,sBACA,MAAAyJ,IACAA,GACKpH,EAAAwU,UAELpN,GACAA,EAAApH,EAAA6C,QAAA,0BAAA7C,EAAAK,OAAAmU,UAAA1F,aAGAnR,EAAA,eACA4R,MAGA,MAYA9G,EAAA,KACAzI,EAAAoH,IAAAjK,SAAA6C,EAAAK,OAAAmU,UAAAsC,wBAEA9W,EAAAwU,UAAApN,KACApH,EAAAwU,UAAApN,IAAAjK,SAAA6C,EAAAK,OAAAmU,UAAAsC,wBAGAvH,KAGAvV,OAAA+I,OAAA/C,EAAAwU,UAAA,CACAhM,OAvBA,KACAxI,EAAAoH,IAAAhK,YAAA4C,EAAAK,OAAAmU,UAAAsC,wBAEA9W,EAAAwU,UAAApN,KACApH,EAAAwU,UAAApN,IAAAhK,YAAA4C,EAAAK,OAAAmU,UAAAsC,wBAGA1H,IACA2F,IACAnI,KAeAnE,UACAsM,aACAnI,eACAwC,OACAG,YChZe,SAAAyH,EAAAlX,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,GACGmC,EACHG,EAAA,CACAgX,SAAA,CACApU,SAAA,KAIA,MAAAqU,EAAA,CAAA7I,EAAAoG,KACA,MAAA7O,IACAA,GACK5F,EACLoH,EAAgBpN,OAAAyG,EAAA,EAAAzG,CAACqU,GACjB7D,EAAA5E,GAAA,IACAuR,EAAA/P,EAAA7J,KAAA,6BACA,IAAA6Z,EAAAhQ,EAAA7J,KAAA,0BACA8Z,EAAAjQ,EAAA7J,KAAA,0BACA,MAAAmW,EAAAtM,EAAA7J,KAAA,8BACAuX,EAAA1N,EAAA7J,KAAA,gCAyBA,GAvBA6Z,GAAAC,GACAD,KAAA,IACAC,KAAA,KACKrX,EAAAkC,gBACLkV,EAAAD,EACAE,EAAA,MAEAA,EAAAF,EACAC,EAAA,KAIAA,EADAA,EAAA7a,QAAA,WACa2I,SAAAkS,EAAA,IAAA3C,EAAAjK,QAEA4M,EAAA3C,EAAAjK,MAIb6M,EADAA,EAAA9a,QAAA,WACa2I,SAAAmS,EAAA,IAAA5C,QAEA4C,EAAA5C,MAGb,MAAAK,EAAA,CACA,MAAAwC,EAAAxC,KAAA,MAAA3S,KAAAyJ,IAAA6I,IACArN,EAAA,GAAAhN,MAAA0a,QAAAwC,EAGA,SAAA5D,EACAtM,EAAA3J,yBAAmC2Z,MAAMC,eACpC,CACL,MAAAE,EAAA7D,KAAA,MAAAvR,KAAAyJ,IAAA6I,IACArN,EAAA3J,yBAAmC2Z,MAAMC,iBAAiBE,QAI1D3K,EAAA,KACA,MAAAxF,IACAA,EAAA7F,OACAA,EAAAkT,SACAA,EAAAjC,SACAA,GACKxS,EACLoH,EAAAhI,SAAA,4IAAAhB,KAAAiQ,IACA6I,EAAA7I,EAAAoG,KAEAlT,EAAAnD,KAAA,CAAAoZ,EAAAC,KACA,IAAAC,EAAAF,EAAA/C,SAEAzU,EAAAK,OAAAU,eAAA,YAAAf,EAAAK,OAAAS,gBACA4W,GAAAvV,KAAAmQ,KAAAmF,EAAA,GAAAhD,GAAAjC,EAAAjQ,OAAA,IAGAmV,EAAAvV,KAAAG,IAAAH,KAAAE,IAAAqV,GAAA,MACM1d,OAAAyG,EAAA,EAAAzG,CAACwd,GAAArY,KAAA,4IAAAf,KAAAiQ,IACP6I,EAAA7I,EAAAqJ,QAqBA/Z,EAAA,kBACAqC,EAAAK,OAAA4W,SAAApU,UACA7C,EAAAK,OAAAyD,qBAAA,EACA9D,EAAA+D,eAAAD,qBAAA,KAEAnG,EAAA,YACAqC,EAAAK,OAAA4W,SAAApU,SACA+J,MAEAjP,EAAA,oBACAqC,EAAAK,OAAA4W,SAAApU,SACA+J,MAEAjP,EAAA,iBAAAga,EAAAZ,KACA/W,EAAAK,OAAA4W,SAAApU,SA9BA,SAAAkU,QACA,IAAAA,IACAA,EAAA/W,EAAAK,OAAA8M,OAGA,MAAA/F,IACAA,GACKpH,EACLoH,EAAAjI,KAAA,4IAAAf,KAAAwZ,IACA,MAAAC,EAA0B7d,OAAAyG,EAAA,EAAAzG,CAAC4d,GAC3B,IAAAE,EAAA5S,SAAA2S,EAAAta,KAAA,sCAAAwZ,EACA,IAAAA,IAAAe,EAAA,GACAD,EAAAna,WAAAoa,KAmBAnL,CAAAoK,KCjHe,SAAAgB,EAAAjY,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,EAAAuC,KACAA,GACGJ,EACH,MAAA/F,EAAiBC,OAAAyL,EAAA,EAAAzL,GACjBiG,EAAA,CACA+X,KAAA,CACAnV,SAAA,EACAoV,SAAA,EACAC,SAAA,EACAC,QAAA,EACAC,eAAA,wBACAC,iBAAA,yBAGArY,EAAAgY,KAAA,CACAnV,SAAA,GAEA,IAEAyV,EACAC,EACAC,EAJAjB,EAAA,EACAkB,GAAA,EAIA,MAAAC,EAAA,CACAlY,cAAAmD,EACAgV,gBAAAhV,EACAiV,iBAAAjV,EACAkV,cAAAlV,EACAmV,kBAAAnV,EACAsU,SAAA,GAEAc,EAAA,CACAzE,eAAA3Q,EACAqV,aAAArV,EACAsV,cAAAtV,EACAuV,cAAAvV,EACAwV,UAAAxV,EACAyV,UAAAzV,EACA0V,UAAA1V,EACA2V,UAAA3V,EACA7H,WAAA6H,EACA3H,YAAA2H,EACA4V,YAAA5V,EACA6V,YAAA7V,EACA8V,aAAA,GACAC,eAAA,IAEAC,EAAA,CACAvC,OAAAzT,EACA0T,OAAA1T,EACAiW,mBAAAjW,EACAkW,mBAAAlW,EACAmW,cAAAnW,GAEA,IAAA+P,EAAA,EAkBA,SAAAqG,EAAAlf,GACA,GAAAA,EAAAya,cAAA/S,OAAA,WACA,MAAAyX,EAAAnf,EAAAya,cAAA,GAAA2E,MACAC,EAAArf,EAAAya,cAAA,GAAA6E,MACAC,EAAAvf,EAAAya,cAAA,GAAA2E,MACAI,EAAAxf,EAAAya,cAAA,GAAA6E,MAEA,OADAhY,KAAAmY,MAAAF,EAAAJ,IAAA,GAAAK,EAAAH,IAAA,GAKA,SAAAK,EAAA1f,GACA,MAAAf,EAAAkG,EAAAlG,QACAuG,EAAAL,EAAAK,OAAA2X,KAIA,GAHAO,GAAA,EACAC,GAAA,GAEA1e,EAAAgB,SAAA,CACA,kBAAAD,EAAAgW,MAAA,eAAAhW,EAAAgW,MAAAhW,EAAAya,cAAA/S,OAAA,EACA,OAGAgW,GAAA,EACAG,EAAA8B,WAAAT,EAAAlf,GAGA6d,EAAAlY,UAAAkY,EAAAlY,SAAA+B,SACAmW,EAAAlY,SAAyBxG,OAAAyG,EAAA,EAAAzG,CAACa,EAAAyP,QAAApL,YAAuBc,EAAAK,OAAAM,cACjD,IAAA+X,EAAAlY,SAAA+B,SAAAmW,EAAAlY,SAAAR,EAAAuB,OAAA9C,GAAAuB,EAAA6B,cACA6W,EAAAG,SAAAH,EAAAlY,SAAArB,SAAmDkB,EAAA+X,kBAAsB3Z,GAAA,GAAAU,KAAA,kDAAAV,GAAA,GACzEia,EAAAI,aAAAJ,EAAAG,SAAA7Z,WAAyDqB,EAAA+X,kBACzDM,EAAAT,SAAAS,EAAAI,aAAAvb,KAAA,qBAAA8C,EAAA4X,SAEA,IAAAS,EAAAI,aAAAvW,SAMAmW,EAAAG,UACAH,EAAAG,SAAAnb,WAAA,GAGA+a,GAAA,GATAC,EAAAG,cAAAlV,EAYA,SAAA8W,EAAA5f,GACA,MAAAf,EAAAkG,EAAAlG,QACAuG,EAAAL,EAAAK,OAAA2X,KACAA,EAAAhY,EAAAgY,KAEA,IAAAle,EAAAgB,SAAA,CACA,iBAAAD,EAAAgW,MAAA,cAAAhW,EAAAgW,MAAAhW,EAAAya,cAAA/S,OAAA,EACA,OAGAiW,GAAA,EACAE,EAAAgC,UAAAX,EAAAlf,GAGA6d,EAAAG,UAAA,IAAAH,EAAAG,SAAAtW,QAKAzI,EAAAgB,SACAkd,EAAAtE,MAAA7Y,EAAA6Y,MAAA6D,EAEAS,EAAAtE,MAAAgF,EAAAgC,UAAAhC,EAAA8B,WAAAjD,EAGAS,EAAAtE,MAAAgF,EAAAT,WACAD,EAAAtE,MAAAgF,EAAAT,SAAA,GAAAD,EAAAtE,MAAAgF,EAAAT,SAAA,QAGAD,EAAAtE,MAAArT,EAAA6X,WACAF,EAAAtE,MAAArT,EAAA6X,SAAA,GAAA7X,EAAA6X,SAAAF,EAAAtE,MAAA,QAGAgF,EAAAG,SAAApb,sCAA2Dua,EAAAtE,WAlB3D,kBAAA7Y,EAAAgW,MAAA0J,EAAA1f,GAqBA,SAAA8f,EAAA9f,GACA,MAAAY,EAAAuE,EAAAvE,OACA3B,EAAAkG,EAAAlG,QACAuG,EAAAL,EAAAK,OAAA2X,KACAA,EAAAhY,EAAAgY,KAEA,IAAAle,EAAAgB,SAAA,CACA,IAAAyd,IAAAC,EACA,OAGA,gBAAA3d,EAAAgW,MAAA,aAAAhW,EAAAgW,MAAAhW,EAAA+f,eAAArY,OAAA,IAAA9G,EAAAE,QACA,OAGA4c,GAAA,EACAC,GAAA,EAGAE,EAAAG,UAAA,IAAAH,EAAAG,SAAAtW,SACAyV,EAAAtE,MAAAvR,KAAAE,IAAAF,KAAAG,IAAA0V,EAAAtE,MAAAgF,EAAAT,UAAA5X,EAAA6X,UACAQ,EAAAG,SAAAnb,WAAAsC,EAAAK,OAAA8M,OAAA1P,sCAA2Fua,EAAAtE,UAC3F6D,EAAAS,EAAAtE,MACA+E,GAAA,EACA,IAAAT,EAAAtE,QAAAgF,EAAAlY,cAAAmD,IAaA,SAAAkX,EAAAhgB,GACA,MAAAmd,EAAAhY,EAAAgY,KACA,IAAAU,EAAAG,UAAA,IAAAH,EAAAG,SAAAtW,OAAA,OAEA,GADAvC,EAAA8a,YAAA,GACA/B,EAAAzE,YAAAoE,EAAAlY,SAAA,OAEAuY,EAAAC,UACAD,EAAAjd,MAAA4c,EAAAG,SAAA,GAAA7D,YACA+D,EAAA/c,OAAA0c,EAAAG,SAAA,GAAA5D,aACA8D,EAAAQ,OAAqBvf,OAAAoK,EAAA,EAAApK,CAAY0e,EAAAI,aAAA,WACjCC,EAAAS,OAAqBxf,OAAAoK,EAAA,EAAApK,CAAY0e,EAAAI,aAAA,WACjCJ,EAAAC,WAAAD,EAAAlY,SAAA,GAAAwU,YACA0D,EAAAE,YAAAF,EAAAlY,SAAA,GAAAyU,aACAyD,EAAAI,aAAApb,WAAA,IAIA,MAAAqd,EAAAhC,EAAAjd,MAAAkc,EAAAtE,MACAsH,EAAAjC,EAAA/c,OAAAgc,EAAAtE,MACA,KAAAqH,EAAArC,EAAAC,YAAAqC,EAAAtC,EAAAE,aAAA,CAQA,GAPAG,EAAAI,KAAAhX,KAAAG,IAAAoW,EAAAC,WAAA,EAAAoC,EAAA,KACAhC,EAAAM,MAAAN,EAAAI,KACAJ,EAAAK,KAAAjX,KAAAG,IAAAoW,EAAAE,YAAA,EAAAoC,EAAA,KACAjC,EAAAO,MAAAP,EAAAK,KACAL,EAAAW,eAAAtC,EAAA,cAAAvc,EAAAgW,KAAAhW,EAAAya,cAAA,GAAA2E,MAAApf,EAAAof,MACAlB,EAAAW,eAAArC,EAAA,cAAAxc,EAAAgW,KAAAhW,EAAAya,cAAA,GAAA6E,MAAAtf,EAAAsf,OAEApB,EAAAC,UAAAP,EAAA,CACA,GAAAzY,EAAAkC,iBAAAC,KAAAC,MAAA2W,EAAAI,QAAAhX,KAAAC,MAAA2W,EAAAQ,SAAAR,EAAAW,eAAAtC,EAAA2B,EAAAU,aAAArC,GAAAjV,KAAAC,MAAA2W,EAAAM,QAAAlX,KAAAC,MAAA2W,EAAAQ,SAAAR,EAAAW,eAAAtC,EAAA2B,EAAAU,aAAArC,GAEA,YADA2B,EAAAzE,WAAA,GAIA,IAAAtU,EAAAkC,iBAAAC,KAAAC,MAAA2W,EAAAK,QAAAjX,KAAAC,MAAA2W,EAAAS,SAAAT,EAAAW,eAAArC,EAAA0B,EAAAU,aAAApC,GAAAlV,KAAAC,MAAA2W,EAAAO,QAAAnX,KAAAC,MAAA2W,EAAAS,SAAAT,EAAAW,eAAArC,EAAA0B,EAAAU,aAAApC,GAEA,YADA0B,EAAAzE,WAAA,GAKAzZ,EAAAogB,YACApgB,EAAAuN,iBAGAvN,EAAAqR,kBACA6M,EAAAC,SAAA,EACAD,EAAAE,SAAAF,EAAAW,eAAAtC,EAAA2B,EAAAU,aAAArC,EAAA2B,EAAAQ,OACAR,EAAAG,SAAAH,EAAAW,eAAArC,EAAA0B,EAAAU,aAAApC,EAAA0B,EAAAS,OAEAT,EAAAE,SAAAF,EAAAI,OACAJ,EAAAE,SAAAF,EAAAI,KAAA,GAAAJ,EAAAI,KAAAJ,EAAAE,SAAA,QAGAF,EAAAE,SAAAF,EAAAM,OACAN,EAAAE,SAAAF,EAAAM,KAAA,GAAAN,EAAAE,SAAAF,EAAAM,KAAA,QAGAN,EAAAG,SAAAH,EAAAK,OACAL,EAAAG,SAAAH,EAAAK,KAAA,GAAAL,EAAAK,KAAAL,EAAAG,SAAA,QAGAH,EAAAG,SAAAH,EAAAO,OACAP,EAAAG,SAAAH,EAAAO,KAAA,GAAAP,EAAAG,SAAAH,EAAAO,KAAA,QAIAK,EAAAC,gBAAAD,EAAAC,cAAAb,EAAAW,eAAAtC,GACAuC,EAAAE,gBAAAF,EAAAE,cAAAd,EAAAW,eAAArC,GACAsC,EAAAG,WAAAH,EAAAG,SAAA3P,KAAA+Q,OACAvB,EAAAvC,GAAA2B,EAAAW,eAAAtC,EAAAuC,EAAAC,gBAAAzP,KAAA+Q,MAAAvB,EAAAG,UAAA,EACAH,EAAAtC,GAAA0B,EAAAW,eAAArC,EAAAsC,EAAAE,gBAAA1P,KAAA+Q,MAAAvB,EAAAG,UAAA,EACA3X,KAAAyJ,IAAAmN,EAAAW,eAAAtC,EAAAuC,EAAAC,eAAA,IAAAD,EAAAvC,EAAA,GACAjV,KAAAyJ,IAAAmN,EAAAW,eAAArC,EAAAsC,EAAAE,eAAA,IAAAF,EAAAtC,EAAA,GACAsC,EAAAC,cAAAb,EAAAW,eAAAtC,EACAuC,EAAAE,cAAAd,EAAAW,eAAArC,EACAsC,EAAAG,SAAA3P,KAAA+Q,MACAxC,EAAAI,aAAArb,yBAAkDsb,EAAAE,eAAqBF,EAAAG,kBAuCvE,SAAAiC,IACA,MAAAnD,EAAAhY,EAAAgY,KAEAU,EAAAlY,UAAAR,EAAA8S,gBAAA9S,EAAA6B,cACA6W,EAAAG,UACAH,EAAAG,SAAApb,UAAA,+BAGAib,EAAAI,cACAJ,EAAAI,aAAArb,UAAA,sBAGAua,EAAAtE,MAAA,EACA6D,EAAA,EACAmB,EAAAlY,cAAAmD,EACA+U,EAAAG,cAAAlV,EACA+U,EAAAI,kBAAAnV,GAIA,SAAAyX,EAAAvgB,GACA,MAAAmd,EAAAhY,EAAAgY,KACA3X,EAAAL,EAAAK,OAAA2X,KAmBA,GAjBAU,EAAAlY,WACA3F,KAAAyP,SACAoO,EAAAlY,SAA2BxG,OAAAyG,EAAA,EAAAzG,CAACa,EAAAyP,QAAApL,YAAuBc,EAAAK,OAAAM,eAGnD+X,EAAAlY,WACAR,EAAAK,OAAAC,SAAAN,EAAAK,OAAAC,QAAAuC,SAAA7C,EAAAM,QACAoY,EAAAlY,SAAAR,EAAAuD,WAAAnE,aAA4DY,EAAAK,OAAAgH,oBAE5DqR,EAAAlY,SAAAR,EAAAuB,OAAA9C,GAAAuB,EAAA6B,cAIA6W,EAAAG,SAAAH,EAAAlY,SAAArB,SAAmDkB,EAAA+X,kBAAsB3Z,GAAA,GAAAU,KAAA,kDAAAV,GAAA,GACzEia,EAAAI,aAAAJ,EAAAG,SAAA7Z,WAAyDqB,EAAA+X,oBAGzDM,EAAAG,UAAA,IAAAH,EAAAG,SAAAtW,SAAAmW,EAAAI,cAAA,IAAAJ,EAAAI,aAAAvW,OAAA,OAQA,IAAA8Y,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAf,EACAC,EACAe,EACAC,EACAC,EACAC,EACAvD,EACAC,EAvBA5Y,EAAAK,OAAAsB,UACA3B,EAAAqE,UAAAjK,MAAA+hB,SAAA,SACAnc,EAAAqE,UAAAjK,MAAAgiB,YAAA,QAGA1D,EAAAlY,SAAArD,YAAiCkD,EAAAgY,yBAoBjC,IAAAU,EAAAU,aAAArC,GAAAvc,GACAwgB,EAAA,aAAAxgB,EAAAgW,KAAAhW,EAAA+f,eAAA,GAAAX,MAAApf,EAAAof,MACAqB,EAAA,aAAAzgB,EAAAgW,KAAAhW,EAAA+f,eAAA,GAAAT,MAAAtf,EAAAsf,QAEAkB,EAAAtC,EAAAU,aAAArC,EACAkE,EAAAvC,EAAAU,aAAApC,GAGAW,EAAAtE,MAAAgF,EAAAI,aAAAvb,KAAA,qBAAA8C,EAAA4X,SACAV,EAAAmB,EAAAI,aAAAvb,KAAA,qBAAA8C,EAAA4X,SAEApd,GACA8d,EAAAD,EAAAlY,SAAA,GAAAwU,YACA4D,EAAAF,EAAAlY,SAAA,GAAAyU,aAGAwG,GAFAF,EAAA7C,EAAAlY,SAAAtC,SAAA6J,KAAAhO,EAAAsiB,SAEA1D,EAAA,EAAA0C,EACAK,GAFAF,EAAA9C,EAAAlY,SAAAtC,SAAAgK,IAAAnO,EAAAuiB,SAEA1D,EAAA,EAAA0C,EACAO,EAAAnD,EAAAG,SAAA,GAAA7D,YACA8G,EAAApD,EAAAG,SAAA,GAAA5D,aACA8F,EAAAc,EAAA7D,EAAAtE,MACAsH,EAAAc,EAAA9D,EAAAtE,MAGAuI,IAFAF,EAAA5Z,KAAAG,IAAAqW,EAAA,EAAAoC,EAAA,MAGAmB,IAFAF,EAAA7Z,KAAAG,IAAAsW,EAAA,EAAAoC,EAAA,OAGAW,EAAAF,EAAAzD,EAAAtE,OAGAqI,IACAJ,EAAAI,GAGAJ,EAAAM,IACAN,EAAAM,IAPAL,EAAAF,EAAA1D,EAAAtE,OAUAsI,IACAJ,EAAAI,GAGAJ,EAAAM,IACAN,EAAAM,KAGAP,EAAA,EACAC,EAAA,GAGAlD,EAAAI,aAAApb,WAAA,KAAAD,yBAAkEke,QAAiBC,UACnFlD,EAAAG,SAAAnb,WAAA,KAAAD,sCAA2Eua,EAAAtE,UAG3E,SAAA6I,IACA,MAAAvE,EAAAhY,EAAAgY,KACA3X,EAAAL,EAAAK,OAAA2X,KAEAU,EAAAlY,WACAR,EAAAK,OAAAC,SAAAN,EAAAK,OAAAC,QAAAuC,SAAA7C,EAAAM,QACAoY,EAAAlY,SAAAR,EAAAuD,WAAAnE,aAA0DY,EAAAK,OAAAgH,oBAE1DqR,EAAAlY,SAAAR,EAAAuB,OAAA9C,GAAAuB,EAAA6B,aAGA6W,EAAAG,SAAAH,EAAAlY,SAAArB,SAAmDkB,EAAA+X,kBAAsB3Z,GAAA,GAAAU,KAAA,kDAAAV,GAAA,GACzEia,EAAAI,aAAAJ,EAAAG,SAAA7Z,WAAyDqB,EAAA+X,mBAGzDM,EAAAG,UAAA,IAAAH,EAAAG,SAAAtW,QAAAmW,EAAAI,cAAA,IAAAJ,EAAAI,aAAAvW,SAEAvC,EAAAK,OAAAsB,UACA3B,EAAAqE,UAAAjK,MAAA+hB,SAAA,GACAnc,EAAAqE,UAAAjK,MAAAgiB,YAAA,IAGApE,EAAAtE,MAAA,EACA6D,EAAA,EACAmB,EAAAI,aAAApb,WAAA,KAAAD,UAAA,sBACAib,EAAAG,SAAAnb,WAAA,KAAAD,UAAA,+BACAib,EAAAlY,SAAApD,eAAoCiD,EAAAgY,oBACpCK,EAAAlY,cAAAmD,GAIA,SAAA6Y,EAAA3hB,GACA,MAAAmd,EAAAhY,EAAAgY,KAEAA,EAAAtE,OAAA,IAAAsE,EAAAtE,MAEA6I,IAGAnB,EAAAvgB,GAIA,SAAA4hB,IACA,MAAA3iB,EAAAkG,EAAAlG,QASA,OACAS,kBATA,eAAAyF,EAAA0c,YAAAnG,QAAAzc,EAAAS,kBAAAyF,EAAAK,OAAA8V,mBAAA,CACAC,SAAA,EACAC,SAAA,GAQAsG,2BANA7iB,EAAAS,iBAAA,CACA6b,SAAA,EACAC,SAAA,IAQA,SAAAuG,IACA,UAAe5c,EAAAK,OAAAM,aAGf,SAAAkc,EAAApP,GACA,MAAAlT,gBACAA,GACKkiB,IACLK,EAAAF,IACA5c,EAAAuD,WAAAkK,GAAA,eAAAqP,EAAAvC,EAAAhgB,GACAyF,EAAAuD,WAAAkK,GAAA,gBAAAqP,EAAArC,EAAAlgB,GACAyF,EAAAuD,WAAAkK,GAAA,aAAAqP,EAAAnC,EAAApgB,GAGA,SAAAwiB,IACAzE,IACAA,GAAA,EACAuE,EAAA,OAGA,SAAAG,IACA1E,IACAA,GAAA,EACAuE,EAAA,QAIA,SAAArU,IACA,MAAAwP,EAAAhY,EAAAgY,KACA,GAAAA,EAAAnV,QAAA,OACAmV,EAAAnV,SAAA,EACA,MAAA/I,EAAAkG,EAAAlG,SACAS,gBACAA,EAAAoiB,0BACAA,GACKF,IACLK,EAAAF,IAEA9iB,EAAAgB,UACAkF,EAAAuD,WAAA5F,GAAAqC,EAAA0c,YAAAnG,MAAAwG,EAAAxiB,GACAyF,EAAAuD,WAAA5F,GAAAqC,EAAA0c,YAAAjG,IAAAuG,EAAAziB,IACK,eAAAyF,EAAA0c,YAAAnG,QACLvW,EAAAuD,WAAA5F,GAAAqC,EAAA0c,YAAAnG,MAAAuG,EAAAvC,EAAAhgB,GACAyF,EAAAuD,WAAA5F,GAAAqC,EAAA0c,YAAAlG,KAAAsG,EAAArC,EAAAkC,GACA3c,EAAAuD,WAAA5F,GAAAqC,EAAA0c,YAAAjG,IAAAqG,EAAAnC,EAAApgB,GAEAyF,EAAA0c,YAAAO,QACAjd,EAAAuD,WAAA5F,GAAAqC,EAAA0c,YAAAO,OAAAH,EAAAnC,EAAApgB,IAKAyF,EAAAuD,WAAA5F,GAAAqC,EAAA0c,YAAAlG,SAAsDxW,EAAAK,OAAA2X,KAAAI,iBAAkCyC,EAAA8B,GAGxF,SAAAlU,IACA,MAAAuP,EAAAhY,EAAAgY,KACA,IAAAA,EAAAnV,QAAA,OACA,MAAA/I,EAAAkG,EAAAlG,QACAke,EAAAnV,SAAA,EACA,MAAAtI,gBACAA,EAAAoiB,0BACAA,GACKF,IACLK,EAAAF,IAEA9iB,EAAAgB,UACAkF,EAAAuD,WAAA3F,IAAAoC,EAAA0c,YAAAnG,MAAAwG,EAAAxiB,GACAyF,EAAAuD,WAAA3F,IAAAoC,EAAA0c,YAAAjG,IAAAuG,EAAAziB,IACK,eAAAyF,EAAA0c,YAAAnG,QACLvW,EAAAuD,WAAA3F,IAAAoC,EAAA0c,YAAAnG,MAAAuG,EAAAvC,EAAAhgB,GACAyF,EAAAuD,WAAA3F,IAAAoC,EAAA0c,YAAAlG,KAAAsG,EAAArC,EAAAkC,GACA3c,EAAAuD,WAAA3F,IAAAoC,EAAA0c,YAAAjG,IAAAqG,EAAAnC,EAAApgB,GAEAyF,EAAA0c,YAAAO,QACAjd,EAAAuD,WAAA3F,IAAAoC,EAAA0c,YAAAO,OAAAH,EAAAnC,EAAApgB,IAKAyF,EAAAuD,WAAA3F,IAAAoC,EAAA0c,YAAAlG,SAAuDxW,EAAAK,OAAA2X,KAAAI,iBAAkCyC,EAAA8B,GA9fzF3iB,OAAAU,eAAAsF,EAAAgY,KAAA,SACAkF,IAAA,IACAxJ,EAGA/Y,IAAAgF,GACA,GAAA+T,IAAA/T,EAAA,CACA,MAAAwd,EAAAzE,EAAAG,SAAAH,EAAAG,SAAA,QAAAlV,EACA6T,EAAAkB,EAAAlY,SAAAkY,EAAAlY,SAAA,QAAAmD,EACAzD,EAAA,aAAAP,EAAAwd,EAAA3F,GAGA9D,EAAA/T,KAqfAhC,EAAA,YACAqC,EAAAK,OAAA2X,KAAAnV,SACA2F,MAGA7K,EAAA,eACA8K,MAEA9K,EAAA,cAAAgS,EAAA9U,KACAmF,EAAAgY,KAAAnV,SA5YA,SAAAhI,GACA,MAAAY,EAAAuE,EAAAvE,OACAid,EAAAG,UAAA,IAAAH,EAAAG,SAAAtW,SACAwW,EAAAzE,YACA7Y,EAAAE,SAAAd,EAAAogB,YAAApgB,EAAAuN,iBACA2Q,EAAAzE,WAAA,EACAyE,EAAAU,aAAArC,EAAA,eAAAvc,EAAAgW,KAAAhW,EAAAya,cAAA,GAAA2E,MAAApf,EAAAof,MACAlB,EAAAU,aAAApC,EAAA,eAAAxc,EAAAgW,KAAAhW,EAAAya,cAAA,GAAA6E,MAAAtf,EAAAsf,QAsYAiD,CAAAviB,KAEA8C,EAAA,YAAAgS,EAAA9U,KACAmF,EAAAgY,KAAAnV,SAxTA,WACA,MAAAmV,EAAAhY,EAAAgY,KACA,IAAAU,EAAAG,UAAA,IAAAH,EAAAG,SAAAtW,OAAA,OAEA,IAAAwW,EAAAzE,YAAAyE,EAAAC,QAGA,OAFAD,EAAAzE,WAAA,OACAyE,EAAAC,SAAA,GAIAD,EAAAzE,WAAA,EACAyE,EAAAC,SAAA,EACA,IAAAqE,EAAA,IACAC,EAAA,IACA,MAAAC,EAAA5D,EAAAvC,EAAAiG,EACAG,EAAAzE,EAAAE,SAAAsE,EACAE,EAAA9D,EAAAtC,EAAAiG,EACAI,EAAA3E,EAAAG,SAAAuE,EAEA,IAAA9D,EAAAvC,IAAAiG,EAAAlb,KAAAyJ,KAAA4R,EAAAzE,EAAAE,UAAAU,EAAAvC,IACA,IAAAuC,EAAAtC,IAAAiG,EAAAnb,KAAAyJ,KAAA8R,EAAA3E,EAAAG,UAAAS,EAAAtC,IACA,MAAAsG,EAAAxb,KAAAE,IAAAgb,EAAAC,GACAvE,EAAAE,SAAAuE,EACAzE,EAAAG,SAAAwE,EAEA,MAAA3C,EAAAhC,EAAAjd,MAAAkc,EAAAtE,MACAsH,EAAAjC,EAAA/c,OAAAgc,EAAAtE,MACAqF,EAAAI,KAAAhX,KAAAG,IAAAoW,EAAAC,WAAA,EAAAoC,EAAA,KACAhC,EAAAM,MAAAN,EAAAI,KACAJ,EAAAK,KAAAjX,KAAAG,IAAAoW,EAAAE,YAAA,EAAAoC,EAAA,KACAjC,EAAAO,MAAAP,EAAAK,KACAL,EAAAE,SAAA9W,KAAAE,IAAAF,KAAAG,IAAAyW,EAAAE,SAAAF,EAAAM,MAAAN,EAAAI,MACAJ,EAAAG,SAAA/W,KAAAE,IAAAF,KAAAG,IAAAyW,EAAAG,SAAAH,EAAAO,MAAAP,EAAAK,MACAV,EAAAI,aAAApb,WAAAigB,GAAAlgB,yBAA+Esb,EAAAE,eAAqBF,EAAAG,iBAwRpG0E,KAEAjgB,EAAA,aAAAgS,EAAA9U,MACAmF,EAAAgK,WAAAhK,EAAAK,OAAA2X,KAAAnV,SAAA7C,EAAAgY,KAAAnV,SAAA7C,EAAAK,OAAA2X,KAAAG,QACAqE,EAAA3hB,KAGA8C,EAAA,qBACAqC,EAAAgY,KAAAnV,SAAA7C,EAAAK,OAAA2X,KAAAnV,SACAsY,MAGAxd,EAAA,mBACAqC,EAAAgY,KAAAnV,SAAA7C,EAAAK,OAAA2X,KAAAnV,SAAA7C,EAAAK,OAAAsB,SACAwZ,MAGAnhB,OAAA+I,OAAA/C,EAAAgY,KAAA,CACAxP,SACAC,UACAoV,GAAAzC,EACA0C,IAAAvB,EACApE,OAAAqE,IChmBe,SAAAuB,EAAAje,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,EAAAuC,KACAA,GACGJ,EACHG,EAAA,CACA2C,KAAA,CACAob,aAAA,EACAnb,SAAA,EACAob,cAAA,EACAC,mBAAA,EACAC,uBAAA,EACAC,iBAAA,GACAC,aAAA,cACAC,aAAA,sBACAC,YAAA,qBACAC,eAAA,2BAGAxe,EAAA4C,KAAA,GACA,IAAA6b,GAAA,EACAC,GAAA,EAEA,SAAAC,EAAAngB,EAAAogB,QACA,IAAAA,IACAA,GAAA,GAGA,MAAAve,EAAAL,EAAAK,OAAAuC,KACA,YAAApE,EAAA,OACA,OAAAwB,EAAAuB,OAAAgB,OAAA,OACA,MACA/B,EADAR,EAAAM,SAAAN,EAAAK,OAAAC,QAAAuC,QACA7C,EAAAuD,WAAAnE,aAAgEY,EAAAK,OAAAM,uCAAqDnC,OAAMwB,EAAAuB,OAAA9C,GAAAD,GAC3HqgB,EAAAre,EAAArB,SAAsCkB,EAAAge,qBAA4Bhe,EAAAke,qBAA4Ble,EAAAie,kBAE9F9d,EAAAnD,SAAAgD,EAAAge,eAAA7d,EAAAnD,SAAAgD,EAAAke,cAAA/d,EAAAnD,SAAAgD,EAAAie,eACAO,EAAA1b,KAAA3C,EAAA,IAGA,IAAAqe,EAAAtc,QACAsc,EAAAzgB,KAAA+e,IACA,MAAAtE,EAAuB7e,OAAAyG,EAAA,EAAAzG,CAACmjB,GACxBtE,EAAA1b,SAAAkD,EAAAie,cACA,MAAAQ,EAAAjG,EAAAtb,KAAA,mBACAwhB,EAAAlG,EAAAtb,KAAA,YACAyhB,EAAAnG,EAAAtb,KAAA,eACA0hB,EAAApG,EAAAtb,KAAA,cACA2hB,EAAArG,EAAA7Z,OAAA,WACAgB,EAAAmf,UAAAtG,EAAA,GAAAkG,GAAAD,EAAAE,EAAAC,GAAA,OACA,SAAAjf,aAAAK,UAAAL,EAAAof,UAAA,CAoCA,GAlCAN,GACAjG,EAAA1a,IAAA,2BAAmD2gB,OACnDjG,EAAArb,WAAA,qBAEAwhB,IACAnG,EAAAtb,KAAA,SAAAyhB,GACAnG,EAAArb,WAAA,gBAGAyhB,IACApG,EAAAtb,KAAA,QAAA0hB,GACApG,EAAArb,WAAA,eAGA0hB,EAAA3c,QACA2c,EAAA9f,SAAA,UAAAhB,KAAAihB,IACA,MAAAC,EAA8BtlB,OAAAyG,EAAA,EAAAzG,CAACqlB,GAE/BC,EAAA/hB,KAAA,iBACA+hB,EAAA/hB,KAAA,SAAA+hB,EAAA/hB,KAAA,gBACA+hB,EAAA9hB,WAAA,kBAKAuhB,IACAlG,EAAAtb,KAAA,MAAAwhB,GACAlG,EAAArb,WAAA,cAIAqb,EAAA1b,SAAAkD,EAAAke,aAAAnhB,YAAAiD,EAAAie,cACA9d,EAAArB,SAA0BkB,EAAAme,kBAAsBlf,SAEhDU,EAAAK,OAAA0J,MAAA6U,EAAA,CACA,MAAAW,EAAA/e,EAAAjD,KAAA,2BAEA,GAAAiD,EAAAnD,SAAA2C,EAAAK,OAAAmf,qBAAA,CAEAb,EADA3e,EAAAuD,WAAAnE,sCAA0FmgB,YAA6Bvf,EAAAK,OAAAmf,wBACvHhhB,SAAA,OACW,CAEXmgB,EADA3e,EAAAuD,WAAAnE,aAAmEY,EAAAK,OAAAmf,gDAA8DD,OACjI/gB,SAAA,IAIA0B,EAAA,iBAAAM,EAAA,GAAAqY,EAAA,IAEA7Y,EAAAK,OAAAof,YACAzf,EAAA0f,sBAGAxf,EAAA,gBAAAM,EAAA,GAAAqY,EAAA,MAIA,SAAA/V,IACA,MAAAS,WACAA,EACAlD,OAAAsf,EAAApe,OACAA,EAAAM,YACAA,GACK7B,EACL4f,EAAA5f,EAAAM,SAAAqf,EAAArf,QAAAuC,QACAxC,EAAAsf,EAAA/c,KACA,IAAA9B,EAAA6e,EAAA7e,cAMA,SAAA+e,EAAArhB,GACA,GAAAohB,GACA,GAAArc,EAAAnE,aAAoCugB,EAAAhf,uCAAoDnC,OAAM+D,OAC9F,cAEO,GAAAhB,EAAA/C,GAAA,SAEP,SAGA,SAAAiZ,EAAAD,GACA,OAAAoI,EACe5lB,OAAAyG,EAAA,EAAAzG,CAACwd,GAAAja,KAAA,2BAGHvD,OAAAyG,EAAA,EAAAzG,CAACwd,GAAAhZ,QAKd,GAxBA,SAAAsC,IACAA,EAAA,GAqBA4d,OAAA,GAEA1e,EAAAK,OAAAyD,oBACAP,EAAAnE,aAA8BugB,EAAAG,qBAA+B1hB,KAAAoZ,IAE7DmH,EADAiB,EAAkC5lB,OAAAyG,EAAA,EAAAzG,CAACwd,GAAAja,KAAA,2BAA4CvD,OAAAyG,EAAA,EAAAzG,CAACwd,GAAAhZ,gBAG3E,GAAAsC,EAAA,EACL,QAAAoC,EAAArB,EAA+BqB,EAAArB,EAAAf,EAAiCoC,GAAA,EAChE2c,EAAA3c,IAAAyb,EAAAzb,QAGAyb,EAAA9c,GAGA,GAAAxB,EAAA4d,aACA,GAAAnd,EAAA,GAAAT,EAAA6d,oBAAA7d,EAAA6d,mBAAA,GACA,MAAA6B,EAAA1f,EAAA6d,mBACA8B,EAAA7d,KAAAmQ,KAAAxR,GACAmf,EAAA9d,KAAAG,IAAAT,EAAAme,EAAA7d,KAAAE,IAAA0d,EAAAC,GAAAze,EAAAgB,QACA2d,EAAA/d,KAAAE,IAAAR,EAAAM,KAAAE,IAAA2d,EAAAD,GAAA,GAEA,QAAA7c,EAAArB,EAAAme,EAAuC9c,EAAA+c,EAAc/c,GAAA,EACrD2c,EAAA3c,IAAAyb,EAAAzb,GAIA,QAAAA,EAAAgd,EAA8Bhd,EAAArB,EAAiBqB,GAAA,EAC/C2c,EAAA3c,IAAAyb,EAAAzb,OAEO,CACP,MAAAid,EAAA5c,EAAAnE,aAAkDugB,EAAAS,kBAClDD,EAAA5d,OAAA,GAAAoc,EAAAlH,EAAA0I,IACA,MAAAE,EAAA9c,EAAAnE,aAAkDugB,EAAAW,kBAClDD,EAAA9d,OAAA,GAAAoc,EAAAlH,EAAA4I,KAKA,SAAAE,IACA,MAAAxmB,EAAmBC,OAAAyL,EAAA,EAAAzL,GACnB,IAAAgG,KAAAof,UAAA,OACA,MAAAoB,EAAAxgB,EAAAK,OAAAuC,KAAAwb,iBAAiEpkB,OAAAyG,EAAA,EAAAzG,CAACgG,EAAAK,OAAAuC,KAAAwb,kBAAwCpkB,OAAAyG,EAAA,EAAAzG,CAACD,GAC3G0mB,EAAAD,EAAA,KAAAzmB,EACA2mB,EAAAD,EAAA1mB,EAAA4N,WAAA6Y,EAAA,GAAAxL,YACA2L,EAAAF,EAAA1mB,EAAA8N,YAAA2Y,EAAA,GAAAvL,aACAnN,EAAA9H,EAAAoH,IAAAlJ,UAEA+D,aAAA2D,GACK5F,EACL,IAAAmH,GAAA,EACAvB,IAAAkC,EAAAC,MAAA/H,EAAAoH,IAAA,GAAAY,YACA,MAAAC,EAAA,EAAAH,EAAAC,KAAAD,EAAAI,KAAA,CAAAJ,EAAAC,KAAA/H,EAAAlE,MAAAgM,EAAAI,KAAA,CAAAJ,EAAAC,KAAAD,EAAAI,IAAAlI,EAAAhE,QAAA,CAAA8L,EAAAC,KAAA/H,EAAAlE,MAAAgM,EAAAI,IAAAlI,EAAAhE,SAEA,QAAAkH,EAAA,EAAmBA,EAAA+E,EAAA1F,OAAwBW,GAAA,GAC3C,MAAAiF,EAAAF,EAAA/E,GAEA,GAAAiF,EAAA,OAAAA,EAAA,IAAAuY,GAAAvY,EAAA,OAAAA,EAAA,IAAAwY,EAAA,CACA,OAAAxY,EAAA,QAAAA,EAAA,YAEAhB,GAAA,GAIA,MAAA5M,IAAA,eAAAyF,EAAA0c,YAAAnG,QAAAvW,EAAAlG,QAAAS,kBAAAyF,EAAAK,OAAA8V,mBAAA,CACAC,SAAA,EACAC,SAAA,GAGAlP,GACArE,IACA0d,EAAA5iB,IAAA,SAAA2iB,EAAAhmB,IACKkkB,IACLA,GAAA,EACA+B,EAAA7iB,GAAA,SAAA4iB,EAAAhmB,IAIAoD,EAAA,kBACAqC,EAAAK,OAAAuC,KAAAC,SAAA7C,EAAAK,OAAAugB,gBACA5gB,EAAAK,OAAAugB,eAAA,KAGAjjB,EAAA,YACAqC,EAAAK,OAAAuC,KAAAC,UACA7C,EAAAK,OAAAuC,KAAAob,YACAuC,IAEAzd,OAIAnF,EAAA,cACAqC,EAAAK,OAAA8L,UAAAnM,EAAAK,OAAA8L,SAAAtJ,UAAA7C,EAAAK,OAAA8L,SAAAU,QACA/J,MAGAnF,EAAA,2DACAqC,EAAAK,OAAAuC,KAAAC,UACA7C,EAAAK,OAAAuC,KAAAob,YACAuC,IAEAzd,OAIAnF,EAAA,uBACAqC,EAAAK,OAAAuC,KAAAC,UACA7C,EAAAK,OAAAuC,KAAAub,wBAAAne,EAAAK,OAAAuC,KAAAub,wBAAAO,KACA1e,EAAAK,OAAAuC,KAAAob,YACAuC,IAEAzd,OAKAnF,EAAA,qBACAqC,EAAAK,OAAAuC,KAAAC,UAAA7C,EAAAK,OAAAuC,KAAAub,wBACAne,EAAAK,OAAAuC,KAAAob,YACAuC,IAEAzd,OAIAnF,EAAA,mBACA,MAAAiF,KACAA,EAAAjB,QACAA,EAAAmC,oBACAA,EAAA+c,oBACAA,EAAAC,gBACAA,GACK9gB,EAAAK,OAELuC,EAAAC,UAAAlB,GAAAmC,IAAA+c,GAAA,IAAAC,KACAhe,MAGAnF,EAAA,eACAqC,EAAAoH,KACApH,EAAAoH,IAAAjI,SAAwBa,EAAAK,OAAAuC,KAAA0b,gBAAgClhB,YAAA4C,EAAAK,OAAAuC,KAAA0b,gBAExDtkB,OAAA+I,OAAA/C,EAAA4C,KAAA,CACAE,OACA6b,gBC/Re,SAAAoC,EAAAjhB,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,GACGmC,EAaH,SAAAkhB,EAAA5J,EAAAC,GACA,MAAA4J,EAAA,WACA,IAAAhB,EACAC,EACAgB,EACA,OAAAC,EAAAC,KAIA,IAHAlB,GAAA,EACAD,EAAAkB,EAAA5e,OAEA0d,EAAAC,EAAA,GAGAiB,EAFAD,EAAAjB,EAAAC,GAAA,IAEAkB,EACAlB,EAAAgB,EAEAjB,EAAAiB,EAIA,OAAAjB,GAlBA,GA4BA,IAAAoB,EACAC,EAYA,OAnBAtN,KAAAoD,IACApD,KAAAqD,IACArD,KAAApB,UAAAwE,EAAA7U,OAAA,EAOAyR,KAAAuN,YAAA,SAAAnH,GACA,OAAAA,GAEAkH,EAAAL,EAAAjN,KAAAoD,EAAAgD,GACAiH,EAAAC,EAAA,GAGAlH,EAAApG,KAAAoD,EAAAiK,KAAArN,KAAAqD,EAAAiK,GAAAtN,KAAAqD,EAAAgK,KAAArN,KAAAoD,EAAAkK,GAAAtN,KAAAoD,EAAAiK,IAAArN,KAAAqD,EAAAgK,IANA,GASArN,KAgGA,SAAAwN,IACAxhB,EAAAyhB,WAAAC,SAEA1hB,EAAAyhB,WAAAE,SACA3hB,EAAAyhB,WAAAE,YAAAhe,SACA3D,EAAAyhB,WAAAE,QA3JA1hB,EAAA,CACAwhB,WAAA,CACAC,aAAA/d,EACAie,SAAA,EACAC,GAAA,WAIA7hB,EAAAyhB,WAAA,CACAC,aAAA/d,GAsJAhG,EAAA,kBACAqC,EAAAyhB,WAAAC,QAAA1hB,EAAAK,OAAAohB,WAAAC,UAEA/jB,EAAA,cACA6jB,MAEA7jB,EAAA,cACA6jB,MAEA7jB,EAAA,sBACA6jB,MAEA7jB,EAAA,gBAAAgS,EAAAmS,EAAAC,KACA/hB,EAAAyhB,WAAAC,SACA1hB,EAAAyhB,WAAA7U,aAAAkV,EAAAC,KAEApkB,EAAA,iBAAAgS,EAAAoH,EAAAgL,KACA/hB,EAAAyhB,WAAAC,SACA1hB,EAAAyhB,WAAA9U,cAAAoK,EAAAgL,KAEA/nB,OAAA+I,OAAA/C,EAAAyhB,WAAA,CACA7U,aApHA,SAAAoV,EAAAD,GACA,MAAAE,EAAAjiB,EAAAyhB,WAAAC,QACA,IAAAQ,EACAC,EACA,MAAAC,EAAApiB,EAAAqiB,YAEA,SAAAC,EAAAC,GAKA,MAAAT,EAAA9hB,EAAAiC,cAAAjC,EAAA8hB,UAAA9hB,EAAA8hB,UAEA,UAAA9hB,EAAAK,OAAAohB,WAAAI,KAnBA,SAAAU,GACAviB,EAAAyhB,WAAAE,SACA3hB,EAAAyhB,WAAAE,OAAA3hB,EAAAK,OAAA0J,KAAA,IAAAiX,EAAAhhB,EAAAwB,WAAA+gB,EAAA/gB,YAAA,IAAAwf,EAAAhhB,EAAAwS,SAAA+P,EAAA/P,WAkBAgQ,CAAAD,GAGAJ,GAAAniB,EAAAyhB,WAAAE,OAAAJ,aAAAO,IAGAK,GAAA,cAAAniB,EAAAK,OAAAohB,WAAAI,KACAK,GAAAK,EAAAvW,eAAAuW,EAAAxW,iBAAA/L,EAAAgM,eAAAhM,EAAA+L,gBACAoW,GAAAL,EAAA9hB,EAAA+L,gBAAAmW,EAAAK,EAAAxW,gBAGA/L,EAAAK,OAAAohB,WAAAG,UACAO,EAAAI,EAAAvW,eAAAmW,GAGAI,EAAA7f,eAAAyf,GACAI,EAAA3V,aAAAuV,EAAAniB,GACAuiB,EAAA3gB,oBACA2gB,EAAA5f,sBAGA,GAAAgC,MAAAC,QAAAqd,GACA,QAAA/e,EAAA,EAAqBA,EAAA+e,EAAA1f,OAAuBW,GAAA,EAC5C+e,EAAA/e,KAAA6e,GAAAE,EAAA/e,aAAAkf,GACAE,EAAAL,EAAA/e,SAGK+e,aAAAG,GAAAL,IAAAE,GACLK,EAAAL,IA2EAtV,cAvEA,SAAAoK,EAAAgL,GACA,MAAAK,EAAApiB,EAAAqiB,YACAJ,EAAAjiB,EAAAyhB,WAAAC,QACA,IAAAxe,EAEA,SAAAuf,EAAAF,GACAA,EAAA5V,cAAAoK,EAAA/W,GAEA,IAAA+W,IACAwL,EAAAG,kBAEAH,EAAAliB,OAAAof,YACUzlB,OAAAoK,EAAA,EAAApK,CAAQ,KAClBuoB,EAAA7C,qBAIA6C,EAAAhf,WAAAzF,cAAA,KACAmkB,IAEAM,EAAAliB,OAAA0J,MAAA,UAAA/J,EAAAK,OAAAohB,WAAAI,IACAU,EAAAhW,UAGAgW,EAAAzkB,oBAKA,GAAA6G,MAAAC,QAAAqd,GACA,IAAA/e,EAAA,EAAiBA,EAAA+e,EAAA1f,OAAuBW,GAAA,EACxC+e,EAAA/e,KAAA6e,GAAAE,EAAA/e,aAAAkf,GACAK,EAAAR,EAAA/e,SAGK+e,aAAAG,GAAAL,IAAAE,GACLQ,EAAAR,MCxJe,SAAAU,EAAA7iB,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,GACGmC,EACHG,EAAA,CACA2iB,KAAA,CACA/f,SAAA,EACAggB,kBAAA,sBACAC,iBAAA,iBACAC,iBAAA,aACAC,kBAAA,0BACAC,iBAAA,yBACAC,wBAAA,wBACAC,kBAAA,+BACAC,iBAAA,KACAC,gCAAA,KACAC,2BAAA,KACAC,UAAA,QACAC,GAAA,QAGA,IAAAC,EAAA,KAEA,SAAAC,EAAAC,GACA,MAAAC,EAAAH,EACA,IAAAG,EAAArhB,SACAqhB,EAAAvlB,KAAA,IACAulB,EAAAvlB,KAAAslB,IAaA,SAAAE,EAAAzc,GACAA,EAAA7J,KAAA,gBAGA,SAAAumB,EAAA1c,GACAA,EAAA7J,KAAA,iBAGA,SAAAwmB,EAAA3c,EAAA4c,GACA5c,EAAA7J,KAAA,OAAAymB,GAGA,SAAAC,EAAA7c,EAAA8c,GACA9c,EAAA7J,KAAA,uBAAA2mB,GAOA,SAAAC,EAAA/c,EAAAgd,GACAhd,EAAA7J,KAAA,aAAA6mB,GAWA,SAAAC,EAAAjd,GACAA,EAAA7J,KAAA,oBAGA,SAAA+mB,EAAAld,GACAA,EAAA7J,KAAA,oBAGA,SAAAgnB,EAAA1pB,GACA,QAAAA,EAAAkL,SAAA,KAAAlL,EAAAkL,QAAA,OACA,MAAA1F,EAAAL,EAAAK,OAAAuiB,KACA4B,EAAsBxqB,OAAAyG,EAAA,EAAAzG,CAACa,EAAAyP,QAEvBtK,EAAAyO,YAAAzO,EAAAyO,WAAAM,SAAAyV,EAAAjmB,GAAAyB,EAAAyO,WAAAM,WACA/O,EAAA8J,QAAA9J,EAAAK,OAAA0J,MACA/J,EAAAsI,YAGAtI,EAAA8J,MACA4Z,EAAArjB,EAAA4iB,kBAEAS,EAAArjB,EAAA0iB,mBAIA/iB,EAAAyO,YAAAzO,EAAAyO,WAAAO,SAAAwV,EAAAjmB,GAAAyB,EAAAyO,WAAAO,WACAhP,EAAAkK,cAAAlK,EAAAK,OAAA0J,MACA/J,EAAAuI,YAGAvI,EAAAkK,YACAwZ,EAAArjB,EAAA2iB,mBAEAU,EAAArjB,EAAAyiB,mBAIA9iB,EAAA6P,YAAA2U,EAAAjmB,GAA0CyR,EAAiBhQ,EAAAK,OAAAwP,WAAAsB,eAC3DqT,EAAA,GAAAC,QAgCA,SAAAC,IACA,OAAA1kB,EAAA6P,YAAA7P,EAAA6P,WAAAiC,SAAA9R,EAAA6P,WAAAiC,QAAAvP,OAGA,SAAAoiB,IACA,OAAAD,KAAA1kB,EAAAK,OAAAwP,WAAAC,UA0BA,MAAA8U,EAAA,CAAAxd,EAAAyd,EAAAlB,KACAE,EAAAzc,GAEA,WAAAA,EAAA,GAAAuH,UACAoV,EAAA3c,EAAA,UACAA,EAAAzJ,GAAA,UAAA4mB,IAGAJ,EAAA/c,EAAAuc,GA7HA,SAAAvc,EAAA0d,GACA1d,EAAA7J,KAAA,gBAAAunB,GA6HAC,CAAA3d,EAAAyd,IAGAG,EAAAnqB,IACA,MAAA2c,EAAA3c,EAAAyP,OAAApL,YAAyCc,EAAAK,OAAAM,cACzC,IAAA6W,IAAAxX,EAAAuB,OAAA0jB,SAAAzN,GAAA,OACA,MAAA0N,EAAAllB,EAAAuB,OAAAhF,QAAAib,KAAAxX,EAAA6B,YACAsjB,EAAAnlB,EAAAK,OAAAyD,qBAAA9D,EAAAolB,eAAAplB,EAAAolB,cAAAH,SAAAzN,GACA0N,GAAAC,GACAnlB,EAAAmF,QAAAnF,EAAAuB,OAAAhF,QAAAib,GAAA,IAGA6N,EAAA,KACA,MAAAhlB,EAAAL,EAAAK,OAAAuiB,KAEAviB,EAAAijB,4BACAW,EAA2BjqB,OAAAyG,EAAA,EAAAzG,CAACgG,EAAAuB,QAAAlB,EAAAijB,4BAG5BS,EAAc/pB,OAAAyG,EAAA,EAAAzG,CAACgG,EAAAuB,QAAAlB,EAAAkjB,WACf,MAAApR,EAAAnS,EAAAK,OAAA0J,KAAA/J,EAAAuB,OAAAlC,OAAAgP,MAAAiX,UAAA/a,SAAAvK,EAAAK,OAAAmf,sBAAAjd,OAAAvC,EAAAuB,OAAAgB,OAEAlC,EAAA8iB,mBACAnjB,EAAAuB,OAAAnD,KAAA,CAAAoZ,EAAAhZ,KACA,MAAAgC,EAAyBxG,OAAAyG,EAAA,EAAAzG,CAACwd,GAC1BC,EAAAzX,EAAAK,OAAA0J,KAAA7E,SAAA1E,EAAAjD,KAAA,+BAAAiB,EAEA2lB,EAAA3jB,EADAH,EAAA8iB,kBAAAhT,QAAA,gBAAgFsH,EAAA,GAAAtH,QAAA,uBAAgDgC,OAMhI/C,EAAA,KACA,MAAA/O,EAAAL,EAAAK,OAAAuiB,KACA5iB,EAAAoH,IAAA1I,OAAA+kB,GAEA,MAAA8B,EAAAvlB,EAAAoH,IAEA/G,EAAAgjB,iCACAY,EAAAsB,EAAAllB,EAAAgjB,iCAGAhjB,EAAA+iB,kBACAe,EAAAoB,EAAAllB,EAAA+iB,kBAIA,MAAA7f,EAAAvD,EAAAuD,WACAshB,EAAAxkB,EAAAmjB,IAAAjgB,EAAAhG,KAAA,yBAxMA,SAAA2X,GAOA,YANA,IAAAA,IACAA,EAAA,IAKA,IAAAsQ,OAAAtQ,GAAA/E,QAAA,KAFA,IAAAhO,KAAAsjB,MAAA,GAAAtjB,KAAAujB,UAAAC,SAAA,KAmM8EC,CAAA,MAC9EC,EAAA7lB,EAAAK,OAAA+M,UAAApN,EAAAK,OAAA+M,SAAAvK,QAAA,eAMA,IAAAkM,EACAC,GA9KA,SAAA5H,EAAAoc,GACApc,EAAA7J,KAAA,KAAAimB,GAuKAsC,CAAAviB,EAAAshB,GApKA,SAAAzd,EAAAye,GACAze,EAAA7J,KAAA,YAAAsoB,GAoKAE,CAAAxiB,EAAAsiB,GAEAR,IAKArlB,EAAAyO,YAAAzO,EAAAyO,WAAAM,UACAA,EAAA/O,EAAAyO,WAAAM,SAGA/O,EAAAyO,YAAAzO,EAAAyO,WAAAO,UACAA,EAAAhP,EAAAyO,WAAAO,SAGAD,KAAAxM,QACAqiB,EAAA7V,EAAA8V,EAAAxkB,EAAA0iB,kBAGA/T,KAAAzM,QACAqiB,EAAA5V,EAAA6V,EAAAxkB,EAAAyiB,kBAIA6B,KACA3kB,EAAA6P,WAAAzI,IAAAzJ,GAAA,UAA0CqS,EAAiBhQ,EAAAK,OAAAwP,WAAAsB,aAAAoT,GAI3DvkB,EAAAoH,IAAAzJ,GAAA,QAAAqnB,GAAA,IAiCArnB,EAAA,kBACA8lB,EAAiBzpB,OAAAyG,EAAA,EAAAzG,iBAAkBgG,EAAAK,OAAAuiB,KAAAC,yEAEnCllB,EAAA,iBACAqC,EAAAK,OAAAuiB,KAAA/f,SACAuM,MAEAzR,EAAA,sEACAqC,EAAAK,OAAAuiB,KAAA/f,SACAwiB,MAEA1nB,EAAA,6CACAqC,EAAAK,OAAAuiB,KAAA/f,SAjMA,WACA,GAAA7C,EAAAK,OAAA0J,MAAA/J,EAAAK,OAAA4O,SAAAjP,EAAAyO,WAAA,OACA,MAAAM,QACAA,EAAAC,QACAA,GACKhP,EAAAyO,WAELO,KAAAzM,OAAA,IACAvC,EAAAkK,aACAma,EAAArV,GACA8U,EAAA9U,KAEAsV,EAAAtV,GACA6U,EAAA7U,KAIAD,KAAAxM,OAAA,IACAvC,EAAA8J,OACAua,EAAAtV,GACA+U,EAAA/U,KAEAuV,EAAAvV,GACA8U,EAAA9U,KA2KAiX,KAEAroB,EAAA,wBACAqC,EAAAK,OAAAuiB,KAAA/f,SAjKA,WACA,MAAAxC,EAAAL,EAAAK,OAAAuiB,KACA8B,KACA1kB,EAAA6P,WAAAiC,QAAA1T,KAAA6nB,IACA,MAAA/T,EAAwBlY,OAAAyG,EAAA,EAAAzG,CAACisB,GAEzBjmB,EAAAK,OAAAwP,WAAAC,YACA+T,EAAA3R,GAEAlS,EAAAK,OAAAwP,WAAAW,eACAuT,EAAA7R,EAAA,UACAiS,EAAAjS,EAAA7R,EAAA6iB,wBAAA/S,QAAA,gBAAqF+B,EAAA1T,QAAA,MAIrF0T,EAAA3T,OAA2ByB,EAAAK,OAAAwP,WAAAuB,qBAC3Bc,EAAA3U,KAAA,uBAEA2U,EAAA1U,WAAA,kBAgJA0oB,KAEAvoB,EAAA,eACAqC,EAAAK,OAAAuiB,KAAA/f,SAlDA,WAEA,IAAAkM,EACAC,EAFAyU,KAAAlhB,OAAA,GAAAkhB,EAAAnkB,SAIAU,EAAAyO,YAAAzO,EAAAyO,WAAAM,UACAA,EAAA/O,EAAAyO,WAAAM,SAGA/O,EAAAyO,YAAAzO,EAAAyO,WAAAO,UACAA,EAAAhP,EAAAyO,WAAAO,SAGAD,GACAA,EAAAnR,IAAA,UAAA2mB,GAGAvV,GACAA,EAAApR,IAAA,UAAA2mB,GAIAI,KACA3kB,EAAA6P,WAAAzI,IAAAxJ,IAAA,UAA2CoS,EAAiBhQ,EAAAK,OAAAwP,WAAAsB,aAAAoT,GAI5DvkB,EAAAoH,IAAAxJ,IAAA,QAAAonB,GAAA,GAwBAzV,KC/Te,SAAA4W,EAAArmB,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,GACGmC,EACHG,EAAA,CACAmmB,QAAA,CACAvjB,SAAA,EACAwjB,KAAA,GACAC,cAAA,EACAxY,IAAA,SACAyY,WAAA,KAGA,IAAAC,GAAA,EACAC,EAAA,GAEA,MAAAC,EAAApoB,GACAA,EAAAqnB,WAAAxV,QAAA,YAAAA,QAAA,eAAAA,QAAA,YAAAA,QAAA,UAAAA,QAAA,UAGAwW,EAAAC,IACA,MAAA7sB,EAAmBC,OAAAyL,EAAA,EAAAzL,GACnB,IAAA6sB,EAQA,MAAAC,GALAD,EADAD,EACA,IAAAG,IAAAH,GAEA7sB,EAAA8sB,UAGAG,SAAAC,MAAA,GAAAC,MAAA,KAAA7nB,OAAA8nB,GAAA,KAAAA,GACA9U,EAAAyU,EAAAvkB,OAGA,OACAuL,IAHAgZ,EAAAzU,EAAA,GAIA1S,MAHAmnB,EAAAzU,EAAA,KAOA+U,EAAA,CAAAtZ,EAAAtP,KACA,MAAAzE,EAAmBC,OAAAyL,EAAA,EAAAzL,GACnB,IAAAwsB,IAAAxmB,EAAAK,OAAA+lB,QAAAvjB,QAAA,OACA,IAAAgkB,EAGAA,EADA7mB,EAAAK,OAAAgnB,IACA,IAAAN,IAAA/mB,EAAAK,OAAAgnB,KAEAttB,EAAA8sB,SAGA,MAAAzmB,EAAAJ,EAAAuB,OAAA9C,GAAAD,GACA,IAAAmB,EAAA+mB,EAAAtmB,EAAA7C,KAAA,iBAEA,GAAAyC,EAAAK,OAAA+lB,QAAAC,KAAA9jB,OAAA,GACA,IAAA8jB,EAAArmB,EAAAK,OAAA+lB,QAAAC,KACA,MAAAA,IAAA9jB,OAAA,KAAA8jB,IAAAY,MAAA,EAAAZ,EAAA9jB,OAAA,IACA5C,KAAiB0mB,KAAQvY,KAAOnO,SAC3BknB,EAAAG,SAAA/B,SAAAnX,KACLnO,KAAiBmO,KAAOnO,KAGxBK,EAAAK,OAAA+lB,QAAAG,YACA5mB,GAAAknB,EAAAS,QAGA,MAAAC,EAAAxtB,EAAAqsB,QAAAoB,MAEAD,KAAA5nB,YAIAK,EAAAK,OAAA+lB,QAAAE,aACAvsB,EAAAqsB,QAAAE,aAAA,CACA3mB,SACO,KAAAA,GAEP5F,EAAAqsB,QAAAqB,UAAA,CACA9nB,SACO,KAAAA,KAIP+nB,EAAA,CAAAva,EAAAxN,EAAAgoB,KACA,GAAAhoB,EACA,QAAAuD,EAAA,EAAAX,EAAAvC,EAAAuB,OAAAgB,OAAoDW,EAAAX,EAAYW,GAAA,GAChE,MAAA9C,EAAAJ,EAAAuB,OAAA9C,GAAAyE,GAGA,GAFAwjB,EAAAtmB,EAAA7C,KAAA,mBAEAoC,IAAAS,EAAA/C,SAAA2C,EAAAK,OAAAmf,qBAAA,CACA,MAAAhhB,EAAA4B,EAAA5B,QACAwB,EAAAmF,QAAA3G,EAAA2O,EAAAwa,SAIA3nB,EAAAmF,QAAA,EAAAgI,EAAAwa,IAIAC,EAAA,KACAnB,EAAAE,EAAA3mB,EAAAK,OAAAgnB,KACAK,EAAA1nB,EAAAK,OAAA8M,MAAAsZ,EAAA9mB,OAAA,IA+BAhC,EAAA,YACAqC,EAAAK,OAAA+lB,QAAAvjB,SA7BA,MACA,MAAA9I,EAAmBC,OAAAyL,EAAA,EAAAzL,GACnB,GAAAgG,EAAAK,OAAA+lB,QAAA,CAEA,IAAArsB,EAAAqsB,UAAArsB,EAAAqsB,QAAAqB,UAGA,OAFAznB,EAAAK,OAAA+lB,QAAAvjB,SAAA,OACA7C,EAAAK,OAAAwnB,eAAAhlB,SAAA,GAIA2jB,GAAA,IACAC,EAAAE,EAAA3mB,EAAAK,OAAAgnB,MACAvZ,KAAA2Y,EAAA9mB,SACA+nB,EAAA,EAAAjB,EAAA9mB,MAAAK,EAAAK,OAAAynB,oBAEA9nB,EAAAK,OAAA+lB,QAAAE,cACAvsB,EAAAa,iBAAA,WAAAgtB,MAcAxY,KAGAzR,EAAA,eACAqC,EAAAK,OAAA+lB,QAAAvjB,SAdA,MACA,MAAA9I,EAAmBC,OAAAyL,EAAA,EAAAzL,GAEnBgG,EAAAK,OAAA+lB,QAAAE,cACAvsB,EAAA2T,oBAAA,WAAAka,IAWArY,KAGA5R,EAAA,gDACA6oB,GACAY,EAAApnB,EAAAK,OAAA+lB,QAAAtY,IAAA9N,EAAA6B,eAGAlE,EAAA,mBACA6oB,GAAAxmB,EAAAK,OAAAsB,SACAylB,EAAApnB,EAAAK,OAAA+lB,QAAAtY,IAAA9N,EAAA6B,eCtJe,SAAAkmB,EAAAjoB,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAC,KACAA,EAAAvC,GACAA,GACGmC,EACH0mB,GAAA,EACA,MAAAvsB,EAAmBD,OAAAyL,EAAA,EAAAzL,GACnBD,EAAiBC,OAAAyL,EAAA,EAAAzL,GACjBiG,EAAA,CACA4nB,eAAA,CACAhlB,SAAA,EACAyjB,cAAA,EACA0B,YAAA,KAIA,MAAAC,EAAA,KACA/nB,EAAA,cACA,MAAAgoB,EAAAjuB,EAAA4sB,SAAAsB,KAAAhY,QAAA,QAGA,GAAA+X,IAFAloB,EAAAuB,OAAA9C,GAAAuB,EAAA6B,aAAAtE,KAAA,aAEA,CACA,MAAA6qB,EAAApoB,EAAAuD,WAAAnE,aAAsDY,EAAAK,OAAAM,yBAAuCunB,OAAQ1pB,QACrG,YAAA4pB,EAAA,OACApoB,EAAAmF,QAAAijB,KAIAC,EAAA,KACA,GAAA7B,GAAAxmB,EAAAK,OAAAwnB,eAAAhlB,QAEA,GAAA7C,EAAAK,OAAAwnB,eAAAvB,cAAAvsB,EAAAqsB,SAAArsB,EAAAqsB,QAAAE,aACAvsB,EAAAqsB,QAAAE,aAAA,cAAkDtmB,EAAAuB,OAAA9C,GAAAuB,EAAA6B,aAAAtE,KAAA,gBAAuD,IACzG2C,EAAA,eACK,CACL,MAAAE,EAAAJ,EAAAuB,OAAA9C,GAAAuB,EAAA6B,aACAsmB,EAAA/nB,EAAA7C,KAAA,cAAA6C,EAAA7C,KAAA,gBACAtD,EAAA4sB,SAAAsB,QAAA,GACAjoB,EAAA,aAkCAvC,EAAA,YACAqC,EAAAK,OAAAwnB,eAAAhlB,SA/BA,MACA,IAAA7C,EAAAK,OAAAwnB,eAAAhlB,SAAA7C,EAAAK,OAAA+lB,SAAApmB,EAAAK,OAAA+lB,QAAAvjB,QAAA,OACA2jB,GAAA,EACA,MAAA2B,EAAAluB,EAAA4sB,SAAAsB,KAAAhY,QAAA,QAEA,GAAAgY,EAAA,CACA,MAAAhb,EAAA,EAEA,QAAAjK,EAAA,EAAAX,EAAAvC,EAAAuB,OAAAgB,OAAoDW,EAAAX,EAAYW,GAAA,GAChE,MAAA9C,EAAAJ,EAAAuB,OAAA9C,GAAAyE,GAGA,IAFA9C,EAAA7C,KAAA,cAAA6C,EAAA7C,KAAA,mBAEA4qB,IAAA/nB,EAAA/C,SAAA2C,EAAAK,OAAAmf,qBAAA,CACA,MAAAhhB,EAAA4B,EAAA5B,QACAwB,EAAAmF,QAAA3G,EAAA2O,EAAAnN,EAAAK,OAAAynB,oBAAA,KAKA9nB,EAAAK,OAAAwnB,eAAAG,YACMhuB,OAAAyG,EAAA,EAAAzG,CAACD,GAAA4D,GAAA,aAAAsqB,IAYP7Y,KAGAzR,EAAA,eACAqC,EAAAK,OAAAwnB,eAAAhlB,SAXA7C,EAAAK,OAAAwnB,eAAAG,YACMhuB,OAAAyG,EAAA,EAAAzG,CAACD,GAAA6D,IAAA,aAAAqqB,KAcPtqB,EAAA,gDACA6oB,GACA6B,MAGA1qB,EAAA,mBACA6oB,GAAAxmB,EAAAK,OAAAsB,SACA0mB,MCxFe,SAAAC,EAAAxoB,GACf,IAMA6I,GANA3I,OACAA,EAAAC,aACAA,EAAAtC,GACAA,EAAAuC,KACAA,GACGJ,EAkBH,SAAAyoB,IACA,MAAAC,EAAAxoB,EAAAuB,OAAA9C,GAAAuB,EAAA6B,aACA,IAAA4mB,EAAAzoB,EAAAK,OAAA+M,SAAAqb,MAEAD,EAAAjrB,KAAA,0BACAkrB,EAAAD,EAAAjrB,KAAA,yBAAAyC,EAAAK,OAAA+M,SAAAqb,OAGAvkB,aAAAyE,GACAA,EAAc3O,OAAAoK,EAAA,EAAApK,CAAQ,KACtB,IAAA0uB,EAEA1oB,EAAAK,OAAA+M,SAAAub,iBACA3oB,EAAAK,OAAA0J,MACA/J,EAAAuM,UACAmc,EAAA1oB,EAAAuI,UAAAvI,EAAAK,OAAA8M,OAAA,MACAjN,EAAA,aACSF,EAAAkK,YAGAlK,EAAAK,OAAA+M,SAAAwb,gBAITtb,KAHAob,EAAA1oB,EAAAmF,QAAAnF,EAAAuB,OAAAgB,OAAA,EAAAvC,EAAAK,OAAA8M,OAAA,MACAjN,EAAA,cAJAwoB,EAAA1oB,EAAAuI,UAAAvI,EAAAK,OAAA8M,OAAA,MACAjN,EAAA,aAOOF,EAAAK,OAAA0J,MACP/J,EAAAuM,UACAmc,EAAA1oB,EAAAsI,UAAAtI,EAAAK,OAAA8M,OAAA,MACAjN,EAAA,aACOF,EAAA8J,MAGA9J,EAAAK,OAAA+M,SAAAwb,gBAIPtb,KAHAob,EAAA1oB,EAAAmF,QAAA,EAAAnF,EAAAK,OAAA8M,OAAA,MACAjN,EAAA,cAJAwoB,EAAA1oB,EAAAsI,UAAAtI,EAAAK,OAAA8M,OAAA,MACAjN,EAAA,aAQAF,EAAAK,OAAAsB,SAAA3B,EAAAoN,SAAAyb,QAAAN,KAAkE,IAAAG,GAClEH,KAEKE,GAGL,SAAAlS,IACA,gBAAA5N,KACA3I,EAAAoN,SAAAyb,UACA7oB,EAAAoN,SAAAyb,SAAA,EACA3oB,EAAA,iBACAqoB,KACA,IAGA,SAAAjb,IACA,QAAAtN,EAAAoN,SAAAyb,eACA,IAAAlgB,IAEAA,IACAzE,aAAAyE,GACAA,OAAAhF,GAGA3D,EAAAoN,SAAAyb,SAAA,EACA3oB,EAAA,iBACA,IAGA,SAAA4oB,EAAA3b,GACAnN,EAAAoN,SAAAyb,UACA7oB,EAAAoN,SAAA2b,SACApgB,GAAAzE,aAAAyE,GACA3I,EAAAoN,SAAA2b,QAAA,EAEA,IAAA5b,GAAAnN,EAAAK,OAAA+M,SAAA4b,kBAIA,wCAAAxpB,QAAAmG,IACA3F,EAAAuD,WAAA,GAAA3I,iBAAA+K,EAAAwV,MAJAnb,EAAAoN,SAAA2b,QAAA,EACAR,OAQA,SAAAU,IACA,MAAAhvB,EAAqBD,OAAAyL,EAAA,EAAAzL,GAErB,WAAAC,EAAAivB,iBAAAlpB,EAAAoN,SAAAyb,SACAC,IAGA,YAAA7uB,EAAAivB,iBAAAlpB,EAAAoN,SAAA2b,SACAR,IACAvoB,EAAAoN,SAAA2b,QAAA,GAIA,SAAA5N,EAAAtgB,GACAmF,MAAAof,WAAApf,EAAAuD,YACA1I,EAAAyP,SAAAtK,EAAAuD,WAAA,KACA,wCAAA/D,QAAAmG,IACA3F,EAAAuD,WAAA,GAAAmK,oBAAA/H,EAAAwV,KAEAnb,EAAAoN,SAAA2b,QAAA,EAEA/oB,EAAAoN,SAAAyb,QAGAN,IAFAjb,KAMA,SAAA6b,IACAnpB,EAAAK,OAAA+M,SAAAgc,qBACA9b,KAEApN,EAAA,iBACA4oB,KAGA,wCAAAtpB,QAAAmG,IACA3F,EAAAuD,WAAA,GAAAmK,oBAAA/H,EAAAwV,KAIA,SAAAkO,IACArpB,EAAAK,OAAA+M,SAAAgc,uBAIAppB,EAAAoN,SAAA2b,QAAA,EACA7oB,EAAA,kBACAqoB,KArJAvoB,EAAAoN,SAAA,CACAyb,SAAA,EACAE,QAAA,GAEA9oB,EAAA,CACAmN,SAAA,CACAvK,SAAA,EACA4lB,MAAA,IACAO,mBAAA,EACAI,sBAAA,EACAR,iBAAA,EACAD,kBAAA,EACAW,mBAAA,KAwJA3rB,EAAA,YACA,GAAAqC,EAAAK,OAAA+M,SAAAvK,QAAA,CACA0T,IACuBvc,OAAAyL,EAAA,EAAAzL,GACvBY,iBAAA,mBAAAquB,GAfAjpB,EAAAK,OAAA+M,SAAAkc,oBACAtpB,EAAAoH,IAAAzJ,GAAA,aAAAwrB,GACAnpB,EAAAoH,IAAAzJ,GAAA,aAAA0rB,OAiBA1rB,EAAA,yBAAAgS,EAAAxC,EAAAoc,KACAvpB,EAAAoN,SAAAyb,UACAU,IAAAvpB,EAAAK,OAAA+M,SAAAgc,qBACAppB,EAAAoN,SAAA0b,MAAA3b,GAEAG,OAIA3P,EAAA,uBACAqC,EAAAoN,SAAAyb,UACA7oB,EAAAK,OAAA+M,SAAAgc,qBACA9b,IAEAwb,OAIAnrB,EAAA,gBACAqC,EAAAK,OAAAsB,SAAA3B,EAAAoN,SAAA2b,SAAA/oB,EAAAK,OAAA+M,SAAAgc,sBACAb,MAGA5qB,EAAA,eAnCAqC,EAAAoH,IAAAxJ,IAAA,aAAAurB,GACAnpB,EAAAoH,IAAAxJ,IAAA,aAAAyrB,GAqCArpB,EAAAoN,SAAAyb,SACAvb,IAGqBtT,OAAAyL,EAAA,EAAAzL,GACrB0T,oBAAA,mBAAAub,KAEAjvB,OAAA+I,OAAA/C,EAAAoN,SAAA,CACA0b,QACAP,MACAhS,QACAjJ,SC5Ne,SAAAkc,EAAA1pB,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,GACGmC,EACHG,EAAA,CACAwpB,OAAA,CACAzpB,OAAA,KACA0pB,sBAAA,EACAC,iBAAA,EACAC,sBAAA,4BACAC,qBAAA,mBAGA,IAAArD,GAAA,EACAsD,GAAA,EAKA,SAAAC,IACA,MAAAC,EAAAhqB,EAAAypB,OAAAzpB,OACA,IAAAgqB,KAAA5K,UAAA,OACA,MAAA6K,EAAAD,EAAAC,aACAC,EAAAF,EAAAE,aACA,GAAAA,GAAwBlwB,OAAAyG,EAAA,EAAAzG,CAACkwB,GAAA7sB,SAAA2C,EAAAK,OAAAopB,OAAAG,uBAAA,OACzB,SAAAK,EAAA,OACA,IAAAE,EAQA,GALAA,EADAH,EAAA3pB,OAAA0J,KACA7E,SAA8BlL,OAAAyG,EAAA,EAAAzG,CAACgwB,EAAAE,cAAA3sB,KAAA,+BAE/B0sB,EAGAjqB,EAAAK,OAAA0J,KAAA,CACA,IAAAqgB,EAAApqB,EAAA6B,YAEA7B,EAAAuB,OAAA9C,GAAA2rB,GAAA/sB,SAAA2C,EAAAK,OAAAmf,uBACAxf,EAAAuM,UAEAvM,EAAAqqB,YAAArqB,EAAAuD,WAAA,GAAA+mB,WACAF,EAAApqB,EAAA6B,aAGA,MAAA0oB,EAAAvqB,EAAAuB,OAAA9C,GAAA2rB,GAAArrB,qCAA4ForB,OAAa1rB,GAAA,GAAAD,QACzGgsB,EAAAxqB,EAAAuB,OAAA9C,GAAA2rB,GAAAvrB,qCAA4FsrB,OAAa1rB,GAAA,GAAAD,QACzG2rB,OAAA,IAAAI,EAAAC,OAAqE,IAAAA,EAAAD,EAAoEC,EAAAJ,IAAAG,EAAAC,EAAuFD,EAGhOvqB,EAAAmF,QAAAglB,GAGA,SAAA/a,IACA,MACAqa,OAAAgB,GACKzqB,EAAAK,OACL,GAAAmmB,EAAA,SACAA,GAAA,EACA,MAAAkE,EAAA1qB,EAAAqiB,YAEA,GAAAoI,EAAAzqB,kBAAA0qB,EACA1qB,EAAAypB,OAAAzpB,OAAAyqB,EAAAzqB,OACAhG,OAAA+I,OAAA/C,EAAAypB,OAAAzpB,OAAA+D,eAAA,CACAD,qBAAA,EACA6mB,qBAAA,IAEA3wB,OAAA+I,OAAA/C,EAAAypB,OAAAzpB,OAAAK,OAAA,CACAyD,qBAAA,EACA6mB,qBAAA,SAEK,GAAU3wB,OAAAoK,EAAA,EAAApK,CAAQywB,EAAAzqB,QAAA,CACvB,MAAA4qB,EAAA5wB,OAAA+I,OAAA,GAAiD0nB,EAAAzqB,QACjDhG,OAAA+I,OAAA6nB,EAAA,CACA9mB,qBAAA,EACA6mB,qBAAA,IAEA3qB,EAAAypB,OAAAzpB,OAAA,IAAA0qB,EAAAE,GACAd,GAAA,EAKA,OAFA9pB,EAAAypB,OAAAzpB,OAAAoH,IAAAjK,SAAA6C,EAAAK,OAAAopB,OAAAI,sBACA7pB,EAAAypB,OAAAzpB,OAAArC,GAAA,MAAAosB,IACA,EAGA,SAAAnpB,EAAAiqB,GACA,MAAAb,EAAAhqB,EAAAypB,OAAAzpB,OACA,IAAAgqB,KAAA5K,UAAA,OACA,MAAAte,EAAA,SAAAkpB,EAAA3pB,OAAAS,cAAAkpB,EAAAc,uBAAAd,EAAA3pB,OAAAS,cAEA,IAAAiqB,EAAA,EACA,MAAAC,EAAAhrB,EAAAK,OAAAopB,OAAAG,sBAaA,GAXA5pB,EAAAK,OAAAS,cAAA,IAAAd,EAAAK,OAAAW,iBACA+pB,EAAA/qB,EAAAK,OAAAS,eAGAd,EAAAK,OAAAopB,OAAAC,uBACAqB,EAAA,GAGAA,EAAA5oB,KAAAC,MAAA2oB,GACAf,EAAAzoB,OAAAnE,YAAA4tB,GAEAhB,EAAA3pB,OAAA0J,MAAAigB,EAAA3pB,OAAAC,SAAA0pB,EAAA3pB,OAAAC,QAAAuC,QACA,QAAAK,EAAA,EAAqBA,EAAA6nB,EAAsB7nB,GAAA,EAC3C8mB,EAAAzmB,WAAAnE,sCAAsEY,EAAAirB,UAAA/nB,OAAqB/F,SAAA6tB,QAG3F,QAAA9nB,EAAA,EAAqBA,EAAA6nB,EAAsB7nB,GAAA,EAC3C8mB,EAAAzoB,OAAA9C,GAAAuB,EAAAirB,UAAA/nB,GAAA/F,SAAA6tB,GAIA,MAAArB,EAAA3pB,EAAAK,OAAAopB,OAAAE,iBACAuB,EAAAvB,IAAAK,EAAA3pB,OAAA0J,KAEA,GAAA/J,EAAAirB,YAAAjB,EAAAiB,WAAAC,EAAA,CACA,IACAC,EACAthB,EAFAuhB,EAAApB,EAAAnoB,YAIA,GAAAmoB,EAAA3pB,OAAA0J,KAAA,CACAigB,EAAAzoB,OAAA9C,GAAA2sB,GAAA/tB,SAAA2sB,EAAA3pB,OAAAmf,uBACAwK,EAAAzd,UAEAyd,EAAAK,YAAAL,EAAAzmB,WAAA,GAAA+mB,WACAc,EAAApB,EAAAnoB,aAIA,MAAAwpB,EAAArB,EAAAzoB,OAAA9C,GAAA2sB,GAAArsB,qCAAgHiB,EAAAirB,eAAiBxsB,GAAA,GAAAD,QACjI8sB,EAAAtB,EAAAzoB,OAAA9C,GAAA2sB,GAAAvsB,qCAAgHmB,EAAAirB,eAAiBxsB,GAAA,GAAAD,QAGjI2sB,OADA,IAAAE,EACAC,OACS,IAAAA,EACTD,EACSC,EAAAF,KAAAC,EACTrB,EAAA3pB,OAAAU,eAAA,EAAAuqB,EAAAF,EACSE,EAAAF,IAAAC,EACTC,EAEAD,EAGAxhB,EAAA7J,EAAA6B,YAAA7B,EAAA8S,cAAA,mBAGAjJ,GADAshB,EAAAnrB,EAAAirB,WACAjrB,EAAA8S,cAAA,cAGAoY,IACAC,GAAA,SAAAthB,EAAA8f,GAAA,EAAAA,GAGAK,EAAAuB,sBAAAvB,EAAAuB,qBAAAhvB,QAAA4uB,GAAA,IACAnB,EAAA3pB,OAAAW,eAEAmqB,EADAA,EAAAC,EACAD,EAAAhpB,KAAAC,MAAAtB,EAAA,KAEAqqB,EAAAhpB,KAAAC,MAAAtB,EAAA,KAESqqB,EAAAC,GAAApB,EAAA3pB,OAAAU,eAGTipB,EAAA7kB,QAAAgmB,EAAAN,EAAA,OAAAlnB,KAvJA3D,EAAAypB,OAAA,CACAzpB,OAAA,MA2JArC,EAAA,kBACA,MAAA8rB,OACAA,GACKzpB,EAAAK,OACLopB,KAAAzpB,SACAoP,IACAxO,GAAA,MAEAjD,EAAA,gDACAiD,MAEAjD,EAAA,iBAAAgS,EAAAoH,KACA,MAAAiT,EAAAhqB,EAAAypB,OAAAzpB,OACAgqB,MAAA5K,WACA4K,EAAArd,cAAAoK,KAEApZ,EAAA,qBACA,MAAAqsB,EAAAhqB,EAAAypB,OAAAzpB,OACAgqB,MAAA5K,WAEA0K,GACAE,EAAAza,YAGAvV,OAAA+I,OAAA/C,EAAAypB,OAAA,CACAra,OACAxO,WCxMe,SAAAuL,EAAArM,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAC,KACAA,EAAAsrB,KACAA,GACG1rB,EACHG,EAAA,CACAkM,SAAA,CACAtJ,SAAA,EACA4oB,UAAA,EACAC,cAAA,EACAC,gBAAA,EACAC,oBAAA,EACAC,sBAAA,EACAhf,QAAA,EACAif,gBAAA,OAyOA9xB,OAAA+I,OAAA/C,EAAA,CACAmM,SAAA,CACAiR,aAvOA,WACA,MAAA0E,EAAA9hB,EAAA8L,eACA9L,EAAA4M,aAAAkV,GACA9hB,EAAA2M,cAAA,GACA3M,EAAA+rB,gBAAAC,WAAAzpB,OAAA,EACAvC,EAAAmM,SAAAyR,WAAA,CACAqO,WAAAjsB,EAAA4F,IAAA5F,EAAA8hB,WAAA9hB,EAAA8hB,aAkOAjH,YA9NA,WACA,MACAkR,gBAAAthB,EAAAyhB,QACAA,GACKlsB,EAEL,IAAAyK,EAAAuhB,WAAAzpB,QACAkI,EAAAuhB,WAAA7oB,KAAA,CACAqJ,SAAA0f,EAAAlsB,EAAAkC,eAAA,mBACAkK,KAAA3B,EAAA0hB,iBAIA1hB,EAAAuhB,WAAA7oB,KAAA,CACAqJ,SAAA0f,EAAAlsB,EAAAkC,eAAA,uBACAkK,KAAYpS,OAAAoK,EAAA,EAAApK,MAgNZ4jB,WA5MA,SAAAwO,GACA,IAAAH,WACAA,GACKG,EACL,MAAA/rB,OACAA,EAAAkD,WACAA,EACAtB,aAAA2D,EAAA4M,SACAA,EACAuZ,gBAAAthB,GACKzK,EAGLqsB,EADyBryB,OAAAoK,EAAA,EAAApK,GACzByQ,EAAA0hB,eAEA,GAAAF,GAAAjsB,EAAA+L,eACA/L,EAAAmF,QAAAnF,EAAA6B,kBAIA,GAAAoqB,GAAAjsB,EAAAgM,eACAhM,EAAAuB,OAAAgB,OAAAiQ,EAAAjQ,OACAvC,EAAAmF,QAAAqN,EAAAjQ,OAAA,GAEAvC,EAAAmF,QAAAnF,EAAAuB,OAAAgB,OAAA,OAJA,CAUA,GAAAlC,EAAA8L,SAAAsf,SAAA,CACA,GAAAhhB,EAAAuhB,WAAAzpB,OAAA,GACA,MAAA+pB,EAAA7hB,EAAAuhB,WAAAO,MACAC,EAAA/hB,EAAAuhB,WAAAO,MACAE,EAAAH,EAAA9f,SAAAggB,EAAAhgB,SACAJ,EAAAkgB,EAAAlgB,KAAAogB,EAAApgB,KACApM,EAAA2Z,SAAA8S,EAAArgB,EACApM,EAAA2Z,UAAA,EAEAxX,KAAAyJ,IAAA5L,EAAA2Z,UAAAtZ,EAAA8L,SAAA2f,kBACA9rB,EAAA2Z,SAAA,IAKAvN,EAAA,KAA0BpS,OAAAoK,EAAA,EAAApK,GAAGsyB,EAAAlgB,KAAA,OAC7BpM,EAAA2Z,SAAA,QAGA3Z,EAAA2Z,SAAA,EAGA3Z,EAAA2Z,UAAAtZ,EAAA8L,SAAA0f,sBACAphB,EAAAuhB,WAAAzpB,OAAA,EACA,IAAAob,EAAA,IAAAtd,EAAA8L,SAAAuf,cACA,MAAAgB,EAAA1sB,EAAA2Z,SAAAgE,EACA,IAAAgP,EAAA3sB,EAAA8hB,UAAA4K,EACA9mB,IAAA+mB,MACA,IACAC,EADAC,GAAA,EAEA,MAAAC,EAAA,GAAA3qB,KAAAyJ,IAAA5L,EAAA2Z,UAAAtZ,EAAA8L,SAAAyf,oBACA,IAAAmB,EAEA,GAAAJ,EAAA3sB,EAAAgM,eACA3L,EAAA8L,SAAAwf,gBACAgB,EAAA3sB,EAAAgM,gBAAA8gB,IACAH,EAAA3sB,EAAAgM,eAAA8gB,GAGAF,EAAA5sB,EAAAgM,eACA6gB,GAAA,EACApiB,EAAAuiB,qBAAA,GAEAL,EAAA3sB,EAAAgM,eAGA3L,EAAA0J,MAAA1J,EAAAW,iBAAA+rB,GAAA,QACO,GAAAJ,EAAA3sB,EAAA+L,eACP1L,EAAA8L,SAAAwf,gBACAgB,EAAA3sB,EAAA+L,eAAA+gB,IACAH,EAAA3sB,EAAA+L,eAAA+gB,GAGAF,EAAA5sB,EAAA+L,eACA8gB,GAAA,EACApiB,EAAAuiB,qBAAA,GAEAL,EAAA3sB,EAAA+L,eAGA1L,EAAA0J,MAAA1J,EAAAW,iBAAA+rB,GAAA,QACO,GAAA1sB,EAAA8L,SAAAU,OAAA,CACP,IAAAsT,EAEA,QAAA8M,EAAA,EAAuBA,EAAAza,EAAAjQ,OAAqB0qB,GAAA,EAC5C,GAAAza,EAAAya,IAAAN,EAAA,CACAxM,EAAA8M,EACA,MAUAN,IALAA,EADAxqB,KAAAyJ,IAAA4G,EAAA2N,GAAAwM,GAAAxqB,KAAAyJ,IAAA4G,EAAA2N,EAAA,GAAAwM,IAAA,SAAA3sB,EAAAktB,eACA1a,EAAA2N,GAEA3N,EAAA2N,EAAA,IAaA,GAPA4M,GACAvB,EAAA,qBACAxrB,EAAAuM,YAKA,IAAAvM,EAAA2Z,UAOA,GALAgE,EADA/X,EACAzD,KAAAyJ,MAAA+gB,EAAA3sB,EAAA8hB,WAAA9hB,EAAA2Z,UAEAxX,KAAAyJ,KAAA+gB,EAAA3sB,EAAA8hB,WAAA9hB,EAAA2Z,UAGAtZ,EAAA8L,SAAAU,OAAA,CAQA,MAAAsgB,EAAAhrB,KAAAyJ,KAAAhG,GAAA+mB,KAAA3sB,EAAA8hB,WACAsL,EAAAptB,EAAAqtB,gBAAArtB,EAAA6B,aAGA8b,EADAwP,EAAAC,EACA/sB,EAAA8M,MACWggB,EAAA,EAAAC,EACX,IAAA/sB,EAAA8M,MAEA,IAAA9M,EAAA8M,YAGO,GAAA9M,EAAA8L,SAAAU,OAEP,YADA7M,EAAAkN,iBAIA7M,EAAA8L,SAAAwf,gBAAAkB,GACA7sB,EAAA0C,eAAAkqB,GACA5sB,EAAA2M,cAAAgR,GACA3d,EAAA4M,aAAA+f,GACA3sB,EAAA0iB,iBAAA,EAAA1iB,EAAAktB,gBACAltB,EAAAgK,WAAA,EACAzG,EAAAzF,cAAA,KACAkC,MAAAof,WAAA3U,EAAAuiB,sBACA9sB,EAAA,kBACAF,EAAA2M,cAAAtM,EAAA8M,OACAhJ,WAAA,KACAnE,EAAA4M,aAAAggB,GACArpB,EAAAzF,cAAA,KACAkC,MAAAof,WACApf,EAAAlC,mBAEW,OAEJkC,EAAA2Z,UACPzZ,EAAA,8BACAF,EAAA0C,eAAAiqB,GACA3sB,EAAA2M,cAAAgR,GACA3d,EAAA4M,aAAA+f,GACA3sB,EAAA0iB,iBAAA,EAAA1iB,EAAAktB,gBAEAltB,EAAAgK,YACAhK,EAAAgK,WAAA,EACAzG,EAAAzF,cAAA,KACAkC,MAAAof,WACApf,EAAAlC,oBAIAkC,EAAA0C,eAAAiqB,GAGA3sB,EAAA4B,oBACA5B,EAAA2C,0BACK,IAAAtC,EAAA8L,SAAAU,OAEL,YADA7M,EAAAkN,iBAEK7M,EAAA8L,UACLjM,EAAA,gCAGAG,EAAA8L,SAAAsf,UAAAY,GAAAhsB,EAAAitB,gBACAttB,EAAA0C,iBACA1C,EAAA4B,oBACA5B,EAAA2C,4BCtPe,SAAA4qB,EAAAztB,GACf,IAUA0tB,EACAC,EACAC,GAZA1tB,OACAA,EAAAC,aACAA,GACGH,EACHG,EAAA,CACA0tB,KAAA,CACAC,KAAA,EACAC,KAAA,YAuGA7tB,EAAA2tB,KAAA,CACAtI,WAjGAlT,IACA,MAAArR,cACAA,GACKd,EAAAK,QACLutB,KACAA,EAAAC,KACAA,GACK7tB,EAAAK,OAAAstB,KACLF,EAAAD,EAAAI,EACAF,EAAAvrB,KAAAC,MAAA+P,EAAAyb,GAGAJ,EADArrB,KAAAC,MAAA+P,EAAAyb,KAAAzb,EAAAyb,EACAzb,EAEAhQ,KAAAmQ,KAAAH,EAAAyb,KAGA,SAAA9sB,GAAA,QAAA+sB,IACAL,EAAArrB,KAAAE,IAAAmrB,EAAA1sB,EAAA8sB,KAgFAE,YA5EA,CAAA5qB,EAAA9C,EAAA+R,EAAA4b,KACA,MAAAhtB,eACAA,EAAAitB,aACAA,GACKhuB,EAAAK,QACLutB,KACAA,EAAAC,KACAA,GACK7tB,EAAAK,OAAAstB,KAEL,IAAAM,EACAC,EACAC,EAEA,WAAAN,GAAA9sB,EAAA,GACA,MAAAqtB,EAAAjsB,KAAAC,MAAAc,GAAAnC,EAAA6sB,IACAS,EAAAnrB,EAAA0qB,EAAA7sB,EAAAqtB,EACAE,EAAA,IAAAF,EAAArtB,EAAAoB,KAAAG,IAAAH,KAAAmQ,MAAAH,EAAAic,EAAAR,EAAA7sB,GAAA6sB,GAAA7sB,GAGAktB,GADAC,EAAAG,GADAF,EAAAhsB,KAAAC,MAAAisB,EAAAC,IACAA,EAAAF,EAAArtB,GACAotB,EAAAX,EAAAI,EACAxtB,EAAAjC,IAAA,CACAowB,gBAAAN,EACAO,MAAAP,QAEK,WAAAJ,GAELM,EAAAjrB,GADAgrB,EAAA/rB,KAAAC,MAAAc,EAAA0qB,IACAA,GAEAM,EAAAR,GAAAQ,IAAAR,GAAAS,IAAAP,EAAA,KACAO,GAAA,IAEAP,IACAO,EAAA,EACAD,GAAA,IAKAA,EAAAhrB,GADAirB,EAAAhsB,KAAAC,MAAAc,EAAAuqB,IACAA,EAGArtB,EAAAjC,IAAA4vB,EAAA,kBAAAI,EAAAH,MAA8EA,MAAa,KAmC3FS,kBAhCA,CAAAC,EAAAlc,EAAAub,KACA,MAAAC,aACAA,EAAAhtB,eACAA,EAAA2tB,aACAA,GACK3uB,EAAAK,QACLutB,KACAA,GACK5tB,EAAAK,OAAAstB,KAOL,GANA3tB,EAAAsE,aAAAoqB,EAAAV,GAAAR,EACAxtB,EAAAsE,YAAAnC,KAAAmQ,KAAAtS,EAAAsE,YAAAspB,GAAAI,EACAhuB,EAAAuD,WAAApF,IAAA,CACAxD,CAAAozB,EAAA,aAAuC/tB,EAAAsE,YAAA0pB,QAGvChtB,EAAA,CACAwR,EAAAlN,OAAA,EAAAkN,EAAAjQ,QACA,MAAAqsB,EAAA,GAEA,QAAA1rB,EAAA,EAAqBA,EAAAsP,EAAAjQ,OAAqBW,GAAA,GAC1C,IAAA2rB,EAAArc,EAAAtP,GACAyrB,IAAAE,EAAA1sB,KAAAC,MAAAysB,IACArc,EAAAtP,GAAAlD,EAAAsE,YAAAkO,EAAA,IAAAoc,EAAAzrB,KAAA0rB,GAGArc,EAAArP,QAAAyrB,MC3Ge,SAASE,EAAWvtB,GACnC,MAAAvB,EAAAgU,MACAzQ,WACAA,EAAAlD,OACAA,GACGL,EAMH,GAJAK,EAAA0J,MACA/J,EAAA+uB,cAGA,iBAAAxtB,GAAA,WAAAA,EACA,QAAA2B,EAAA,EAAmBA,EAAA3B,EAAAgB,OAAmBW,GAAA,EACtC3B,EAAA2B,IAAAK,EAAA7E,OAAA6C,EAAA2B,SAGAK,EAAA7E,OAAA6C,GAGAlB,EAAA0J,MACA/J,EAAAgvB,aAGA3uB,EAAA4uB,UACAjvB,EAAAY,SCxBe,SAASsuB,EAAY3tB,GACpC,MAAAvB,EAAAgU,MACA3T,OACAA,EAAAkD,WACAA,EAAA1B,YACAA,GACG7B,EAEHK,EAAA0J,MACA/J,EAAA+uB,cAGA,IAAAtqB,EAAA5C,EAAA,EAEA,oBAAAN,GAAA,WAAAA,EAAA,CACA,QAAA2B,EAAA,EAAmBA,EAAA3B,EAAAgB,OAAmBW,GAAA,EACtC3B,EAAA2B,IAAAK,EAAA5E,QAAA4C,EAAA2B,IAGAuB,EAAA5C,EAAAN,EAAAgB,YAEAgB,EAAA5E,QAAA4C,GAGAlB,EAAA0J,MACA/J,EAAAgvB,aAGA3uB,EAAA4uB,UACAjvB,EAAAY,SAGAZ,EAAAmF,QAAAV,EAAA,MChCe,SAAA0qB,EAAA3wB,EAAA+C,GACf,MAAAvB,EAAAgU,MACAzQ,WACAA,EAAAlD,OACAA,EAAAwB,YACAA,GACG7B,EACH,IAAAovB,EAAAvtB,EAEAxB,EAAA0J,OACAqlB,GAAApvB,EAAAuS,aACAvS,EAAA+uB,cACA/uB,EAAAuB,OAAAgC,EAAAnE,aAA4CiB,EAAAM,eAG5C,MAAA0uB,EAAArvB,EAAAuB,OAAAgB,OAEA,GAAA/D,GAAA,EAEA,YADAwB,EAAAwE,aAAAjD,GAIA,GAAA/C,GAAA6wB,EAEA,YADArvB,EAAAuE,YAAAhD,GAIA,IAAAkD,EAAA2qB,EAAA5wB,EAAA4wB,EAAA,EAAAA,EACA,MAAAE,EAAA,GAEA,QAAApsB,EAAAmsB,EAAA,EAA8BnsB,GAAA1E,EAAY0E,GAAA,GAC1C,MAAAqsB,EAAAvvB,EAAAuB,OAAA9C,GAAAyE,GACAqsB,EAAAjwB,SACAgwB,EAAAzqB,QAAA0qB,GAGA,oBAAAhuB,GAAA,WAAAA,EAAA,CACA,QAAA2B,EAAA,EAAmBA,EAAA3B,EAAAgB,OAAmBW,GAAA,EACtC3B,EAAA2B,IAAAK,EAAA7E,OAAA6C,EAAA2B,IAGAuB,EAAA2qB,EAAA5wB,EAAA4wB,EAAA7tB,EAAAgB,OAAA6sB,OAEA7rB,EAAA7E,OAAA6C,GAGA,QAAA2B,EAAA,EAAiBA,EAAAosB,EAAA/sB,OAAyBW,GAAA,EAC1CK,EAAA7E,OAAA4wB,EAAApsB,IAGA7C,EAAA0J,MACA/J,EAAAgvB,aAGA3uB,EAAA4uB,UACAjvB,EAAAY,SAGAP,EAAA0J,KACA/J,EAAAmF,QAAAV,EAAAzE,EAAAuS,aAAA,MAEAvS,EAAAmF,QAAAV,EAAA,MC7De,SAAS+qB,EAAWnqB,GACnC,MAAArF,EAAAgU,MACA3T,OACAA,EAAAkD,WACAA,EAAA1B,YACAA,GACG7B,EACH,IAAAovB,EAAAvtB,EAEAxB,EAAA0J,OACAqlB,GAAApvB,EAAAuS,aACAvS,EAAA+uB,cACA/uB,EAAAuB,OAAAgC,EAAAnE,aAA4CiB,EAAAM,eAG5C,IACA8uB,EADAhrB,EAAA2qB,EAGA,oBAAA/pB,GAAA,WAAAA,EAAA,CACA,QAAAnC,EAAA,EAAmBA,EAAAmC,EAAA9C,OAA0BW,GAAA,EAC7CusB,EAAApqB,EAAAnC,GACAlD,EAAAuB,OAAAkuB,IAAAzvB,EAAAuB,OAAA9C,GAAAgxB,GAAAnwB,SACAmwB,EAAAhrB,OAAA,GAGAA,EAAAtC,KAAAE,IAAAoC,EAAA,QAEAgrB,EAAApqB,EACArF,EAAAuB,OAAAkuB,IAAAzvB,EAAAuB,OAAA9C,GAAAgxB,GAAAnwB,SACAmwB,EAAAhrB,OAAA,GACAA,EAAAtC,KAAAE,IAAAoC,EAAA,GAGApE,EAAA0J,MACA/J,EAAAgvB,aAGA3uB,EAAA4uB,UACAjvB,EAAAY,SAGAP,EAAA0J,KACA/J,EAAAmF,QAAAV,EAAAzE,EAAAuS,aAAA,MAEAvS,EAAAmF,QAAAV,EAAA,MC5Ce,SAASirB,IACxB,MAAA1vB,EAAAgU,KACA3O,EAAA,GAEA,QAAAnC,EAAA,EAAiBA,EAAAlD,EAAAuB,OAAAgB,OAA0BW,GAAA,EAC3CmC,EAAAlC,KAAAD,GAGAlD,EAAAoF,YAAAC,GCHe,SAAAsqB,EAAA7vB,GACf,IAAAE,OACAA,GACGF,EACH9F,OAAA+I,OAAA/C,EAAA,CACAuE,YAAiBuqB,EAAWc,KAAA5vB,GAC5BwE,aAAkB0qB,EAAYU,KAAA5vB,GAC9BmvB,SAAcA,EAAQS,KAAA5vB,GACtBoF,YAAiBoqB,EAAWI,KAAA5vB,GAC5BuF,gBAAqBmqB,EAAeE,KAAA5vB,KCdrB,SAAA6vB,EAAAxvB,GACf,MAAAyvB,OACAA,EAAA9vB,OACAA,EAAArC,GACAA,EAAAiP,aACAA,EAAAD,cACAA,EAAAojB,gBACAA,EAAAC,YACAA,EAAAC,gBACAA,EAAAC,gBACAA,GACG7vB,EAmCH,IAAA8vB,EAlCAxyB,EAAA,kBACA,GAAAqC,EAAAK,OAAAyvB,WAAA,OACA9vB,EAAA4D,WAAAT,QAA8BnD,EAAAK,OAAAwD,yBAAuCisB,KAErEE,QACAhwB,EAAA4D,WAAAT,QAAgCnD,EAAAK,OAAAwD,4BAGhC,MAAAusB,EAAAL,MAAA,GACA/1B,OAAA+I,OAAA/C,EAAAK,OAAA+vB,GACAp2B,OAAA+I,OAAA/C,EAAA+D,eAAAqsB,KAEAzyB,EAAA,oBACAqC,EAAAK,OAAAyvB,YACAljB,MAEAjP,EAAA,iBAAAgS,EAAAoH,KACA/W,EAAAK,OAAAyvB,YACAnjB,EAAAoK,KAEApZ,EAAA,qBACA,GAAAqC,EAAAK,OAAAyvB,YAEAG,EAAA,CACA,IAAAC,QAAAG,aAAA,OAEArwB,EAAAuB,OAAAnD,KAAAoZ,IACAxX,EAAAswB,EAAA9Y,GACArY,KAAA,gHAAAG,WAGA2wB,OAIAtyB,EAAA,qBACAqC,EAAAK,OAAAyvB,aAEA9vB,EAAAuB,OAAAgB,SACA4tB,GAAA,GAGAI,sBAAA,KACAJ,GAAAnwB,EAAAuB,QAAAvB,EAAAuB,OAAAgB,SACAqK,IACAujB,GAAA,QCzDe,SAAAK,EAAAC,EAAAjwB,GACf,OAAAiwB,EAAAC,YACAlwB,EAAArB,KAAAsxB,EAAAC,aAAAvyB,IAAA,CACAwyB,sBAAA,SACAC,8BAAA,WAIApwB,ECRe,SAAAqwB,EAAA/wB,GACf,IAAAE,OACAA,EAAA+W,SACAA,EAAA2Z,YACAA,EAAAI,UACAA,GACGhxB,EACH,MAAAyB,OACAA,EAAAM,YACAA,EAAA0B,WACAA,GACGvD,EAEH,GAAAA,EAAAK,OAAA0wB,kBAAA,IAAAha,EAAA,CACA,IACAia,EADAC,GAAA,GAIAD,EADAF,EACAJ,EAAAnvB,EAAApC,KAAAuxB,GAAAnvB,EAEAmvB,EAAAnvB,EAAA9C,GAAAoD,GAAA1C,KAAAuxB,GAAAnvB,EAAA9C,GAAAoD,IAGA/D,cAAA,KACA,GAAAmzB,EAAA,OACA,IAAAjxB,KAAAof,UAAA,OACA6R,GAAA,EACAjxB,EAAAgK,WAAA,EACA,MAAAknB,EAAA,wCAEA,QAAAhuB,EAAA,EAAqBA,EAAAguB,EAAA3uB,OAA0BW,GAAA,EAC/CK,EAAA1F,QAAAqzB,EAAAhuB,OC5Be,SAAAiuB,EAAArxB,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,GACGmC,EACHG,EAAA,CACAmxB,WAAA,CACAC,WAAA,EACAX,YAAA,QA4CEb,EAAU,CACZC,OAAA,OACA9vB,SACArC,KACAiP,aA5CA,KACA,MAAArL,OACAA,GACKvB,EACLK,EAAAL,EAAAK,OAAA+wB,WAEA,QAAAluB,EAAA,EAAmBA,EAAA3B,EAAAgB,OAAmBW,GAAA,GACtC,MAAA1C,EAAAR,EAAAuB,OAAA9C,GAAAyE,GAEA,IAAAouB,GADA9wB,EAAA,GAAA+wB,kBAEAvxB,EAAAK,OAAA0wB,mBAAAO,GAAAtxB,EAAA8hB,WACA,IAAA0P,EAAA,EAEAxxB,EAAAkC,iBACAsvB,EAAAF,EACAA,EAAA,GAGA,MAAAG,EAAAzxB,EAAAK,OAAA+wB,WAAAC,UAAAlvB,KAAAE,IAAA,EAAAF,KAAAyJ,IAAApL,EAAA,GAAAiU,UAAA,KAAAtS,KAAAG,IAAAH,KAAAE,IAAA7B,EAAA,GAAAiU,UAAA,MACwB+b,EAAYnwB,EAAAG,GACpCrC,IAAA,CACA2W,QAAA2c,IACOh0B,yBAA2B6zB,QAASE,eAuB3C7kB,cAnBAoK,IACA,MAAA2Z,YACAA,GACK1wB,EAAAK,OAAA+wB,YACLV,EAAA1wB,EAAAuB,OAAApC,KAAAuxB,GAAA1wB,EAAAuB,QACA7D,WAAAqZ,GACI8Z,EAA0B,CAC9B7wB,SACA+W,WACA2Z,cACAI,WAAA,KAUAf,gBAAA,MACAjvB,cAAA,EACAC,eAAA,EACA+C,qBAAA,EACAkqB,aAAA,EACA+C,kBAAA/wB,EAAAK,OAAAsB,YCjEe,SAAA+vB,EAAA5xB,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,GACGmC,EACHG,EAAA,CACA0xB,WAAA,CACAtB,cAAA,EACAuB,QAAA,EACAC,aAAA,GACAC,YAAA,OAIA,MAAAC,EAAA,CAAAvxB,EAAAiU,EAAAvS,KACA,IAAA8vB,EAAA9vB,EAAA1B,EAAArB,KAAA,6BAAAqB,EAAArB,KAAA,4BACA8yB,EAAA/vB,EAAA1B,EAAArB,KAAA,8BAAAqB,EAAArB,KAAA,+BAEA,IAAA6yB,EAAAzvB,SACAyvB,EAAqBh4B,OAAAyG,EAAA,EAAAzG,oCAAqCkI,EAAA,wBAC1D1B,EAAA9B,OAAAszB,IAGA,IAAAC,EAAA1vB,SACA0vB,EAAoBj4B,OAAAyG,EAAA,EAAAzG,oCAAqCkI,EAAA,4BACzD1B,EAAA9B,OAAAuzB,IAGAD,EAAAzvB,SAAAyvB,EAAA,GAAA53B,MAAA0a,QAAA3S,KAAAE,KAAAoS,EAAA,IACAwd,EAAA1vB,SAAA0vB,EAAA,GAAA73B,MAAA0a,QAAA3S,KAAAE,IAAAoS,EAAA,KAgJEob,EAAU,CACZC,OAAA,OACA9vB,SACArC,KACAiP,aAxIA,KACA,MAAAxF,IACAA,EAAA7D,WACAA,EAAAhC,OACAA,EACAzF,MAAAwL,EACAtL,OAAAwL,EACAvF,aAAA2D,EACAsP,KAAAgd,EAAAv1B,QACAA,GACKqD,EACLK,EAAAL,EAAAK,OAAAsxB,WACAzvB,EAAAlC,EAAAkC,eACA0d,EAAA5f,EAAAM,SAAAN,EAAAK,OAAAC,QAAAuC,QACA,IACAsvB,EADAC,EAAA,EAGA/xB,EAAAuxB,SACA1vB,GAGA,KAFAiwB,EAAA5uB,EAAApE,KAAA,wBAEAoD,SACA4vB,EAA0Bn4B,OAAAyG,EAAA,EAAAzG,CAAC,0CAC3BuJ,EAAA7E,OAAAyzB,IAGAA,EAAAh0B,IAAA,CACAnC,UAAqBsL,SAKrB,KAFA6qB,EAAA/qB,EAAAjI,KAAA,wBAEAoD,SACA4vB,EAA0Bn4B,OAAAyG,EAAA,EAAAzG,CAAC,0CAC3BoN,EAAA1I,OAAAyzB,KAKA,QAAAjvB,EAAA,EAAmBA,EAAA3B,EAAAgB,OAAmBW,GAAA,GACtC,MAAA1C,EAAAe,EAAA9C,GAAAyE,GACA,IAAAuU,EAAAvU,EAEA0c,IACAnI,EAAAvS,SAAA1E,EAAAjD,KAAA,gCAGA,IAAA80B,EAAA,GAAA5a,EACAgO,EAAAtjB,KAAAC,MAAAiwB,EAAA,KAEAzsB,IACAysB,KACA5M,EAAAtjB,KAAAC,OAAAiwB,EAAA,MAGA,MAAA5d,EAAAtS,KAAAE,IAAAF,KAAAG,IAAA9B,EAAA,GAAAiU,SAAA,OACA,IAAA6c,EAAA,EACAE,EAAA,EACAc,EAAA,EAEA7a,EAAA,MACA6Z,EAAA,GAAA7L,EAAAyM,EACAI,EAAA,IACO7a,EAAA,SACP6Z,EAAA,EACAgB,EAAA,GAAA7M,EAAAyM,IACOza,EAAA,SACP6Z,EAAAY,EAAA,EAAAzM,EAAAyM,EACAI,EAAAJ,IACOza,EAAA,UACP6Z,GAAAY,EACAI,EAAA,EAAAJ,EAAA,EAAAA,EAAAzM,GAGA7f,IACA0rB,MAGApvB,IACAsvB,EAAAF,EACAA,EAAA,GAGA,MAAA7zB,aAAmCyE,EAAA,GAAAmwB,iBAA8CnwB,EAAAmwB,EAAA,qBAAiDf,QAASE,QAASc,OAEpJ7d,GAAA,GAAAA,GAAA,IACA2d,EAAA,GAAA3a,EAAA,GAAAhD,EACA7O,IAAAwsB,EAAA,IAAA3a,EAAA,GAAAhD,IAGAjU,EAAA/C,aAEA4C,EAAAgwB,cACA0B,EAAAvxB,EAAAiU,EAAAvS,GASA,GALAqB,EAAApF,IAAA,CACAo0B,uCAA8CL,EAAA,MAC9CM,+BAAsCN,EAAA,QAGtC7xB,EAAAuxB,OACA,GAAA1vB,EACAiwB,EAAA10B,8BAAoD6J,EAAA,EAAAjH,EAAAwxB,oBAA4CvqB,EAAA,2CAA0DjH,EAAAyxB,oBACnJ,CACP,MAAAW,EAAAtwB,KAAAyJ,IAAAwmB,GAAA,GAAAjwB,KAAAC,MAAAD,KAAAyJ,IAAAwmB,GAAA,IACAlQ,EAAA,KAAA/f,KAAAuwB,IAAA,EAAAD,EAAAtwB,KAAAwwB,GAAA,OAAAxwB,KAAAywB,IAAA,EAAAH,EAAAtwB,KAAAwwB,GAAA,QACAE,EAAAxyB,EAAAyxB,YACAgB,EAAAzyB,EAAAyxB,YAAA5P,EACAhkB,EAAAmC,EAAAwxB,aACAM,EAAA10B,qBAA2Co1B,SAAcC,uBAA4BtrB,EAAA,EAAAtJ,SAAgCsJ,EAAA,EAAAsrB,wBAIrH,MAAAC,EAAAp2B,EAAAC,UAAAD,EAAAG,WAAAo1B,EAAA,IACA3uB,EAAA9F,+BAA8Cs1B,gBAAsB/yB,EAAAkC,eAAA,EAAAkwB,iBAAyDpyB,EAAAkC,gBAAAkwB,EAAA,SAC7H7uB,EAAA,GAAAnJ,MAAA44B,YAAA,+BAAoED,QAoBpEpmB,cAjBAoK,IACA,MAAA3P,IACAA,EAAA7F,OACAA,GACKvB,EACLuB,EAAA7D,WAAAqZ,GAAA5X,KAAA,gHAAAzB,WAAAqZ,GAEA/W,EAAAK,OAAAsxB,WAAAC,SAAA5xB,EAAAkC,gBACAkF,EAAAjI,KAAA,uBAAAzB,WAAAqZ,IAUAkZ,gBAnJA,KAEA,MAAA/tB,EAAAlC,EAAAkC,eACAlC,EAAAuB,OAAAnD,KAAAoZ,IACA,MAAA/C,EAAAtS,KAAAE,IAAAF,KAAAG,IAAAkV,EAAA/C,SAAA,OACAsd,EAAyB/3B,OAAAyG,EAAA,EAAAzG,CAACwd,GAAA/C,EAAAvS,MA+I1BguB,gBAAA,IAAAlwB,EAAAK,OAAAsxB,WACA3B,YAAA,OACAD,gBAAA,MACAjvB,cAAA,EACAC,eAAA,EACA+C,qBAAA,EACAgd,gBAAA,EACAkN,aAAA,EACAhtB,gBAAA,EACA+vB,kBAAA,MC/Le,SAAAkC,EAAA5yB,EAAAG,EAAA0yB,GACf,MAAAC,wBAA4CD,MAAWA,IAAK,KAC5DE,EAAA/yB,EAAAqwB,YAAAlwB,EAAArB,KAAAkB,EAAAqwB,aAAAlwB,EACA,IAAA6yB,EAAAD,EAAAh0B,aAAgD+zB,KAOhD,OALAE,EAAA9wB,SACA8wB,EAAgBr5B,OAAAyG,EAAA,EAAAzG,mCAAoCk5B,MAAWA,IAAK,cACpEE,EAAA10B,OAAA20B,IAGAA,ECNe,SAAAC,EAAAxzB,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,GACGmC,EACHG,EAAA,CACAszB,WAAA,CACAlD,cAAA,EACAmD,eAAA,EACA9C,YAAA,QAIA,MAAAqB,EAAA,CAAAvxB,EAAAiU,EAAApU,KACA,IAAA2xB,EAAAhyB,EAAAkC,eAAA1B,EAAArB,KAAA,6BAAAqB,EAAArB,KAAA,4BACA8yB,EAAAjyB,EAAAkC,eAAA1B,EAAArB,KAAA,8BAAAqB,EAAArB,KAAA,+BAEA,IAAA6yB,EAAAzvB,SACAyvB,EAAqBiB,EAAY5yB,EAAAG,EAAAR,EAAAkC,eAAA,eAGjC,IAAA+vB,EAAA1vB,SACA0vB,EAAoBgB,EAAY5yB,EAAAG,EAAAR,EAAAkC,eAAA,mBAGhC8vB,EAAAzvB,SAAAyvB,EAAA,GAAA53B,MAAA0a,QAAA3S,KAAAE,KAAAoS,EAAA,IACAwd,EAAA1vB,SAAA0vB,EAAA,GAAA73B,MAAA0a,QAAA3S,KAAAE,IAAAoS,EAAA,KA0EEob,EAAU,CACZC,OAAA,OACA9vB,SACArC,KACAiP,aA5DA,KACA,MAAArL,OACAA,EACAU,aAAA2D,GACK5F,EACLK,EAAAL,EAAAK,OAAAkzB,WAEA,QAAArwB,EAAA,EAAmBA,EAAA3B,EAAAgB,OAAmBW,GAAA,GACtC,MAAA1C,EAAAe,EAAA9C,GAAAyE,GACA,IAAAuR,EAAAjU,EAAA,GAAAiU,SAEAzU,EAAAK,OAAAkzB,WAAAC,gBACA/e,EAAAtS,KAAAE,IAAAF,KAAAG,IAAA9B,EAAA,GAAAiU,SAAA,QAGA,MAAAvW,EAAAsC,EAAA,GAAA+wB,kBAEA,IAAAkC,GADA,IAAAhf,EAEAif,EAAA,EACApC,EAAAtxB,EAAAK,OAAAsB,SAAAzD,EAAA8B,EAAA8hB,WAAA5jB,EACAszB,EAAA,EAEAxxB,EAAAkC,eAKO0D,IACP6tB,OALAjC,EAAAF,EACAA,EAAA,EACAoC,GAAAD,EACAA,EAAA,GAKAjzB,EAAA,GAAApG,MAAAu5B,QAAAxxB,KAAAyJ,IAAAzJ,KAAAsjB,MAAAhR,IAAAlT,EAAAgB,OAEAlC,EAAAgwB,cACA0B,EAAAvxB,EAAAiU,EAAApU,GAGA,MAAA5C,iBAAuC6zB,QAASE,qBAAsBkC,iBAAuBD,QACrEjD,EAAYnwB,EAAAG,GACpC/C,eAsBAkP,cAlBAoK,IACA,MAAA2Z,YACAA,GACK1wB,EAAAK,OAAAkzB,YACL7C,EAAA1wB,EAAAuB,OAAApC,KAAAuxB,GAAA1wB,EAAAuB,QACA7D,WAAAqZ,GAAA5X,KAAA,gHAAAzB,WAAAqZ,GACI8Z,EAA0B,CAC9B7wB,SACA+W,WACA2Z,iBAUAT,gBA7EA,KAEA,MAAA5vB,EAAAL,EAAAK,OAAAkzB,WACAvzB,EAAAuB,OAAAnD,KAAAoZ,IACA,MAAAhX,EAAuBxG,OAAAyG,EAAA,EAAAzG,CAACwd,GACxB,IAAA/C,EAAAjU,EAAA,GAAAiU,SAEAzU,EAAAK,OAAAkzB,WAAAC,gBACA/e,EAAAtS,KAAAE,IAAAF,KAAAG,IAAAkV,EAAA/C,SAAA,QAGAsd,EAAAvxB,EAAAiU,EAAApU,MAmEA6vB,gBAAA,IAAAlwB,EAAAK,OAAAkzB,WACAvD,YAAA,OACAD,gBAAA,MACAjvB,cAAA,EACAC,eAAA,EACA+C,qBAAA,EACAkqB,aAAA,EACA+C,kBAAA/wB,EAAAK,OAAAsB,YCrHe,SAAAiyB,EAAA9zB,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,GACGmC,EACHG,EAAA,CACA4zB,gBAAA,CACAC,OAAA,GACAC,QAAA,EACAC,MAAA,IACAtgB,MAAA,EACAugB,SAAA,EACA5D,cAAA,EACAK,YAAA,QA4EEb,EAAU,CACZC,OAAA,YACA9vB,SACArC,KACAiP,aA5EA,KACA,MACA9Q,MAAAwL,EACAtL,OAAAwL,EAAAjG,OACAA,EAAA8rB,gBACAA,GACKrtB,EACLK,EAAAL,EAAAK,OAAAwzB,gBACA3xB,EAAAlC,EAAAkC,eACAzE,EAAAuC,EAAA8hB,UACAoS,EAAAhyB,EAAAoF,EAAA,EAAA7J,EAAA+J,EAAA,EAAA/J,EACAq2B,EAAA5xB,EAAA7B,EAAAyzB,QAAAzzB,EAAAyzB,OACAhS,EAAAzhB,EAAA2zB,MAEA,QAAA9wB,EAAA,EAAAX,EAAAhB,EAAAgB,OAA2CW,EAAAX,EAAYW,GAAA,GACvD,MAAA1C,EAAAe,EAAA9C,GAAAyE,GACAwrB,EAAArB,EAAAnqB,GAEAixB,GAAAD,EADA1zB,EAAA,GAAA+wB,kBACA7C,EAAA,GAAAA,EACA0F,EAAA,mBAAA/zB,EAAA4zB,SAAA5zB,EAAA4zB,SAAAE,KAAA9zB,EAAA4zB,SACA,IAAAR,EAAAvxB,EAAA4xB,EAAAM,EAAA,EACAV,EAAAxxB,EAAA,EAAA4xB,EAAAM,EAEAC,GAAAvS,EAAA3f,KAAAyJ,IAAAwoB,GACAL,EAAA1zB,EAAA0zB,QAEA,iBAAAA,IAAA,IAAAA,EAAAx3B,QAAA,OACAw3B,EAAAO,WAAAj0B,EAAA0zB,SAAA,IAAArF,GAGA,IAAA9S,EAAA1Z,EAAA,EAAA6xB,EAAAK,EACAzY,EAAAzZ,EAAA6xB,EAAAK,EAAA,EACA1gB,EAAA,KAAArT,EAAAqT,OAAAvR,KAAAyJ,IAAAwoB,GAEAjyB,KAAAyJ,IAAA+P,GAAA,OAAAA,EAAA,GACAxZ,KAAAyJ,IAAAgQ,GAAA,OAAAA,EAAA,GACAzZ,KAAAyJ,IAAAyoB,GAAA,OAAAA,EAAA,GACAlyB,KAAAyJ,IAAA6nB,GAAA,OAAAA,EAAA,GACAtxB,KAAAyJ,IAAA8nB,GAAA,OAAAA,EAAA,GACAvxB,KAAAyJ,IAAA8H,GAAA,OAAAA,EAAA,GACA,MAAA6gB,iBAA4C5Y,OAAgBC,OAAgByY,iBAA0BX,iBAAuBD,eAAqB/f,KAKlJ,GAJwB8c,EAAYnwB,EAAAG,GACpC/C,UAAA82B,GACA/zB,EAAA,GAAApG,MAAAu5B,OAAA,EAAAxxB,KAAAyJ,IAAAzJ,KAAAsjB,MAAA2O,IAEA/zB,EAAAgwB,aAAA,CAEA,IAAAmE,EAAAtyB,EAAA1B,EAAArB,KAAA,6BAAAqB,EAAArB,KAAA,4BACAs1B,EAAAvyB,EAAA1B,EAAArB,KAAA,8BAAAqB,EAAArB,KAAA,+BAEA,IAAAq1B,EAAAjyB,SACAiyB,EAA4BvB,EAAY5yB,EAAAG,EAAA0B,EAAA,eAGxC,IAAAuyB,EAAAlyB,SACAkyB,EAA2BxB,EAAY5yB,EAAAG,EAAA0B,EAAA,mBAGvCsyB,EAAAjyB,SAAAiyB,EAAA,GAAAp6B,MAAA0a,QAAAsf,EAAA,EAAAA,EAAA,GACAK,EAAAlyB,SAAAkyB,EAAA,GAAAr6B,MAAA0a,SAAAsf,EAAA,GAAAA,EAAA,MAkBAznB,cAbAoK,IACA,MAAA2Z,YACAA,GACK1wB,EAAAK,OAAAwzB,iBACLnD,EAAA1wB,EAAAuB,OAAApC,KAAAuxB,GAAA1wB,EAAAuB,QACA7D,WAAAqZ,GAAA5X,KAAA,gHAAAzB,WAAAqZ,IASAiZ,YAAA,OACAD,gBAAA,MACAjsB,qBAAA,MCjGe,SAAA4wB,EAAA50B,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,GACGmC,EACHG,EAAA,CACA00B,eAAA,CACAjE,YAAA,KACAkE,cAAA,EACAC,mBAAA,EACAC,mBAAA,EACA9E,aAAA,EACAlxB,KAAA,CACAgjB,UAAA,QACAgS,OAAA,QACAhf,QAAA,EACApB,MAAA,GAEA9U,KAAA,CACAkjB,UAAA,QACAgS,OAAA,QACAhf,QAAA,EACApB,MAAA,MAKA,MAAAqhB,EAAAp1B,GACA,iBAAAA,OACcA,MA4GZkwB,EAAU,CACZC,OAAA,WACA9vB,SACArC,KACAiP,aA7GA,KACA,MAAArL,OACAA,EAAAgC,WACAA,EAAA8pB,gBACAA,GACKrtB,EACLK,EAAAL,EAAAK,OAAAs0B,gBAEAG,mBAAA5S,GACK7hB,EACL20B,EAAAh1B,EAAAK,OAAAW,eAEA,GAAAg0B,EAAA,CACA,MAAAC,EAAA5H,EAAA,KAAArtB,EAAAK,OAAA8U,oBAAA,EACA5R,EAAA9F,mCAAoDw3B,SAGpD,QAAA/xB,EAAA,EAAmBA,EAAA3B,EAAAgB,OAAmBW,GAAA,GACtC,MAAA1C,EAAAe,EAAA9C,GAAAyE,GACAwU,EAAAlX,EAAA,GAAAiU,SACAA,EAAAtS,KAAAG,IAAAH,KAAAE,IAAA7B,EAAA,GAAAiU,UAAApU,EAAAu0B,eAAAv0B,EAAAu0B,eACA,IAAAM,EAAAzgB,EAEAugB,IACAE,EAAA/yB,KAAAG,IAAAH,KAAAE,IAAA7B,EAAA,GAAA00B,kBAAA70B,EAAAu0B,eAAAv0B,EAAAu0B,gBAGA,MAAA12B,EAAAsC,EAAA,GAAA+wB,kBACA4D,EAAA,CAAAn1B,EAAAK,OAAAsB,SAAAzD,EAAA8B,EAAA8hB,WAAA5jB,EAAA,KACAk3B,EAAA,QACA,IAAAC,GAAA,EAEAr1B,EAAAkC,iBACAizB,EAAA,GAAAA,EAAA,GACAA,EAAA,MAGA,IAAA1qB,EAAA,CACAqX,UAAA,QACAgS,OAAA,QACApgB,MAAA,EACAoB,QAAA,GAGAL,EAAA,GACAhK,EAAApK,EAAAzB,KACAy2B,GAAA,GACO5gB,EAAA,IACPhK,EAAApK,EAAAvB,KACAu2B,GAAA,GAIAF,EAAA31B,QAAA,CAAAG,EAAAnB,KACA22B,EAAA32B,WAA2BmB,UAAco1B,EAAAtqB,EAAAqX,UAAAtjB,SAA8C2D,KAAAyJ,IAAA6I,EAAAyN,SAGvFkT,EAAA51B,QAAA,CAAAG,EAAAnB,KACA42B,EAAA52B,GAAAiM,EAAAqpB,OAAAt1B,GAAA2D,KAAAyJ,IAAA6I,EAAAyN,KAEA1hB,EAAA,GAAApG,MAAAu5B,QAAAxxB,KAAAyJ,IAAAzJ,KAAAsjB,MAAA/N,IAAAnW,EAAAgB,OACA,MAAA+yB,EAAAH,EAAAliB,KAAA,MACAsiB,aAAsCH,EAAA,kBAAoBA,EAAA,kBAAoBA,EAAA,SAC9EI,EAAAN,EAAA,WAA0D,KAAAzqB,EAAAiJ,OAAAwhB,EAAAhT,cAAmE,KAAAzX,EAAAiJ,OAAAwhB,EAAAhT,KAC7HuT,EAAAP,EAAA,OAAAzqB,EAAAqK,SAAAogB,EAAAhT,EAAA,KAAAzX,EAAAqK,SAAAogB,EAAAhT,EACAzkB,iBAAuC63B,MAAoBC,KAAgBC,IAE3E,GAAAH,GAAA5qB,EAAAmnB,SAAAyD,EAAA,CACA,IAAAhC,EAAA7yB,EAAApB,SAAA,wBAMA,GAJA,IAAAi0B,EAAA9wB,QAAAkI,EAAAmnB,SACAyB,EAAsBJ,EAAY5yB,EAAAG,IAGlC6yB,EAAA9wB,OAAA,CACA,MAAAmzB,EAAAr1B,EAAAw0B,kBAAApgB,GAAA,EAAApU,EAAAu0B,eAAAngB,EACA4e,EAAA,GAAAj5B,MAAA0a,QAAA3S,KAAAG,IAAAH,KAAAE,IAAAF,KAAAyJ,IAAA8pB,GAAA,OAIA,MAAAlR,EAAwBgM,EAAYnwB,EAAAG,GACpCgkB,EAAA/mB,aAAAU,IAAA,CACA2W,QAAA2gB,IAGAhrB,EAAAkrB,QACAnR,EAAArmB,IAAA,mBAAAsM,EAAAkrB,UAwBAhpB,cAnBAoK,IACA,MAAA2Z,YACAA,GACK1wB,EAAAK,OAAAs0B,gBACLjE,EAAA1wB,EAAAuB,OAAApC,KAAAuxB,GAAA1wB,EAAAuB,QACA7D,WAAAqZ,GAAA5X,KAAA,wBAAAzB,WAAAqZ,GACI8Z,EAA0B,CAC9B7wB,SACA+W,WACA2Z,cACAI,WAAA,KAUAd,YAAA,IAAAhwB,EAAAK,OAAAs0B,eAAA3E,YACAD,gBAAA,MACAjsB,qBAAA,EACAitB,kBAAA/wB,EAAAK,OAAAsB,YCnJe,SAAAi0B,EAAA91B,GACf,IAAAE,OACAA,EAAAC,aACAA,EAAAtC,GACAA,GACGmC,EACHG,EAAA,CACA41B,YAAA,CACAxF,cAAA,EACAK,YAAA,KACAoD,QAAA,KAqGEjE,EAAU,CACZC,OAAA,QACA9vB,SACArC,KACAiP,aArGA,KACA,MAAArL,OACAA,EAAAM,YACAA,GACK7B,EACLK,EAAAL,EAAAK,OAAAw1B,aACAC,eACAA,EAAAxhB,UACAA,GACKtU,EAAA+rB,gBACLgK,EAAA/1B,EAAA8hB,UAEA,QAAA5e,EAAA,EAAmBA,EAAA3B,EAAAgB,OAAmBW,GAAA,GACtC,MAAA1C,EAAAe,EAAA9C,GAAAyE,GACAwU,EAAAlX,EAAA,GAAAiU,SACAA,EAAAtS,KAAAG,IAAAH,KAAAE,IAAAqV,GAAA,MACA,IAAAxZ,EAAAsC,EAAA,GAAA+wB,kBAEAvxB,EAAAK,OAAAW,iBAAAhB,EAAAK,OAAAsB,SACA3B,EAAAuD,WAAA9F,wBAAkDuC,EAAA+L,qBAGlD/L,EAAAK,OAAAW,gBAAAhB,EAAAK,OAAAsB,UACAzD,GAAAqD,EAAA,GAAAgwB,mBAGA,IAAAyE,EAAAh2B,EAAAK,OAAAsB,SAAAzD,EAAA8B,EAAA8hB,WAAA5jB,EACA+3B,EAAA,EACA,MAAAC,GAAA,IAAA/zB,KAAAyJ,IAAA6I,GACA,IAAAf,EAAA,EACAogB,GAAA,EAAArf,EACA0hB,EAAA,MAAAh0B,KAAAyJ,IAAA6I,GACA,MAAAgD,EAAAzX,EAAAM,SAAAN,EAAAK,OAAAC,QAAAuC,QAAA7C,EAAAM,QAAAa,KAAA+B,IACAkzB,GAAA3e,IAAA5V,GAAA4V,IAAA5V,EAAA,IAAA4S,EAAA,GAAAA,EAAA,IAAAH,GAAAtU,EAAAK,OAAAsB,UAAAo0B,EAAAD,EACAO,GAAA5e,IAAA5V,GAAA4V,IAAA5V,EAAA,IAAA4S,EAAA,GAAAA,GAAA,IAAAH,GAAAtU,EAAAK,OAAAsB,UAAAo0B,EAAAD,EAEA,GAAAM,GAAAC,EAAA,CACA,MAAAC,GAAA,EAAAn0B,KAAAyJ,KAAAzJ,KAAAyJ,IAAA6I,GAAA,aACAqf,IAAA,GAAArf,EAAA6hB,EACA5iB,IAAA,GAAA4iB,EACAH,GAAA,GAAAG,EACAL,MAAgB,GAAAK,EAAAn0B,KAAAyJ,IAAA6I,MAahB,GARAuhB,EAFAvhB,EAAA,UAEqBuhB,UAAWG,EAAAh0B,KAAAyJ,IAAA6I,QACzBA,EAAA,UAEcuhB,WAAYG,EAAAh0B,KAAAyJ,IAAA6I,WAEjBuhB,OAGhBh2B,EAAAkC,eAAA,CACA,MAAAq0B,EAAAN,EACAA,EAAAD,EACAA,EAAAO,EAGA,MAAAf,EAAA/gB,EAAA,KAA4C,KAAAf,GAAAe,OAAkC,KAAAf,GAAAe,IAC9EhX,2BACsBu4B,MAAOC,MAAOC,yBAClB71B,EAAAyzB,SAAA,wBACF0B,aAGhB,GAAAn1B,EAAAgwB,aAAA,CAEA,IAAAgD,EAAA7yB,EAAArB,KAAA,wBAEA,IAAAk0B,EAAA9wB,SACA8wB,EAAsBJ,EAAY5yB,EAAAG,IAGlC6yB,EAAA9wB,SAAA8wB,EAAA,GAAAj5B,MAAA0a,QAAA3S,KAAAG,IAAAH,KAAAE,KAAAF,KAAAyJ,IAAA6I,GAAA,cAGAjU,EAAA,GAAApG,MAAAu5B,QAAAxxB,KAAAyJ,IAAAzJ,KAAAsjB,MAAA/N,IAAAnW,EAAAgB,OACwBiuB,EAAYnwB,EAAAG,GACpC/C,eAsBAkP,cAlBAoK,IACA,MAAA2Z,YACAA,GACK1wB,EAAAK,OAAAw1B,aACLnF,EAAA1wB,EAAAuB,OAAApC,KAAAuxB,GAAA1wB,EAAAuB,QACA7D,WAAAqZ,GAAA5X,KAAA,wBAAAzB,WAAAqZ,GACI8Z,EAA0B,CAC9B7wB,SACA+W,WACA2Z,iBAUAV,YAAA,OACAD,gBAAA,MACAjsB,qBAAA,EACAitB,kBAAA/wB,EAAAK,OAAAsB,YC5HAlI,EAAAC,EAAAC,EAAA,2BAAA68B,EAAA,IAAA/8B,EAAAC,EAAAC,EAAA,4BAAA68B,EAAA,IAAA/8B,EAAAC,EAAAC,EAAA,4BAAAkG,IAAApG,EAAAC,EAAAC,EAAA,6BAAA6L,IAAA/L,EAAAC,EAAAC,EAAA,+BAAA+O,IAAAjP,EAAAC,EAAAC,EAAA,+BAAAwU,IAAA1U,EAAAC,EAAAC,EAAA,+BAAAyW,IAAA3W,EAAAC,EAAAC,EAAA,8BAAAsa,IAAAxa,EAAAC,EAAAC,EAAA,6BAAAqd,IAAAvd,EAAAC,EAAAC,EAAA,yBAAAoe,IAAAte,EAAAC,EAAAC,EAAA,yBAAAokB,IAAAtkB,EAAAC,EAAAC,EAAA,+BAAAonB,IAAAtnB,EAAAC,EAAAC,EAAA,yBAAAgpB,IAAAlpB,EAAAC,EAAAC,EAAA,4BAAAwsB,IAAA1sB,EAAAC,EAAAC,EAAA,mCAAAouB,IAAAtuB,EAAAC,EAAAC,EAAA,6BAAA2uB,IAAA7uB,EAAAC,EAAAC,EAAA,2BAAA6vB,IAAA/vB,EAAAC,EAAAC,EAAA,6BAAAwS,IAAA1S,EAAAC,EAAAC,EAAA,yBAAA4zB,IAAA9zB,EAAAC,EAAAC,EAAA,iCAAAg2B,IAAAl2B,EAAAC,EAAAC,EAAA,+BAAAw3B,IAAA13B,EAAAC,EAAAC,EAAA,+BAAA+3B,IAAAj4B,EAAAC,EAAAC,EAAA,+BAAA25B,IAAA75B,EAAAC,EAAAC,EAAA,oCAAAi6B,IAAAn6B,EAAAC,EAAAC,EAAA,mCAAA+6B,IAAAj7B,EAAAC,EAAAC,EAAA,gCAAAi8B,oCCAAn8B,EAAAC,EAAAC,EAAA,sBAAA88B,IAAAh9B,EAAAC,EAAAC,EAAA,sBAAA+8B,IAAAj9B,EAAAC,EAAAC,EAAA,sBAAAg9B,IAAAl9B,EAAAC,EAAAC,EAAA,sBAAAuhB,IAAAzhB,EAAAC,EAAAC,EAAA,sBAAAmS,IAAArS,EAAAC,EAAAC,EAAA,sBAAAi9B,IAAAn9B,EAAAC,EAAAC,EAAA,sBAAAk9B,IAAAp9B,EAAAC,EAAAC,EAAA,sBAAAm9B,IAAA,IAAAj9B,EAAAJ,EAAA,GAEA,SAAAi9B,EAAAK,GACA,MAAAC,EAAAD,EACA/8B,OAAAuF,KAAAy3B,GAAAx3B,QAAAsO,IACA,IACAkpB,EAAAlpB,GAAA,KACK,MAAAjT,IAGL,WACAm8B,EAAAlpB,GACK,MAAAjT,OAKL,SAAA87B,EAAAM,EAAAxO,GAKA,YAJA,IAAAA,IACAA,EAAA,GAGAtkB,WAAA8yB,EAAAxO,GAGA,SAAAvN,IACA,OAAA/Q,KAAA+Q,MAsBA,SAAApP,EAAAuC,EAAAnD,QACA,IAAAA,IACAA,EAAA,KAGA,MAAAnR,EAAiBC,OAAAH,EAAA,EAAAG,GACjB,IAAAk9B,EACAC,EACAC,EACA,MAAAC,EA5BA,SAAAhpB,GACA,MAAAtU,EAAiBC,OAAAH,EAAA,EAAAG,GACjB,IAAAI,EAcA,OAZAL,EAAAu9B,mBACAl9B,EAAAL,EAAAu9B,iBAAAjpB,EAAA,QAGAjU,GAAAiU,EAAAkpB,eACAn9B,EAAAiU,EAAAkpB,cAGAn9B,IACAA,EAAAiU,EAAAjU,OAGAA,EAYAk9B,CAAAjpB,GA+BA,OA7BAtU,EAAAy9B,kBACAL,EAAAE,EAAA55B,WAAA45B,EAAAI,iBAEAvQ,MAAA,KAAA3kB,OAAA,IACA40B,IAAAjQ,MAAA,MAAAnU,IAAAtP,KAAA0M,QAAA,UAAA8C,KAAA,OAKAmkB,EAAA,IAAAr9B,EAAAy9B,gBAAA,SAAAL,EAAA,GAAAA,IAGAD,GADAE,EAAAC,EAAAK,cAAAL,EAAAM,YAAAN,EAAAO,aAAAP,EAAAQ,aAAAR,EAAA55B,WAAA45B,EAAAS,iBAAA,aAAA3nB,QAAA,oCACAwV,WAAAuB,MAAA,KAGA,MAAAhc,IAEAisB,EAAAp9B,EAAAy9B,gBAAAJ,EAAAW,IACA,KAAAb,EAAA30B,OAAA+xB,WAAA4C,EAAA,KACA5C,WAAA4C,EAAA,KAGA,MAAAhsB,IAEAisB,EAAAp9B,EAAAy9B,gBAAAJ,EAAAY,IACA,KAAAd,EAAA30B,OAAA+xB,WAAA4C,EAAA,KACA5C,WAAA4C,EAAA,KAGAC,GAAA,EAGA,SAAAP,EAAAqB,GACA,uBAAAA,GAAA,OAAAA,KAAA5V,aAAA,WAAAroB,OAAAk+B,UAAAvS,SAAAjlB,KAAAu3B,GAAAhR,MAAA,MAYA,SAAA4P,IACA,MAAAx1B,EAAArH,OAAAm+B,UAAA51B,QAAA,OAAAoB,EAAAw0B,UAAA,IACAC,EAAA,wCAEA,QAAAl1B,EAAA,EAAiBA,EAAAi1B,UAAA51B,OAAsBW,GAAA,GACvC,MAAAm1B,EAAAn1B,EAAA,GAAAi1B,UAAA51B,QAAAW,OAAAS,EAAAw0B,UAAAj1B,GAEA,GAAAm1B,UAhBAC,EAgBAD,IAdA,oBAAAt+B,aAAA,IAAAA,OAAAw+B,YACAD,aAAAC,YAGAD,IAAA,IAAAA,EAAAE,UAAA,KAAAF,EAAAE,YAUA,CACA,MAAAC,EAAAz+B,OAAAuF,KAAAvF,OAAAq+B,IAAAh5B,OAAAyO,GAAAsqB,EAAA77B,QAAAuR,GAAA,GAEA,QAAA0c,EAAA,EAAAkO,EAAAD,EAAAl2B,OAAqDioB,EAAAkO,EAAiBlO,GAAA,GACtE,MAAAmO,EAAAF,EAAAjO,GACAoO,EAAA5+B,OAAA6+B,yBAAAR,EAAAM,QAEAh1B,IAAAi1B,KAAAE,aACAlC,EAAAv1B,EAAAs3B,KAAA/B,EAAAyB,EAAAM,IACAN,EAAAM,GAAAI,WACA13B,EAAAs3B,GAAAN,EAAAM,GAEA9B,EAAAx1B,EAAAs3B,GAAAN,EAAAM,KAEW/B,EAAAv1B,EAAAs3B,KAAA/B,EAAAyB,EAAAM,KACXt3B,EAAAs3B,GAAA,GAEAN,EAAAM,GAAAI,WACA13B,EAAAs3B,GAAAN,EAAAM,GAEA9B,EAAAx1B,EAAAs3B,GAAAN,EAAAM,KAGAt3B,EAAAs3B,GAAAN,EAAAM,MAvCA,IAAAL,EA8CA,OAAAj3B,EAGA,SAAAy1B,EAAAzoB,EAAA2qB,EAAAC,GACA5qB,EAAAjU,MAAA44B,YAAAgG,EAAAC,GAGA,SAAAxC,EAAA32B,GACA,IAAAE,OACAA,EAAAk5B,eACAA,EAAAhG,KACAA,GACGpzB,EACH,MAAA/F,EAAiBC,OAAAH,EAAA,EAAAG,GACjBm/B,GAAAn5B,EAAA8hB,UACA,IACA1V,EADAgtB,EAAA,KAEA,MAAAriB,EAAA/W,EAAAK,OAAA8M,MACAnN,EAAAqE,UAAAjK,MAAAi/B,eAAA,OACAt/B,EAAAu/B,qBAAAt5B,EAAAu5B,gBACA,MAAAC,EAAAN,EAAAC,EAAA,cAEAM,EAAA,CAAArnB,EAAA9H,IACA,SAAAkvB,GAAApnB,GAAA9H,GAAA,SAAAkvB,GAAApnB,GAAA9H,EAGAovB,EAAA,KACAttB,GAAA,IAAAjC,MAAAC,UAEA,OAAAgvB,IACAA,EAAAhtB,GAGA,MAAAqI,EAAAtS,KAAAE,IAAAF,KAAAG,KAAA8J,EAAAgtB,GAAAriB,EAAA,MACA4iB,EAAA,GAAAx3B,KAAAywB,IAAAne,EAAAtS,KAAAwwB,IAAA,EACA,IAAAiH,EAAAT,EAAAQ,GAAAT,EAAAC,GAUA,GARAM,EAAAG,EAAAV,KACAU,EAAAV,GAGAl5B,EAAAqE,UAAAw1B,SAAA,CACAl/B,CAAAu4B,GAAA0G,IAGAH,EAAAG,EAAAV,GAUA,OATAl5B,EAAAqE,UAAAjK,MAAA+hB,SAAA,SACAnc,EAAAqE,UAAAjK,MAAAi/B,eAAA,GACAl1B,WAAA,KACAnE,EAAAqE,UAAAjK,MAAA+hB,SAAA,GACAnc,EAAAqE,UAAAw1B,SAAA,CACAl/B,CAAAu4B,GAAA0G,WAGA7/B,EAAAu/B,qBAAAt5B,EAAAu5B,gBAIAv5B,EAAAu5B,eAAAx/B,EAAAw2B,sBAAAmJ,IAGAA","file":"43.9450a9c976adac8268dd.js","sourcesContent":["import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n    passiveListener: function checkPassiveListener() {\n      let supportsPassive = false;\n\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          }\n\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {// No support\n      }\n\n      return supportsPassive;\n    }(),\n    gestures: function checkGestures() {\n      return 'ongesturestart' in window;\n    }()\n  };\n}\n\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n\n  return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice(_temp) {\n  let {\n    userAgent\n  } = _temp === void 0 ? {} : _temp;\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n  let 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  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  } // Android\n\n\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  } // Export object\n\n\n  return device;\n}\n\nfunction getDevice(overrides) {\n  if (overrides === void 0) {\n    overrides = {};\n  }\n\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n\n  return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n  const window = getWindow();\n\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\n  return {\n    isSafari: isSafari(),\n    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n  };\n}\n\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n\n  return browser;\n}\n\nexport { getBrowser };","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  styles,\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  filter,\n  remove\n};\nObject.keys(Methods).forEach(methodName => {\n  Object.defineProperty($.fn, methodName, {\n    value: Methods[methodName],\n    writable: true\n  });\n});\nexport default $;","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      renderExternalUpdate: true,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0\n    }\n  });\n  let cssModeTimeout;\n  swiper.virtual = {\n    cache: {},\n    from: undefined,\n    to: undefined,\n    slides: [],\n    offset: 0,\n    slidesGrid: []\n  };\n\n  function renderSlide(slide, index) {\n    const params = swiper.params.virtual;\n\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n\n    const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\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\n  function update(force) {\n    const {\n      slidesPerView,\n      slidesPerGroup,\n      centeredSlides\n    } = swiper.params;\n    const {\n      addSlidesBefore,\n      addSlidesAfter\n    } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      offset: previousOffset\n    } = swiper.virtual;\n\n    if (!swiper.params.cssMode) {\n      swiper.updateActiveIndex();\n    }\n\n    const activeIndex = swiper.activeIndex || 0;\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n    let slidesAfter;\n    let slidesBefore;\n\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = slidesPerGroup + addSlidesBefore;\n    }\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    Object.assign(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\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n\n      emit('virtualUpdate');\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\n      swiper.updateProgress();\n      emit('virtualUpdate');\n      return;\n    }\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\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n\n          return slidesToRender;\n        }()\n      });\n\n      if (swiper.params.virtual.renderExternalUpdate) {\n        onRendered();\n      } else {\n        emit('virtualUpdate');\n      }\n\n      return;\n    }\n\n    const prependIndexes = [];\n    const appendIndexes = [];\n\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\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\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\n  function appendSlide(slides) {\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\n    update(true);\n  }\n\n  function prependSlide(slides) {\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\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach(cachedIndex => {\n        const $cachedEl = cache[cachedIndex];\n        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n        if (cachedElIndex) {\n          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n        }\n\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n\n    update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  }\n\n  function removeSlide(slidesIndexes) {\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n\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\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\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\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n\n    update(true);\n    swiper.slideTo(activeIndex, 0);\n  }\n\n  function removeAllSlides() {\n    swiper.virtual.slides = [];\n\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n\n    update(true);\n    swiper.slideTo(0, 0);\n  }\n\n  on('beforeInit', () => {\n    if (!swiper.params.virtual.enabled) return;\n    swiper.virtual.slides = swiper.params.virtual.slides;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n\n    if (!swiper.params.initialSlide) {\n      update();\n    }\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.virtual.enabled) return;\n\n    if (swiper.params.cssMode && !swiper._immediateVirtual) {\n      clearTimeout(cssModeTimeout);\n      cssModeTimeout = setTimeout(() => {\n        update();\n      }, 100);\n    } else {\n      update();\n    }\n  });\n  on('init update resize', () => {\n    if (!swiper.params.virtual.enabled) return;\n\n    if (swiper.params.cssMode) {\n      setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n    }\n  });\n  Object.assign(swiper.virtual, {\n    appendSlide,\n    prependSlide,\n    removeSlide,\n    removeAllSlides,\n    update\n  });\n}","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const document = getDocument();\n  const window = getWindow();\n  swiper.keyboard = {\n    enabled: false\n  };\n  extendParams({\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true\n    }\n  });\n\n  function handle(event) {\n    if (!swiper.enabled) return;\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40; // Directions locks\n\n    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n      return false;\n    }\n\n    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n      return false;\n    }\n\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n\n    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n      let inView = false; // Check that swiper should be inside of visible area of window\n\n      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n\n      const $el = swiper.$el;\n      const swiperWidth = $el[0].clientWidth;\n      const swiperHeight = $el[0].clientHeight;\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 = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n          inView = true;\n        }\n      }\n\n      if (!inView) return undefined;\n    }\n\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n\n    emit('keyPress', kc);\n    return undefined;\n  }\n\n  function enable() {\n    if (swiper.keyboard.enabled) return;\n    $(document).on('keydown', handle);\n    swiper.keyboard.enabled = true;\n  }\n\n  function disable() {\n    if (!swiper.keyboard.enabled) return;\n    $(document).off('keydown', handle);\n    swiper.keyboard.enabled = false;\n  }\n\n  on('init', () => {\n    if (swiper.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.keyboard.enabled) {\n      disable();\n    }\n  });\n  Object.assign(swiper.keyboard, {\n    enable,\n    disable\n  });\n}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  extendParams({\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarget: 'container',\n      thresholdDelta: null,\n      thresholdTime: null\n    }\n  });\n  swiper.mousewheel = {\n    enabled: false\n  };\n  let timeout;\n  let lastScrollTime = now();\n  let lastEventBeforeSnap;\n  const recentWheelEvents = [];\n\n  function normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n    // Legacy\n\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    } // side scrolling on FF with DOMMouseScroll\n\n\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\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) {\n        // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else {\n        // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    } // Fall-back if spin cannot be determined\n\n\n    if (pX && !sX) {\n      sX = pX < 1 ? -1 : 1;\n    }\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\n  function handleMouseEnter() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = true;\n  }\n\n  function handleMouseLeave() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = false;\n  }\n\n  function animateSlider(newEvent) {\n    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n\n    if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n      // Prevent if time between scrolls is below configured threshold\n      return false;\n    } // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n\n\n    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    } // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n\n\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      emit('scroll', newEvent.raw);\n    } // If you got here is because an animation has been triggered so store the current time\n\n\n    lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n    return false;\n  }\n\n  function releaseScroll(newEvent) {\n    const params = swiper.params.mousewheel;\n\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n\n    return false;\n  }\n\n  function handle(event) {\n    let e = event;\n    let disableParentSwiper = true;\n    if (!swiper.enabled) return;\n    const params = swiper.params.mousewheel;\n\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n\n    let target = swiper.$el;\n\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n\n    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n    const data = 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;else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;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    if (params.invert) delta = -delta; // Get the scroll positions\n\n    let positions = swiper.getTranslate() + delta * params.sensitivity;\n    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n    //     the disableParentSwiper will be true.\n    // When loop is false:\n    //     if the scroll positions is not on edge,\n    //     then the disableParentSwiper will be true.\n    //     if the scroll on edge positions,\n    //     then the disableParentSwiper will be false.\n\n    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event\n      }; // Keep the most recent events\n\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          animateSlider(newEvent);\n        }\n      } else {\n        animateSlider(newEvent);\n      } // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n\n\n      if (releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta)\n      };\n      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n      if (!ignoreWheelEvents) {\n        lastEventBeforeSnap = undefined;\n\n        if (swiper.params.loop) {\n          swiper.loopFix();\n        }\n\n        let position = swiper.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\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.freeMode.sticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(timeout);\n          timeout = undefined;\n\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            timeout = nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        } // Emit event\n\n\n        if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n      }\n    }\n\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    return false;\n  }\n\n  function events(method) {\n    let target = swiper.$el;\n\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n\n    target[method]('mouseenter', handleMouseEnter);\n    target[method]('mouseleave', handleMouseLeave);\n    target[method]('wheel', handle);\n  }\n\n  function enable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n\n    if (swiper.mousewheel.enabled) return false;\n    events('on');\n    swiper.mousewheel.enabled = true;\n    return true;\n  }\n\n  function disable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n\n    if (!swiper.mousewheel.enabled) return false;\n    events('off');\n    swiper.mousewheel.enabled = false;\n    return true;\n  }\n\n  on('init', () => {\n    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n      disable();\n    }\n\n    if (swiper.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (swiper.params.cssMode) {\n      enable();\n    }\n\n    if (swiper.mousewheel.enabled) disable();\n  });\n  Object.assign(swiper.mousewheel, {\n    enable,\n    disable\n  });\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  const document = getDocument();\n\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n        if (!element) {\n          element = document.createElement('div');\n          element.className = checkProps[key];\n          swiper.$el.append(element);\n        }\n\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n\n  return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n      navigationDisabledClass: 'swiper-navigation-disabled'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    $nextEl: null,\n    prevEl: null,\n    $prevEl: null\n  };\n\n  function getEl(el) {\n    let $el;\n\n    if (el) {\n      $el = $(el);\n\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n        $el = swiper.$el.find(el);\n      }\n    }\n\n    return $el;\n  }\n\n  function toggleEl($el, disabled) {\n    const params = swiper.params.navigation;\n\n    if ($el && $el.length > 0) {\n      $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n      if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n      if (swiper.params.watchOverflow && swiper.enabled) {\n        $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n      }\n    }\n  }\n\n  function update() {\n    // Update Navigation Buttons\n    if (swiper.params.loop) return;\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n    emit('navigationPrev');\n  }\n\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n    emit('navigationNext');\n  }\n\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    const $nextEl = getEl(params.nextEl);\n    const $prevEl = getEl(params.prevEl);\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', onNextClick);\n    }\n\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', onPrevClick);\n    }\n\n    Object.assign(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0]\n    });\n\n    if (!swiper.enabled) {\n      if ($nextEl) $nextEl.addClass(params.lockClass);\n      if ($prevEl) $prevEl.addClass(params.lockClass);\n    }\n  }\n\n  function destroy() {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  }\n\n  on('init', () => {\n    if (swiper.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n    }\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($nextEl) {\n      $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n    }\n\n    if ($prevEl) {\n      $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n    }\n  });\n  on('click', (_s, e) => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    const targetEl = e.target;\n\n    if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n\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\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n\n      if ($nextEl) {\n        $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n      }\n\n      if ($prevEl) {\n        $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n      }\n    }\n  });\n\n  const enable = () => {\n    swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n    init();\n    update();\n  };\n\n  const disable = () => {\n    swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n    destroy();\n  };\n\n  Object.assign(swiper.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}","export default function classesToSelector(classes) {\n  if (classes === void 0) {\n    classes = '';\n  }\n\n  return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const pfx = 'swiper-pagination';\n  extendParams({\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',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: `${pfx}-bullet`,\n      bulletActiveClass: `${pfx}-bullet-active`,\n      modifierClass: `${pfx}-`,\n      currentClass: `${pfx}-current`,\n      totalClass: `${pfx}-total`,\n      hiddenClass: `${pfx}-hidden`,\n      progressbarFillClass: `${pfx}-progressbar-fill`,\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n      clickableClass: `${pfx}-clickable`,\n      lockClass: `${pfx}-lock`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`,\n      paginationDisabledClass: `${pfx}-disabled`\n    }\n  });\n  swiper.pagination = {\n    el: null,\n    $el: null,\n    bullets: []\n  };\n  let bulletSize;\n  let dynamicBulletIndex = 0;\n\n  function isPaginationDisabled() {\n    return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n  }\n\n  function setSideBullets($bulletEl, position) {\n    const {\n      bulletActiveClass\n    } = swiper.params.pagination;\n    $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n  }\n\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el; // Current/Total\n\n    let current;\n    const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n        current -= slidesLength - swiper.loopedSlides * 2;\n      }\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    } // Types\n\n\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\n      if (params.dynamicBullets) {\n        bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (dynamicBulletIndex < 0) {\n            dynamicBulletIndex = 0;\n          }\n        }\n\n        firstIndex = Math.max(current - dynamicBulletIndex, 0);\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n\n      bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n      if ($el.length > 1) {\n        bullets.each(bullet => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n\n            if (bulletIndex === firstIndex) {\n              setSideBullets($bullet, 'prev');\n            }\n\n            if (bulletIndex === lastIndex) {\n              setSideBullets($bullet, 'next');\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        const bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length) {\n              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n              }\n\n              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n            } else {\n              setSideBullets($firstDisplayedBullet, 'prev');\n              setSideBullets($lastDisplayedBullet, 'next');\n            }\n          } else {\n            setSideBullets($firstDisplayedBullet, 'prev');\n            setSideBullets($lastDisplayedBullet, 'next');\n          }\n        }\n      }\n\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n\n    if (params.type === 'fraction') {\n      $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n      $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n    }\n\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n\n      $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n    }\n\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      emit('paginationRender', $el[0]);\n    } else {\n      emit('paginationUpdate', $el[0]);\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  }\n\n  function render() {\n    // Render Container\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n\n    if (params.type === 'bullets') {\n      let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n      if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n\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}\"></${params.bulletElement}>`;\n        }\n      }\n\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n    }\n\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type !== 'custom') {\n      emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  }\n\n  function init() {\n    swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n      el: 'swiper-pagination'\n    });\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n      $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n      if ($el.length > 1) {\n        $el = $el.filter(el => {\n          if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n          return true;\n        });\n      }\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n      dynamicBulletIndex = 0;\n\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', classesToSelector(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    Object.assign(swiper.pagination, {\n      $el,\n      el: $el[0]\n    });\n\n    if (!swiper.enabled) {\n      $el.addClass(params.lockClass);\n    }\n  }\n\n  function destroy() {\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const $el = swiper.pagination.$el;\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n    if (params.clickable) {\n      $el.off('click', classesToSelector(params.bulletClass));\n    }\n  }\n\n  on('init', () => {\n    if (swiper.params.pagination.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      render();\n      update();\n    }\n  });\n  on('activeIndexChange', () => {\n    if (swiper.params.loop) {\n      update();\n    } else if (typeof swiper.snapIndex === 'undefined') {\n      update();\n    }\n  });\n  on('snapIndexChange', () => {\n    if (!swiper.params.loop) {\n      update();\n    }\n  });\n  on('slidesLengthChange', () => {\n    if (swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('snapGridLengthChange', () => {\n    if (!swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.pagination;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n    }\n  });\n  on('lock unlock', () => {\n    update();\n  });\n  on('click', (_s, e) => {\n    const targetEl = e.target;\n    const {\n      $el\n    } = swiper.pagination;\n\n    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n      const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n\n      $el.toggleClass(swiper.params.pagination.hiddenClass);\n    }\n  });\n\n  const enable = () => {\n    swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n    if (swiper.pagination.$el) {\n      swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n    }\n\n    init();\n    render();\n    update();\n  };\n\n  const disable = () => {\n    swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n    if (swiper.pagination.$el) {\n      swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n    }\n\n    destroy();\n  };\n\n  Object.assign(swiper.pagination, {\n    enable,\n    disable,\n    render,\n    update,\n    init,\n    destroy\n  });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const document = getDocument();\n  let isTouched = false;\n  let timeout = null;\n  let dragTimeout = null;\n  let dragStartPos;\n  let dragSize;\n  let trackSize;\n  let divider;\n  extendParams({\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      scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n      horizontalClass: `swiper-scrollbar-horizontal`,\n      verticalClass: `swiper-scrollbar-vertical`\n    }\n  });\n  swiper.scrollbar = {\n    el: null,\n    dragEl: null,\n    $el: null,\n    $dragEl: null\n  };\n\n  function setTranslate() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar,\n      rtlTranslate: rtl,\n      progress\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n\n    if (rtl) {\n      newPos = -newPos;\n\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\n    if (swiper.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n\n    if (params.hide) {\n      clearTimeout(timeout);\n      $el[0].style.opacity = 1;\n      timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  }\n\n  function setTransition(duration) {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  }\n\n  function updateSize() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\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\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function getPointerPosition(e) {\n    if (swiper.isHorizontal()) {\n      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n    }\n\n    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n  }\n\n  function setDragPosition(e) {\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    let positionRatio;\n    positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  function onDragStart(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    isTouched = true;\n    dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    setDragPosition(e);\n    clearTimeout(dragTimeout);\n    $el.transition(0);\n\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n\n    emit('scrollbarDragStart', e);\n  }\n\n  function onDragMove(e) {\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    if (!isTouched) return;\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    emit('scrollbarDragMove', e);\n  }\n\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n\n    emit('scrollbarDragEnd', e);\n\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n\n  function events(method) {\n    const {\n      scrollbar,\n      touchEventsTouch,\n      touchEventsDesktop,\n      params,\n      support\n    } = swiper;\n    const $el = scrollbar.$el;\n    if (!$el) return;\n    const target = $el[0];\n    const activeListener = support.passiveListener && params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = support.passiveListener && params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n    if (!support.touch) {\n      target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n      document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n      document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n    } else {\n      target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n      target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n      target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n    }\n  }\n\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('on');\n  }\n\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('off');\n  }\n\n  function init() {\n    const {\n      scrollbar,\n      $el: $swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let $el = $(params.el);\n\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    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Object.assign(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0]\n    });\n\n    if (params.draggable) {\n      enableDraggable();\n    }\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function destroy() {\n    const params = swiper.params.scrollbar;\n    const $el = swiper.scrollbar.$el;\n\n    if ($el) {\n      $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    }\n\n    disableDraggable();\n  }\n\n  on('init', () => {\n    if (swiper.params.scrollbar.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      updateSize();\n      setTranslate();\n    }\n  });\n  on('update resize observerUpdate lock unlock', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.scrollbar;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n\n  const enable = () => {\n    swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n    if (swiper.scrollbar.$el) {\n      swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n    }\n\n    init();\n    updateSize();\n    setTranslate();\n  };\n\n  const disable = () => {\n    swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n    if (swiper.scrollbar.$el) {\n      swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n    }\n\n    destroy();\n  };\n\n  Object.assign(swiper.scrollbar, {\n    enable,\n    disable,\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}","import $ from '../../shared/dom.js';\nexport default function Parallax(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    parallax: {\n      enabled: false\n    }\n  });\n\n  const setTransform = (el, progress) => {\n    const {\n      rtl\n    } = swiper;\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\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\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\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\n  const setTranslate = () => {\n    const {\n      $el,\n      slides,\n      progress,\n      snapGrid\n    } = swiper;\n    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n      setTransform(el, progress);\n    });\n    slides.each((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n      }\n\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n        setTransform(el, slideProgress);\n      });\n    });\n  };\n\n  const setTransition = function (duration) {\n    if (duration === void 0) {\n      duration = swiper.params.speed;\n    }\n\n    const {\n      $el\n    } = swiper;\n    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(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  on('beforeInit', () => {\n    if (!swiper.params.parallax.enabled) return;\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n  });\n  on('init', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTransition', (_swiper, duration) => {\n    if (!swiper.params.parallax.enabled) return;\n    setTransition(duration);\n  });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  extendParams({\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  swiper.zoom = {\n    enabled: false\n  };\n  let currentScale = 1;\n  let isScaling = false;\n  let gesturesEnabled;\n  let fakeGestureTouched;\n  let fakeGestureMoved;\n  const gesture = {\n    $slideEl: undefined,\n    slideWidth: undefined,\n    slideHeight: undefined,\n    $imageEl: undefined,\n    $imageWrapEl: undefined,\n    maxRatio: 3\n  };\n  const 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  const velocity = {\n    x: undefined,\n    y: undefined,\n    prevPositionX: undefined,\n    prevPositionY: undefined,\n    prevTime: undefined\n  };\n  let scale = 1;\n  Object.defineProperty(swiper.zoom, 'scale', {\n    get() {\n      return scale;\n    },\n\n    set(value) {\n      if (scale !== value) {\n        const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n        const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n        emit('zoomChange', value, imageEl, slideEl);\n      }\n\n      scale = value;\n    }\n\n  });\n\n  function 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  } // Events\n\n\n  function onGestureStart(e) {\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n\n    if (!support.gestures) {\n      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n        return;\n      }\n\n      fakeGestureTouched = true;\n      gesture.scaleStart = getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n\n    if (gesture.$imageEl) {\n      gesture.$imageEl.transition(0);\n    }\n\n    isScaling = true;\n  }\n\n  function onGestureChange(e) {\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n\n    if (!support.gestures) {\n      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n        return;\n      }\n\n      fakeGestureMoved = true;\n      gesture.scaleMove = getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n      if (e.type === 'gesturechange') onGestureStart(e);\n      return;\n    }\n\n    if (support.gestures) {\n      zoom.scale = e.scale * currentScale;\n    } else {\n      zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n    }\n\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n    }\n\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n    }\n\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  }\n\n  function onGestureEnd(e) {\n    const device = swiper.device;\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n\n    if (!support.gestures) {\n      if (!fakeGestureTouched || !fakeGestureMoved) {\n        return;\n      }\n\n      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n        return;\n      }\n\n      fakeGestureTouched = false;\n      fakeGestureMoved = false;\n    }\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    currentScale = zoom.scale;\n    isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  }\n\n  function onTouchStart(e) {\n    const device = swiper.device;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) 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\n  function onTouchMove(e) {\n    const zoom = swiper.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 = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = 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    } // Define if we need image drag\n\n\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\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.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 && !isScaling) {\n      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n        image.isTouched = false;\n        return;\n      }\n\n      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n        image.isTouched = false;\n        return;\n      }\n    }\n\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n\n    e.stopPropagation();\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\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\n    if (image.currentY > image.maxY) {\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n    } // Velocity\n\n\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    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n\n  function onTouchEnd() {\n    const zoom = swiper.zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\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; // Fix duration\n\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    image.currentX = newPositionX;\n    image.currentY = newPositionY; // Define if we need image drag\n\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    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n\n  function onTransitionEnd() {\n    const zoom = swiper.zoom;\n\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      if (gesture.$imageEl) {\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      }\n\n      if (gesture.$imageWrapEl) {\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      }\n\n      zoom.scale = 1;\n      currentScale = 1;\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  }\n\n  function zoomIn(e) {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (e && e.target) {\n        gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      }\n\n      if (!gesture.$slideEl) {\n        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n          gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n        } else {\n          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n        }\n      }\n\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.touchAction = 'none';\n    }\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\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    currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left + window.scrollX;\n      offsetY = gesture.$slideEl.offset().top + window.scrollY;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\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      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\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\n  function zoomOut() {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = '';\n      swiper.wrapperEl.style.touchAction = '';\n    }\n\n    zoom.scale = 1;\n    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  } // Toggle Zoom\n\n\n  function zoomToggle(e) {\n    const zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoomOut();\n    } else {\n      // Zoom In\n      zoomIn(e);\n    }\n  }\n\n  function getListeners() {\n    const support = swiper.support;\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    const activeListenerWithCapture = support.passiveListener ? {\n      passive: false,\n      capture: true\n    } : true;\n    return {\n      passiveListener,\n      activeListenerWithCapture\n    };\n  }\n\n  function getSlideSelector() {\n    return `.${swiper.params.slideClass}`;\n  }\n\n  function toggleGestures(method) {\n    const {\n      passiveListener\n    } = getListeners();\n    const slideSelector = getSlideSelector();\n    swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n    swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n    swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n  }\n\n  function enableGestures() {\n    if (gesturesEnabled) return;\n    gesturesEnabled = true;\n    toggleGestures('on');\n  }\n\n  function disableGestures() {\n    if (!gesturesEnabled) return;\n    gesturesEnabled = false;\n    toggleGestures('off');\n  } // Attach/Detach Events\n\n\n  function enable() {\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n    const support = swiper.support;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n    const slideSelector = getSlideSelector(); // Scale image\n\n    if (support.gestures) {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n      }\n    } // Move image\n\n\n    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n  }\n\n  function disable() {\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n    const support = swiper.support;\n    zoom.enabled = false;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n    const slideSelector = getSlideSelector(); // Scale image\n\n    if (support.gestures) {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n      }\n    } // Move image\n\n\n    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n  }\n\n  on('init', () => {\n    if (swiper.params.zoom.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    disable();\n  });\n  on('touchStart', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchStart(e);\n  });\n  on('touchEnd', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchEnd(e);\n  });\n  on('doubleTap', (_s, e) => {\n    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n      zoomToggle(e);\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n      onTransitionEnd();\n    }\n  });\n  on('slideChange', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n      onTransitionEnd();\n    }\n  });\n  Object.assign(swiper.zoom, {\n    enable,\n    disable,\n    in: zoomIn,\n    out: zoomOut,\n    toggle: zoomToggle\n  });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    lazy: {\n      checkInView: false,\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n      scrollingElement: '',\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader'\n    }\n  });\n  swiper.lazy = {};\n  let scrollHandlerAttached = false;\n  let initialImageLoaded = false;\n\n  function loadInSlide(index, loadInDuplicate) {\n    if (loadInDuplicate === void 0) {\n      loadInDuplicate = true;\n    }\n\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    const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n    const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n      $images.push($slideEl[0]);\n    }\n\n    if ($images.length === 0) return;\n    $images.each(imageEl => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\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      const $pictureEl = $imageEl.parent('picture');\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\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\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n\n          if ($pictureEl.length) {\n            $pictureEl.children('source').each(sourceEl => {\n              const $source = $(sourceEl);\n\n              if ($source.attr('data-srcset')) {\n                $source.attr('srcset', $source.attr('data-srcset'));\n                $source.removeAttr('data-srcset');\n              }\n            });\n          }\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\n        if (swiper.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n            loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n            loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n\n        emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n        if (swiper.params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n      });\n      emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  }\n\n  function load() {\n    const {\n      $wrapperEl,\n      params: swiperParams,\n      slides,\n      activeIndex\n    } = swiper;\n    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    const params = swiperParams.lazy;\n    let slidesPerView = swiperParams.slidesPerView;\n\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\n      return false;\n    }\n\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-swiper-slide-index');\n      }\n\n      return $(slideEl).index();\n    }\n\n    if (!initialImageLoaded) initialImageLoaded = true;\n\n    if (swiper.params.watchSlidesProgress) {\n      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n        loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) loadInSlide(i);\n      }\n    } else {\n      loadInSlide(activeIndex);\n    }\n\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n        const amount = params.loadPrevNextAmount;\n        const spv = Math.ceil(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); // Next Slides\n\n        for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        } // Prev Slides\n\n\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n        if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n        if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  }\n\n  function checkInViewOnLoad() {\n    const window = getWindow();\n    if (!swiper || swiper.destroyed) return;\n    const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n    const isWindow = $scrollElement[0] === window;\n    const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n    const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n    const swiperOffset = swiper.$el.offset();\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let inView = false;\n    if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n    const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [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\n      if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n        if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n        inView = true;\n      }\n    }\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n\n    if (inView) {\n      load();\n      $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n    } else if (!scrollHandlerAttached) {\n      scrollHandlerAttached = true;\n      $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n    }\n  }\n\n  on('beforeInit', () => {\n    if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n      swiper.params.preloadImages = false;\n    }\n  });\n  on('init', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('scroll', () => {\n    if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n      load();\n    }\n  });\n  on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('transitionStart', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n        if (swiper.params.lazy.checkInView) {\n          checkInViewOnLoad();\n        } else {\n          load();\n        }\n      }\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('slideChange', () => {\n    const {\n      lazy,\n      cssMode,\n      watchSlidesProgress,\n      touchReleaseOnEdges,\n      resistanceRatio\n    } = swiper.params;\n\n    if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n      load();\n    }\n  });\n  on('destroy', () => {\n    if (!swiper.$el) return;\n    swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);\n  });\n  Object.assign(swiper.lazy, {\n    load,\n    loadInSlide\n  });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide' // or 'container'\n\n    }\n  });\n  swiper.controller = {\n    control: undefined\n  };\n\n  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\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n\n        return maxIndex;\n      };\n    }();\n\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1; // 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\n    let i1;\n    let i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n    };\n\n    return this;\n  } // xxx: for now i will just save one spline function to to\n\n\n  function getInterpolateFunction(c) {\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  }\n\n  function setTranslate(_t, byController) {\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    const Swiper = swiper.constructor;\n\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\n      if (swiper.params.controller.by === 'slide') {\n        getInterpolateFunction(c); // 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\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\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\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\n  function setTransition(duration, byController) {\n    const Swiper = swiper.constructor;\n    const controlled = swiper.controller.control;\n    let i;\n\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n\n      if (duration !== 0) {\n        c.transitionStart();\n\n        if (c.params.autoHeight) {\n          nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n\n          c.transitionEnd();\n        });\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\n  function removeSpline() {\n    if (!swiper.controller.control) return;\n\n    if (swiper.controller.spline) {\n      swiper.controller.spline = undefined;\n      delete swiper.controller.spline;\n    }\n  }\n\n  on('beforeInit', () => {\n    swiper.controller.control = swiper.params.controller.control;\n  });\n  on('update', () => {\n    removeSpline();\n  });\n  on('resize', () => {\n    removeSpline();\n  });\n  on('observerUpdate', () => {\n    removeSpline();\n  });\n  on('setTranslate', (_s, translate, byController) => {\n    if (!swiper.controller.control) return;\n    swiper.controller.setTranslate(translate, byController);\n  });\n  on('setTransition', (_s, duration, byController) => {\n    if (!swiper.controller.control) return;\n    swiper.controller.setTransition(duration, byController);\n  });\n  Object.assign(swiper.controller, {\n    setTranslate,\n    setTransition\n  });\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\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      slideLabelMessage: '{{index}} / {{slidesLength}}',\n      containerMessage: null,\n      containerRoleDescriptionMessage: null,\n      itemRoleDescriptionMessage: null,\n      slideRole: 'group',\n      id: null\n    }\n  });\n  let liveRegion = null;\n\n  function notify(message) {\n    const notification = liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  }\n\n  function getRandomNumber(size) {\n    if (size === void 0) {\n      size = 16;\n    }\n\n    const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n    return 'x'.repeat(size).replace(/x/g, randomChar);\n  }\n\n  function makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n  }\n\n  function makeElNotFocusable($el) {\n    $el.attr('tabIndex', '-1');\n  }\n\n  function addElRole($el, role) {\n    $el.attr('role', role);\n  }\n\n  function addElRoleDescription($el, description) {\n    $el.attr('aria-roledescription', description);\n  }\n\n  function addElControls($el, controls) {\n    $el.attr('aria-controls', controls);\n  }\n\n  function addElLabel($el, label) {\n    $el.attr('aria-label', label);\n  }\n\n  function addElId($el, id) {\n    $el.attr('id', id);\n  }\n\n  function addElLive($el, live) {\n    $el.attr('aria-live', live);\n  }\n\n  function disableEl($el) {\n    $el.attr('aria-disabled', true);\n  }\n\n  function enableEl($el) {\n    $el.attr('aria-disabled', false);\n  }\n\n  function onEnterOrSpaceKey(e) {\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\n    const params = swiper.params.a11y;\n    const $targetEl = $(e.target);\n\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n\n      if (swiper.isEnd) {\n        notify(params.lastSlideMessage);\n      } else {\n        notify(params.nextSlideMessage);\n      }\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\n      if (swiper.isBeginning) {\n        notify(params.firstSlideMessage);\n      } else {\n        notify(params.prevSlideMessage);\n      }\n    }\n\n    if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n      $targetEl[0].click();\n    }\n  }\n\n  function updateNavigation() {\n    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        disableEl($prevEl);\n        makeElNotFocusable($prevEl);\n      } else {\n        enableEl($prevEl);\n        makeElFocusable($prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        disableEl($nextEl);\n        makeElNotFocusable($nextEl);\n      } else {\n        enableEl($nextEl);\n        makeElFocusable($nextEl);\n      }\n    }\n  }\n\n  function hasPagination() {\n    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n  }\n\n  function hasClickablePagination() {\n    return hasPagination() && swiper.params.pagination.clickable;\n  }\n\n  function updatePagination() {\n    const params = swiper.params.a11y;\n    if (!hasPagination()) return;\n    swiper.pagination.bullets.each(bulletEl => {\n      const $bulletEl = $(bulletEl);\n\n      if (swiper.params.pagination.clickable) {\n        makeElFocusable($bulletEl);\n\n        if (!swiper.params.pagination.renderBullet) {\n          addElRole($bulletEl, 'button');\n          addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n        }\n      }\n\n      if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n        $bulletEl.attr('aria-current', 'true');\n      } else {\n        $bulletEl.removeAttr('aria-current');\n      }\n    });\n  }\n\n  const initNavEl = ($el, wrapperId, message) => {\n    makeElFocusable($el);\n\n    if ($el[0].tagName !== 'BUTTON') {\n      addElRole($el, 'button');\n      $el.on('keydown', onEnterOrSpaceKey);\n    }\n\n    addElLabel($el, message);\n    addElControls($el, wrapperId);\n  };\n\n  const handleFocus = e => {\n    const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n    if (!slideEl || !swiper.slides.includes(slideEl)) return;\n    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n    if (isActive || isVisible) return;\n    swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n  };\n\n  const initSlides = () => {\n    const params = swiper.params.a11y;\n\n    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n    }\n\n    addElRole($(swiper.slides), params.slideRole);\n    const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n\n    if (params.slideLabelMessage) {\n      swiper.slides.each((slideEl, index) => {\n        const $slideEl = $(slideEl);\n        const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n        const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n        addElLabel($slideEl, ariaLabelMessage);\n      });\n    }\n  };\n\n  const init = () => {\n    const params = swiper.params.a11y;\n    swiper.$el.append(liveRegion); // Container\n\n    const $containerEl = swiper.$el;\n\n    if (params.containerRoleDescriptionMessage) {\n      addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n    }\n\n    if (params.containerMessage) {\n      addElLabel($containerEl, params.containerMessage);\n    } // Wrapper\n\n\n    const $wrapperEl = swiper.$wrapperEl;\n    const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n    addElId($wrapperEl, wrapperId);\n    addElLive($wrapperEl, live); // Slide\n\n    initSlides(); // Navigation\n\n    let $nextEl;\n    let $prevEl;\n\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n\n    if ($nextEl && $nextEl.length) {\n      initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n    }\n\n    if ($prevEl && $prevEl.length) {\n      initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n    } // Pagination\n\n\n    if (hasClickablePagination()) {\n      swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n    } // Tab focus\n\n\n    swiper.$el.on('focus', handleFocus, true);\n  };\n\n  function destroy() {\n    if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n    let $nextEl;\n    let $prevEl;\n\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n\n    if ($nextEl) {\n      $nextEl.off('keydown', onEnterOrSpaceKey);\n    }\n\n    if ($prevEl) {\n      $prevEl.off('keydown', onEnterOrSpaceKey);\n    } // Pagination\n\n\n    if (hasClickablePagination()) {\n      swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n    } // Tab focus\n\n\n    swiper.$el.off('focus', handleFocus, true);\n  }\n\n  on('beforeInit', () => {\n    liveRegion = $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`);\n  });\n  on('afterInit', () => {\n    if (!swiper.params.a11y.enabled) return;\n    init();\n  });\n  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n    if (!swiper.params.a11y.enabled) return;\n    initSlides();\n  });\n  on('fromEdge toEdge afterInit lock unlock', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('paginationUpdate', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updatePagination();\n  });\n  on('destroy', () => {\n    if (!swiper.params.a11y.enabled) return;\n    destroy();\n  });\n}","import { getWindow } from 'ssr-window';\nexport default function History(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    history: {\n      enabled: false,\n      root: '',\n      replaceState: false,\n      key: 'slides',\n      keepQuery: false\n    }\n  });\n  let initialized = false;\n  let paths = {};\n\n  const slugify = text => {\n    return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n  };\n\n  const getPathValues = urlOverride => {\n    const window = getWindow();\n    let location;\n\n    if (urlOverride) {\n      location = new URL(urlOverride);\n    } else {\n      location = window.location;\n    }\n\n    const pathArray = 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 {\n      key,\n      value\n    };\n  };\n\n  const setHistory = (key, index) => {\n    const window = getWindow();\n    if (!initialized || !swiper.params.history.enabled) return;\n    let location;\n\n    if (swiper.params.url) {\n      location = new URL(swiper.params.url);\n    } else {\n      location = window.location;\n    }\n\n    const slide = swiper.slides.eq(index);\n    let value = slugify(slide.attr('data-history'));\n\n    if (swiper.params.history.root.length > 0) {\n      let root = swiper.params.history.root;\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n      value = `${root}/${key}/${value}`;\n    } else if (!location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n\n    if (swiper.params.history.keepQuery) {\n      value += location.search;\n    }\n\n    const currentState = window.history.state;\n\n    if (currentState && currentState.value === value) {\n      return;\n    }\n\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({\n        value\n      }, null, value);\n    } else {\n      window.history.pushState({\n        value\n      }, null, value);\n    }\n  };\n\n  const scrollToSlide = (speed, value, runCallbacks) => {\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 = slugify(slide.attr('data-history'));\n\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  const setHistoryPopState = () => {\n    paths = getPathValues(swiper.params.url);\n    scrollToSlide(swiper.params.speed, paths.value, false);\n  };\n\n  const init = () => {\n    const window = getWindow();\n    if (!swiper.params.history) return;\n\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n\n    initialized = true;\n    paths = getPathValues(swiper.params.url);\n    if (!paths.key && !paths.value) return;\n    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', setHistoryPopState);\n    }\n  };\n\n  const destroy = () => {\n    const window = getWindow();\n\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', setHistoryPopState);\n    }\n  };\n\n  on('init', () => {\n    if (swiper.params.history.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.history.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    emit,\n    on\n  } = _ref;\n  let initialized = false;\n  const document = getDocument();\n  const window = getWindow();\n  extendParams({\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false\n    }\n  });\n\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\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\n  const setHash = () => {\n    if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\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      emit('hashSet');\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      emit('hashSet');\n    }\n  };\n\n  const init = () => {\n    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n\n    if (hash) {\n      const speed = 0;\n\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\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\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', onHashChange);\n    }\n  };\n\n  const destroy = () => {\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', onHashChange);\n    }\n  };\n\n  on('init', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHash();\n    }\n  });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  let timeout;\n  swiper.autoplay = {\n    running: false,\n    paused: false\n  };\n  extendParams({\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n      pauseOnMouseEnter: false\n    }\n  });\n\n  function run() {\n    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    let delay = swiper.params.autoplay.delay;\n\n    if ($activeSlideEl.attr('data-swiper-autoplay')) {\n      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n    }\n\n    clearTimeout(timeout);\n    timeout = nextTick(() => {\n      let autoplayResult;\n\n      if (swiper.params.autoplay.reverseDirection) {\n        if (swiper.params.loop) {\n          swiper.loopFix();\n          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.isBeginning) {\n          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n          emit('autoplay');\n        } else {\n          stop();\n        }\n      } else if (swiper.params.loop) {\n        swiper.loopFix();\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        emit('autoplay');\n      } else if (!swiper.isEnd) {\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n        emit('autoplay');\n      } else {\n        stop();\n      }\n\n      if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n        run();\n      }\n    }, delay);\n  }\n\n  function start() {\n    if (typeof timeout !== 'undefined') return false;\n    if (swiper.autoplay.running) return false;\n    swiper.autoplay.running = true;\n    emit('autoplayStart');\n    run();\n    return true;\n  }\n\n  function stop() {\n    if (!swiper.autoplay.running) return false;\n    if (typeof timeout === 'undefined') return false;\n\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = undefined;\n    }\n\n    swiper.autoplay.running = false;\n    emit('autoplayStop');\n    return true;\n  }\n\n  function pause(speed) {\n    if (!swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) return;\n    if (timeout) clearTimeout(timeout);\n    swiper.autoplay.paused = true;\n\n    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n      swiper.autoplay.paused = false;\n      run();\n    } else {\n      ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n        swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n      });\n    }\n  }\n\n  function onVisibilityChange() {\n    const document = getDocument();\n\n    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n      pause();\n    }\n\n    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n      run();\n      swiper.autoplay.paused = false;\n    }\n  }\n\n  function onTransitionEnd(e) {\n    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n    if (e.target !== swiper.$wrapperEl[0]) return;\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n    });\n    swiper.autoplay.paused = false;\n\n    if (!swiper.autoplay.running) {\n      stop();\n    } else {\n      run();\n    }\n  }\n\n  function onMouseEnter() {\n    if (swiper.params.autoplay.disableOnInteraction) {\n      stop();\n    } else {\n      emit('autoplayPause');\n      pause();\n    }\n\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n    });\n  }\n\n  function onMouseLeave() {\n    if (swiper.params.autoplay.disableOnInteraction) {\n      return;\n    }\n\n    swiper.autoplay.paused = false;\n    emit('autoplayResume');\n    run();\n  }\n\n  function attachMouseEvents() {\n    if (swiper.params.autoplay.pauseOnMouseEnter) {\n      swiper.$el.on('mouseenter', onMouseEnter);\n      swiper.$el.on('mouseleave', onMouseLeave);\n    }\n  }\n\n  function detachMouseEvents() {\n    swiper.$el.off('mouseenter', onMouseEnter);\n    swiper.$el.off('mouseleave', onMouseLeave);\n  }\n\n  on('init', () => {\n    if (swiper.params.autoplay.enabled) {\n      start();\n      const document = getDocument();\n      document.addEventListener('visibilitychange', onVisibilityChange);\n      attachMouseEvents();\n    }\n  });\n  on('beforeTransitionStart', (_s, speed, internal) => {\n    if (swiper.autoplay.running) {\n      if (internal || !swiper.params.autoplay.disableOnInteraction) {\n        swiper.autoplay.pause(speed);\n      } else {\n        stop();\n      }\n    }\n  });\n  on('sliderFirstMove', () => {\n    if (swiper.autoplay.running) {\n      if (swiper.params.autoplay.disableOnInteraction) {\n        stop();\n      } else {\n        pause();\n      }\n    }\n  });\n  on('touchEnd', () => {\n    if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n      run();\n    }\n  });\n  on('destroy', () => {\n    detachMouseEvents();\n\n    if (swiper.autoplay.running) {\n      stop();\n    }\n\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n  });\n  Object.assign(swiper.autoplay, {\n    pause,\n    run,\n    start,\n    stop\n  });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-thumbs'\n    }\n  });\n  let initialized = false;\n  let swiperCreated = false;\n  swiper.thumbs = {\n    swiper: null\n  };\n\n  function onThumbClick() {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) 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\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n\n    if (swiper.params.loop) {\n      let currentIndex = swiper.activeIndex;\n\n      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n        swiper.loopFix(); // eslint-disable-next-line\n\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n        currentIndex = swiper.activeIndex;\n      }\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;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n    }\n\n    swiper.slideTo(slideToIndex);\n  }\n\n  function init() {\n    const {\n      thumbs: thumbsParams\n    } = swiper.params;\n    if (initialized) return false;\n    initialized = true;\n    const SwiperClass = swiper.constructor;\n\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Object.assign(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      Object.assign(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n    } else if (isObject(thumbsParams.swiper)) {\n      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n      Object.assign(thumbsSwiperParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n      swiperCreated = true;\n    }\n\n    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', onThumbClick);\n    return true;\n  }\n\n  function update(initial) {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs\n\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    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n\n    thumbsToActivate = Math.floor(thumbsToActivate);\n    thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\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    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n\n      if (thumbsSwiper.params.loop) {\n        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n          thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbsSwiper.activeIndex;\n        } // Find actual thumbs index to slide to\n\n\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\n        if (typeof prevThumbsIndex === 'undefined') {\n          newThumbsIndex = nextThumbsIndex;\n        } else if (typeof nextThumbsIndex === 'undefined') {\n          newThumbsIndex = prevThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex = nextThumbsIndex;\n        } else {\n          newThumbsIndex = prevThumbsIndex;\n        }\n\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n\n      if (thumbsSwiper.visibleSlidesIndexes && 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 && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n  }\n\n  on('beforeInit', () => {\n    const {\n      thumbs\n    } = swiper.params;\n    if (!thumbs || !thumbs.swiper) return;\n    init();\n    update(true);\n  });\n  on('slideChange update resize observerUpdate', () => {\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    thumbsSwiper.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n    if (swiperCreated) {\n      thumbsSwiper.destroy();\n    }\n  });\n  Object.assign(swiper.thumbs, {\n    init,\n    update\n  });\n}","import { now } from '../../shared/utils.js';\nexport default function freeMode(_ref) {\n  let {\n    swiper,\n    extendParams,\n    emit,\n    once\n  } = _ref;\n  extendParams({\n    freeMode: {\n      enabled: false,\n      momentum: true,\n      momentumRatio: 1,\n      momentumBounce: true,\n      momentumBounceRatio: 1,\n      momentumVelocityRatio: 1,\n      sticky: false,\n      minimumVelocity: 0.02\n    }\n  });\n\n  function onTouchStart() {\n    const translate = swiper.getTranslate();\n    swiper.setTranslate(translate);\n    swiper.setTransition(0);\n    swiper.touchEventsData.velocities.length = 0;\n    swiper.freeMode.onTouchEnd({\n      currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n    });\n  }\n\n  function onTouchMove() {\n    const {\n      touchEventsData: data,\n      touches\n    } = swiper; // Velocity\n\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime\n      });\n    }\n\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: now()\n    });\n  }\n\n  function onTouchEnd(_ref2) {\n    let {\n      currentPos\n    } = _ref2;\n    const {\n      params,\n      $wrapperEl,\n      rtlTranslate: rtl,\n      snapGrid,\n      touchEventsData: data\n    } = swiper; // Time diff\n\n    const touchEndTime = now();\n    const timeDiff = touchEndTime - data.touchStartTime;\n\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\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\n      return;\n    }\n\n    if (params.freeMode.momentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n\n        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n          swiper.velocity = 0;\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\n\n        if (time > 150 || now() - lastMoveEvent.time > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n\n      swiper.velocity *= params.freeMode.momentumVelocityRatio;\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n      let needsLoopFix;\n\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeMode.sticky) {\n        let nextSlide;\n\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\n        newPosition = -newPosition;\n      }\n\n      if (needsLoopFix) {\n        once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      } // Fix duration\n\n\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\n        if (params.freeMode.sticky) {\n          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeMode.sticky) {\n        swiper.slideToClosest();\n        return;\n      }\n\n      if (params.freeMode.momentumBounce && 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          emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            $wrapperEl.transitionEnd(() => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        emit('_freeModeNoMomentumRelease');\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n\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.freeMode.sticky) {\n      swiper.slideToClosest();\n      return;\n    } else if (params.freeMode) {\n      emit('_freeModeNoMomentumRelease');\n    }\n\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n  }\n\n  Object.assign(swiper, {\n    freeMode: {\n      onTouchStart,\n      onTouchMove,\n      onTouchEnd\n    }\n  });\n}","export default function Grid(_ref) {\n  let {\n    swiper,\n    extendParams\n  } = _ref;\n  extendParams({\n    grid: {\n      rows: 1,\n      fill: 'column'\n    }\n  });\n  let slidesNumberEvenToRows;\n  let slidesPerRow;\n  let numFullColumns;\n\n  const initSlides = slidesLength => {\n    const {\n      slidesPerView\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    slidesPerRow = slidesNumberEvenToRows / rows;\n    numFullColumns = Math.floor(slidesLength / rows);\n\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n    }\n\n    if (slidesPerView !== 'auto' && fill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n    }\n  };\n\n  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n    const {\n      slidesPerGroup,\n      spaceBetween\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid; // Set slides order\n\n    let newSlideOrderIndex;\n    let column;\n    let row;\n\n    if (fill === 'row' && slidesPerGroup > 1) {\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n      slide.css({\n        '-webkit-order': newSlideOrderIndex,\n        order: newSlideOrderIndex\n      });\n    } else if (fill === 'column') {\n      column = Math.floor(i / rows);\n      row = i - column * rows;\n\n      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n        row += 1;\n\n        if (row >= rows) {\n          row = 0;\n          column += 1;\n        }\n      }\n    } else {\n      row = Math.floor(i / slidesPerRow);\n      column = i - row * slidesPerRow;\n    }\n\n    slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');\n  };\n\n  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n    const {\n      spaceBetween,\n      centeredSlides,\n      roundLengths\n    } = swiper.params;\n    const {\n      rows\n    } = swiper.params.grid;\n    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n    swiper.$wrapperEl.css({\n      [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n    });\n\n    if (centeredSlides) {\n      snapGrid.splice(0, snapGrid.length);\n      const newSlidesGrid = [];\n\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n\n      snapGrid.push(...newSlidesGrid);\n    }\n  };\n\n  swiper.grid = {\n    initSlides,\n    updateSlide,\n    updateWrapperSize\n  };\n}","export default function appendSlide(slides) {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params\n  } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\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  } else {\n    $wrapperEl.append(slides);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n}","export default function prependSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl,\n    activeIndex\n  } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n\n  let newActiveIndex = activeIndex + 1;\n\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\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  swiper.slideTo(newActiveIndex, 0, false);\n}","export default function addSlide(index, slides) {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n\n  const baseLength = swiper.slides.length;\n\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n  const slidesBuffer = [];\n\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\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\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}","export default function removeSlide(slidesIndexes) {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\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\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) {\n    swiper.update();\n  }\n\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}","export default function removeAllSlides() {\n  const swiper = this;\n  const slidesIndexes = [];\n\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n\n  swiper.removeSlide(slidesIndexes);\n}","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation(_ref) {\n  let {\n    swiper\n  } = _ref;\n  Object.assign(swiper, {\n    appendSlide: appendSlide.bind(swiper),\n    prependSlide: prependSlide.bind(swiper),\n    addSlide: addSlide.bind(swiper),\n    removeSlide: removeSlide.bind(swiper),\n    removeAllSlides: removeAllSlides.bind(swiper)\n  });\n}","export default function effectInit(params) {\n  const {\n    effect,\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams,\n    perspective,\n    recreateShadows,\n    getEffectParams\n  } = params;\n  on('beforeInit', () => {\n    if (swiper.params.effect !== effect) return;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n    if (perspective && perspective()) {\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n    }\n\n    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n    Object.assign(swiper.params, overwriteParamsResult);\n    Object.assign(swiper.originalParams, overwriteParamsResult);\n  });\n  on('setTranslate', () => {\n    if (swiper.params.effect !== effect) return;\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    if (swiper.params.effect !== effect) return;\n    setTransition(duration);\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.effect !== effect) return;\n\n    if (recreateShadows) {\n      if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows\n\n      swiper.slides.each(slideEl => {\n        const $slideEl = swiper.$(slideEl);\n        $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();\n      }); // create new one\n\n      recreateShadows();\n    }\n  });\n  let requireUpdateOnVirtual;\n  on('virtualUpdate', () => {\n    if (swiper.params.effect !== effect) return;\n\n    if (!swiper.slides.length) {\n      requireUpdateOnVirtual = true;\n    }\n\n    requestAnimationFrame(() => {\n      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n        setTranslate();\n        requireUpdateOnVirtual = false;\n      }\n    });\n  });\n}","export default function effectTarget(effectParams, $slideEl) {\n  if (effectParams.transformEl) {\n    return $slideEl.find(effectParams.transformEl).css({\n      'backface-visibility': 'hidden',\n      '-webkit-backface-visibility': 'hidden'\n    });\n  }\n\n  return $slideEl;\n}","export default function effectVirtualTransitionEnd(_ref) {\n  let {\n    swiper,\n    duration,\n    transformEl,\n    allSlides\n  } = _ref;\n  const {\n    slides,\n    activeIndex,\n    $wrapperEl\n  } = swiper;\n\n  if (swiper.params.virtualTranslate && duration !== 0) {\n    let eventTriggered = false;\n    let $transitionEndTarget;\n\n    if (allSlides) {\n      $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n    } else {\n      $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n    }\n\n    $transitionEndTarget.transitionEnd(() => {\n      if (eventTriggered) return;\n      if (!swiper || swiper.destroyed) return;\n      eventTriggered = true;\n      swiper.animating = false;\n      const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n      for (let i = 0; i < triggerEvents.length; i += 1) {\n        $wrapperEl.trigger(triggerEvents[i]);\n      }\n    });\n  }\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    fadeEffect: {\n      crossFade: false,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides\n    } = swiper;\n    const params = swiper.params.fadeEffect;\n\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\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.css({\n        opacity: slideOpacity\n      }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.fadeEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl,\n      allSlides: true\n    });\n  };\n\n  effectInit({\n    effect: 'fade',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94\n    }\n  });\n\n  const createSlideShadows = ($slideEl, progress, isHorizontal) => {\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\n    if (shadowBefore.length === 0) {\n      shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n      $slideEl.append(shadowBefore);\n    }\n\n    if (shadowAfter.length === 0) {\n      shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n      $slideEl.append(shadowAfter);\n    }\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  const recreateShadows = () => {\n    // create new ones\n    const isHorizontal = swiper.isHorizontal();\n    swiper.slides.each(slideEl => {\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      createSlideShadows($(slideEl), progress, isHorizontal);\n    });\n  };\n\n  const setTranslate = () => {\n    const {\n      $el,\n      $wrapperEl,\n      slides,\n      width: swiperWidth,\n      height: swiperHeight,\n      rtlTranslate: rtl,\n      size: swiperSize,\n      browser\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\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n\n        $cubeShadowEl.css({\n          height: `${swiperWidth}px`\n        });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\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\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\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\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = slideIndex * 90 + progress * 90;\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n      }\n\n      $slideEl.transform(transform);\n\n      if (params.slideShadows) {\n        createSlideShadows($slideEl, progress, isHorizontal);\n      }\n    }\n\n    $wrapperEl.css({\n      '-webkit-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 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\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\n    const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n    $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n    $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n  };\n\n  const setTransition = duration => {\n    const {\n      $el,\n      slides\n    } = swiper;\n    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  };\n\n  effectInit({\n    effect: 'cube',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.cubeEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      resistanceRatio: 0,\n      spaceBetween: 0,\n      centeredSlides: false,\n      virtualTranslate: true\n    })\n  });\n}","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n  const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n  let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n  if (!$shadowEl.length) {\n    $shadowEl = $(`<div class=\"swiper-slide-shadow${side ? `-${side}` : ''}\"></div>`);\n    $shadowContainer.append($shadowEl);\n  }\n\n  return $shadowEl;\n}","import $ from '../../shared/dom.js';\nimport createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n      transformEl: null\n    }\n  });\n\n  const createSlideShadows = ($slideEl, progress, params) => {\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\n    if (shadowBefore.length === 0) {\n      shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n    }\n\n    if (shadowAfter.length === 0) {\n      shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n    }\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  const recreateShadows = () => {\n    // Set shadows\n    const params = swiper.params.flipEffect;\n    swiper.slides.each(slideEl => {\n      const $slideEl = $(slideEl);\n      let progress = $slideEl[0].progress;\n\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n\n      createSlideShadows($slideEl, progress, params);\n    });\n  };\n\n  const setTranslate = () => {\n    const {\n      slides,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.flipEffect;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n\n      const offset = $slideEl[0].swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let ty = 0;\n\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 (params.slideShadows) {\n        createSlideShadows($slideEl, progress, params);\n      }\n\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.flipEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl\n    });\n  };\n\n  effectInit({\n    effect: 'flip',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.flipEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      scale: 1,\n      modifier: 1,\n      slideShadows: true,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      width: swiperWidth,\n      height: swiperHeight,\n      slides,\n      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; // Each slide offset from center\n\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 centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n      let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = parseFloat(params.stretch) / 100 * slideSize;\n      }\n\n      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\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      if (Math.abs(scale) < 0.001) scale = 0;\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\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\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n        }\n\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n        }\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\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.coverflowEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n  };\n\n  effectInit({\n    effect: 'coverflow',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true\n    })\n  });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    creativeEffect: {\n      transformEl: null,\n      limitProgress: 1,\n      shadowPerProgress: false,\n      progressMultiplier: 1,\n      perspective: true,\n      prev: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      },\n      next: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      }\n    }\n  });\n\n  const getTranslateValue = value => {\n    if (typeof value === 'string') return value;\n    return `${value}px`;\n  };\n\n  const setTranslate = () => {\n    const {\n      slides,\n      $wrapperEl,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.creativeEffect;\n    const {\n      progressMultiplier: multiplier\n    } = params;\n    const isCenteredSlides = swiper.params.centeredSlides;\n\n    if (isCenteredSlides) {\n      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n      $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideProgress = $slideEl[0].progress;\n      const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n      let originalProgress = progress;\n\n      if (!isCenteredSlides) {\n        originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n      }\n\n      const offset = $slideEl[0].swiperSlideOffset;\n      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n      const r = [0, 0, 0];\n      let custom = false;\n\n      if (!swiper.isHorizontal()) {\n        t[1] = t[0];\n        t[0] = 0;\n      }\n\n      let data = {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        scale: 1,\n        opacity: 1\n      };\n\n      if (progress < 0) {\n        data = params.next;\n        custom = true;\n      } else if (progress > 0) {\n        data = params.prev;\n        custom = true;\n      } // set translate\n\n\n      t.forEach((value, index) => {\n        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n      }); // set rotates\n\n      r.forEach((value, index) => {\n        r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n      });\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const translateString = t.join(', ');\n      const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n      if (custom && data.shadow || !custom) {\n        let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n        if ($shadowEl.length === 0 && data.shadow) {\n          $shadowEl = createShadow(params, $slideEl);\n        }\n\n        if ($shadowEl.length) {\n          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n          $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n        }\n      }\n\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform).css({\n        opacity: opacityString\n      });\n\n      if (data.origin) {\n        $targetEl.css('transform-origin', data.origin);\n      }\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.creativeEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl,\n      allSlides: true\n    });\n  };\n\n  effectInit({\n    effect: 'creative',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => swiper.params.creativeEffect.perspective,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    cardsEffect: {\n      slideShadows: true,\n      transformEl: null,\n      rotate: true\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides,\n      activeIndex\n    } = swiper;\n    const params = swiper.params.cardsEffect;\n    const {\n      startTranslate,\n      isTouched\n    } = swiper.touchEventsData;\n    const currentTranslate = swiper.translate;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideProgress = $slideEl[0].progress;\n      const progress = Math.min(Math.max(slideProgress, -4), 4);\n      let offset = $slideEl[0].swiperSlideOffset;\n\n      if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n        swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n      }\n\n      if (swiper.params.centeredSlides && swiper.params.cssMode) {\n        offset -= slides[0].swiperSlideOffset;\n      }\n\n      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let tY = 0;\n      const tZ = -100 * Math.abs(progress);\n      let scale = 1;\n      let rotate = -2 * progress;\n      let tXAdd = 8 - Math.abs(progress) * 0.75;\n      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n      if (isSwipeToNext || isSwipeToPrev) {\n        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n        rotate += -28 * progress * subProgress;\n        scale += -0.5 * subProgress;\n        tXAdd += 96 * subProgress;\n        tY = `${-25 * subProgress * Math.abs(progress)}%`;\n      }\n\n      if (progress < 0) {\n        // next\n        tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n      } else if (progress > 0) {\n        // prev\n        tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n      } else {\n        tX = `${tX}px`;\n      }\n\n      if (!swiper.isHorizontal()) {\n        const prevY = tY;\n        tY = tX;\n        tX = prevY;\n      }\n\n      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n      const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${params.rotate ? rotate : 0}deg)\n        scale(${scaleString})\n      `;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n        if ($shadowEl.length === 0) {\n          $shadowEl = createShadow(params, $slideEl);\n        }\n\n        if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.cardsEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl\n    });\n  };\n\n  effectInit({\n    effect: 'cards',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}","/**\n * Swiper 8.2.6\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2022 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: June 29, 2022\n */\n\nexport { default as Swiper, default } from './core/core.js';\nexport { default as Virtual } from './modules/virtual/virtual.js';\nexport { default as Keyboard } from './modules/keyboard/keyboard.js';\nexport { default as Mousewheel } from './modules/mousewheel/mousewheel.js';\nexport { default as Navigation } from './modules/navigation/navigation.js';\nexport { default as Pagination } from './modules/pagination/pagination.js';\nexport { default as Scrollbar } from './modules/scrollbar/scrollbar.js';\nexport { default as Parallax } from './modules/parallax/parallax.js';\nexport { default as Zoom } from './modules/zoom/zoom.js';\nexport { default as Lazy } from './modules/lazy/lazy.js';\nexport { default as Controller } from './modules/controller/controller.js';\nexport { default as A11y } from './modules/a11y/a11y.js';\nexport { default as History } from './modules/history/history.js';\nexport { default as HashNavigation } from './modules/hash-navigation/hash-navigation.js';\nexport { default as Autoplay } from './modules/autoplay/autoplay.js';\nexport { default as Thumbs } from './modules/thumbs/thumbs.js';\nexport { default as FreeMode } from './modules/free-mode/free-mode.js';\nexport { default as Grid } from './modules/grid/grid.js';\nexport { default as Manipulation } from './modules/manipulation/manipulation.js';\nexport { default as EffectFade } from './modules/effect-fade/effect-fade.js';\nexport { default as EffectCube } from './modules/effect-cube/effect-cube.js';\nexport { default as EffectFlip } from './modules/effect-flip/effect-flip.js';\nexport { default as EffectCoverflow } from './modules/effect-coverflow/effect-coverflow.js';\nexport { default as EffectCreative } from './modules/effect-creative/effect-creative.js';\nexport { default as EffectCards } from './modules/effect-cards/effect-cards.js';","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {// no getter for object\n    }\n\n    try {\n      delete object[key];\n    } catch (e) {// something got wrong\n    }\n  });\n}\n\nfunction nextTick(callback, delay) {\n  if (delay === void 0) {\n    delay = 0;\n  }\n\n  return setTimeout(callback, delay);\n}\n\nfunction now() {\n  return Date.now();\n}\n\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n\n  if (!style) {\n    style = el.style;\n  }\n\n  return style;\n}\n\nfunction getTranslate(el, axis) {\n  if (axis === void 0) {\n    axis = 'x';\n  }\n\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el, null);\n\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n    } // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n\n\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; // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n\n  return curTransform || 0;\n}\n\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n  const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n  for (let i = 1; i < arguments.length; i += 1) {\n    const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\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\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n\n  return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll(_ref) {\n  let {\n    swiper,\n    targetPosition,\n    side\n  } = _ref;\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n\n  const animate = () => {\n    time = new Date().getTime();\n\n    if (startTime === null) {\n      startTime = time;\n    }\n\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n\n  animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };"],"sourceRoot":"","x_microsoft_symbol_client_key":"abce7df9b985e9f645172bb571b961039224e8938b8f0ef424c650c78d31a916"}