{"version":3,"sources":["webpack:///./src/components/common/BG.vue?7a00","webpack:///src/components/common/BG.vue","webpack:///./src/components/common/BG.vue?5e4b","webpack:///./src/components/common/BG.vue","webpack:///./src/components/common/ScrollNav.vue?c24a","webpack:///./node_modules/better-scroll/dist/bscroll.esm.js","webpack:///src/components/common/ScrollNav.vue","webpack:///./src/components/common/ScrollNav.vue?572e","webpack:///./src/components/common/ScrollNav.vue","webpack:///./src/components/common/ScrollNav.vue?b83b","webpack:///./src/components/common/BG.vue?fed5"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","style","bgImg","_t","staticRenderFns","data","window","innerWidth","document","documentElement","clientWidth","pcImg","mobileImg","props","default","type","String","methods","myresize","watch","mounted","addEventListener","component","ref","_l","item","index","key","class","active","cusValue","activeIndex","on","$event","scrollNavClick","_v","_s","cusKey","spliceOne","list","length","pop","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_i","Symbol","iterator","next","done","push","value","err","Array","isArray","Object","TypeError","toConsumableArray","arr2","from","eventMixin","BScroll","prototype","fn","context","arguments","_events","once","magic","off","apply","count","trigger","events","len","eventsCopy","concat","event","_event","slice","call","inBrowser","ua","navigator","userAgent","toLowerCase","isWeChatDevTools","test","isAndroid","indexOf","getNow","performance","now","timing","navigationStart","Date","extend","target","_len","rest","_key","source","isUndef","v","getDistance","x","y","Math","sqrt","elementStyle","createElement","vendor","transformNames","standard","webkit","Moz","O","ms","prefixStyle","charAt","toUpperCase","substr","addEvent","el","capture","passive","removeEvent","removeEventListener","offset","left","top","offsetLeft","offsetTop","offsetParent","offsetToBody","rect","getBoundingClientRect","pageXOffset","pageYOffset","cssVendor","transform","transition","hasPerspective","hasTouch","hasTransform","hasTransition","transitionTimingFunction","transitionDuration","transitionDelay","transformOrigin","transitionEnd","TOUCH_EVENT","MOUSE_EVENT","eventType","touchstart","touchmove","touchend","mousedown","mousemove","mouseup","getRect","SVGElement","width","height","offsetWidth","offsetHeight","preventDefaultException","exceptions","tap","e","eventName","ev","createEvent","initEvent","pageX","pageY","dispatchEvent","click","eventSource","changedTouches","posSrc","screenX","screenY","clientX","clientY","bubbles","cancelable","MouseEvent","forwardedTouchEvent","_constructed","dblclick","prepend","firstChild","before","appendChild","parentNode","insertBefore","removeChild","child","DEFAULT_OPTIONS","startX","startY","scrollX","scrollY","freeScroll","directionLockThreshold","eventPassthrough","bounce","bounceTime","momentum","momentumLimitTime","momentumLimitDistance","swipeTime","swipeBounceTime","deceleration","flickLimitTime","flickLimitDistance","resizePolling","probeType","preventDefault","tagName","HWCompositing","useTransition","useTransform","bindToWrapper","disableMouse","disableTouch","observeDOM","autoBlur","wheel","snap","scrollbar","pullDownRefresh","pullUpLoad","mouseWheel","stopPropagation","zoom","infinity","initMixin","_init","options","_handleOptions","directionX","directionY","setScale","_addDOMEvents","_initExtFeatures","_watchTransition","_initDOMObserver","_handleAutoBlur","refresh","scrollTo","enable","scale","lastScale","translateZ","eventOperation","_handleDOMEvents","_removeDOMEvents","wrapper","scroller","_initSnap","_initScrollbar","_initPullUp","_initPullDown","_initWheel","_initMouseWheel","_initZoom","_initInfinite","defineProperty","me","isInTransition","get","set","newVal","children","pointerEvents","pulling","activeElement","blur","_this","MutationObserver","timer","observer","mutations","_shouldNotRefresh","immediateRefresh","deferredRefresh","mutation","clearTimeout","setTimeout","config","attributes","childList","subtree","observe","disconnect","_checkDOMUpdate","outsideBoundaries","minScrollX","maxScrollX","minScrollY","maxScrollY","stopFromTransition","scrollerRect","oldWidth","oldHeight","check","destroyed","newWidth","newHeight","_this2","handleEvent","_start","touches","_zoomStart","_zoom","_move","scaled","_zoomEnd","_end","_resize","_transitionEnd","enabled","_onMouseWheel","isWrapperStatic","getComputedStyle","position","wrapperRect","wrapperWidth","wrapperHeight","scrollerWidth","round","scrollerHeight","relativeX","relativeY","items","_checkWheelAllDisabled","itemHeight","selectedIndex","hasHorizontalScroll","hasVerticalScroll","endTime","wrapperOffset","resetPosition","disable","ease","swipe","t","swipeBounce","current","start","time","lowerMargin","upperMargin","wrapperSize","scroll","distance","speed","abs","duration","rate","destination","_findNearestValidWheel","max","min","DEFAULT_INTERVAL","noop","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","callback","interval","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","id","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_RIGHT","PROBE_DEBOUNCE","PROBE_REALTIME","warn","msg","console","error","assert","condition","Error","coreMixin","_eventType","button","initiated","moved","distX","distY","movingDirectionX","movingDirectionY","directionLocked","_transitionTime","startTime","stop","point","absStartX","absStartY","pointX","pointY","deltaX","deltaY","absDistX","absDistY","timestamp","newX","newY","bottom","right","_translate","scrollLeft","body","scrollTop","pX","pY","clientHeight","_checkPullDown","_checkClick","flick","momentumX","momentumY","adjustTime","easing","_nearestSnap","currentPage","snapSpeed","preventClick","className","wheelWrapperClass","_offset","_dblclick","dblclickTrigged","lastClickTime","_dblclick$delay","delay","resizeTimeout","_startProbe","probeTimer","probe","pos","getComputedPosition","scrollerStyle","indicators","transitionTime","_transitionTimingFunction","_i2","needReset","_options$wheel$rotate","rotate","deg","_i3","updatePosition","_animate","destX","destY","easingFn","startScale","destScale","destTime","step","isAnimating","newScale","animateTimer","scrollBy","isSilent","_reflow","scrollToElement","offsetX","offsetY","nodeType","querySelector","classList","contains","wheelItemClass","easeing","roundX","roundY","matrix","split","replace","destroy","snapMixin","loop","cloneNode","querySelectorAll","pages","stepX","stepY","cx","cy","l","m","n","_checkSnapLoop","initPageX","_loopX","initPageY","_loopY","_goToPage","snapThreshold","threshold","snapThresholdX","snapThresholdY","listenFlick","_children","posX","posY","goToPage","prev","getCurrentPage","wheelMixin","wheelTo","getSelectedIndex","wheelDisabledItemClass","currentIndex","cacheIndex","wheelItemsAllDisabled","INDICATOR_MIN_LEN","scrollbarMixin","_options$scrollbar","_options$scrollbar$fa","fade","_options$scrollbar$in","interactive","indicator","createScrollbar","direction","_insertScrollBar","Indicator","_removeScrollBars","cssText","wrapperStyle","indicatorStyle","visible","opacity","sizeRatioX","sizeRatioY","maxPosX","maxPosY","pullDownMixin","_options$pullDownRefr","_options$pullDownRefr2","_options$pullDownRefr3","finishPullDown","openPullDown","closePullDown","autoPullDownRefresh","_options$pullDownRefr4","_options$pullDownRefr5","_options$pullDownRefr6","pullUpMixin","pullupWatching","_watchPullUp","_checkToEnd","_options$pullUpLoad$t","finishPullUp","openPullUp","closePullUp","mouseWheelMixin","_handleMouseWheelEvent","mouseWheelTimer","mouseWheelEndTimer","firstWheelOpreation","_options$mouseWheel","_options$mouseWheel$s","_options$mouseWheel$i","invert","_options$mouseWheel$e","easeTime","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","detail","needTriggerEnd","zoomMixin","_options$zoom","_options$zoom$start","_options$zoom$min","_options$zoom$max","_zoomTo","originX","originY","zoomTo","_offsetToBody","firstFinger","secondFinger","startDistance","_offsetToBody2","_options$zoom2","_options$zoom2$min","_options$zoom2$max","pow","_options$zoom3","_options$zoom3$min","_options$zoom3$max","_shouldShow","_calculate","hold","fadeTimeout","indicatorHeight","_height","indicatorWidth","_width","lastPointX","lastPointY","_handleMoveEvents","_pos","snapOption","_snapOption$easing","display","RUNWAY_ITEMS","RUNWAY_ITEMS_OPPOSITE","ANIMATION_DURATION_MS","DEFAULT_SCROLL_RUNWAY","infiniteMixin","infiniteScroller","InfiniteScroller","isTombstoneNode","node","createTombstone","fetch","firstAttachedItem","lastAttachedItem","anchorScrollTop","anchorItem","tombstoneHeight","tombstoneWidth","tombstones","tombstonesAnimationHandlers","loadedItems","requestInProgress","hasMore","wrapperEl","scrollerEl","onResize","_onResizeHandler","onScroll","forEach","handler","delta","_calculateAnchoredItem","lastScreenItem","end","fill","maybeRequestContent","tombstone","attachContent","_this3","itemsNeeded","then","addContent","tombstoneLen","_removeTombstones","curPos","_fixScrollPosition","_setupAnimations","_addItem","unusedNodes","_collectUnusedNodes","tombstoneAnimations","_createDOMNodes","_cleanupUnusedNodes","_cacheNodeSize","resetMore","markIndex","itemLen","currentNode","currentData","splice","zIndex","_getTombStone","isTombstone","_this4","animation","_animation","tombstoneNode","tombstoneAnimationsHandler","_animation2","initialAnchor","ceil","floor","Version","initBScroll","$nextTick","$emit","aBScroll"],"mappings":"gKAAA,IAAIA,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,eAAeC,MAAO,yBAAyBP,EAAIQ,MAAM,KAAM,CAACR,EAAIS,GAAG,YAAY,IACrMC,EAAkB,GCMtB,GACEC,KADF,WAEI,MAAO,CACLH,OAAQI,OAAOC,YAAcC,SAASC,gBAAgBC,aAAe,IAAMf,KAAKgB,MAAQhB,KAAKiB,YAGjGC,MAAO,CACLF,MAAO,CACLG,QAAS,GACTC,KAAMC,QAERJ,UAAW,CACTE,QAAS,GACTC,KAAMC,SAGVC,QAAS,CACPC,SADJ,YAEWZ,OAAOC,YAAcC,SAASC,gBAAgBC,aAAe,IAChEf,KAAKO,MAAQP,KAAKgB,MAElBhB,KAAKO,MAAQP,KAAKiB,YAIxBO,MAAO,CACLR,MADJ,WAEMhB,KAAKuB,YAEPN,UAJJ,WAKMjB,KAAKuB,aAGTE,QAjCF,WAkCId,OAAOe,iBAAiB,SAAU1B,KAAKuB,YCzCgT,I,wBCQvVI,EAAY,eACd,EACA7B,EACAW,GACA,EACA,KACA,WACA,MAIa,OAAAkB,E,6CCnBf,IAAI7B,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACyB,IAAI,UAAUvB,YAAY,WAAW,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqBN,EAAI8B,GAAI9B,EAAQ,MAAE,SAAS+B,EAAKC,GAAO,OAAO5B,EAAG,MAAM,CAAC6B,IAAID,EAAM1B,YAAY,YAAY4B,MAAM,CAACC,OAAQJ,EAAK/B,EAAIoC,WAAapC,EAAIqC,aAAaC,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOvC,EAAIwC,eAAeT,EAAKQ,MAAW,CAACvC,EAAIyC,GAAGzC,EAAI0C,GAAGX,EAAK/B,EAAI2C,eAAc,MACpbjC,EAAkB;;;;;;ACMtB,SAASkC,EAAUC,EAAMb,GACvB,KAAOA,EAAQ,EAAIa,EAAKC,OAAQd,IAC9Ba,EAAKb,GAASa,EAAKb,EAAQ,GAG7Ba,EAAKE,MAGP,IAAIC,EAAgB,WAClB,SAASC,EAAcC,EAAKC,GAC1B,IAAIC,EAAO,GACPC,GAAK,EACLC,GAAK,EACLC,OAAKC,EAET,IACE,IAAK,IAAiCd,EAA7Be,EAAKP,EAAIQ,OAAOC,cAAmBN,GAAMX,EAAKe,EAAGG,QAAQC,MAAOR,GAAK,EAG5E,GAFAD,EAAKU,KAAKpB,EAAGqB,OAETZ,GAAKC,EAAKN,SAAWK,EAAG,MAE9B,MAAOa,GACPV,GAAK,EACLC,EAAKS,EACL,QACA,KACOX,GAAMI,EAAG,WAAWA,EAAG,YAC5B,QACA,GAAIH,EAAI,MAAMC,GAIlB,OAAOH,EAGT,OAAO,SAAUF,EAAKC,GACpB,GAAIc,MAAMC,QAAQhB,GAChB,OAAOA,EACF,GAAIQ,OAAOC,YAAYQ,OAAOjB,GACnC,OAAOD,EAAcC,EAAKC,GAE1B,MAAM,IAAIiB,UAAU,yDAjCN,GAkDhBC,EAAoB,SAAUnB,GAChC,GAAIe,MAAMC,QAAQhB,GAAM,CACtB,IAAK,IAAIC,EAAI,EAAGmB,EAAOL,MAAMf,EAAIJ,QAASK,EAAID,EAAIJ,OAAQK,IAAKmB,EAAKnB,GAAKD,EAAIC,GAE7E,OAAOmB,EAEP,OAAOL,MAAMM,KAAKrB,IAItB,SAASsB,EAAWC,GAClBA,EAAQC,UAAUpC,GAAK,SAAUjB,EAAMsD,GACrC,IAAIC,EAAUC,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,GAAmBA,UAAU,GAAK5E,KAE7EA,KAAK6E,QAAQzD,KAChBpB,KAAK6E,QAAQzD,GAAQ,IAGvBpB,KAAK6E,QAAQzD,GAAMyC,KAAK,CAACa,EAAIC,KAG/BH,EAAQC,UAAUK,KAAO,SAAU1D,EAAMsD,GACvC,IAAIC,EAAUC,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,GAAmBA,UAAU,GAAK5E,KAElF,SAAS+E,IACP/E,KAAKgF,IAAI5D,EAAM2D,GAEfL,EAAGO,MAAMN,EAASC,WAGpBG,EAAML,GAAKA,EAEX1E,KAAKqC,GAAGjB,EAAM2D,IAGhBP,EAAQC,UAAUO,IAAM,SAAU5D,EAAMsD,GACtC,IAAIG,EAAU7E,KAAK6E,QAAQzD,GAC3B,GAAKyD,EAAL,CAIA,IAAIK,EAAQL,EAAQhC,OACpB,MAAOqC,KACDL,EAAQK,GAAO,KAAOR,GAAMG,EAAQK,GAAO,IAAML,EAAQK,GAAO,GAAGR,KAAOA,IAC5E/B,EAAUkC,EAASK,KAKzBV,EAAQC,UAAUU,QAAU,SAAU/D,GACpC,IAAIgE,EAASpF,KAAK6E,QAAQzD,GAC1B,GAAKgE,EAML,IAFA,IAAIC,EAAMD,EAAOvC,OACbyC,EAAa,GAAGC,OAAOnB,EAAkBgB,IACpClC,EAAI,EAAGA,EAAImC,EAAKnC,IAAK,CAC5B,IAAIsC,EAAQF,EAAWpC,GAEnBuC,EAAS1C,EAAcyC,EAAO,GAC9Bd,EAAKe,EAAO,GACZd,EAAUc,EAAO,GAEjBf,GACFA,EAAGO,MAAMN,EAAS,GAAGe,MAAMC,KAAKf,UAAW,MAOnD,IAAIgB,EAA8B,qBAAXjF,OACnBkF,EAAKD,GAAaE,UAAUC,UAAUC,cACtCC,EAAmBJ,GAAM,iBAAiBK,KAAKL,GAC/CM,EAAYN,GAAMA,EAAGO,QAAQ,WAAa,EAE9C,SAASC,IACP,OAAO1F,OAAO2F,aAAe3F,OAAO2F,YAAYC,IAAM5F,OAAO2F,YAAYC,MAAQ5F,OAAO2F,YAAYE,OAAOC,iBAAmB,IAAIC,KAGpI,SAASC,EAAOC,GACd,IAAK,IAAIC,EAAOjC,UAAU/B,OAAQiE,EAAO9C,MAAM6C,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAC9FD,EAAKC,EAAO,GAAKnC,UAAUmC,GAG7B,IAAK,IAAI7D,EAAI,EAAGA,EAAI4D,EAAKjE,OAAQK,IAAK,CACpC,IAAI8D,EAASF,EAAK5D,GAClB,IAAK,IAAIlB,KAAOgF,EACdJ,EAAO5E,GAAOgF,EAAOhF,GAGzB,OAAO4E,EAGT,SAASK,EAAQC,GACf,YAAa3D,IAAN2D,GAAyB,OAANA,EAG5B,SAASC,EAAYC,EAAGC,GACtB,OAAOC,KAAKC,KAAKH,EAAIA,EAAIC,EAAIA,GAG/B,IAAIG,EAAe5B,GAAa/E,SAAS4G,cAAc,OAAOnH,MAE1DoH,EAAS,WACX,IAAK9B,EACH,OAAO,EAGT,IAAI+B,EAAiB,CACnBC,SAAU,YACVC,OAAQ,kBACRC,IAAK,eACLC,EAAG,aACHC,GAAI,eAGN,IAAK,IAAIhG,KAAO2F,EACd,QAA0CpE,IAAtCiE,EAAaG,EAAe3F,IAC9B,OAAOA,EAIX,OAAO,EAnBI,GAsBb,SAASiG,EAAY3H,GACnB,OAAe,IAAXoH,IAIW,aAAXA,EACY,kBAAVpH,EACK,gBAEFA,EAGFoH,EAASpH,EAAM4H,OAAO,GAAGC,cAAgB7H,EAAM8H,OAAO,IAG/D,SAASC,EAASC,EAAIlH,EAAMsD,EAAI6D,GAC9BD,EAAG5G,iBAAiBN,EAAMsD,EAAI,CAAE8D,SAAS,EAAOD,UAAWA,IAG7D,SAASE,EAAYH,EAAIlH,EAAMsD,EAAI6D,GACjCD,EAAGI,oBAAoBtH,EAAMsD,EAAI,CAAE8D,SAAS,EAAOD,UAAWA,IAGhE,SAASI,EAAOL,GACd,IAAIM,EAAO,EACPC,EAAM,EAEV,MAAOP,EACLM,GAAQN,EAAGQ,WACXD,GAAOP,EAAGS,UACVT,EAAKA,EAAGU,aAGV,MAAO,CACLJ,KAAMA,EACNC,IAAKA,GAIT,SAASI,EAAaX,GACpB,IAAIY,EAAOZ,EAAGa,wBAEd,MAAO,CACLP,OAAQM,EAAKN,KAAOjI,OAAOyI,aAC3BP,MAAOK,EAAKL,IAAMlI,OAAO0I,cAI7B,IAAIC,EAAY5B,GAAqB,aAAXA,EAAwB,IAAMA,EAAO1B,cAAgB,IAAM,GAEjFuD,EAAYtB,EAAY,aACxBuB,EAAavB,EAAY,cAEzBwB,EAAiB7D,GAAaqC,EAAY,iBAAkBT,EAE5DkC,EAAW9D,IAAc,iBAAkBjF,QAAUsF,GACrD0D,GAA6B,IAAdJ,EACfK,EAAgBhE,GAAa4D,KAAchC,EAE3ClH,EAAQ,CACViJ,UAAWA,EACXC,WAAYA,EACZK,yBAA0B5B,EAAY,4BACtC6B,mBAAoB7B,EAAY,sBAChC8B,gBAAiB9B,EAAY,mBAC7B+B,gBAAiB/B,EAAY,mBAC7BgC,cAAehC,EAAY,kBAGzBiC,EAAc,EACdC,EAAc,EAEdC,EAAY,CACdC,WAAYH,EACZI,UAAWJ,EACXK,SAAUL,EAEVM,UAAWL,EACXM,UAAWN,EACXO,QAASP,GAGX,SAASQ,EAAQrC,GACf,GAAIA,aAAc3H,OAAOiK,WAAY,CACnC,IAAI1B,EAAOZ,EAAGa,wBACd,MAAO,CACLN,IAAKK,EAAKL,IACVD,KAAMM,EAAKN,KACXiC,MAAO3B,EAAK2B,MACZC,OAAQ5B,EAAK4B,QAGf,MAAO,CACLjC,IAAKP,EAAGS,UACRH,KAAMN,EAAGQ,WACT+B,MAAOvC,EAAGyC,YACVD,OAAQxC,EAAG0C,cAKjB,SAASC,EAAwB3C,EAAI4C,GACnC,IAAK,IAAIhI,KAAKgI,EACZ,GAAIA,EAAWhI,GAAGgD,KAAKoC,EAAGpF,IACxB,OAAO,EAGX,OAAO,EAGT,SAASiI,EAAIC,EAAGC,GACd,IAAIC,EAAKzK,SAAS0K,YAAY,SAC9BD,EAAGE,UAAUH,GAAW,GAAM,GAC9BC,EAAGG,MAAQL,EAAEK,MACbH,EAAGI,MAAQN,EAAEM,MACbN,EAAExE,OAAO+E,cAAcL,GAGzB,SAASM,EAAMR,GACb,IAAI5F,EAAQZ,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,GAAmBA,UAAU,GAAK,QAE5EiH,OAAc,EACH,YAAXT,EAAEhK,MAAiC,gBAAXgK,EAAEhK,KAC5ByK,EAAcT,EACM,aAAXA,EAAEhK,MAAkC,gBAAXgK,EAAEhK,OACpCyK,EAAcT,EAAEU,eAAe,IAEjC,IAAIC,EAAS,GACTF,IACFE,EAAOC,QAAUH,EAAYG,SAAW,EACxCD,EAAOE,QAAUJ,EAAYI,SAAW,EACxCF,EAAOG,QAAUL,EAAYK,SAAW,EACxCH,EAAOI,QAAUN,EAAYM,SAAW,GAE1C,IAAIb,OAAK,EACLc,GAAU,EACVC,GAAa,EACjB,GAA0B,qBAAfC,WACT,IACEhB,EAAK,IAAIgB,WAAW9G,EAAOmB,EAAO,CAChCyF,QAASA,EACTC,WAAYA,GACXN,IACH,MAAOX,GACPG,SAGFA,IAGF,SAASA,IACPD,EAAKzK,SAAS0K,YAAY,SAC1BD,EAAGE,UAAUhG,EAAO4G,EAASC,GAC7B1F,EAAO2E,EAAIS,GAIbT,EAAGiB,qBAAsB,EACzBjB,EAAGkB,cAAe,EAClBpB,EAAExE,OAAO+E,cAAcL,GAGzB,SAASmB,EAASrB,GAChBQ,EAAMR,EAAG,YAGX,SAASsB,EAAQpE,EAAI1B,GACfA,EAAO+F,WACTC,EAAOtE,EAAI1B,EAAO+F,YAElB/F,EAAOiG,YAAYvE,GAIvB,SAASsE,EAAOtE,EAAI1B,GAClBA,EAAOkG,WAAWC,aAAazE,EAAI1B,GAGrC,SAASoG,EAAY1E,EAAI2E,GACvB3E,EAAG0E,YAAYC,GAGjB,IAAIC,EAAkB,CACpBC,OAAQ,EACRC,OAAQ,EACRC,SAAS,EACTC,SAAS,EACTC,YAAY,EACZC,uBAAwB,EACxBC,iBAAkB,GAClB7B,OAAO,EACPT,KAAK,EAULuC,QAAQ,EACRC,WAAY,IACZC,UAAU,EACVC,kBAAmB,IACnBC,sBAAuB,GACvBC,UAAW,KACXC,gBAAiB,IACjBC,aAAc,MACdC,eAAgB,IAChBC,mBAAoB,IACpBC,cAAe,GACfC,UAAW,EACXC,gBAAgB,EAChBrD,wBAAyB,CACvBsD,QAAS,0CAEXC,eAAe,EACfC,eAAe,EACfC,cAAc,EACdC,eAAe,EACfC,aAAclF,EACdmF,cAAenF,EACfoF,YAAY,EACZC,UAAU,EAWVC,OAAO,EAmBPC,MAAM,EAQNC,WAAW,EAQXC,iBAAiB,EAOjBC,YAAY,EASZC,YAAY,EACZC,iBAAiB,EASjBC,MAAM,EAYNC,UAAU,EAOV/C,UAAU,GAGZ,SAASgD,EAAUjL,GACjBA,EAAQC,UAAUiL,MAAQ,SAAUC,GAClC3P,KAAK4P,eAAeD,GAGpB3P,KAAK6E,QAAU,GAEf7E,KAAKoH,EAAI,EACTpH,KAAKqH,EAAI,EACTrH,KAAK6P,WAAa,EAClB7P,KAAK8P,WAAa,EAElB9P,KAAK+P,SAAS,GAEd/P,KAAKgQ,gBAELhQ,KAAKiQ,mBAELjQ,KAAKkQ,mBAEDlQ,KAAK2P,QAAQb,YACf9O,KAAKmQ,mBAGHnQ,KAAK2P,QAAQZ,UACf/O,KAAKoQ,kBAGPpQ,KAAKqQ,UAEArQ,KAAK2P,QAAQV,MAChBjP,KAAKsQ,SAAStQ,KAAK2P,QAAQxC,OAAQnN,KAAK2P,QAAQvC,QAGlDpN,KAAKuQ,UAGP/L,EAAQC,UAAUsL,SAAW,SAAUS,GACrCxQ,KAAKyQ,UAAYxJ,EAAQjH,KAAKwQ,OAASA,EAAQxQ,KAAKwQ,MACpDxQ,KAAKwQ,MAAQA,GAGfhM,EAAQC,UAAUmL,eAAiB,SAAUD,GAC3C3P,KAAK2P,QAAUhJ,EAAO,GAAIuG,EAAiByC,GAE3C3P,KAAK0Q,WAAa1Q,KAAK2P,QAAQnB,eAAiB/E,EAAiB,iBAAmB,GAEpFzJ,KAAK2P,QAAQlB,cAAgBzO,KAAK2P,QAAQlB,eAAiB7E,EAC3D5J,KAAK2P,QAAQjB,aAAe1O,KAAK2P,QAAQjB,cAAgB/E,EAEzD3J,KAAK2P,QAAQrB,gBAAkBtO,KAAK2P,QAAQlC,kBAAoBzN,KAAK2P,QAAQrB,eAG7EtO,KAAK2P,QAAQtC,QAA4C,eAAlCrN,KAAK2P,QAAQlC,kBAA4CzN,KAAK2P,QAAQtC,QAC7FrN,KAAK2P,QAAQrC,QAA4C,aAAlCtN,KAAK2P,QAAQlC,kBAA0CzN,KAAK2P,QAAQrC,QAG3FtN,KAAK2P,QAAQpC,WAAavN,KAAK2P,QAAQpC,aAAevN,KAAK2P,QAAQlC,iBACnEzN,KAAK2P,QAAQnC,uBAAyBxN,KAAK2P,QAAQlC,iBAAmB,EAAIzN,KAAK2P,QAAQnC,wBAE9D,IAArBxN,KAAK2P,QAAQxE,MACfnL,KAAK2P,QAAQxE,IAAM,QAIvB3G,EAAQC,UAAUuL,cAAgB,WAChC,IAAIW,EAAiBtI,EACrBrI,KAAK4Q,iBAAiBD,IAGxBnM,EAAQC,UAAUoM,iBAAmB,WACnC,IAAIF,EAAiBlI,EACrBzI,KAAK4Q,iBAAiBD,IAGxBnM,EAAQC,UAAUmM,iBAAmB,SAAUD,GAC7C,IAAI/J,EAAS5G,KAAK2P,QAAQhB,cAAgB3O,KAAK8Q,QAAUnQ,OACzDgQ,EAAehQ,OAAQ,oBAAqBX,MAC5C2Q,EAAehQ,OAAQ,SAAUX,MAE7BA,KAAK2P,QAAQ/D,OACf+E,EAAe3Q,KAAK8Q,QAAS,QAAS9Q,MAAM,GAGzCA,KAAK2P,QAAQf,eAChB+B,EAAe3Q,KAAK8Q,QAAS,YAAa9Q,MAC1C2Q,EAAe/J,EAAQ,YAAa5G,MACpC2Q,EAAe/J,EAAQ,cAAe5G,MACtC2Q,EAAe/J,EAAQ,UAAW5G,OAGhC0J,IAAa1J,KAAK2P,QAAQd,eAC5B8B,EAAe3Q,KAAK8Q,QAAS,aAAc9Q,MAC3C2Q,EAAe/J,EAAQ,YAAa5G,MACpC2Q,EAAe/J,EAAQ,cAAe5G,MACtC2Q,EAAe/J,EAAQ,WAAY5G,OAGrC2Q,EAAe3Q,KAAK+Q,SAAUzQ,EAAM2J,cAAejK,OAGrDwE,EAAQC,UAAUwL,iBAAmB,WAC/BjQ,KAAK2P,QAAQV,MACfjP,KAAKgR,YAEHhR,KAAK2P,QAAQT,WACflP,KAAKiR,iBAEHjR,KAAK2P,QAAQP,YACfpP,KAAKkR,cAEHlR,KAAK2P,QAAQR,iBACfnP,KAAKmR,gBAEHnR,KAAK2P,QAAQX,OACfhP,KAAKoR,aAEHpR,KAAK2P,QAAQN,YACfrP,KAAKqR,kBAEHrR,KAAK2P,QAAQJ,MACfvP,KAAKsR,YAEHtR,KAAK2P,QAAQH,UACfxP,KAAKuR,iBAIT/M,EAAQC,UAAUyL,iBAAmB,WACnC,GAAqC,oBAA1BhM,OAAOsN,eAAlB,CAGA,IAAIC,EAAKzR,KACL0R,GAAiB,EACjB1P,EAAMhC,KAAK2P,QAAQlB,cAAgB,iBAAmB,cAC1DvK,OAAOsN,eAAexR,KAAMgC,EAAK,CAC/B2P,IAAK,WACH,OAAOD,GAETE,IAAK,SAAaC,GAChBH,EAAiBG,EAIjB,IAFA,IAAIvJ,EAAKmJ,EAAGV,SAASe,SAASjP,OAAS4O,EAAGV,SAASe,SAAW,CAACL,EAAGV,UAC9DgB,EAAgBL,IAAmBD,EAAGO,QAAU,OAAS,OACpD9O,EAAI,EAAGA,EAAIoF,EAAGzF,OAAQK,IAC7BoF,EAAGpF,GAAG5C,MAAMyR,cAAgBA,OAMpCvN,EAAQC,UAAU2L,gBAAkB,WAClCpQ,KAAKqC,GAAG,eAAe,WACrB,IAAI4P,EAAgBpR,SAASoR,eACzBA,GAA4C,UAA1BA,EAAc1D,SAAiD,aAA1B0D,EAAc1D,SACvE0D,EAAcC,WAKpB1N,EAAQC,UAAU0L,iBAAmB,WACnC,IAAIgC,EAAQnS,KAEZ,GAAgC,qBAArBoS,iBAAkC,CAC3C,IAAIC,OAAQ,EACRC,EAAW,IAAIF,kBAAiB,SAAUG,GAE5C,IAAIJ,EAAMK,oBAAV,CAKA,IAFA,IAAIC,GAAmB,EACnBC,GAAkB,EACbxP,EAAI,EAAGA,EAAIqP,EAAU1P,OAAQK,IAAK,CACzC,IAAIyP,EAAWJ,EAAUrP,GACzB,GAAsB,eAAlByP,EAASvR,KAAuB,CAClCqR,GAAmB,EACnB,MAEA,GAAIE,EAAS/L,SAAWuL,EAAMpB,SAAU,CACtC2B,GAAkB,EAClB,OAIFD,EACFN,EAAM9B,UACGqC,IAETE,aAAaP,GACbA,EAAQQ,YAAW,WACZV,EAAMK,qBACTL,EAAM9B,YAEP,SAGHyC,EAAS,CACXC,YAAY,EACZC,WAAW,EACXC,SAAS,GAEXX,EAASY,QAAQlT,KAAK+Q,SAAU+B,GAEhC9S,KAAKqC,GAAG,WAAW,WACjBiQ,EAASa,qBAGXnT,KAAKoT,mBAIT5O,EAAQC,UAAU+N,kBAAoB,WACpC,IAAIa,EAAoBrT,KAAKoH,EAAIpH,KAAKsT,YAActT,KAAKoH,EAAIpH,KAAKuT,YAAcvT,KAAKqH,EAAIrH,KAAKwT,YAAcxT,KAAKqH,EAAIrH,KAAKyT,WAE1H,OAAOzT,KAAK0R,gBAAkB1R,KAAK0T,oBAAsBL,GAG3D7O,EAAQC,UAAU2O,gBAAkB,WAClC,IAAIO,EAAehJ,EAAQ3K,KAAK+Q,UAC5B6C,EAAWD,EAAa9I,MACxBgJ,EAAYF,EAAa7I,OAE7B,SAASgJ,IACP,IAAI9T,KAAK+T,UAAT,CAGAJ,EAAehJ,EAAQ3K,KAAK+Q,UAC5B,IAAIiD,EAAWL,EAAa9I,MACxBoJ,EAAYN,EAAa7I,OAEzB8I,IAAaI,GAAYH,IAAcI,GACzCjU,KAAKqQ,UAEPuD,EAAWI,EACXH,EAAYI,EAEZtQ,EAAKgC,KAAK3F,OAGZ,SAAS2D,IACP,IAAIuQ,EAASlU,KAEb6S,YAAW,WACTiB,EAAMnO,KAAKuO,KACV,KAGLvQ,EAAKgC,KAAK3F,OAGZwE,EAAQC,UAAU0P,YAAc,SAAU/I,GACxC,OAAQA,EAAEhK,MACR,IAAK,aACL,IAAK,YACHpB,KAAKoU,OAAOhJ,GACRpL,KAAK2P,QAAQJ,MAAQnE,EAAEiJ,SAAWjJ,EAAEiJ,QAAQxR,OAAS,GACvD7C,KAAKsU,WAAWlJ,GAElB,MACF,IAAK,YACL,IAAK,YACCpL,KAAK2P,QAAQJ,MAAQnE,EAAEiJ,SAAWjJ,EAAEiJ,QAAQxR,OAAS,EACvD7C,KAAKuU,MAAMnJ,GAEXpL,KAAKwU,MAAMpJ,GAEb,MACF,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,cACCpL,KAAKyU,OACPzU,KAAK0U,SAAStJ,GAEdpL,KAAK2U,KAAKvJ,GAEZ,MACF,IAAK,oBACL,IAAK,SACHpL,KAAK4U,UACL,MACF,IAAK,gBACL,IAAK,sBACL,IAAK,iBACL,IAAK,kBACH5U,KAAK6U,eAAezJ,GACpB,MACF,IAAK,QACCpL,KAAK8U,UAAY1J,EAAEoB,eAChBvB,EAAwBG,EAAExE,OAAQ5G,KAAK2P,QAAQ1E,2BAClDG,EAAEkD,iBACFlD,EAAEkE,oBAGN,MACF,IAAK,QACL,IAAK,iBACL,IAAK,aACHtP,KAAK+U,cAAc3J,GACnB,QAIN5G,EAAQC,UAAU4L,QAAU,WAC1B,IAAI2E,EAA2E,WAAzDrU,OAAOsU,iBAAiBjV,KAAK8Q,QAAS,MAAMoE,SAC9DC,EAAcxK,EAAQ3K,KAAK8Q,SAC/B9Q,KAAKoV,aAAeD,EAAYtK,MAChC7K,KAAKqV,cAAgBF,EAAYrK,OAEjC,IAAI6I,EAAehJ,EAAQ3K,KAAK+Q,UAChC/Q,KAAKsV,cAAgBhO,KAAKiO,MAAM5B,EAAa9I,MAAQ7K,KAAKwQ,OAC1DxQ,KAAKwV,eAAiBlO,KAAKiO,MAAM5B,EAAa7I,OAAS9K,KAAKwQ,OAE5DxQ,KAAKyV,UAAY9B,EAAa/K,KAC9B5I,KAAK0V,UAAY/B,EAAa9K,IAE1BmM,IACFhV,KAAKyV,WAAaN,EAAYvM,KAC9B5I,KAAK0V,WAAaP,EAAYtM,KAGhC7I,KAAKsT,WAAa,EAClBtT,KAAKwT,WAAa,EAElB,IAAIxE,EAAQhP,KAAK2P,QAAQX,MACrBA,GACFhP,KAAK2V,MAAQ3V,KAAK+Q,SAASe,SAE3B9R,KAAK4V,yBACL5V,KAAK2P,QAAQkG,WAAa7V,KAAK6V,WAAa7V,KAAK2V,MAAM9S,OAAS7C,KAAKwV,eAAiBxV,KAAK2V,MAAM9S,OAAS,OAC/EU,IAAvBvD,KAAK8V,gBACP9V,KAAK8V,cAAgB9G,EAAM8G,eAAiB,GAE9C9V,KAAK2P,QAAQvC,QAAUpN,KAAK8V,cAAgB9V,KAAK6V,WAEjD7V,KAAKuT,WAAa,EAClBvT,KAAKyT,YAAczT,KAAK6V,YAAc7V,KAAK2V,MAAM9S,OAAS,KAE1D7C,KAAKuT,WAAavT,KAAKoV,aAAepV,KAAKsV,cACtCtV,KAAK2P,QAAQH,WAChBxP,KAAKyT,WAAazT,KAAKqV,cAAgBrV,KAAKwV,gBAE1CxV,KAAKuT,WAAa,GACpBvT,KAAKuT,YAAcvT,KAAKyV,UACxBzV,KAAKsT,YAActT,KAAKyV,WACfzV,KAAKwQ,MAAQ,IACtBxQ,KAAKuT,WAAavT,KAAKuT,WAAa,EAAIvT,KAAKyV,UAC7CzV,KAAKsT,WAAatT,KAAKuT,YAErBvT,KAAKyT,WAAa,GACpBzT,KAAKyT,YAAczT,KAAK0V,UACxB1V,KAAKwT,YAAcxT,KAAK0V,WACf1V,KAAKwQ,MAAQ,IACtBxQ,KAAKyT,WAAazT,KAAKyT,WAAa,EAAIzT,KAAK0V,UAC7C1V,KAAKwT,WAAaxT,KAAKyT,aAI3BzT,KAAK+V,oBAAsB/V,KAAK2P,QAAQtC,SAAWrN,KAAKuT,WAAavT,KAAKsT,WAC1EtT,KAAKgW,kBAAoBhW,KAAK2P,QAAQrC,SAAWtN,KAAKyT,WAAazT,KAAKwT,WAEnExT,KAAK+V,sBACR/V,KAAKuT,WAAavT,KAAKsT,WACvBtT,KAAKsV,cAAgBtV,KAAKoV,cAGvBpV,KAAKgW,oBACRhW,KAAKyT,WAAazT,KAAKwT,WACvBxT,KAAKwV,eAAiBxV,KAAKqV,eAG7BrV,KAAKiW,QAAU,EACfjW,KAAK6P,WAAa,EAClB7P,KAAK8P,WAAa,EAClB9P,KAAKkW,cAAgBvN,EAAO3I,KAAK8Q,SAEjC9Q,KAAKmF,QAAQ,YAEZnF,KAAKyU,QAAUzU,KAAKmW,iBAGvB3R,EAAQC,UAAU8L,OAAS,WACzBvQ,KAAK8U,SAAU,GAGjBtQ,EAAQC,UAAU2R,QAAU,WAC1BpW,KAAK8U,SAAU,GAInB,IAAIuB,EAAO,CAETC,MAAO,CACLhW,MAAO,iCACPoE,GAAI,SAAY6R,GACd,OAAO,IAAMA,EAAIA,EAAIA,EAAIA,EAAIA,IAIjCC,YAAa,CACXlW,MAAO,uCACPoE,GAAI,SAAY6R,GACd,OAAOA,GAAK,EAAIA,KAIpB7I,OAAQ,CACNpN,MAAO,qCACPoE,GAAI,SAAY6R,GACd,OAAO,KAAMA,EAAIA,EAAIA,EAAIA,KAK/B,SAAS3I,EAAS6I,EAASC,EAAOC,EAAMC,EAAaC,EAAaC,EAAanH,EAASoH,GACtF,IAAIC,EAAWP,EAAUC,EACrBO,EAAQ3P,KAAK4P,IAAIF,GAAYL,EAE7B1I,EAAe0B,EAAQ1B,aACvB4H,EAAalG,EAAQkG,WACrB7H,EAAkB2B,EAAQ3B,gBAC1BgB,EAAQW,EAAQX,MAChBjB,EAAY4B,EAAQ5B,UAEpBoJ,EAAWpJ,EACXqJ,EAAOpI,EAAQ,EAAI,GAEnBqI,EAAcZ,EAAUQ,EAAQhJ,GAAgB+I,EAAW,GAAK,EAAI,GAcxE,OAZIhI,GAAS6G,IACXwB,EAAcN,EAAOO,uBAAuBD,GAAahQ,GAGvDgQ,EAAcT,GAChBS,EAAcP,EAAcxP,KAAKiQ,IAAIX,EAAcE,EAAc,EAAGF,EAAcE,EAAcM,EAAOH,GAASL,EAChHO,EAAWnJ,GACFqJ,EAAcR,IACvBQ,EAAcP,EAAcxP,KAAKkQ,IAAIX,EAAcC,EAAc,EAAGD,EAAcC,EAAcM,EAAOH,GAASJ,EAChHM,EAAWnJ,GAGN,CACLqJ,YAAa/P,KAAKiO,MAAM8B,GACxBF,SAAUA,GAId,IAAIM,EAAmB,IAAM,GAE7B,SAASC,KAET,IAAIC,EAAwB,WAC1B,OAAK/R,EAIEjF,OAAOgX,uBAAyBhX,OAAOiX,6BAA+BjX,OAAOkX,0BAA4BlX,OAAOmX,wBAEvH,SAAUC,GACR,OAAOpX,OAAOkS,WAAWkF,GAAWA,EAASC,UAAYP,GAAoB,IALtEC,EAHiB,GAYxBO,EAAuB,WACzB,OAAKrS,EAIEjF,OAAOsX,sBAAwBtX,OAAOuX,4BAA8BvX,OAAOwX,yBAA2BxX,OAAOyX,uBAAyB,SAAUC,GACrJ1X,OAAOiS,aAAayF,IAHbX,EAHgB,GAUvBY,EAAe,EACfC,GAAkB,EAClBC,EAAiB,EACjBC,IAAmB,EAEnBC,GAAiB,EAEjBC,GAAiB,EAErB,SAASC,GAAKC,GACZC,QAAQC,MAAM,mBAAqBF,GAGrC,SAASG,GAAOC,EAAWJ,GACzB,IAAKI,EACH,MAAM,IAAIC,MAAM,aAAeL,GAInC,SAASM,GAAU3U,GACjBA,EAAQC,UAAU2P,OAAS,SAAUhJ,GACnC,IAAIgO,EAAahP,EAAUgB,EAAEhK,MAC7B,IAAIgY,IAAelP,GACA,IAAbkB,EAAEiO,YAIHrZ,KAAK8U,SAAW9U,KAAK+T,WAAa/T,KAAKsZ,WAAatZ,KAAKsZ,YAAcF,GAA5E,CAGApZ,KAAKsZ,UAAYF,EAEbpZ,KAAK2P,QAAQrB,iBAAmBrD,EAAwBG,EAAExE,OAAQ5G,KAAK2P,QAAQ1E,0BACjFG,EAAEkD,iBAEAtO,KAAK2P,QAAQL,iBACflE,EAAEkE,kBAGJtP,KAAKuZ,OAAQ,EACbvZ,KAAKwZ,MAAQ,EACbxZ,KAAKyZ,MAAQ,EACbzZ,KAAK6P,WAAa,EAClB7P,KAAK8P,WAAa,EAClB9P,KAAK0Z,iBAAmB,EACxB1Z,KAAK2Z,iBAAmB,EACxB3Z,KAAK4Z,gBAAkB,EAEvB5Z,KAAK6Z,kBACL7Z,KAAK8Z,UAAYzT,IAEbrG,KAAK2P,QAAQX,QACfhP,KAAK4G,OAASwE,EAAExE,QAGlB5G,KAAK+Z,OAEL,IAAIC,EAAQ5O,EAAEiJ,QAAUjJ,EAAEiJ,QAAQ,GAAKjJ,EAEvCpL,KAAKmN,OAASnN,KAAKoH,EACnBpH,KAAKoN,OAASpN,KAAKqH,EACnBrH,KAAKia,UAAYja,KAAKoH,EACtBpH,KAAKka,UAAYla,KAAKqH,EACtBrH,KAAKma,OAASH,EAAMvO,MACpBzL,KAAKoa,OAASJ,EAAMtO,MAEpB1L,KAAKmF,QAAQ,uBAGfX,EAAQC,UAAU+P,MAAQ,SAAUpJ,GAClC,GAAKpL,KAAK8U,UAAW9U,KAAK+T,WAAa3J,EAAUgB,EAAEhK,QAAUpB,KAAKsZ,UAAlE,CAIItZ,KAAK2P,QAAQrB,gBACflD,EAAEkD,iBAEAtO,KAAK2P,QAAQL,iBACflE,EAAEkE,kBAGJ,IAAI0K,EAAQ5O,EAAEiJ,QAAUjJ,EAAEiJ,QAAQ,GAAKjJ,EACnCiP,EAASL,EAAMvO,MAAQzL,KAAKma,OAC5BG,EAASN,EAAMtO,MAAQ1L,KAAKoa,OAEhCpa,KAAKma,OAASH,EAAMvO,MACpBzL,KAAKoa,OAASJ,EAAMtO,MAEpB1L,KAAKwZ,OAASa,EACdra,KAAKyZ,OAASa,EAEd,IAAIC,EAAWjT,KAAK4P,IAAIlX,KAAKwZ,OACzBgB,EAAWlT,KAAK4P,IAAIlX,KAAKyZ,OAEzBgB,EAAYpU,IAGhB,KAAIoU,EAAYza,KAAKiW,QAAUjW,KAAK2P,QAAQ9B,oBAAsB7N,KAAKuZ,OAASiB,EAAWxa,KAAK2P,QAAQ7B,uBAAyByM,EAAWva,KAAK2P,QAAQ7B,uBAAzJ,CAeA,GAVK9N,KAAK4Z,iBAAoB5Z,KAAK2P,QAAQpC,aACrCgN,EAAWC,EAAWxa,KAAK2P,QAAQnC,uBACrCxN,KAAK4Z,gBAAkB,IACdY,GAAYD,EAAWva,KAAK2P,QAAQnC,uBAC7CxN,KAAK4Z,gBAAkB,IAEvB5Z,KAAK4Z,gBAAkB,KAIE,MAAzB5Z,KAAK4Z,gBAAyB,CAChC,GAAsC,aAAlC5Z,KAAK2P,QAAQlC,iBACfrC,EAAEkD,sBACG,GAAsC,eAAlCtO,KAAK2P,QAAQlC,iBAEtB,YADAzN,KAAKsZ,WAAY,GAGnBgB,EAAS,OACJ,GAA6B,MAAzBta,KAAK4Z,gBAAyB,CACvC,GAAsC,eAAlC5Z,KAAK2P,QAAQlC,iBACfrC,EAAEkD,sBACG,GAAsC,aAAlCtO,KAAK2P,QAAQlC,iBAEtB,YADAzN,KAAKsZ,WAAY,GAGnBe,EAAS,EAGXA,EAASra,KAAK+V,oBAAsBsE,EAAS,EAC7CC,EAASta,KAAKgW,kBAAoBsE,EAAS,EAC3Cta,KAAK0Z,iBAAmBW,EAAS,EAAI5B,GAAkB4B,EAAS,EAAI7B,EAAiB,EACrFxY,KAAK2Z,iBAAmBW,EAAS,EAAI/B,EAAiB+B,EAAS,EAAIhC,EAAe,EAElF,IAAIoC,EAAO1a,KAAKoH,EAAIiT,EAChBM,EAAO3a,KAAKqH,EAAIiT,EAEhBzR,GAAM,EACN+R,GAAS,EACThS,GAAO,EACPiS,GAAQ,EAERnN,EAAS1N,KAAK2P,QAAQjC,QACX,IAAXA,IACF7E,OAAqBtF,IAAfmK,EAAO7E,KAA2B6E,EAAO7E,IAC/C+R,OAA2BrX,IAAlBmK,EAAOkN,QAA8BlN,EAAOkN,OACrDhS,OAAuBrF,IAAhBmK,EAAO9E,MAA4B8E,EAAO9E,KACjDiS,OAAyBtX,IAAjBmK,EAAOmN,OAA6BnN,EAAOmN,QAEjDH,EAAO1a,KAAKsT,YAAcoH,EAAO1a,KAAKuT,cAEtCmH,EADEA,EAAO1a,KAAKsT,YAAc1K,GAAQ8R,EAAO1a,KAAKuT,YAAcsH,EACvD7a,KAAKoH,EAAIiT,EAAS,EAElBK,EAAO1a,KAAKsT,WAAatT,KAAKsT,WAAatT,KAAKuT,aAGvDoH,EAAO3a,KAAKwT,YAAcmH,EAAO3a,KAAKyT,cAEtCkH,EADEA,EAAO3a,KAAKwT,YAAc3K,GAAO8R,EAAO3a,KAAKyT,YAAcmH,EACtD5a,KAAKqH,EAAIiT,EAAS,EAElBK,EAAO3a,KAAKwT,WAAaxT,KAAKwT,WAAaxT,KAAKyT,YAItDzT,KAAKuZ,QACRvZ,KAAKuZ,OAAQ,EACbvZ,KAAKmF,QAAQ,gBAGfnF,KAAK8a,WAAWJ,EAAMC,GAElBF,EAAYza,KAAK8Z,UAAY9Z,KAAK2P,QAAQ9B,oBAC5C7N,KAAK8Z,UAAYW,EACjBza,KAAKmN,OAASnN,KAAKoH,EACnBpH,KAAKoN,OAASpN,KAAKqH,EAEfrH,KAAK2P,QAAQtB,YAAcqK,IAC7B1Y,KAAKmF,QAAQ,SAAU,CACrBiC,EAAGpH,KAAKoH,EACRC,EAAGrH,KAAKqH,KAKVrH,KAAK2P,QAAQtB,UAAYqK,IAC3B1Y,KAAKmF,QAAQ,SAAU,CACrBiC,EAAGpH,KAAKoH,EACRC,EAAGrH,KAAKqH,IAIZ,IAAI0T,EAAala,SAASC,gBAAgBia,YAAcpa,OAAOyI,aAAevI,SAASma,KAAKD,WACxFE,EAAYpa,SAASC,gBAAgBma,WAAata,OAAO0I,aAAexI,SAASma,KAAKC,UAEtFC,EAAKlb,KAAKma,OAASY,EACnBI,EAAKnb,KAAKoa,OAASa,GAEnBC,EAAKra,SAASC,gBAAgBC,YAAcf,KAAK2P,QAAQ7B,uBAAyBoN,EAAKlb,KAAK2P,QAAQ7B,uBAAyBqN,EAAKnb,KAAK2P,QAAQ7B,uBAAyBqN,EAAKta,SAASC,gBAAgBsa,aAAepb,KAAK2P,QAAQ7B,wBACpO9N,KAAK2U,KAAKvJ,MAId5G,EAAQC,UAAUkQ,KAAO,SAAUvJ,GACjC,GAAKpL,KAAK8U,UAAW9U,KAAK+T,WAAa3J,EAAUgB,EAAEhK,QAAUpB,KAAKsZ,UAAlE,CAGAtZ,KAAKsZ,WAAY,EAEbtZ,KAAK2P,QAAQrB,iBAAmBrD,EAAwBG,EAAExE,OAAQ5G,KAAK2P,QAAQ1E,0BACjFG,EAAEkD,iBAEAtO,KAAK2P,QAAQL,iBACflE,EAAEkE,kBAGJtP,KAAKmF,QAAQ,WAAY,CACvBiC,EAAGpH,KAAKoH,EACRC,EAAGrH,KAAKqH,IAGVrH,KAAK0R,gBAAiB,EAGtB,IAAIgJ,EAAOpT,KAAKiO,MAAMvV,KAAKoH,GACvBuT,EAAOrT,KAAKiO,MAAMvV,KAAKqH,GAEvBgT,EAASK,EAAO1a,KAAKia,UACrBK,EAASK,EAAO3a,KAAKka,UAKzB,GAJAla,KAAK6P,WAAawK,EAAS,EAAI5B,GAAkB4B,EAAS,EAAI7B,EAAiB,EAC/ExY,KAAK8P,WAAawK,EAAS,EAAI/B,EAAiB+B,EAAS,EAAIhC,EAAe,GAGxEtY,KAAK2P,QAAQR,kBAAmBnP,KAAKqb,iBAKzC,GAAIrb,KAAKsb,YAAYlQ,GACnBpL,KAAKmF,QAAQ,qBAKf,IAAInF,KAAKmW,cAAcnW,KAAK2P,QAAQhC,WAAY0I,EAAK3I,QAArD,CAIA1N,KAAK8a,WAAWJ,EAAMC,GAEtB3a,KAAKiW,QAAU5P,IACf,IAAI8Q,EAAWnX,KAAKiW,QAAUjW,KAAK8Z,UAC/BS,EAAWjT,KAAK4P,IAAIwD,EAAO1a,KAAKmN,QAChCqN,EAAWlT,KAAK4P,IAAIyD,EAAO3a,KAAKoN,QAGpC,GAAIpN,KAAK6E,QAAQ0W,OAASpE,EAAWnX,KAAK2P,QAAQzB,gBAAkBqM,EAAWva,KAAK2P,QAAQxB,oBAAsBqM,EAAWxa,KAAK2P,QAAQxB,mBACxInO,KAAKmF,QAAQ,aADf,CAKA,IAAIwR,EAAO,EAEX,GAAI3W,KAAK2P,QAAQ/B,UAAYuJ,EAAWnX,KAAK2P,QAAQ9B,oBAAsB2M,EAAWxa,KAAK2P,QAAQ7B,uBAAyByM,EAAWva,KAAK2P,QAAQ7B,uBAAwB,CAC1K,IAAIjF,GAAM,EACN+R,GAAS,EACThS,GAAO,EACPiS,GAAQ,EACRnN,EAAS1N,KAAK2P,QAAQjC,QACX,IAAXA,IACF7E,OAAqBtF,IAAfmK,EAAO7E,KAA2B6E,EAAO7E,IAC/C+R,OAA2BrX,IAAlBmK,EAAOkN,QAA8BlN,EAAOkN,OACrDhS,OAAuBrF,IAAhBmK,EAAO9E,MAA4B8E,EAAO9E,KACjDiS,OAAyBtX,IAAjBmK,EAAOmN,OAA6BnN,EAAOmN,OAErD,IAAIzF,EAAepV,KAAK6P,aAAe4I,IAAmB7P,GAAQ5I,KAAK6P,aAAe2I,GAAkBqC,EAAQ7a,KAAKoV,aAAe,EAChIC,EAAgBrV,KAAK8P,aAAeyI,GAAkB1P,GAAO7I,KAAK8P,aAAewI,GAAgBsC,EAAS5a,KAAKqV,cAAgB,EAC/HmG,EAAYxb,KAAK+V,oBAAsBnI,EAAS5N,KAAKoH,EAAGpH,KAAKmN,OAAQgK,EAAUnX,KAAKuT,WAAYvT,KAAKsT,WAAY8B,EAAcpV,KAAK2P,QAAS3P,MAAQ,CAAEqX,YAAaqD,EAAMvD,SAAU,GACpLsE,EAAYzb,KAAKgW,kBAAoBpI,EAAS5N,KAAKqH,EAAGrH,KAAKoN,OAAQ+J,EAAUnX,KAAKyT,WAAYzT,KAAKwT,WAAY6B,EAAerV,KAAK2P,QAAS3P,MAAQ,CAAEqX,YAAasD,EAAMxD,SAAU,GACvLuD,EAAOc,EAAUnE,YACjBsD,EAAOc,EAAUpE,YACjBV,EAAOrP,KAAKiQ,IAAIiE,EAAUrE,SAAUsE,EAAUtE,UAC9CnX,KAAK0R,gBAAiB,OAElB1R,KAAK2P,QAAQX,QACf2L,EAAO3a,KAAKsX,uBAAuBqD,GAAMtT,EACzCsP,EAAO3W,KAAK2P,QAAQX,MAAM0M,YAAc,KAI5C,IAAIC,EAAStF,EAAKC,MAClB,GAAItW,KAAK2P,QAAQV,KAAM,CACrB,IAAIA,EAAOjP,KAAK4b,aAAalB,EAAMC,GACnC3a,KAAK6b,YAAc5M,EACnB0H,EAAO3W,KAAK2P,QAAQmM,WAAaxU,KAAKiQ,IAAIjQ,KAAKiQ,IAAIjQ,KAAKkQ,IAAIlQ,KAAK4P,IAAIwD,EAAOzL,EAAK7H,GAAI,KAAOE,KAAKkQ,IAAIlQ,KAAK4P,IAAIyD,EAAO1L,EAAK5H,GAAI,MAAQ,KACtIqT,EAAOzL,EAAK7H,EACZuT,EAAO1L,EAAK5H,EAEZrH,KAAK6P,WAAa,EAClB7P,KAAK8P,WAAa,EAClB6L,EAAS3b,KAAK2P,QAAQV,KAAK0M,QAAUtF,EAAK3I,OAG5C,GAAIgN,IAAS1a,KAAKoH,GAAKuT,IAAS3a,KAAKqH,EAMnC,OAJIqT,EAAO1a,KAAKsT,YAAcoH,EAAO1a,KAAKuT,YAAcoH,EAAO3a,KAAKwT,YAAcmH,EAAO3a,KAAKyT,cAC5FkI,EAAStF,EAAKG,kBAEhBxW,KAAKsQ,SAASoK,EAAMC,EAAMhE,EAAMgF,GAI9B3b,KAAK2P,QAAQX,QACfhP,KAAK8V,cAAgB9V,KAAKsX,uBAAuBtX,KAAKqH,GAAGtF,OAG3D/B,KAAKmF,QAAQ,YAAa,CACxBiC,EAAGpH,KAAKoH,EACRC,EAAGrH,KAAKqH,QAIZ7C,EAAQC,UAAU6W,YAAc,SAAUlQ,GAExC,IAAI2Q,EAAe/b,KAAK0T,qBAAuB1T,KAAKgS,QAIpD,GAHAhS,KAAK0T,oBAAqB,GAGrB1T,KAAKuZ,MAAO,CACf,GAAIvZ,KAAK2P,QAAQX,MAAO,CACtB,GAAIhP,KAAK4G,QAAU5G,KAAK4G,OAAOoV,YAAchc,KAAK2P,QAAQX,MAAMiN,kBAAmB,CACjF,IAAIla,EAAQ/B,KAAKsX,uBAAuBtX,KAAKqH,GAAGtF,MAC5Cma,EAAU5U,KAAKiO,OAAOvV,KAAKoa,OAASnR,EAAajJ,KAAK8Q,SAASjI,IAAM7I,KAAKqV,cAAgB,GAAKrV,KAAK6V,YACxG7V,KAAK4G,OAAS5G,KAAK2V,MAAM5T,EAAQma,GAEnC,IAAIrT,EAAMF,EAAO3I,KAAK4G,QAAQiC,IAC1BD,EAAOD,EAAO3I,KAAK4G,QAAQgC,KAQ/B,OAPAC,GAAO7I,KAAKkW,cAAcrN,IAC1BA,GAAOvB,KAAKiO,MAAMvV,KAAK4G,OAAOoE,aAAe,EAAIhL,KAAK8Q,QAAQ9F,aAAe,IAAM,EACnFpC,GAAQ5I,KAAKkW,cAActN,KAC3BA,GAAQtB,KAAKiO,MAAMvV,KAAK4G,OAAOmE,YAAc,EAAI/K,KAAK8Q,QAAQ/F,YAAc,IAAM,EAElFlC,EAAM7I,KAAKsX,uBAAuBzO,GAAKxB,EACvCrH,KAAKsQ,SAAS1H,EAAMC,EAAK7I,KAAK2P,QAAQX,MAAM0M,YAAc,IAAKrF,EAAKC,QAC7D,EAEP,IAAKyF,EAAc,CACjB,IAAII,EAAYnc,KAAK2P,QAAQlD,SACzB2P,GAAkB,EACtB,GAAID,GAAanc,KAAKqc,cAAe,CACnC,IAAIC,EAAkBH,EAAUI,MAC5BA,OAA4BhZ,IAApB+Y,EAAgC,IAAMA,EAE9CjW,IAAWrG,KAAKqc,cAAgBE,IAClCH,GAAkB,EAClB3P,EAASrB,IAWb,OARIpL,KAAK2P,QAAQxE,KACfA,EAAIC,EAAGpL,KAAK2P,QAAQxE,KAGlBnL,KAAK2P,QAAQ/D,QAAUX,EAAwBG,EAAExE,OAAQ5G,KAAK2P,QAAQ1E,0BACxEW,EAAMR,GAERpL,KAAKqc,cAAgBD,EAAkB,KAAO/V,KACvC,EAET,OAAO,EAGX,OAAO,GAGT7B,EAAQC,UAAUmQ,QAAU,WAC1B,IAAIzC,EAAQnS,KAEPA,KAAK8U,UAIN3O,IACFnG,KAAK8Q,QAAQmK,UAAY,GAE3BrI,aAAa5S,KAAKwc,eAClBxc,KAAKwc,cAAgB3J,YAAW,WAC9BV,EAAM9B,YACLrQ,KAAK2P,QAAQvB,iBAGlB5J,EAAQC,UAAUgY,YAAc,WAC9BxE,EAAqBjY,KAAK0c,YAC1B1c,KAAK0c,WAAa/E,EAAsBgF,GAExC,IAAIlL,EAAKzR,KAET,SAAS2c,IACP,IAAIC,EAAMnL,EAAGoL,sBACbpL,EAAGtM,QAAQ,SAAUyX,GAChBnL,EAAGC,eAIRD,EAAGiL,WAAa/E,EAAsBgF,GAHpClL,EAAGtM,QAAQ,YAAayX,KAO9BpY,EAAQC,UAAUoV,gBAAkB,WAClC,IAAIlD,EAAO/R,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,GAAmBA,UAAU,GAAK,EAI/E,GAFA5E,KAAK8c,cAAcxc,EAAMwJ,oBAAsB6M,EAAO,KAElD3W,KAAK2P,QAAQX,MACf,IAAK,IAAI9L,EAAI,EAAGA,EAAIlD,KAAK2V,MAAM9S,OAAQK,IACrClD,KAAK2V,MAAMzS,GAAG5C,MAAMA,EAAMwJ,oBAAsB6M,EAAO,KAI3D,GAAI3W,KAAK+c,WACP,IAAK,IAAIvZ,EAAK,EAAGA,EAAKxD,KAAK+c,WAAWla,OAAQW,IAC5CxD,KAAK+c,WAAWvZ,GAAIwZ,eAAerG,IAKzCnS,EAAQC,UAAUwY,0BAA4B,SAAUtB,GAGtD,GAFA3b,KAAK8c,cAAcxc,EAAMuJ,0BAA4B8R,EAEjD3b,KAAK2P,QAAQX,MACf,IAAK,IAAI9L,EAAI,EAAGA,EAAIlD,KAAK2V,MAAM9S,OAAQK,IACrClD,KAAK2V,MAAMzS,GAAG5C,MAAMA,EAAMuJ,0BAA4B8R,EAI1D,GAAI3b,KAAK+c,WACP,IAAK,IAAIG,EAAM,EAAGA,EAAMld,KAAK+c,WAAWla,OAAQqa,IAC9Cld,KAAK+c,WAAWG,GAAKrT,yBAAyB8R,IAKpDnX,EAAQC,UAAUoQ,eAAiB,SAAUzJ,GAC3C,GAAIA,EAAExE,SAAW5G,KAAK+Q,UAAa/Q,KAAK0R,eAAxC,CAIA1R,KAAK6Z,kBACL,IAAIsD,GAAand,KAAKgS,SAAWhS,KAAK2Z,mBAAqBrB,EACvD6E,IAAcnd,KAAKmW,cAAcnW,KAAK2P,QAAQhC,WAAY0I,EAAK3I,UACjE1N,KAAK0R,gBAAiB,EAClB1R,KAAK2P,QAAQtB,YAAcsK,IAC7B3Y,KAAKmF,QAAQ,YAAa,CACxBiC,EAAGpH,KAAKoH,EACRC,EAAGrH,KAAKqH,OAMhB7C,EAAQC,UAAUqW,WAAa,SAAU1T,EAAGC,EAAGmJ,GAc7C,GAbAwI,IAAQ/R,EAAQG,KAAOH,EAAQI,GAAI,0CAC/BJ,EAAQuJ,KACVA,EAAQxQ,KAAKwQ,OAEXxQ,KAAK2P,QAAQjB,aACf1O,KAAK8c,cAAcxc,EAAMiJ,WAAa,aAAenC,EAAI,MAAQC,EAAI,aAAemJ,EAAQ,IAAMxQ,KAAK0Q,YAEvGtJ,EAAIE,KAAKiO,MAAMnO,GACfC,EAAIC,KAAKiO,MAAMlO,GACfrH,KAAK8c,cAAclU,KAAOxB,EAAI,KAC9BpH,KAAK8c,cAAcjU,IAAMxB,EAAI,MAG3BrH,KAAK2P,QAAQX,MAIf,IAHA,IAAIoO,EAAwBpd,KAAK2P,QAAQX,MAAMqO,OAC3CA,OAAmC9Z,IAA1B6Z,EAAsC,GAAKA,EAE/Cla,EAAI,EAAGA,EAAIlD,KAAK2V,MAAM9S,OAAQK,IAAK,CAC1C,IAAIoa,EAAMD,GAAUhW,EAAIrH,KAAK6V,WAAa3S,GAC1ClD,KAAK2V,MAAMzS,GAAG5C,MAAMA,EAAMiJ,WAAa,WAAa+T,EAAM,OAQ9D,GAJAtd,KAAKoH,EAAIA,EACTpH,KAAKqH,EAAIA,EACTrH,KAAK+P,SAASS,GAEVxQ,KAAK+c,WACP,IAAK,IAAIQ,EAAM,EAAGA,EAAMvd,KAAK+c,WAAWla,OAAQ0a,IAC9Cvd,KAAK+c,WAAWQ,GAAKC,kBAK3BhZ,EAAQC,UAAUgZ,SAAW,SAAUC,EAAOC,EAAOxG,EAAUyG,GAC7D,IAAInM,EAAKzR,KACLmN,EAASnN,KAAKoH,EACdgG,EAASpN,KAAKqH,EACdwW,EAAa7d,KAAKyQ,UAClBqN,EAAY9d,KAAKwQ,MACjBsJ,EAAYzT,IACZ0X,EAAWjE,EAAY3C,EAE3B,SAAS6G,IACP,IAAIzX,EAAMF,IAEV,GAAIE,GAAOwX,EAeT,OAdAtM,EAAGwM,aAAc,EACjBxM,EAAGqJ,WAAW4C,EAAOC,EAAOG,GAE5BrM,EAAGtM,QAAQ,SAAU,CACnBiC,EAAGqK,EAAGrK,EACNC,EAAGoK,EAAGpK,SAGHoK,EAAGO,SAAYP,EAAG0E,cAAc1E,EAAG9B,QAAQhC,aAC9C8D,EAAGtM,QAAQ,YAAa,CACtBiC,EAAGqK,EAAGrK,EACNC,EAAGoK,EAAGpK,KAKZd,GAAOA,EAAMuT,GAAa3C,EAC1B,IAAIwE,EAASiC,EAASrX,GAClBmU,GAAQgD,EAAQvQ,GAAUwO,EAASxO,EACnCwN,GAAQgD,EAAQvQ,GAAUuO,EAASvO,EACnC8Q,GAAYJ,EAAYD,GAAclC,EAASkC,EAEnDpM,EAAGqJ,WAAWJ,EAAMC,EAAMuD,GAEtBzM,EAAGwM,cACLxM,EAAG0M,aAAexG,EAAsBqG,IAGtCvM,EAAG9B,QAAQtB,YAAcsK,IAC3BlH,EAAGtM,QAAQ,SAAU,CACnBiC,EAAGqK,EAAGrK,EACNC,EAAGoK,EAAGpK,IAKZrH,KAAKie,aAAc,EACnBhG,EAAqBjY,KAAKme,cAC1BH,KAGFxZ,EAAQC,UAAU2Z,SAAW,SAAUhX,EAAGC,GACxC,IAAIsP,EAAO/R,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,GAAmBA,UAAU,GAAK,EAC3E+W,EAAS/W,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,GAAmBA,UAAU,GAAKyR,EAAK3I,OAEtFtG,EAAIpH,KAAKoH,EAAIA,EACbC,EAAIrH,KAAKqH,EAAIA,EAEbrH,KAAKsQ,SAASlJ,EAAGC,EAAGsP,EAAMgF,IAG5BnX,EAAQC,UAAU6L,SAAW,SAAUlJ,EAAGC,GACxC,IAAIsP,EAAO/R,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,GAAmBA,UAAU,GAAK,EAC3E+W,EAAS/W,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,GAAmBA,UAAU,GAAKyR,EAAK3I,OAClF2Q,EAAWzZ,UAAU,GAKzB,GAHI5E,KAAK2P,QAAQX,QACf3H,EAAIrH,KAAKsX,uBAAuBjQ,GAAGA,GAEjCD,IAAMpH,KAAKoH,GAAKC,IAAMrH,KAAKqH,EAK/B,GAFArH,KAAK0R,eAAiB1R,KAAK2P,QAAQlB,eAAiBkI,EAAO,IAAM3W,KAAKoH,IAAMA,GAAKpH,KAAKqH,IAAMA,IAEvFsP,GAAQ3W,KAAK2P,QAAQlB,cAAe,CAQvC,GAPAzO,KAAKid,0BAA0BtB,EAAOrb,OACtCN,KAAK6Z,gBAAgBlD,GACrB3W,KAAK8a,WAAW1T,EAAGC,GAEfsP,GAAQ3W,KAAK2P,QAAQtB,YAAcsK,IACrC3Y,KAAKyc,eAEF9F,IAAS0H,EAAU,CAEtB,GAAIre,KAAK2P,QAAQJ,KAAM,OACvBvP,KAAKmF,QAAQ,SAAU,CACrBiC,EAAGA,EACHC,EAAGA,IAGLrH,KAAKse,QAAUzd,SAASma,KAAKhQ,aACxBhL,KAAKmW,cAAcnW,KAAK2P,QAAQhC,WAAY0I,EAAK3I,SACpD1N,KAAKmF,QAAQ,YAAa,CACxBiC,EAAGA,EACHC,EAAGA,IAKLrH,KAAK2P,QAAQX,QACfhP,KAAK8V,cAAgB9V,KAAKsX,uBAAuBjQ,GAAGtF,YAGtD/B,KAAKyd,SAASrW,EAAGC,EAAGsP,EAAMgF,EAAOjX,KAIrCF,EAAQC,UAAU8Z,gBAAkB,SAAUjW,EAAIqO,EAAM6H,EAASC,EAAS9C,GACxE,GAAKrT,IAGLA,EAAKA,EAAGoW,SAAWpW,EAAKtI,KAAK+Q,SAAS4N,cAAcrW,IAEhDtI,KAAK2P,QAAQX,OAAU1G,EAAGsW,UAAUC,SAAS7e,KAAK2P,QAAQX,MAAM8P,iBAApE,CAIA,IAAIlC,EAAMjU,EAAOL,GACjBsU,EAAIhU,MAAQ5I,KAAKkW,cAActN,KAC/BgU,EAAI/T,KAAO7I,KAAKkW,cAAcrN,KAGd,IAAZ2V,IACFA,EAAUlX,KAAKiO,MAAMjN,EAAGyC,YAAc,EAAI/K,KAAK8Q,QAAQ/F,YAAc,KAEvD,IAAZ0T,IACFA,EAAUnX,KAAKiO,MAAMjN,EAAG0C,aAAe,EAAIhL,KAAK8Q,QAAQ9F,aAAe,IAGzE4R,EAAIhU,MAAQ4V,GAAW,EACvB5B,EAAI/T,KAAO4V,GAAW,EACtB7B,EAAIhU,KAAOgU,EAAIhU,KAAO5I,KAAKsT,WAAatT,KAAKsT,WAAasJ,EAAIhU,KAAO5I,KAAKuT,WAAavT,KAAKuT,WAAaqJ,EAAIhU,KAC7GgU,EAAI/T,IAAM+T,EAAI/T,IAAM7I,KAAKwT,WAAaxT,KAAKwT,WAAaoJ,EAAI/T,IAAM7I,KAAKyT,WAAazT,KAAKyT,WAAamJ,EAAI/T,IAEtG7I,KAAK2P,QAAQX,QACf4N,EAAI/T,IAAM7I,KAAKsX,uBAAuBsF,EAAI/T,KAAKxB,GAGjDrH,KAAKsQ,SAASsM,EAAIhU,KAAMgU,EAAI/T,IAAK8N,EAAMgF,KAGzCnX,EAAQC,UAAU0R,cAAgB,WAChC,IAAIQ,EAAO/R,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,GAAmBA,UAAU,GAAK,EAC3Ema,EAAUna,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,GAAmBA,UAAU,GAAKyR,EAAK3I,OAEnFtG,EAAIpH,KAAKoH,EACT4X,EAAS1X,KAAKiO,MAAMnO,IACnBpH,KAAK+V,qBAAuBiJ,EAAShf,KAAKsT,WAC7ClM,EAAIpH,KAAKsT,WACA0L,EAAShf,KAAKuT,aACvBnM,EAAIpH,KAAKuT,YAGX,IAAIlM,EAAIrH,KAAKqH,EACT4X,EAAS3X,KAAKiO,MAAMlO,GAOxB,OANKrH,KAAKgW,mBAAqBiJ,EAASjf,KAAKwT,WAC3CnM,EAAIrH,KAAKwT,WACAyL,EAASjf,KAAKyT,aACvBpM,EAAIrH,KAAKyT,aAGPrM,IAAMpH,KAAKoH,GAAKC,IAAMrH,KAAKqH,KAI/BrH,KAAKsQ,SAASlJ,EAAGC,EAAGsP,EAAMoI,IAEnB,IAGTva,EAAQC,UAAUoY,oBAAsB,WACtC,IAAIqC,EAASve,OAAOsU,iBAAiBjV,KAAK+Q,SAAU,MAChD3J,OAAI,EACJC,OAAI,EAWR,OATIrH,KAAK2P,QAAQjB,cACfwQ,EAASA,EAAO5e,EAAMiJ,WAAW4V,MAAM,KAAK,GAAGA,MAAM,MACrD/X,IAAM8X,EAAO,KAAOA,EAAO,IAC3B7X,IAAM6X,EAAO,KAAOA,EAAO,MAE3B9X,GAAK8X,EAAOtW,KAAKwW,QAAQ,WAAY,IACrC/X,GAAK6X,EAAOrW,IAAIuW,QAAQ,WAAY,KAG/B,CACLhY,EAAGA,EACHC,EAAGA,IAIP7C,EAAQC,UAAUsV,KAAO,WACvB,GAAI/Z,KAAK2P,QAAQlB,eAAiBzO,KAAK0R,eAAgB,CACrD1R,KAAK0R,gBAAiB,EACtBuG,EAAqBjY,KAAK0c,YAC1B,IAAIE,EAAM5c,KAAK6c,sBACf7c,KAAK8a,WAAW8B,EAAIxV,EAAGwV,EAAIvV,GACvBrH,KAAK2P,QAAQX,MACfhP,KAAK4G,OAAS5G,KAAK2V,MAAM3V,KAAKsX,uBAAuBsF,EAAIvV,GAAGtF,OAE5D/B,KAAKmF,QAAQ,YAAa,CACxBiC,EAAGpH,KAAKoH,EACRC,EAAGrH,KAAKqH,IAGZrH,KAAK0T,oBAAqB,OAChB1T,KAAK2P,QAAQlB,eAAiBzO,KAAKie,cAC7Cje,KAAKie,aAAc,EACnBhG,EAAqBjY,KAAKme,cAC1Bne,KAAKmF,QAAQ,YAAa,CACxBiC,EAAGpH,KAAKoH,EACRC,EAAGrH,KAAKqH,IAEVrH,KAAK0T,oBAAqB,IAI9BlP,EAAQC,UAAU4a,QAAU,WAC1Brf,KAAK+T,WAAY,EACjB/T,KAAKmF,QAAQ,WACTnF,KAAK2P,QAAQlB,cACfwJ,EAAqBjY,KAAK0c,YAE1BzE,EAAqBjY,KAAKme,cAE5Bne,KAAK6Q,mBAEL7Q,KAAK6E,QAAU,IAInB,SAASya,GAAU9a,GACjBA,EAAQC,UAAUuM,UAAY,WAC5B,IAAImB,EAAQnS,KAEZA,KAAK6b,YAAc,GACnB,IAAI5M,EAAOjP,KAAK2P,QAAQV,KAExB,GAAIA,EAAKsQ,KAAM,CACb,IAAIzN,EAAW9R,KAAK+Q,SAASe,SACzBA,EAASjP,OAAS,GACpB6J,EAAQoF,EAASA,EAASjP,OAAS,GAAG2c,WAAU,GAAOxf,KAAK+Q,UAC5D/Q,KAAK+Q,SAASlE,YAAYiF,EAAS,GAAG0N,WAAU,KAGhDvQ,EAAKsQ,MAAO,EAIhB,IAAIjX,EAAK2G,EAAK3G,GACI,kBAAPA,IACTA,EAAKtI,KAAK+Q,SAAS0O,iBAAiBnX,IAGtCtI,KAAKqC,GAAG,WAAW,WAGjB,GAFA8P,EAAMuN,MAAQ,GAETvN,EAAMiD,cAAiBjD,EAAMkD,eAAkBlD,EAAMmD,eAAkBnD,EAAMqD,eAAlF,CAIA,IAAImK,EAAQ1Q,EAAK0Q,OAASxN,EAAMiD,aAC5BwK,EAAQ3Q,EAAK2Q,OAASzN,EAAMkD,cAE5BjO,EAAI,EACJC,OAAI,EACJwY,OAAK,EACLC,OAAK,EACL5c,EAAI,EACJ6c,OAAI,EACJC,EAAI,EACJC,OAAI,EACJ/W,OAAO,EACX,GAAKZ,EA8BH,IAHAyX,EAAIzX,EAAGzF,OACPod,GAAK,EAEE/c,EAAI6c,EAAG7c,IACZgG,EAAOyB,EAAQrC,EAAGpF,KACR,IAANA,GAAWgG,EAAKN,MAAQ+B,EAAQrC,EAAGpF,EAAI,IAAI0F,QAC7CoX,EAAI,EACJC,KAGG9N,EAAMuN,MAAMM,KACf7N,EAAMuN,MAAMM,GAAK,IAGnB5Y,EAAIE,KAAKiQ,KAAKrO,EAAKN,KAAMuJ,EAAMoB,YAC/BlM,EAAIC,KAAKiQ,KAAKrO,EAAKL,IAAKsJ,EAAMsB,YAC9BoM,EAAKzY,EAAIE,KAAKiO,MAAMrM,EAAK2B,MAAQ,GACjCiV,EAAKzY,EAAIC,KAAKiO,MAAMrM,EAAK4B,OAAS,GAElCqH,EAAMuN,MAAMM,GAAGC,GAAK,CAClB7Y,EAAGA,EACHC,EAAGA,EACHwD,MAAO3B,EAAK2B,MACZC,OAAQ5B,EAAK4B,OACb+U,GAAIA,EACJC,GAAIA,GAGF1Y,EAAI+K,EAAMoB,YACZyM,QAxDG,CACPH,EAAKvY,KAAKiO,MAAMoK,EAAQ,GACxBG,EAAKxY,KAAKiO,MAAMqK,EAAQ,GAExB,MAAOxY,GAAK+K,EAAMmD,cAAe,CAC/BnD,EAAMuN,MAAMxc,GAAK,GACjB6c,EAAI,EACJ1Y,EAAI,EAEJ,MAAOA,GAAK8K,EAAMqD,eAChBrD,EAAMuN,MAAMxc,GAAG6c,GAAK,CAClB3Y,EAAGE,KAAKiQ,IAAInQ,EAAG+K,EAAMoB,YACrBlM,EAAGC,KAAKiQ,IAAIlQ,EAAG8K,EAAMsB,YACrB5I,MAAO8U,EACP7U,OAAQ8U,EACRC,GAAIzY,EAAIyY,EACRC,GAAIzY,EAAIyY,GAGVzY,GAAKuY,EACLG,IAGF3Y,GAAKuY,EACLzc,KAqCJiP,EAAM+N,iBAEN,IAAIC,EAAYlR,EAAKmR,OAAS,EAAI,EAC9BC,EAAYpR,EAAKqR,OAAS,EAAI,EAClCnO,EAAMoO,UAAUpO,EAAM0J,YAAYpQ,OAAS0U,EAAWhO,EAAM0J,YAAYnQ,OAAS2U,EAAW,OAAG9c,GAAW,GAG1G,IAAIid,EAAgBvR,EAAKwR,UACrBD,EAAgB,IAAM,GACxBrO,EAAMuO,eAAiBF,EACvBrO,EAAMwO,eAAiBH,IAEvBrO,EAAMuO,eAAiBpZ,KAAKiO,MAAMpD,EAAMuN,MAAMvN,EAAM0J,YAAYpQ,OAAO0G,EAAM0J,YAAYnQ,OAAOb,MAAQ2V,GACxGrO,EAAMwO,eAAiBrZ,KAAKiO,MAAMpD,EAAMuN,MAAMvN,EAAM0J,YAAYpQ,OAAO0G,EAAM0J,YAAYnQ,OAAOZ,OAAS0V,QAI7GxgB,KAAKqC,GAAG,aAAa,WACf4M,EAAKsQ,OACHtQ,EAAKmR,QACyB,IAA5BjO,EAAM0J,YAAYpQ,OACpB0G,EAAMoO,UAAUpO,EAAMuN,MAAM7c,OAAS,EAAGsP,EAAM0J,YAAYnQ,MAAO,OAAGnI,GAAW,GAE7E4O,EAAM0J,YAAYpQ,QAAU0G,EAAMuN,MAAM7c,OAAS,GACnDsP,EAAMoO,UAAU,EAAGpO,EAAM0J,YAAYnQ,MAAO,OAAGnI,GAAW,KAG5B,IAA5B4O,EAAM0J,YAAYnQ,OACpByG,EAAMoO,UAAUpO,EAAM0J,YAAYpQ,MAAO0G,EAAMuN,MAAM,GAAG7c,OAAS,EAAG,OAAGU,GAAW,GAEhF4O,EAAM0J,YAAYnQ,QAAUyG,EAAMuN,MAAM,GAAG7c,OAAS,GACtDsP,EAAMoO,UAAUpO,EAAM0J,YAAYpQ,MAAO,EAAG,OAAGlI,GAAW,SAMzC,IAArB0L,EAAK2R,aACP5gB,KAAKqC,GAAG,SAAS,WACf,IAAIsU,EAAO1H,EAAKgI,OAAS3P,KAAKiQ,IAAIjQ,KAAKiQ,IAAIjQ,KAAKkQ,IAAIlQ,KAAK4P,IAAI/E,EAAM/K,EAAI+K,EAAMhF,QAAS,KAAO7F,KAAKkQ,IAAIlQ,KAAK4P,IAAI/E,EAAM9K,EAAI8K,EAAM/E,QAAS,MAAQ,KAEhJ+E,EAAMoO,UAAUpO,EAAM0J,YAAYpQ,MAAQ0G,EAAMtC,WAAYsC,EAAM0J,YAAYnQ,MAAQyG,EAAMrC,WAAY6G,MAI5G3W,KAAKqC,GAAG,WAAW,WACjB,GAAI4M,EAAKsQ,KAAM,CACb,IAAIsB,EAAY1O,EAAMpB,SAASe,SAC3B+O,EAAUhe,OAAS,IACrBmK,EAAYmF,EAAMpB,SAAU8P,EAAUA,EAAUhe,OAAS,IACzDmK,EAAYmF,EAAMpB,SAAU8P,EAAU,UAM9Crc,EAAQC,UAAUyb,eAAiB,WACjC,IAAIjR,EAAOjP,KAAK2P,QAAQV,KAEnBA,EAAKsQ,MAASvf,KAAK0f,OAAU1f,KAAK0f,MAAM7c,SAIzC7C,KAAK0f,MAAM7c,OAAS,IACtBoM,EAAKmR,QAAS,GAEZpgB,KAAK0f,MAAM,IAAM1f,KAAK0f,MAAM,GAAG7c,OAAS,IAC1CoM,EAAKqR,QAAS,GAEZrR,EAAKmR,QAAUnR,EAAKqR,QACtB1H,GAAK,2DAITpU,EAAQC,UAAUmX,aAAe,SAAUxU,EAAGC,GAC5C,IAAKrH,KAAK0f,MAAM7c,OACd,MAAO,CAAEuE,EAAG,EAAGC,EAAG,EAAGoE,MAAO,EAAGC,MAAO,GAGxC,IAAIxI,EAAI,EAER,GAAIoE,KAAK4P,IAAI9P,EAAIpH,KAAKia,YAAcja,KAAK0gB,gBAAkBpZ,KAAK4P,IAAI7P,EAAIrH,KAAKka,YAAcla,KAAK2gB,eAC9F,OAAO3gB,KAAK6b,YAGVzU,EAAIpH,KAAKsT,WACXlM,EAAIpH,KAAKsT,WACAlM,EAAIpH,KAAKuT,aAClBnM,EAAIpH,KAAKuT,YAGPlM,EAAIrH,KAAKwT,WACXnM,EAAIrH,KAAKwT,WACAnM,EAAIrH,KAAKyT,aAClBpM,EAAIrH,KAAKyT,YAIX,IADA,IAAIsM,EAAI/f,KAAK0f,MAAM7c,OACZK,EAAI6c,EAAG7c,IACZ,GAAIkE,GAAKpH,KAAK0f,MAAMxc,GAAG,GAAG2c,GAAI,CAC5BzY,EAAIpH,KAAK0f,MAAMxc,GAAG,GAAGkE,EACrB,MAIJ2Y,EAAI/f,KAAK0f,MAAMxc,GAAGL,OAGlB,IADA,IAAImd,EAAI,EACDA,EAAID,EAAGC,IACZ,GAAI3Y,GAAKrH,KAAK0f,MAAM,GAAGM,GAAGF,GAAI,CAC5BzY,EAAIrH,KAAK0f,MAAM,GAAGM,GAAG3Y,EACrB,MA4BJ,OAxBInE,IAAMlD,KAAK6b,YAAYpQ,QACzBvI,GAAKlD,KAAK6P,WAEN3M,EAAI,EACNA,EAAI,EACKA,GAAKlD,KAAK0f,MAAM7c,SACzBK,EAAIlD,KAAK0f,MAAM7c,OAAS,GAG1BuE,EAAIpH,KAAK0f,MAAMxc,GAAG,GAAGkE,GAGnB4Y,IAAMhgB,KAAK6b,YAAYnQ,QACzBsU,GAAKhgB,KAAK8P,WAENkQ,EAAI,EACNA,EAAI,EACKA,GAAKhgB,KAAK0f,MAAM,GAAG7c,SAC5Bmd,EAAIhgB,KAAK0f,MAAM,GAAG7c,OAAS,GAG7BwE,EAAIrH,KAAK0f,MAAM,GAAGM,GAAG3Y,GAGhB,CACLD,EAAGA,EACHC,EAAGA,EACHoE,MAAOvI,EACPwI,MAAOsU,IAIXxb,EAAQC,UAAU8b,UAAY,SAAUnZ,GACtC,IAAIC,EAAIzC,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,GAAmBA,UAAU,GAAK,EACxE+R,EAAO/R,UAAU,GACjB+W,EAAS/W,UAAU,GACnByZ,EAAWzZ,UAAU,GAErBqK,EAAOjP,KAAK2P,QAAQV,KAExB,GAAKA,GAASjP,KAAK0f,OAAU1f,KAAK0f,MAAM7c,SAIxC8Y,EAASA,GAAU1M,EAAK0M,QAAUtF,EAAK3I,OAEnCtG,GAAKpH,KAAK0f,MAAM7c,OAClBuE,EAAIpH,KAAK0f,MAAM7c,OAAS,EACfuE,EAAI,IACbA,EAAI,GAGDpH,KAAK0f,MAAMtY,IAAhB,CAIIC,GAAKrH,KAAK0f,MAAMtY,GAAGvE,OACrBwE,EAAIrH,KAAK0f,MAAMtY,GAAGvE,OAAS,EAClBwE,EAAI,IACbA,EAAI,GAGN,IAAIyZ,EAAO9gB,KAAK0f,MAAMtY,GAAGC,GAAGD,EACxB2Z,EAAO/gB,KAAK0f,MAAMtY,GAAGC,GAAGA,EAE5BsP,OAAgBpT,IAAToT,EAAqB1H,EAAKgI,OAAS3P,KAAKiQ,IAAIjQ,KAAKiQ,IAAIjQ,KAAKkQ,IAAIlQ,KAAK4P,IAAI4J,EAAO9gB,KAAKoH,GAAI,KAAOE,KAAKkQ,IAAIlQ,KAAK4P,IAAI6J,EAAO/gB,KAAKqH,GAAI,MAAQ,KAAOsP,EAEtJ3W,KAAK6b,YAAc,CACjBzU,EAAG0Z,EACHzZ,EAAG0Z,EACHtV,MAAOrE,EACPsE,MAAOrE,GAETrH,KAAKsQ,SAASwQ,EAAMC,EAAMpK,EAAMgF,EAAQ0C,KAG1C7Z,EAAQC,UAAUuc,SAAW,SAAU5Z,EAAGC,EAAGsP,EAAMgF,GACjD,IAAI1M,EAAOjP,KAAK2P,QAAQV,KACxB,GAAKA,GAASjP,KAAK0f,OAAU1f,KAAK0f,MAAM7c,OAAxC,CAIA,GAAIoM,EAAKsQ,KAAM,CACb,IAAIla,OAAM,EACN4J,EAAKmR,QACP/a,EAAMrF,KAAK0f,MAAM7c,OAAS,EACtBuE,GAAK/B,EACP+B,EAAI/B,EAAM,EACD+B,EAAI,IACbA,EAAI,GAENA,GAAK,IAEL/B,EAAMrF,KAAK0f,MAAM,GAAG7c,OAAS,EACzBwE,GAAKhC,EACPgC,EAAIhC,EAAM,EACDgC,EAAI,IACbA,EAAI,GAENA,GAAK,GAGTrH,KAAKugB,UAAUnZ,EAAGC,EAAGsP,EAAMgF,KAG7BnX,EAAQC,UAAUd,KAAO,SAAUgT,EAAMgF,GACvC,IAAI1M,EAAOjP,KAAK2P,QAAQV,KACxB,GAAKA,EAAL,CAIA,IAAI7H,EAAIpH,KAAK6b,YAAYpQ,MACrBpE,EAAIrH,KAAK6b,YAAYnQ,MAEzBtE,IACIA,GAAKpH,KAAK0f,MAAM7c,QAAU7C,KAAKgW,oBACjC5O,EAAI,EACJC,KAGFrH,KAAKugB,UAAUnZ,EAAGC,EAAGsP,EAAMgF,KAG7BnX,EAAQC,UAAUwc,KAAO,SAAUtK,EAAMgF,GACvC,IAAI1M,EAAOjP,KAAK2P,QAAQV,KACxB,GAAKA,EAAL,CAIA,IAAI7H,EAAIpH,KAAK6b,YAAYpQ,MACrBpE,EAAIrH,KAAK6b,YAAYnQ,MAEzBtE,IACIA,EAAI,GAAKpH,KAAKgW,oBAChB5O,EAAI,EACJC,KAGFrH,KAAKugB,UAAUnZ,EAAGC,EAAGsP,EAAMgF,KAG7BnX,EAAQC,UAAUyc,eAAiB,WACjC,IAAIjS,EAAOjP,KAAK2P,QAAQV,KACxB,IAAKA,EACH,OAAO,KAGT,GAAIA,EAAKsQ,KAAM,CACb,IAAI1D,OAAc,EAUlB,OAREA,EADE5M,EAAKmR,OACOzZ,EAAO,GAAI3G,KAAK6b,YAAa,CACzCpQ,MAAOzL,KAAK6b,YAAYpQ,MAAQ,IAGpB9E,EAAO,GAAI3G,KAAK6b,YAAa,CACzCnQ,MAAO1L,KAAK6b,YAAYnQ,MAAQ,IAG7BmQ,EAET,OAAO7b,KAAK6b,aAIhB,SAASsF,GAAW3c,GAClBA,EAAQC,UAAU2c,QAAU,WAC1B,IAAIrf,EAAQ6C,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,GAAmBA,UAAU,GAAK,EAEhF,GAAI5E,KAAK2P,QAAQX,MAAO,CACtB,IAAI3H,GAAKtF,EAAQ/B,KAAK6V,WACtB7V,KAAKsQ,SAAS,EAAGjJ,KAIrB7C,EAAQC,UAAU4c,iBAAmB,WACnC,OAAOrhB,KAAK2P,QAAQX,OAAShP,KAAK8V,eAGpCtR,EAAQC,UAAU2M,WAAa,WAC7B,IAAIpC,EAAQhP,KAAK2P,QAAQX,MACpBA,EAAMiN,oBACTjN,EAAMiN,kBAAoB,gBAEvBjN,EAAM8P,iBACT9P,EAAM8P,eAAiB,cAEpB9P,EAAMsS,yBACTtS,EAAMsS,uBAAyB,4BAEL/d,IAAxByL,EAAM8G,gBACR9G,EAAM8G,cAAgB,IAI1BtR,EAAQC,UAAU6S,uBAAyB,SAAUjQ,GACnDA,EAAIA,EAAI,EAAI,EAAIA,EAAIrH,KAAKyT,WAAazT,KAAKyT,WAAapM,EACxD,IAAI2H,EAAQhP,KAAK2P,QAAQX,MACrBuS,EAAeja,KAAK4P,IAAI5P,KAAKiO,OAAOlO,EAAIrH,KAAK6V,aAC7C2L,EAAaD,EACb5L,EAAQ3V,KAAK2V,MAKjB,MAAO4L,GAAgB,EAAG,CACxB,IAA6E,IAAzE5L,EAAM4L,GAAcvF,UAAU5V,QAAQ4I,EAAMsS,wBAC9C,MAEFC,IAGF,GAAIA,EAAe,EAAG,CACpBA,EAAeC,EACf,MAAOD,GAAgB5L,EAAM9S,OAAS,EAAG,CACvC,IAA6E,IAAzE8S,EAAM4L,GAAcvF,UAAU5V,QAAQ4I,EAAMsS,wBAC9C,MAEFC,KASJ,OAJIA,IAAiB5L,EAAM9S,SACzB0e,EAAeC,GAGV,CACLzf,MAAO/B,KAAKyhB,uBAAyB,EAAIF,EACzCla,GAAIka,EAAevhB,KAAK6V,aAI5BrR,EAAQC,UAAUmR,uBAAyB,WACzC,IAAI5G,EAAQhP,KAAK2P,QAAQX,MACrB2G,EAAQ3V,KAAK2V,MACjB3V,KAAKyhB,uBAAwB,EAC7B,IAAK,IAAIve,EAAI,EAAGA,EAAIyS,EAAM9S,OAAQK,IAChC,IAAkE,IAA9DyS,EAAMzS,GAAG8Y,UAAU5V,QAAQ4I,EAAMsS,wBAAgC,CACnEthB,KAAKyhB,uBAAwB,EAC7B,QAMR,IAAIC,GAAoB,EAExB,SAASC,GAAend,GACtBA,EAAQC,UAAUwM,eAAiB,WACjC,IAAIkB,EAAQnS,KAER4hB,EAAqB5hB,KAAK2P,QAAQT,UAClC2S,EAAwBD,EAAmBE,KAC3CA,OAAiCve,IAA1Bse,GAA6CA,EACpDE,EAAwBH,EAAmBI,YAC3CA,OAAwCze,IAA1Bwe,GAA8CA,EAEhE/hB,KAAK+c,WAAa,GAClB,IAAIkF,OAAY,EAEZjiB,KAAK2P,QAAQtC,UACf4U,EAAY,CACV3Z,GAAI4Z,GAAgB,cACpBC,UAAW,aACXL,KAAMA,EACNE,YAAaA,GAEfhiB,KAAKoiB,iBAAiBH,EAAU3Z,IAEhCtI,KAAK+c,WAAWlZ,KAAK,IAAIwe,GAAUriB,KAAMiiB,KAGvCjiB,KAAK2P,QAAQrC,UACf2U,EAAY,CACV3Z,GAAI4Z,GAAgB,YACpBC,UAAW,WACXL,KAAMA,EACNE,YAAaA,GAEfhiB,KAAKoiB,iBAAiBH,EAAU3Z,IAChCtI,KAAK+c,WAAWlZ,KAAK,IAAIwe,GAAUriB,KAAMiiB,KAG3CjiB,KAAKqC,GAAG,WAAW,WACjB,IAAK,IAAIa,EAAI,EAAGA,EAAIiP,EAAM4K,WAAWla,OAAQK,IAC3CiP,EAAM4K,WAAW7Z,GAAGmN,aAIpByR,IACF9hB,KAAKqC,GAAG,aAAa,WACnB,IAAK,IAAIa,EAAI,EAAGA,EAAIiP,EAAM4K,WAAWla,OAAQK,IAC3CiP,EAAM4K,WAAW7Z,GAAG4e,UAIxB9hB,KAAKqC,GAAG,gBAAgB,WACtB,IAAK,IAAIa,EAAI,EAAGA,EAAIiP,EAAM4K,WAAWla,OAAQK,IAC3CiP,EAAM4K,WAAW7Z,GAAG4e,UAIxB9hB,KAAKqC,GAAG,eAAe,WACrB,IAAK,IAAIa,EAAI,EAAGA,EAAIiP,EAAM4K,WAAWla,OAAQK,IAC3CiP,EAAM4K,WAAW7Z,GAAG4e,MAAK,MAI7B9hB,KAAKqC,GAAG,qBAAqB,WAC3B,IAAK,IAAIa,EAAI,EAAGA,EAAIiP,EAAM4K,WAAWla,OAAQK,IAC3CiP,EAAM4K,WAAW7Z,GAAG4e,MAAK,GAAM,OAKrC9hB,KAAKqC,GAAG,WAAW,WACjB8P,EAAMmQ,wBAIV9d,EAAQC,UAAU2d,iBAAmB,SAAUlT,GAC7ClP,KAAK8Q,QAAQjE,YAAYqC,IAG3B1K,EAAQC,UAAU6d,kBAAoB,WACpC,IAAK,IAAIpf,EAAI,EAAGA,EAAIlD,KAAK+c,WAAWla,OAAQK,IAC1ClD,KAAK+c,WAAW7Z,GAAGmc,WAKzB,SAAS6C,GAAgBC,GACvB,IAAIjT,EAAYrO,SAAS4G,cAAc,OACnCwa,EAAYphB,SAAS4G,cAAc,OAoBvC,OAlBAyH,EAAU5O,MAAMiiB,QAAU,oDAC1BN,EAAU3hB,MAAMiiB,QAAU,+HAE1BN,EAAUjG,UAAY,oBAEJ,eAAdmG,GACFjT,EAAU5O,MAAMiiB,SAAW,0CAC3BN,EAAU3hB,MAAMwK,OAAS,OACzBoE,EAAU8M,UAAY,iCAEtB9M,EAAU5O,MAAMiiB,SAAW,0CAC3BN,EAAU3hB,MAAMuK,MAAQ,OACxBqE,EAAU8M,UAAY,8BAGxB9M,EAAU5O,MAAMiiB,SAAW,mBAC3BrT,EAAUrC,YAAYoV,GAEf/S,EAGT,SAASmT,GAAUtR,EAAUpB,GAC3B3P,KAAK8Q,QAAUnB,EAAQrH,GACvBtI,KAAKwiB,aAAexiB,KAAK8Q,QAAQxQ,MACjCN,KAAKiiB,UAAYjiB,KAAK8Q,QAAQgB,SAAS,GACvC9R,KAAKyiB,eAAiBziB,KAAKiiB,UAAU3hB,MACrCN,KAAK+Q,SAAWA,EAChB/Q,KAAKmiB,UAAYxS,EAAQwS,UACrBxS,EAAQmS,MACV9hB,KAAK0iB,QAAU,EACf1iB,KAAKwiB,aAAaG,QAAU,KAE5B3iB,KAAK0iB,QAAU,EAGjB1iB,KAAK4iB,WAAa,EAClB5iB,KAAK6iB,WAAa,EAClB7iB,KAAK8iB,QAAU,EACf9iB,KAAK+iB,QAAU,EACf/iB,KAAKoH,EAAI,EACTpH,KAAKqH,EAAI,EAELsI,EAAQqS,aACVhiB,KAAKgQ,gBAwRT,SAASgT,GAAcxe,GACrBA,EAAQC,UAAU0M,cAAgB,WAEhCnR,KAAK2P,QAAQtB,UAAYsK,IAG3BnU,EAAQC,UAAU4W,eAAiB,WACjC,IAAI4H,EAAwBjjB,KAAK2P,QAAQR,gBACrC+T,EAAyBD,EAAsBxC,UAC/CA,OAAuCld,IAA3B2f,EAAuC,GAAKA,EACxDC,EAAyBF,EAAsBlJ,KAC/CA,OAAkCxW,IAA3B4f,EAAuC,GAAKA,EAIvD,QAAInjB,KAAK8P,aAAeyI,GAAkBvY,KAAKqH,EAAIoZ,KAI9CzgB,KAAKgS,UACRhS,KAAKgS,SAAU,EACfhS,KAAKmF,QAAQ,gBAEfnF,KAAKsQ,SAAStQ,KAAKoH,EAAG2S,EAAM/Z,KAAK2P,QAAQhC,WAAY0I,EAAK3I,QAEnD1N,KAAKgS,UAGdxN,EAAQC,UAAU2e,eAAiB,WACjCpjB,KAAKgS,SAAU,EACfhS,KAAKmW,cAAcnW,KAAK2P,QAAQhC,WAAY0I,EAAK3I,SAGnDlJ,EAAQC,UAAU4e,aAAe,WAC/B,IAAIvQ,IAASlO,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,KAAmBA,UAAU,GAE5E5E,KAAK2P,QAAQR,gBAAkB2D,EAC/B9S,KAAKmR,iBAGP3M,EAAQC,UAAU6e,cAAgB,WAChCtjB,KAAK2P,QAAQR,iBAAkB,GAGjC3K,EAAQC,UAAU8e,oBAAsB,WACtC,IAAIC,EAAyBxjB,KAAK2P,QAAQR,gBACtCsU,EAAyBD,EAAuB/C,UAChDA,OAAuCld,IAA3BkgB,EAAuC,GAAKA,EACxDC,EAAyBF,EAAuBzJ,KAChDA,OAAkCxW,IAA3BmgB,EAAuC,GAAKA,EAGnD1jB,KAAKgS,UAGThS,KAAKgS,SAAU,EAEfhS,KAAKsQ,SAAStQ,KAAKoH,EAAGqZ,GACtBzgB,KAAKmF,QAAQ,eACbnF,KAAKsQ,SAAStQ,KAAKoH,EAAG2S,EAAM/Z,KAAK2P,QAAQhC,WAAY0I,EAAK3I,UAI9D,SAASiW,GAAYnf,GACnBA,EAAQC,UAAUyM,YAAc,WAE9BlR,KAAK2P,QAAQtB,UAAYsK,GAEzB3Y,KAAK4jB,gBAAiB,EACtB5jB,KAAK6jB,gBAGPrf,EAAQC,UAAUof,aAAe,WAC3B7jB,KAAK4jB,iBAGT5jB,KAAK4jB,gBAAiB,EACtB5jB,KAAKqC,GAAG,SAAUrC,KAAK8jB,eAGzBtf,EAAQC,UAAUqf,YAAc,SAAUlH,GACxC,IAAIzK,EAAQnS,KAER+jB,EAAwB/jB,KAAK2P,QAAQP,WAAWqR,UAChDA,OAAsCld,IAA1BwgB,EAAsC,EAAIA,EAEtD/jB,KAAK2Z,mBAAqBrB,GAAgBsE,EAAIvV,GAAKrH,KAAKyT,WAAagN,IAEvEzgB,KAAK8E,KAAK,aAAa,WACrBqN,EAAMyR,gBAAiB,KAEzB5jB,KAAKmF,QAAQ,aACbnF,KAAKgF,IAAI,SAAUhF,KAAK8jB,eAI5Btf,EAAQC,UAAUuf,aAAe,WAC/B,IAAI9P,EAASlU,KAETA,KAAK4jB,eACP5jB,KAAK8E,KAAK,aAAa,WACrBoP,EAAO2P,kBAGT7jB,KAAK6jB,gBAITrf,EAAQC,UAAUwf,WAAa,WAC7B,IAAInR,IAASlO,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,KAAmBA,UAAU,GAE5E5E,KAAK2P,QAAQP,WAAa0D,EAC1B9S,KAAKkR,eAGP1M,EAAQC,UAAUyf,YAAc,WAC9BlkB,KAAK2P,QAAQP,YAAa,EACrBpP,KAAK4jB,iBAGV5jB,KAAK4jB,gBAAiB,EACtB5jB,KAAKgF,IAAI,SAAUhF,KAAK8jB,eAI5B,SAASK,GAAgB3f,GACvBA,EAAQC,UAAU4M,gBAAkB,WAClC,IAAIc,EAAQnS,KAEZA,KAAKokB,uBAAuB/b,GAE5BrI,KAAKqC,GAAG,WAAW,WACjBuQ,aAAaT,EAAMkS,iBACnBzR,aAAaT,EAAMmS,oBACnBnS,EAAMiS,uBAAuB3b,MAG/BzI,KAAKukB,qBAAsB,GAG7B/f,EAAQC,UAAU2f,uBAAyB,SAAUzT,GACnDA,EAAe3Q,KAAK8Q,QAAS,QAAS9Q,MACtC2Q,EAAe3Q,KAAK8Q,QAAS,aAAc9Q,MAC3C2Q,EAAe3Q,KAAK8Q,QAAS,iBAAkB9Q,OAGjDwE,EAAQC,UAAUsQ,cAAgB,SAAU3J,GAC1C,IAAI8I,EAASlU,KAEb,GAAKA,KAAK8U,QAAV,CAGA1J,EAAEkD,iBAEEtO,KAAK2P,QAAQL,iBACflE,EAAEkE,kBAGAtP,KAAKukB,qBACPvkB,KAAKmF,QAAQ,eAEfnF,KAAKukB,qBAAsB,EAE3B,IAAIC,EAAsBxkB,KAAK2P,QAAQN,WACnCoV,EAAwBD,EAAoBvN,MAC5CA,OAAkC1T,IAA1BkhB,EAAsC,GAAKA,EACnDC,EAAwBF,EAAoBG,OAC5CA,OAAmCphB,IAA1BmhB,GAA8CA,EACvDE,EAAwBJ,EAAoBK,SAC5CA,OAAqCthB,IAA1BqhB,EAAsC,IAAMA,EAG3DhS,aAAa5S,KAAKqkB,iBAClBrkB,KAAKqkB,gBAAkBxR,YAAW,WAC3BqB,EAAOvE,QAAQV,MAAS4V,GAC3B3Q,EAAO/O,QAAQ,YAAa,CAC1BiC,EAAG8M,EAAO9M,EACVC,EAAG6M,EAAO7M,IAGd6M,EAAOqQ,qBAAsB,IAC5B,KAEH,IAAIO,OAAc,EACdC,OAAc,EAElB,QAAQ,GACN,IAAK,WAAY3Z,EACK,IAAhBA,EAAE4Z,WACJF,GAAe1Z,EAAEiP,OAASpD,EAC1B8N,GAAe3Z,EAAEkP,OAASrD,IAE1B6N,GAAe1Z,EAAEiP,OACjB0K,GAAe3Z,EAAEkP,QAEnB,MACF,IAAK,gBAAiBlP,EACpB0Z,EAAc1Z,EAAE0Z,YAAc,IAAM7N,EACpC8N,EAAc3Z,EAAE2Z,YAAc,IAAM9N,EACpC,MACF,IAAK,eAAgB7L,EACnB0Z,EAAcC,EAAc3Z,EAAE6Z,WAAa,IAAMhO,EACjD,MACF,IAAK,WAAY7L,EACf0Z,EAAcC,GAAe3Z,EAAE8Z,OAAS,EAAIjO,EAC5C,MACF,QACE,OAGJ,IAAIkL,EAAYwC,GAAU,EAAI,EAC9BG,GAAe3C,EACf4C,GAAe5C,EAEVniB,KAAKgW,oBACR8O,EAAcC,EACdA,EAAc,GAGhB,IAAIrK,OAAO,EACPC,OAAO,EACX,GAAI3a,KAAK2P,QAAQV,KAiBf,OAhBAyL,EAAO1a,KAAK6b,YAAYpQ,MACxBkP,EAAO3a,KAAK6b,YAAYnQ,MAEpBoZ,EAAc,EAChBpK,IACSoK,EAAc,GACvBpK,IAGEqK,EAAc,EAChBpK,IACSoK,EAAc,GACvBpK,SAGF3a,KAAKugB,UAAU7F,EAAMC,GAIvBD,EAAO1a,KAAKoH,EAAIE,KAAKiO,MAAMvV,KAAK+V,oBAAsB+O,EAAc,GACpEnK,EAAO3a,KAAKqH,EAAIC,KAAKiO,MAAMvV,KAAKgW,kBAAoB+O,EAAc,GAElE/kB,KAAK0Z,iBAAmB1Z,KAAK6P,WAAaiV,EAAc,GAAK,EAAIA,EAAc,EAAI,EAAI,EACvF9kB,KAAK2Z,iBAAmB3Z,KAAK8P,WAAaiV,EAAc,GAAK,EAAIA,EAAc,EAAI,EAAI,EAEnFrK,EAAO1a,KAAKsT,WACdoH,EAAO1a,KAAKsT,WACHoH,EAAO1a,KAAKuT,aACrBmH,EAAO1a,KAAKuT,YAGVoH,EAAO3a,KAAKwT,WACdmH,EAAO3a,KAAKwT,WACHmH,EAAO3a,KAAKyT,aACrBkH,EAAO3a,KAAKyT,YAGd,IAAI0R,EAAiBnlB,KAAKqH,IAAMsT,EAChC3a,KAAKsQ,SAASoK,EAAMC,EAAMkK,EAAUxO,EAAKC,OACzCtW,KAAKmF,QAAQ,SAAU,CACrBiC,EAAGpH,KAAKoH,EACRC,EAAGrH,KAAKqH,IAEVuL,aAAa5S,KAAKskB,oBACda,IACFnlB,KAAKskB,mBAAqBzR,YAAW,WACnCqB,EAAO/O,QAAQ,YAAa,CAC1BiC,EAAG8M,EAAO9M,EACVC,EAAG6M,EAAO7M,MAEXwd,MAKT,SAASO,GAAU5gB,GACjBA,EAAQC,UAAU6M,UAAY,WAC5B,IAAI+T,EAAgBrlB,KAAK2P,QAAQJ,KAC7B+V,EAAsBD,EAAc3O,MACpCA,OAAgCnT,IAAxB+hB,EAAoC,EAAIA,EAChDC,EAAoBF,EAAc7N,IAClCA,OAA4BjU,IAAtBgiB,EAAkC,EAAIA,EAC5CC,EAAoBH,EAAc9N,IAClCA,OAA4BhU,IAAtBiiB,EAAkC,EAAIA,EAEhDxlB,KAAKwQ,MAAQlJ,KAAKkQ,IAAIlQ,KAAKiQ,IAAIb,EAAOc,GAAMD,GAC5CvX,KAAK+P,SAAS/P,KAAKwQ,OACnBxQ,KAAK8c,cAAcxc,EAAM0J,iBAAmB,OAG9CxF,EAAQC,UAAUghB,QAAU,SAAUjV,EAAOkV,EAASC,EAAS9H,GAC7D7d,KAAKyU,QAAS,EAEd,IAAIhE,EAAYD,GAASqN,GAAc7d,KAAKwQ,OAC5CxQ,KAAK+P,SAASS,GAEdxQ,KAAKqQ,UAEL,IAAIqK,EAAOpT,KAAKiO,MAAMvV,KAAKmN,QAAUuY,EAAU1lB,KAAKyV,YAAchF,EAAY,IAC1EkK,EAAOrT,KAAKiO,MAAMvV,KAAKoN,QAAUuY,EAAU3lB,KAAK0V,YAAcjF,EAAY,IAE1EiK,EAAO1a,KAAKsT,WACdoH,EAAO1a,KAAKsT,WACHoH,EAAO1a,KAAKuT,aACrBmH,EAAO1a,KAAKuT,YAGVoH,EAAO3a,KAAKwT,WACdmH,EAAO3a,KAAKwT,WACHmH,EAAO3a,KAAKyT,aACrBkH,EAAO3a,KAAKyT,YAGVzT,KAAKoH,IAAMsT,GAAQ1a,KAAKqH,IAAMsT,GAChC3a,KAAKsQ,SAASoK,EAAMC,EAAM3a,KAAK2P,QAAQhC,YAGzC3N,KAAKyU,QAAS,GAGhBjQ,EAAQC,UAAUmhB,OAAS,SAAUpV,EAAOpJ,EAAGC,GAC7C,IAAIwe,EAAgB5c,EAAajJ,KAAK8Q,SAClClI,EAAOid,EAAcjd,KACrBC,EAAMgd,EAAchd,IAEpB6c,EAAUte,EAAIwB,EAAO5I,KAAKoH,EAC1Bue,EAAUte,EAAIwB,EAAM7I,KAAKqH,EAC7BrH,KAAKylB,QAAQjV,EAAOkV,EAASC,IAG/BnhB,EAAQC,UAAU6P,WAAa,SAAUlJ,GACvC,IAAI0a,EAAc1a,EAAEiJ,QAAQ,GACxB0R,EAAe3a,EAAEiJ,QAAQ,GACzBgG,EAAS/S,KAAK4P,IAAI4O,EAAYra,MAAQsa,EAAata,OACnD6O,EAAShT,KAAK4P,IAAI4O,EAAYpa,MAAQqa,EAAara,OAEvD1L,KAAKgmB,cAAgB7e,EAAYkT,EAAQC,GACzCta,KAAK6d,WAAa7d,KAAKwQ,MAEvB,IAAIyV,EAAiBhd,EAAajJ,KAAK8Q,SACnClI,EAAOqd,EAAerd,KACtBC,EAAMod,EAAepd,IAEzB7I,KAAK0lB,QAAUpe,KAAK4P,IAAI4O,EAAYra,MAAQsa,EAAata,OAAS,EAAI7C,EAAO5I,KAAKoH,EAClFpH,KAAK2lB,QAAUre,KAAK4P,IAAI4O,EAAYpa,MAAQqa,EAAara,OAAS,EAAI7C,EAAM7I,KAAKqH,EAEjFrH,KAAKmF,QAAQ,cAGfX,EAAQC,UAAU8P,MAAQ,SAAUnJ,GAClC,GAAKpL,KAAK8U,UAAW9U,KAAK+T,WAAa3J,EAAUgB,EAAEhK,QAAUpB,KAAKsZ,UAAlE,CAIItZ,KAAK2P,QAAQrB,gBACflD,EAAEkD,iBAGAtO,KAAK2P,QAAQL,iBACflE,EAAEkE,kBAGJ,IAAIwW,EAAc1a,EAAEiJ,QAAQ,GACxB0R,EAAe3a,EAAEiJ,QAAQ,GACzBgG,EAAS/S,KAAK4P,IAAI4O,EAAYra,MAAQsa,EAAata,OACnD6O,EAAShT,KAAK4P,IAAI4O,EAAYpa,MAAQqa,EAAara,OACnDsL,EAAW7P,EAAYkT,EAAQC,GAC/B9J,EAAQwG,EAAWhX,KAAKgmB,cAAgBhmB,KAAK6d,WAEjD7d,KAAKyU,QAAS,EAEd,IAAIyR,EAAiBlmB,KAAK2P,QAAQJ,KAC9B4W,EAAqBD,EAAe1O,IACpCA,OAA6BjU,IAAvB4iB,EAAmC,EAAIA,EAC7CC,EAAqBF,EAAe3O,IACpCA,OAA6BhU,IAAvB6iB,EAAmC,EAAIA,EAG7C5V,EAAQgH,EACVhH,EAAQ,GAAMgH,EAAMlQ,KAAK+e,IAAI,EAAK7V,EAAQgH,GACjChH,EAAQ+G,IACjB/G,EAAQ,EAAM+G,EAAMjQ,KAAK+e,IAAI,GAAK9O,EAAM/G,IAG1C,IAAIC,EAAYD,EAAQxQ,KAAK6d,WAEzBzW,EAAIpH,KAAKmN,QAAUnN,KAAK0lB,QAAU1lB,KAAKyV,YAAchF,EAAY,GACjEpJ,EAAIrH,KAAKoN,QAAUpN,KAAK2lB,QAAU3lB,KAAK0V,YAAcjF,EAAY,GAErEzQ,KAAK+P,SAASS,GAEdxQ,KAAKsQ,SAASlJ,EAAGC,EAAG,KAGtB7C,EAAQC,UAAUiQ,SAAW,SAAUtJ,GACrC,GAAKpL,KAAK8U,UAAW9U,KAAK+T,WAAa3J,EAAUgB,EAAEhK,QAAUpB,KAAKsZ,UAAlE,CAIItZ,KAAK2P,QAAQrB,gBACflD,EAAEkD,iBAGAtO,KAAK2P,QAAQL,iBACflE,EAAEkE,kBAGJtP,KAAK0R,gBAAiB,EACtB1R,KAAKie,aAAc,EACnBje,KAAKsZ,UAAY,EAEjB,IAAIgN,EAAiBtmB,KAAK2P,QAAQJ,KAC9BgX,EAAqBD,EAAe9O,IACpCA,OAA6BjU,IAAvBgjB,EAAmC,EAAIA,EAC7CC,EAAqBF,EAAe/O,IACpCA,OAA6BhU,IAAvBijB,EAAmC,EAAIA,EAG7ChW,EAAQxQ,KAAKwQ,MAAQ+G,EAAMA,EAAMvX,KAAKwQ,MAAQgH,EAAMA,EAAMxX,KAAKwQ,MAEnExQ,KAAKylB,QAAQjV,EAAOxQ,KAAK0lB,QAAS1lB,KAAK2lB,QAAS3lB,KAAK6d,YAErD7d,KAAKmF,QAAQ,aA5rBjBkd,GAAU5d,UAAU0P,YAAc,SAAU/I,GAC1C,OAAQA,EAAEhK,MACR,IAAK,aACL,IAAK,YACHpB,KAAKoU,OAAOhJ,GACZ,MACF,IAAK,YACL,IAAK,YACHpL,KAAKwU,MAAMpJ,GACX,MACF,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,cACHpL,KAAK2U,KAAKvJ,GACV,QAINiX,GAAU5d,UAAU4L,QAAU,WACxBrQ,KAAKymB,gBACPzmB,KAAKgd,iBACLhd,KAAK0mB,aACL1mB,KAAKwd,mBAIT6E,GAAU5d,UAAUqd,KAAO,SAAUY,EAASiE,GAC5C,IAAIzS,EAASlU,KAEb,IAAI2mB,GAAS3mB,KAAK0iB,QAAlB,CAIA,IAAI/L,EAAO+L,EAAU,IAAM,IAE3BA,EAAUA,EAAU,IAAM,IAE1B1iB,KAAKwiB,aAAaliB,EAAMwJ,oBAAsB6M,EAAO,KAErD/D,aAAa5S,KAAK4mB,aAClB5mB,KAAK4mB,YAAc/T,YAAW,WAC5BqB,EAAOsO,aAAaG,QAAUD,EAC9BxO,EAAOwO,SAAWA,IACjB,KAGLL,GAAU5d,UAAU+Y,eAAiB,WACnC,GAAuB,aAAnBxd,KAAKmiB,UAA0B,CACjC,IAAI9a,EAAIC,KAAKiO,MAAMvV,KAAK6iB,WAAa7iB,KAAK+Q,SAAS1J,GAEnD,GAAIA,EAAI,EAAG,CACTrH,KAAKgd,eAAe,KACpB,IAAIlS,EAASxD,KAAKiQ,IAAIvX,KAAK6mB,gBAAsB,EAAJxf,EAAOqa,IACpD1hB,KAAKyiB,eAAe3X,OAASA,EAAS,KACtCzD,EAAI,OACC,GAAIA,EAAIrH,KAAK+iB,QAAS,CAC3B/iB,KAAKgd,eAAe,KACpB,IAAI8J,EAAUxf,KAAKiQ,IAAIvX,KAAK6mB,gBAAuC,GAApBxf,EAAIrH,KAAK+iB,SAAcrB,IACtE1hB,KAAKyiB,eAAe3X,OAASgc,EAAU,KACvCzf,EAAIrH,KAAK+iB,QAAU/iB,KAAK6mB,gBAAkBC,OAE1C9mB,KAAKyiB,eAAe3X,OAAS9K,KAAK6mB,gBAAkB,KAEtD7mB,KAAKqH,EAAIA,EAELrH,KAAK+Q,SAASpB,QAAQjB,aACxB1O,KAAKyiB,eAAeniB,EAAMiJ,WAAa,cAAgBlC,EAAI,MAAQrH,KAAK+Q,SAASL,WAEjF1Q,KAAKyiB,eAAe5Z,IAAMxB,EAAI,SAE3B,CACL,IAAID,EAAIE,KAAKiO,MAAMvV,KAAK4iB,WAAa5iB,KAAK+Q,SAAS3J,GAEnD,GAAIA,EAAI,EAAG,CACTpH,KAAKgd,eAAe,KACpB,IAAInS,EAAQvD,KAAKiQ,IAAIvX,KAAK+mB,eAAqB,EAAJ3f,EAAOsa,IAClD1hB,KAAKyiB,eAAe5X,MAAQA,EAAQ,KACpCzD,EAAI,OACC,GAAIA,EAAIpH,KAAK8iB,QAAS,CAC3B9iB,KAAKgd,eAAe,KACpB,IAAIgK,EAAS1f,KAAKiQ,IAAIvX,KAAK+mB,eAAsC,GAApB3f,EAAIpH,KAAK8iB,SAAcpB,IACpE1hB,KAAKyiB,eAAe5X,MAAQmc,EAAS,KACrC5f,EAAIpH,KAAK8iB,QAAU9iB,KAAK+mB,eAAiBC,OAEzChnB,KAAKyiB,eAAe5X,MAAQ7K,KAAK+mB,eAAiB,KAGpD/mB,KAAKoH,EAAIA,EAELpH,KAAK+Q,SAASpB,QAAQjB,aACxB1O,KAAKyiB,eAAeniB,EAAMiJ,WAAa,cAAgBnC,EAAI,MAAQpH,KAAK+Q,SAASL,WAEjF1Q,KAAKyiB,eAAe7Z,KAAOxB,EAAI,OAKrCib,GAAU5d,UAAUuY,eAAiB,WACnC,IAAIrG,EAAO/R,UAAU/B,OAAS,QAAsBU,IAAjBqB,UAAU,GAAmBA,UAAU,GAAK,EAE/E5E,KAAKyiB,eAAeniB,EAAMwJ,oBAAsB6M,EAAO,MAGzD0L,GAAU5d,UAAUoF,yBAA2B,SAAU8R,GACvD3b,KAAKyiB,eAAeniB,EAAMuJ,0BAA4B8R,GAGxD0G,GAAU5d,UAAU4a,QAAU,WAC5Brf,KAAK6Q,mBACL7Q,KAAK8Q,QAAQhE,WAAWE,YAAYhN,KAAK8Q,UAG3CuR,GAAU5d,UAAU2P,OAAS,SAAUhJ,GACrC,IAAI4O,EAAQ5O,EAAEiJ,QAAUjJ,EAAEiJ,QAAQ,GAAKjJ,EAEvCA,EAAEkD,iBACFlD,EAAEkE,kBAEFtP,KAAKgd,iBAELhd,KAAKsZ,WAAY,EACjBtZ,KAAKuZ,OAAQ,EACbvZ,KAAKinB,WAAajN,EAAMvO,MACxBzL,KAAKknB,WAAalN,EAAMtO,MAExB1L,KAAK8Z,UAAYzT,IAEjBrG,KAAKmnB,kBAAkB9e,GACvBrI,KAAK+Q,SAAS5L,QAAQ,sBAGxBkd,GAAU5d,UAAU+P,MAAQ,SAAUpJ,GACpC,IAAI4O,EAAQ5O,EAAEiJ,QAAUjJ,EAAEiJ,QAAQ,GAAKjJ,EAEvCA,EAAEkD,iBACFlD,EAAEkE,kBAEGtP,KAAKuZ,OACRvZ,KAAK+Q,SAAS5L,QAAQ,eAGxBnF,KAAKuZ,OAAQ,EAEb,IAAIc,EAASL,EAAMvO,MAAQzL,KAAKinB,WAChCjnB,KAAKinB,WAAajN,EAAMvO,MAExB,IAAI6O,EAASN,EAAMtO,MAAQ1L,KAAKknB,WAChClnB,KAAKknB,WAAalN,EAAMtO,MAExB,IAAIgP,EAAO1a,KAAKoH,EAAIiT,EAChBM,EAAO3a,KAAKqH,EAAIiT,EAEpBta,KAAKonB,KAAK1M,EAAMC,IAGlB0H,GAAU5d,UAAUkQ,KAAO,SAAUvJ,GACnC,GAAKpL,KAAKsZ,UAAV,CAGAtZ,KAAKsZ,WAAY,EAEjBlO,EAAEkD,iBACFlD,EAAEkE,kBAEFtP,KAAKmnB,kBAAkB1e,GAEvB,IAAI4e,EAAarnB,KAAK+Q,SAASpB,QAAQV,KACvC,GAAIoY,EAAY,CACd,IAAIpQ,EAAQoQ,EAAWpQ,MACnBqQ,EAAqBD,EAAW1L,OAChCA,OAAgCpY,IAAvB+jB,EAAmCjR,EAAK3I,OAAS4Z,EAE1DrY,EAAOjP,KAAK+Q,SAAS6K,aAAa5b,KAAK+Q,SAAS3J,EAAGpH,KAAK+Q,SAAS1J,GAEjEsP,EAAOM,GAAS3P,KAAKiQ,IAAIjQ,KAAKiQ,IAAIjQ,KAAKkQ,IAAIlQ,KAAK4P,IAAIlX,KAAK+Q,SAAS3J,EAAI6H,EAAK7H,GAAI,KAAOE,KAAKkQ,IAAIlQ,KAAK4P,IAAIlX,KAAK+Q,SAAS1J,EAAI4H,EAAK5H,GAAI,MAAQ,KAE3IrH,KAAK+Q,SAAS3J,IAAM6H,EAAK7H,GAAKpH,KAAK+Q,SAAS1J,IAAM4H,EAAK5H,IACzDrH,KAAK+Q,SAASlB,WAAa,EAC3B7P,KAAK+Q,SAASjB,WAAa,EAC3B9P,KAAK+Q,SAAS8K,YAAc5M,EAC5BjP,KAAK+Q,SAAST,SAASrB,EAAK7H,EAAG6H,EAAK5H,EAAGsP,EAAMgF,IAI7C3b,KAAKuZ,OACPvZ,KAAK+Q,SAAS5L,QAAQ,YAAa,CACjCiC,EAAGpH,KAAK+Q,SAAS3J,EACjBC,EAAGrH,KAAK+Q,SAAS1J,MAKvBgb,GAAU5d,UAAU2iB,KAAO,SAAUhgB,EAAGC,GAClCD,EAAI,EACNA,EAAI,EACKA,EAAIpH,KAAK8iB,UAClB1b,EAAIpH,KAAK8iB,SAGPzb,EAAI,EACNA,EAAI,EACKA,EAAIrH,KAAK+iB,UAClB1b,EAAIrH,KAAK+iB,SAGX3b,EAAIE,KAAKiO,MAAMnO,EAAIpH,KAAK4iB,YACxBvb,EAAIC,KAAKiO,MAAMlO,EAAIrH,KAAK6iB,YAExB7iB,KAAK+Q,SAAST,SAASlJ,EAAGC,GAC1BrH,KAAK+Q,SAAS5L,QAAQ,SAAU,CAC9BiC,EAAGpH,KAAK+Q,SAAS3J,EACjBC,EAAGrH,KAAK+Q,SAAS1J,KAIrBgb,GAAU5d,UAAUgiB,YAAc,WAChC,MAAuB,aAAnBzmB,KAAKmiB,WAA4BniB,KAAK+Q,SAASiF,mBAAwC,eAAnBhW,KAAKmiB,WAA8BniB,KAAK+Q,SAASgF,qBACvH/V,KAAK8Q,QAAQxQ,MAAMinB,QAAU,IACtB,IAETvnB,KAAK8Q,QAAQxQ,MAAMinB,QAAU,QACtB,IAGTlF,GAAU5d,UAAUiiB,WAAa,WAC/B,GAAuB,aAAnB1mB,KAAKmiB,UAA0B,CACjC,IAAI9M,EAAgBrV,KAAK8Q,QAAQsK,aACjCpb,KAAK6mB,gBAAkBvf,KAAKiQ,IAAIjQ,KAAKiO,MAAMF,EAAgBA,GAAiBrV,KAAK+Q,SAASyE,gBAAkBH,GAAiB,IAAKqM,IAClI1hB,KAAKyiB,eAAe3X,OAAS9K,KAAK6mB,gBAAkB,KAEpD7mB,KAAK+iB,QAAU1N,EAAgBrV,KAAK6mB,gBAEpC7mB,KAAK6iB,WAAa7iB,KAAK+iB,QAAU/iB,KAAK+Q,SAAS0C,eAC1C,CACL,IAAI2B,EAAepV,KAAK8Q,QAAQ/P,YAChCf,KAAK+mB,eAAiBzf,KAAKiQ,IAAIjQ,KAAKiO,MAAMH,EAAeA,GAAgBpV,KAAK+Q,SAASuE,eAAiBF,GAAgB,IAAKsM,IAC7H1hB,KAAKyiB,eAAe5X,MAAQ7K,KAAK+mB,eAAiB,KAElD/mB,KAAK8iB,QAAU1N,EAAepV,KAAK+mB,eAEnC/mB,KAAK4iB,WAAa5iB,KAAK8iB,QAAU9iB,KAAK+Q,SAASwC,aAInD8O,GAAU5d,UAAUuL,cAAgB,WAClC,IAAIW,EAAiBtI,EACrBrI,KAAK4Q,iBAAiBD,IAGxB0R,GAAU5d,UAAUoM,iBAAmB,WACrC,IAAIF,EAAiBlI,EACrBzI,KAAK4Q,iBAAiBD,GACtB3Q,KAAKmnB,kBAAkBxW,IAGzB0R,GAAU5d,UAAU0iB,kBAAoB,SAAUxW,GAC3C3Q,KAAK+Q,SAASpB,QAAQd,cACzB8B,EAAehQ,OAAQ,YAAaX,MAEjCA,KAAK+Q,SAASpB,QAAQf,cACzB+B,EAAehQ,OAAQ,YAAaX,OAIxCqiB,GAAU5d,UAAUmM,iBAAmB,SAAUD,GAC1C3Q,KAAK+Q,SAASpB,QAAQd,eACzB8B,EAAe3Q,KAAKiiB,UAAW,aAAcjiB,MAC7C2Q,EAAehQ,OAAQ,WAAYX,OAEhCA,KAAK+Q,SAASpB,QAAQf,eACzB+B,EAAe3Q,KAAKiiB,UAAW,YAAajiB,MAC5C2Q,EAAehQ,OAAQ,UAAWX,QAmbtC,IAAIwnB,GAAe,GAGfC,GAAwB,GAGxBC,GAAwB,IAGxBC,GAAwB,IAE5B,SAASC,GAAcpjB,GACrBA,EAAQC,UAAU8M,cAAgB,WAChCvR,KAAK2P,QAAQtB,UAAY,EACzBrO,KAAKyT,YAAckU,GACnB3nB,KAAK6nB,iBAAmB,IAAIC,GAAiB9nB,KAAMA,KAAK2P,QAAQH,WAIpE,SAASuY,GAAgBC,GACvB,GAAIA,GAAQA,EAAKpJ,UACf,OAAOoJ,EAAKpJ,UAAUC,SAAS,aAInC,SAASiJ,GAAiB/W,EAAUpB,GAClC,IAAIwC,EAAQnS,KAEZA,KAAK2P,QAAUA,EACfqJ,GAA+C,oBAAjChZ,KAAK2P,QAAQsY,gBAAgC,qEAE3DjP,GAAqC,oBAAvBhZ,KAAK2P,QAAQuY,MAAsB,0DAEjDlP,GAAsC,oBAAxBhZ,KAAK2P,QAAQ7P,OAAuB,6DAElDE,KAAKmoB,kBAAoB,EACzBnoB,KAAKooB,iBAAmB,EAExBpoB,KAAKqoB,gBAAkB,EACvBroB,KAAKsoB,WAAa,CAChBvmB,MAAO,EACP4G,OAAQ,GAEV3I,KAAKuoB,gBAAkB,EACvBvoB,KAAKwoB,eAAiB,EACtBxoB,KAAKyoB,WAAa,GAClBzoB,KAAK0oB,4BAA8B,GAEnC1oB,KAAK2V,MAAQ,GACb3V,KAAK2oB,YAAc,EACnB3oB,KAAK4oB,mBAAoB,EACzB5oB,KAAK6oB,SAAU,EAEf7oB,KAAK+Q,SAAWA,EAChB/Q,KAAK8oB,UAAY9oB,KAAK+Q,SAASD,QAC/B9Q,KAAK+oB,WAAa/oB,KAAK+Q,SAASA,SAEhC/Q,KAAK+Q,SAAS1O,GAAG,UAAU,WACzB8P,EAAM6W,cAERhpB,KAAK+Q,SAAS1O,GAAG,WAAW,WAC1B8P,EAAMkN,aAIRrf,KAAKipB,iBAAmBpW,YAAW,WACjCV,EAAM6W,WAGN7W,EAAMpB,SAAS1O,GAAG,UAAU,WAC1B8P,EAAM+W,iBA2VZ,SAAS1kB,GAAQ8D,EAAIqH,GACnB3P,KAAK8Q,QAAwB,kBAAPxI,EAAkBzH,SAAS8d,cAAcrW,GAAMA,EAChEtI,KAAK8Q,SACR8H,GAAK,oCAEP5Y,KAAK+Q,SAAW/Q,KAAK8Q,QAAQgB,SAAS,GACjC9R,KAAK+Q,UACR6H,GAAK,+DAGP5Y,KAAK8c,cAAgB9c,KAAK+Q,SAASzQ,MAEnCN,KAAK0P,MAAMC,GAlWbmY,GAAiBrjB,UAAU4a,QAAU,WACnC,IAAInL,EAASlU,KAGb4S,aAAa5S,KAAKipB,kBAClBjpB,KAAK0oB,4BAA4BS,SAAQ,SAAUC,GACjDxW,aAAawW,MAEfppB,KAAK0oB,4BAA8B,KACnC1oB,KAAK2V,MAAMwT,SAAQ,SAAUrnB,GACvBA,EAAKkmB,OACP9T,EAAO6U,WAAW/b,YAAYlL,EAAKkmB,MACnClmB,EAAKkmB,KAAO,SAGhBhoB,KAAK+Q,SAAS8W,iBAAmB,KACjC7nB,KAAK+Q,SAAW,KAChB/Q,KAAK8oB,UAAY,KACjB9oB,KAAK+oB,WAAa,KAClB/oB,KAAK2V,MAAQ,KACb3V,KAAKyoB,WAAa,MAGpBX,GAAiBrjB,UAAUykB,SAAW,WACpC,IAAIjO,GAAajb,KAAK+Q,SAAS1J,EAC3BgiB,EAAQpO,EAAYjb,KAAKqoB,gBAE3BroB,KAAKsoB,WADW,IAAdrN,EACgB,CAChBlZ,MAAO,EACP4G,OAAQ,GAGQ3I,KAAKspB,uBAAuBtpB,KAAKsoB,WAAYe,GAGjErpB,KAAKqoB,gBAAkBpN,EACvB,IAAIsO,EAAiBvpB,KAAKspB,uBAAuBtpB,KAAKsoB,WAAYtoB,KAAK+Q,SAASsE,eAE5EqB,EAAQ1W,KAAKsoB,WAAWvmB,MACxBynB,EAAMD,EAAexnB,MACrBsnB,EAAQ,GACV3S,GAAS8Q,GACTgC,GAAO/B,KAEP/Q,GAAS+Q,GACT+B,GAAOhC,IAETxnB,KAAKypB,KAAK/S,EAAO8S,GACjBxpB,KAAK0pB,uBAGP5B,GAAiBrjB,UAAUukB,SAAW,WACpC,IAAIW,EAAY3pB,KAAK2P,QAAQsY,kBAC7B0B,EAAUrpB,MAAM4U,SAAW,WAC3BlV,KAAK+oB,WAAWlc,YAAY8c,GAC5BA,EAAUrpB,MAAMinB,QAAU,GAC1BvnB,KAAKuoB,gBAAkBoB,EAAU3e,aACjChL,KAAKwoB,eAAiBmB,EAAU5e,YAChC/K,KAAK+oB,WAAW/b,YAAY2c,GAE5B,IAAK,IAAIzmB,EAAI,EAAGA,EAAIlD,KAAK2V,MAAM9S,OAAQK,IACrClD,KAAK2V,MAAMzS,GAAG4H,OAAS9K,KAAK2V,MAAMzS,GAAG2H,MAAQ,EAG/C7K,KAAKkpB,YAGPpB,GAAiBrjB,UAAUglB,KAAO,SAAU/S,EAAO8S,GACjDxpB,KAAKmoB,kBAAoB7gB,KAAKiQ,IAAI,EAAGb,GAChC1W,KAAK6oB,UACRW,EAAMliB,KAAKkQ,IAAIgS,EAAKxpB,KAAK2V,MAAM9S,SAEjC7C,KAAKooB,iBAAmBoB,EACxBxpB,KAAK4pB,iBAGP9B,GAAiBrjB,UAAUilB,oBAAsB,WAC/C,IAAIG,EAAS7pB,KAEb,IAAIA,KAAK4oB,mBAAsB5oB,KAAK6oB,QAApC,CAGA,IAAIiB,EAAc9pB,KAAKooB,iBAAmBpoB,KAAK2oB,YAC3CmB,GAAe,IAGnB9pB,KAAK4oB,mBAAoB,EACzB5oB,KAAK2P,QAAQuY,MAAM4B,GAAaC,MAAK,SAAUpU,GAE7C,GADAkU,EAAOjB,mBAAoB,EACvBjT,EACFkU,EAAOG,WAAWrU,OACb,CACLkU,EAAOhB,SAAU,EACjB,IAAIoB,EAAeJ,EAAOK,oBACtBC,EAAS,EACTN,EAAOvB,WAAWvmB,OAAS8nB,EAAOlU,MAAM9S,QAC1CsnB,EAASN,EAAOO,qBAChBP,EAAOQ,iBAAiB,GAAIF,GAC5BN,EAAO9Y,SAASoF,cAAc0T,EAAO9Y,SAASpB,QAAQhC,cAEtDkc,EAAOvB,WAAWvmB,OAASkoB,EAC3BE,EAASN,EAAOO,qBAChBP,EAAOQ,iBAAiB,GAAIF,GAC5BN,EAAO9Y,SAASgJ,OAChB8P,EAAO9Y,SAASoF,gBAChB0T,EAAOX,mBAMfpB,GAAiBrjB,UAAUulB,WAAa,SAAUrU,GAChD,IAAK,IAAIzS,EAAI,EAAGA,EAAIyS,EAAM9S,OAAQK,IAC5BlD,KAAK2V,MAAM9S,QAAU7C,KAAK2oB,aAC5B3oB,KAAKsqB,WAEPtqB,KAAK2V,MAAM3V,KAAK2oB,eAAejoB,KAAOiV,EAAMzS,GAE9ClD,KAAK4pB,gBACL5pB,KAAK0pB,uBAGP5B,GAAiBrjB,UAAUmlB,cAAgB,WACzC,IAAIW,EAAcvqB,KAAKwqB,sBACnBC,EAAsBzqB,KAAK0qB,gBAAgBH,GAC/CvqB,KAAK2qB,oBAAoBJ,GACzBvqB,KAAK4qB,iBACL,IAAIT,EAASnqB,KAAKoqB,qBAClBpqB,KAAKqqB,iBAAiBI,EAAqBN,IAG7CrC,GAAiBrjB,UAAUomB,UAAY,WACrC7qB,KAAK6oB,SAAU,GAGjBf,GAAiBrjB,UAAUylB,kBAAoB,WAI7C,IAHA,IAAIY,OAAY,EACZb,EAAe,EACfc,EAAU/qB,KAAK2V,MAAM9S,OAChBK,EAAI,EAAGA,EAAI6nB,EAAS7nB,IAAK,CAChC,IAAI8nB,EAAchrB,KAAK2V,MAAMzS,GAAG8kB,KAC5BiD,EAAcjrB,KAAK2V,MAAMzS,GAAGxC,KAC1BsqB,IAAejD,GAAgBiD,IAAkBC,SAEnC,IAAdH,IACFA,EAAY5nB,GAEV8nB,GACFhrB,KAAK+oB,WAAW/b,YAAYge,IAOlC,OAHAf,EAAec,EAAUD,EACzB9qB,KAAK2V,MAAMuV,OAAOJ,GAClB9qB,KAAKooB,iBAAmB9gB,KAAKkQ,IAAIxX,KAAKooB,iBAAkBpoB,KAAK2V,MAAM9S,QAC5DonB,GAGTnC,GAAiBrjB,UAAU+lB,oBAAsB,WAE/C,IADA,IAAID,EAAc,GACTrnB,EAAI,EAAGA,EAAIlD,KAAK2V,MAAM9S,OAAQK,IAErC,GAAIA,IAAMlD,KAAKmoB,kBAAf,CAIA,IAAI6C,EAAchrB,KAAK2V,MAAMzS,GAAG8kB,KAC5BgD,IACEjD,GAAgBiD,IAElBhrB,KAAKyoB,WAAW5kB,KAAKmnB,GACrBhrB,KAAKyoB,WAAWzoB,KAAKyoB,WAAW5lB,OAAS,GAAGvC,MAAMinB,QAAU,QAE5DgD,EAAY1mB,KAAKmnB,IAGrBhrB,KAAK2V,MAAMzS,GAAG8kB,KAAO,UAbnB9kB,EAAIlD,KAAKooB,iBAAmB,EAehC,OAAOmC,GAGTzC,GAAiBrjB,UAAUimB,gBAAkB,SAAUH,GAErD,IADA,IAAIE,EAAsB,GACjBvnB,EAAIlD,KAAKmoB,kBAAmBjlB,EAAIlD,KAAKooB,iBAAkBllB,IAAK,CACnE,MAAOlD,KAAK2V,MAAM9S,QAAUK,EAC1BlD,KAAKsqB,WAEP,IAAIU,EAAchrB,KAAK2V,MAAMzS,GAAG8kB,KAC5BiD,EAAcjrB,KAAK2V,MAAMzS,GAAGxC,KAChC,GAAIsqB,EAAa,CACf,IAAIjD,GAAgBiD,KAAgBC,EAKlC,SAJAD,EAAY1qB,MAAM6qB,OAAS,EAC3BV,EAAoBvnB,GAAK,CAAC8nB,EAAahrB,KAAK2V,MAAMzS,GAAG2F,IAAM7I,KAAKqoB,iBAChEroB,KAAK2V,MAAMzS,GAAG8kB,KAAO,KAKzB,IAAIA,EAAOiD,EAAcjrB,KAAK2P,QAAQ7P,OAAOmrB,EAAaV,EAAYznB,OAAS9C,KAAKorB,gBACpFpD,EAAK1nB,MAAM4U,SAAW,WACtBlV,KAAK2V,MAAMzS,GAAG2F,KAAO,EACrB7I,KAAK+oB,WAAWlc,YAAYmb,GAC5BhoB,KAAK2V,MAAMzS,GAAG8kB,KAAOA,EAEvB,OAAOyC,GAGT3C,GAAiBrjB,UAAUkmB,oBAAsB,SAAUJ,GACzD,MAAOA,EAAY1nB,OACjB7C,KAAK+oB,WAAW/b,YAAYud,EAAYznB,QAI5CglB,GAAiBrjB,UAAUmmB,eAAiB,WAC1C,IAAK,IAAI1nB,EAAIlD,KAAKmoB,kBAAmBjlB,EAAIlD,KAAKooB,iBAAkBllB,IAAK,CACnE,IAAIpB,EAAO9B,KAAK2V,MAAMzS,GAEtB,GAAIpB,EAAKpB,OAASoB,EAAKgJ,OAAQ,CAC7B,IAAIugB,EAActD,GAAgBjmB,EAAKkmB,MACvClmB,EAAKgJ,OAASugB,EAAcrrB,KAAKuoB,gBAAkBzmB,EAAKkmB,KAAKhd,aAC7DlJ,EAAK+I,MAAQwgB,EAAcrrB,KAAKwoB,eAAiB1mB,EAAKkmB,KAAKjd,eAKjE+c,GAAiBrjB,UAAU2lB,mBAAqB,WAC9CpqB,KAAKqoB,gBAAkB,EACvB,IAAK,IAAI7kB,EAAK,EAAGA,EAAKxD,KAAKsoB,WAAWvmB,MAAOyB,IAC3CxD,KAAKqoB,iBAAmBroB,KAAK2V,MAAMnS,GAAIsH,QAAU9K,KAAKuoB,gBAExDvoB,KAAKqoB,iBAAmBroB,KAAKsoB,WAAW3f,OAGxC,IAAIwhB,EAASnqB,KAAKqoB,gBAAkBroB,KAAKsoB,WAAW3f,OAChDzF,EAAIlD,KAAKsoB,WAAWvmB,MACxB,MAAOmB,EAAIlD,KAAKmoB,kBACdgC,GAAUnqB,KAAK2V,MAAMzS,EAAI,GAAG4H,QAAU9K,KAAKuoB,gBAC3CrlB,IAGF,OAAOinB,GAGTrC,GAAiBrjB,UAAU4lB,iBAAmB,SAAUI,EAAqBN,GAC3E,IAAImB,EAAStrB,KAEb,IAAK,IAAIkD,KAAKunB,EAAqB,CACjC,IAAIc,EAAYd,EAAoBvnB,GACpClD,KAAK2V,MAAMzS,GAAG8kB,KAAK1nB,MAAMA,EAAMiJ,WAAa,eAAiBvJ,KAAKqoB,gBAAkBkD,EAAU,IAAM,aAAevrB,KAAKwoB,eAAiBxoB,KAAK2V,MAAMzS,GAAG2H,MAAQ,KAAO7K,KAAKuoB,gBAAkBvoB,KAAK2V,MAAMzS,GAAG4H,OAAS,IAGpN9K,KAAK2V,MAAMzS,GAAG8kB,KAAKjf,UACnBwiB,EAAU,GAAGxiB,UACb/I,KAAK2V,MAAMzS,GAAG8kB,KAAK1nB,MAAMA,EAAMkJ,YAAcF,EAAY,aAAeoe,GAAwB,KAGlG,IAAK,IAAIxK,EAAMld,KAAKmoB,kBAAmBjL,EAAMld,KAAKooB,iBAAkBlL,IAAO,CACzE,IAAIsO,EAAaf,EAAoBvN,GACrC,GAAIsO,EAAY,CACd,IAAIC,EAAgBD,EAAW,GAC/BC,EAAcnrB,MAAMA,EAAMkJ,YAAcF,EAAY,aAAeoe,GAAwB,eAAiBA,GAAwB,KACpI+D,EAAcnrB,MAAMA,EAAMiJ,WAAa,cAAgB4gB,EAAS,aAAenqB,KAAK2V,MAAMuH,GAAKrS,MAAQ7K,KAAKwoB,eAAiB,KAAOxoB,KAAK2V,MAAMuH,GAAKpS,OAAS9K,KAAKuoB,gBAAkB,IACpLkD,EAAcnrB,MAAMqiB,QAAU,EAE5BwH,IAAWnqB,KAAK2V,MAAMuH,GAAKrU,MACxB2iB,IACHxrB,KAAK2V,MAAMuH,GAAK8K,KAAK1nB,MAAMA,EAAMkJ,YAAc,IAEjDxJ,KAAK2V,MAAMuH,GAAK8K,KAAK1nB,MAAMA,EAAMiJ,WAAa,cAAgB4gB,EAAS,OAEzEnqB,KAAK2V,MAAMuH,GAAKrU,IAAMshB,EACtBA,GAAUnqB,KAAK2V,MAAMuH,GAAKpS,QAAU9K,KAAKuoB,gBAG3CvoB,KAAK+Q,SAAS0C,aAAe0W,EAASnqB,KAAK+Q,SAASsE,eAAiBrV,KAAK6oB,QAAUlB,GAAwB,IAE5G,IAAI+D,EAA6B7Y,YAAW,WAC1C,IAAK,IAAI0K,KAAOkN,EAAqB,CACnC,IAAIkB,EAAclB,EAAoBlN,GACtCoO,EAAY,GAAGrrB,MAAMinB,QAAU,OAE/B+D,EAAO7C,WAAW5kB,KAAK8nB,EAAY,OAEpCjE,IAEH1nB,KAAK0oB,4BAA4B7kB,KAAK6nB,IAGxC5D,GAAiBrjB,UAAU2mB,cAAgB,WACzC,IAAIzB,EAAY3pB,KAAKyoB,WAAW3lB,MAChC,OAAI6mB,GACFA,EAAUrpB,MAAMinB,QAAU,GAC1BoC,EAAUrpB,MAAMqiB,QAAU,EAC1BgH,EAAUrpB,MAAMA,EAAMiJ,WAAa,GACnCogB,EAAUrpB,MAAMA,EAAMkJ,YAAc,GAC7BmgB,GAEF3pB,KAAK2P,QAAQsY,mBAGtBH,GAAiBrjB,UAAU6lB,SAAW,WACpCtqB,KAAK2V,MAAM9R,KAAK,CACdnD,KAAM,KACNsnB,KAAM,KACNld,OAAQ,EACRD,MAAO,EACPhC,IAAK,KAITif,GAAiBrjB,UAAU6kB,uBAAyB,SAAUsC,EAAevC,GAC3E,GAAc,IAAVA,EACF,OAAOuC,EAET,IAAI1oB,EAAI0oB,EAAc7pB,MAClB0mB,EAAa,EAGjB,GADAY,GAASuC,EAAcjjB,OACnB0gB,EAAQ,EAAG,CACb,MAAOA,EAAQ,GAAKnmB,EAAI,GAAKlD,KAAK2V,MAAMzS,EAAI,GAAG4H,OAC7Cue,GAASrpB,KAAK2V,MAAMzS,EAAI,GAAG4H,OAC3B5H,IAEFulB,EAAanhB,KAAKiQ,KAAKrU,EAAGoE,KAAKukB,KAAKvkB,KAAKkQ,IAAI6R,EAAO,GAAKrpB,KAAKuoB,sBACzD,CACL,MAAOc,EAAQ,GAAKnmB,EAAIlD,KAAK2V,MAAM9S,QAAU7C,KAAK2V,MAAMzS,GAAG4H,QAAU9K,KAAK2V,MAAMzS,GAAG4H,OAASue,EAC1FA,GAASrpB,KAAK2V,MAAMzS,GAAG4H,OACvB5H,KAEEA,GAAKlD,KAAK2V,MAAM9S,SAAW7C,KAAK2V,MAAMzS,GAAG4H,UAC3C2d,EAAanhB,KAAKwkB,MAAMxkB,KAAKiQ,IAAI8R,EAAO,GAAKrpB,KAAKuoB,kBAMtD,OAHArlB,GAAKulB,EACLY,GAASZ,EAAazoB,KAAKuoB,gBAEpB,CACLxmB,MAAOmB,EACPyF,OAAQ0gB,IAmBZ5Z,EAAUjL,IACV2U,GAAU3U,IACVD,EAAWC,IACX8a,GAAU9a,IACV2c,GAAW3c,IACXmd,GAAend,IACfwe,GAAcxe,IACdmf,GAAYnf,IACZ2f,GAAgB3f,IAChB4gB,GAAU5gB,IACVojB,GAAcpjB,IAEdA,GAAQunB,QAAU,SAEH,UC33Gf,IACErrB,KADF,WAEI,MAAO,IAITQ,MAAO,CAAC,cAAV,4BACEO,QAPF,WAQIzB,KAAKgsB,eAEP1qB,QAAS,CACP0qB,YADJ,WACA,WACMhsB,KAAKisB,WAAU,WACb,IAAR,WAAQ,CACA,IAAR,kBACQ,EAAR,mBACU5e,SAAS,EACTzB,OAAO,EACP6C,eAAV,IAEQ,EAAR,yDAGIlM,eAbJ,SAaA,KACMvC,KAAKksB,MAAM,iBAAkBpqB,GAC7B9B,KAAK+W,OAAO3L,EAAExE,SAGhBmQ,OAlBJ,SAkBA,GACM/W,KAAKmsB,SAAS5N,gBAAgBjW,EAApC,cCzCkW,M,yBCQ9V3G,GAAY,gBACd,GACA7B,EACAW,GACA,EACA,KACA,WACA,MAIa,OAAAkB,G,2CCnBf,yBAA2jB,EAAG,G,kCCA9jB,yBAAojB,EAAG","file":"js/chunk-5a590930.03c9b686.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"bg bg-center\",style:('background-image: url('+_vm.bgImg+')')},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n
\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BG.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BG.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BG.vue?vue&type=template&id=1947c54e&scoped=true&\"\nimport script from \"./BG.vue?vue&type=script&lang=js&\"\nexport * from \"./BG.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BG.vue?vue&type=style&index=0&id=1947c54e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1947c54e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"bscroll\",staticClass:\"bscroll\"},[_c('div',{staticClass:\"bscroll-container\"},_vm._l((_vm.list),function(item,index){return _c('div',{key:index,staticClass:\"link-item\",class:{active: item[_vm.cusValue] == _vm.activeIndex},on:{\"click\":function($event){return _vm.scrollNavClick(item,$event)}}},[_vm._v(_vm._s(item[_vm.cusKey]))])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * better-normal-scroll v1.15.2\n * (c) 2016-2019 ustbhuangyi\n * Released under the MIT License.\n */\n// As of V8 6.6, depending on the size of the array, this is anywhere\n// between 1.5-10x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++) {\n list[index] = list[index + 1];\n }\n\n list.pop();\n}\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\nfunction eventMixin(BScroll) {\n BScroll.prototype.on = function (type, fn) {\n var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this;\n\n if (!this._events[type]) {\n this._events[type] = [];\n }\n\n this._events[type].push([fn, context]);\n };\n\n BScroll.prototype.once = function (type, fn) {\n var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this;\n\n function magic() {\n this.off(type, magic);\n\n fn.apply(context, arguments);\n }\n // To expose the corresponding function method in order to execute the off method\n magic.fn = fn;\n\n this.on(type, magic);\n };\n\n BScroll.prototype.off = function (type, fn) {\n var _events = this._events[type];\n if (!_events) {\n return;\n }\n\n var count = _events.length;\n while (count--) {\n if (_events[count][0] === fn || _events[count][0] && _events[count][0].fn === fn) {\n spliceOne(_events, count);\n }\n }\n };\n\n BScroll.prototype.trigger = function (type) {\n var events = this._events[type];\n if (!events) {\n return;\n }\n\n var len = events.length;\n var eventsCopy = [].concat(toConsumableArray(events));\n for (var i = 0; i < len; i++) {\n var event = eventsCopy[i];\n\n var _event = slicedToArray(event, 2),\n fn = _event[0],\n context = _event[1];\n\n if (fn) {\n fn.apply(context, [].slice.call(arguments, 1));\n }\n }\n };\n}\n\n// ssr support\nvar inBrowser = typeof window !== 'undefined';\nvar ua = inBrowser && navigator.userAgent.toLowerCase();\nvar isWeChatDevTools = ua && /wechatdevtools/.test(ua);\nvar isAndroid = ua && ua.indexOf('android') > 0;\n\nfunction getNow() {\n return window.performance && window.performance.now ? window.performance.now() + window.performance.timing.navigationStart : +new Date();\n}\n\nfunction extend(target) {\n for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n for (var i = 0; i < rest.length; i++) {\n var source = rest[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target;\n}\n\nfunction isUndef(v) {\n return v === undefined || v === null;\n}\n\nfunction getDistance(x, y) {\n return Math.sqrt(x * x + y * y);\n}\n\nvar elementStyle = inBrowser && document.createElement('div').style;\n\nvar vendor = function () {\n if (!inBrowser) {\n return false;\n }\n // first pick up standard to fix #743\n var transformNames = {\n standard: 'transform',\n webkit: 'webkitTransform',\n Moz: 'MozTransform',\n O: 'OTransform',\n ms: 'msTransform'\n };\n\n for (var key in transformNames) {\n if (elementStyle[transformNames[key]] !== undefined) {\n return key;\n }\n }\n\n return false;\n}();\n\nfunction prefixStyle(style) {\n if (vendor === false) {\n return false;\n }\n\n if (vendor === 'standard') {\n if (style === 'transitionEnd') {\n return 'transitionend';\n }\n return style;\n }\n\n return vendor + style.charAt(0).toUpperCase() + style.substr(1);\n}\n\nfunction addEvent(el, type, fn, capture) {\n el.addEventListener(type, fn, { passive: false, capture: !!capture });\n}\n\nfunction removeEvent(el, type, fn, capture) {\n el.removeEventListener(type, fn, { passive: false, capture: !!capture });\n}\n\nfunction offset(el) {\n var left = 0;\n var top = 0;\n\n while (el) {\n left -= el.offsetLeft;\n top -= el.offsetTop;\n el = el.offsetParent;\n }\n\n return {\n left: left,\n top: top\n };\n}\n\nfunction offsetToBody(el) {\n var rect = el.getBoundingClientRect();\n\n return {\n left: -(rect.left + window.pageXOffset),\n top: -(rect.top + window.pageYOffset)\n };\n}\n\nvar cssVendor = vendor && vendor !== 'standard' ? '-' + vendor.toLowerCase() + '-' : '';\n\nvar transform = prefixStyle('transform');\nvar transition = prefixStyle('transition');\n\nvar hasPerspective = inBrowser && prefixStyle('perspective') in elementStyle;\n// fix issue #361\nvar hasTouch = inBrowser && ('ontouchstart' in window || isWeChatDevTools);\nvar hasTransform = transform !== false;\nvar hasTransition = inBrowser && transition in elementStyle;\n\nvar style = {\n transform: transform,\n transition: transition,\n transitionTimingFunction: prefixStyle('transitionTimingFunction'),\n transitionDuration: prefixStyle('transitionDuration'),\n transitionDelay: prefixStyle('transitionDelay'),\n transformOrigin: prefixStyle('transformOrigin'),\n transitionEnd: prefixStyle('transitionEnd')\n};\n\nvar TOUCH_EVENT = 1;\nvar MOUSE_EVENT = 2;\n\nvar eventType = {\n touchstart: TOUCH_EVENT,\n touchmove: TOUCH_EVENT,\n touchend: TOUCH_EVENT,\n\n mousedown: MOUSE_EVENT,\n mousemove: MOUSE_EVENT,\n mouseup: MOUSE_EVENT\n};\n\nfunction getRect(el) {\n if (el instanceof window.SVGElement) {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height\n };\n } else {\n return {\n top: el.offsetTop,\n left: el.offsetLeft,\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n }\n}\n\nfunction preventDefaultException(el, exceptions) {\n for (var i in exceptions) {\n if (exceptions[i].test(el[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction tap(e, eventName) {\n var ev = document.createEvent('Event');\n ev.initEvent(eventName, true, true);\n ev.pageX = e.pageX;\n ev.pageY = e.pageY;\n e.target.dispatchEvent(ev);\n}\n\nfunction click(e) {\n var event = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'click';\n\n var eventSource = void 0;\n if (e.type === 'mouseup' || e.type === 'mousecancel') {\n eventSource = e;\n } else if (e.type === 'touchend' || e.type === 'touchcancel') {\n eventSource = e.changedTouches[0];\n }\n var posSrc = {};\n if (eventSource) {\n posSrc.screenX = eventSource.screenX || 0;\n posSrc.screenY = eventSource.screenY || 0;\n posSrc.clientX = eventSource.clientX || 0;\n posSrc.clientY = eventSource.clientY || 0;\n }\n var ev = void 0;\n var bubbles = true;\n var cancelable = true;\n if (typeof MouseEvent !== 'undefined') {\n try {\n ev = new MouseEvent(event, extend({\n bubbles: bubbles,\n cancelable: cancelable\n }, posSrc));\n } catch (e) {\n createEvent();\n }\n } else {\n createEvent();\n }\n\n function createEvent() {\n ev = document.createEvent('Event');\n ev.initEvent(event, bubbles, cancelable);\n extend(ev, posSrc);\n }\n\n // forwardedTouchEvent set to true in case of the conflict with fastclick\n ev.forwardedTouchEvent = true;\n ev._constructed = true;\n e.target.dispatchEvent(ev);\n}\n\nfunction dblclick(e) {\n click(e, 'dblclick');\n}\n\nfunction prepend(el, target) {\n if (target.firstChild) {\n before(el, target.firstChild);\n } else {\n target.appendChild(el);\n }\n}\n\nfunction before(el, target) {\n target.parentNode.insertBefore(el, target);\n}\n\nfunction removeChild(el, child) {\n el.removeChild(child);\n}\n\nvar DEFAULT_OPTIONS = {\n startX: 0,\n startY: 0,\n scrollX: false,\n scrollY: true,\n freeScroll: false,\n directionLockThreshold: 5,\n eventPassthrough: '',\n click: false,\n tap: false,\n /**\n * support any side\n * bounce: {\n * top: true,\n * bottom: true,\n * left: true,\n * right: true\n * }\n */\n bounce: true,\n bounceTime: 800,\n momentum: true,\n momentumLimitTime: 300,\n momentumLimitDistance: 15,\n swipeTime: 2500,\n swipeBounceTime: 500,\n deceleration: 0.0015,\n flickLimitTime: 200,\n flickLimitDistance: 100,\n resizePolling: 60,\n probeType: 0,\n preventDefault: true,\n preventDefaultException: {\n tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT|AUDIO)$/\n },\n HWCompositing: true,\n useTransition: true,\n useTransform: true,\n bindToWrapper: false,\n disableMouse: hasTouch,\n disableTouch: !hasTouch,\n observeDOM: true,\n autoBlur: true,\n /**\n * for picker\n * wheel: {\n * selectedIndex: 0,\n * rotate: 25,\n * adjustTime: 400\n * wheelWrapperClass: 'wheel-scroll',\n * wheelItemClass: 'wheel-item'\n * }\n */\n wheel: false,\n /**\n * for slide\n * snap: {\n * loop: false,\n * el: domEl,\n * threshold: 0.1,\n * stepX: 100,\n * stepY: 100,\n * speed: 400,\n * easing: {\n * style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n * fn: function (t) {\n * return t * (2 - t)\n * }\n * }\n * listenFlick: true\n * }\n */\n snap: false,\n /**\n * for scrollbar\n * scrollbar: {\n * fade: true,\n * interactive: false\n * }\n */\n scrollbar: false,\n /**\n * for pull down and refresh\n * pullDownRefresh: {\n * threshold: 50,\n * stop: 20\n * }\n */\n pullDownRefresh: false,\n /**\n * for pull up and load\n * pullUpLoad: {\n * threshold: 50\n * }\n */\n pullUpLoad: false,\n /**\n * for mouse wheel\n * mouseWheel: {\n * speed: 20,\n * invert: false,\n * easeTime: 300\n * }\n */\n mouseWheel: false,\n stopPropagation: false,\n /**\n * for zoom\n * zoom: {\n * start: 1,\n * min: 1,\n * max: 4\n * }\n */\n zoom: false,\n /**\n * for infinity\n * infinity: {\n * render(item, div) {\n * },\n * createTombstone() {\n * },\n * fetch(count) {\n * }\n * }\n */\n infinity: false,\n /**\n * for double click\n * dblclick: {\n * delay: 300\n * }\n */\n dblclick: false\n};\n\nfunction initMixin(BScroll) {\n BScroll.prototype._init = function (options) {\n this._handleOptions(options);\n\n // init private custom events\n this._events = {};\n\n this.x = 0;\n this.y = 0;\n this.directionX = 0;\n this.directionY = 0;\n\n this.setScale(1);\n\n this._addDOMEvents();\n\n this._initExtFeatures();\n\n this._watchTransition();\n\n if (this.options.observeDOM) {\n this._initDOMObserver();\n }\n\n if (this.options.autoBlur) {\n this._handleAutoBlur();\n }\n\n this.refresh();\n\n if (!this.options.snap) {\n this.scrollTo(this.options.startX, this.options.startY);\n }\n\n this.enable();\n };\n\n BScroll.prototype.setScale = function (scale) {\n this.lastScale = isUndef(this.scale) ? scale : this.scale;\n this.scale = scale;\n };\n\n BScroll.prototype._handleOptions = function (options) {\n this.options = extend({}, DEFAULT_OPTIONS, options);\n\n this.translateZ = this.options.HWCompositing && hasPerspective ? ' translateZ(0)' : '';\n\n this.options.useTransition = this.options.useTransition && hasTransition;\n this.options.useTransform = this.options.useTransform && hasTransform;\n\n this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault;\n\n // If you want eventPassthrough I have to lock one of the axes\n this.options.scrollX = this.options.eventPassthrough === 'horizontal' ? false : this.options.scrollX;\n this.options.scrollY = this.options.eventPassthrough === 'vertical' ? false : this.options.scrollY;\n\n // With eventPassthrough we also need lockDirection mechanism\n this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough;\n this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold;\n\n if (this.options.tap === true) {\n this.options.tap = 'tap';\n }\n };\n\n BScroll.prototype._addDOMEvents = function () {\n var eventOperation = addEvent;\n this._handleDOMEvents(eventOperation);\n };\n\n BScroll.prototype._removeDOMEvents = function () {\n var eventOperation = removeEvent;\n this._handleDOMEvents(eventOperation);\n };\n\n BScroll.prototype._handleDOMEvents = function (eventOperation) {\n var target = this.options.bindToWrapper ? this.wrapper : window;\n eventOperation(window, 'orientationchange', this);\n eventOperation(window, 'resize', this);\n\n if (this.options.click) {\n eventOperation(this.wrapper, 'click', this, true);\n }\n\n if (!this.options.disableMouse) {\n eventOperation(this.wrapper, 'mousedown', this);\n eventOperation(target, 'mousemove', this);\n eventOperation(target, 'mousecancel', this);\n eventOperation(target, 'mouseup', this);\n }\n\n if (hasTouch && !this.options.disableTouch) {\n eventOperation(this.wrapper, 'touchstart', this);\n eventOperation(target, 'touchmove', this);\n eventOperation(target, 'touchcancel', this);\n eventOperation(target, 'touchend', this);\n }\n\n eventOperation(this.scroller, style.transitionEnd, this);\n };\n\n BScroll.prototype._initExtFeatures = function () {\n if (this.options.snap) {\n this._initSnap();\n }\n if (this.options.scrollbar) {\n this._initScrollbar();\n }\n if (this.options.pullUpLoad) {\n this._initPullUp();\n }\n if (this.options.pullDownRefresh) {\n this._initPullDown();\n }\n if (this.options.wheel) {\n this._initWheel();\n }\n if (this.options.mouseWheel) {\n this._initMouseWheel();\n }\n if (this.options.zoom) {\n this._initZoom();\n }\n if (this.options.infinity) {\n this._initInfinite();\n }\n };\n\n BScroll.prototype._watchTransition = function () {\n if (typeof Object.defineProperty !== 'function') {\n return;\n }\n var me = this;\n var isInTransition = false;\n var key = this.options.useTransition ? 'isInTransition' : 'isAnimating';\n Object.defineProperty(this, key, {\n get: function get() {\n return isInTransition;\n },\n set: function set(newVal) {\n isInTransition = newVal;\n // fix issue #359\n var el = me.scroller.children.length ? me.scroller.children : [me.scroller];\n var pointerEvents = isInTransition && !me.pulling ? 'none' : 'auto';\n for (var i = 0; i < el.length; i++) {\n el[i].style.pointerEvents = pointerEvents;\n }\n }\n });\n };\n\n BScroll.prototype._handleAutoBlur = function () {\n this.on('scrollStart', function () {\n var activeElement = document.activeElement;\n if (activeElement && (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA')) {\n activeElement.blur();\n }\n });\n };\n\n BScroll.prototype._initDOMObserver = function () {\n var _this = this;\n\n if (typeof MutationObserver !== 'undefined') {\n var timer = void 0;\n var observer = new MutationObserver(function (mutations) {\n // don't do any refresh during the transition, or outside of the boundaries\n if (_this._shouldNotRefresh()) {\n return;\n }\n var immediateRefresh = false;\n var deferredRefresh = false;\n for (var i = 0; i < mutations.length; i++) {\n var mutation = mutations[i];\n if (mutation.type !== 'attributes') {\n immediateRefresh = true;\n break;\n } else {\n if (mutation.target !== _this.scroller) {\n deferredRefresh = true;\n break;\n }\n }\n }\n if (immediateRefresh) {\n _this.refresh();\n } else if (deferredRefresh) {\n // attributes changes too often\n clearTimeout(timer);\n timer = setTimeout(function () {\n if (!_this._shouldNotRefresh()) {\n _this.refresh();\n }\n }, 60);\n }\n });\n var config = {\n attributes: true,\n childList: true,\n subtree: true\n };\n observer.observe(this.scroller, config);\n\n this.on('destroy', function () {\n observer.disconnect();\n });\n } else {\n this._checkDOMUpdate();\n }\n };\n\n BScroll.prototype._shouldNotRefresh = function () {\n var outsideBoundaries = this.x > this.minScrollX || this.x < this.maxScrollX || this.y > this.minScrollY || this.y < this.maxScrollY;\n\n return this.isInTransition || this.stopFromTransition || outsideBoundaries;\n };\n\n BScroll.prototype._checkDOMUpdate = function () {\n var scrollerRect = getRect(this.scroller);\n var oldWidth = scrollerRect.width;\n var oldHeight = scrollerRect.height;\n\n function check() {\n if (this.destroyed) {\n return;\n }\n scrollerRect = getRect(this.scroller);\n var newWidth = scrollerRect.width;\n var newHeight = scrollerRect.height;\n\n if (oldWidth !== newWidth || oldHeight !== newHeight) {\n this.refresh();\n }\n oldWidth = newWidth;\n oldHeight = newHeight;\n\n next.call(this);\n }\n\n function next() {\n var _this2 = this;\n\n setTimeout(function () {\n check.call(_this2);\n }, 1000);\n }\n\n next.call(this);\n };\n\n BScroll.prototype.handleEvent = function (e) {\n switch (e.type) {\n case 'touchstart':\n case 'mousedown':\n this._start(e);\n if (this.options.zoom && e.touches && e.touches.length > 1) {\n this._zoomStart(e);\n }\n break;\n case 'touchmove':\n case 'mousemove':\n if (this.options.zoom && e.touches && e.touches.length > 1) {\n this._zoom(e);\n } else {\n this._move(e);\n }\n break;\n case 'touchend':\n case 'mouseup':\n case 'touchcancel':\n case 'mousecancel':\n if (this.scaled) {\n this._zoomEnd(e);\n } else {\n this._end(e);\n }\n break;\n case 'orientationchange':\n case 'resize':\n this._resize();\n break;\n case 'transitionend':\n case 'webkitTransitionEnd':\n case 'oTransitionEnd':\n case 'MSTransitionEnd':\n this._transitionEnd(e);\n break;\n case 'click':\n if (this.enabled && !e._constructed) {\n if (!preventDefaultException(e.target, this.options.preventDefaultException)) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n break;\n case 'wheel':\n case 'DOMMouseScroll':\n case 'mousewheel':\n this._onMouseWheel(e);\n break;\n }\n };\n\n BScroll.prototype.refresh = function () {\n var isWrapperStatic = window.getComputedStyle(this.wrapper, null).position === 'static';\n var wrapperRect = getRect(this.wrapper);\n this.wrapperWidth = wrapperRect.width;\n this.wrapperHeight = wrapperRect.height;\n\n var scrollerRect = getRect(this.scroller);\n this.scrollerWidth = Math.round(scrollerRect.width * this.scale);\n this.scrollerHeight = Math.round(scrollerRect.height * this.scale);\n\n this.relativeX = scrollerRect.left;\n this.relativeY = scrollerRect.top;\n\n if (isWrapperStatic) {\n this.relativeX -= wrapperRect.left;\n this.relativeY -= wrapperRect.top;\n }\n\n this.minScrollX = 0;\n this.minScrollY = 0;\n\n var wheel = this.options.wheel;\n if (wheel) {\n this.items = this.scroller.children;\n // check whether there are all disable items or not when refresh\n this._checkWheelAllDisabled();\n this.options.itemHeight = this.itemHeight = this.items.length ? this.scrollerHeight / this.items.length : 0;\n if (this.selectedIndex === undefined) {\n this.selectedIndex = wheel.selectedIndex || 0;\n }\n this.options.startY = -this.selectedIndex * this.itemHeight;\n\n this.maxScrollX = 0;\n this.maxScrollY = -this.itemHeight * (this.items.length - 1);\n } else {\n this.maxScrollX = this.wrapperWidth - this.scrollerWidth;\n if (!this.options.infinity) {\n this.maxScrollY = this.wrapperHeight - this.scrollerHeight;\n }\n if (this.maxScrollX < 0) {\n this.maxScrollX -= this.relativeX;\n this.minScrollX = -this.relativeX;\n } else if (this.scale > 1) {\n this.maxScrollX = this.maxScrollX / 2 - this.relativeX;\n this.minScrollX = this.maxScrollX;\n }\n if (this.maxScrollY < 0) {\n this.maxScrollY -= this.relativeY;\n this.minScrollY = -this.relativeY;\n } else if (this.scale > 1) {\n this.maxScrollY = this.maxScrollY / 2 - this.relativeY;\n this.minScrollY = this.maxScrollY;\n }\n }\n\n this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < this.minScrollX;\n this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < this.minScrollY;\n\n if (!this.hasHorizontalScroll) {\n this.maxScrollX = this.minScrollX;\n this.scrollerWidth = this.wrapperWidth;\n }\n\n if (!this.hasVerticalScroll) {\n this.maxScrollY = this.minScrollY;\n this.scrollerHeight = this.wrapperHeight;\n }\n\n this.endTime = 0;\n this.directionX = 0;\n this.directionY = 0;\n this.wrapperOffset = offset(this.wrapper);\n\n this.trigger('refresh');\n\n !this.scaled && this.resetPosition();\n };\n\n BScroll.prototype.enable = function () {\n this.enabled = true;\n };\n\n BScroll.prototype.disable = function () {\n this.enabled = false;\n };\n}\n\nvar ease = {\n // easeOutQuint\n swipe: {\n style: 'cubic-bezier(0.23, 1, 0.32, 1)',\n fn: function fn(t) {\n return 1 + --t * t * t * t * t;\n }\n },\n // easeOutQuard\n swipeBounce: {\n style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n fn: function fn(t) {\n return t * (2 - t);\n }\n },\n // easeOutQuart\n bounce: {\n style: 'cubic-bezier(0.165, 0.84, 0.44, 1)',\n fn: function fn(t) {\n return 1 - --t * t * t * t;\n }\n }\n};\n\nfunction momentum(current, start, time, lowerMargin, upperMargin, wrapperSize, options, scroll) {\n var distance = current - start;\n var speed = Math.abs(distance) / time;\n\n var deceleration = options.deceleration,\n itemHeight = options.itemHeight,\n swipeBounceTime = options.swipeBounceTime,\n wheel = options.wheel,\n swipeTime = options.swipeTime;\n\n var duration = swipeTime;\n var rate = wheel ? 4 : 15;\n\n var destination = current + speed / deceleration * (distance < 0 ? -1 : 1);\n\n if (wheel && itemHeight) {\n destination = scroll._findNearestValidWheel(destination).y;\n }\n\n if (destination < lowerMargin) {\n destination = wrapperSize ? Math.max(lowerMargin - wrapperSize / 4, lowerMargin - wrapperSize / rate * speed) : lowerMargin;\n duration = swipeBounceTime;\n } else if (destination > upperMargin) {\n destination = wrapperSize ? Math.min(upperMargin + wrapperSize / 4, upperMargin + wrapperSize / rate * speed) : upperMargin;\n duration = swipeBounceTime;\n }\n\n return {\n destination: Math.round(destination),\n duration: duration\n };\n}\n\nvar DEFAULT_INTERVAL = 100 / 60;\n\nfunction noop() {}\n\nvar requestAnimationFrame = function () {\n if (!inBrowser) {\n /* istanbul ignore if */\n return noop;\n }\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame ||\n // if all else fails, use setTimeout\n function (callback) {\n return window.setTimeout(callback, (callback.interval || DEFAULT_INTERVAL) / 2); // make interval as precise as possible.\n };\n}();\n\nvar cancelAnimationFrame = function () {\n if (!inBrowser) {\n /* istanbul ignore if */\n return noop;\n }\n return window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || function (id) {\n window.clearTimeout(id);\n };\n}();\n\nvar DIRECTION_UP = 1;\nvar DIRECTION_DOWN = -1;\nvar DIRECTION_LEFT = 1;\nvar DIRECTION_RIGHT = -1;\n\nvar PROBE_DEBOUNCE = 1;\n\nvar PROBE_REALTIME = 3;\n\nfunction warn(msg) {\n console.error('[BScroll warn]: ' + msg);\n}\n\nfunction assert(condition, msg) {\n if (!condition) {\n throw new Error('[BScroll] ' + msg);\n }\n}\n\nfunction coreMixin(BScroll) {\n BScroll.prototype._start = function (e) {\n var _eventType = eventType[e.type];\n if (_eventType !== TOUCH_EVENT) {\n if (e.button !== 0) {\n return;\n }\n }\n if (!this.enabled || this.destroyed || this.initiated && this.initiated !== _eventType) {\n return;\n }\n this.initiated = _eventType;\n\n if (this.options.preventDefault && !preventDefaultException(e.target, this.options.preventDefaultException)) {\n e.preventDefault();\n }\n if (this.options.stopPropagation) {\n e.stopPropagation();\n }\n\n this.moved = false;\n this.distX = 0;\n this.distY = 0;\n this.directionX = 0;\n this.directionY = 0;\n this.movingDirectionX = 0;\n this.movingDirectionY = 0;\n this.directionLocked = 0;\n\n this._transitionTime();\n this.startTime = getNow();\n\n if (this.options.wheel) {\n this.target = e.target;\n }\n\n this.stop();\n\n var point = e.touches ? e.touches[0] : e;\n\n this.startX = this.x;\n this.startY = this.y;\n this.absStartX = this.x;\n this.absStartY = this.y;\n this.pointX = point.pageX;\n this.pointY = point.pageY;\n\n this.trigger('beforeScrollStart');\n };\n\n BScroll.prototype._move = function (e) {\n if (!this.enabled || this.destroyed || eventType[e.type] !== this.initiated) {\n return;\n }\n\n if (this.options.preventDefault) {\n e.preventDefault();\n }\n if (this.options.stopPropagation) {\n e.stopPropagation();\n }\n\n var point = e.touches ? e.touches[0] : e;\n var deltaX = point.pageX - this.pointX;\n var deltaY = point.pageY - this.pointY;\n\n this.pointX = point.pageX;\n this.pointY = point.pageY;\n\n this.distX += deltaX;\n this.distY += deltaY;\n\n var absDistX = Math.abs(this.distX);\n var absDistY = Math.abs(this.distY);\n\n var timestamp = getNow();\n\n // We need to move at least momentumLimitDistance pixels for the scrolling to initiate\n if (timestamp - this.endTime > this.options.momentumLimitTime && !this.moved && absDistY < this.options.momentumLimitDistance && absDistX < this.options.momentumLimitDistance) {\n return;\n }\n\n // If you are scrolling in one direction lock the other\n if (!this.directionLocked && !this.options.freeScroll) {\n if (absDistX > absDistY + this.options.directionLockThreshold) {\n this.directionLocked = 'h'; // lock horizontally\n } else if (absDistY >= absDistX + this.options.directionLockThreshold) {\n this.directionLocked = 'v'; // lock vertically\n } else {\n this.directionLocked = 'n'; // no lock\n }\n }\n\n if (this.directionLocked === 'h') {\n if (this.options.eventPassthrough === 'vertical') {\n e.preventDefault();\n } else if (this.options.eventPassthrough === 'horizontal') {\n this.initiated = false;\n return;\n }\n deltaY = 0;\n } else if (this.directionLocked === 'v') {\n if (this.options.eventPassthrough === 'horizontal') {\n e.preventDefault();\n } else if (this.options.eventPassthrough === 'vertical') {\n this.initiated = false;\n return;\n }\n deltaX = 0;\n }\n\n deltaX = this.hasHorizontalScroll ? deltaX : 0;\n deltaY = this.hasVerticalScroll ? deltaY : 0;\n this.movingDirectionX = deltaX > 0 ? DIRECTION_RIGHT : deltaX < 0 ? DIRECTION_LEFT : 0;\n this.movingDirectionY = deltaY > 0 ? DIRECTION_DOWN : deltaY < 0 ? DIRECTION_UP : 0;\n\n var newX = this.x + deltaX;\n var newY = this.y + deltaY;\n\n var top = false;\n var bottom = false;\n var left = false;\n var right = false;\n // Slow down or stop if outside of the boundaries\n var bounce = this.options.bounce;\n if (bounce !== false) {\n top = bounce.top === undefined ? true : bounce.top;\n bottom = bounce.bottom === undefined ? true : bounce.bottom;\n left = bounce.left === undefined ? true : bounce.left;\n right = bounce.right === undefined ? true : bounce.right;\n }\n if (newX > this.minScrollX || newX < this.maxScrollX) {\n if (newX > this.minScrollX && left || newX < this.maxScrollX && right) {\n newX = this.x + deltaX / 3;\n } else {\n newX = newX > this.minScrollX ? this.minScrollX : this.maxScrollX;\n }\n }\n if (newY > this.minScrollY || newY < this.maxScrollY) {\n if (newY > this.minScrollY && top || newY < this.maxScrollY && bottom) {\n newY = this.y + deltaY / 3;\n } else {\n newY = newY > this.minScrollY ? this.minScrollY : this.maxScrollY;\n }\n }\n\n if (!this.moved) {\n this.moved = true;\n this.trigger('scrollStart');\n }\n\n this._translate(newX, newY);\n\n if (timestamp - this.startTime > this.options.momentumLimitTime) {\n this.startTime = timestamp;\n this.startX = this.x;\n this.startY = this.y;\n\n if (this.options.probeType === PROBE_DEBOUNCE) {\n this.trigger('scroll', {\n x: this.x,\n y: this.y\n });\n }\n }\n\n if (this.options.probeType > PROBE_DEBOUNCE) {\n this.trigger('scroll', {\n x: this.x,\n y: this.y\n });\n }\n\n var scrollLeft = document.documentElement.scrollLeft || window.pageXOffset || document.body.scrollLeft;\n var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;\n\n var pX = this.pointX - scrollLeft;\n var pY = this.pointY - scrollTop;\n\n if (pX > document.documentElement.clientWidth - this.options.momentumLimitDistance || pX < this.options.momentumLimitDistance || pY < this.options.momentumLimitDistance || pY > document.documentElement.clientHeight - this.options.momentumLimitDistance) {\n this._end(e);\n }\n };\n\n BScroll.prototype._end = function (e) {\n if (!this.enabled || this.destroyed || eventType[e.type] !== this.initiated) {\n return;\n }\n this.initiated = false;\n\n if (this.options.preventDefault && !preventDefaultException(e.target, this.options.preventDefaultException)) {\n e.preventDefault();\n }\n if (this.options.stopPropagation) {\n e.stopPropagation();\n }\n\n this.trigger('touchEnd', {\n x: this.x,\n y: this.y\n });\n\n this.isInTransition = false;\n\n // ensures that the last position is rounded\n var newX = Math.round(this.x);\n var newY = Math.round(this.y);\n\n var deltaX = newX - this.absStartX;\n var deltaY = newY - this.absStartY;\n this.directionX = deltaX > 0 ? DIRECTION_RIGHT : deltaX < 0 ? DIRECTION_LEFT : 0;\n this.directionY = deltaY > 0 ? DIRECTION_DOWN : deltaY < 0 ? DIRECTION_UP : 0;\n\n // if configure pull down refresh, check it first\n if (this.options.pullDownRefresh && this._checkPullDown()) {\n return;\n }\n\n // check if it is a click operation\n if (this._checkClick(e)) {\n this.trigger('scrollCancel');\n return;\n }\n\n // reset if we are outside of the boundaries\n if (this.resetPosition(this.options.bounceTime, ease.bounce)) {\n return;\n }\n\n this._translate(newX, newY);\n\n this.endTime = getNow();\n var duration = this.endTime - this.startTime;\n var absDistX = Math.abs(newX - this.startX);\n var absDistY = Math.abs(newY - this.startY);\n\n // flick\n if (this._events.flick && duration < this.options.flickLimitTime && absDistX < this.options.flickLimitDistance && absDistY < this.options.flickLimitDistance) {\n this.trigger('flick');\n return;\n }\n\n var time = 0;\n // start momentum animation if needed\n if (this.options.momentum && duration < this.options.momentumLimitTime && (absDistY > this.options.momentumLimitDistance || absDistX > this.options.momentumLimitDistance)) {\n var top = false;\n var bottom = false;\n var left = false;\n var right = false;\n var bounce = this.options.bounce;\n if (bounce !== false) {\n top = bounce.top === undefined ? true : bounce.top;\n bottom = bounce.bottom === undefined ? true : bounce.bottom;\n left = bounce.left === undefined ? true : bounce.left;\n right = bounce.right === undefined ? true : bounce.right;\n }\n var wrapperWidth = this.directionX === DIRECTION_RIGHT && left || this.directionX === DIRECTION_LEFT && right ? this.wrapperWidth : 0;\n var wrapperHeight = this.directionY === DIRECTION_DOWN && top || this.directionY === DIRECTION_UP && bottom ? this.wrapperHeight : 0;\n var momentumX = this.hasHorizontalScroll ? momentum(this.x, this.startX, duration, this.maxScrollX, this.minScrollX, wrapperWidth, this.options, this) : { destination: newX, duration: 0 };\n var momentumY = this.hasVerticalScroll ? momentum(this.y, this.startY, duration, this.maxScrollY, this.minScrollY, wrapperHeight, this.options, this) : { destination: newY, duration: 0 };\n newX = momentumX.destination;\n newY = momentumY.destination;\n time = Math.max(momentumX.duration, momentumY.duration);\n this.isInTransition = true;\n } else {\n if (this.options.wheel) {\n newY = this._findNearestValidWheel(newY).y;\n time = this.options.wheel.adjustTime || 400;\n }\n }\n\n var easing = ease.swipe;\n if (this.options.snap) {\n var snap = this._nearestSnap(newX, newY);\n this.currentPage = snap;\n time = this.options.snapSpeed || Math.max(Math.max(Math.min(Math.abs(newX - snap.x), 1000), Math.min(Math.abs(newY - snap.y), 1000)), 300);\n newX = snap.x;\n newY = snap.y;\n\n this.directionX = 0;\n this.directionY = 0;\n easing = this.options.snap.easing || ease.bounce;\n }\n\n if (newX !== this.x || newY !== this.y) {\n // change easing function when scroller goes out of the boundaries\n if (newX > this.minScrollX || newX < this.maxScrollX || newY > this.minScrollY || newY < this.maxScrollY) {\n easing = ease.swipeBounce;\n }\n this.scrollTo(newX, newY, time, easing);\n return;\n }\n\n if (this.options.wheel) {\n this.selectedIndex = this._findNearestValidWheel(this.y).index;\n }\n\n this.trigger('scrollEnd', {\n x: this.x,\n y: this.y\n });\n };\n\n BScroll.prototype._checkClick = function (e) {\n // when in the process of pulling down, it should not prevent click\n var preventClick = this.stopFromTransition && !this.pulling;\n this.stopFromTransition = false;\n\n // we scrolled less than 15 pixels\n if (!this.moved) {\n if (this.options.wheel) {\n if (this.target && this.target.className === this.options.wheel.wheelWrapperClass) {\n var index = this._findNearestValidWheel(this.y).index;\n var _offset = Math.round((this.pointY + offsetToBody(this.wrapper).top - this.wrapperHeight / 2) / this.itemHeight);\n this.target = this.items[index + _offset];\n }\n var top = offset(this.target).top;\n var left = offset(this.target).left;\n top -= this.wrapperOffset.top;\n top -= Math.round(this.target.offsetHeight / 2 - this.wrapper.offsetHeight / 2) || 0;\n left -= this.wrapperOffset.left;\n left -= Math.round(this.target.offsetWidth / 2 - this.wrapper.offsetWidth / 2) || 0;\n\n top = this._findNearestValidWheel(top).y;\n this.scrollTo(left, top, this.options.wheel.adjustTime || 400, ease.swipe);\n return true;\n } else {\n if (!preventClick) {\n var _dblclick = this.options.dblclick;\n var dblclickTrigged = false;\n if (_dblclick && this.lastClickTime) {\n var _dblclick$delay = _dblclick.delay,\n delay = _dblclick$delay === undefined ? 300 : _dblclick$delay;\n\n if (getNow() - this.lastClickTime < delay) {\n dblclickTrigged = true;\n dblclick(e);\n }\n }\n if (this.options.tap) {\n tap(e, this.options.tap);\n }\n\n if (this.options.click && !preventDefaultException(e.target, this.options.preventDefaultException)) {\n click(e);\n }\n this.lastClickTime = dblclickTrigged ? null : getNow();\n return true;\n }\n return false;\n }\n }\n return false;\n };\n\n BScroll.prototype._resize = function () {\n var _this = this;\n\n if (!this.enabled) {\n return;\n }\n // fix a scroll problem under Android condition\n if (isAndroid) {\n this.wrapper.scrollTop = 0;\n }\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(function () {\n _this.refresh();\n }, this.options.resizePolling);\n };\n\n BScroll.prototype._startProbe = function () {\n cancelAnimationFrame(this.probeTimer);\n this.probeTimer = requestAnimationFrame(probe);\n\n var me = this;\n\n function probe() {\n var pos = me.getComputedPosition();\n me.trigger('scroll', pos);\n if (!me.isInTransition) {\n me.trigger('scrollEnd', pos);\n return;\n }\n me.probeTimer = requestAnimationFrame(probe);\n }\n };\n\n BScroll.prototype._transitionTime = function () {\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n this.scrollerStyle[style.transitionDuration] = time + 'ms';\n\n if (this.options.wheel) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].style[style.transitionDuration] = time + 'ms';\n }\n }\n\n if (this.indicators) {\n for (var _i = 0; _i < this.indicators.length; _i++) {\n this.indicators[_i].transitionTime(time);\n }\n }\n };\n\n BScroll.prototype._transitionTimingFunction = function (easing) {\n this.scrollerStyle[style.transitionTimingFunction] = easing;\n\n if (this.options.wheel) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].style[style.transitionTimingFunction] = easing;\n }\n }\n\n if (this.indicators) {\n for (var _i2 = 0; _i2 < this.indicators.length; _i2++) {\n this.indicators[_i2].transitionTimingFunction(easing);\n }\n }\n };\n\n BScroll.prototype._transitionEnd = function (e) {\n if (e.target !== this.scroller || !this.isInTransition) {\n return;\n }\n\n this._transitionTime();\n var needReset = !this.pulling || this.movingDirectionY === DIRECTION_UP;\n if (needReset && !this.resetPosition(this.options.bounceTime, ease.bounce)) {\n this.isInTransition = false;\n if (this.options.probeType !== PROBE_REALTIME) {\n this.trigger('scrollEnd', {\n x: this.x,\n y: this.y\n });\n }\n }\n };\n\n BScroll.prototype._translate = function (x, y, scale) {\n assert(!isUndef(x) && !isUndef(y), 'Translate x or y is null or undefined.');\n if (isUndef(scale)) {\n scale = this.scale;\n }\n if (this.options.useTransform) {\n this.scrollerStyle[style.transform] = 'translate(' + x + 'px,' + y + 'px) scale(' + scale + ')' + this.translateZ;\n } else {\n x = Math.round(x);\n y = Math.round(y);\n this.scrollerStyle.left = x + 'px';\n this.scrollerStyle.top = y + 'px';\n }\n\n if (this.options.wheel) {\n var _options$wheel$rotate = this.options.wheel.rotate,\n rotate = _options$wheel$rotate === undefined ? 25 : _options$wheel$rotate;\n\n for (var i = 0; i < this.items.length; i++) {\n var deg = rotate * (y / this.itemHeight + i);\n this.items[i].style[style.transform] = 'rotateX(' + deg + 'deg)';\n }\n }\n\n this.x = x;\n this.y = y;\n this.setScale(scale);\n\n if (this.indicators) {\n for (var _i3 = 0; _i3 < this.indicators.length; _i3++) {\n this.indicators[_i3].updatePosition();\n }\n }\n };\n\n BScroll.prototype._animate = function (destX, destY, duration, easingFn) {\n var me = this;\n var startX = this.x;\n var startY = this.y;\n var startScale = this.lastScale;\n var destScale = this.scale;\n var startTime = getNow();\n var destTime = startTime + duration;\n\n function step() {\n var now = getNow();\n\n if (now >= destTime) {\n me.isAnimating = false;\n me._translate(destX, destY, destScale);\n\n me.trigger('scroll', {\n x: me.x,\n y: me.y\n });\n\n if (!me.pulling && !me.resetPosition(me.options.bounceTime)) {\n me.trigger('scrollEnd', {\n x: me.x,\n y: me.y\n });\n }\n return;\n }\n now = (now - startTime) / duration;\n var easing = easingFn(now);\n var newX = (destX - startX) * easing + startX;\n var newY = (destY - startY) * easing + startY;\n var newScale = (destScale - startScale) * easing + startScale;\n\n me._translate(newX, newY, newScale);\n\n if (me.isAnimating) {\n me.animateTimer = requestAnimationFrame(step);\n }\n\n if (me.options.probeType === PROBE_REALTIME) {\n me.trigger('scroll', {\n x: me.x,\n y: me.y\n });\n }\n }\n\n this.isAnimating = true;\n cancelAnimationFrame(this.animateTimer);\n step();\n };\n\n BScroll.prototype.scrollBy = function (x, y) {\n var time = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var easing = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ease.bounce;\n\n x = this.x + x;\n y = this.y + y;\n\n this.scrollTo(x, y, time, easing);\n };\n\n BScroll.prototype.scrollTo = function (x, y) {\n var time = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var easing = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ease.bounce;\n var isSilent = arguments[4];\n\n if (this.options.wheel) {\n y = this._findNearestValidWheel(y).y;\n }\n if (x === this.x && y === this.y) {\n return;\n }\n this.isInTransition = this.options.useTransition && time > 0 && (this.x !== x || this.y !== y);\n\n if (!time || this.options.useTransition) {\n this._transitionTimingFunction(easing.style);\n this._transitionTime(time);\n this._translate(x, y);\n\n if (time && this.options.probeType === PROBE_REALTIME) {\n this._startProbe();\n }\n if (!time && !isSilent) {\n // don't trigger resetPosition when zoom feature is open, fix #748\n if (this.options.zoom) return;\n this.trigger('scroll', {\n x: x,\n y: y\n });\n // force reflow to put everything in position\n this._reflow = document.body.offsetHeight;\n if (!this.resetPosition(this.options.bounceTime, ease.bounce)) {\n this.trigger('scrollEnd', {\n x: x,\n y: y\n });\n }\n }\n\n if (this.options.wheel) {\n this.selectedIndex = this._findNearestValidWheel(y).index;\n }\n } else {\n this._animate(x, y, time, easing.fn);\n }\n };\n\n BScroll.prototype.scrollToElement = function (el, time, offsetX, offsetY, easing) {\n if (!el) {\n return;\n }\n el = el.nodeType ? el : this.scroller.querySelector(el);\n\n if (this.options.wheel && !el.classList.contains(this.options.wheel.wheelItemClass)) {\n return;\n }\n\n var pos = offset(el);\n pos.left -= this.wrapperOffset.left;\n pos.top -= this.wrapperOffset.top;\n\n // if offsetX/Y are true we center the element to the screen\n if (offsetX === true) {\n offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2);\n }\n if (offsetY === true) {\n offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2);\n }\n\n pos.left -= offsetX || 0;\n pos.top -= offsetY || 0;\n pos.left = pos.left > this.minScrollX ? this.minScrollX : pos.left < this.maxScrollX ? this.maxScrollX : pos.left;\n pos.top = pos.top > this.minScrollY ? this.minScrollY : pos.top < this.maxScrollY ? this.maxScrollY : pos.top;\n\n if (this.options.wheel) {\n pos.top = this._findNearestValidWheel(pos.top).y;\n }\n\n this.scrollTo(pos.left, pos.top, time, easing);\n };\n\n BScroll.prototype.resetPosition = function () {\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var easeing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ease.bounce;\n\n var x = this.x;\n var roundX = Math.round(x);\n if (!this.hasHorizontalScroll || roundX > this.minScrollX) {\n x = this.minScrollX;\n } else if (roundX < this.maxScrollX) {\n x = this.maxScrollX;\n }\n\n var y = this.y;\n var roundY = Math.round(y);\n if (!this.hasVerticalScroll || roundY > this.minScrollY) {\n y = this.minScrollY;\n } else if (roundY < this.maxScrollY) {\n y = this.maxScrollY;\n }\n\n if (x === this.x && y === this.y) {\n return false;\n }\n\n this.scrollTo(x, y, time, easeing);\n\n return true;\n };\n\n BScroll.prototype.getComputedPosition = function () {\n var matrix = window.getComputedStyle(this.scroller, null);\n var x = void 0;\n var y = void 0;\n\n if (this.options.useTransform) {\n matrix = matrix[style.transform].split(')')[0].split(', ');\n x = +(matrix[12] || matrix[4]);\n y = +(matrix[13] || matrix[5]);\n } else {\n x = +matrix.left.replace(/[^-\\d.]/g, '');\n y = +matrix.top.replace(/[^-\\d.]/g, '');\n }\n\n return {\n x: x,\n y: y\n };\n };\n\n BScroll.prototype.stop = function () {\n if (this.options.useTransition && this.isInTransition) {\n this.isInTransition = false;\n cancelAnimationFrame(this.probeTimer);\n var pos = this.getComputedPosition();\n this._translate(pos.x, pos.y);\n if (this.options.wheel) {\n this.target = this.items[this._findNearestValidWheel(pos.y).index];\n } else {\n this.trigger('scrollEnd', {\n x: this.x,\n y: this.y\n });\n }\n this.stopFromTransition = true;\n } else if (!this.options.useTransition && this.isAnimating) {\n this.isAnimating = false;\n cancelAnimationFrame(this.animateTimer);\n this.trigger('scrollEnd', {\n x: this.x,\n y: this.y\n });\n this.stopFromTransition = true;\n }\n };\n\n BScroll.prototype.destroy = function () {\n this.destroyed = true;\n this.trigger('destroy');\n if (this.options.useTransition) {\n cancelAnimationFrame(this.probeTimer);\n } else {\n cancelAnimationFrame(this.animateTimer);\n }\n this._removeDOMEvents();\n // remove custom events\n this._events = {};\n };\n}\n\nfunction snapMixin(BScroll) {\n BScroll.prototype._initSnap = function () {\n var _this = this;\n\n this.currentPage = {};\n var snap = this.options.snap;\n\n if (snap.loop) {\n var children = this.scroller.children;\n if (children.length > 1) {\n prepend(children[children.length - 1].cloneNode(true), this.scroller);\n this.scroller.appendChild(children[1].cloneNode(true));\n } else {\n // Loop does not make any sense if there is only one child.\n snap.loop = false;\n }\n }\n\n var el = snap.el;\n if (typeof el === 'string') {\n el = this.scroller.querySelectorAll(el);\n }\n\n this.on('refresh', function () {\n _this.pages = [];\n\n if (!_this.wrapperWidth || !_this.wrapperHeight || !_this.scrollerWidth || !_this.scrollerHeight) {\n return;\n }\n\n var stepX = snap.stepX || _this.wrapperWidth;\n var stepY = snap.stepY || _this.wrapperHeight;\n\n var x = 0;\n var y = void 0;\n var cx = void 0;\n var cy = void 0;\n var i = 0;\n var l = void 0;\n var m = 0;\n var n = void 0;\n var rect = void 0;\n if (!el) {\n cx = Math.round(stepX / 2);\n cy = Math.round(stepY / 2);\n\n while (x > -_this.scrollerWidth) {\n _this.pages[i] = [];\n l = 0;\n y = 0;\n\n while (y > -_this.scrollerHeight) {\n _this.pages[i][l] = {\n x: Math.max(x, _this.maxScrollX),\n y: Math.max(y, _this.maxScrollY),\n width: stepX,\n height: stepY,\n cx: x - cx,\n cy: y - cy\n };\n\n y -= stepY;\n l++;\n }\n\n x -= stepX;\n i++;\n }\n } else {\n l = el.length;\n n = -1;\n\n for (; i < l; i++) {\n rect = getRect(el[i]);\n if (i === 0 || rect.left <= getRect(el[i - 1]).left) {\n m = 0;\n n++;\n }\n\n if (!_this.pages[m]) {\n _this.pages[m] = [];\n }\n\n x = Math.max(-rect.left, _this.maxScrollX);\n y = Math.max(-rect.top, _this.maxScrollY);\n cx = x - Math.round(rect.width / 2);\n cy = y - Math.round(rect.height / 2);\n\n _this.pages[m][n] = {\n x: x,\n y: y,\n width: rect.width,\n height: rect.height,\n cx: cx,\n cy: cy\n };\n\n if (x > _this.maxScrollX) {\n m++;\n }\n }\n }\n\n _this._checkSnapLoop();\n\n var initPageX = snap._loopX ? 1 : 0;\n var initPageY = snap._loopY ? 1 : 0;\n _this._goToPage(_this.currentPage.pageX || initPageX, _this.currentPage.pageY || initPageY, 0, undefined, true);\n\n // Update snap threshold if needed.\n var snapThreshold = snap.threshold;\n if (snapThreshold % 1 === 0) {\n _this.snapThresholdX = snapThreshold;\n _this.snapThresholdY = snapThreshold;\n } else {\n _this.snapThresholdX = Math.round(_this.pages[_this.currentPage.pageX][_this.currentPage.pageY].width * snapThreshold);\n _this.snapThresholdY = Math.round(_this.pages[_this.currentPage.pageX][_this.currentPage.pageY].height * snapThreshold);\n }\n });\n\n this.on('scrollEnd', function () {\n if (snap.loop) {\n if (snap._loopX) {\n if (_this.currentPage.pageX === 0) {\n _this._goToPage(_this.pages.length - 2, _this.currentPage.pageY, 0, undefined, true);\n }\n if (_this.currentPage.pageX === _this.pages.length - 1) {\n _this._goToPage(1, _this.currentPage.pageY, 0, undefined, true);\n }\n } else {\n if (_this.currentPage.pageY === 0) {\n _this._goToPage(_this.currentPage.pageX, _this.pages[0].length - 2, 0, undefined, true);\n }\n if (_this.currentPage.pageY === _this.pages[0].length - 1) {\n _this._goToPage(_this.currentPage.pageX, 1, 0, undefined, true);\n }\n }\n }\n });\n\n if (snap.listenFlick !== false) {\n this.on('flick', function () {\n var time = snap.speed || Math.max(Math.max(Math.min(Math.abs(_this.x - _this.startX), 1000), Math.min(Math.abs(_this.y - _this.startY), 1000)), 300);\n\n _this._goToPage(_this.currentPage.pageX + _this.directionX, _this.currentPage.pageY + _this.directionY, time);\n });\n }\n\n this.on('destroy', function () {\n if (snap.loop) {\n var _children = _this.scroller.children;\n if (_children.length > 2) {\n removeChild(_this.scroller, _children[_children.length - 1]);\n removeChild(_this.scroller, _children[0]);\n }\n }\n });\n };\n\n BScroll.prototype._checkSnapLoop = function () {\n var snap = this.options.snap;\n\n if (!snap.loop || !this.pages || !this.pages.length) {\n return;\n }\n\n if (this.pages.length > 1) {\n snap._loopX = true;\n }\n if (this.pages[0] && this.pages[0].length > 1) {\n snap._loopY = true;\n }\n if (snap._loopX && snap._loopY) {\n warn('Loop does not support two direction at the same time.');\n }\n };\n\n BScroll.prototype._nearestSnap = function (x, y) {\n if (!this.pages.length) {\n return { x: 0, y: 0, pageX: 0, pageY: 0 };\n }\n\n var i = 0;\n // Check if we exceeded the snap threshold\n if (Math.abs(x - this.absStartX) <= this.snapThresholdX && Math.abs(y - this.absStartY) <= this.snapThresholdY) {\n return this.currentPage;\n }\n\n if (x > this.minScrollX) {\n x = this.minScrollX;\n } else if (x < this.maxScrollX) {\n x = this.maxScrollX;\n }\n\n if (y > this.minScrollY) {\n y = this.minScrollY;\n } else if (y < this.maxScrollY) {\n y = this.maxScrollY;\n }\n\n var l = this.pages.length;\n for (; i < l; i++) {\n if (x >= this.pages[i][0].cx) {\n x = this.pages[i][0].x;\n break;\n }\n }\n\n l = this.pages[i].length;\n\n var m = 0;\n for (; m < l; m++) {\n if (y >= this.pages[0][m].cy) {\n y = this.pages[0][m].y;\n break;\n }\n }\n\n if (i === this.currentPage.pageX) {\n i += this.directionX;\n\n if (i < 0) {\n i = 0;\n } else if (i >= this.pages.length) {\n i = this.pages.length - 1;\n }\n\n x = this.pages[i][0].x;\n }\n\n if (m === this.currentPage.pageY) {\n m += this.directionY;\n\n if (m < 0) {\n m = 0;\n } else if (m >= this.pages[0].length) {\n m = this.pages[0].length - 1;\n }\n\n y = this.pages[0][m].y;\n }\n\n return {\n x: x,\n y: y,\n pageX: i,\n pageY: m\n };\n };\n\n BScroll.prototype._goToPage = function (x) {\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var time = arguments[2];\n var easing = arguments[3];\n var isSilent = arguments[4];\n\n var snap = this.options.snap;\n\n if (!snap || !this.pages || !this.pages.length) {\n return;\n }\n\n easing = easing || snap.easing || ease.bounce;\n\n if (x >= this.pages.length) {\n x = this.pages.length - 1;\n } else if (x < 0) {\n x = 0;\n }\n\n if (!this.pages[x]) {\n return;\n }\n\n if (y >= this.pages[x].length) {\n y = this.pages[x].length - 1;\n } else if (y < 0) {\n y = 0;\n }\n\n var posX = this.pages[x][y].x;\n var posY = this.pages[x][y].y;\n\n time = time === undefined ? snap.speed || Math.max(Math.max(Math.min(Math.abs(posX - this.x), 1000), Math.min(Math.abs(posY - this.y), 1000)), 300) : time;\n\n this.currentPage = {\n x: posX,\n y: posY,\n pageX: x,\n pageY: y\n };\n this.scrollTo(posX, posY, time, easing, isSilent);\n };\n\n BScroll.prototype.goToPage = function (x, y, time, easing) {\n var snap = this.options.snap;\n if (!snap || !this.pages || !this.pages.length) {\n return;\n }\n\n if (snap.loop) {\n var len = void 0;\n if (snap._loopX) {\n len = this.pages.length - 2;\n if (x >= len) {\n x = len - 1;\n } else if (x < 0) {\n x = 0;\n }\n x += 1;\n } else {\n len = this.pages[0].length - 2;\n if (y >= len) {\n y = len - 1;\n } else if (y < 0) {\n y = 0;\n }\n y += 1;\n }\n }\n this._goToPage(x, y, time, easing);\n };\n\n BScroll.prototype.next = function (time, easing) {\n var snap = this.options.snap;\n if (!snap) {\n return;\n }\n\n var x = this.currentPage.pageX;\n var y = this.currentPage.pageY;\n\n x++;\n if (x >= this.pages.length && this.hasVerticalScroll) {\n x = 0;\n y++;\n }\n\n this._goToPage(x, y, time, easing);\n };\n\n BScroll.prototype.prev = function (time, easing) {\n var snap = this.options.snap;\n if (!snap) {\n return;\n }\n\n var x = this.currentPage.pageX;\n var y = this.currentPage.pageY;\n\n x--;\n if (x < 0 && this.hasVerticalScroll) {\n x = 0;\n y--;\n }\n\n this._goToPage(x, y, time, easing);\n };\n\n BScroll.prototype.getCurrentPage = function () {\n var snap = this.options.snap;\n if (!snap) {\n return null;\n }\n\n if (snap.loop) {\n var currentPage = void 0;\n if (snap._loopX) {\n currentPage = extend({}, this.currentPage, {\n pageX: this.currentPage.pageX - 1\n });\n } else {\n currentPage = extend({}, this.currentPage, {\n pageY: this.currentPage.pageY - 1\n });\n }\n return currentPage;\n }\n return this.currentPage;\n };\n}\n\nfunction wheelMixin(BScroll) {\n BScroll.prototype.wheelTo = function () {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.options.wheel) {\n var y = -index * this.itemHeight;\n this.scrollTo(0, y);\n }\n };\n\n BScroll.prototype.getSelectedIndex = function () {\n return this.options.wheel && this.selectedIndex;\n };\n\n BScroll.prototype._initWheel = function () {\n var wheel = this.options.wheel;\n if (!wheel.wheelWrapperClass) {\n wheel.wheelWrapperClass = 'wheel-scroll';\n }\n if (!wheel.wheelItemClass) {\n wheel.wheelItemClass = 'wheel-item';\n }\n if (!wheel.wheelDisabledItemClass) {\n wheel.wheelDisabledItemClass = 'wheel-disabled-item';\n }\n if (wheel.selectedIndex === undefined) {\n wheel.selectedIndex = 0;\n }\n };\n\n BScroll.prototype._findNearestValidWheel = function (y) {\n y = y > 0 ? 0 : y < this.maxScrollY ? this.maxScrollY : y;\n var wheel = this.options.wheel;\n var currentIndex = Math.abs(Math.round(-y / this.itemHeight));\n var cacheIndex = currentIndex;\n var items = this.items;\n // Impersonation web native select\n // first, check whether there is a enable item whose index is smaller than currentIndex\n // then, check whether there is a enable item whose index is bigger than currentIndex\n // otherwise, there are all disabled items, just keep currentIndex unchange\n while (currentIndex >= 0) {\n if (items[currentIndex].className.indexOf(wheel.wheelDisabledItemClass) === -1) {\n break;\n }\n currentIndex--;\n }\n\n if (currentIndex < 0) {\n currentIndex = cacheIndex;\n while (currentIndex <= items.length - 1) {\n if (items[currentIndex].className.indexOf(wheel.wheelDisabledItemClass) === -1) {\n break;\n }\n currentIndex++;\n }\n }\n\n // keep it unchange when all the items are disabled\n if (currentIndex === items.length) {\n currentIndex = cacheIndex;\n }\n // when all the items are disabled, this.selectedIndex should always be -1\n return {\n index: this.wheelItemsAllDisabled ? -1 : currentIndex,\n y: -currentIndex * this.itemHeight\n };\n };\n\n BScroll.prototype._checkWheelAllDisabled = function () {\n var wheel = this.options.wheel;\n var items = this.items;\n this.wheelItemsAllDisabled = true;\n for (var i = 0; i < items.length; i++) {\n if (items[i].className.indexOf(wheel.wheelDisabledItemClass) === -1) {\n this.wheelItemsAllDisabled = false;\n break;\n }\n }\n };\n}\n\nvar INDICATOR_MIN_LEN = 8;\n\nfunction scrollbarMixin(BScroll) {\n BScroll.prototype._initScrollbar = function () {\n var _this = this;\n\n var _options$scrollbar = this.options.scrollbar,\n _options$scrollbar$fa = _options$scrollbar.fade,\n fade = _options$scrollbar$fa === undefined ? true : _options$scrollbar$fa,\n _options$scrollbar$in = _options$scrollbar.interactive,\n interactive = _options$scrollbar$in === undefined ? false : _options$scrollbar$in;\n\n this.indicators = [];\n var indicator = void 0;\n\n if (this.options.scrollX) {\n indicator = {\n el: createScrollbar('horizontal'),\n direction: 'horizontal',\n fade: fade,\n interactive: interactive\n };\n this._insertScrollBar(indicator.el);\n\n this.indicators.push(new Indicator(this, indicator));\n }\n\n if (this.options.scrollY) {\n indicator = {\n el: createScrollbar('vertical'),\n direction: 'vertical',\n fade: fade,\n interactive: interactive\n };\n this._insertScrollBar(indicator.el);\n this.indicators.push(new Indicator(this, indicator));\n }\n\n this.on('refresh', function () {\n for (var i = 0; i < _this.indicators.length; i++) {\n _this.indicators[i].refresh();\n }\n });\n\n if (fade) {\n this.on('scrollEnd', function () {\n for (var i = 0; i < _this.indicators.length; i++) {\n _this.indicators[i].fade();\n }\n });\n\n this.on('scrollCancel', function () {\n for (var i = 0; i < _this.indicators.length; i++) {\n _this.indicators[i].fade();\n }\n });\n\n this.on('scrollStart', function () {\n for (var i = 0; i < _this.indicators.length; i++) {\n _this.indicators[i].fade(true);\n }\n });\n\n this.on('beforeScrollStart', function () {\n for (var i = 0; i < _this.indicators.length; i++) {\n _this.indicators[i].fade(true, true);\n }\n });\n }\n\n this.on('destroy', function () {\n _this._removeScrollBars();\n });\n };\n\n BScroll.prototype._insertScrollBar = function (scrollbar) {\n this.wrapper.appendChild(scrollbar);\n };\n\n BScroll.prototype._removeScrollBars = function () {\n for (var i = 0; i < this.indicators.length; i++) {\n this.indicators[i].destroy();\n }\n };\n}\n\nfunction createScrollbar(direction) {\n var scrollbar = document.createElement('div');\n var indicator = document.createElement('div');\n\n scrollbar.style.cssText = 'position:absolute;z-index:9999;pointerEvents:none';\n indicator.style.cssText = 'box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px;';\n\n indicator.className = 'bscroll-indicator';\n\n if (direction === 'horizontal') {\n scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0';\n indicator.style.height = '100%';\n scrollbar.className = 'bscroll-horizontal-scrollbar';\n } else {\n scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px';\n indicator.style.width = '100%';\n scrollbar.className = 'bscroll-vertical-scrollbar';\n }\n\n scrollbar.style.cssText += ';overflow:hidden';\n scrollbar.appendChild(indicator);\n\n return scrollbar;\n}\n\nfunction Indicator(scroller, options) {\n this.wrapper = options.el;\n this.wrapperStyle = this.wrapper.style;\n this.indicator = this.wrapper.children[0];\n this.indicatorStyle = this.indicator.style;\n this.scroller = scroller;\n this.direction = options.direction;\n if (options.fade) {\n this.visible = 0;\n this.wrapperStyle.opacity = '0';\n } else {\n this.visible = 1;\n }\n\n this.sizeRatioX = 1;\n this.sizeRatioY = 1;\n this.maxPosX = 0;\n this.maxPosY = 0;\n this.x = 0;\n this.y = 0;\n\n if (options.interactive) {\n this._addDOMEvents();\n }\n}\n\nIndicator.prototype.handleEvent = function (e) {\n switch (e.type) {\n case 'touchstart':\n case 'mousedown':\n this._start(e);\n break;\n case 'touchmove':\n case 'mousemove':\n this._move(e);\n break;\n case 'touchend':\n case 'mouseup':\n case 'touchcancel':\n case 'mousecancel':\n this._end(e);\n break;\n }\n};\n\nIndicator.prototype.refresh = function () {\n if (this._shouldShow()) {\n this.transitionTime();\n this._calculate();\n this.updatePosition();\n }\n};\n\nIndicator.prototype.fade = function (visible, hold) {\n var _this2 = this;\n\n if (hold && !this.visible) {\n return;\n }\n\n var time = visible ? 250 : 500;\n\n visible = visible ? '1' : '0';\n\n this.wrapperStyle[style.transitionDuration] = time + 'ms';\n\n clearTimeout(this.fadeTimeout);\n this.fadeTimeout = setTimeout(function () {\n _this2.wrapperStyle.opacity = visible;\n _this2.visible = +visible;\n }, 0);\n};\n\nIndicator.prototype.updatePosition = function () {\n if (this.direction === 'vertical') {\n var y = Math.round(this.sizeRatioY * this.scroller.y);\n\n if (y < 0) {\n this.transitionTime(500);\n var height = Math.max(this.indicatorHeight + y * 3, INDICATOR_MIN_LEN);\n this.indicatorStyle.height = height + 'px';\n y = 0;\n } else if (y > this.maxPosY) {\n this.transitionTime(500);\n var _height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, INDICATOR_MIN_LEN);\n this.indicatorStyle.height = _height + 'px';\n y = this.maxPosY + this.indicatorHeight - _height;\n } else {\n this.indicatorStyle.height = this.indicatorHeight + 'px';\n }\n this.y = y;\n\n if (this.scroller.options.useTransform) {\n this.indicatorStyle[style.transform] = 'translateY(' + y + 'px)' + this.scroller.translateZ;\n } else {\n this.indicatorStyle.top = y + 'px';\n }\n } else {\n var x = Math.round(this.sizeRatioX * this.scroller.x);\n\n if (x < 0) {\n this.transitionTime(500);\n var width = Math.max(this.indicatorWidth + x * 3, INDICATOR_MIN_LEN);\n this.indicatorStyle.width = width + 'px';\n x = 0;\n } else if (x > this.maxPosX) {\n this.transitionTime(500);\n var _width = Math.max(this.indicatorWidth - (x - this.maxPosX) * 3, INDICATOR_MIN_LEN);\n this.indicatorStyle.width = _width + 'px';\n x = this.maxPosX + this.indicatorWidth - _width;\n } else {\n this.indicatorStyle.width = this.indicatorWidth + 'px';\n }\n\n this.x = x;\n\n if (this.scroller.options.useTransform) {\n this.indicatorStyle[style.transform] = 'translateX(' + x + 'px)' + this.scroller.translateZ;\n } else {\n this.indicatorStyle.left = x + 'px';\n }\n }\n};\n\nIndicator.prototype.transitionTime = function () {\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n this.indicatorStyle[style.transitionDuration] = time + 'ms';\n};\n\nIndicator.prototype.transitionTimingFunction = function (easing) {\n this.indicatorStyle[style.transitionTimingFunction] = easing;\n};\n\nIndicator.prototype.destroy = function () {\n this._removeDOMEvents();\n this.wrapper.parentNode.removeChild(this.wrapper);\n};\n\nIndicator.prototype._start = function (e) {\n var point = e.touches ? e.touches[0] : e;\n\n e.preventDefault();\n e.stopPropagation();\n\n this.transitionTime();\n\n this.initiated = true;\n this.moved = false;\n this.lastPointX = point.pageX;\n this.lastPointY = point.pageY;\n\n this.startTime = getNow();\n\n this._handleMoveEvents(addEvent);\n this.scroller.trigger('beforeScrollStart');\n};\n\nIndicator.prototype._move = function (e) {\n var point = e.touches ? e.touches[0] : e;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (!this.moved) {\n this.scroller.trigger('scrollStart');\n }\n\n this.moved = true;\n\n var deltaX = point.pageX - this.lastPointX;\n this.lastPointX = point.pageX;\n\n var deltaY = point.pageY - this.lastPointY;\n this.lastPointY = point.pageY;\n\n var newX = this.x + deltaX;\n var newY = this.y + deltaY;\n\n this._pos(newX, newY);\n};\n\nIndicator.prototype._end = function (e) {\n if (!this.initiated) {\n return;\n }\n this.initiated = false;\n\n e.preventDefault();\n e.stopPropagation();\n\n this._handleMoveEvents(removeEvent);\n\n var snapOption = this.scroller.options.snap;\n if (snapOption) {\n var speed = snapOption.speed,\n _snapOption$easing = snapOption.easing,\n easing = _snapOption$easing === undefined ? ease.bounce : _snapOption$easing;\n\n var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y);\n\n var time = speed || Math.max(Math.max(Math.min(Math.abs(this.scroller.x - snap.x), 1000), Math.min(Math.abs(this.scroller.y - snap.y), 1000)), 300);\n\n if (this.scroller.x !== snap.x || this.scroller.y !== snap.y) {\n this.scroller.directionX = 0;\n this.scroller.directionY = 0;\n this.scroller.currentPage = snap;\n this.scroller.scrollTo(snap.x, snap.y, time, easing);\n }\n }\n\n if (this.moved) {\n this.scroller.trigger('scrollEnd', {\n x: this.scroller.x,\n y: this.scroller.y\n });\n }\n};\n\nIndicator.prototype._pos = function (x, y) {\n if (x < 0) {\n x = 0;\n } else if (x > this.maxPosX) {\n x = this.maxPosX;\n }\n\n if (y < 0) {\n y = 0;\n } else if (y > this.maxPosY) {\n y = this.maxPosY;\n }\n\n x = Math.round(x / this.sizeRatioX);\n y = Math.round(y / this.sizeRatioY);\n\n this.scroller.scrollTo(x, y);\n this.scroller.trigger('scroll', {\n x: this.scroller.x,\n y: this.scroller.y\n });\n};\n\nIndicator.prototype._shouldShow = function () {\n if (this.direction === 'vertical' && this.scroller.hasVerticalScroll || this.direction === 'horizontal' && this.scroller.hasHorizontalScroll) {\n this.wrapper.style.display = '';\n return true;\n }\n this.wrapper.style.display = 'none';\n return false;\n};\n\nIndicator.prototype._calculate = function () {\n if (this.direction === 'vertical') {\n var wrapperHeight = this.wrapper.clientHeight;\n this.indicatorHeight = Math.max(Math.round(wrapperHeight * wrapperHeight / (this.scroller.scrollerHeight || wrapperHeight || 1)), INDICATOR_MIN_LEN);\n this.indicatorStyle.height = this.indicatorHeight + 'px';\n\n this.maxPosY = wrapperHeight - this.indicatorHeight;\n\n this.sizeRatioY = this.maxPosY / this.scroller.maxScrollY;\n } else {\n var wrapperWidth = this.wrapper.clientWidth;\n this.indicatorWidth = Math.max(Math.round(wrapperWidth * wrapperWidth / (this.scroller.scrollerWidth || wrapperWidth || 1)), INDICATOR_MIN_LEN);\n this.indicatorStyle.width = this.indicatorWidth + 'px';\n\n this.maxPosX = wrapperWidth - this.indicatorWidth;\n\n this.sizeRatioX = this.maxPosX / this.scroller.maxScrollX;\n }\n};\n\nIndicator.prototype._addDOMEvents = function () {\n var eventOperation = addEvent;\n this._handleDOMEvents(eventOperation);\n};\n\nIndicator.prototype._removeDOMEvents = function () {\n var eventOperation = removeEvent;\n this._handleDOMEvents(eventOperation);\n this._handleMoveEvents(eventOperation);\n};\n\nIndicator.prototype._handleMoveEvents = function (eventOperation) {\n if (!this.scroller.options.disableTouch) {\n eventOperation(window, 'touchmove', this);\n }\n if (!this.scroller.options.disableMouse) {\n eventOperation(window, 'mousemove', this);\n }\n};\n\nIndicator.prototype._handleDOMEvents = function (eventOperation) {\n if (!this.scroller.options.disableTouch) {\n eventOperation(this.indicator, 'touchstart', this);\n eventOperation(window, 'touchend', this);\n }\n if (!this.scroller.options.disableMouse) {\n eventOperation(this.indicator, 'mousedown', this);\n eventOperation(window, 'mouseup', this);\n }\n};\n\nfunction pullDownMixin(BScroll) {\n BScroll.prototype._initPullDown = function () {\n // must watch scroll in real time\n this.options.probeType = PROBE_REALTIME;\n };\n\n BScroll.prototype._checkPullDown = function () {\n var _options$pullDownRefr = this.options.pullDownRefresh,\n _options$pullDownRefr2 = _options$pullDownRefr.threshold,\n threshold = _options$pullDownRefr2 === undefined ? 90 : _options$pullDownRefr2,\n _options$pullDownRefr3 = _options$pullDownRefr.stop,\n stop = _options$pullDownRefr3 === undefined ? 40 : _options$pullDownRefr3;\n\n // check if a real pull down action\n\n if (this.directionY !== DIRECTION_DOWN || this.y < threshold) {\n return false;\n }\n\n if (!this.pulling) {\n this.pulling = true;\n this.trigger('pullingDown');\n }\n this.scrollTo(this.x, stop, this.options.bounceTime, ease.bounce);\n\n return this.pulling;\n };\n\n BScroll.prototype.finishPullDown = function () {\n this.pulling = false;\n this.resetPosition(this.options.bounceTime, ease.bounce);\n };\n\n BScroll.prototype.openPullDown = function () {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.options.pullDownRefresh = config;\n this._initPullDown();\n };\n\n BScroll.prototype.closePullDown = function () {\n this.options.pullDownRefresh = false;\n };\n\n BScroll.prototype.autoPullDownRefresh = function () {\n var _options$pullDownRefr4 = this.options.pullDownRefresh,\n _options$pullDownRefr5 = _options$pullDownRefr4.threshold,\n threshold = _options$pullDownRefr5 === undefined ? 90 : _options$pullDownRefr5,\n _options$pullDownRefr6 = _options$pullDownRefr4.stop,\n stop = _options$pullDownRefr6 === undefined ? 40 : _options$pullDownRefr6;\n\n\n if (this.pulling) {\n return;\n }\n this.pulling = true;\n\n this.scrollTo(this.x, threshold);\n this.trigger('pullingDown');\n this.scrollTo(this.x, stop, this.options.bounceTime, ease.bounce);\n };\n}\n\nfunction pullUpMixin(BScroll) {\n BScroll.prototype._initPullUp = function () {\n // must watch scroll in real time\n this.options.probeType = PROBE_REALTIME;\n\n this.pullupWatching = false;\n this._watchPullUp();\n };\n\n BScroll.prototype._watchPullUp = function () {\n if (this.pullupWatching) {\n return;\n }\n this.pullupWatching = true;\n this.on('scroll', this._checkToEnd);\n };\n\n BScroll.prototype._checkToEnd = function (pos) {\n var _this = this;\n\n var _options$pullUpLoad$t = this.options.pullUpLoad.threshold,\n threshold = _options$pullUpLoad$t === undefined ? 0 : _options$pullUpLoad$t;\n\n if (this.movingDirectionY === DIRECTION_UP && pos.y <= this.maxScrollY + threshold) {\n // reset pullupWatching status after scroll end.\n this.once('scrollEnd', function () {\n _this.pullupWatching = false;\n });\n this.trigger('pullingUp');\n this.off('scroll', this._checkToEnd);\n }\n };\n\n BScroll.prototype.finishPullUp = function () {\n var _this2 = this;\n\n if (this.pullupWatching) {\n this.once('scrollEnd', function () {\n _this2._watchPullUp();\n });\n } else {\n this._watchPullUp();\n }\n };\n\n BScroll.prototype.openPullUp = function () {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.options.pullUpLoad = config;\n this._initPullUp();\n };\n\n BScroll.prototype.closePullUp = function () {\n this.options.pullUpLoad = false;\n if (!this.pullupWatching) {\n return;\n }\n this.pullupWatching = false;\n this.off('scroll', this._checkToEnd);\n };\n}\n\nfunction mouseWheelMixin(BScroll) {\n BScroll.prototype._initMouseWheel = function () {\n var _this = this;\n\n this._handleMouseWheelEvent(addEvent);\n\n this.on('destroy', function () {\n clearTimeout(_this.mouseWheelTimer);\n clearTimeout(_this.mouseWheelEndTimer);\n _this._handleMouseWheelEvent(removeEvent);\n });\n\n this.firstWheelOpreation = true;\n };\n\n BScroll.prototype._handleMouseWheelEvent = function (eventOperation) {\n eventOperation(this.wrapper, 'wheel', this);\n eventOperation(this.wrapper, 'mousewheel', this);\n eventOperation(this.wrapper, 'DOMMouseScroll', this);\n };\n\n BScroll.prototype._onMouseWheel = function (e) {\n var _this2 = this;\n\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n\n if (this.options.stopPropagation) {\n e.stopPropagation();\n }\n\n if (this.firstWheelOpreation) {\n this.trigger('scrollStart');\n }\n this.firstWheelOpreation = false;\n\n var _options$mouseWheel = this.options.mouseWheel,\n _options$mouseWheel$s = _options$mouseWheel.speed,\n speed = _options$mouseWheel$s === undefined ? 20 : _options$mouseWheel$s,\n _options$mouseWheel$i = _options$mouseWheel.invert,\n invert = _options$mouseWheel$i === undefined ? false : _options$mouseWheel$i,\n _options$mouseWheel$e = _options$mouseWheel.easeTime,\n easeTime = _options$mouseWheel$e === undefined ? 300 : _options$mouseWheel$e;\n\n\n clearTimeout(this.mouseWheelTimer);\n this.mouseWheelTimer = setTimeout(function () {\n if (!_this2.options.snap && !easeTime) {\n _this2.trigger('scrollEnd', {\n x: _this2.x,\n y: _this2.y\n });\n }\n _this2.firstWheelOpreation = true;\n }, 400);\n\n var wheelDeltaX = void 0;\n var wheelDeltaY = void 0;\n\n switch (true) {\n case 'deltaX' in e:\n if (e.deltaMode === 1) {\n wheelDeltaX = -e.deltaX * speed;\n wheelDeltaY = -e.deltaY * speed;\n } else {\n wheelDeltaX = -e.deltaX;\n wheelDeltaY = -e.deltaY;\n }\n break;\n case 'wheelDeltaX' in e:\n wheelDeltaX = e.wheelDeltaX / 120 * speed;\n wheelDeltaY = e.wheelDeltaY / 120 * speed;\n break;\n case 'wheelDelta' in e:\n wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * speed;\n break;\n case 'detail' in e:\n wheelDeltaX = wheelDeltaY = -e.detail / 3 * speed;\n break;\n default:\n return;\n }\n\n var direction = invert ? -1 : 1;\n wheelDeltaX *= direction;\n wheelDeltaY *= direction;\n\n if (!this.hasVerticalScroll) {\n wheelDeltaX = wheelDeltaY;\n wheelDeltaY = 0;\n }\n\n var newX = void 0;\n var newY = void 0;\n if (this.options.snap) {\n newX = this.currentPage.pageX;\n newY = this.currentPage.pageY;\n\n if (wheelDeltaX > 0) {\n newX--;\n } else if (wheelDeltaX < 0) {\n newX++;\n }\n\n if (wheelDeltaY > 0) {\n newY--;\n } else if (wheelDeltaY < 0) {\n newY++;\n }\n\n this._goToPage(newX, newY);\n return;\n }\n\n newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0);\n newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0);\n\n this.movingDirectionX = this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0;\n this.movingDirectionY = this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0;\n\n if (newX > this.minScrollX) {\n newX = this.minScrollX;\n } else if (newX < this.maxScrollX) {\n newX = this.maxScrollX;\n }\n\n if (newY > this.minScrollY) {\n newY = this.minScrollY;\n } else if (newY < this.maxScrollY) {\n newY = this.maxScrollY;\n }\n\n var needTriggerEnd = this.y === newY;\n this.scrollTo(newX, newY, easeTime, ease.swipe);\n this.trigger('scroll', {\n x: this.x,\n y: this.y\n });\n clearTimeout(this.mouseWheelEndTimer);\n if (needTriggerEnd) {\n this.mouseWheelEndTimer = setTimeout(function () {\n _this2.trigger('scrollEnd', {\n x: _this2.x,\n y: _this2.y\n });\n }, easeTime);\n }\n };\n}\n\nfunction zoomMixin(BScroll) {\n BScroll.prototype._initZoom = function () {\n var _options$zoom = this.options.zoom,\n _options$zoom$start = _options$zoom.start,\n start = _options$zoom$start === undefined ? 1 : _options$zoom$start,\n _options$zoom$min = _options$zoom.min,\n min = _options$zoom$min === undefined ? 1 : _options$zoom$min,\n _options$zoom$max = _options$zoom.max,\n max = _options$zoom$max === undefined ? 4 : _options$zoom$max;\n\n this.scale = Math.min(Math.max(start, min), max);\n this.setScale(this.scale);\n this.scrollerStyle[style.transformOrigin] = '0 0';\n };\n\n BScroll.prototype._zoomTo = function (scale, originX, originY, startScale) {\n this.scaled = true;\n\n var lastScale = scale / (startScale || this.scale);\n this.setScale(scale);\n\n this.refresh();\n\n var newX = Math.round(this.startX - (originX - this.relativeX) * (lastScale - 1));\n var newY = Math.round(this.startY - (originY - this.relativeY) * (lastScale - 1));\n\n if (newX > this.minScrollX) {\n newX = this.minScrollX;\n } else if (newX < this.maxScrollX) {\n newX = this.maxScrollX;\n }\n\n if (newY > this.minScrollY) {\n newY = this.minScrollY;\n } else if (newY < this.maxScrollY) {\n newY = this.maxScrollY;\n }\n\n if (this.x !== newX || this.y !== newY) {\n this.scrollTo(newX, newY, this.options.bounceTime);\n }\n\n this.scaled = false;\n };\n\n BScroll.prototype.zoomTo = function (scale, x, y) {\n var _offsetToBody = offsetToBody(this.wrapper),\n left = _offsetToBody.left,\n top = _offsetToBody.top;\n\n var originX = x + left - this.x;\n var originY = y + top - this.y;\n this._zoomTo(scale, originX, originY);\n };\n\n BScroll.prototype._zoomStart = function (e) {\n var firstFinger = e.touches[0];\n var secondFinger = e.touches[1];\n var deltaX = Math.abs(firstFinger.pageX - secondFinger.pageX);\n var deltaY = Math.abs(firstFinger.pageY - secondFinger.pageY);\n\n this.startDistance = getDistance(deltaX, deltaY);\n this.startScale = this.scale;\n\n var _offsetToBody2 = offsetToBody(this.wrapper),\n left = _offsetToBody2.left,\n top = _offsetToBody2.top;\n\n this.originX = Math.abs(firstFinger.pageX + secondFinger.pageX) / 2 + left - this.x;\n this.originY = Math.abs(firstFinger.pageY + secondFinger.pageY) / 2 + top - this.y;\n\n this.trigger('zoomStart');\n };\n\n BScroll.prototype._zoom = function (e) {\n if (!this.enabled || this.destroyed || eventType[e.type] !== this.initiated) {\n return;\n }\n\n if (this.options.preventDefault) {\n e.preventDefault();\n }\n\n if (this.options.stopPropagation) {\n e.stopPropagation();\n }\n\n var firstFinger = e.touches[0];\n var secondFinger = e.touches[1];\n var deltaX = Math.abs(firstFinger.pageX - secondFinger.pageX);\n var deltaY = Math.abs(firstFinger.pageY - secondFinger.pageY);\n var distance = getDistance(deltaX, deltaY);\n var scale = distance / this.startDistance * this.startScale;\n\n this.scaled = true;\n\n var _options$zoom2 = this.options.zoom,\n _options$zoom2$min = _options$zoom2.min,\n min = _options$zoom2$min === undefined ? 1 : _options$zoom2$min,\n _options$zoom2$max = _options$zoom2.max,\n max = _options$zoom2$max === undefined ? 4 : _options$zoom2$max;\n\n\n if (scale < min) {\n scale = 0.5 * min * Math.pow(2.0, scale / min);\n } else if (scale > max) {\n scale = 2.0 * max * Math.pow(0.5, max / scale);\n }\n\n var lastScale = scale / this.startScale;\n\n var x = this.startX - (this.originX - this.relativeX) * (lastScale - 1);\n var y = this.startY - (this.originY - this.relativeY) * (lastScale - 1);\n\n this.setScale(scale);\n\n this.scrollTo(x, y, 0);\n };\n\n BScroll.prototype._zoomEnd = function (e) {\n if (!this.enabled || this.destroyed || eventType[e.type] !== this.initiated) {\n return;\n }\n\n if (this.options.preventDefault) {\n e.preventDefault();\n }\n\n if (this.options.stopPropagation) {\n e.stopPropagation();\n }\n\n this.isInTransition = false;\n this.isAnimating = false;\n this.initiated = 0;\n\n var _options$zoom3 = this.options.zoom,\n _options$zoom3$min = _options$zoom3.min,\n min = _options$zoom3$min === undefined ? 1 : _options$zoom3$min,\n _options$zoom3$max = _options$zoom3.max,\n max = _options$zoom3$max === undefined ? 4 : _options$zoom3$max;\n\n\n var scale = this.scale > max ? max : this.scale < min ? min : this.scale;\n\n this._zoomTo(scale, this.originX, this.originY, this.startScale);\n\n this.trigger('zoomEnd');\n };\n}\n\n// import { ease } from '../util/ease'\n\n// Number of items to instantiate beyond current view in the scroll direction.\nvar RUNWAY_ITEMS = 30;\n\n// Number of items to instantiate beyond current view in the opposite direction.\nvar RUNWAY_ITEMS_OPPOSITE = 10;\n\n// The animation interval (in ms) for fading in content from tombstones.\nvar ANIMATION_DURATION_MS = 200;\n\n// The number of pixels of default additional length to allow scrolling to.\nvar DEFAULT_SCROLL_RUNWAY = 2000;\n\nfunction infiniteMixin(BScroll) {\n BScroll.prototype._initInfinite = function () {\n this.options.probeType = 3;\n this.maxScrollY = -DEFAULT_SCROLL_RUNWAY;\n this.infiniteScroller = new InfiniteScroller(this, this.options.infinity);\n };\n}\n\nfunction isTombstoneNode(node) {\n if (node && node.classList) {\n return node.classList.contains('tombstone');\n }\n}\n\nfunction InfiniteScroller(scroller, options) {\n var _this = this;\n\n this.options = options;\n assert(typeof this.options.createTombstone === 'function', 'Infinite scroll need createTombstone Function to create tombstone');\n\n assert(typeof this.options.fetch === 'function', 'Infinite scroll need fetch Function to fetch new data.');\n\n assert(typeof this.options.render === 'function', 'Infinite scroll need render Function to render each item.');\n\n this.firstAttachedItem = 0;\n this.lastAttachedItem = 0;\n\n this.anchorScrollTop = 0;\n this.anchorItem = {\n index: 0,\n offset: 0\n };\n this.tombstoneHeight = 0;\n this.tombstoneWidth = 0;\n this.tombstones = [];\n this.tombstonesAnimationHandlers = [];\n\n this.items = [];\n this.loadedItems = 0;\n this.requestInProgress = false;\n this.hasMore = true;\n\n this.scroller = scroller;\n this.wrapperEl = this.scroller.wrapper;\n this.scrollerEl = this.scroller.scroller;\n\n this.scroller.on('resize', function () {\n _this.onResize();\n });\n this.scroller.on('destroy', function () {\n _this.destroy();\n });\n\n // wait scroll core init\n this._onResizeHandler = setTimeout(function () {\n _this.onResize();\n\n // must wait tombstoneHeight has size\n _this.scroller.on('scroll', function () {\n _this.onScroll();\n });\n });\n}\n\nInfiniteScroller.prototype.destroy = function () {\n var _this2 = this;\n\n // In extreme scene, destroy is triggered before _onResizeHandler\n clearTimeout(this._onResizeHandler);\n this.tombstonesAnimationHandlers.forEach(function (handler) {\n clearTimeout(handler);\n });\n this.tombstonesAnimationHandlers = null;\n this.items.forEach(function (item) {\n if (item.node) {\n _this2.scrollerEl.removeChild(item.node);\n item.node = null;\n }\n });\n this.scroller.infiniteScroller = null;\n this.scroller = null;\n this.wrapperEl = null;\n this.scrollerEl = null;\n this.items = null;\n this.tombstones = null;\n};\n\nInfiniteScroller.prototype.onScroll = function () {\n var scrollTop = -this.scroller.y;\n var delta = scrollTop - this.anchorScrollTop;\n if (scrollTop === 0) {\n this.anchorItem = {\n index: 0,\n offset: 0\n };\n } else {\n this.anchorItem = this._calculateAnchoredItem(this.anchorItem, delta);\n }\n\n this.anchorScrollTop = scrollTop;\n var lastScreenItem = this._calculateAnchoredItem(this.anchorItem, this.scroller.wrapperHeight);\n\n var start = this.anchorItem.index;\n var end = lastScreenItem.index;\n if (delta < 0) {\n start -= RUNWAY_ITEMS;\n end += RUNWAY_ITEMS_OPPOSITE;\n } else {\n start -= RUNWAY_ITEMS_OPPOSITE;\n end += RUNWAY_ITEMS;\n }\n this.fill(start, end);\n this.maybeRequestContent();\n};\n\nInfiniteScroller.prototype.onResize = function () {\n var tombstone = this.options.createTombstone();\n tombstone.style.position = 'absolute';\n this.scrollerEl.appendChild(tombstone);\n tombstone.style.display = '';\n this.tombstoneHeight = tombstone.offsetHeight;\n this.tombstoneWidth = tombstone.offsetWidth;\n this.scrollerEl.removeChild(tombstone);\n\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].height = this.items[i].width = 0;\n }\n\n this.onScroll();\n};\n\nInfiniteScroller.prototype.fill = function (start, end) {\n this.firstAttachedItem = Math.max(0, start);\n if (!this.hasMore) {\n end = Math.min(end, this.items.length);\n }\n this.lastAttachedItem = end;\n this.attachContent();\n};\n\nInfiniteScroller.prototype.maybeRequestContent = function () {\n var _this3 = this;\n\n if (this.requestInProgress || !this.hasMore) {\n return;\n }\n var itemsNeeded = this.lastAttachedItem - this.loadedItems;\n if (itemsNeeded <= 0) {\n return;\n }\n this.requestInProgress = true;\n this.options.fetch(itemsNeeded).then(function (items) {\n _this3.requestInProgress = false;\n if (items) {\n _this3.addContent(items);\n } else {\n _this3.hasMore = false;\n var tombstoneLen = _this3._removeTombstones();\n var curPos = 0;\n if (_this3.anchorItem.index <= _this3.items.length) {\n curPos = _this3._fixScrollPosition();\n _this3._setupAnimations({}, curPos);\n _this3.scroller.resetPosition(_this3.scroller.options.bounceTime);\n } else {\n _this3.anchorItem.index -= tombstoneLen;\n curPos = _this3._fixScrollPosition();\n _this3._setupAnimations({}, curPos);\n _this3.scroller.stop();\n _this3.scroller.resetPosition();\n _this3.onScroll();\n }\n }\n });\n};\n\nInfiniteScroller.prototype.addContent = function (items) {\n for (var i = 0; i < items.length; i++) {\n if (this.items.length <= this.loadedItems) {\n this._addItem();\n }\n this.items[this.loadedItems++].data = items[i];\n }\n this.attachContent();\n this.maybeRequestContent();\n};\n\nInfiniteScroller.prototype.attachContent = function () {\n var unusedNodes = this._collectUnusedNodes();\n var tombstoneAnimations = this._createDOMNodes(unusedNodes);\n this._cleanupUnusedNodes(unusedNodes);\n this._cacheNodeSize();\n var curPos = this._fixScrollPosition();\n this._setupAnimations(tombstoneAnimations, curPos);\n};\n\nInfiniteScroller.prototype.resetMore = function () {\n this.hasMore = true;\n};\n\nInfiniteScroller.prototype._removeTombstones = function () {\n var markIndex = void 0;\n var tombstoneLen = 0;\n var itemLen = this.items.length;\n for (var i = 0; i < itemLen; i++) {\n var currentNode = this.items[i].node;\n var currentData = this.items[i].data;\n if ((!currentNode || isTombstoneNode(currentNode)) && !currentData) {\n // 0 should be excluded\n if (markIndex === void 0) {\n markIndex = i;\n }\n if (currentNode) {\n this.scrollerEl.removeChild(currentNode);\n }\n }\n }\n tombstoneLen = itemLen - markIndex;\n this.items.splice(markIndex);\n this.lastAttachedItem = Math.min(this.lastAttachedItem, this.items.length);\n return tombstoneLen;\n};\n\nInfiniteScroller.prototype._collectUnusedNodes = function () {\n var unusedNodes = [];\n for (var i = 0; i < this.items.length; i++) {\n // Skip the items which should be visible.\n if (i === this.firstAttachedItem) {\n i = this.lastAttachedItem - 1;\n continue;\n }\n var currentNode = this.items[i].node;\n if (currentNode) {\n if (isTombstoneNode(currentNode)) {\n // Cache tombstones for reuse\n this.tombstones.push(currentNode);\n this.tombstones[this.tombstones.length - 1].style.display = 'none';\n } else {\n unusedNodes.push(currentNode);\n }\n }\n this.items[i].node = null;\n }\n return unusedNodes;\n};\n\nInfiniteScroller.prototype._createDOMNodes = function (unusedNodes) {\n var tombstoneAnimations = {};\n for (var i = this.firstAttachedItem; i < this.lastAttachedItem; i++) {\n while (this.items.length <= i) {\n this._addItem();\n }\n var currentNode = this.items[i].node;\n var currentData = this.items[i].data;\n if (currentNode) {\n if (isTombstoneNode(currentNode) && currentData) {\n currentNode.style.zIndex = 1;\n tombstoneAnimations[i] = [currentNode, this.items[i].top - this.anchorScrollTop];\n this.items[i].node = null;\n } else {\n continue;\n }\n }\n var node = currentData ? this.options.render(currentData, unusedNodes.pop()) : this._getTombStone();\n node.style.position = 'absolute';\n this.items[i].top = -1;\n this.scrollerEl.appendChild(node);\n this.items[i].node = node;\n }\n return tombstoneAnimations;\n};\n\nInfiniteScroller.prototype._cleanupUnusedNodes = function (unusedNodes) {\n while (unusedNodes.length) {\n this.scrollerEl.removeChild(unusedNodes.pop());\n }\n};\n\nInfiniteScroller.prototype._cacheNodeSize = function () {\n for (var i = this.firstAttachedItem; i < this.lastAttachedItem; i++) {\n var item = this.items[i];\n // Only cache the height if we have the real contents, not a placeholder.\n if (item.data && !item.height) {\n var isTombstone = isTombstoneNode(item.node);\n item.height = isTombstone ? this.tombstoneHeight : item.node.offsetHeight;\n item.width = isTombstone ? this.tombstoneWidth : item.node.offsetWidth;\n }\n }\n};\n\nInfiniteScroller.prototype._fixScrollPosition = function () {\n this.anchorScrollTop = 0;\n for (var _i = 0; _i < this.anchorItem.index; _i++) {\n this.anchorScrollTop += this.items[_i].height || this.tombstoneHeight;\n }\n this.anchorScrollTop += this.anchorItem.offset;\n\n // Position all nodes.\n var curPos = this.anchorScrollTop - this.anchorItem.offset;\n var i = this.anchorItem.index;\n while (i > this.firstAttachedItem) {\n curPos -= this.items[i - 1].height || this.tombstoneHeight;\n i--;\n }\n\n return curPos;\n};\n\nInfiniteScroller.prototype._setupAnimations = function (tombstoneAnimations, curPos) {\n var _this4 = this;\n\n for (var i in tombstoneAnimations) {\n var animation = tombstoneAnimations[i];\n this.items[i].node.style[style.transform] = 'translateY(' + (this.anchorScrollTop + animation[1]) + 'px) scale(' + this.tombstoneWidth / this.items[i].width + ', ' + this.tombstoneHeight / this.items[i].height + ')';\n // Call offsetTop on the nodes to be animated to force them to apply current transforms.\n /* eslint-disable no-unused-expressions */\n this.items[i].node.offsetTop;\n animation[0].offsetTop;\n this.items[i].node.style[style.transition] = cssVendor + 'transform ' + ANIMATION_DURATION_MS + 'ms';\n }\n\n for (var _i2 = this.firstAttachedItem; _i2 < this.lastAttachedItem; _i2++) {\n var _animation = tombstoneAnimations[_i2];\n if (_animation) {\n var tombstoneNode = _animation[0];\n tombstoneNode.style[style.transition] = cssVendor + 'transform ' + ANIMATION_DURATION_MS + 'ms, opacity ' + ANIMATION_DURATION_MS + 'ms';\n tombstoneNode.style[style.transform] = 'translateY(' + curPos + 'px) scale(' + this.items[_i2].width / this.tombstoneWidth + ', ' + this.items[_i2].height / this.tombstoneHeight + ')';\n tombstoneNode.style.opacity = 0;\n }\n if (curPos !== this.items[_i2].top) {\n if (!_animation) {\n this.items[_i2].node.style[style.transition] = '';\n }\n this.items[_i2].node.style[style.transform] = 'translateY(' + curPos + 'px)';\n }\n this.items[_i2].top = curPos;\n curPos += this.items[_i2].height || this.tombstoneHeight;\n }\n\n this.scroller.maxScrollY = -(curPos - this.scroller.wrapperHeight + (this.hasMore ? DEFAULT_SCROLL_RUNWAY : 0));\n\n var tombstoneAnimationsHandler = setTimeout(function () {\n for (var _i3 in tombstoneAnimations) {\n var _animation2 = tombstoneAnimations[_i3];\n _animation2[0].style.display = 'none';\n // Tombstone can be recycled now.\n _this4.tombstones.push(_animation2[0]);\n }\n }, ANIMATION_DURATION_MS);\n\n this.tombstonesAnimationHandlers.push(tombstoneAnimationsHandler);\n};\n\nInfiniteScroller.prototype._getTombStone = function () {\n var tombstone = this.tombstones.pop();\n if (tombstone) {\n tombstone.style.display = '';\n tombstone.style.opacity = 1;\n tombstone.style[style.transform] = '';\n tombstone.style[style.transition] = '';\n return tombstone;\n }\n return this.options.createTombstone();\n};\n\nInfiniteScroller.prototype._addItem = function () {\n this.items.push({\n data: null,\n node: null,\n height: 0,\n width: 0,\n top: 0\n });\n};\n\nInfiniteScroller.prototype._calculateAnchoredItem = function (initialAnchor, delta) {\n if (delta === 0) {\n return initialAnchor;\n }\n var i = initialAnchor.index;\n var tombstones = 0;\n\n delta += initialAnchor.offset;\n if (delta < 0) {\n while (delta < 0 && i > 0 && this.items[i - 1].height) {\n delta += this.items[i - 1].height;\n i--;\n }\n tombstones = Math.max(-i, Math.ceil(Math.min(delta, 0) / this.tombstoneHeight));\n } else {\n while (delta > 0 && i < this.items.length && this.items[i].height && this.items[i].height < delta) {\n delta -= this.items[i].height;\n i++;\n }\n if (i >= this.items.length || !this.items[i].height) {\n tombstones = Math.floor(Math.max(delta, 0) / this.tombstoneHeight);\n }\n }\n i += tombstones;\n delta -= tombstones * this.tombstoneHeight;\n\n return {\n index: i,\n offset: delta\n };\n};\n\nfunction BScroll(el, options) {\n this.wrapper = typeof el === 'string' ? document.querySelector(el) : el;\n if (!this.wrapper) {\n warn('Can not resolve the wrapper DOM.');\n }\n this.scroller = this.wrapper.children[0];\n if (!this.scroller) {\n warn('The wrapper need at least one child element to be scroller.');\n }\n // cache style for better performance\n this.scrollerStyle = this.scroller.style;\n\n this._init(options);\n}\n\ninitMixin(BScroll);\ncoreMixin(BScroll);\neventMixin(BScroll);\nsnapMixin(BScroll);\nwheelMixin(BScroll);\nscrollbarMixin(BScroll);\npullDownMixin(BScroll);\npullUpMixin(BScroll);\nmouseWheelMixin(BScroll);\nzoomMixin(BScroll);\ninfiniteMixin(BScroll);\n\nBScroll.Version = '1.15.2';\n\nexport default BScroll;\n","\n \n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollNav.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollNav.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ScrollNav.vue?vue&type=template&id=2328a15e&scoped=true&\"\nimport script from \"./ScrollNav.vue?vue&type=script&lang=js&\"\nexport * from \"./ScrollNav.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ScrollNav.vue?vue&type=style&index=0&id=2328a15e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2328a15e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollNav.vue?vue&type=style&index=0&id=2328a15e&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollNav.vue?vue&type=style&index=0&id=2328a15e&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BG.vue?vue&type=style&index=0&id=1947c54e&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BG.vue?vue&type=style&index=0&id=1947c54e&lang=scss&scoped=true&\""],"sourceRoot":""}