Welcome to mirror list, hosted at ThFree Co, Russian Federation.

vendors~files-modal.js.map « js - github.com/nextcloud/text.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: b929e828e597384f1e0a6d9be3e167212fb58663 (plain)
1
{"version":3,"sources":["webpack:///../lib/gettext.ts","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///NextcloudVue.[name]/webpack/universalModuleDefinition","webpack:///NextcloudVue.[name]/webpack/bootstrap","webpack:///NextcloudVue.[name]/node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///NextcloudVue.[name]/node_modules/css-loader/dist/runtime/api.js","webpack:///NextcloudVue.[name]/node_modules/vue-style-loader/lib/listToStyles.js","webpack:///NextcloudVue.[name]/node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///webpack:/NextcloudVue.[name]/external \"vue\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.object.to-string\"","webpack:///NextcloudVue.[name]/src/l10n.js","webpack:///webpack:/NextcloudVue.[name]/external \"v-tooltip\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.function.name\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.index-of\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.map\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.regexp.to-string\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.regexp.exec\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.iterator\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.string.iterator\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/web.dom-collections.iterator\"","webpack:///NextcloudVue.[name]/node_modules/css-loader/dist/runtime/getUrl.js","webpack:///NextcloudVue.[name]/src/fonts/iconfont-vue-67af392.eot","webpack:///NextcloudVue.[name]/src/fonts/iconfont-vue-67af392.woff","webpack:///NextcloudVue.[name]/src/fonts/iconfont-vue-67af392.ttf","webpack:///NextcloudVue.[name]/src/fonts/iconfont-vue-67af392.svg","webpack:///NextcloudVue.[name]/src/directives/Tooltip/index.js","webpack:///NextcloudVue.[name]/src/components/Popover/Popover.vue?898d","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.string.replace\"","webpack:///NextcloudVue.[name]/src/utils/GenRandomId.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.concat\"","webpack:///webpack:/NextcloudVue.[name]/external \"@nextcloud/l10n/dist/gettext\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.symbol\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.string.trim\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.number.constructor\"","webpack:///NextcloudVue.[name]/src/mixins/actionGlobal.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/web.url\"","webpack:///NextcloudVue.[name]/src/components/Popover/Popover.vue?1515","webpack:///NextcloudVue.[name]/src/components/Popover/Popover.vue?470d","webpack:///NextcloudVue.[name]/src/components/Popover/Popover.vue","webpack:///NextcloudVue.[name]/src/components/Popover/index.js","webpack:///NextcloudVue.[name]/src/mixins/l10n.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.symbol.description\"","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?efa4","webpack:///NextcloudVue.[name]/src/utils/GetParent.js","webpack:///NextcloudVue.[name]/src/mixins/actionText.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.slice\"","webpack:///NextcloudVue.[name]/src/utils/ValidateSlot.js","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.symbol.iterator\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.filter\"","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.from\"","webpack:///NextcloudVue.[name]/src/components/Actions/index.js","webpack:///NextcloudVue.[name]/src/directives/Tooltip/index.scss?30d2","webpack:///NextcloudVue.[name]/src/directives/Tooltip/index.scss","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?f8fb","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?608f","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?7731","webpack:///NextcloudVue.[name]/src/utils/ScopeComponent.js","webpack:///NextcloudVue.[name]/src/components/Popover/Popover.vue?e46b","webpack:///NextcloudVue.[name]/src/components/Popover/Popover.vue?770b","webpack:///webpack:/NextcloudVue.[name]/external \"core-js/modules/es.array.splice\"","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?5c38","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?fe29","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?eb14","webpack:///NextcloudVue.[name]/src/components/Actions/Actions.vue?91be","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?60d7","webpack:///webpack:/NextcloudVue.[name]/external \"hammerjs\"","webpack:///NextcloudVue.[name]/src/components/ActionButton/index.js","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?9ee5","webpack:///NextcloudVue.[name]/src/components/ActionButton/ActionButton.vue?70ba","webpack:///NextcloudVue.[name]/src/utils/Timer.js","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?6422","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?70dd","webpack:///NextcloudVue.[name]/src/components/Modal/index.js","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?baa9","webpack:///NextcloudVue.[name]/src/components/Modal/Modal.vue?16a1","webpack:///./node_modules/hammerjs/hammer.js"],"names":["GettextBuilder","translations","debug","language","this","setLanguage","getLanguage","data","GettextWrapper","locale","GetText","sourceLocale","translated","vars","r","original","placeholders","subtitudePlaceholders","gt","gettext","singular","plural","count","ngettext","replace","$","require","$trim","trim","target","proto","forced","forcedStringTrimMethod","fails","whitespaces","module","exports","METHOD_NAME","name","DESCRIPTORS","global","isForced","redefine","has","classof","inheritIfRequired","toPrimitive","create","getOwnPropertyNames","f","getOwnPropertyDescriptor","defineProperty","NativeNumber","NumberPrototype","prototype","BROKEN_CLASSOF","toNumber","argument","first","third","radix","maxCode","digits","length","index","code","it","charCodeAt","NaN","slice","parseInt","key","NumberWrapper","value","arguments","dummy","valueOf","call","keys","split","j","constructor","toAbsoluteIndex","toInteger","toLength","toObject","arraySpeciesCreate","createProperty","HAS_SPECIES_SUPPORT","arrayMethodHasSpeciesSupport","max","Math","min","splice","start","deleteCount","insertCount","actualDeleteCount","A","k","from","to","O","len","actualStart","argumentsLength","TypeError","factory","window","installedModules","__webpack_require__","moduleId","i","l","modules","m","c","d","getter","o","Object","enumerable","get","Symbol","toStringTag","t","mode","__esModule","ns","bind","n","object","property","hasOwnProperty","p","s","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","useSourceMap","list","toString","map","item","content","sourceMap","base64","cssMapping","btoa","sourceMapping","unescape","encodeURIComponent","JSON","stringify","sourceURLs","sources","source","sourceRoot","join","mediaQuery","dedupe","alreadyImportedModules","id","_i","push","listToStyles","parentId","styles","newStyles","part","css","media","parts","hasDocument","document","DEBUG","Error","stylesInDom","head","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","isOldIE","navigator","test","userAgent","toLowerCase","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","addStyle","createStyleElement","styleElement","createElement","type","appendChild","obj","update","remove","querySelector","parentNode","removeChild","styleIndex","applyToSingletonTag","applyToTag","newObj","textStore","replaceText","replacement","filter","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","insertBefore","setAttribute","ssrId","firstChild","gtBuilder","getGettextBuilder","detectLocale","TRANSLATIONS","addTranslation","json","build","url","default","hash","needQuotes","__webpack_exports__","VTooltip","defaultTemplate","SCOPE_VERSION","defaultHtml","locals","GenRandomId","random","substr","before","$slots","text","Vue","util","warn","$destroy","$el","beforeUpdate","getText","computed","isLongText","methods","Popover_Popovervue_type_script_lang_js_","components","VPopover","_h","$createElement","_c","_self","_g","_b","attrs","popover-base-class","popover-wrapper-class","popover-arrow-class","popover-inner-class","$attrs","$listeners","_t","_v","slot","Popover","GetParent","$parent","mixins","actionGlobal","props","icon","String","title","closeAfterClick","ariaLabel","isIconUrl","URL","error","onClick","event","$emit","closeMenu","ValidateSlot","slots","allowed","vm","node","isHtmlElement","componentOptions","tag","indexOf","isVueComponent","isForbiddenComponent","Actions","___CSS_LOADER_API_IMPORT___","Actions_Actionsvue_type_script_lang_js_","directives","tooltip","open","forceMenu","menuTitle","primary","defaultIcon","placement","boundariesElement","container","actions","opened","focusIndex","randomId","children","hasMultipleActions","isValidSingleAction","firstActionVNode","firstAction","firstActionBinding","is","href","aria-label","exact","firstActionEvent","firstActionEventBinding","firstActionClass","dynClass","watch","state","beforeMount","openMenu","onOpen","_this","onMouseFocusAction","removeCurrentActive","currentActiveElement","focusAction","focusElement","liMenuParent","focusPreviousAction","focusNextAction","focusFirstAction","focusLastAction","preventIfEvent","execFirstAction","initActions","_obj","_vm","rawName","expression","modifiers","auto","staticClass","class","rel","on","_d","aria-hidden","hidden","action-item--open","delay","handle-resize","boundaries-element","update:open","$event","show","apply-show","hide","ref","aria-haspopup","aria-controls","aria-expanded","_s","tabindex","keydown","_k","keyCode","ctrlKey","shiftKey","altKey","metaKey","preventDefault","mousemove","_e","ScopeComponent","Component","mounted","Array","isArray","ActionButton_ActionButtonvue_type_script_lang_js_","disabled","isFocusable","action--disabled","focusable","click","style","backgroundImage","domProps","textContent","___CSS_LOADER_GET_URL_IMPORT___","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","ActionButton","timer","callback","started","running","remaining","Date","setTimeout","pause","clearTimeout","clear","getTimeLeft","getStateRunning","Modal_Modalvue_type_script_lang_js_","hasPrevious","hasNext","outTransition","enableSlideshow","clearViewDelay","slideshowDelay","slideshowPaused","enableSwipe","spreadNavigation","size","validator","canClose","dark","mc","showModal","clearView","clearViewTimeout","playing","slideshowTimeout","modalTransitionName","playPauseTitle","paused","beforeDestroy","destroyed","previous","next","close","_this2","handleKeydown","handleSwipe","handleMouseMove","_this3","togglePlayPause","resetSlideshow","handleSlideshow","_this4","clearSlideshowTimeout","modal-mask--dark","touchmove","invisible","play-pause--paused","height","width","stroke","stroke-width","fill","cx","cy","currentTarget","Modal","define","exportName","undefined","assign","VENDOR_PREFIXES","TEST_ELEMENT","round","abs","now","setTimeoutContext","fn","timeout","bindFn","invokeArrayArg","arg","each","iterator","forEach","deprecate","method","message","deprecationMessage","e","stack","log","console","apply","output","nextKey","extend","dest","src","merge","inherit","child","base","properties","childP","baseP","_super","boolOrFn","val","args","ifUndefined","val1","val2","addEventListeners","types","handler","splitStr","addEventListener","removeEventListeners","removeEventListener","hasParent","inStr","str","find","inArray","findByKey","toArray","uniqueArray","sort","results","values","a","b","prefixed","prefix","prop","camelProp","toUpperCase","_uniqueId","getWindowForElement","element","doc","ownerDocument","defaultView","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","PROPS_XY","PROPS_CLIENT_XY","Input","manager","self","inputTarget","domHandler","ev","enable","init","inputHandler","eventType","input","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","timeStamp","deltaTime","angle","getAngle","distance","getDistance","offset","offsetDelta","prevDelta","prevInput","x","deltaX","y","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","end","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","direction","last","lastInterval","v","computeIntervalInputData","srcEvent","computeInputData","emit","recognize","clientX","clientY","p1","p2","sqrt","atan2","PI","evEl","evTarget","evWin","destroy","MOUSE_INPUT_MAP","mousedown","mouseup","MouseInput","pressed","button","which","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","2","3","4","5","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchend","touchcancel","SingleTouchInput","normalizeSingleTouches","all","touches","changed","changedTouches","TOUCH_INPUT_MAP","TouchInput","targetIds","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","touch","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","set","compute","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","DIRECTION_UP","preventSrc","Recognizer","defaults","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","reset","process","attrTest","optionPointers","isRecognized","isValid","threshold","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","time","validPointers","validMovement","validTime","taps","interval","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","handlers","oldCssProps","toggleCssProps","stop","force","stopped","curRecognizer","events","off","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_VERTICAL","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press"],"mappings":"mMA+EO,WACH,OAAO,IAAP,GAhFJ,I,EAAA,G,EAAA,S,2BAEA,S,iUAEMA,E,uCAGMC,aAAe,G,KACfC,OAAQ,E,8CAEJC,GAER,OADAC,KAAA,SACA,O,qCAIA,OAAOA,KAAKC,aAAY,IAAAC,eAAA,YAAxB,Q,qCAGWH,EAAkBI,GAE7B,OADAH,KAAA,kBACA,O,wCAKA,OADAA,KAAA,SACA,O,8BAIA,OAAO,IAAII,EAAeJ,KAAKK,QAAxB,KAAwCL,KAAxC,aAA2DA,KAAlE,W,KAKFI,E,WAIF,kBAMI,IAAK,IAAL,KANmD,UACnDJ,KAAA,GAAU,IAAIM,EAAJ,QAAY,CAClBR,MADkB,EAElBS,aAAc,OAGlB,EACIP,KAAA,gCAAyCG,EAAzC,IAGJH,KAAA,gB,wDAG0BQ,EAAoBC,GAC9C,OAAOD,EAAA,uBAAkC,cACrC,IAAME,EAAID,EAAV,GACA,MAAiB,iBAANC,GAAX,iBAAoCA,EACzBA,EAAP,WAEA,O,8BAKJC,GAAqD,IAAnCC,EAAmC,uDAAZ,GAC7C,OAAOZ,KAAKa,sBACRb,KAAKc,GAAGC,QADL,GAAP,K,+BAMKC,EAAkBC,EAAgBC,GAAkD,IAAnCN,EAAmC,uDAAZ,GAC7E,OAAOZ,KAAKa,sBACRb,KAAKc,GAAGK,SAASH,EAAUC,EAAQC,GAAOE,QAAQ,MAAOF,EADtD,YAAP,O,uCCtER,IAAIG,EAAIC,EAAQ,IACZC,EAAQD,EAAQ,KAA4BE,KAKhDH,EAAE,CAAEI,OAAQ,SAAUC,OAAO,EAAMC,OAJNL,EAAQ,IAIMM,CAAuB,SAAW,CAC3EJ,KAAM,WACJ,OAAOD,EAAMvB,U,iCCTjB,IAAI6B,EAAQP,EAAQ,GAChBQ,EAAcR,EAAQ,KAM1BS,EAAOC,QAAU,SAAUC,GACzB,OAAOJ,GAAM,WACX,QAASC,EAAYG,MANf,aAMqCA,MAAyBH,EAAYG,GAAaC,OAASD,O,iCCR1G,IAAIE,EAAcb,EAAQ,GACtBc,EAASd,EAAQ,GACjBe,EAAWf,EAAQ,IACnBgB,EAAWhB,EAAQ,IACnBiB,EAAMjB,EAAQ,GACdkB,EAAUlB,EAAQ,IAClBmB,EAAoBnB,EAAQ,KAC5BoB,EAAcpB,EAAQ,IACtBO,EAAQP,EAAQ,GAChBqB,EAASrB,EAAQ,IACjBsB,EAAsBtB,EAAQ,KAA8CuB,EAC5EC,EAA2BxB,EAAQ,IAAmDuB,EACtFE,EAAiBzB,EAAQ,GAAuCuB,EAChErB,EAAOF,EAAQ,KAA4BE,KAG3CwB,EAAeZ,EAAM,OACrBa,EAAkBD,EAAaE,UAG/BC,EALS,UAKQX,EAAQG,EAAOM,IAIhCG,EAAW,SAAUC,GACvB,IACIC,EAAOC,EAAOC,EAAOC,EAASC,EAAQC,EAAQC,EAAOC,EADrDC,EAAKpB,EAAYW,GAAU,GAE/B,GAAiB,iBAANS,GAAkBA,EAAGH,OAAS,EAGvC,GAAc,MADdL,GADAQ,EAAKtC,EAAKsC,IACCC,WAAW,KACQ,KAAVT,GAElB,GAAc,MADdC,EAAQO,EAAGC,WAAW,KACQ,MAAVR,EAAe,OAAOS,SACrC,GAAc,KAAVV,EAAc,CACvB,OAAQQ,EAAGC,WAAW,IACpB,KAAK,GAAI,KAAK,GAAIP,EAAQ,EAAGC,EAAU,GAAI,MAC3C,KAAK,GAAI,KAAK,IAAKD,EAAQ,EAAGC,EAAU,GAAI,MAC5C,QAAS,OAAQK,EAInB,IADAH,GADAD,EAASI,EAAGG,MAAM,IACFN,OACXC,EAAQ,EAAGA,EAAQD,EAAQC,IAI9B,IAHAC,EAAOH,EAAOK,WAAWH,IAGd,IAAMC,EAAOJ,EAAS,OAAOO,IACxC,OAAOE,SAASR,EAAQF,GAE5B,OAAQM,GAKZ,GAAIzB,EAtCS,UAsCSW,EAAa,UAAYA,EAAa,QAAUA,EAAa,SAAU,CAS3F,IARA,IAgBqBmB,EAhBjBC,EAAgB,SAAgBC,GAClC,IAAIP,EAAKQ,UAAUX,OAAS,EAAI,EAAIU,EAChCE,EAAQvE,KACZ,OAAOuE,aAAiBH,IAElBjB,EAAiBtB,GAAM,WAAcoB,EAAgBuB,QAAQC,KAAKF,MA5C/D,UA4C4E/B,EAAQ+B,IACvF9B,EAAkB,IAAIO,EAAaI,EAASU,IAAMS,EAAOH,GAAiBhB,EAASU,IAElFY,EAAOvC,EAAcS,EAAoBI,GAAgB,8LAQhE2B,MAAM,KAAMC,EAAI,EAAQF,EAAKf,OAASiB,EAAGA,IACrCrC,EAAIS,EAAcmB,EAAMO,EAAKE,MAAQrC,EAAI6B,EAAeD,IAC1DpB,EAAeqB,EAAeD,EAAKrB,EAAyBE,EAAcmB,IAG9EC,EAAclB,UAAYD,EAC1BA,EAAgB4B,YAAcT,EAC9B9B,EAASF,EA9DE,SA8DcgC,K,iCC7E3B,IAAI/C,EAAIC,EAAQ,IACZwD,EAAkBxD,EAAQ,KAC1ByD,EAAYzD,EAAQ,IACpB0D,EAAW1D,EAAQ,IACnB2D,EAAW3D,EAAQ,IACnB4D,EAAqB5D,EAAQ,IAC7B6D,EAAiB7D,EAAQ,KAGzB8D,EAF+B9D,EAAQ,GAEjB+D,CAA6B,UAEnDC,EAAMC,KAAKD,IACXE,EAAMD,KAAKC,IAOfnE,EAAE,CAAEI,OAAQ,QAASC,OAAO,EAAMC,QAASyD,GAAuB,CAChEK,OAAQ,SAAgBC,EAAOC,GAC7B,IAIIC,EAAaC,EAAmBC,EAAGC,EAAGC,EAAMC,EAJ5CC,EAAIjB,EAASjF,MACbmG,EAAMnB,EAASkB,EAAEvC,QACjByC,EAActB,EAAgBY,EAAOS,GACrCE,EAAkB/B,UAAUX,OAWhC,GATwB,IAApB0C,EACFT,EAAcC,EAAoB,EACL,IAApBQ,GACTT,EAAc,EACdC,EAAoBM,EAAMC,IAE1BR,EAAcS,EAAkB,EAChCR,EAAoBL,EAAIF,EAAIP,EAAUY,GAAc,GAAIQ,EAAMC,IAE5DD,EAAMP,EAAcC,EAtBL,iBAuBjB,MAAMS,UAtB0B,mCAyBlC,IADAR,EAAIZ,EAAmBgB,EAAGL,GACrBE,EAAI,EAAGA,EAAIF,EAAmBE,KACjCC,EAAOI,EAAcL,KACTG,GAAGf,EAAeW,EAAGC,EAAGG,EAAEF,IAGxC,GADAF,EAAEnC,OAASkC,EACPD,EAAcC,EAAmB,CACnC,IAAKE,EAAIK,EAAaL,EAAII,EAAMN,EAAmBE,IAEjDE,EAAKF,EAAIH,GADTI,EAAOD,EAAIF,KAECK,EAAGA,EAAED,GAAMC,EAAEF,UACbE,EAAED,GAEhB,IAAKF,EAAII,EAAKJ,EAAII,EAAMN,EAAoBD,EAAaG,WAAYG,EAAEH,EAAI,QACtE,GAAIH,EAAcC,EACvB,IAAKE,EAAII,EAAMN,EAAmBE,EAAIK,EAAaL,IAEjDE,EAAKF,EAAIH,EAAc,GADvBI,EAAOD,EAAIF,EAAoB,KAEnBK,EAAGA,EAAED,GAAMC,EAAEF,UACbE,EAAED,GAGlB,IAAKF,EAAI,EAAGA,EAAIH,EAAaG,IAC3BG,EAAEH,EAAIK,GAAe9B,UAAUyB,EAAI,GAGrC,OADAG,EAAEvC,OAASwC,EAAMN,EAAoBD,EAC9BE,M,wDCjEsCS,E,qOAS9CC,OAT8CD,EAStC,WACX,O,YCTE,IAAIE,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAU3E,QAGnC,IAAID,EAAS0E,EAAiBE,GAAY,CACzCC,EAAGD,EACHE,KACA7E,QAAS,IAUV,OANA8E,EAAQH,GAAUlC,KAAK1C,EAAOC,QAASD,EAAQA,EAAOC,QAAS0E,GAG/D3E,EAAO8E,KAGA9E,EAAOC,QA0Df,OArDA0E,EAAoBK,EAAID,EAGxBJ,EAAoBM,EAAIP,EAGxBC,EAAoBO,EAAI,SAASjF,EAASE,EAAMgF,GAC3CR,EAAoBS,EAAEnF,EAASE,IAClCkF,OAAOrE,eAAef,EAASE,EAAM,CAAEmF,cAAkBC,IAAKJ,KAKhER,EAAoBhG,EAAI,SAASsB,GACX,oBAAXuF,QAA0BA,OAAOC,aAC1CJ,OAAOrE,eAAef,EAASuF,OAAOC,YAAa,CAAEnD,MAAO,WAE7D+C,OAAOrE,eAAef,EAAS,aAAc,CAAEqC,YAQhDqC,EAAoBe,EAAI,SAASpD,EAAOqD,GAEvC,GADU,EAAPA,IAAUrD,EAAQqC,EAAoBrC,IAC/B,EAAPqD,EAAU,OAAOrD,EACpB,GAAW,EAAPqD,GAA8B,YAAVrD,IAAsBA,GAASA,EAAMsD,WAAY,OAAOtD,EAChF,IAAIuD,EAAKR,OAAOzE,OAAO,MAGvB,GAFA+D,EAAoBhG,EAAEkH,GACtBR,OAAOrE,eAAe6E,EAAI,UAAW,CAAEP,cAAkBhD,MAAOA,IACtD,EAAPqD,GAA4B,iBAATrD,EAAmB,IAAI,IAAIF,KAAOE,EAAOqC,EAAoBO,EAAEW,EAAIzD,EAAK,SAASA,GAAO,OAAOE,EAAMF,IAAQ0D,KAAK,KAAM1D,IAC9I,OAAOyD,GAIRlB,EAAoBoB,EAAI,SAAS/F,GAChC,IAAImF,EAASnF,GAAUA,EAAO4F,WAC7B,WAAwB,OAAO5F,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADA2E,EAAoBO,EAAEC,EAAQ,IAAKA,GAC5BA,GAIRR,EAAoBS,EAAI,SAASY,EAAQC,GAAY,OAAOZ,OAAOlE,UAAU+E,eAAexD,KAAKsD,EAAQC,IAGzGtB,EAAoBwB,EAAI,SAIjBxB,EAAoBA,EAAoByB,EAAI,K,kBC5EtC,SAASC,EACtBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBIC,EArBAC,EAAmC,mBAAlBT,EACjBA,EAAcS,QACdT,EAsDJ,GAnDIC,IACFQ,EAAQR,OAASA,EACjBQ,EAAQP,gBAAkBA,EAC1BO,EAAQC,cAINP,IACFM,EAAQE,eAINN,IACFI,EAAQG,SAAW,UAAYP,GAI7BC,GACFE,EAAO,SAAUK,IAEfA,EACEA,GACClJ,KAAKmJ,QAAUnJ,KAAKmJ,OAAOC,YAC3BpJ,KAAKqJ,QAAUrJ,KAAKqJ,OAAOF,QAAUnJ,KAAKqJ,OAAOF,OAAOC,aAEZ,oBAAxBE,sBACrBJ,EAAUI,qBAGRb,GACFA,EAAahE,KAAKzE,KAAMkJ,GAGtBA,GAAWA,EAAQK,uBACrBL,EAAQK,sBAAsBC,IAAIb,IAKtCG,EAAQW,aAAeZ,GACdJ,IACTI,EAAOD,EACH,WACAH,EAAahE,KACXzE,MACC8I,EAAQE,WAAahJ,KAAKqJ,OAASrJ,MAAM0J,MAAMC,SAASC,aAG3DnB,GAGFI,EACF,GAAIC,EAAQE,WAAY,CAGtBF,EAAQe,cAAgBhB,EAExB,IAAIiB,EAAiBhB,EAAQR,OAC7BQ,EAAQR,OAAS,SAAmCyB,EAAGb,GAErD,OADAL,EAAKpE,KAAKyE,GACHY,EAAeC,EAAGb,QAEtB,CAEL,IAAIc,EAAWlB,EAAQmB,aACvBnB,EAAQmB,aAAeD,EACnB,GAAGE,OAAOF,EAAUnB,GACpB,CAACA,GAIT,MAAO,CACL7G,QAASqG,EACTS,QAASA,GA/FbpC,mC,gBCQA3E,EAAOC,QAAU,SAAUmI,GACzB,IAAIC,EAAO,GAuDX,OArDAA,EAAKC,SAAW,WACd,OAAOrK,KAAKsK,KAAI,SAAUC,GACxB,IAAIC,EAsDV,SAAgCD,EAAMJ,GACpC,IAoBiBM,EAEbC,EACAvK,EAvBAqK,EAAUD,EAAK,IAAM,GAErBI,EAAaJ,EAAK,GAEtB,IAAKI,EACH,OAAOH,EAGT,GAAIL,GAAgC,mBAATS,KAAqB,CAC9C,IAAIC,GAWWJ,EAXeE,EAa5BD,EAASE,KAAKE,SAASC,mBAAmBC,KAAKC,UAAUR,MACzDtK,EAAO,+DAA+D+J,OAAOQ,GAC1E,OAAOR,OAAO/J,EAAM,QAdrB+K,EAAaP,EAAWQ,QAAQb,KAAI,SAAUc,GAChD,MAAO,iBAAiBlB,OAAOS,EAAWU,YAAc,IAAInB,OAAOkB,EAAQ,UAE7E,MAAO,CAACZ,GAASN,OAAOgB,GAAYhB,OAAO,CAACW,IAAgBS,KAAK,MAGnE,MAAO,CAACd,GAASc,KAAK,MAjBxB,CAtD2Cf,EAAMJ,GAE3C,OAAII,EAAK,GACA,UAAUL,OAAOK,EAAK,GAAI,MAAML,OAAOM,EAAS,KAGlDA,KACNc,KAAK,KAKVlB,EAAKxD,EAAI,SAAUE,EAASyE,EAAYC,GACf,iBAAZ1E,IAETA,EAAU,CAAC,CAAC,KAAMA,EAAS,MAG7B,IAAI2E,EAAyB,GAE7B,GAAID,EACF,IAAK,IAAI5E,EAAI,EAAGA,EAAI5G,KAAK2D,OAAQiD,IAAK,CAEpC,IAAI8E,EAAK1L,KAAK4G,GAAG,GAEP,MAAN8E,IACFD,EAAuBC,OAK7B,IAAK,IAAIC,EAAK,EAAGA,EAAK7E,EAAQnD,OAAQgI,IAAM,CAC1C,IAAIpB,EAAO,GAAGL,OAAOpD,EAAQ6E,IAEzBH,GAAUC,EAAuBlB,EAAK,MAKtCgB,IACGhB,EAAK,GAGRA,EAAK,GAAK,GAAGL,OAAOqB,EAAY,SAASrB,OAAOK,EAAK,IAFrDA,EAAK,GAAKgB,GAMdnB,EAAKwB,KAAKrB,MAIPH,I,gBC5DM,SAASyB,EAAcC,EAAU1B,GAG9C,IAFA,IAAI2B,EAAS,GACTC,EAAY,GACPpF,EAAI,EAAGA,EAAIwD,EAAKzG,OAAQiD,IAAK,CACpC,IAAI2D,EAAOH,EAAKxD,GACZ8E,EAAKnB,EAAK,GAIV0B,EAAO,CACTP,GAAII,EAAW,IAAMlF,EACrBsF,IALQ3B,EAAK,GAMb4B,MALU5B,EAAK,GAMfE,UALcF,EAAK,IAOhByB,EAAUN,GAGbM,EAAUN,GAAIU,MAAMR,KAAKK,GAFzBF,EAAOH,KAAKI,EAAUN,GAAM,CAAEA,GAAIA,EAAIU,MAAO,CAACH,KAKlD,OAAOF,E,+CCjBT,IAAIM,EAAkC,oBAAbC,SAEzB,GAAqB,oBAAVC,OAAyBA,QAC7BF,EACH,MAAM,IAAIG,MACV,2JAkBJ,IAAIC,EAAc,GAQdC,EAAOL,IAAgBC,SAASI,MAAQJ,SAASK,qBAAqB,QAAQ,IAC9EC,EAAmB,KACnBC,EAAmB,EACnBC,KACAC,EAAO,aACPjE,EAAU,KAKVkE,EAA+B,oBAAdC,WAA6B,eAAeC,KAAKD,UAAUE,UAAUC,eAE3E,SAASC,EAAiBvB,EAAU1B,EAAMkD,EAAeC,GACtET,EAAeQ,EAEfxE,EAAUyE,GAAY,GAEtB,IAAIxB,EAASF,EAAaC,EAAU1B,GAGpC,OAFAoD,EAAezB,GAER,SAAiB0B,GAEtB,IADA,IAAIC,EAAY,GACP9G,EAAI,EAAGA,EAAImF,EAAOpI,OAAQiD,IAAK,CACtC,IAAI2D,EAAOwB,EAAOnF,IACd+G,EAAWlB,EAAYlC,EAAKmB,KACvBkC,OACTF,EAAU9B,KAAK+B,GAQjB,IANIF,EAEFD,EADAzB,EAASF,EAAaC,EAAU2B,IAGhC1B,EAAS,GAEFnF,EAAI,EAAGA,EAAI8G,EAAU/J,OAAQiD,IAAK,CACzC,IAAI+G,EACJ,GAAsB,KADlBA,EAAWD,EAAU9G,IACZgH,KAAY,CACvB,IAAK,IAAIhJ,EAAI,EAAGA,EAAI+I,EAASvB,MAAMzI,OAAQiB,IACzC+I,EAASvB,MAAMxH,YAEV6H,EAAYkB,EAASjC,OAMpC,SAAS8B,EAAgBzB,GACvB,IAAK,IAAInF,EAAI,EAAGA,EAAImF,EAAOpI,OAAQiD,IAAK,CACtC,IAAI2D,EAAOwB,EAAOnF,GACd+G,EAAWlB,EAAYlC,EAAKmB,IAChC,GAAIiC,EAAU,CACZA,EAASC,OACT,IAAK,IAAIhJ,EAAI,EAAGA,EAAI+I,EAASvB,MAAMzI,OAAQiB,IACzC+I,EAASvB,MAAMxH,GAAG2F,EAAK6B,MAAMxH,IAE/B,KAAOA,EAAI2F,EAAK6B,MAAMzI,OAAQiB,IAC5B+I,EAASvB,MAAMR,KAAKiC,EAAStD,EAAK6B,MAAMxH,KAEtC+I,EAASvB,MAAMzI,OAAS4G,EAAK6B,MAAMzI,SACrCgK,EAASvB,MAAMzI,OAAS4G,EAAK6B,MAAMzI,YAEhC,CACL,IAAIyI,EAAQ,GACZ,IAASxH,EAAI,EAAGA,EAAI2F,EAAK6B,MAAMzI,OAAQiB,IACrCwH,EAAMR,KAAKiC,EAAStD,EAAK6B,MAAMxH,KAEjC6H,EAAYlC,EAAKmB,IAAM,CAAEA,GAAInB,EAAKmB,GAAIkC,KAAM,EAAGxB,MAAOA,KAK5D,SAAS0B,IACP,IAAIC,EAAezB,SAAS0B,cAAc,SAG1C,OAFAD,EAAaE,KAAO,WACpBvB,EAAKwB,YAAYH,GACVA,EAGT,SAASF,EAAUM,GACjB,IAAIC,EAAQC,EACRN,EAAezB,SAASgC,cAAc,2BAA8BH,EAAIzC,GAAK,MAEjF,GAAIqC,EAAc,CAChB,GAAIjB,EAGF,OAAOC,EAOPgB,EAAaQ,WAAWC,YAAYT,GAIxC,GAAIf,EAAS,CAEX,IAAIyB,EAAa5B,IACjBkB,EAAenB,IAAqBA,EAAmBkB,KACvDM,EAASM,EAAoB7G,KAAK,KAAMkG,EAAcU,MACtDJ,EAASK,EAAoB7G,KAAK,KAAMkG,EAAcU,WAGtDV,EAAeD,IACfM,EAASO,EAAW9G,KAAK,KAAMkG,GAC/BM,EAAS,WACPN,EAAaQ,WAAWC,YAAYT,IAMxC,OAFAK,EAAOD,GAEA,SAAsBS,GAC3B,GAAIA,EAAQ,CACV,GAAIA,EAAO1C,MAAQiC,EAAIjC,KACnB0C,EAAOzC,QAAUgC,EAAIhC,OACrByC,EAAOnE,YAAc0D,EAAI1D,UAC3B,OAEF2D,EAAOD,EAAMS,QAEbP,KAKN,IACMQ,EADFC,GACED,EAAY,GAET,SAAUjL,EAAOmL,GAEtB,OADAF,EAAUjL,GAASmL,EACZF,EAAUG,OAAOC,SAAS3D,KAAK,QAI1C,SAASoD,EAAqBX,EAAcnK,EAAOyK,EAAQF,GACzD,IAAIjC,EAAMmC,EAAS,GAAKF,EAAIjC,IAE5B,GAAI6B,EAAamB,WACfnB,EAAamB,WAAWC,QAAUL,EAAYlL,EAAOsI,OAChD,CACL,IAAIkD,EAAU9C,SAAS+C,eAAenD,GAClCoD,EAAavB,EAAauB,WAC1BA,EAAW1L,IAAQmK,EAAaS,YAAYc,EAAW1L,IACvD0L,EAAW3L,OACboK,EAAawB,aAAaH,EAASE,EAAW1L,IAE9CmK,EAAaG,YAAYkB,IAK/B,SAAST,EAAYZ,EAAcI,GACjC,IAAIjC,EAAMiC,EAAIjC,IACVC,EAAQgC,EAAIhC,MACZ1B,EAAY0D,EAAI1D,UAiBpB,GAfI0B,GACF4B,EAAayB,aAAa,QAASrD,GAEjCrD,EAAQ2G,OACV1B,EAAayB,aA7JF,kBA6JyBrB,EAAIzC,IAGtCjB,IAGFyB,GAAO,mBAAqBzB,EAAUU,QAAQ,GAAK,MAEnDe,GAAO,uDAAyDtB,KAAKE,SAASC,mBAAmBC,KAAKC,UAAUR,MAAgB,OAG9HsD,EAAamB,WACfnB,EAAamB,WAAWC,QAAUjD,MAC7B,CACL,KAAO6B,EAAa2B,YAClB3B,EAAaS,YAAYT,EAAa2B,YAExC3B,EAAaG,YAAY5B,SAAS+C,eAAenD,O,cC3NrDnK,EAAOC,QAAUV,EAAQ,K,cCAzBS,EAAOC,QAAUV,EAAQ,K,qGCEnBqO,EAAYC,8BAChBC,eACFC,oj/HAAaxF,KAAI,YAAI,OAAIqF,EAAUI,eAAe5P,EAAKE,OAAQF,EAAK6P,SACpE,IAAMlP,EAAK6O,EAAUM,QAEfnI,EAAIhH,EAAGK,SAAS0G,KAAK/G,GACrB2G,EAAI3G,EAAGC,QAAQ8G,KAAK/G,I,cCR1BiB,EAAOC,QAAUV,EAAQ,M,cCAzBS,EAAOC,QAAUV,EAAQ,M,cCAzBS,EAAOC,QAAUV,EAAQ,M,cCAzBS,EAAOC,QAAUV,EAAQ,M,cCAzBS,EAAOC,QAAUV,EAAQ,M,cCAzBS,EAAOC,QAAUV,EAAQ,K,eCAzBS,EAAOC,QAAUV,EAAQ,K,cCAzBS,EAAOC,QAAUV,EAAQ,K,cCAzBS,EAAOC,QAAUV,EAAQ,M,gBCEzBS,EAAOC,QAAU,SAAUkO,EAAKpH,GAS9B,OARKA,IAEHA,EAAU,IAMO,iBAFnBoH,EAAMA,GAAOA,EAAIvI,WAAauI,EAAIC,QAAUD,GAGnCA,GAIL,eAAehD,KAAKgD,KAEtBA,EAAMA,EAAIjM,MAAM,GAAI,IAGlB6E,EAAQsH,OAEVF,GAAOpH,EAAQsH,MAKb,cAAclD,KAAKgD,IAAQpH,EAAQuH,WAC9B,IAAKnG,OAAOgG,EAAI9O,QAAQ,KAAM,OAAOA,QAAQ,MAAO,OAAQ,KAG9D8O,K,gBChCTxJ,OAAe4J,gyK,gBCAf5J,OAAe4J,gmK,gBCAf5J,OAAe4J,+/J,gBCAf5J,OAAe4J,o6S,gBCAf5J;;;;;;;;;;;;;;;;;;;;;;;AA4BA6J,WAASzH,QAAQ0H,gBAAjBD,yDAAqFE,UAArFF,6EACAA,WAASzH,QAAQ4H,eAEFH,YAAf,U,gBC5BA,IAAI/F,EAAU9D,EAAQ,IACA,iBAAZ8D,IAAsBA,EAAU,CAAC,CAACzI,EAAO6E,EAAI4D,EAAS,MAC7DA,EAAQmG,SAAQ5O,EAAOC,QAAUwI,EAAQmG,WAElCjK,EAAQ,GAAkEyJ,SACnE,WAAY3F,KAAe,K,cCR5CzI,EAAOC,QAAUV,EAAQ,M,uCC8BVsP,IAPK,SAACjN,GACpB,OAAO4B,KAAKsL,SACVxG,SAAS,IACTjJ,QAAQ,WAAY,IACpB0P,OAAO,EAAGnN,GAAU,K,cC3BvB5B,EAAOC,QAAUV,EAAQ,K,eCAzBS,EAAOC,QAAUV,EAAQ,M,8BCAzBS,EAAOC,QAAUV,EAAQ,M,cCAzBS,EAAOC,QAAUV,EAAQ,M,cCAzBS,EAAOC,QAAUV,EAAQ,M;;;;;;;;;;;;;;;;;;;;;OCwBVgP,KACdS,OADcT,WAIRtQ,KAAKgR,OAAOb,SAAgC,KAArBnQ,KAAKiR,KAAKzP,SACrC0P,IAAIC,KAAKC,KAATF,UAAiBlR,KAAK2J,SAASzH,KAA/BgP,2DAA8FlR,MAC9FA,KAAKqR,WACLrR,KAAKsR,IAAIjD,WAIXkD,aAXcjB,WAYbtQ,KAAKiR,KAAOjR,KAAKwR,WAGlBrR,KAfcmQ,WAgBb,MAAO,CAGNW,KAAMjR,KAAKwR,YAIbC,SAAU,CACTC,WADS,WAER,OAAO1R,KAAKiR,MAAQjR,KAAKiR,KAAKzP,OAAOmC,OAAS,KAIhDgO,QAAS,CACRH,QADQ,WAEP,OAAOxR,KAAKgR,OAAOb,QAAUnQ,KAAKgR,OAAOb,QAAQ,GAAGc,KAAKzP,OAAS,O,cCvDrEO,EAAOC,QAAUV,EAAQ,M,uBCAzB,ICA6LsQ,ECuE7L,CACA1P,eACA2P,YACAC,S,KAAAA,W,iDF1Ea,WAAa,IAAiBC,EAAT/R,KAAgBgS,eAAmBC,EAAnCjS,KAA0CkS,MAAMD,IAAIF,EAAG,OAAOE,EAAG,WAAjEjS,KAAgFmS,GAAhFnS,KAAuFoS,GAAG,CAACC,MAAM,CAACC,qBAAqB,UAAUC,wBAAwB,mBAAmBC,sBAAsB,iBAAiBC,sBAAsB,mBAAmB,WAA5PzS,KAA2Q0S,WAA3Q1S,KAA6R2S,YAAY,CAAzS3S,KAA8S4S,GAAG,WAAjT5S,KAAgU6S,GAAG,KAAKZ,EAAG,WAAW,CAACa,KAAK,WAAW,CAAvW9S,KAA4W4S,GAAG,YAAY,IAAI,KAC3Y,M;;;;;;;;;;;;;;;;;;;;;OGuBPG,a,gBCxBf,WAEezC,KACdqB,QAAS,CACR7J,MACAL,S,cCLF1F,EAAOC,QAAUV,EAAQ,M,gBCGzB,IAAIkJ,EAAU9D,EAAQ,IACA,iBAAZ8D,IAAsBA,EAAU,CAAC,CAACzI,EAAO6E,EAAI4D,EAAS,MAC7DA,EAAQmG,SAAQ5O,EAAOC,QAAUwI,EAAQmG,WAElCjK,EAAQ,GAAkEyJ,SACnE,WAAY3F,KAAe,K,yDCgC7BwI,G,KAVG,SAAS9J,EAAShH,GAEnC,IADA,IAAImH,EAASH,EAAQ+J,QACd5J,GAAQ,CACd,GAAIA,EAAOM,SAASzH,OAASA,EAC5B,OAAOmH,EAERA,EAASA,EAAO4J,WCXH3C,KACd4C,OAAQ,CAACC,KACTC,MAAO,CAINC,KAAM,CACLpF,KAAMqF,OACNnD,QAAS,IAKVoD,MAAO,CACNtF,KAAMqF,OACNnD,QAAS,IAKVqD,gBAAiB,CAChBvF,KAAMgB,QACNkB,YAKDsD,UAAW,CACVxF,KAAMqF,OACNnD,QAAS,KAIXsB,SAAU,CACTiC,UADS,WAER,IACC,OAAO,IAAIC,IAAI3T,KAAKqT,MACnB,MAAOO,GACR,YAKHjC,QAAS,CACRkC,QADQ,SACAC,GAOP,GAFA9T,KAAK+T,MAAM,QAASD,GAEhB9T,KAAKwT,gBAAiB,CACzB,IAAMnK,EAAS2J,EAAUhT,KAAM,WAC3BqJ,GAAUA,EAAO2K,WACpB3K,EAAO2K,iB,cC/EZjS,EAAOC,QAAUV,EAAQ,M,6DCwDV2S,IA1BM,SAACC,EAAOC,EAASC,GACrC,YAAIF,EAIJ,IAAK,IAAItQ,EAAQsQ,EAAMvQ,OAAS,EAAGC,GAAS,EAAGA,IAAS,CACvD,IAAMyQ,EAAOH,EAAMtQ,GAEb0Q,GAAiBD,EAAKE,kBAAoBF,EAAKG,MAAsC,IAA/BL,EAAQM,QAAQJ,EAAKG,KAC3EE,IAAmBL,EAAKE,kBAAyD,iBAA9BF,EAAKE,iBAAiBC,IACzEG,EAAuBD,IAAkE,IAAhDP,EAAQM,QAAQJ,EAAKE,iBAAiBC,MAGjFF,IAAkBI,GAAkBC,MAGnCL,GAAiBK,IACpBzD,IAAIC,KAAKC,KAATF,UAAiBoD,EAAgBD,EAAKG,IAAMH,EAAKE,iBAAiBC,IAAlEtD,sCAAmGkD,EAAGzK,SAASzH,KAA/GgP,cAAiIkD,GAIlIF,EAAMzO,OAAO7B,EAAO,O,cCnDvB7B,EAAOC,QAAUV,EAAQ,M,kBCAzBS,EAAOC,QAAUV,EAAQ,M,cCAzBS,EAAOC,QAAUV,EAAQ,M,mCCAzBoF;;;;;;;;;;;;;;;;;;;;;OAuBekO,YAAf,G,iBCpBA,IAAIpK,EAAU9D,EAAQ,IACA,iBAAZ8D,IAAsBA,EAAU,CAAC,CAACzI,EAAO6E,EAAI4D,EAAS,MAC7DA,EAAQmG,SAAQ5O,EAAOC,QAAUwI,EAAQmG,WAElCjK,EAAQ,GAAkEyJ,SACnE,WAAY3F,KAAe,K,iBCN5CxI,EADkC0E,EAAQ,EAARA,EACxBmO,IAEFjJ,KAAK,CAAC7J,EAAO6E,EAAI,4tDAA6tD,KAEtvD7E,EAAOC,QAAUA,G,wGCNjB,I,iJC4KA,OACA,eACA,iBACA,cACA,aACA,cACA,eACA,kBACA,aACA,sBCrL6L8S,EDkM7L,CACA5S,eAEA6S,YACAC,mBAGAnD,YACAkB,mBAGAK,OAIA6B,MACAhH,aACAkC,YAMA+E,WACAjH,aACAkC,YAMAgF,WACAlH,YACAkC,cAMAiF,SACAnH,aACAkC,YAQAkF,aACApH,YACAkC,iDAMAsD,WACAxF,YACAkC,gCAMAmF,WACArH,YACAkC,kBAMAoF,mBACAtH,aACAkC,2DAMAqF,WACAvH,YACAkC,iBAIAhQ,KAvFA,WAwFA,OACAsV,WACAC,iBACAC,aACAC,+BAIAC,0BAIApE,UAKAqE,mBALArE,WAMA,8BAOAsE,oBAbAtE,WAcA,gCACA,gCAMAuE,iBArBAvE,WAsBA,wBAQAwE,YA9BAxE,WA+BA,wBACAzR,iBACA,IAOAkW,mBAxCAzE,WAyCA,kEACA,iDACA,oBACA,OACA0E,OACAC,2BACA3U,+BACA4U,yCAGA,sBACA,OACAF,iBACAlQ,uBACAqQ,6BACAD,yCAGA,sBACA,OACAF,YACAE,yCAKA,aAIAE,iBAvEA9E,WAwEA,8BACAzR,wCACAA,kDACAA,wDAEAwW,wBA7EA/E,WA8EA,2CAEAgF,iBAhFAhF,WAiFA,oEACAiF,0DACA,mCAIAC,OAEA1B,KAFA0B,SAEA1B,GACA2B,kBAIA5W,iBAGA6W,YArMA,WAuMA7W,mBAGAoH,yCAEAmK,aA5MA,WAoNAvR,mBACAoH,yCAGAuK,SAEAmF,SAFAnF,SAEAmF,GACA9W,cAIAA,eAMAA,6BAKAA,mBAEAA,iBAEAgU,UAtBArC,SAsBAqC,GACAhU,cAIAA,eAMAA,6BAKAA,oBAGAA,eACAA,kBAGAA,gCAGA+W,OAhDApF,SAgDAoF,cACA/W,2BACAgX,0BASAC,mBA3DAtF,SA2DAsF,GACA,sCAIA,6BACA,MACA,sBApSA,cAqSA,MACA,IACAtB,E,inBAAAA,CADA,iCAtSA,eAuSAA,WACAA,OACA3V,kBACAA,wBAKAkX,oBA7EAvF,WA8EA,iDACAwF,GACAA,8BAGAC,YAnFAzF,WAqFA,uCAvTA,cAuTA,iBACA,MACA3R,2BACA,6BACAqX,UACAC,GACAA,4BAIAC,oBA/FA5F,SA+FA4F,GACAvX,cACA,oBAEAA,kBAEAA,uBACAA,mCAEAA,qBAGAwX,gBA3GA7F,SA2GA6F,GACA,gBACA,uCA/UA,cA+UA,SACAxX,oBAEAA,kBAEAA,uBACAA,mCAEAA,qBAGAyX,iBAxHA9F,SAwHA8F,GACAzX,cACAA,uBACAA,kBACAA,qBAGA0X,gBA/HA/F,SA+HA+F,GACA1X,cACAA,uBACAA,0CApWA,cAoWAA,SACAA,qBAIA2X,eAvIAhG,SAuIAgG,GACA7D,IACAA,mBACAA,sBAMA8D,gBAhJAjG,SAgJAiG,GACA5X,uBACAA,0BAGA6X,YArJAlG,WAuJA3R,iG,iDDjjBa,WACb,IAAI8X,EACAC,EAAI/X,KAAS+R,EAAGgG,EAAI/F,eAAmBC,EAAG8F,EAAI7F,MAAMD,IAAIF,EAAG,OAAQgG,EAAIhC,sBAAwBgC,EAAI7C,UAAWjD,EAAG,UAAU8F,EAAI3F,GAAG,CAAC2C,WAAW,CAAC,CAAC7S,KAAK,UAAU8V,QAAQ,iBAAiB3T,MAAO0T,EAAI9B,YAAgB,KAAEgC,WAAW,mBAAmBC,UAAU,CAACC,WAAeC,YAAY,kCAAkCC,MAAM,CAACN,EAAI9B,YAAY5C,KAAM0E,EAAItB,kBAAkBpE,MAAM,CAACiG,IAAM,uBAAuBC,GAAGR,EAAIS,GAAG,GAAG,CAACT,EAAIvB,wBAAwBuB,EAAIH,mBAAmB,UAAUG,EAAI7B,uBAA0B,CAACjE,EAAG,OAAO,CAACI,MAAM,CAACoG,iBAAmBC,OAAS,KAAK,CAACX,EAAInF,GAAG,YAAY,KAAKX,EAAG,MAAM,CAAC8C,WAAW,CAAC,CAAC7S,KAAK,OAAO8V,QAAQ,SAAS3T,MAAO0T,EAAIjC,oBAAsBiC,EAAI7C,UAAW+C,WAAW,oCAAoCG,YAAY,cAAcC,MAAM,CAACM,oBAAqBZ,EAAIrC,SAAS,CAACzD,EAAG,UAAU,CAACI,MAAM,CAACuG,MAAQ,EAAEC,mBAAqB5D,KAAO8C,EAAIrC,OAAOJ,UAAYyC,EAAIzC,UAAUwD,qBAAqBf,EAAIxC,kBAAkBC,UAAYuC,EAAIvC,WAAW+C,GAAG,CAACQ,cAAc,SAASC,GAAQjB,EAAIrC,OAAOsD,GAAQC,KAAOlB,EAAIjB,SAASoC,aAAanB,EAAIhB,OAAOoC,KAAOpB,EAAI/D,YAAY,CAAC/B,EAAG,SAAS,CAACmH,IAAI,aAAahB,YAAY,+BAA+BC,OAAQP,EAAO,GAAIA,EAAKC,EAAI1C,gBAAqByC,EAAK,uCAA0CC,EAAI5C,UAAW2C,EAAK,oCAAuCC,EAAI3C,QAAS0C,GAAOzF,MAAM,CAACS,KAAO,UAAUuD,aAAa0B,EAAItE,UAAU4F,gBAAgB,OAAOC,gBAAgBvB,EAAInC,SAAS2D,gBAAgBxB,EAAIrC,QAAQ5C,KAAK,WAAW,CAACiF,EAAIlF,GAAG,WAAWkF,EAAIyB,GAAGzB,EAAI5C,WAAW,YAAY4C,EAAIlF,GAAG,KAAKZ,EAAG,MAAM,CAAC8C,WAAW,CAAC,CAAC7S,KAAK,OAAO8V,QAAQ,SAAS3T,MAAO0T,EAAU,OAAEE,WAAW,WAAWmB,IAAI,OAAOf,MAAM,CAAEpD,KAAM8C,EAAIrC,QAASrD,MAAM,CAACoH,SAAW,MAAMlB,GAAG,CAACmB,QAAU,CAAC,SAASV,GAAQ,OAAIA,EAAO/K,KAAKwG,QAAQ,QAAQsD,EAAI4B,GAAGX,EAAOY,QAAQ,KAAK,GAAGZ,EAAO7U,IAAI,CAAC,KAAK,aAA+B6U,EAAOa,SAASb,EAAOc,UAAUd,EAAOe,QAAQf,EAAOgB,QAAjE,KAAgGjC,EAAIR,oBAAoByB,IAAS,SAASA,GAAQ,OAAIA,EAAO/K,KAAKwG,QAAQ,QAAQsD,EAAI4B,GAAGX,EAAOY,QAAQ,OAAO,GAAGZ,EAAO7U,IAAI,CAAC,OAAO,eAAiC6U,EAAOa,SAASb,EAAOc,UAAUd,EAAOe,QAAQf,EAAOgB,QAAjE,KAAgGjC,EAAIP,gBAAgBwB,IAAS,SAASA,GAAQ,OAAIA,EAAO/K,KAAKwG,QAAQ,QAAQsD,EAAI4B,GAAGX,EAAOY,QAAQ,MAAM,EAAEZ,EAAO7U,IAAI,QAA0B6U,EAAOa,SAASb,EAAOc,UAAUd,EAAOe,QAAQf,EAAOgB,QAAjE,KAAgGjC,EAAIP,gBAAgBwB,IAAS,SAASA,GAAQ,OAAIA,EAAO/K,KAAKwG,QAAQ,QAAQsD,EAAI4B,GAAGX,EAAOY,QAAQ,MAAM,EAAEZ,EAAO7U,IAAI,OAAgB,KAAW6U,EAAOc,SAA4Bd,EAAOa,SAASb,EAAOe,QAAQf,EAAOgB,QAAiB,KAAcjC,EAAIR,oBAAoByB,GAAvG,MAAgH,SAASA,GAAQ,OAAIA,EAAO/K,KAAKwG,QAAQ,QAAQsD,EAAI4B,GAAGX,EAAOY,QAAQ,iBAAoBZ,EAAO7U,aAAkC6U,EAAOa,SAASb,EAAOc,UAAUd,EAAOe,QAAQf,EAAOgB,QAAjE,KAAgGjC,EAAIN,iBAAiBuB,IAAS,SAASA,GAAQ,OAAIA,EAAO/K,KAAKwG,QAAQ,QAAQsD,EAAI4B,GAAGX,EAAOY,QAAQ,mBAAsBZ,EAAO7U,aAAkC6U,EAAOa,SAASb,EAAOc,UAAUd,EAAOe,QAAQf,EAAOgB,QAAjE,KAAgGjC,EAAIL,gBAAgBsB,IAAS,SAASA,GAAQ,OAAIA,EAAO/K,KAAKwG,QAAQ,QAAQsD,EAAI4B,GAAGX,EAAOY,QAAQ,MAAM,GAAGZ,EAAO7U,IAAI,CAAC,MAAM,YAA8B6U,EAAOa,SAASb,EAAOc,UAAUd,EAAOe,QAAQf,EAAOgB,QAAjE,MAAyFhB,EAAOiB,iBAAwBlC,EAAI/D,UAAUgF,MAAUkB,UAAYnC,EAAId,qBAAqB,CAAChF,EAAG,KAAK,CAACI,MAAM,CAAC3G,GAAKqM,EAAInC,SAAS6D,SAAW,OAAO,CAAE1B,EAAU,OAAE,CAACA,EAAInF,GAAG,YAAYmF,EAAIoC,MAAM,QAAQ,KAC3/G,M,oFGAtB,IAAI3P,EAAU9D,EAAQ,KACA,iBAAZ8D,IAAsBA,EAAU,CAAC,CAACzI,EAAO6E,EAAI4D,EAAS,MAC7DA,EAAQmG,SAAQ5O,EAAOC,QAAUwI,EAAQmG,WAElCjK,EAAQ,GAAkEyJ,SACnE,WAAY3F,KAAe,K;;;;;;;;;;;;;;;;;;;;;;AC4B7B4P,IAdQ,SAACC,GAElBA,EAAUC,QAEHC,MAAMC,QAAQH,EAAUC,WACnCD,EAAUC,QAAU,CAACD,EAAUC,UAF/BD,EAAUC,QAAU,GAMrBD,EAAUC,QAAQ1O,MAAK,WACtB5L,KAAKsR,IAAI9B,aAATxP,iBAAgCyQ,WAAiB,S,gBChCnD,mBAAga,G,iBCEhazO,EADkC0E,EAAQ,EAARA,EACxBmO,IAEFjJ,KAAK,CAAC7J,EAAO6E,EAAI,21DAA41D,KAEr3D7E,EAAOC,QAAUA,G,8CCNjBD,EAAOC,QAAUV,EAAQ,M,uBCAzB,ICAkMmZ,EC2FlM,CACAvY,oBAEAgR,Q,MAAAA,GAEAE,OAIAsH,UACAzM,aACAkC,aAGAsB,UAKAkJ,YALAlJ,WAMA,wB,kDF/Ga,WAAa,IAAIsG,EAAI/X,KAAS+R,EAAGgG,EAAI/F,eAAmBC,EAAG8F,EAAI7F,MAAMD,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACmG,YAAY,SAASC,MAAM,CAAEuC,mBAAoB7C,EAAI2C,WAAY,CAACzI,EAAG,SAAS,CAACmG,YAAY,gBAAgBC,MAAM,CAAEwC,UAAW9C,EAAI4C,aAActI,MAAM,CAACgE,aAAa0B,EAAItE,WAAW8E,GAAG,CAACuC,MAAQ/C,EAAIlE,UAAU,CAACkE,EAAInF,GAAG,OAAO,CAACX,EAAG,OAAO,CAACmG,YAAY,sBAAsBC,MAAM,CAACN,EAAIrE,UAAY,2BAA6BqE,EAAI1E,MAAM0H,MAAM,CAAGC,gBAAiBjD,EAAIrE,UAAa,OAASqE,EAAI1E,KAAO,IAAO,UAAY0E,EAAIlF,GAAG,KAAMkF,EAAS,MAAE9F,EAAG,IAAI,CAACA,EAAG,SAAS,CAACmG,YAAY,wBAAwB,CAACL,EAAIlF,GAAG,aAAakF,EAAIyB,GAAGzB,EAAIxE,OAAO,cAAcwE,EAAIlF,GAAG,KAAKZ,EAAG,MAAM8F,EAAIlF,GAAG,KAAKZ,EAAG,OAAO,CAACmG,YAAY,0BAA0B6C,SAAS,CAACC,YAAcnD,EAAIyB,GAAGzB,EAAI9G,WAAY8G,EAAc,WAAE9F,EAAG,IAAI,CAACmG,YAAY,0BAA0B6C,SAAS,CAACC,YAAcnD,EAAIyB,GAAGzB,EAAI9G,SAASgB,EAAG,OAAO,CAACmG,YAAY,uBAAuB,CAACL,EAAIlF,GAAGkF,EAAIyB,GAAGzB,EAAI9G,SAAS8G,EAAIlF,GAAG,KAA+BkF,EAAIoC,MAAM,OACx9B,M,oFGDtB,mBAAwb,G,gBCCxb,IAAItF,EAA8BnO,EAAQ,GACtCyU,EAAkCzU,EAAQ,IAC1C0U,EAAgC1U,EAAQ,IACxC2U,EAAgC3U,EAAQ,IACxC4U,EAAgC5U,EAAQ,IACxC6U,EAAgC7U,EAAQ,IAC5C1E,EAAU6S,MACV,IAAI2G,EAAqCL,EAAgCC,GACrEK,EAAqCN,EAAgCE,GACrEK,EAAqCP,EAAgCG,GACrEK,EAAqCR,EAAgCI,GAEzEvZ,EAAQ4J,KAAK,CAAC7J,EAAO6E,EAAI,yDAA6D4U,EAAqC,aAAeA,EAAqC,qCAAyCC,EAAqC,wBAA4BC,EAAqC,4BAAgCC,EAAqC,mnIAAgsI,KAEnkJ5Z,EAAOC,QAAUA,G,0BCZjB,IAAIwI,EAAU9D,EAAQ,KACA,iBAAZ8D,IAAsBA,EAAU,CAAC,CAACzI,EAAO6E,EAAI4D,EAAS,MAC7DA,EAAQmG,SAAQ5O,EAAOC,QAAUwI,EAAQmG,WAElCjK,EAAQ,GAAkEyJ,SACnE,WAAY3F,KAAe,K,sBCR5CzI,EAAOC,QAAUV,EAAQ,M,gBCAzBoF;;;;;;;;;;;;;;;;;;;;;OAuBekV,YAAf,G,6CCvBA,mBAA6b,G,iBCE7b5Z,EADkC0E,EAAQ,EAARA,EACxBmO,IAEFjJ,KAAK,CAAC7J,EAAO6E,EAAI,gsCAAisC,KAE1tC7E,EAAOC,QAAUA,G;;;;;;;;;;;;;;;;;;;;;OCgBF,SAAS6Z,EAAMC,EAAUlD,GACvC,IAAIlN,EACAqQ,EAEAC,EADAC,EAAYrD,EAGhB5Y,KAAK0F,MAAQ,WACZsW,KACAD,EAAU,IAAIG,KACdxQ,EAAKyQ,WAAWL,EAAUG,IAG3Bjc,KAAKoc,MAAQ,WACZJ,KACAK,aAAa3Q,GACbuQ,GAAa,IAAIC,KAASH,GAG3B/b,KAAKsc,MAAQ,WACZN,KACAK,aAAa3Q,GACbuQ,EAAY,GAGbjc,KAAKuc,YAAc,WAMlB,OALIP,IACHhc,KAAKoc,QACLpc,KAAK0F,SAGCuW,GAGRjc,KAAKwc,gBAAkB,WACtB,OAAOR,GAGRhc,KAAK0F,QC8HN,ICzL2L+W,EDyL3L,CACAva,aAEA2P,YACA+C,kBACAgH,wBAGA7G,YACAC,mBAGA9B,aAEAE,OAIAG,OACAtF,YACAkC,YAKAuM,aACAzO,aACAkC,YAKAwM,SACA1O,aACAkC,YAKAyM,eACA3O,aACAkC,YAKA0M,iBACA5O,aACAkC,YAEA2M,gBACA7O,YACAkC,aAKA4M,gBACA9O,YACAkC,aAKA6M,iBACA/O,aACAkC,YAKA8M,aACAhP,aACAkC,YAEA+M,kBACAjP,aACAkC,YAEAgN,MACAlP,YACAkC,iBACAiN,sBACA,kDAMAC,UACApP,aACAkC,YAGAmN,MACArP,aACAkC,aAIAhQ,KApGA,WAqGA,OACAod,QACAC,aACAC,aACAC,sBACAC,WACAC,wBAIAnM,UACAoM,oBADApM,WAEA,sDAEAqM,eAJArM,WAKA,oFAIAkF,OAKAqG,gBALArG,SAKAqG,GACAhd,wBACA+d,EACA/d,8BAEAA,iCAMA6W,YAxIA,WAyIArQ,uDAEAwX,cA3IA,WA4IAxX,yDACAxG,oCACAA,mBAEAsa,QAhJA,WAgJAA,WACAta,kBAGAA,uBAEAA,iCACAA,+CACAgX,oBAIA1K,8DAEA2R,UA9JA,WA+JAje,mBAGA2R,SAEAuM,SAFAvM,SAEAuM,GAEAle,mBAIAG,GACAH,sBAEAA,2BAGAme,KAdAxM,SAcAwM,GAEAne,eAIAG,GACAH,sBAEAA,uBAGAoe,MA1BAzM,SA0BAyM,cAEApe,gBACAA,kBAGAmc,uBAIAkC,qBACA,OAKAC,cA1CA3M,SA0CA2M,GACA,kBACA,QACAte,iBACA,MACA,QACA,QACAA,aACA,MACA,QACAA,gBAIAue,YAxDA5M,SAwDA4M,GACAve,mBACA,qBAEAA,aACA,uBAEAA,mBAIAwe,gBAnEA7M,WAmEA6M,WACAxe,wBACAA,kBACAqc,oCACArc,6CACAye,iBACAze,uBAOA0e,gBAhFA/M,WAiFA3R,2BACAA,aACAA,uBAEAA,8BAOA2e,eA5FAhN,WA6FA3R,2BACAA,6BACAA,2BACAA,2BAOA4e,gBAvGAjN,WAuGAiN,WACA5e,gBACAA,aACAA,wCACA6e,SACAA,sBACA7e,sBAEAA,gBACAA,+BAOA8e,sBAvHAnN,WAwHA3R,uBACAA,iC,mDEpda,WAAa,IAAI+X,EAAI/X,KAAS+R,EAAGgG,EAAI/F,eAAmBC,EAAG8F,EAAI7F,MAAMD,IAAIF,EAAG,OAAOE,EAAG,aAAa,CAACI,MAAM,CAACnQ,KAAO,SAAS,CAAC+P,EAAG,MAAM,CAACmH,IAAI,OAAOhB,YAAY,aAAaC,MAAM,CAAE0G,mBAAoBhH,EAAIuF,MAAO/E,GAAG,CAACuC,MAAQ/C,EAAIyG,gBAAgBtE,UAAYnC,EAAIyG,gBAAgBQ,UAAYjH,EAAIyG,kBAAkB,CAACvM,EAAG,aAAa,CAACI,MAAM,CAACnQ,KAAO,oBAAoB,CAAC+P,EAAG,MAAM,CAAC8C,WAAW,CAAC,CAAC7S,KAAK,OAAO8V,QAAQ,SAAS3T,OAAQ0T,EAAI0F,UAAWxF,WAAW,eAAeG,YAAY,eAAeC,MAAM,CACtf4G,UAAWlH,EAAI0F,YACb,CAAuB,KAArB1F,EAAIxE,MAAM/R,OAAeyQ,EAAG,MAAM,CAACmG,YAAY,eAAe,CAACL,EAAIlF,GAAG,eAAekF,EAAIyB,GAAGzB,EAAIxE,OAAO,gBAAgBwE,EAAIoC,KAAKpC,EAAIlF,GAAG,KAAKZ,EAAG,MAAM,CAACmG,YAAY,cAAc,CAAEL,EAAI4E,SAAW5E,EAAI8E,gBAAiB5K,EAAG,SAAS,CAAC8C,WAAW,CAAC,CAAC7S,KAAK,UAAU8V,QAAQ,iBAAiB3T,MAAO0T,EAAkB,eAAEE,WAAW,iBAAiBC,UAAU,CAACC,WAAeC,YAAY,aAAaC,MAAM,CAAE6G,qBAAsBnH,EAAIiF,iBAAkBzE,GAAG,CAACuC,MAAQ/C,EAAI2G,kBAAkB,CAACzM,EAAG,MAAM,CAACoG,MAAM,CAACN,EAAI4F,QAAU,aAAe,cAAc,CAAC1L,EAAG,OAAO,CAACmG,YAAY,mBAAmB,CAACL,EAAIlF,GAAG,qBAAqBkF,EAAIyB,GAAGzB,EAAI+F,gBAAgB,wBAAwB/F,EAAIlF,GAAG,KAAMkF,EAAW,QAAE9F,EAAG,MAAM,CAACmG,YAAY,gBAAgB/F,MAAM,CAAC8M,OAAS,KAAKC,MAAQ,OAAO,CAACnN,EAAG,SAAS,CAACmG,YAAY,wBAAwB/F,MAAM,CAACgN,OAAS,QAAQC,eAAe,IAAIC,KAAO,cAAc7e,EAAI,KAAK8e,GAAK,KAAKC,GAAK,UAAU1H,EAAIoC,OAAOpC,EAAIoC,KAAKpC,EAAIlF,GAAG,KAAKZ,EAAG,UAAU,CAACmG,YAAY,kBAAkB,CAACL,EAAInF,GAAG,YAAY,GAAGmF,EAAIlF,GAAG,KAAMkF,EAAY,SAAE9F,EAAG,UAAU,CAACmG,YAAY,gBAAgB,CAACnG,EAAG,eAAe,CAACI,MAAM,CAACgB,KAAO,cAAckF,GAAG,CAACuC,MAAQ/C,EAAIqG,QAAQ,CAACrG,EAAIlF,GAAG,mBAAmBkF,EAAIyB,GAAGzB,EAAItQ,EAAE,UAAU,qBAAqB,GAAGsQ,EAAIoC,MAAM,OAAOpC,EAAIlF,GAAG,KAAKZ,EAAG,aAAa,CAACI,MAAM,CAACnQ,KAAO6V,EAAI8F,sBAAsB,CAAC5L,EAAG,MAAM,CAAC8C,WAAW,CAAC,CAAC7S,KAAK,OAAO8V,QAAQ,SAAS3T,MAAO0T,EAAa,UAAEE,WAAW,cAAcG,YAAY,gBAAgBC,MAAM,CACj6C,kBAAoBN,EAAIoF,KACzBpF,EAAImF,iBAAmB,mCAAqC,IAC3D3E,GAAG,CAACuC,MAAQ,SAAS9B,GAAQ,OAAGA,EAAOvX,SAAWuX,EAAO0G,cAAuB,KAAc3H,EAAIqG,MAAMpF,MAAW,CAAC/G,EAAG,aAAa,CAACI,MAAM,CAACnQ,KAAO,oBAAoB,CAAC+P,EAAG,IAAI,CAAC8C,WAAW,CAAC,CAAC7S,KAAK,OAAO8V,QAAQ,SAAS3T,MAAO0T,EAAI2E,cAAgB3E,EAAI0F,UAAWxF,WAAW,8BAA8BG,YAAY,OAAOC,MAAM,CACrU4G,UAAWlH,EAAI0F,YAAc1F,EAAI2E,aAChCnE,GAAG,CAACuC,MAAQ/C,EAAImG,WAAW,CAACjM,EAAG,MAAM,CAACmG,YAAY,sBAAsB,CAACnG,EAAG,OAAO,CAACmG,YAAY,mBAAmB,CAACL,EAAIlF,GAAG,qBAAqBkF,EAAIyB,GAAGzB,EAAItQ,EAAE,aAAa,4BAA4BsQ,EAAIlF,GAAG,KAAKZ,EAAG,MAAM,CAACmG,YAAY,mBAAmB,CAACL,EAAInF,GAAG,YAAY,GAAGmF,EAAIlF,GAAG,KAAKZ,EAAG,aAAa,CAACI,MAAM,CAACnQ,KAAO,oBAAoB,CAAC+P,EAAG,IAAI,CAAC8C,WAAW,CAAC,CAAC7S,KAAK,OAAO8V,QAAQ,SAAS3T,MAAO0T,EAAI4E,UAAY5E,EAAI0F,UAAWxF,WAAW,0BAA0BG,YAAY,OAAOC,MAAM,CACze4G,UAAWlH,EAAI0F,YAAc1F,EAAI4E,SAChCpE,GAAG,CAACuC,MAAQ/C,EAAIoG,OAAO,CAAClM,EAAG,MAAM,CAACmG,YAAY,kBAAkB,CAACnG,EAAG,OAAO,CAACmG,YAAY,mBAAmB,CAACL,EAAIlF,GAAG,qBAAqBkF,EAAIyB,GAAGzB,EAAItQ,EAAE,SAAS,6BAA6B,MAAM,OACnL,M;;;;;;;;;;;;;;;;;;;;;OCctB2S,YAAeuF,GAEAA,a,yDC1Bf,oBAAsb,G,gBCCtb,IAAI9K,EAA8BnO,EAAQ,GACtCyU,EAAkCzU,EAAQ,IAC1C0U,EAAgC1U,EAAQ,IACxC2U,EAAgC3U,EAAQ,IACxC4U,EAAgC5U,EAAQ,IACxC6U,EAAgC7U,EAAQ,IAC5C1E,EAAU6S,MACV,IAAI2G,EAAqCL,EAAgCC,GACrEK,EAAqCN,EAAgCE,GACrEK,EAAqCP,EAAgCG,GACrEK,EAAqCR,EAAgCI,GAEzEvZ,EAAQ4J,KAAK,CAAC7J,EAAO6E,EAAI,yDAA6D4U,EAAqC,aAAeA,EAAqC,qCAAyCC,EAAqC,wBAA4BC,EAAqC,4BAAgCC,EAAqC,46QAA+/Q,KAEl4R5Z,EAAOC,QAAUA,M3EdM,YAAZA,IAA0C,YAAXD,GACxCA,EAAOC,QAAUuE,KAEjBqZ,EAA2B,QAA3BA,iE;;;;;qC4ECF,SAAUpZ,EAAQ8F,EAAUuT,EAAYC,GAGxC,IA+FIC,EA/FAC,EAAkB,CAAC,GAAI,SAAU,MAAO,KAAM,KAAM,KACpDC,EAAe3T,EAAS0B,cAAc,OAItCkS,EAAQ3a,KAAK2a,MACbC,EAAM5a,KAAK4a,IACXC,EAAMlE,KAAKkE,IASf,SAASC,EAAkBC,EAAIC,EAASrX,GACpC,OAAOiT,WAAWqE,EAAOF,EAAIpX,GAAUqX,GAY3C,SAASE,EAAeC,EAAKJ,EAAIpX,GAC7B,QAAIqR,MAAMC,QAAQkG,KACdC,EAAKD,EAAKxX,EAAQoX,GAAKpX,IAChB,GAWf,SAASyX,EAAKxS,EAAKyS,EAAU1X,GACzB,IAAItC,EAEJ,GAAKuH,EAIL,GAAIA,EAAI0S,QACJ1S,EAAI0S,QAAQD,EAAU1X,QACnB,QAvDX,IAuDeiF,EAAIxK,OAEX,IADAiD,EAAI,EACGA,EAAIuH,EAAIxK,QACXid,EAASnc,KAAKyE,EAASiF,EAAIvH,GAAIA,EAAGuH,GAClCvH,SAGJ,IAAKA,KAAKuH,EACNA,EAAIlG,eAAerB,IAAMga,EAASnc,KAAKyE,EAASiF,EAAIvH,GAAIA,EAAGuH,GAYvE,SAAS2S,EAAUC,EAAQ7e,EAAM8e,GAC7B,IAAIC,EAAqB,sBAAwB/e,EAAO,KAAO8e,EAAU,SACzE,OAAO,WACH,IAAIE,EAAI,IAAI1U,MAAM,mBACd2U,EAAQD,GAAKA,EAAEC,MAAQD,EAAEC,MAAM/f,QAAQ,kBAAmB,IACzDA,QAAQ,cAAe,IACvBA,QAAQ,6BAA8B,kBAAoB,sBAE3DggB,EAAM5a,EAAO6a,UAAY7a,EAAO6a,QAAQjQ,MAAQ5K,EAAO6a,QAAQD,KAInE,OAHIA,GACAA,EAAI3c,KAAK+B,EAAO6a,QAASJ,EAAoBE,GAE1CJ,EAAOO,MAAMthB,KAAMsE,YAa9Byb,EADyB,mBAAlB3Y,OAAO2Y,OACL,SAAgBte,GACrB,GAAIA,QACA,MAAM,IAAI6E,UAAU,8CAIxB,IADA,IAAIib,EAASna,OAAO3F,GACXmC,EAAQ,EAAGA,EAAQU,UAAUX,OAAQC,IAAS,CACnD,IAAIwH,EAAS9G,UAAUV,GACvB,GAAIwH,QACA,IAAK,IAAIoW,KAAWpW,EACZA,EAAOnD,eAAeuZ,KACtBD,EAAOC,GAAWpW,EAAOoW,IAKzC,OAAOD,GAGFna,OAAO2Y,OAWpB,IAAI0B,EAASX,GAAU,SAAgBY,EAAMC,EAAKC,GAG9C,IAFA,IAAIld,EAAO0C,OAAO1C,KAAKid,GACnB/a,EAAI,EACDA,EAAIlC,EAAKf,UACPie,GAAUA,QAtIvB,IAsIgCF,EAAKhd,EAAKkC,OAC9B8a,EAAKhd,EAAKkC,IAAM+a,EAAIjd,EAAKkC,KAE7BA,IAEJ,OAAO8a,IACR,SAAU,iBASTE,EAAQd,GAAU,SAAeY,EAAMC,GACvC,OAAOF,EAAOC,EAAMC,GAAK,KAC1B,QAAS,iBAQZ,SAASE,EAAQC,EAAOC,EAAMC,GAC1B,IACIC,EADAC,EAAQH,EAAK7e,WAGjB+e,EAASH,EAAM5e,UAAYkE,OAAOzE,OAAOuf,IAClCrd,YAAcid,EACrBG,EAAOE,OAASD,EAEZF,GACAjC,EAAOkC,EAAQD,GAUvB,SAASxB,EAAOF,EAAIpX,GAChB,OAAO,WACH,OAAOoX,EAAGgB,MAAMpY,EAAS5E,YAWjC,SAAS8d,EAASC,EAAKC,GACnB,MA1LgB,YA0LZ,EAAOD,GACAA,EAAIf,MAAMgB,GAAOA,EAAK,SAjMrC,EAiMkEA,GAEvDD,EASX,SAASE,EAAYC,EAAMC,GACvB,YA7MJ,IA6MYD,EAAsBC,EAAOD,EASzC,SAASE,EAAkBjhB,EAAQkhB,EAAOC,GACtCjC,EAAKkC,EAASF,IAAQ,SAAS1U,GAC3BxM,EAAOqhB,iBAAiB7U,EAAM2U,GAAS,MAU/C,SAASG,EAAqBthB,EAAQkhB,EAAOC,GACzCjC,EAAKkC,EAASF,IAAQ,SAAS1U,GAC3BxM,EAAOuhB,oBAAoB/U,EAAM2U,GAAS,MAWlD,SAASK,EAAU5O,EAAMhL,GACrB,KAAOgL,GAAM,CACT,GAAIA,GAAQhL,EACR,OAAO,EAEXgL,EAAOA,EAAK9F,WAEhB,OAAO,EASX,SAAS2U,EAAMC,EAAKC,GAChB,OAAOD,EAAI1O,QAAQ2O,IAAS,EAQhC,SAASP,EAASM,GACd,OAAOA,EAAI3hB,OAAOmD,MAAM,QAU5B,SAAS0e,EAAQ1B,EAAKyB,EAAME,GACxB,GAAI3B,EAAIlN,UAAY6O,EAChB,OAAO3B,EAAIlN,QAAQ2O,GAGnB,IADA,IAAIxc,EAAI,EACDA,EAAI+a,EAAIhe,QAAQ,CACnB,GAAK2f,GAAa3B,EAAI/a,GAAG0c,IAAcF,IAAWE,GAAa3B,EAAI/a,KAAOwc,EACtE,OAAOxc,EAEXA,IAEJ,OAAQ,EAShB,SAAS2c,EAAQpV,GACb,OAAOoM,MAAMrX,UAAUe,MAAMQ,KAAK0J,EAAK,GAU3C,SAASqV,EAAY7B,EAAKxd,EAAKsf,GAK3B,IAJA,IAAIC,EAAU,GACVC,EAAS,GACT/c,EAAI,EAEDA,EAAI+a,EAAIhe,QAAQ,CACnB,IAAI0e,EAAMle,EAAMwd,EAAI/a,GAAGzC,GAAOwd,EAAI/a,GAC9Byc,EAAQM,EAAQtB,GAAO,GACvBqB,EAAQ9X,KAAK+V,EAAI/a,IAErB+c,EAAO/c,GAAKyb,EACZzb,IAaJ,OAVI6c,IAIIC,EAHCvf,EAGSuf,EAAQD,MAAK,SAAyBG,EAAGC,GAC/C,OAAOD,EAAEzf,GAAO0f,EAAE1f,MAHZuf,EAAQD,QAQnBC,EASX,SAASI,EAAS3V,EAAKnG,GAKnB,IAJA,IAAI+b,EAAQC,EACRC,EAAYjc,EAAS,GAAGkc,cAAgBlc,EAAS/D,MAAM,GAEvD2C,EAAI,EACDA,EAAIoZ,EAAgBrc,QAAQ,CAI/B,IAFAqgB,GADAD,EAAS/D,EAAgBpZ,IACPmd,EAASE,EAAYjc,KAE3BmG,EACR,OAAO6V,EAEXpd,KASR,IAAIud,EAAY,EAUhB,SAASC,EAAoBC,GACzB,IAAIC,EAAMD,EAAQE,eAAiBF,EACnC,OAAQC,EAAIE,aAAeF,EAAIG,cAAgBje,EAGnD,IAEIke,EAAiB,iBAAkBle,EACnCme,OA1XJ,IA0X6Bb,EAAStd,EAAQ,gBAC1Coe,EAAqBF,GAJN,wCAIoCxX,KAAKD,UAAUE,WAwBlE0X,EAAW,CAAC,IAAK,KACjBC,EAAkB,CAAC,UAAW,WASlC,SAASC,EAAMC,EAASlJ,GACpB,IAAImJ,EAAOjlB,KACXA,KAAKglB,QAAUA,EACfhlB,KAAK8b,SAAWA,EAChB9b,KAAKqkB,QAAUW,EAAQX,QACvBrkB,KAAKyB,OAASujB,EAAQlc,QAAQoc,YAI9BllB,KAAKmlB,WAAa,SAASC,GACnBhD,EAAS4C,EAAQlc,QAAQuc,OAAQ,CAACL,KAClCC,EAAKrC,QAAQwC,IAIrBplB,KAAKslB,OA4DT,SAASC,EAAaP,EAASQ,EAAWC,GACtC,IAAIC,EAAcD,EAAME,SAAShiB,OAC7BiiB,EAAqBH,EAAMI,gBAAgBliB,OAC3CmiB,EAvGU,EAuGCN,GAA4BE,EAAcE,GAAuB,EAC5EG,EAAuB,GAAZP,GAA2CE,EAAcE,GAAuB,EAE/FH,EAAMK,UAAYA,EAClBL,EAAMM,UAAYA,EAEdD,IACAd,EAAQgB,QAAU,IAKtBP,EAAMD,UAAYA,EAiBtB,SAA0BR,EAASS,GAC/B,IAAIO,EAAUhB,EAAQgB,QAClBL,EAAWF,EAAME,SACjBM,EAAiBN,EAAShiB,OAGzBqiB,EAAQE,aACTF,EAAQE,WAAaC,EAAqBV,IAI1CQ,EAAiB,IAAMD,EAAQI,cAC/BJ,EAAQI,cAAgBD,EAAqBV,GACnB,IAAnBQ,IACPD,EAAQI,eAAgB,GAG5B,IAAIF,EAAaF,EAAQE,WACrBE,EAAgBJ,EAAQI,cACxBC,EAAeD,EAAgBA,EAAcE,OAASJ,EAAWI,OAEjEA,EAASb,EAAMa,OAASC,EAAUZ,GACtCF,EAAMe,UAAYpG,IAClBqF,EAAMgB,UAAYhB,EAAMe,UAAYN,EAAWM,UAE/Cf,EAAMiB,MAAQC,EAASN,EAAcC,GACrCb,EAAMmB,SAAWC,EAAYR,EAAcC,GA0B/C,SAAwBN,EAASP,GAC7B,IAAIa,EAASb,EAAMa,OACfQ,EAASd,EAAQe,aAAe,GAChCC,EAAYhB,EAAQgB,WAAa,GACjCC,EAAYjB,EAAQiB,WAAa,GA5LvB,IA8LVxB,EAAMD,WA5LE,IA4L2ByB,EAAUzB,YAC7CwB,EAAYhB,EAAQgB,UAAY,CAC5BE,EAAGD,EAAUE,QAAU,EACvBC,EAAGH,EAAUI,QAAU,GAG3BP,EAASd,EAAQe,YAAc,CAC3BG,EAAGZ,EAAOY,EACVE,EAAGd,EAAOc,IAIlB3B,EAAM0B,OAASH,EAAUE,GAAKZ,EAAOY,EAAIJ,EAAOI,GAChDzB,EAAM4B,OAASL,EAAUI,GAAKd,EAAOc,EAAIN,EAAOM,GA3ChDE,CAAetB,EAASP,GACxBA,EAAM8B,gBAAkBC,EAAa/B,EAAM0B,OAAQ1B,EAAM4B,QAEzD,IAAII,EAAkBC,EAAYjC,EAAMgB,UAAWhB,EAAM0B,OAAQ1B,EAAM4B,QACvE5B,EAAMkC,iBAAmBF,EAAgBP,EACzCzB,EAAMmC,iBAAmBH,EAAgBL,EACzC3B,EAAMgC,gBAAmBtH,EAAIsH,EAAgBP,GAAK/G,EAAIsH,EAAgBL,GAAMK,EAAgBP,EAAIO,EAAgBL,EAEhH3B,EAAMoC,MAAQzB,GAkNA1gB,EAlNyB0gB,EAAcT,SAkNhCmC,EAlN0CnC,EAmNxDkB,EAAYiB,EAAI,GAAIA,EAAI,GAAIhD,GAAmB+B,EAAYnhB,EAAM,GAAIA,EAAM,GAAIof,IAnNX,EAC3EW,EAAMsC,SAAW3B,EAsMrB,SAAqB1gB,EAAOoiB,GACxB,OAAOnB,EAASmB,EAAI,GAAIA,EAAI,GAAIhD,GAAmB6B,EAASjhB,EAAM,GAAIA,EAAM,GAAIof,GAvM/CkD,CAAY5B,EAAcT,SAAUA,GAAY,EAEjFF,EAAMwC,YAAejC,EAAQiB,UAAsCxB,EAAME,SAAShiB,OAC9EqiB,EAAQiB,UAAUgB,YAAexC,EAAME,SAAShiB,OAASqiB,EAAQiB,UAAUgB,YADtCxC,EAAME,SAAShiB,OAwC5D,SAAkCqiB,EAASP,GACvC,IAEIyC,EAAUC,EAAWC,EAAWC,EAFhCC,EAAOtC,EAAQuC,cAAgB9C,EAC/BgB,EAAYhB,EAAMe,UAAY8B,EAAK9B,UAGvC,GArNe,GAqNXf,EAAMD,YAA8BiB,EA1NrB,SAlYvB,IA4lB4E6B,EAAKJ,UAAyB,CAClG,IAAIf,EAAS1B,EAAM0B,OAASmB,EAAKnB,OAC7BE,EAAS5B,EAAM4B,OAASiB,EAAKjB,OAE7BmB,EAAId,EAAYjB,EAAWU,EAAQE,GACvCc,EAAYK,EAAEtB,EACdkB,EAAYI,EAAEpB,EACdc,EAAY/H,EAAIqI,EAAEtB,GAAK/G,EAAIqI,EAAEpB,GAAMoB,EAAEtB,EAAIsB,EAAEpB,EAC3CiB,EAAYb,EAAaL,EAAQE,GAEjCrB,EAAQuC,aAAe9C,OAGvByC,EAAWI,EAAKJ,SAChBC,EAAYG,EAAKH,UACjBC,EAAYE,EAAKF,UACjBC,EAAYC,EAAKD,UAGrB5C,EAAMyC,SAAWA,EACjBzC,EAAM0C,UAAYA,EAClB1C,EAAM2C,UAAYA,EAClB3C,EAAM4C,UAAYA,EAhElBI,CAAyBzC,EAASP,GA4MtC,IAAkB/f,EAAOoiB,EAzMrB,IAAIrmB,EAASujB,EAAQX,QACjBpB,EAAUwC,EAAMiD,SAASjnB,OAAQA,KACjCA,EAASgkB,EAAMiD,SAASjnB,QAE5BgkB,EAAMhkB,OAASA,EA/DfknB,CAAiB3D,EAASS,GAG1BT,EAAQ4D,KAAK,eAAgBnD,GAE7BT,EAAQ6D,UAAUpD,GAClBT,EAAQgB,QAAQiB,UAAYxB,EA0HhC,SAASU,EAAqBV,GAK1B,IAFA,IAAIE,EAAW,GACX/e,EAAI,EACDA,EAAI6e,EAAME,SAAShiB,QACtBgiB,EAAS/e,GAAK,CACVkiB,QAAS5I,EAAMuF,EAAME,SAAS/e,GAAGkiB,SACjCC,QAAS7I,EAAMuF,EAAME,SAAS/e,GAAGmiB,UAErCniB,IAGJ,MAAO,CACH4f,UAAWpG,IACXuF,SAAUA,EACVW,OAAQC,EAAUZ,GAClBwB,OAAQ1B,EAAM0B,OACdE,OAAQ5B,EAAM4B,QAStB,SAASd,EAAUZ,GACf,IAAIM,EAAiBN,EAAShiB,OAG9B,GAAuB,IAAnBsiB,EACA,MAAO,CACHiB,EAAGhH,EAAMyF,EAAS,GAAGmD,SACrB1B,EAAGlH,EAAMyF,EAAS,GAAGoD,UAK7B,IADA,IAAI7B,EAAI,EAAGE,EAAI,EAAGxgB,EAAI,EACfA,EAAIqf,GACPiB,GAAKvB,EAAS/e,GAAGkiB,QACjB1B,GAAKzB,EAAS/e,GAAGmiB,QACjBniB,IAGJ,MAAO,CACHsgB,EAAGhH,EAAMgH,EAAIjB,GACbmB,EAAGlH,EAAMkH,EAAInB,IAWrB,SAASyB,EAAYjB,EAAWS,EAAGE,GAC/B,MAAO,CACHF,EAAGA,EAAIT,GAAa,EACpBW,EAAGA,EAAIX,GAAa,GAU5B,SAASe,EAAaN,EAAGE,GACrB,OAAIF,IAAME,EAzTO,EA6TbjH,EAAI+G,IAAM/G,EAAIiH,GACPF,EAAI,EA7TE,EACC,EA8TXE,EAAI,EA7TI,EACE,GAsUrB,SAASP,EAAYmC,EAAIC,EAAI7V,GACpBA,IACDA,EAAQyR,GAEZ,IAAIqC,EAAI+B,EAAG7V,EAAM,IAAM4V,EAAG5V,EAAM,IAC5BgU,EAAI6B,EAAG7V,EAAM,IAAM4V,EAAG5V,EAAM,IAEhC,OAAO7N,KAAK2jB,KAAMhC,EAAIA,EAAME,EAAIA,GAUpC,SAAST,EAASqC,EAAIC,EAAI7V,GACjBA,IACDA,EAAQyR,GAEZ,IAAIqC,EAAI+B,EAAG7V,EAAM,IAAM4V,EAAG5V,EAAM,IAC5BgU,EAAI6B,EAAG7V,EAAM,IAAM4V,EAAG5V,EAAM,IAChC,OAA0B,IAAnB7N,KAAK4jB,MAAM/B,EAAGF,GAAW3hB,KAAK6jB,GA1TzCrE,EAAM7hB,UAAY,CAKd0f,QAAS,aAKT0C,KAAM,WACFtlB,KAAKqpB,MAAQ3G,EAAkB1iB,KAAKqkB,QAASrkB,KAAKqpB,KAAMrpB,KAAKmlB,YAC7DnlB,KAAKspB,UAAY5G,EAAkB1iB,KAAKyB,OAAQzB,KAAKspB,SAAUtpB,KAAKmlB,YACpEnlB,KAAKupB,OAAS7G,EAAkB0B,EAAoBpkB,KAAKqkB,SAAUrkB,KAAKupB,MAAOvpB,KAAKmlB,aAMxFqE,QAAS,WACLxpB,KAAKqpB,MAAQtG,EAAqB/iB,KAAKqkB,QAASrkB,KAAKqpB,KAAMrpB,KAAKmlB,YAChEnlB,KAAKspB,UAAYvG,EAAqB/iB,KAAKyB,OAAQzB,KAAKspB,SAAUtpB,KAAKmlB,YACvEnlB,KAAKupB,OAASxG,EAAqBqB,EAAoBpkB,KAAKqkB,SAAUrkB,KAAKupB,MAAOvpB,KAAKmlB,cA4T/F,IAAIsE,EAAkB,CAClBC,UA/Xc,EAgYdxP,UA/Xa,EAgYbyP,QA/XY,GA0YhB,SAASC,IACL5pB,KAAKqpB,KATkB,YAUvBrpB,KAAKupB,MATiB,oBAWtBvpB,KAAK6pB,SAAU,EAEf9E,EAAMzD,MAAMthB,KAAMsE,WAGtBud,EAAQ+H,EAAY7E,EAAO,CAKvBnC,QAAS,SAAmBwC,GACxB,IAAII,EAAYiE,EAAgBrE,EAAGnX,MA3ZzB,EA8ZNuX,GAAyC,IAAdJ,EAAG0E,SAC9B9pB,KAAK6pB,SAAU,GA9ZV,EAiaLrE,GAAuC,IAAbJ,EAAG2E,QAC7BvE,EAjaI,GAqaHxlB,KAAK6pB,UAraF,EAyaJrE,IACAxlB,KAAK6pB,SAAU,GAGnB7pB,KAAK8b,SAAS9b,KAAKglB,QAASQ,EAAW,CACnCG,SAAU,CAACP,GACXS,gBAAiB,CAACT,GAClB4E,YAvbW,QAwbXtB,SAAUtD,QAKtB,IAAI6E,EAAoB,CACpBC,YAzbc,EA0bdC,YAzba,EA0bbC,UAzbY,EA0bZC,cAzbe,EA0bfC,WA1be,GA8bfC,EAAyB,CACzBC,EAzcmB,QA0cnBC,EAzciB,MA0cjBC,EAzcmB,QA0cnBC,EAzcoB,UA4cpBC,EAAyB,cACzBC,GAAwB,sCAa5B,SAASC,KACL9qB,KAAKqpB,KAAOuB,EACZ5qB,KAAKupB,MAAQsB,GAEb9F,EAAMzD,MAAMthB,KAAMsE,WAElBtE,KAAK+qB,MAAS/qB,KAAKglB,QAAQgB,QAAQgF,cAAgB,GAhBnDxkB,EAAOykB,iBAAmBzkB,EAAO0kB,eACjCN,EAAyB,gBACzBC,GAAwB,6CAiB5BhJ,EAAQiJ,GAAmB/F,EAAO,CAK9BnC,QAAS,SAAmBwC,GACxB,IAAI2F,EAAQ/qB,KAAK+qB,MACbI,GAAgB,EAEhBC,EAAsBhG,EAAGnX,KAAKb,cAAchM,QAAQ,KAAM,IAC1DokB,EAAYyE,EAAkBmB,GAC9BpB,EAAcO,EAAuBnF,EAAG4E,cAAgB5E,EAAG4E,YAE3DqB,EAnfW,SAmfArB,EAGXsB,EAAajI,EAAQ0H,EAAO3F,EAAGmG,UAAW,aA/epC,EAkfN/F,IAA0C,IAAdJ,EAAG0E,QAAgBuB,GAC3CC,EAAa,IACbP,EAAMnf,KAAKwZ,GACXkG,EAAaP,EAAMpnB,OAAS,GAEb,GAAZ6hB,IACP2F,GAAgB,GAIhBG,EAAa,IAKjBP,EAAMO,GAAclG,EAEpBplB,KAAK8b,SAAS9b,KAAKglB,QAASQ,EAAW,CACnCG,SAAUoF,EACVlF,gBAAiB,CAACT,GAClB4E,YAAaA,EACbtB,SAAUtD,IAGV+F,GAEAJ,EAAMtlB,OAAO6lB,EAAY,OAKrC,IAAIE,GAAyB,CACzBC,WAlhBc,EAmhBdzM,UAlhBa,EAmhBb0M,SAlhBY,EAmhBZC,YAlhBe,GA6hBnB,SAASC,KACL5rB,KAAKspB,SATwB,aAU7BtpB,KAAKupB,MATwB,4CAU7BvpB,KAAK+b,SAAU,EAEfgJ,EAAMzD,MAAMthB,KAAMsE,WAsCtB,SAASunB,GAAuBzG,EAAInX,GAChC,IAAI6d,EAAMvI,EAAQ6B,EAAG2G,SACjBC,EAAUzI,EAAQ6B,EAAG6G,gBAMzB,OAJW,GAAPhe,IACA6d,EAAMtI,EAAYsI,EAAI5hB,OAAO8hB,GAAU,cAAc,IAGlD,CAACF,EAAKE,GA3CjBnK,EAAQ+J,GAAkB7G,EAAO,CAC7BnC,QAAS,SAAmBwC,GACxB,IAAInX,EAAOud,GAAuBpG,EAAGnX,MAOrC,GAjjBU,IA6iBNA,IACAjO,KAAK+b,SAAU,GAGd/b,KAAK+b,QAAV,CAIA,IAAIgQ,EAAUF,GAAuBpnB,KAAKzE,KAAMolB,EAAInX,GAGzC,GAAPA,GAAqC8d,EAAQ,GAAGpoB,OAASooB,EAAQ,GAAGpoB,QAAW,IAC/E3D,KAAK+b,SAAU,GAGnB/b,KAAK8b,SAAS9b,KAAKglB,QAAS/W,EAAM,CAC9B0X,SAAUoG,EAAQ,GAClBlG,gBAAiBkG,EAAQ,GACzB/B,YAtkBW,QAukBXtB,SAAUtD,QAsBtB,IAAI8G,GAAkB,CAClBT,WAvlBc,EAwlBdzM,UAvlBa,EAwlBb0M,SAvlBY,EAwlBZC,YAvlBe,GAimBnB,SAASQ,KACLnsB,KAAKspB,SARiB,4CAStBtpB,KAAKosB,UAAY,GAEjBrH,EAAMzD,MAAMthB,KAAMsE,WA0BtB,SAAS+nB,GAAWjH,EAAInX,GACpB,IAAIqe,EAAa/I,EAAQ6B,EAAG2G,SACxBK,EAAYpsB,KAAKosB,UAGrB,GAAW,EAAPne,GAA2D,IAAtBqe,EAAW3oB,OAEhD,OADAyoB,EAAUE,EAAW,GAAGC,aAAc,EAC/B,CAACD,EAAYA,GAGxB,IAAI1lB,EACA4lB,EACAP,EAAiB1I,EAAQ6B,EAAG6G,gBAC5BQ,EAAuB,GACvBhrB,EAASzB,KAAKyB,OAQlB,GALA+qB,EAAgBF,EAAWtd,QAAO,SAAS0d,GACvC,OAAOzJ,EAAUyJ,EAAMjrB,OAAQA,MAppBrB,IAwpBVwM,EAEA,IADArH,EAAI,EACGA,EAAI4lB,EAAc7oB,QACrByoB,EAAUI,EAAc5lB,GAAG2lB,aAAc,EACzC3lB,IAMR,IADAA,EAAI,EACGA,EAAIqlB,EAAetoB,QAClByoB,EAAUH,EAAerlB,GAAG2lB,aAC5BE,EAAqB7gB,KAAKqgB,EAAerlB,IAIlC,GAAPqH,UACOme,EAAUH,EAAerlB,GAAG2lB,YAEvC3lB,IAGJ,OAAK6lB,EAAqB9oB,OAInB,CAEH6f,EAAYgJ,EAActiB,OAAOuiB,GAAuB,cAAc,GACtEA,QAPJ,EAnEJ5K,EAAQsK,GAAYpH,EAAO,CACvBnC,QAAS,SAAoBwC,GACzB,IAAInX,EAAOie,GAAgB9G,EAAGnX,MAC1B8d,EAAUM,GAAW5nB,KAAKzE,KAAMolB,EAAInX,GACnC8d,GAIL/rB,KAAK8b,SAAS9b,KAAKglB,QAAS/W,EAAM,CAC9B0X,SAAUoG,EAAQ,GAClBlG,gBAAiBkG,EAAQ,GACzB/B,YA7nBW,QA8nBXtB,SAAUtD,OA+EtB,SAASuH,KACL5H,EAAMzD,MAAMthB,KAAMsE,WAElB,IAAIse,EAAUpC,EAAOxgB,KAAK4iB,QAAS5iB,MACnCA,KAAK0sB,MAAQ,IAAIP,GAAWnsB,KAAKglB,QAASpC,GAC1C5iB,KAAK4sB,MAAQ,IAAIhD,EAAW5pB,KAAKglB,QAASpC,GAE1C5iB,KAAK6sB,aAAe,KACpB7sB,KAAK8sB,YAAc,GAqCvB,SAASC,GAAcvH,EAAWwH,GAnvBhB,EAovBVxH,GACAxlB,KAAK6sB,aAAeG,EAAUnH,gBAAgB,GAAG0G,WACjDU,GAAaxoB,KAAKzE,KAAMgtB,IACL,GAAZxH,GACPyH,GAAaxoB,KAAKzE,KAAMgtB,GAIhC,SAASC,GAAaD,GAClB,IAAIN,EAAQM,EAAUnH,gBAAgB,GAEtC,GAAI6G,EAAMH,aAAevsB,KAAK6sB,aAAc,CACxC,IAAIK,EAAY,CAAChG,EAAGwF,EAAM5D,QAAS1B,EAAGsF,EAAM3D,SAC5C/oB,KAAK8sB,YAAYlhB,KAAKshB,GACtB,IAAIC,EAAMntB,KAAK8sB,YAOf3Q,YANsB,WAClB,IAAIvV,EAAIumB,EAAI1Y,QAAQyY,GAChBtmB,GAAK,GACLumB,EAAI1nB,OAAOmB,EAAG,KAnEV,OA0EpB,SAASwmB,GAAiBJ,GAEtB,IADA,IAAI9F,EAAI8F,EAAUtE,SAASI,QAAS1B,EAAI4F,EAAUtE,SAASK,QAClDniB,EAAI,EAAGA,EAAI5G,KAAK8sB,YAAYnpB,OAAQiD,IAAK,CAC9C,IAAIa,EAAIzH,KAAK8sB,YAAYlmB,GACrBymB,EAAK9nB,KAAK4a,IAAI+G,EAAIzf,EAAEyf,GAAIoG,EAAK/nB,KAAK4a,IAAIiH,EAAI3f,EAAE2f,GAChD,GAAIiG,GA9ES,IA8EeC,GA9Ef,GA+ET,OAAO,EAGf,OAAO,EArEXzL,EAAQ8K,GAAiB5H,EAAO,CAO5BnC,QAAS,SAAoBoC,EAASuI,EAAYC,GAC9C,IAAInC,EAhuBW,SAguBAmC,EAAUxD,YACrByD,EA/tBW,SA+tBAD,EAAUxD,YAEzB,KAAIyD,GAAWD,EAAUE,oBAAsBF,EAAUE,mBAAmBC,kBAA5E,CAKA,GAAItC,EACA0B,GAActoB,KAAKzE,KAAMutB,EAAYC,QAClC,GAAIC,GAAWL,GAAiB3oB,KAAKzE,KAAMwtB,GAC9C,OAGJxtB,KAAK8b,SAASkJ,EAASuI,EAAYC,KAMvChE,QAAS,WACLxpB,KAAK0sB,MAAMlD,UACXxpB,KAAK4sB,MAAMpD,aA0CnB,IAAIoE,GAAwB9J,EAAS7D,EAAalF,MAAO,eACrD8S,QA9pCJ,IA8pC0BD,GAStBE,GA4IJ,WACI,IAAKD,GACD,OAAO,EAEX,IAAIE,EAAW,GACXC,EAAcxnB,EAAOynB,KAAOznB,EAAOynB,IAAIC,SAO3C,MANA,CAAC,OAAQ,eAAgB,QAAS,QAAS,cAAe,QAAQrN,SAAQ,SAASwB,GAI/E0L,EAAS1L,IAAO2L,GAAcxnB,EAAOynB,IAAIC,SAAS,eAAgB7L,MAE/D0L,EAxJYI,GASvB,SAASC,GAAYpJ,EAAS3gB,GAC1BrE,KAAKglB,QAAUA,EACfhlB,KAAKquB,IAAIhqB,GAGb+pB,GAAYlrB,UAAY,CAKpBmrB,IAAK,SAAShqB,GAzBS,WA2BfA,IACAA,EAAQrE,KAAKsuB,WAGbT,IAAuB7tB,KAAKglB,QAAQX,QAAQtJ,OAAS+S,GAAiBzpB,KACtErE,KAAKglB,QAAQX,QAAQtJ,MAAM6S,IAAyBvpB,GAExDrE,KAAKyV,QAAUpR,EAAM+I,cAAc5L,QAMvC4M,OAAQ,WACJpO,KAAKquB,IAAIruB,KAAKglB,QAAQlc,QAAQylB,cAOlCD,QAAS,WACL,IAAI7Y,EAAU,GAMd,OALAkL,EAAK3gB,KAAKglB,QAAQwJ,aAAa,SAASC,GAChCrM,EAASqM,EAAW3lB,QAAQuc,OAAQ,CAACoJ,MACrChZ,EAAUA,EAAQvL,OAAOukB,EAAWC,sBAgEpD,SAA2BjZ,GAEvB,GAAIyN,EAAMzN,EAnHU,QAoHhB,MApHgB,OAuHpB,IAAIkZ,EAAUzL,EAAMzN,EAtHC,SAuHjBmZ,EAAU1L,EAAMzN,EAtHC,SA4HrB,GAAIkZ,GAAWC,EACX,MA/HgB,OAmIpB,GAAID,GAAWC,EACX,OAAOD,EAnIU,QACA,QAsIrB,GAAIzL,EAAMzN,EAzIkB,gBA0IxB,MA1IwB,eA6I5B,MA9IoB,OAsDToZ,CAAkBpZ,EAAQnK,KAAK,OAO1CwjB,gBAAiB,SAASrJ,GACtB,IAAIiD,EAAWjD,EAAMiD,SACjBL,EAAY5C,EAAM8B,gBAGtB,GAAIvnB,KAAKglB,QAAQgB,QAAQ+I,UACrBrG,EAASzO,qBADb,CAKA,IAAIxE,EAAUzV,KAAKyV,QACfuZ,EAAU9L,EAAMzN,EAtEJ,UAsEoCqY,GAAgB,KAChEc,EAAU1L,EAAMzN,EArEH,WAqEoCqY,GArEpC,SAsEba,EAAUzL,EAAMzN,EAvEH,WAuEoCqY,GAvEpC,SAyEjB,GAAIkB,EAAS,CAGT,IAAIC,EAAyC,IAA1BxJ,EAAME,SAAShiB,OAC9BurB,EAAgBzJ,EAAMmB,SAAW,EACjCuI,EAAiB1J,EAAMgB,UAAY,IAEvC,GAAIwI,GAAgBC,GAAiBC,EACjC,OAIR,IAAIR,IAAWC,EAKf,OAAII,GACCJ,GAj3BcQ,EAi3BH/G,GACXsG,GAj3BYU,GAi3BDhH,EACLroB,KAAKsvB,WAAW5G,QAH3B,IAWJ4G,WAAY,SAAS5G,GACjB1oB,KAAKglB,QAAQgB,QAAQ+I,WAAY,EACjCrG,EAASzO,mBA+FjB,SAASsV,GAAWzmB,GAChB9I,KAAK8I,QAAUiX,EAAO,GAAI/f,KAAKwvB,SAAU1mB,GAAW,IAEpD9I,KAAK0L,GApgCEyY,IAsgCPnkB,KAAKglB,QAAU,KAGfhlB,KAAK8I,QAAQuc,OAAS9C,EAAYviB,KAAK8I,QAAQuc,QAAQ,GAEvDrlB,KAAK4W,MAxBY,EA0BjB5W,KAAKyvB,aAAe,GACpBzvB,KAAK0vB,YAAc,GAqOvB,SAASC,GAAS/Y,GACd,OA5PkB,GA4PdA,EACO,SA/PG,EAgQHA,EACA,MAlQK,EAmQLA,EACA,OArQG,EAsQHA,EACA,QAEJ,GAQX,SAASgZ,GAAavH,GAClB,OAnuCiB,IAmuCbA,EACO,OAruCI,GAsuCJA,EACA,KAzuCM,GA0uCNA,EACA,OA1uCO,GA2uCPA,EACA,QAEJ,GASX,SAASwH,GAA6BC,EAAiBrB,GACnD,IAAIzJ,EAAUyJ,EAAWzJ,QACzB,OAAIA,EACOA,EAAQ1d,IAAIwoB,GAEhBA,EAQX,SAASC,KACLR,GAAWjO,MAAMthB,KAAMsE,WA6D3B,SAAS0rB,KACLD,GAAezO,MAAMthB,KAAMsE,WAE3BtE,KAAKiwB,GAAK,KACVjwB,KAAKkwB,GAAK,KA4Ed,SAASC,KACLJ,GAAezO,MAAMthB,KAAMsE,WAsC/B,SAAS8rB,KACLb,GAAWjO,MAAMthB,KAAMsE,WAEvBtE,KAAKqwB,OAAS,KACdrwB,KAAKswB,OAAS,KAmElB,SAASC,KACLR,GAAezO,MAAMthB,KAAMsE,WA8B/B,SAASksB,KACLT,GAAezO,MAAMthB,KAAMsE,WA2D/B,SAASmsB,KACLlB,GAAWjO,MAAMthB,KAAMsE,WAIvBtE,KAAK0wB,OAAQ,EACb1wB,KAAK2wB,SAAU,EAEf3wB,KAAKqwB,OAAS,KACdrwB,KAAKswB,OAAS,KACdtwB,KAAKkB,MAAQ,EAqGjB,SAAS0vB,GAAOvM,EAASvb,GAGrB,OAFAA,EAAUA,GAAW,IACb0lB,YAAcjM,EAAYzZ,EAAQ0lB,YAAaoC,GAAOpB,SAASqB,QAChE,IAAIC,GAAQzM,EAASvb,GA7tBhCymB,GAAWrsB,UAAY,CAKnBssB,SAAU,GAOVnB,IAAK,SAASvlB,GAKV,OAJAiX,EAAO/f,KAAK8I,QAASA,GAGrB9I,KAAKglB,SAAWhlB,KAAKglB,QAAQuJ,YAAYngB,SAClCpO,MAQX+wB,cAAe,SAASjB,GACpB,GAAIrP,EAAeqP,EAAiB,gBAAiB9vB,MACjD,OAAOA,KAGX,IAAIyvB,EAAezvB,KAAKyvB,aAMxB,OAJKA,GADLK,EAAkBD,GAA6BC,EAAiB9vB,OAC9B0L,MAC9B+jB,EAAaK,EAAgBpkB,IAAMokB,EACnCA,EAAgBiB,cAAc/wB,OAE3BA,MAQXgxB,kBAAmB,SAASlB,GACxB,OAAIrP,EAAeqP,EAAiB,oBAAqB9vB,QAIzD8vB,EAAkBD,GAA6BC,EAAiB9vB,aACzDA,KAAKyvB,aAAaK,EAAgBpkB,KAJ9B1L,MAafixB,eAAgB,SAASnB,GACrB,GAAIrP,EAAeqP,EAAiB,iBAAkB9vB,MAClD,OAAOA,KAGX,IAAI0vB,EAAc1vB,KAAK0vB,YAMvB,OAJ+C,IAA3CrM,EAAQqM,EADZI,EAAkBD,GAA6BC,EAAiB9vB,SAE5D0vB,EAAY9jB,KAAKkkB,GACjBA,EAAgBmB,eAAejxB,OAE5BA,MAQXkxB,mBAAoB,SAASpB,GACzB,GAAIrP,EAAeqP,EAAiB,qBAAsB9vB,MACtD,OAAOA,KAGX8vB,EAAkBD,GAA6BC,EAAiB9vB,MAChE,IAAI4D,EAAQyf,EAAQrjB,KAAK0vB,YAAaI,GAItC,OAHIlsB,GAAS,GACT5D,KAAK0vB,YAAYjqB,OAAO7B,EAAO,GAE5B5D,MAOXmxB,mBAAoB,WAChB,OAAOnxB,KAAK0vB,YAAY/rB,OAAS,GAQrCytB,iBAAkB,SAAStB,GACvB,QAAS9vB,KAAKyvB,aAAaK,EAAgBpkB,KAQ/Ckd,KAAM,SAASnD,GACX,IAAIR,EAAOjlB,KACP4W,EAAQ5W,KAAK4W,MAEjB,SAASgS,EAAK9U,GACVmR,EAAKD,QAAQ4D,KAAK9U,EAAO2R,GAIzB7O,EArJM,GAsJNgS,EAAK3D,EAAKnc,QAAQgL,MAAQ6b,GAAS/Y,IAGvCgS,EAAK3D,EAAKnc,QAAQgL,OAEd2R,EAAM4L,iBACNzI,EAAKnD,EAAM4L,iBAIXza,GAhKM,GAiKNgS,EAAK3D,EAAKnc,QAAQgL,MAAQ6b,GAAS/Y,KAU3C0a,QAAS,SAAS7L,GACd,GAAIzlB,KAAKuxB,UACL,OAAOvxB,KAAK4oB,KAAKnD,GAGrBzlB,KAAK4W,MA7KM,IAoLf2a,QAAS,WAEL,IADA,IAAI3qB,EAAI,EACDA,EAAI5G,KAAK0vB,YAAY/rB,QAAQ,CAChC,KAAM,GAAA3D,KAAK0vB,YAAY9oB,GAAGgQ,OACtB,OAAO,EAEXhQ,IAEJ,OAAO,GAOXiiB,UAAW,SAAS2E,GAGhB,IAAIgE,EAAiBzR,EAAO,GAAIyN,GAGhC,IAAKpL,EAASpiB,KAAK8I,QAAQuc,OAAQ,CAACrlB,KAAMwxB,IAGtC,OAFAxxB,KAAKyxB,aACLzxB,KAAK4W,MA3ME,IAgNP,GAAA5W,KAAK4W,QACL5W,KAAK4W,MAvNI,GA0Nb5W,KAAK4W,MAAQ5W,KAAK0xB,QAAQF,GAItB,GAAAxxB,KAAK4W,OACL5W,KAAKsxB,QAAQE,IAWrBE,QAAS,SAASlE,KAOlBkB,eAAgB,aAOhB+C,MAAO,cA8DX5P,EAAQkO,GAAgBR,GAAY,CAKhCC,SAAU,CAKN7J,SAAU,GASdgM,SAAU,SAASlM,GACf,IAAImM,EAAiB5xB,KAAK8I,QAAQ6c,SAClC,OAA0B,IAAnBiM,GAAwBnM,EAAME,SAAShiB,SAAWiuB,GAS7DF,QAAS,SAASjM,GACd,IAAI7O,EAAQ5W,KAAK4W,MACb4O,EAAYC,EAAMD,UAElBqM,EAAuB,EAARjb,EACfkb,EAAU9xB,KAAK2xB,SAASlM,GAG5B,OAAIoM,IAlzCO,EAkzCUrM,IAA6BsM,GAvVpC,GAwVHlb,EACAib,GAAgBC,EArzCnB,EAszCAtM,EA5VE,EA6VK5O,EA/VL,EAgWOA,EA/VL,EAkWDA,EAnWD,EAKC,MAiXnBiL,EAAQmO,GAAeD,GAAgB,CAKnCP,SAAU,CACN1b,MAAO,MACPie,UAAW,GACXpM,SAAU,EACV0C,UA50CY2J,IA+0ChBtD,eAAgB,WACZ,IAAIrG,EAAYroB,KAAK8I,QAAQuf,UACzB5S,EAAU,GAOd,OA11CmB2Z,EAo1Cf/G,GACA5S,EAAQ7J,KA9jBK,SAtxBAyjB,GAs1CbhH,GACA5S,EAAQ7J,KAlkBK,SAokBV6J,GAGXwc,cAAe,SAASxM,GACpB,IAAI3c,EAAU9I,KAAK8I,QACfopB,GAAW,EACXtL,EAAWnB,EAAMmB,SACjByB,EAAY5C,EAAM4C,UAClBnB,EAAIzB,EAAM0B,OACVC,EAAI3B,EAAM4B,OAed,OAZMgB,EAAYvf,EAAQuf,YAt2CP+G,EAu2CXtmB,EAAQuf,WACRA,EAAmB,IAANnB,EA92CR,EA82CqCA,EAAI,EA72CzC,EACC,EA62CNgL,EAAWhL,GAAKlnB,KAAKiwB,GACrBrJ,EAAWrhB,KAAK4a,IAAIsF,EAAM0B,UAE1BkB,EAAmB,IAANjB,EAl3CR,EAk3CqCA,EAAI,EA/2C3C,EACE,GA+2CL8K,EAAW9K,GAAKpnB,KAAKkwB,GACrBtJ,EAAWrhB,KAAK4a,IAAIsF,EAAM4B,UAGlC5B,EAAM4C,UAAYA,EACX6J,GAAYtL,EAAW9d,EAAQipB,WAAa1J,EAAYvf,EAAQuf,WAG3EsJ,SAAU,SAASlM,GACf,OAAOsK,GAAe7sB,UAAUyuB,SAASltB,KAAKzE,KAAMylB,KAva1C,EAwaLzlB,KAAK4W,SAxaA,EAwa0B5W,KAAK4W,QAAwB5W,KAAKiyB,cAAcxM,KAGxFmD,KAAM,SAASnD,GAEXzlB,KAAKiwB,GAAKxK,EAAM0B,OAChBnnB,KAAKkwB,GAAKzK,EAAM4B,OAEhB,IAAIgB,EAAYuH,GAAanK,EAAM4C,WAE/BA,IACA5C,EAAM4L,gBAAkBrxB,KAAK8I,QAAQgL,MAAQuU,GAEjDroB,KAAKmiB,OAAOyG,KAAKnkB,KAAKzE,KAAMylB,MAcpC5D,EAAQsO,GAAiBJ,GAAgB,CAKrCP,SAAU,CACN1b,MAAO,QACPie,UAAW,EACXpM,SAAU,GAGd+I,eAAgB,WACZ,MAAO,CAzoBS,SA4oBpBiD,SAAU,SAASlM,GACf,OAAOzlB,KAAKmiB,OAAOwP,SAASltB,KAAKzE,KAAMylB,KAClClgB,KAAK4a,IAAIsF,EAAMoC,MAAQ,GAAK7nB,KAAK8I,QAAQipB,WApdpC,EAodiD/xB,KAAK4W,QAGpEgS,KAAM,SAASnD,GACX,GAAoB,IAAhBA,EAAMoC,MAAa,CACnB,IAAIsK,EAAQ1M,EAAMoC,MAAQ,EAAI,KAAO,MACrCpC,EAAM4L,gBAAkBrxB,KAAK8I,QAAQgL,MAAQqe,EAEjDnyB,KAAKmiB,OAAOyG,KAAKnkB,KAAKzE,KAAMylB,MAiBpC5D,EAAQuO,GAAiBb,GAAY,CAKjCC,SAAU,CACN1b,MAAO,QACP6R,SAAU,EACVyM,KAAM,IACNL,UAAW,GAGfrD,eAAgB,WACZ,MAAO,CAtrBS,SAyrBpBgD,QAAS,SAASjM,GACd,IAAI3c,EAAU9I,KAAK8I,QACfupB,EAAgB5M,EAAME,SAAShiB,SAAWmF,EAAQ6c,SAClD2M,EAAgB7M,EAAMmB,SAAW9d,EAAQipB,UACzCQ,EAAY9M,EAAMgB,UAAY3d,EAAQspB,KAM1C,GAJApyB,KAAKswB,OAAS7K,GAIT6M,IAAkBD,GAAkB,GAAA5M,EAAMD,YAA2C+M,EACtFvyB,KAAKyxB,aACF,GAn+CG,EAm+CChM,EAAMD,UACbxlB,KAAKyxB,QACLzxB,KAAKqwB,OAAShQ,GAAkB,WAC5BrgB,KAAK4W,MA1gBH,EA2gBF5W,KAAKsxB,YACNxoB,EAAQspB,KAAMpyB,WACd,GAv+CC,EAu+CGylB,EAAMD,UACb,OA9gBM,EAghBV,OA7gBW,IAghBfiM,MAAO,WACHpV,aAAarc,KAAKqwB,SAGtBzH,KAAM,SAASnD,GAvhBD,IAwhBNzlB,KAAK4W,QAIL6O,GAt/CI,EAs/CMA,EAAMD,UAChBxlB,KAAKglB,QAAQ4D,KAAK5oB,KAAK8I,QAAQgL,MAAQ,KAAM2R,IAE7CzlB,KAAKswB,OAAO9J,UAAYpG,IACxBpgB,KAAKglB,QAAQ4D,KAAK5oB,KAAK8I,QAAQgL,MAAO9T,KAAKswB,aAevDzO,EAAQ0O,GAAkBR,GAAgB,CAKtCP,SAAU,CACN1b,MAAO,SACPie,UAAW,EACXpM,SAAU,GAGd+I,eAAgB,WACZ,MAAO,CAvvBS,SA0vBpBiD,SAAU,SAASlM,GACf,OAAOzlB,KAAKmiB,OAAOwP,SAASltB,KAAKzE,KAAMylB,KAClClgB,KAAK4a,IAAIsF,EAAMsC,UAAY/nB,KAAK8I,QAAQipB,WAlkBnC,EAkkBgD/xB,KAAK4W,UAcvEiL,EAAQ2O,GAAiBT,GAAgB,CAKrCP,SAAU,CACN1b,MAAO,QACPie,UAAW,GACX7J,SAAU,GACVG,UAAW2J,GACXrM,SAAU,GAGd+I,eAAgB,WACZ,OAAOsB,GAAc9sB,UAAUwrB,eAAejqB,KAAKzE,OAGvD2xB,SAAU,SAASlM,GACf,IACIyC,EADAG,EAAYroB,KAAK8I,QAAQuf,UAW7B,OARgB,GAAZA,EACAH,EAAWzC,EAAMgC,gBArjDF2H,EAsjDR/G,EACPH,EAAWzC,EAAMkC,iBAtjDJ0H,GAujDNhH,IACPH,EAAWzC,EAAMmC,kBAGd5nB,KAAKmiB,OAAOwP,SAASltB,KAAKzE,KAAMylB,IACnC4C,EAAY5C,EAAM8B,iBAClB9B,EAAMmB,SAAW5mB,KAAK8I,QAAQipB,WAC9BtM,EAAMwC,aAAejoB,KAAK8I,QAAQ6c,UAClCxF,EAAI+H,GAAYloB,KAAK8I,QAAQof,UAzkDzB,EAykDqCzC,EAAMD,WAGvDoD,KAAM,SAASnD,GACX,IAAI4C,EAAYuH,GAAanK,EAAM8B,iBAC/Bc,GACAroB,KAAKglB,QAAQ4D,KAAK5oB,KAAK8I,QAAQgL,MAAQuU,EAAW5C,GAGtDzlB,KAAKglB,QAAQ4D,KAAK5oB,KAAK8I,QAAQgL,MAAO2R,MA2B9C5D,EAAQ4O,GAAelB,GAAY,CAK/BC,SAAU,CACN1b,MAAO,MACP6R,SAAU,EACV6M,KAAM,EACNC,SAAU,IACVL,KAAM,IACNL,UAAW,EACXW,aAAc,IAGlBhE,eAAgB,WACZ,MAAO,CAh2BiB,iBAm2B5BgD,QAAS,SAASjM,GACd,IAAI3c,EAAU9I,KAAK8I,QAEfupB,EAAgB5M,EAAME,SAAShiB,SAAWmF,EAAQ6c,SAClD2M,EAAgB7M,EAAMmB,SAAW9d,EAAQipB,UACzCY,EAAiBlN,EAAMgB,UAAY3d,EAAQspB,KAI/C,GAFApyB,KAAKyxB,QAzoDK,EA2oDLhM,EAAMD,WAA4C,IAAfxlB,KAAKkB,MACzC,OAAOlB,KAAK4yB,cAKhB,GAAIN,GAAiBK,GAAkBN,EAAe,CAClD,GAhpDI,GAgpDA5M,EAAMD,UACN,OAAOxlB,KAAK4yB,cAGhB,IAAIC,GAAgB7yB,KAAK0wB,OAASjL,EAAMe,UAAYxmB,KAAK0wB,MAAQ5nB,EAAQ2pB,SACrEK,GAAiB9yB,KAAK2wB,SAAW9J,EAAY7mB,KAAK2wB,QAASlL,EAAMa,QAAUxd,EAAQ4pB,aAgBvF,GAdA1yB,KAAK0wB,MAAQjL,EAAMe,UACnBxmB,KAAK2wB,QAAUlL,EAAMa,OAEhBwM,GAAkBD,EAGnB7yB,KAAKkB,OAAS,EAFdlB,KAAKkB,MAAQ,EAKjBlB,KAAKswB,OAAS7K,EAKG,IADFzlB,KAAKkB,MAAQ4H,EAAQ0pB,KAIhC,OAAKxyB,KAAKmxB,sBAGNnxB,KAAKqwB,OAAShQ,GAAkB,WAC5BrgB,KAAK4W,MAltBX,EAmtBM5W,KAAKsxB,YACNxoB,EAAQ2pB,SAAUzyB,MAttBvB,GAEA,EAytBV,OAttBW,IAytBf4yB,YAAa,WAIT,OAHA5yB,KAAKqwB,OAAShQ,GAAkB,WAC5BrgB,KAAK4W,MA3tBE,KA4tBR5W,KAAK8I,QAAQ2pB,SAAUzyB,MA5tBf,IAguBfyxB,MAAO,WACHpV,aAAarc,KAAKqwB,SAGtBzH,KAAM,WAvuBQ,GAwuBN5oB,KAAK4W,QACL5W,KAAKswB,OAAOyC,SAAW/yB,KAAKkB,MAC5BlB,KAAKglB,QAAQ4D,KAAK5oB,KAAK8I,QAAQgL,MAAO9T,KAAKswB,YAoBvDM,GAAOoC,QAAU,QAMjBpC,GAAOpB,SAAW,CAOdyD,WAAW,EAQX1E,YAl9BuB,UAw9BvBlJ,QAAQ,EASRH,YAAa,KAObgO,WAAY,KAOZrC,OAAQ,CAEJ,CAACN,GAAkB,CAAClL,QAAQ,IAC5B,CAAC8K,GAAiB,CAAC9K,QAAQ,GAAQ,CAAC,WACpC,CAACmL,GAAiB,CAACnI,UArwDA+G,IAswDnB,CAACY,GAAe,CAAC3H,UAtwDE+G,GAswDgC,CAAC,UACpD,CAACqB,IACD,CAACA,GAAe,CAAC3c,MAAO,YAAa0e,KAAM,GAAI,CAAC,QAChD,CAACpC,KAQL+C,SAAU,CAMNC,WAAY,OAOZC,YAAa,OASbC,aAAc,OAOdC,eAAgB,OAOhBC,SAAU,OAQVC,kBAAmB,kBAa3B,SAAS3C,GAAQzM,EAASvb,GAzwD1B,IAA6Bkc,EA0wDzBhlB,KAAK8I,QAAUiX,EAAO,GAAI6Q,GAAOpB,SAAU1mB,GAAW,IAEtD9I,KAAK8I,QAAQoc,YAAcllB,KAAK8I,QAAQoc,aAAeb,EAEvDrkB,KAAK0zB,SAAW,GAChB1zB,KAAKgmB,QAAU,GACfhmB,KAAKwuB,YAAc,GACnBxuB,KAAK2zB,YAAc,GAEnB3zB,KAAKqkB,QAAUA,EACfrkB,KAAKylB,MArwDE,KAfkBT,EAoxDQhlB,MAlxDR8I,QAAQoqB,aAItBvO,EACAmG,GACAlG,EACAuH,GACCzH,EAGDiI,GAFA/C,IAIO5E,EAASO,GAswD3BvlB,KAAKuuB,YAAc,IAAIH,GAAYpuB,KAAMA,KAAK8I,QAAQylB,aAEtDqF,GAAe5zB,MAAM,GAErB2gB,EAAK3gB,KAAK8I,QAAQ0lB,aAAa,SAASjkB,GACpC,IAAIkkB,EAAazuB,KAAKwJ,IAAI,IAAKe,EAAK,GAAIA,EAAK,KAC7CA,EAAK,IAAMkkB,EAAWsC,cAAcxmB,EAAK,IACzCA,EAAK,IAAMkkB,EAAWwC,eAAe1mB,EAAK,MAC3CvK,MA4PP,SAAS4zB,GAAe5O,EAASxb,GAC7B,IAIIwa,EAJAK,EAAUW,EAAQX,QACjBA,EAAQtJ,QAIb4F,EAAKqE,EAAQlc,QAAQqqB,UAAU,SAAS9uB,EAAOnC,GAC3C8hB,EAAOF,EAASO,EAAQtJ,MAAO7Y,GAC3BsH,GACAwb,EAAQ2O,YAAY3P,GAAQK,EAAQtJ,MAAMiJ,GAC1CK,EAAQtJ,MAAMiJ,GAAQ3f,GAEtBggB,EAAQtJ,MAAMiJ,GAAQgB,EAAQ2O,YAAY3P,IAAS,MAGtDxa,IACDwb,EAAQ2O,YAAc,KAzQ9B7C,GAAQ5tB,UAAY,CAMhBmrB,IAAK,SAASvlB,GAaV,OAZAiX,EAAO/f,KAAK8I,QAASA,GAGjBA,EAAQylB,aACRvuB,KAAKuuB,YAAYngB,SAEjBtF,EAAQoc,cAERllB,KAAKylB,MAAM+D,UACXxpB,KAAKylB,MAAMhkB,OAASqH,EAAQoc,YAC5BllB,KAAKylB,MAAMH,QAERtlB,MASX6zB,KAAM,SAASC,GACX9zB,KAAKgmB,QAAQ+N,QAAUD,EA5Db,EADP,GAsEPjL,UAAW,SAAS2E,GAChB,IAAIxH,EAAUhmB,KAAKgmB,QACnB,IAAIA,EAAQ+N,QAAZ,CAOA,IAAItF,EAFJzuB,KAAKuuB,YAAYO,gBAAgBtB,GAGjC,IAAIgB,EAAcxuB,KAAKwuB,YAKnBwF,EAAgBhO,EAAQgO,gBAIvBA,GAAkBA,GAz8Bb,EAy8B8BA,EAAcpd,SAClDod,EAAgBhO,EAAQgO,cAAgB,MAI5C,IADA,IAAIptB,EAAI,EACDA,EAAI4nB,EAAY7qB,QACnB8qB,EAAaD,EAAY5nB,GA9FnB,IAsGFof,EAAQ+N,SACHC,GAAiBvF,GAAcuF,IAChCvF,EAAW2C,iBAAiB4C,GAGhCvF,EAAWgD,QAFXhD,EAAW5F,UAAU2E,IAOpBwG,GAAiB,GAAAvF,EAAW7X,QAC7Bod,EAAgBhO,EAAQgO,cAAgBvF,GAE5C7nB,MASRU,IAAK,SAASmnB,GACV,GAAIA,aAAsBc,GACtB,OAAOd,EAIX,IADA,IAAID,EAAcxuB,KAAKwuB,YACd5nB,EAAI,EAAGA,EAAI4nB,EAAY7qB,OAAQiD,IACpC,GAAI4nB,EAAY5nB,GAAGkC,QAAQgL,OAAS2a,EAChC,OAAOD,EAAY5nB,GAG3B,OAAO,MASX4C,IAAK,SAASilB,GACV,GAAIhO,EAAegO,EAAY,MAAOzuB,MAClC,OAAOA,KAIX,IAAIgK,EAAWhK,KAAKsH,IAAImnB,EAAW3lB,QAAQgL,OAS3C,OARI9J,GACAhK,KAAKqO,OAAOrE,GAGhBhK,KAAKwuB,YAAY5iB,KAAK6iB,GACtBA,EAAWzJ,QAAUhlB,KAErBA,KAAKuuB,YAAYngB,SACVqgB,GAQXpgB,OAAQ,SAASogB,GACb,GAAIhO,EAAegO,EAAY,SAAUzuB,MACrC,OAAOA,KAMX,GAHAyuB,EAAazuB,KAAKsH,IAAImnB,GAGN,CACZ,IAAID,EAAcxuB,KAAKwuB,YACnB5qB,EAAQyf,EAAQmL,EAAaC,IAElB,IAAX7qB,IACA4qB,EAAY/oB,OAAO7B,EAAO,GAC1B5D,KAAKuuB,YAAYngB,UAIzB,OAAOpO,MASXuY,GAAI,SAAS0b,EAAQrR,GACjB,QAp5ER,IAo5EYqR,QAp5EZ,IAu5EYrR,EAAJ,CAIA,IAAI8Q,EAAW1zB,KAAK0zB,SAKpB,OAJA/S,EAAKkC,EAASoR,IAAS,SAASngB,GAC5B4f,EAAS5f,GAAS4f,EAAS5f,IAAU,GACrC4f,EAAS5f,GAAOlI,KAAKgX,MAElB5iB,OASXk0B,IAAK,SAASD,EAAQrR,GAClB,QA16ER,IA06EYqR,EAAJ,CAIA,IAAIP,EAAW1zB,KAAK0zB,SAQpB,OAPA/S,EAAKkC,EAASoR,IAAS,SAASngB,GACvB8O,EAGD8Q,EAAS5f,IAAU4f,EAAS5f,GAAOrO,OAAO4d,EAAQqQ,EAAS5f,GAAQ8O,GAAU,UAFtE8Q,EAAS5f,MAKjB9T,OAQX4oB,KAAM,SAAS9U,EAAO3T,GAEdH,KAAK8I,QAAQmqB,WAkEzB,SAAyBnf,EAAO3T,GAC5B,IAAIg0B,EAAe7nB,EAAS8nB,YAAY,SACxCD,EAAaE,UAAUvgB,GAAO,GAAM,GACpCqgB,EAAaG,QAAUn0B,EACvBA,EAAKsB,OAAO8yB,cAAcJ,GArElBK,CAAgB1gB,EAAO3T,GAI3B,IAAIuzB,EAAW1zB,KAAK0zB,SAAS5f,IAAU9T,KAAK0zB,SAAS5f,GAAO7P,QAC5D,GAAKyvB,GAAaA,EAAS/vB,OAA3B,CAIAxD,EAAK8N,KAAO6F,EACZ3T,EAAK8Z,eAAiB,WAClB9Z,EAAKuoB,SAASzO,kBAIlB,IADA,IAAIrT,EAAI,EACDA,EAAI8sB,EAAS/vB,QAChB+vB,EAAS9sB,GAAGzG,GACZyG,MAQR4iB,QAAS,WACLxpB,KAAKqkB,SAAWuP,GAAe5zB,MAAM,GAErCA,KAAK0zB,SAAW,GAChB1zB,KAAKgmB,QAAU,GACfhmB,KAAKylB,MAAM+D,UACXxpB,KAAKqkB,QAAU,OAyCvBtE,EAAO6Q,GAAQ,CACX6D,YAtoEc,EAuoEdC,WAtoEa,EAuoEbC,UAtoEY,EAuoEZC,aAtoEe,EAwoEfC,eAlrCiB,EAmrCjBC,YAlrCc,EAmrCdC,cAlrCgB,EAmrChBC,YAlrCc,EAmrCdC,iBAnrCc,EAorCdC,gBAlrCkB,GAmrClBC,aAlrCe,GAorCfC,eA9oEiB,EA+oEjBhG,eA9oEiB,EA+oEjBiG,gBA9oEkB,EA+oElBhG,aA9oEe,EA+oEfiG,eA9oEiB,GA+oEjBtD,qBA7oEuB5C,EA8oEvBmG,mBA7oEqBlG,GA8oErBmG,cA7oEgBxD,GA+oEhBlB,QAASA,GACT/L,MAAOA,EACPqJ,YAAaA,GAEbjC,WAAYA,GACZvC,WAAYA,EACZkB,kBAAmBA,GACnB6B,gBAAiBA,GACjBf,iBAAkBA,GAElB2D,WAAYA,GACZQ,eAAgBA,GAChB0F,IAAKhF,GACLiF,IAAK1F,GACL2F,MAAOnF,GACPoF,MAAOzF,GACP0F,OAAQtF,GACRuF,MAAO1F,GAEP7X,GAAImK,EACJwR,IAAKnR,EACLpC,KAAMA,EACNiB,MAAOA,EACPH,OAAQA,EACR1B,OAAQA,EACR8B,QAASA,EACTrB,OAAQA,EACRsD,SAAUA,UAKsB,IAAXtd,EAAyBA,EAA0B,oBAATye,KAAuBA,KAAO,IACtF2L,OAASA,QAjkFpB,KAokFIhR,aACI,OAAOgR,IADL,8BApkFV,CA6kFGpqB,OAAQ8F","file":"vendors~files-modal.js?v=4f9d125bb25a03836a04","sourcesContent":["import GetText from \"node-gettext\"\n\nimport { getLanguage } from \".\"\n\nclass GettextBuilder {\n\n    private locale?: string\n    private translations = {}\n    private debug = false\n\n    setLanguage(language: string): GettextBuilder {\n        this.locale = language\n        return this\n    }\n\n    detectLocale(): GettextBuilder {\n        return this.setLanguage(getLanguage().replace('-', '_'))\n    }\n\n    addTranslation(language: string, data: any): GettextBuilder {\n        this.translations[language] = data\n        return this\n    }\n\n    enableDebugMode(): GettextBuilder {\n        this.debug = true\n        return this\n    }\n\n    build(): GettextWrapper {\n        return new GettextWrapper(this.locale || 'en', this.translations, this.debug)\n    }\n\n}\n\nclass GettextWrapper {\n\n    private gt: GetText\n\n    constructor(locale: string, data: any, debug: boolean) {\n        this.gt = new GetText({\n            debug,\n            sourceLocale: 'en',\n        })\n\n        for (let key in data) {\n            this.gt.addTranslations(key, 'messages', data[key])\n        }\n\n        this.gt.setLocale(locale)\n    }\n\n    private subtitudePlaceholders(translated: string, vars: object): string {\n        return translated.replace(/{([^{}]*)}/g, (a, b) => {\n            const r = vars[b]\n            if (typeof r === 'string' || typeof r === 'number') {\n                return r.toString()\n            } else {\n                return a\n            }\n        })\n    }\n\n    gettext(original: string, placeholders: object = {}): string {\n        return this.subtitudePlaceholders(\n            this.gt.gettext(original),\n            placeholders\n        )\n    }\n\n    ngettext(singular: string, plural: string, count: number, placeholders: object = {}): string {\n        return this.subtitudePlaceholders(\n            this.gt.ngettext(singular, plural, count).replace(/%n/g, count.toString()),\n            placeholders\n        )\n    }\n\n}\n\nexport function getGettextBuilder() {\n    return new GettextBuilder()\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n  });\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = it.charCodeAt(0);\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = it.slice(2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = digits.charCodeAt(index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n  var NumberWrapper = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var dummy = this;\n    return dummy instanceof NumberWrapper\n      // check on 1..constructor(foo) case\n      && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n        ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n  };\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +\n    // ESNext\n    'fromString,range'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n    }\n  }\n  NumberWrapper.prototype = NumberPrototype;\n  NumberPrototype.constructor = NumberWrapper;\n  redefine(global, NUMBER, NumberWrapper);\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = toLength(O.length);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n    }\n    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Components/Modal\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Components/Modal\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/Modal\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 170);\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () {\n        injectStyles.call(\n          this,\n          (options.functional ? this.parent : this).$root.$options.shadowRoot\n        )\n      }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functional component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n","/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n","module.exports = require(\"vue\");","module.exports = require(\"core-js/modules/es.object.to-string\");","import { getGettextBuilder } from '@nextcloud/l10n/dist/gettext'\n\nconst gtBuilder = getGettextBuilder()\n\t.detectLocale()\nTRANSLATIONS.map(data => gtBuilder.addTranslation(data.locale, data.json))\nconst gt = gtBuilder.build()\n\nconst n = gt.ngettext.bind(gt)\nconst t = gt.gettext.bind(gt)\n\nexport { t, n }\n","module.exports = require(\"v-tooltip\");","module.exports = require(\"core-js/modules/es.function.name\");","module.exports = require(\"core-js/modules/es.array.index-of\");","module.exports = require(\"core-js/modules/es.array.map\");","module.exports = require(\"core-js/modules/es.regexp.to-string\");","module.exports = require(\"core-js/modules/es.regexp.exec\");","module.exports = require(\"core-js/modules/es.array.iterator\");","module.exports = require(\"core-js/modules/es.string.iterator\");","module.exports = require(\"core-js/modules/web.dom-collections.iterator\");","\"use strict\";\n\nmodule.exports = function (url, options) {\n  if (!options) {\n    // eslint-disable-next-line no-param-reassign\n    options = {};\n  } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n  url = url && url.__esModule ? url.default : url;\n\n  if (typeof url !== 'string') {\n    return url;\n  } // If url is already wrapped in quotes, remove them\n\n\n  if (/^['\"].*['\"]$/.test(url)) {\n    // eslint-disable-next-line no-param-reassign\n    url = url.slice(1, -1);\n  }\n\n  if (options.hash) {\n    // eslint-disable-next-line no-param-reassign\n    url += options.hash;\n  } // Should url be wrapped?\n  // See https://drafts.csswg.org/css-values-3/#urls\n\n\n  if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n    return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n'), \"\\\"\");\n  }\n\n  return url;\n};","export default \"data:application/vnd.ms-fontobject;base64,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\"","export default \"data:font/woff;base64,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PAE55eh8gAAAAQAAAAEAAKGsKxtfDzz1AAsTiAAAAADbzuLNAAAAANt+Bs7/4AAAE5MTiAAAAAgAAgAAAAAAAAABAAATiAAAAAATiP/g//UTkwABAAAAAAAAAAAAAAAAAAAABwAAAAATiAAAE4gAABOIAAATiAAABjYAABOIAAAAAP//AAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAACIANgBYAGwAgACUALQBDgF8AZoCEAImAjQCQgKoAyIDpgP+AAEAAAATAEsAAwAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAAAQAMYAAQAAAAAAAQAUAAAAAQAAAAAAAgAHABQAAQAAAAAAAwAUABsAAQAAAAAABAAUAC8AAQAAAAAABQALAEMAAQAAAAAABgAUAE4AAQAAAAAACgArAGIAAQAAAAAACwATAI0AAwABBAkAAQAoAKAAAwABBAkAAgAOAMgAAwABBAkAAwAoANYAAwABBAkABAAoAP4AAwABBAkABQAWASYAAwABBAkABgAoATwAAwABBAkACgBWAWQAAwABBAkACwAmAbppY29uZm9udC12dWUtNjdhZjM5MlJlZ3VsYXJpY29uZm9udC12dWUtNjdhZjM5Mmljb25mb250LXZ1ZS02N2FmMzkyVmVyc2lvbiAxLjBpY29uZm9udC12dWUtNjdhZjM5MkdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0ANgA3AGEAZgAzADkAMgBSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0ANgA3AGEAZgAzADkAMgBpAGMAbwBuAGYAbwBuAHQALQB2AHUAZQAtADYANwBhAGYAMwA5ADIAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0ANgA3AGEAZgAzADkAMgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAACAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAATABMAAAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBExFhcnJvdy1sZWZ0LWRvdWJsZQphcnJvdy1sZWZ0EmFycm93LXJpZ2h0LWRvdWJsZQthcnJvdy1yaWdodApicmVhZGNydW1iCWNoZWNrbWFyawVjbG9zZQdjb25maXJtBGluZm8EbWVudQRtb3JlBXBhdXNlBHBsYXkKdHJpYW5nbGUtcxB1c2VyLXN0YXR1cy1hd2F5D3VzZXItc3RhdHVzLWRuZBV1c2VyLXN0YXR1cy1pbnZpc2libGUSdXNlci1zdGF0dXMtb25saW5lAAA=\"","export default \"data:font/ttf;base64,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AAATiP/g//UTkwABAAAAAAAAAAAAAAAAAAAABwAAAAATiAAAE4gAABOIAAATiAAABjYAABOIAAAAAP//AAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAACIANgBYAGwAgACUALQBDgF8AZoCEAImAjQCQgKoAyIDpgP+AAEAAAATAEsAAwAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAAAQAMYAAQAAAAAAAQAUAAAAAQAAAAAAAgAHABQAAQAAAAAAAwAUABsAAQAAAAAABAAUAC8AAQAAAAAABQALAEMAAQAAAAAABgAUAE4AAQAAAAAACgArAGIAAQAAAAAACwATAI0AAwABBAkAAQAoAKAAAwABBAkAAgAOAMgAAwABBAkAAwAoANYAAwABBAkABAAoAP4AAwABBAkABQAWASYAAwABBAkABgAoATwAAwABBAkACgBWAWQAAwABBAkACwAmAbppY29uZm9udC12dWUtNjdhZjM5MlJlZ3VsYXJpY29uZm9udC12dWUtNjdhZjM5Mmljb25mb250LXZ1ZS02N2FmMzkyVmVyc2lvbiAxLjBpY29uZm9udC12dWUtNjdhZjM5MkdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0ANgA3AGEAZgAzADkAMgBSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0ANgA3AGEAZgAzADkAMgBpAGMAbwBuAGYAbwBuAHQALQB2AHUAZQAtADYANwBhAGYAMwA5ADIAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAC0ANgA3AGEAZgAzADkAMgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAACAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAATABMAAAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBExFhcnJvdy1sZWZ0LWRvdWJsZQphcnJvdy1sZWZ0EmFycm93LXJpZ2h0LWRvdWJsZQthcnJvdy1yaWdodApicmVhZGNydW1iCWNoZWNrbWFyawVjbG9zZQdjb25maXJtBGluZm8EbWVudQRtb3JlBXBhdXNlBHBsYXkKdHJpYW5nbGUtcxB1c2VyLXN0YXR1cy1hd2F5D3VzZXItc3RhdHVzLWRuZBV1c2VyLXN0YXR1cy1pbnZpc2libGUSdXNlci1zdGF0dXMtb25saW5lAAA=\"","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bWV0YWRhdGE+PC9tZXRhZGF0YT48ZGVmcz48Zm9udCBpZD0iaWNvbmZvbnQtdnVlLTY3YWYzOTIiIGhvcml6LWFkdi14PSI1MDAwIj48Zm9udC1mYWNlIGZvbnQtZmFtaWx5PSJpY29uZm9udC12dWUtNjdhZjM5MiIgZm9udC13ZWlnaHQ9IjQwMCIgZm9udC1zdHJldGNoPSJub3JtYWwiIHVuaXRzLXBlci1lbT0iNTAwMCIgcGFub3NlLTE9IjIgMCA1IDMgMCAwIDAgMCAwIDAiIGFzY2VudD0iNTAwMCIgZGVzY2VudD0iMCIgeC1oZWlnaHQ9IjAiIGJib3g9Ii0zMiAwIDUwMTEgNTAwMCIgdW5kZXJsaW5lLXRoaWNrbmVzcz0iMCIgdW5kZXJsaW5lLXBvc2l0aW9uPSI1MCIgdW5pY29kZS1yYW5nZT0iVStlYTAxLWVhMTIiIC8+PG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjAiICAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1sZWZ0LWRvdWJsZSIgdW5pY29kZT0iJiN4ZWEwMTsiIGQ9Ik0zNzUwIDM5MDYgbC0xNDA2IC0xNDA2IGwxNDA2IC0xNDA2IGwwIDMxMiBsLTEwOTQgMTA5NCBsMTA5NCAxMDk0IGwwIDMxMiBaTTIzNDQgMzkwNiBsLTE0MDYgLTE0MDYgbDE0MDYgLTE0MDYgbDAgMzEyIGwtMTA5NCAxMDk0IGwxMDk0IDEwOTQgbDAgMzEyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LWxlZnQiIHVuaWNvZGU9IiYjeGVhMDI7IiBkPSJNMTU2MyAyNTAwIGwxODc1IC0xODc1IGwwIC0zMTIgbC0yMTg4IDIxODcgbDIxODggMjE4OCBsMCAtMzEzIGwtMTg3NSAtMTg3NSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1yaWdodC1kb3VibGUiIHVuaWNvZGU9IiYjeGVhMDM7IiBkPSJNMTI1MCAxMDk0IGwxNDA2IDE0MDYgbC0xNDA2IDE0MDYgbDAgLTMxMiBsMTA5NCAtMTA5NCBsLTEwOTQgLTEwOTQgbDAgLTMxMiBaTTI2NTYgMTA5NCBsMTQwNyAxNDA2IGwtMTQwNyAxNDA2IGwwIC0zMTIgbDEwOTQgLTEwOTQgbC0xMDk0IC0xMDk0IGwwIC0zMTIgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctcmlnaHQiIHVuaWNvZGU9IiYjeGVhMDQ7IiBkPSJNMzQzOCAyNTAwIGwtMTg3NSAxODc1IGwwIDMxMyBsMjE4NyAtMjE4OCBsLTIxODcgLTIxODcgbDAgMzEyIGwxODc1IDE4NzUgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYnJlYWRjcnVtYiIgdW5pY29kZT0iJiN4ZWEwNTsiIGQ9Ik0xNDggNTAwMCBsLTE0OCAtODUgbDEzOTQgLTI0MTUgbC0xMzk0IC0yNDE1IGwxNDggLTg1IGwxNDQzIDI1MDAgbC0xNDQzIDI1MDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iY2hlY2ttYXJrIiB1bmljb2RlPSImI3hlYTA2OyIgZD0iTTQwNDUgMzk3MSBsLTIwNjEgLTIwNjEgbC0xMDI5IDEwMjkgbC00NDIgLTQ0MSBsMTQ3MSAtMTQ3MSBsMjUwMyAyNTAyIGwtNDQyIDQ0MiBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJjbG9zZSIgdW5pY29kZT0iJiN4ZWEwNzsiIGQ9Ik00Mzc1IDExNTYgbC01MzEgLTUzMSBsLTEzNDQgMTM0NCBsLTEzNDQgLTEzNDQgbC01MzEgNTMxIGwxMzQ0IDEzNDQgbC0xMzQ0IDEzNDQgbDUzMSA1MzEgbDEzNDQgLTEzNDQgbDEzNDQgMTM0NCBsNTMxIC01MzEgbC0xMzQ0IC0xMzQ0IGwxMzQ0IC0xMzQ0IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImNvbmZpcm0iIHVuaWNvZGU9IiYjeGVhMDg7IiBkPSJNMjY1NiA0ODQ0IHEtMTAxIDAgLTE4MCAtNTcgcS03NCAtNTIgLTEwOSAtMTM4IHEtMzUgLTg2IC0xOSAtMTc1IHExOCAtOTYgOTAgLTE2NyBsMTQ5NSAtMTQ5NCBsLTM2MTYgMCBxLTc3IDEgLTEzOSAtMjYgcS01OCAtMjQgLTk5IC03MCBxLTM5IC00NCAtNTkgLTEwMSBxLTIwIC01NiAtMjAgLTExNiBxMCAtNjAgMjAgLTExNiBxMjAgLTU3IDU5IC0xMDEgcTQxIC00NiA5OSAtNzAgcTYyIC0yNyAxMzkgLTI1IGwzNjE2IDAgbC0xNDk1IC0xNDk1IHEtNTUgLTUzIC04MSAtMTE2IHEtMjQgLTU5IC0yMSAtMTIxIHEzIC01OCAzMCAtMTEzIHEyNSAtNTQgNjggLTk3IHE0MyAtNDMgOTYgLTY4IHE1NSAtMjYgMTE0IC0yOSBxNjIgLTMgMTIwIDIxIHE2MyAyNSAxMTYgODEgbDIwMjkgMjAyOCBxNTkgNjAgODAgMTQxIHEyMSA4MCAxIDE1OSBxLTIxIDgyIC04MSAxNDIgbC0yMDI5IDIwMjggcS00NCA0NSAtMTAyIDcwIHEtNTggMjUgLTEyMiAyNSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJpbmZvIiB1bmljb2RlPSImI3hlYTA5OyIgZD0iTTI0MjIgNDY4OCBxLTExMSAwIC0yMTMgLTQzIHEtOTggLTQyIC0xNzQgLTExNy41IHEtNzYgLTc1LjUgLTExNyAtMTc0LjUgcS00MyAtMTAxIC00MyAtMjEyLjUgcTAgLTExMS41IDQzIC0yMTIuNSBxNDEgLTk4IDExNyAtMTc0IHE3NiAtNzYgMTc0IC0xMTcgcTEwMiAtNDMgMjEzIC00MyBxMTExIDAgMjEzIDQzIHE5OCA0MSAxNzMuNSAxMTcgcTc1LjUgNzYgMTE3LjUgMTc0IHE0MyAxMDEgNDMgMjEyLjUgcTAgMTExLjUgLTQzIDIxMi41IHEtNDIgOTkgLTExNy41IDE3NC41IHEtNzUuNSA3NS41IC0xNzMuNSAxMTcuNSBxLTEwMiA0MyAtMjEzIDQzIFpNMTU2MyAzMTI1IHEtODYgMCAtMTU4IC00MyBxLTcxIC00MSAtMTEyIC0xMTIgcS00MyAtNzIgLTQzIC0xNTcuNSBxMCAtODUuNSA0MyAtMTU3LjUgcTQxIC03MSAxMTIgLTExMiBxNzIgLTQzIDE1OCAtNDMgbDYyNSAwIGwwIC0xNTYyIGwtNjI1IDAgcS04NiAwIC0xNTggLTQzIHEtNzEgLTQxIC0xMTIgLTExMiBxLTQzIC03MyAtNDMgLTE1OCBxMCAtODUgNDMgLTE1OCBxNDEgLTcxIDExMiAtMTEyIHE3MiAtNDMgMTU4IC00MiBsMTg3NSAwIHE4NSAwIDE1NyA0MiBxNzEgNDEgMTEyIDExMiBxNDMgNzMgNDMgMTU4IHEwIDg1IC00MyAxNTggcS00MSA3MSAtMTEyIDExMiBxLTcyIDQzIC0xNTcgNDMgbC02MjUgMCBsMCAxODc1IHEwIDg1IC00MyAxNTcgcS00MSA3MSAtMTEyIDExMiBxLTczIDQzIC0xNTggNDMgbC05MzcgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtZW51IiB1bmljb2RlPSImI3hlYTBhOyIgZD0iTTYyNSA0Mzc1IGwwIC02MjUgbDM3NTAgMCBsMCA2MjUgbC0zNzUwIDAgWk02MjUgMjgxMyBsMCAtNjI1IGwzNzUwIDAgbDAgNjI1IGwtMzc1MCAwIFpNNjI1IDEyNTAgbDAgLTYyNSBsMzc1MCAwIGwwIDYyNSBsLTM3NTAgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtb3JlIiB1bmljb2RlPSImI3hlYTBiOyIgZD0iTTc4MSAzMDQ3IHExMTIgMCAyMTMgLTQzIHE5OCAtNDIgMTc0IC0xMTcuNSBxNzYgLTc1LjUgMTE3IC0xNzMuNSBxNDMgLTEwMiA0MyAtMjEzIHEwIC0xMTEgLTQzIC0yMTMgcS00MSAtOTggLTExNyAtMTczLjUgcS03NiAtNzUuNSAtMTc0IC0xMTcuNSBxLTEwMSAtNDMgLTIxMi41IC00MyBxLTExMS41IDAgLTIxMy41IDQzIHEtOTggNDIgLTE3My41IDExNy41IHEtNzUuNSA3NS41IC0xMTcuNSAxNzMuNSBxLTQzIDEwMiAtNDMgMjEzIHEwIDExMSA0MyAyMTMgcTQyIDk4IDExNy41IDE3My41IHE3NS41IDc1LjUgMTczLjUgMTE3LjUgcTEwMiA0MyAyMTMgNDMgWk0yNTAwIDMwNDcgcTExMSAwIDIxMyAtNDMgcTk4IC00MiAxNzMuNSAtMTE3LjUgcTc1LjUgLTc1LjUgMTE3LjUgLTE3My41IHE0MyAtMTAyIDQzIC0yMTMgcTAgLTExMSAtNDMgLTIxMyBxLTQyIC05OCAtMTE3LjUgLTE3My41IHEtNzUuNSAtNzUuNSAtMTczLjUgLTExNy41IHEtMTAyIC00MyAtMjEzIC00MyBxLTExMSAwIC0yMTMgNDMgcS05OCA0MiAtMTczLjUgMTE3LjUgcS03NS41IDc1LjUgLTExNy41IDE3My41IHEtNDMgMTAyIC00MyAyMTMgcTAgMTExIDQzIDIxMyBxNDIgOTggMTE3LjUgMTczLjUgcTc1LjUgNzUuNSAxNzMuNSAxMTcuNSBxMTAyIDQzIDIxMyA0MyBaTTQyMTkgMzA0NyBxMTExIDAgMjEzIC00MyBxOTggLTQyIDE3My41IC0xMTcuNSBxNzUuNSAtNzUuNSAxMTcuNSAtMTczLjUgcTQzIC0xMDIgNDMgLTIxMyBxMCAtMTExIC00MyAtMjEzIHEtNDIgLTk4IC0xMTcuNSAtMTczLjUgcS03NS41IC03NS41IC0xNzMuNSAtMTE3LjUgcS0xMDIgLTQzIC0yMTMuNSAtNDMgcS0xMTEuNSAwIC0yMTIuNSA0MyBxLTk4IDQyIC0xNzQgMTE3LjUgcS03NiA3NS41IC0xMTcgMTczLjUgcS00MyAxMDIgLTQzIDIxMyBxMCAxMTEgNDMgMjEzIHE0MSA5OCAxMTcgMTczLjUgcTc2IDc1LjUgMTc0IDExNy41IHExMDEgNDMgMjEzIDQzIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InBhdXNlIiB1bmljb2RlPSImI3hlYTBjOyIgZD0iTTkzOCA0MDYzIGwwIC0zMTI1IGwxMjUwIDAgbDAgMzEyNSBsLTEyNTAgMCBaTTI4MTMgNDA2MyBsMCAtMzEyNSBsMTI1MCAwIGwwIDMxMjUgbC0xMjUwIDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0icGxheSIgdW5pY29kZT0iJiN4ZWEwZDsiIGQ9Ik02MjUgNDM3NSBsMzc1MCAtMTg3NSBsLTM3NTAgLTE4NzUgbDAgMzc1MCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJ0cmlhbmdsZS1zIiB1bmljb2RlPSImI3hlYTBlOyIgZD0iTTEyNTAgMzEyNSBsMTI1MCAtMTI1MCBsMTI1MCAxMjQ4IGwtMjUwMCAyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InVzZXItc3RhdHVzLWF3YXkiIHVuaWNvZGU9IiYjeGVhMGY7IiBkPSJNMjE1NiA0OTY5IHEtMzYwIC00NiAtNjk1IC0xOTcgcS0zMjYgLTE0NyAtNjAxIC0zODAgcS0yNzQgLTIzMSAtNDcyIC01MjggcS0yMDIgLTMwMSAtMzA5IC02NDIgcS0xMTAgLTM1MyAtMTEwIC03MjIgcTAgLTQwNiAxMjggLTc4OCBxMTIzIC0zNzAgMzU2IC02ODYgcTIyOSAtMzEzIDU0MiAtNTQyIHEzMTYgLTIzMiA2ODYgLTM1NiBxMzgyIC0xMjggNzg4IC0xMjggcTM2OSAwIDcyMiAxMDcgcTM0MiAxMDQgNjQ0IDMwMSBxMjk4IDE5NCA1MzMgNDYzIHEyMzYgMjcwIDM4OSA1OTMgcTE1NiAzMzEgMjEyIDY5MiBxLTE4OCAtMjA0IC00MjMuNSAtMzUxIHEtMjM1LjUgLTE0NyAtNDk4LjUgLTIyNSBxLTI2OSAtODAgLTU0NyAtODAgcS0zMjIgMCAtNjI4IDEwMyBxLTI5NSA5OSAtNTQ4IDI4NiBxLTI1MSAxODQgLTQzNSA0MzUgcS0xODcgMjUzIC0yODYgNTQ4IHEtMTAzIDMwNiAtMTAzIDYyOCBxMCAyOTMgODAgNTY4IHE3OCAyNjkgMjI1LjUgNDk4LjUgcTE0Ny41IDIyOS41IDM1MC41IDQwMi41IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InVzZXItc3RhdHVzLWRuZCIgdW5pY29kZT0iJiN4ZWExMDsiIGQ9Ik0yNTAwIDUwMDAgcS00MDYgMCAtNzg4IC0xMjggcS0zNzAgLTEyNCAtNjg2IC0zNTYgcS0zMTMgLTIyOSAtNTQyIC01NDIgcS0yMzIgLTMxNiAtMzU2IC02ODYgcS0xMjggLTM4MiAtMTI4IC03ODggcTAgLTQwNiAxMjggLTc4OCBxMTI0IC0zNzAgMzU2IC02ODYgcTIyOSAtMzEzIDU0MiAtNTQyIHEzMTYgLTIzMiA2ODYgLTM1NiBxMzgyIC0xMjggNzg4IC0xMjggcTQwNiAwIDc4OCAxMjggcTM3MCAxMjQgNjg2IDM1NiBxMzEzIDIyOSA1NDIgNTQyIHEyMzIgMzE2IDM1NiA2ODYgcTEyOCAzODIgMTI4IDc4OCBxMCA0MDYgLTEyOCA3ODggcS0xMjQgMzcwIC0zNTYgNjg2IHEtMjI5IDMxMyAtNTQyIDU0MiBxLTMxNiAyMzIgLTY4NiAzNTYgcS0zODIgMTI4IC03ODggMTI4IFpNMTU2MyAyOTY5IGwxODc1IDAgcTkxIDAgMTc4IC0zOCBxODQgLTM3IDE1MCAtMTAzIHE2NiAtNjYgMTAyIC0xNDkgcTM4IC04NyAzOCAtMTc5IHEwIC05MiAtMzggLTE3OSBxLTM2IC04MyAtMTAyIC0xNDkgcS02NiAtNjYgLTE1MCAtMTAzIHEtODcgLTM4IC0xNzggLTM4IGwtMTg3NSAwIHEtOTIgMCAtMTc5IDM4IHEtODQgMzcgLTE1MCAxMDMgcS02NiA2NiAtMTAyIDE0OSBxLTM4IDg3IC0zOCAxNzkgcTAgOTIgMzggMTc5IHEzNiA4MyAxMDIgMTQ5IHE2NiA2NiAxNTAgMTAzIHE4NyAzOCAxNzkgMzggWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0idXNlci1zdGF0dXMtaW52aXNpYmxlIiB1bmljb2RlPSImI3hlYTExOyIgZD0iTTI1MDAgNTAwMCBxLTQwNiAwIC03ODggLTEyOCBxLTM3MCAtMTI0IC02ODYgLTM1NiBxLTMxMyAtMjI5IC01NDIgLTU0MiBxLTIzMiAtMzE2IC0zNTYgLTY4NiBxLTEyOCAtMzgyIC0xMjggLTc4OCBxMCAtNDA2IDEyOCAtNzg4IHExMjQgLTM3MCAzNTYgLTY4NiBxMjI5IC0zMTMgNTQyIC01NDIgcTMxNiAtMjMyIDY4NiAtMzU2IHEzODIgLTEyOCA3ODggLTEyOCBxNDA2IDAgNzg4IDEyOCBxMzcwIDEyNCA2ODYgMzU2IHEzMTMgMjI5IDU0MiA1NDIgcTIzMiAzMTYgMzU2IDY4NiBxMTI4IDM4MiAxMjggNzg4IHEwIDQwNiAtMTI4IDc4OCBxLTEyNCAzNzAgLTM1NiA2ODYgcS0yMjkgMzEzIC01NDIgNTQyIHEtMzE2IDIzMiAtNjg2IDM1NiBxLTM4MiAxMjggLTc4OCAxMjggWk0yNTAwIDQwMDAgcTMxMSAwIDU5MCAtMTE2IHEyNzEgLTExMiA0NzYuNSAtMzE3LjUgcTIwNS41IC0yMDUuNSAzMTcuNSAtNDc2LjUgcTExNiAtMjc5IDExNiAtNTkwIHEwIC0zMTEgLTExNiAtNTkwIHEtMTEyIC0yNzEgLTMxNy41IC00NzYuNSBxLTIwNS41IC0yMDUuNSAtNDc2LjUgLTMxNy41IHEtMjc5IC0xMTYgLTU5MCAtMTE2IHEtMzExIDAgLTU5MCAxMTYgcS0yNzEgMTEyIC00NzYuNSAzMTcuNSBxLTIwNS41IDIwNS41IC0zMTcuNSA0NzYuNSBxLTExNiAyNzkgLTExNiA1OTAgcTAgMzExIDExNiA1OTAgcTExMiAyNzEgMzE3LjUgNDc2LjUgcTIwNS41IDIwNS41IDQ3Ni41IDMxNy41IHEyNzkgMTE2IDU5MCAxMTYgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0idXNlci1zdGF0dXMtb25saW5lIiB1bmljb2RlPSImI3hlYTEyOyIgZD0iTTE1MDAgMTUwMCBsMjAwMCAwIGwwIDIwMDAgbC0yMDAwIDAgbDAgLTIwMDAgWk0yNTAwIDUwMDAgcS00MDYgMCAtNzg4IC0xMjggcS0zNzAgLTEyNCAtNjg2IC0zNTYgcS0zMTMgLTIyOSAtNTQyIC01NDIgcS0yMzIgLTMxNiAtMzU2IC02ODYgcS0xMjggLTM4MiAtMTI4IC03ODggcTAgLTQwNiAxMjggLTc4OCBxMTI0IC0zNzAgMzU2IC02ODYgcTIyOSAtMzEzIDU0MiAtNTQyIHEzMTYgLTIzMiA2ODYgLTM1NiBxMzgyIC0xMjggNzg4IC0xMjggcTQwNiAwIDc4OCAxMjggcTM3MCAxMjQgNjg2IDM1NiBxMzEzIDIyOSA1NDIgNTQyIHEyMzIgMzE2IDM1NiA2ODYgcTEyOCAzODIgMTI4IDc4OCBxMCA0MDYgLTEyOCA3ODggcS0xMjQgMzcwIC0zNTYgNjg2IHEtMjI5IDMxMyAtNTQyIDU0MiBxLTMxNiAyMzIgLTY4NiAzNTYgcS0zODIgMTI4IC03ODggMTI4IFoiIC8+PC9mb250PjwvZGVmcz48L3N2Zz4=\"","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { VTooltip } from 'v-tooltip'\nimport './index.scss'\n\n// force scope the tooltip and use .vue-tooltip\n// instead of .tooltip to avoid server compatibility\n// issues and the use of !important\nVTooltip.options.defaultTemplate = `<div class=\"vue-tooltip\" role=\"tooltip\" data-v-${SCOPE_VERSION}><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>`\nVTooltip.options.defaultHtml = false\n\nexport default VTooltip\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Popover.vue?vue&type=style&index=0&lang=scss&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7a7fb996\", content, true, {});","module.exports = require(\"core-js/modules/es.string.replace\");","\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst GenRandomId = (length) => {\n\treturn Math.random()\n\t\t.toString(36)\n\t\t.replace(/[^a-z]+/g, '')\n\t\t.substr(0, length || 5)\n}\n\nexport default GenRandomId\n","module.exports = require(\"core-js/modules/es.array.concat\");","module.exports = require(\"@nextcloud/l10n/dist/gettext\");","module.exports = require(\"core-js/modules/es.symbol\");","module.exports = require(\"core-js/modules/es.string.trim\");","module.exports = require(\"core-js/modules/es.number.constructor\");","\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue'\n\nexport default {\n\tbefore() {\n\t\t// all actions requires a valid text content\n\t\t// if none, forbid the component mount and throw error\n\t\tif (!this.$slots.default || this.text.trim() === '') {\n\t\t\tVue.util.warn(`${this.$options.name} cannot be empty and requires a meaningful text content`, this)\n\t\t\tthis.$destroy()\n\t\t\tthis.$el.remove()\n\t\t}\n\t},\n\n\tbeforeUpdate() {\n\t\tthis.text = this.getText()\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// $slots are not reactive.\n\t\t\t// We need to update  the content manually\n\t\t\ttext: this.getText(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisLongText() {\n\t\t\treturn this.text && this.text.trim().length > 20\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetText() {\n\t\t\treturn this.$slots.default ? this.$slots.default[0].text.trim() : ''\n\t\t},\n\t},\n}\n","module.exports = require(\"core-js/modules/web.url\");","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VPopover',_vm._g(_vm._b({attrs:{\"popover-base-class\":\"popover\",\"popover-wrapper-class\":\"popover__wrapper\",\"popover-arrow-class\":\"popover__arrow\",\"popover-inner-class\":\"popover__inner\"}},'VPopover',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"trigger\"),_vm._v(\" \"),_c('template',{slot:\"popover\"},[_vm._t(\"default\")],2)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Popover.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Popover.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright Copyright (c) 2019 Marco Ambrosini <marcoambrosini@pm.me>\n  -\n  - @author Marco Ambrosini <marcoambrosini@pm.me>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n-->\n\n<docs>\n\n### General description\n\nThis component is just a wrapper for the v-component plugin by Akryum,\nplease refer to this documentation for customization:\nhttps://github.com/Akryum/v-tooltip\n\nThis components has two slots:\n* 'trigger' which can be any html element and it will trigger the popover\nthis slot is optional since you can toggle the popover also by updating the\nopen prop on this component;\n\n* a default slot that is for the content of the popover.\n\n### Examples\n\nWith a `<button>` as a trigger:\n```vue\n<template>\n\t<Popover>\n\t\t<button slot=\"trigger\"> I am the trigger </button>\n\t\t<template>\n\t\t<h2>this is some content</h2>\n\t\t</template>\n\t</Popover>\n</template>\n```\n</docs>\n\n<template>\n\t<VPopover\n\t\tv-bind=\"$attrs\"\n\t\tpopover-base-class=\"popover\"\n\t\tpopover-wrapper-class=\"popover__wrapper\"\n\t\tpopover-arrow-class=\"popover__arrow\"\n\t\tpopover-inner-class=\"popover__inner\"\n\t\tv-on=\"$listeners\">\n\t\t<!-- This will be the popover target (for the events and position) -->\n\t\t<slot name=\"trigger\" />\n\t\t<!-- This will be the content of the popover -->\n\t\t<template slot=\"popover\">\n\t\t\t<slot />\n\t\t</template>\n\t</VPopover>\n</template>\n\n<script>\nimport { VPopover } from 'v-tooltip'\n\nexport default {\n\tname: 'Popover',\n\tcomponents: {\n\t\tVPopover,\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n$arrow-width: 10px;\n\n.popover {\n\tz-index: 100000;\n\tdisplay: block !important;\n\n\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\n\n\t&__inner {\n\t\tpadding: 0;\n\t\tcolor: var(--color-main-text);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground: var(--color-main-background);\n\t}\n\n\t&__arrow {\n\t\tposition: absolute;\n\t\tz-index: 1;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tmargin: $arrow-width;\n\t\tborder-style: solid;\n\t\tborder-color: var(--color-main-background);\n\t}\n\n\t&[x-placement^='top'] {\n\t\tmargin-bottom: $arrow-width;\n\n\t\t.popover__arrow {\n\t\t\tbottom: -$arrow-width;\n\t\t\tleft: calc(50% - $arrow-width);\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 0;\n\t\t\tborder-width: $arrow-width $arrow-width 0 $arrow-width;\n\t\t\tborder-right-color: transparent !important;\n\t\t\tborder-bottom-color: transparent !important;\n\t\t\tborder-left-color: transparent !important;\n\t\t}\n\t}\n\n\t&[x-placement^='bottom'] {\n\t\tmargin-top: $arrow-width;\n\n\t\t.popover__arrow {\n\t\t\ttop: -$arrow-width;\n\t\t\tleft: calc(50% - $arrow-width);\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 0;\n\t\t\tborder-width: 0 $arrow-width $arrow-width $arrow-width;\n\t\t\tborder-top-color: transparent !important;\n\t\t\tborder-right-color: transparent !important;\n\t\t\tborder-left-color: transparent !important;\n\t\t}\n\t}\n\n\t&[x-placement^='right'] {\n\t\tmargin-left: $arrow-width;\n\n\t\t.popover__arrow {\n\t\t\ttop: calc(50% - $arrow-width);\n\t\t\tleft: -$arrow-width;\n\t\t\tmargin-right: 0;\n\t\t\tmargin-left: 0;\n\t\t\tborder-width: $arrow-width $arrow-width $arrow-width 0;\n\t\t\tborder-top-color: transparent !important;\n\t\t\tborder-bottom-color: transparent !important;\n\t\t\tborder-left-color: transparent !important;\n\t\t}\n\t}\n\n\t&[x-placement^='left'] {\n\t\tmargin-right: $arrow-width;\n\n\t\t.popover__arrow {\n\t\t\ttop: calc(50% - $arrow-width);\n\t\t\tright: -$arrow-width;\n\t\t\tmargin-right: 0;\n\t\t\tmargin-left: 0;\n\t\t\tborder-width: $arrow-width 0 $arrow-width $arrow-width;\n\t\t\tborder-top-color: transparent !important;\n\t\t\tborder-right-color: transparent !important;\n\t\t\tborder-bottom-color: transparent !important;\n\t\t}\n\t}\n\n\t&[aria-hidden='true'] {\n\t\tvisibility: hidden;\n\t\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\n\t\topacity: 0;\n\t}\n\n\t&[aria-hidden='false'] {\n\t\tvisibility: visible;\n\t\ttransition: opacity var(--animation-quick);\n\t\topacity: 1;\n\t}\n}\n\n</style>\n","/**\n * @copyright Copyright (c) 2019 Marco Ambrosini <marcoambrosini@pm.me>\n *\n * @author Marco Ambrosini <marcoambrosini@pm.me>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Popover from './Popover'\n\nexport default Popover\n","import { n, t } from '../l10n'\n\nexport default {\n\tmethods: {\n\t\tn,\n\t\tt,\n\t},\n}\n","module.exports = require(\"core-js/modules/es.symbol.description\");","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=style&index=0&id=69f4d5ed&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7d4b1d60\", content, true, {});","\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Get the first parent component matching the provided name\n *\n * @param {Object} context the context to search from (usualy this)\n * @param {string} name the parent name\n * @returns {Object} the parent component\n */\nconst GetParent = function(context, name) {\n\tlet parent = context.$parent\n\twhile (parent) {\n\t\tif (parent.$options.name === name) {\n\t\t\treturn parent\n\t\t}\n\t\tparent = parent.$parent\n\t}\n}\n\nexport default GetParent\n","\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport actionGlobal from './actionGlobal'\nimport GetParent from '../utils/GetParent'\n\nexport default {\n\tmixins: [actionGlobal],\n\tprops: {\n\t\t/**\n\t\t * Icon to show with the action, can be either a CSS class or an URL\n\t\t */\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Title to show next to the icon\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Whether we close the Actions menu after the click\n\t\t */\n\t\tcloseAfterClick: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Aria label for the button. Not needed if the button has text.\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tisIconUrl() {\n\t\t\ttry {\n\t\t\t\treturn new URL(this.icon)\n\t\t\t} catch (error) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonClick(event) {\n\t\t\t/**\n\t\t\t * Emitted when the action is clicked\n\t\t\t * @type {Event}\n\t\t\t */\n\t\t\tthis.$emit('click', event)\n\n\t\t\tif (this.closeAfterClick) {\n\t\t\t\tconst parent = GetParent(this, 'Actions')\n\t\t\t\tif (parent && parent.closeMenu) {\n\t\t\t\t\tparent.closeMenu()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n","module.exports = require(\"core-js/modules/es.array.slice\");","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue'\n\n/**\n * Validate children of a vue component\n *\n * @param {Object[]} slots the vue component slot\n * @param {String[]} allowed the allowed components name\n * @param {Object} vm the vue component instance\n */\nconst ValidateSlot = (slots, allowed, vm) => {\n\tif (slots === undefined) {\n\t\treturn\n\t}\n\n\tfor (let index = slots.length - 1; index >= 0; index--) {\n\t\tconst node = slots[index]\n\t\t// also check against allowed to avoid uninitiated vnodes with no componentOptions\n\t\tconst isHtmlElement = !node.componentOptions && node.tag && allowed.indexOf(node.tag) === -1\n\t\tconst isVueComponent = !!node.componentOptions && typeof node.componentOptions.tag === 'string'\n\t\tconst isForbiddenComponent = isVueComponent && allowed.indexOf(node.componentOptions.tag) === -1\n\n\t\t// if html element or not a vue component or vue component not in allowed tags\n\t\tif (isHtmlElement || !isVueComponent || isForbiddenComponent) {\n\t\t\t// only warn when html elment or forbidden component\n\t\t\t// sometimes text nodes are present which are hardly removeable by the developer and spam the warnings\n\t\t\tif (isHtmlElement || isForbiddenComponent) {\n\t\t\t\tVue.util.warn(`${isHtmlElement ? node.tag : node.componentOptions.tag} is not allowed inside the ${vm.$options.name} component`, vm)\n\t\t\t}\n\n\t\t\t// cleanup\n\t\t\tslots.splice(index, 1)\n\t\t}\n\t}\n}\n\nexport default ValidateSlot\n","module.exports = require(\"core-js/modules/es.symbol.iterator\");","module.exports = require(\"core-js/modules/es.array.filter\");","module.exports = require(\"core-js/modules/es.array.from\");","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Actions from './Actions'\n\nexport default Actions\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!./index.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"941c791e\", content, true, {});","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-tooltip[data-v-67af392]{position:absolute;z-index:100000;right:auto;left:auto;display:block;margin:0;margin-top:-3px;padding:10px 0;text-align:left;text-align:start;opacity:0;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.vue-tooltip[data-v-67af392][x-placement^='top'] .tooltip-arrow{bottom:0;margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-67af392][x-placement^='bottom'] .tooltip-arrow{top:0;margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent;border-right-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-67af392][x-placement^='right'] .tooltip-arrow{right:100%;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-67af392][x-placement^='left'] .tooltip-arrow{left:100%;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.vue-tooltip[data-v-67af392][aria-hidden='true']{visibility:hidden;transition:opacity .15s, visibility .15s;opacity:0}.vue-tooltip[data-v-67af392][aria-hidden='false']{visibility:visible;transition:opacity .15s;opacity:1}.vue-tooltip[data-v-67af392] .tooltip-inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.vue-tooltip[data-v-67af392] .tooltip-arrow{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:var(--color-main-background)}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isValidSingleAction && !_vm.forceMenu)?_c('element',_vm._b({directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.firstAction.text),expression:\"firstAction.text\",modifiers:{\"auto\":true}}],staticClass:\"action-item action-item--single\",class:[_vm.firstAction.icon, _vm.firstActionClass],attrs:{\"rel\":\"noreferrer noopener\"},on:_vm._d({},[_vm.firstActionEventBinding,_vm.execFirstAction])},'element',_vm.firstActionBinding,false),[_c('span',{attrs:{\"aria-hidden\":true,\"hidden\":\"\"}},[_vm._t(\"default\")],2)]):_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasMultipleActions || _vm.forceMenu),expression:\"hasMultipleActions || forceMenu\"}],staticClass:\"action-item\",class:{'action-item--open': _vm.opened}},[_c('Popover',{attrs:{\"delay\":0,\"handle-resize\":true,\"open\":_vm.opened,\"placement\":_vm.placement,\"boundaries-element\":_vm.boundariesElement,\"container\":_vm.container},on:{\"update:open\":function($event){_vm.opened=$event},\"show\":_vm.openMenu,\"apply-show\":_vm.onOpen,\"hide\":_vm.closeMenu}},[_c('button',{ref:\"menuButton\",staticClass:\"icon action-item__menutoggle\",class:( _obj = {}, _obj[_vm.defaultIcon] = true, _obj['action-item__menutoggle--with-title'] =  _vm.menuTitle, _obj['action-item__menutoggle--primary'] =  _vm.primary, _obj ),attrs:{\"slot\":\"trigger\",\"aria-label\":_vm.ariaLabel,\"aria-haspopup\":\"true\",\"aria-controls\":_vm.randomId,\"aria-expanded\":_vm.opened},slot:\"trigger\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.menuTitle)+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.opened),expression:\"opened\"}],ref:\"menu\",class:{ open: _vm.opened },attrs:{\"tabindex\":\"-1\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.focusPreviousAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.focusNextAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.focusNextAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }if(!$event.shiftKey){ return null; }if($event.ctrlKey||$event.altKey||$event.metaKey){ return null; }return _vm.focusPreviousAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"page-up\",undefined,$event.key,undefined)){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.focusFirstAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"page-down\",undefined,$event.key,undefined)){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.focusLastAction($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();return _vm.closeMenu($event)}],\"mousemove\":_vm.onMouseFocusAction}},[_c('ul',{attrs:{\"id\":_vm.randomId,\"tabindex\":\"-1\"}},[(_vm.opened)?[_vm._t(\"default\")]:_vm._e()],2)])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n  - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @author John Molakvoæ <skjnldsv@protonmail.com>\n  - @author Marco Ambrosini <marcoambrosini@pm.me\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<!-- Accessibility guidelines:\nhttps://www.w3.org/TR/wai-aria-practices/examples/menu-button/menu-button-actions.html -->\n\n<docs>\n### Single action\n\n```\n<Actions>\n\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n</Actions>\n```\n\n### Multiple actions\n\n```\n<Actions>\n\t<ActionButton icon=\"icon-edit\" @click=\"alert('Edit')\">Edit</ActionButton>\n\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n\t<ActionLink icon=\"icon-external\" title=\"Link\" href=\"https://nextcloud.com\" />\n</Actions>\n```\n\n### Multiple actions with custom icon\n\n```\n<Actions default-icon=\"icon-edit\">\n\t<ActionButton icon=\"icon-edit\" @click=\"alert('Edit')\">Edit</ActionButton>\n\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n\t<ActionLink icon=\"icon-external\" title=\"Link\" href=\"https://nextcloud.com\" />\n</Actions>\n```\n\n### With menu title\n\n```\n<Actions default-icon=\"icon-edit\" menu-title=\"Object management\">\n\t<ActionButton icon=\"icon-edit\">Rename</ActionButton>\n\t<ActionButton icon=\"icon-delete\">Delete</ActionButton>\n\t<ActionButton icon=\"icon-confirm\">Validate</ActionButton>\n\t<ActionButton icon=\"icon-download\">Download</ActionButton>\n</Actions>\n```\n\n### Various icons styles\n```\n<Actions :primary=\"true\">\n\t<ActionButton icon=\"icon-edit\">Edit</ActionButton>\n\t<ActionButton icon=\"icon-delete\">Delete</ActionButton>\n</Actions>\n```\n\n```\n<Actions default-icon=\"icon-add-white\" :primary=\"true\" menu-title=\"Object management\">\n\t<ActionButton icon=\"icon-edit\">Rename</ActionButton>\n\t<ActionButton icon=\"icon-delete\">Delete</ActionButton>\n\t<ActionButton icon=\"icon-confirm\">Validate</ActionButton>\n\t<ActionButton icon=\"icon-download\">Download</ActionButton>\n</Actions>\n```\n\n### Custom icon slot\n```\n<Actions :primary=\"true\">\n\t<ActionButton><template #icon><MagnifyIcon /></template>Search</ActionButton>\n\t<ActionButton icon=\"icon-delete\">Delete</ActionButton>\n</Actions>\n```\n\n</docs>\n<template>\n\t<!-- if only one action, check if we need to bind to click or not -->\n\t<element v-if=\"isValidSingleAction && !forceMenu\"\n\t\tv-tooltip.auto=\"firstAction.text\"\n\t\tv-bind=\"firstActionBinding\"\n\t\t:class=\"[firstAction.icon, firstActionClass]\"\n\t\tclass=\"action-item action-item--single\"\n\t\trel=\"noreferrer noopener\"\n\t\t@[firstActionEventBinding]=\"execFirstAction\">\n\t\t<!-- fake slot to gather main action -->\n\t\t<span :aria-hidden=\"true\" hidden>\n\t\t\t<!-- @slot All action elements passed into the default slot will be used -->\n\t\t\t<slot />\n\t\t</span>\n\t</element>\n\n\t<!-- more than one action -->\n\t<div v-else\n\t\tv-show=\"hasMultipleActions || forceMenu\"\n\t\t:class=\"{'action-item--open': opened}\"\n\t\tclass=\"action-item\">\n\t\t<!-- If more than one action, create a popovermenu -->\n\t\t<Popover\n\t\t\t:delay=\"0\"\n\t\t\t:handle-resize=\"true\"\n\t\t\t:open.sync=\"opened\"\n\t\t\t:placement=\"placement\"\n\t\t\t:boundaries-element=\"boundariesElement\"\n\t\t\t:container=\"container\"\n\t\t\t@show=\"openMenu\"\n\t\t\t@apply-show=\"onOpen\"\n\t\t\t@hide=\"closeMenu\">\n\t\t\t<!-- Menu open/close trigger button -->\n\t\t\t<button slot=\"trigger\"\n\t\t\t\tref=\"menuButton\"\n\t\t\t\tclass=\"icon action-item__menutoggle\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t[defaultIcon]: true,\n\t\t\t\t\t'action-item__menutoggle--with-title': menuTitle,\n\t\t\t\t\t'action-item__menutoggle--primary': primary\n\t\t\t\t}\"\n\t\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t:aria-controls=\"randomId\"\n\t\t\t\t:aria-expanded=\"opened\">\n\t\t\t\t{{ menuTitle }}\n\t\t\t</button>\n\n\t\t\t<!-- Menu content -->\n\t\t\t<div v-show=\"opened\"\n\t\t\t\tref=\"menu\"\n\t\t\t\t:class=\"{ open: opened }\"\n\t\t\t\ttabindex=\"-1\"\n\t\t\t\t@keydown.up.exact=\"focusPreviousAction\"\n\t\t\t\t@keydown.down.exact=\"focusNextAction\"\n\t\t\t\t@keydown.tab.exact=\"focusNextAction\"\n\t\t\t\t@keydown.shift.tab.exact=\"focusPreviousAction\"\n\t\t\t\t@keydown.page-up.exact=\"focusFirstAction\"\n\t\t\t\t@keydown.page-down.exact=\"focusLastAction\"\n\t\t\t\t@keydown.esc.exact.prevent=\"closeMenu\"\n\t\t\t\t@mousemove=\"onMouseFocusAction\">\n\t\t\t\t<!-- menu content -->\n\t\t\t\t<ul :id=\"randomId\" tabindex=\"-1\">\n\t\t\t\t\t<template v-if=\"opened\">\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</template>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</Popover>\n\t</div>\n</template>\n<script>\nimport Tooltip from '../../directives/Tooltip'\nimport GenRandomId from '../../utils/GenRandomId'\nimport ValidateSlot from '../../utils/ValidateSlot'\nimport { t } from '../../l10n'\nimport Popover from '../Popover'\n\n// This is the list of ALL the ALLOWED components\n// in the default SLOT\nconst allowedChildren = [\n\t'ActionButton',\n\t'ActionCheckbox',\n\t'ActionInput',\n\t'ActionLink',\n\t'ActionRadio',\n\t'ActionRouter',\n\t'ActionSeparator',\n\t'ActionText',\n\t'ActionTextEditable',\n]\n\nconst focusableSelector = '.focusable'\n\n/**\n * The Actions component can be used to display one ore more actions.\n * If only a single action is provided, it will be rendered as an inline icon.\n * For more, a menu indicator will be shown and a popovermenu containing the\n * actions will be opened on click.\n *\n * @since 0.10.0\n */\nexport default {\n\tname: 'Actions',\n\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\n\tcomponents: {\n\t\tPopover,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Specify the open state of the popover menu\n\t\t */\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Force the actions to display in a three dot menu\n\t\t */\n\t\tforceMenu: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Specify the menu title\n\t\t */\n\t\tmenuTitle: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Apply primary styling for this menu\n\t\t */\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Icon to show for the toggle menu button\n\t\t * when more than one action is inside the actions component.\n\t\t * Only replace the default three-dot icon if really necessary.\n\t\t */\n\t\tdefaultIcon: {\n\t\t\ttype: String,\n\t\t\tdefault: 'action-item__menutoggle--default-icon',\n\t\t},\n\n\t\t/**\n\t\t * Aria label for the actions menu\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Actions'),\n\t\t},\n\n\t\t/**\n\t\t * Wanted direction of the menu\n\t\t */\n\t\tplacement: {\n\t\t\ttype: String,\n\t\t\tdefault: 'bottom',\n\t\t},\n\n\t\t/**\n\t\t * DOM element for the actions' popover boundaries\n\t\t */\n\t\tboundariesElement: {\n\t\t\ttype: Element,\n\t\t\tdefault: () => document.querySelector('body'),\n\t\t},\n\n\t\t/**\n\t\t * Selector for the actions' popover container\n\t\t */\n\t\tcontainer: {\n\t\t\ttype: String,\n\t\t\tdefault: 'body',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tactions: [],\n\t\t\topened: this.open,\n\t\t\tfocusIndex: 0,\n\t\t\trandomId: 'menu-' + GenRandomId(),\n\t\t\t// Making children reactive!\n\t\t\t// By binding this here, vuejs will track the object content\n\t\t\t// Needed for firstAction reactivity !!!\n\t\t\tchildren: this.$children,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is there more than one action?\n\t\t * @returns {boolean}\n\t\t */\n\t\thasMultipleActions() {\n\t\t\treturn this.actions.length > 1\n\t\t},\n\t\t/**\n\t\t * Is there any first action ?\n\t\t * And is it allowed as a standalone element ?\n\t\t * @returns {boolean}\n\t\t */\n\t\tisValidSingleAction() {\n\t\t\treturn this.actions.length === 1\n\t\t\t\t&& this.firstActionElement !== null\n\t\t},\n\t\t/**\n\t\t * First action vnode\n\t\t * @returns {Object} return the first action vue vnode\n\t\t */\n\t\tfirstActionVNode() {\n\t\t\treturn this.actions[0]\n\t\t},\n\t\t/**\n\t\t * Reactive binding to the first children\n\t\t * Since we're here, it means we already passed all the proper checks\n\t\t * we can assume the first action is the first children too\n\t\t * @returns {Object} first action vue children object\n\t\t */\n\t\tfirstAction() {\n\t\t\treturn this.children[0]\n\t\t\t\t? this.children[0]\n\t\t\t\t: {}\n\t\t},\n\n\t\t/**\n\t\t * Binding of the first action to the template\n\t\t * @returns {Object} vue template v-bind shortcut\n\t\t */\n\t\tfirstActionBinding() {\n\t\t\tif (this.firstActionVNode && this.firstActionVNode.componentOptions) {\n\t\t\t\tconst tag = this.firstActionVNode.componentOptions.tag\n\t\t\t\tif (tag === 'ActionLink') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tis: 'a',\n\t\t\t\t\t\thref: this.firstAction.href,\n\t\t\t\t\t\ttarget: this.firstAction.target,\n\t\t\t\t\t\t'aria-label': this.firstAction.ariaLabel,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (tag === 'ActionRouter') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tis: 'router-link',\n\t\t\t\t\t\tto: this.firstAction.to,\n\t\t\t\t\t\texact: this.firstAction.exact,\n\t\t\t\t\t\t'aria-label': this.firstAction.ariaLabel,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (tag === 'ActionButton') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tis: 'button',\n\t\t\t\t\t\t'aria-label': this.firstAction.ariaLabel,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// other action types are not allowed as standalone buttons\n\t\t\treturn null\n\t\t},\n\n\t\t// return the event to bind if the firstActionVNode have an action\n\t\tfirstActionEvent() {\n\t\t\treturn this.firstActionVNode\n\t\t\t\t&& this.firstActionVNode.componentOptions\n\t\t\t\t&& this.firstActionVNode.componentOptions.listeners\n\t\t\t\t&& this.firstActionVNode.componentOptions.listeners.click\n\t\t},\n\t\tfirstActionEventBinding() {\n\t\t\treturn this.firstActionEvent ? 'click' : null\n\t\t},\n\t\tfirstActionClass() {\n\t\t\tconst staticClass = this.firstActionVNode && this.firstActionVNode.data.staticClass\n\t\t\tconst dynClass = this.firstActionVNode && this.firstActionVNode.data.class\n\t\t\treturn `${staticClass} ${dynClass}`\n\t\t},\n\t},\n\n\twatch: {\n\t\t// Watch parent prop\n\t\topen(state) {\n\t\t\tif (state === this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = state\n\t\t},\n\t},\n\tbeforeMount() {\n\t\t// init actions\n\t\tthis.initActions()\n\n\t\t// filter invalid menu items\n\t\tValidateSlot(this.$slots.default, allowedChildren, this)\n\t},\n\tbeforeUpdate() {\n\t\t// ! since we're using $slots to manage our actions\n\t\t// ! we NEED to update the actions if anything change\n\n\t\t// update children & actions\n\t\t// no need to init actions again since we bound it to $children\n\t\t// and the array is now reactive\n\t\t// init actions\n\t\tthis.initActions()\n\t\tValidateSlot(this.$slots.default, allowedChildren, this)\n\t},\n\n\tmethods: {\n\t\t// MENU STATE MANAGEMENT\n\t\topenMenu(e) {\n\t\t\tif (this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = true\n\n\t\t\t/**\n\t\t\t * Event emitted when the popover menu open state is changed\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('update:open', true)\n\n\t\t\t/**\n\t\t\t * Event emitted when the popover menu is closed\n\t\t\t */\n\t\t\tthis.$emit('open')\n\n\t\t\tthis.onOpen(e)\n\t\t},\n\t\tcloseMenu(e) {\n\t\t\tif (!this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = false\n\n\t\t\t/**\n\t\t\t * Event emitted when the popover menu open state is changed\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('update:open', false)\n\n\t\t\t/**\n\t\t\t * Event emitted when the popover menu is closed\n\t\t\t */\n\t\t\tthis.$emit('close')\n\n\t\t\t// close everything\n\t\t\tthis.opened = false\n\t\t\tthis.focusIndex = 0\n\n\t\t\t// focus back the menu button\n\t\t\tthis.$refs.menuButton.focus()\n\t\t},\n\n\t\tonOpen(event) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.focusFirstAction(event)\n\t\t\t})\n\t\t},\n\n\t\t// MENU KEYS & FOCUS MANAGEMENT\n\t\t// focus nearest focusable item on mouse move\n\t\t// DO NOT change the focus if the target is already focused\n\t\t// this will prevent issues with input being unfocused\n\t\t// on mouse move\n\t\tonMouseFocusAction(event) {\n\t\t\tif (document.activeElement === event.target) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst menuItem = event.target.closest('li')\n\t\t\tif (menuItem) {\n\t\t\t\tconst focusableItem = menuItem.querySelector(focusableSelector)\n\t\t\t\tif (focusableItem) {\n\t\t\t\t\tconst focusList = this.$refs.menu.querySelectorAll(focusableSelector)\n\t\t\t\t\tconst focusIndex = [...focusList].indexOf(focusableItem)\n\t\t\t\t\tif (focusIndex > -1) {\n\t\t\t\t\t\tthis.focusIndex = focusIndex\n\t\t\t\t\t\tthis.focusAction()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tremoveCurrentActive() {\n\t\t\tconst currentActiveElement = this.$refs.menu.querySelector('li.active')\n\t\t\tif (currentActiveElement) {\n\t\t\t\tcurrentActiveElement.classList.remove('active')\n\t\t\t}\n\t\t},\n\t\tfocusAction() {\n\t\t\t// TODO: have a global disabled state for non input elements\n\t\t\tconst focusElement = this.$refs.menu.querySelectorAll(focusableSelector)[this.focusIndex]\n\t\t\tif (focusElement) {\n\t\t\t\tthis.removeCurrentActive()\n\t\t\t\tconst liMenuParent = focusElement.closest('li.action')\n\t\t\t\tfocusElement.focus()\n\t\t\t\tif (liMenuParent) {\n\t\t\t\t\tliMenuParent.classList.add('active')\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tfocusPreviousAction(event) {\n\t\t\tif (this.opened) {\n\t\t\t\tif (this.focusIndex === 0) {\n\t\t\t\t\t// First element overflows to body-navigation (no preventDefault!) and closes Actions-menu\n\t\t\t\t\tthis.closeMenu()\n\t\t\t\t} else {\n\t\t\t\t\tthis.preventIfEvent(event)\n\t\t\t\t\tthis.focusIndex = this.focusIndex - 1\n\t\t\t\t}\n\t\t\t\tthis.focusAction()\n\t\t\t}\n\t\t},\n\t\tfocusNextAction(event) {\n\t\t\tif (this.opened) {\n\t\t\t\tconst indexLength = this.$refs.menu.querySelectorAll(focusableSelector).length - 1\n\t\t\t\tif (this.focusIndex === indexLength) {\n\t\t\t\t\t// Last element overflows to body-navigation (no preventDefault!) and closes Actions-menu\n\t\t\t\t\tthis.closeMenu()\n\t\t\t\t} else {\n\t\t\t\t\tthis.preventIfEvent(event)\n\t\t\t\t\tthis.focusIndex = this.focusIndex + 1\n\t\t\t\t}\n\t\t\t\tthis.focusAction()\n\t\t\t}\n\t\t},\n\t\tfocusFirstAction(event) {\n\t\t\tif (this.opened) {\n\t\t\t\tthis.preventIfEvent(event)\n\t\t\t\tthis.focusIndex = 0\n\t\t\t\tthis.focusAction()\n\t\t\t}\n\t\t},\n\t\tfocusLastAction(event) {\n\t\t\tif (this.opened) {\n\t\t\t\tthis.preventIfEvent(event)\n\t\t\t\tthis.focusIndex = this.$el.querySelectorAll(focusableSelector).length - 1\n\t\t\t\tthis.focusAction()\n\t\t\t}\n\t\t},\n\n\t\tpreventIfEvent(event) {\n\t\t\tif (event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\t\t\t}\n\t\t},\n\n\t\t// ACTIONS MANAGEMENT\n\t\t// exec the first action\n\t\texecFirstAction(event) {\n\t\t\tif (this.firstActionEvent) {\n\t\t\t\tthis.firstActionEvent(event)\n\t\t\t}\n\t\t},\n\t\tinitActions() {\n\t\t\t// filter out invalid slots\n\t\t\tthis.actions = (this.$slots.default || []).filter(node => !!node && !!node.componentOptions)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../../fonts/scss/iconfont-vue';\n\n.action-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\n\t// put a grey round background when menu is opened\n\t// or hover-focused\n\t&--single:hover,\n\t&--single:focus,\n\t&--single:active,\n\t&__menutoggle:hover,\n\t&__menutoggle:focus,\n\t&__menutoggle:active {\n\t\topacity: $opacity_full;\n\t\t// good looking on dark AND white bg\n\t\tbackground-color: $icon-focus-bg;\n\t}\n\n\t&.action-item--open .action-item__menutoggle {\n\t\topacity: $opacity_full;\n\t\tbackground-color: $action-background-hover;\n\t}\n\n\t// icons\n\t&--single,\n\t&__menutoggle {\n\t\tbox-sizing: border-box;\n\t\twidth: auto;\n\t\tmin-width: $clickable-area;\n\t\theight: $clickable-area;\n\t\tmargin: 0;\n\t\tpadding: $icon-margin;\n\t\tcursor: pointer;\n\t\tborder: none;\n\t\tborder-radius: $clickable-area / 2;\n\t\tbackground-color: transparent;\n\t}\n\n\t// icon-more\n\t&__menutoggle {\n\t\t// align menu icon in center\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\topacity: $opacity_normal;\n\t\tfont-weight: bold;\n\t\tline-height: $icon-size;\n\n\t\t&:before {\n\t\t\tcontent: '';\n\t\t}\n\n\t\t&--default-icon {\n\t\t\t@include iconfont('more');\n\t\t\t&::before {\n\t\t\t\tfont-size: $icon-size;\n\t\t\t}\n\t\t}\n\n\t\t&--with-title {\n\t\t\tposition: relative;\n\t\t\tpadding-left: $clickable-area;\n\t\t\twhite-space: nowrap;\n\t\t\topacity: $opacity_full;\n\t\t\tborder: 1px solid var(--color-border-dark);\n\t\t\t// with a title, we need to display this as a real button\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t\tbackground-position: $icon-margin center;\n\t\t\tfont-size: inherit;\n\t\t\t// non-background icon class\n\t\t\t&:before {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: $icon-margin;\n\t\t\t\tleft: $icon-margin;\n\t\t\t}\n\t\t}\n\n\t\t&--primary {\n\t\t\topacity: $opacity_full;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tborder: none;\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t.action-item--open &,\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\tcolor: var(--color-primary-text) !important;\n\t\t\t\tbackground-color: var(--color-primary-element-light) !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&--single {\n\t\topacity: $opacity_normal;\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\topacity: $opacity_full;\n\t\t}\n\t\t// hide anything the slot is displaying\n\t\t& > [hidden] {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n.ie,\n.edge {\n\t.action-item__menu,\n\t.action-item__menu .action-item__menu_arrow {\n\t\tborder: 1px solid var(--color-border);\n\t}\n}\n\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=script&lang=js&\"","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=style&index=0&id=33d3d922&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ec11ce7c\", content, true, {});","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst ScopeComponent = (Component) => {\n\t// Init mounted vue if none\n\tif (!Component.mounted) {\n\t\tComponent.mounted = []\n\t} else if (!Array.isArray(Component.mounted)) {\n\t\tComponent.mounted = [Component.mounted]\n\t}\n\n\t// Inject root scoping function\n\tComponent.mounted.push(function() {\n\t\tthis.$el.setAttribute(`data-v-${SCOPE_VERSION}`, '')\n\t})\n}\n\nexport default ScopeComponent\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Popover.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Popover.vue?vue&type=style&index=0&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".popover{z-index:100000;display:block !important;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.popover__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius);background:var(--color-main-background)}.popover__arrow{position:absolute;z-index:1;width:0;height:0;margin:10px;border-style:solid;border-color:var(--color-main-background)}.popover[x-placement^='top']{margin-bottom:10px}.popover[x-placement^='top'] .popover__arrow{bottom:-10px;left:calc(50% - $arrow-width);margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent !important;border-bottom-color:transparent !important;border-left-color:transparent !important}.popover[x-placement^='bottom']{margin-top:10px}.popover[x-placement^='bottom'] .popover__arrow{top:-10px;left:calc(50% - $arrow-width);margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent !important;border-right-color:transparent !important;border-left-color:transparent !important}.popover[x-placement^='right']{margin-left:10px}.popover[x-placement^='right'] .popover__arrow{top:calc(50% - $arrow-width);left:-10px;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent !important;border-bottom-color:transparent !important;border-left-color:transparent !important}.popover[x-placement^='left']{margin-right:10px}.popover[x-placement^='left'] .popover__arrow{top:calc(50% - $arrow-width);right:-10px;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent !important;border-right-color:transparent !important;border-bottom-color:transparent !important}.popover[aria-hidden='true']{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}.popover[aria-hidden='false']{visibility:visible;transition:opacity var(--animation-quick);opacity:1}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = require(\"core-js/modules/es.array.splice\");","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"action\",class:{ 'action--disabled': _vm.disabled }},[_c('button',{staticClass:\"action-button\",class:{ focusable: _vm.isFocusable },attrs:{\"aria-label\":_vm.ariaLabel},on:{\"click\":_vm.onClick}},[_vm._t(\"icon\",[_c('span',{staticClass:\"action-button__icon\",class:[_vm.isIconUrl ? 'action-button__icon--url' : _vm.icon],style:({ backgroundImage: _vm.isIconUrl ? (\"url(\" + _vm.icon + \")\") : null })})]),_vm._v(\" \"),(_vm.title)?_c('p',[_c('strong',{staticClass:\"action-button__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"action-button__longtext\",domProps:{\"textContent\":_vm._s(_vm.text)}})]):(_vm.isLongText)?_c('p',{staticClass:\"action-button__longtext\",domProps:{\"textContent\":_vm._s(_vm.text)}}):_c('span',{staticClass:\"action-button__text\"},[_vm._v(_vm._s(_vm.text))]),_vm._v(\" \"),(false)?_vm._t(\"default\"):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @author John Molakvoæ <skjnldsv@protonmail.com>\n  - @author Marco Ambrosini <marcoambrosini@pm.me>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<docs>\nThis component is made to be used inside of the [Actions](#Actions) component slots.\n\n```vue\n\t<Actions>\n\t\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n\t\t<ActionButton icon=\"icon-delete\" :close-after-click=\"true\" @click=\"alert('Delete and close menu')\">Delete and close</ActionButton>\n\t\t<ActionButton icon=\"icon-delete\" :disabled=\"true\" @click=\"alert('Disabled')\">Disabled button</ActionButton>\n\t</Actions>\n```\n\nIf you're using a long text you can specify a title\n\n```vue\n\t<Actions>\n\t\t<ActionButton icon=\"icon-add\" @click=\"alert('Add')\">Add new</ActionButton>\n\t\t<ActionButton icon=\"icon-delete\" title=\"Long button\" @click=\"alert('Delete')\">This button is associated with a very long text.\\nAnd with new lines too.</ActionButton>\n\t</Actions>\n```\n</docs>\n\n<template>\n\t<li class=\"action\" :class=\"{ 'action--disabled': disabled }\">\n\t\t<button\n\t\t\tclass=\"action-button\"\n\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t:class=\"{ focusable: isFocusable }\"\n\t\t\t@click=\"onClick\">\n\t\t\t<!-- @slot Manually provide icon -->\n\t\t\t<slot name=\"icon\">\n\t\t\t\t<span :class=\"[isIconUrl ? 'action-button__icon--url' : icon]\"\n\t\t\t\t\t:style=\"{ backgroundImage: isIconUrl ? `url(${icon})` : null }\"\n\t\t\t\t\tclass=\"action-button__icon\" />\n\t\t\t</slot>\n\n\t\t\t<!-- long text with title -->\n\t\t\t<p v-if=\"title\">\n\t\t\t\t<strong class=\"action-button__title\">\n\t\t\t\t\t{{ title }}\n\t\t\t\t</strong>\n\t\t\t\t<br>\n\t\t\t\t<!-- white space is shown on longtext, so we can't\n\t\t\t\t\tput {{ text }} on a new line for code readability -->\n\t\t\t\t<span class=\"action-button__longtext\" v-text=\"text\" />\n\t\t\t</p>\n\n\t\t\t<!-- long text only -->\n\t\t\t<!-- white space is shown on longtext, so we can't\n\t\t\t\tput {{ text }} on a new line for code readability -->\n\t\t\t<p v-else-if=\"isLongText\"\n\t\t\t\tclass=\"action-button__longtext\"\n\t\t\t\tv-text=\"text\" />\n\n\t\t\t<!-- default text display -->\n\t\t\t<span v-else class=\"action-button__text\">{{ text }}</span>\n\n\t\t\t<!-- fake slot to gather inner text -->\n\t\t\t<slot v-if=\"false\" />\n\t\t</button>\n\t</li>\n</template>\n\n<script>\nimport ActionTextMixin from '../../mixins/actionText'\n\n/**\n * Button component to be used in Actions\n*/\nexport default {\n\tname: 'ActionButton',\n\n\tmixins: [ActionTextMixin],\n\n\tprops: {\n\t\t/**\n\t\t * disabled state of the action button\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * determines if the action is focusable\n\t\t * @returns {boolean} is the action focusable ?\n\t\t */\n\t\tisFocusable() {\n\t\t\treturn !this.disabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../../assets/action';\n@include action-active;\n@include action--disabled;\n@include action-item('button');\n</style>\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=style&index=0&id=69f4d5ed&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Actions.vue?vue&type=style&index=0&id=69f4d5ed&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../../fonts/iconfont-vue-67af392.eot\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = require(\"../../fonts/iconfont-vue-67af392.woff\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = require(\"../../fonts/iconfont-vue-67af392.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = require(\"../../fonts/iconfont-vue-67af392.svg\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\n// Module\nexports.push([module.id, \"@font-face{font-family:\\\"iconfont-vue-67af392\\\";src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"embedded-opentype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"svg\\\")}.icon[data-v-69f4d5ed]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.arrow-left[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.arrow-right-double[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.arrow-right[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.breadcrumb[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.checkmark[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.close[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.confirm[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.info[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.menu[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.more[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.pause[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.play[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.triangle-s[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.user-status-away[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.user-status-dnd[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.user-status-invisible[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.user-status-online[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.action-item[data-v-69f4d5ed]{position:relative;display:inline-block}.action-item--single[data-v-69f4d5ed]:hover,.action-item--single[data-v-69f4d5ed]:focus,.action-item--single[data-v-69f4d5ed]:active,.action-item__menutoggle[data-v-69f4d5ed]:hover,.action-item__menutoggle[data-v-69f4d5ed]:focus,.action-item__menutoggle[data-v-69f4d5ed]:active{opacity:1;background-color:rgba(127,127,127,0.25)}.action-item.action-item--open .action-item__menutoggle[data-v-69f4d5ed]{opacity:1;background-color:rgba(127,127,127,0.25)}.action-item--single[data-v-69f4d5ed],.action-item__menutoggle[data-v-69f4d5ed]{box-sizing:border-box;width:auto;min-width:44px;height:44px;margin:0;padding:14px;cursor:pointer;border:none;border-radius:22px;background-color:transparent}.action-item__menutoggle[data-v-69f4d5ed]{display:flex;align-items:center;justify-content:center;opacity:.7;font-weight:bold;line-height:16px}.action-item__menutoggle[data-v-69f4d5ed]:before{content:''}.action-item__menutoggle--default-icon[data-v-69f4d5ed]:before{font-family:\\\"iconfont-vue-67af392\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.action-item__menutoggle--default-icon[data-v-69f4d5ed]::before{font-size:16px}.action-item__menutoggle--with-title[data-v-69f4d5ed]{position:relative;padding-left:44px;white-space:nowrap;opacity:1;border:1px solid var(--color-border-dark);background-color:var(--color-background-dark);background-position:14px center;font-size:inherit}.action-item__menutoggle--with-title[data-v-69f4d5ed]:before{position:absolute;top:14px;left:14px}.action-item__menutoggle--primary[data-v-69f4d5ed]{opacity:1;color:var(--color-primary-text);border:none;background-color:var(--color-primary-element)}.action-item--open .action-item__menutoggle--primary[data-v-69f4d5ed],.action-item__menutoggle--primary[data-v-69f4d5ed]:hover,.action-item__menutoggle--primary[data-v-69f4d5ed]:focus,.action-item__menutoggle--primary[data-v-69f4d5ed]:active{color:var(--color-primary-text) !important;background-color:var(--color-primary-element-light) !important}.action-item--single[data-v-69f4d5ed]{opacity:.7}.action-item--single[data-v-69f4d5ed]:hover,.action-item--single[data-v-69f4d5ed]:focus,.action-item--single[data-v-69f4d5ed]:active{opacity:1}.action-item--single>[hidden][data-v-69f4d5ed]{display:none}.ie .action-item__menu[data-v-69f4d5ed],.ie .action-item__menu .action-item__menu_arrow[data-v-69f4d5ed],.edge .action-item__menu[data-v-69f4d5ed],.edge .action-item__menu .action-item__menu_arrow[data-v-69f4d5ed]{border:1px solid var(--color-border)}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&id=df113852&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"334adc1a\", content, true, {});","module.exports = require(\"hammerjs\");","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport ActionButton from './ActionButton'\n\nexport default ActionButton\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=style&index=0&id=33d3d922&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionButton.vue?vue&type=style&index=0&id=33d3d922&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"li.active[data-v-33d3d922]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-33d3d922]{pointer-events:none;opacity:.5}.action--disabled[data-v-33d3d922]:hover,.action--disabled[data-v-33d3d922]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-33d3d922]{opacity:1 !important}.action-button[data-v-33d3d922]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;font-size:var(--default-font-size);line-height:44px}.action-button[data-v-33d3d922]:hover,.action-button[data-v-33d3d922]:focus{opacity:1}.action-button>span[data-v-33d3d922]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-33d3d922]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px;background-repeat:no-repeat}.action-button p[data-v-33d3d922]{width:150px;padding:7px 0;margin:auto;cursor:pointer;text-align:left;line-height:1.6em}.action-button__longtext[data-v-33d3d922]{cursor:pointer;white-space:pre-wrap}.action-button__title[data-v-33d3d922]{font-weight:bold}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default function timer(callback, delay) {\n\tlet id\n\tlet started\n\tlet remaining = delay\n\tlet running\n\n\tthis.start = function() {\n\t\trunning = true\n\t\tstarted = new Date()\n\t\tid = setTimeout(callback, remaining)\n\t}\n\n\tthis.pause = function() {\n\t\trunning = false\n\t\tclearTimeout(id)\n\t\tremaining -= new Date() - started\n\t}\n\n\tthis.clear = function() {\n\t\trunning = false\n\t\tclearTimeout(id)\n\t\tremaining = 0\n\t}\n\n\tthis.getTimeLeft = function() {\n\t\tif (running) {\n\t\t\tthis.pause()\n\t\t\tthis.start()\n\t\t}\n\n\t\treturn remaining\n\t}\n\n\tthis.getStateRunning = function() {\n\t\treturn running\n\t}\n\n\tthis.start()\n}\n","<!--\n  - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @author John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<docs>\n\n```vue\n<template>\n\t<div>\n\t\t<button @click=\"showModal\">Show Modal</button>\n\t\t<modal v-if=\"modal\" @close=\"closeModal\">\n\t\t\t<div class=\"modal__content\">Hello world</div>\n\t\t</modal>\n\t</div>\n</template>\n<style scoped>\n\t.modal__content {\n\t\twidth: 50vw;\n\t\ttext-align: center;\n\t\tmargin: 10vw 0;\n\t}\n</style>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tmodal: false\n\t\t}\n\t},\n\tmethods: {\n\t\tshowModal() {\n\t\t\tthis.modal = true\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.modal = false\n\t\t}\n\t}\n}\n</script>\n```\n\n</docs>\n<template>\n\t<transition name=\"fade\">\n\t\t<div ref=\"mask\"\n\t\t\tclass=\"modal-mask\"\n\t\t\t:class=\"{ 'modal-mask--dark': dark }\"\n\t\t\t@click=\"handleMouseMove\"\n\t\t\t@mousemove=\"handleMouseMove\"\n\t\t\t@touchmove=\"handleMouseMove\">\n\t\t\t<!-- Header -->\n\t\t\t<transition name=\"fade-visibility\">\n\t\t\t\t<div v-show=\"!clearView\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\tinvisible: clearView\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"modal-header\">\n\t\t\t\t\t<div v-if=\"title.trim() !== ''\" class=\"modal-title\">\n\t\t\t\t\t\t{{ title }}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"icons-menu\">\n\t\t\t\t\t\t<!-- Play-pause toggle -->\n\t\t\t\t\t\t<button v-if=\"hasNext && enableSlideshow\"\n\t\t\t\t\t\t\tv-tooltip.auto=\"playPauseTitle\"\n\t\t\t\t\t\t\t:class=\"{ 'play-pause--paused': slideshowPaused }\"\n\t\t\t\t\t\t\tclass=\"play-pause\"\n\t\t\t\t\t\t\t@click=\"togglePlayPause\">\n\t\t\t\t\t\t\t<!-- Progress circle, css animated -->\n\t\t\t\t\t\t\t<div :class=\"[playing ? 'icon-pause' : 'icon-play']\">\n\t\t\t\t\t\t\t\t<span class=\"hidden-visually\">\n\t\t\t\t\t\t\t\t\t{{ playPauseTitle }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Progress circle, css animated -->\n\t\t\t\t\t\t\t<svg v-if=\"playing\"\n\t\t\t\t\t\t\t\tclass=\"progress-ring\"\n\t\t\t\t\t\t\t\theight=\"50\"\n\t\t\t\t\t\t\t\twidth=\"50\">\n\t\t\t\t\t\t\t\t<circle class=\"progress-ring__circle\"\n\t\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\tfill=\"transparent\"\n\t\t\t\t\t\t\t\t\tr=\"15\"\n\t\t\t\t\t\t\t\t\tcx=\"25\"\n\t\t\t\t\t\t\t\t\tcy=\"25\" />\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<!-- Actions menu -->\n\t\t\t\t\t\t<Actions class=\"header-actions\">\n\t\t\t\t\t\t\t<!-- @slot List of actions to show -->\n\t\t\t\t\t\t\t<slot name=\"actions\" />\n\t\t\t\t\t\t</Actions>\n\n\t\t\t\t\t\t<!-- Close modal -->\n\t\t\t\t\t\t<Actions v-if=\"canClose\" class=\"header-close\">\n\t\t\t\t\t\t\t<ActionButton icon=\"icon-close\" @click=\"close\">\n\t\t\t\t\t\t\t\t{{ t('Close') }}\n\t\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t</Actions>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</transition>\n\n\t\t\t<!-- Content wrapper -->\n\t\t\t<transition :name=\"modalTransitionName\">\n\t\t\t\t<div\n\t\t\t\t\tv-show=\"showModal\"\n\t\t\t\t\t:class=\"[\n\t\t\t\t\t\t`modal-wrapper--${size}`,\n\t\t\t\t\t\tspreadNavigation ? 'modal-wrapper--spread-navigation' : ''\n\t\t\t\t\t]\"\n\t\t\t\t\tclass=\"modal-wrapper\"\n\t\t\t\t\t@click.self=\"close\">\n\t\t\t\t\t<!-- Navigation button -->\n\t\t\t\t\t<transition name=\"fade-visibility\">\n\t\t\t\t\t\t<a v-show=\"hasPrevious && !clearView\"\n\t\t\t\t\t\t\tclass=\"prev\"\n\t\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t\tinvisible: clearView || !hasPrevious\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t@click=\"previous\">\n\t\t\t\t\t\t\t<div class=\"icon icon-previous\">\n\t\t\t\t\t\t\t\t<span class=\"hidden-visually\">\n\t\t\t\t\t\t\t\t\t{{ t('Previous') }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</transition>\n\n\t\t\t\t\t<!-- Content -->\n\t\t\t\t\t<div class=\"modal-container\">\n\t\t\t\t\t\t<!-- @slot Modal content to render -->\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<!-- Navigation button -->\n\t\t\t\t\t<transition name=\"fade-visibility\">\n\t\t\t\t\t\t<a v-show=\"hasNext && !clearView\"\n\t\t\t\t\t\t\tclass=\"next\"\n\t\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t\tinvisible: clearView || !hasNext\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t@click=\"next\">\n\t\t\t\t\t\t\t<div class=\"icon icon-next\">\n\t\t\t\t\t\t\t\t<span class=\"hidden-visually\">\n\t\t\t\t\t\t\t\t\t{{ t('Next') }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t</transition>\n</template>\n\n<script>\nimport Hammer from 'hammerjs'\nimport Actions from '../Actions'\nimport ActionButton from '../ActionButton'\nimport l10n from '../../mixins/l10n'\nimport { t } from '../../l10n'\nimport Tooltip from '../../directives/Tooltip'\nimport Timer from '../../utils/Timer'\n\nexport default {\n\tname: 'Modal',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t},\n\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\n\tmixins: [l10n],\n\n\tprops: {\n\t\t/**\n\t\t * Title to be shown with the modal\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Declare if a previous slide is available\n\t\t */\n\t\thasPrevious: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Declare if a next slide is available\n\t\t */\n\t\thasNext: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Declare if hiding the modal should be animated\n\t\t */\n\t\toutTransition: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Declare if the slideshow functionality should be enabled\n\t\t */\n\t\tenableSlideshow: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tclearViewDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 5000,\n\t\t},\n\t\t/**\n\t\t * Declare the slide interval\n\t\t */\n\t\tslideshowDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 3000,\n\t\t},\n\t\t/**\n\t\t * Allow to pause an ongoing slideshow\n\t\t */\n\t\tslideshowPaused: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Enable swipe between slides\n\t\t */\n\t\tenableSwipe: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tspreadNavigation: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tsize: {\n\t\t\ttype: String,\n\t\t\tdefault: 'normal',\n\t\t\tvalidator: size => {\n\t\t\t\treturn ['normal', 'large', 'full'].indexOf(size) !== -1\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Declare if the modal can be closed\n\t\t */\n\t\tcanClose: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/** Makes the modal backdrop black if true  */\n\t\tdark: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tmc: null,\n\t\t\tshowModal: false,\n\t\t\tclearView: false,\n\t\t\tclearViewTimeout: null,\n\t\t\tplaying: false,\n\t\t\tslideshowTimeout: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmodalTransitionName() {\n\t\t\treturn `modal-${this.outTransition ? 'out' : 'in'}`\n\t\t},\n\t\tplayPauseTitle() {\n\t\t\treturn this.playing ? t('Pause slideshow') : t('Start slideshow')\n\t\t},\n\t},\n\n\twatch: {\n\t\t/**\n\t\t * Handle play/pause of an ongoing slideshow\n\t\t * @param {boolean} paused is the player paused\n\t\t */\n\t\tslideshowPaused(paused) {\n\t\t\tif (this.slideshowTimeout) {\n\t\t\t\tif (paused) {\n\t\t\t\t\tthis.slideshowTimeout.pause()\n\t\t\t\t} else {\n\t\t\t\t\tthis.slideshowTimeout.start()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\twindow.addEventListener('keydown', this.handleKeydown)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('keydown', this.handleKeydown)\n\t\tthis.mc.off('swipeleft swiperight')\n\t\tthis.mc.destroy()\n\t},\n\tmounted() {\n\t\tthis.showModal = true\n\n\t\t// init clear view\n\t\tthis.handleMouseMove()\n\n\t\tthis.mc = new Hammer(this.$refs.mask)\n\t\tthis.mc.on('swipeleft swiperight', e => {\n\t\t\tthis.handleSwipe(e)\n\t\t})\n\n\t\t// force mount the component to body\n\t\tdocument.body.insertBefore(this.$el, document.body.lastChild)\n\t},\n\tdestroyed() {\n\t\tthis.$el.remove()\n\t},\n\n\tmethods: {\n\t\t// Events emitters\n\t\tprevious(data) {\n\t\t\t// do not send the event if nothing is available\n\t\t\tif (this.hasPrevious) {\n\t\t\t\t// if data is set, then it's a user mouse event\n\t\t\t\t// and not the slideshow handler, therefore\n\t\t\t\t// we reset the timer\n\t\t\t\tif (data) {\n\t\t\t\t\tthis.resetSlideshow()\n\t\t\t\t}\n\t\t\t\tthis.$emit('previous', data)\n\t\t\t}\n\t\t},\n\t\tnext(data) {\n\t\t\t// do not send the event if nothing is available\n\t\t\tif (this.hasNext) {\n\t\t\t\t// if data is set, then it's a mouse event\n\t\t\t\t// and not the slideshow handler, therefore\n\t\t\t\t// we reset the timer\n\t\t\t\tif (data) {\n\t\t\t\t\tthis.resetSlideshow()\n\t\t\t\t}\n\t\t\t\tthis.$emit('next', data)\n\t\t\t}\n\t\t},\n\t\tclose(data) {\n\t\t\t// do not fire event if forbidden\n\t\t\tif (this.canClose) {\n\t\t\t\tthis.showModal = false\n\n\t\t\t\t// delay closing for animation\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t/**\n\t\t\t\t\t * Emitted when the closing animation is finished\n\t\t\t\t\t */\n\t\t\t\t\tthis.$emit('close', data)\n\t\t\t\t}, 300)\n\t\t\t}\n\t\t},\n\n\t\t// Key Handlers\n\t\thandleKeydown(e) {\n\t\t\tswitch (e.keyCode) {\n\t\t\tcase 37: // left arrow\n\t\t\t\tthis.previous(e)\n\t\t\t\tbreak\n\t\t\tcase 13: // enter key\n\t\t\tcase 39: // rigth arrow\n\t\t\t\tthis.next(e)\n\t\t\t\tbreak\n\t\t\tcase 27: // escape key\n\t\t\t\tthis.close(e)\n\t\t\t\tbreak\n\t\t\t}\n\t\t},\n\t\thandleSwipe(e) {\n\t\t\tif (this.enableSwipe) {\n\t\t\t\tif (e.type === 'swipeleft') {\n\t\t\t\t\t// swiping to left to go to the next item\n\t\t\t\t\tthis.next(e)\n\t\t\t\t} else if (e.type === 'swiperight') {\n\t\t\t\t\t// swiping to right to go back to the previous item\n\t\t\t\t\tthis.previous(e)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thandleMouseMove() {\n\t\t\tif (this.clearViewDelay > 0) {\n\t\t\t\tthis.clearView = false\n\t\t\t\tclearTimeout(this.clearViewTimeout)\n\t\t\t\tthis.clearViewTimeout = setTimeout(() => {\n\t\t\t\t\tthis.clearView = true\n\t\t\t\t}, this.clearViewDelay)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Toggle the slideshow state\n\t\t */\n\t\ttogglePlayPause() {\n\t\t\tthis.playing = !this.playing\n\t\t\tif (this.playing) {\n\t\t\t\tthis.handleSlideshow()\n\t\t\t} else {\n\t\t\t\tthis.clearSlideshowTimeout()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the slideshow timer and keep going if it was on\n\t\t */\n\t\tresetSlideshow() {\n\t\t\tthis.playing = !this.playing\n\t\t\tthis.clearSlideshowTimeout()\n\t\t\tthis.$nextTick(function() {\n\t\t\t\tthis.togglePlayPause()\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Handle the slideshow timer and next event\n\t\t */\n\t\thandleSlideshow() {\n\t\t\tthis.playing = true\n\t\t\tif (this.hasNext) {\n\t\t\t\tthis.slideshowTimeout = new Timer(() => {\n\t\t\t\t\tthis.next()\n\t\t\t\t\tthis.handleSlideshow()\n\t\t\t\t}, this.slideshowDelay)\n\t\t\t} else {\n\t\t\t\tthis.playing = false\n\t\t\t\tthis.clearSlideshowTimeout()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Clear slideshowTimeout if ongoing\n\t\t */\n\t\tclearSlideshowTimeout() {\n\t\t\tif (this.slideshowTimeout) {\n\t\t\t\tthis.slideshowTimeout.clear()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../../fonts/scss/iconfont-vue';\n$header-size: 50px;\n\n.modal-mask {\n\tposition: fixed;\n\tz-index: 9998;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: rgba(0, 0, 0, .5);\n\t&--dark {\n\t\tbackground-color: rgba(0, 0, 0, .92);\n\t}\n}\n\n.modal-header {\n\tposition: absolute;\n\tz-index: 10001;\n\ttop: 0;\n\tright: 0;\n\tleft: 0;\n\t// prevent vue show to use display:none and reseting\n\t// the circle animation loop\n\tdisplay: flex !important;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 100%;\n\theight: $header-size;\n\ttransition: opacity 250ms,\n\t\tvisibility 250ms;\n\n\t// replace display by visibility\n\t&.invisible[style*='display:none'],\n\t&.invisible[style*='display: none'] {\n\t\tvisibility: hidden;\n\t}\n\n\t.modal-title {\n\t\toverflow-x: hidden;\n\t\tbox-sizing: border-box;\n\t\twidth: 100%;\n\t\tpadding: 0 #{$clickable-area * 3} 0 12px; // maximum actions is 3\n\t\ttransition: padding ease 100ms;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: #fff;\n\t\tfont-size: $icon-margin;\n\t}\n\n\t// On wider screens the title can be centered\n\t@media only screen and (min-width: $breakpoint-mobile/2) {\n\t\t.modal-title {\n\t\t\ttext-align: center;\n\t\t\tpadding-left: #{$clickable-area * 3}; // maximum actions is 3\n\t\t}\n\t}\n\n\t.icons-menu {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: flex-end;\n\n\t\t.icon-close {\n\t\t\tbox-sizing: border-box;\n\t\t\tmargin: ($header-size - $clickable-area) / 2;\n\t\t\t// not using $icon-margin since we have a custom font size\n\t\t\t// and alignement seems odd\n\t\t\tpadding: 10px 11px;\n\t\t\tcolor: #fff;\n\t\t\tbackground-image: none;\n\t\t\tfont-size: 23px;\n\n\t\t\t@include iconfont('close');\n\t\t}\n\n\t\t.play-pause {\n\t\t\tposition: relative;\n\t\t\twidth: $header-size;\n\t\t\theight: $header-size;\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t\tcursor: pointer;\n\t\t\tcolor: white;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\tfont-size: 22px;\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\t.icon-play,\n\t\t\t\t.icon-pause {\n\t\t\t\t\topacity: 1;\n\t\t\t\t\tborder-radius: $clickable-area / 2;\n\t\t\t\t\tbackground-color: $icon-focus-bg;\n\t\t\t\t}\n\t\t\t}\n\t\t\t.icon-play,\n\t\t\t.icon-pause {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: $clickable-area;\n\t\t\t\theight: $clickable-area;\n\t\t\t\tmargin: ($header-size - $clickable-area) / 2;\n\t\t\t\topacity: .7;\n\t\t\t\tbackground-image: none;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\t\t\t.icon-play {\n\t\t\t\t// better visual\n\t\t\t\tpadding: 11px 13px;\n\t\t\t\t@include iconfont('play');\n\t\t\t}\n\t\t\t.icon-pause {\n\t\t\t\tpadding: 12px;\n\t\t\t\t// ! align with circle\n\t\t\t\tfont-size: 19.5px;\n\t\t\t\t@include iconfont('pause');\n\t\t\t}\n\t\t}\n\n\t\t.header-actions {\n\t\t\tmargin: ($header-size - $clickable-area) / 2;\n\t\t\tcolor: white;\n\t\t}\n\n\t\t.action-item--single {\n\t\t\tbox-sizing: border-box;\n\t\t\twidth: $clickable-area;\n\t\t\theight: $clickable-area;\n\t\t\tcursor: pointer;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 22px;\n\t\t}\n\n\t\t&::v-deep .action-item__menutoggle {\n\t\t\tpadding: 13px 11px;\n\t\t\t// force white instead of default main text\n\t\t\tcolor: #fff;\n\t\t\t// 22px is a somehow better looking for the icon-more icon\n\t\t\tfont-size: 22px;\n\t\t}\n\n\t}\n}\n\n.modal-wrapper {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\n\t/* Navigation buttons */\n\t.prev,\n\t.next {\n\t\tz-index: 10000;\n\t\t// ignore display: none\n\t\tdisplay: flex !important;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 15%;\n\t\tmin-width: 60px;\n\t\theight: 100%;\n\t\ttransition: opacity 250ms,\n\t\t\tvisibility 250ms;\n\n\t\t// we want to keep the elements on page\n\t\t// even if hidden to avoid having a unbalanced\n\t\t// centered content\n\t\t// replace display by visibility\n\t\t&.invisible[style*='display:none'],\n\t\t&.invisible[style*='display: none'] {\n\t\t\tvisibility: hidden;\n\t\t}\n\t}\n\n\t// buttons/icons\n\t.icon-next,\n\t.icon-previous {\n\t\tbox-sizing: border-box;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tpadding: 12px 11px;\n\t\tcolor: white;\n\t\tborder-radius: $clickable-area / 2;\n\t\tbackground-image: none;\n\t\tfont-size: 24px;\n\t}\n\t.icon-previous {\n\t\t@include iconfont('arrow-left');\n\t}\n\t.icon-next {\n\t\t@include iconfont('arrow-right');\n\t}\n\n\t/* Content */\n\t.modal-container {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\tpadding: 0;\n\t\ttransition: transform 300ms ease;\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-main-background);\n\t\tbox-shadow: 0 0 40px rgba(0, 0, 0, .2);\n\t}\n\t&:not(&--large):not(&--full) .modal-container {\n\t\tmax-width: 900px;\n\t\tmax-height: 80%;\n\t}\n\n\t// Sizing\n\t&--full {\n\t\t.modal-container {\n\t\t\tmax-width: 100%;\n\t\t\tmax-height: 100%;\n\t\t\tborder-radius: 0;\n\t\t}\n\t}\n\t&--full,\n\t&--spread-navigation {\n\t\t.prev,\n\t\t.next {\n\t\t\tposition: absolute;\n\t\t\twidth: 10%;\n\t\t}\n\t\t.prev {\n\t\t\tleft: 0;\n\t\t}\n\t\t.next {\n\t\t\tright: 0;\n\t\t}\n\t}\n\t&--large {\n\t\t.modal-container {\n\t\t\tmax-width: 85%;\n\t\t\tmax-height: 90%;\n\t\t}\n\t\t.prev,\n\t\t.next {\n\t\t\twidth: 10%;\n\t\t\tmin-width: $clickable-area;\n\t\t}\n\t}\n}\n\n/* TRANSITIONS */\n.fade-enter-active,\n.fade-leave-active {\n\ttransition: opacity 250ms;\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-visibility-enter,\n.fade-visibility-leave-to {\n\tvisibility: hidden;\n\topacity: 0;\n}\n\n.modal-in-enter-active,\n.modal-in-leave-active,\n.modal-out-enter-active,\n.modal-out-leave-active {\n\ttransition: opacity 250ms;\n}\n\n.modal-in-enter,\n.modal-in-leave-to,\n.modal-out-enter,\n.modal-out-leave-to {\n\topacity: 0;\n}\n\n.modal-in-enter .modal-container,\n.modal-in-leave-to .modal-container {\n\ttransform: scale(.9);\n}\n\n.modal-out-enter .modal-container,\n.modal-out-leave-to .modal-container {\n\ttransform: scale(1.1);\n}\n\n// animated circle\n$radius: 15;\n$pi: 3.14159265358979;\n\n.modal-mask .play-pause {\n\t.progress-ring {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\ttransform: rotate(-90deg);\n\t\t.progress-ring__circle {\n\t\t\ttransition: 100ms stroke-dashoffset;\n\t\t\ttransform-origin: 50% 50%; // axis compensation\n\t\t\tanimation: progressring linear 3s infinite;\n\n\t\t\tstroke-linecap: round;\n\t\t\tstroke-dashoffset: $radius * 2 * $pi; // radius * 2 * PI\n\t\t\tstroke-dasharray: $radius * 2 * $pi; // radius * 2 * PI\n\t\t}\n\t}\n\t&--paused {\n\t\t.icon-pause {\n\t\t\tanimation: breath 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n\t\t}\n\t\t.progress-ring__circle {\n\t\t\tanimation-play-state: paused !important;\n\t\t}\n\t}\n}\n\n// keyframes get scoped too and break the animation name, we need them unscoped\n@keyframes progressring {\n\tfrom {\n\t\tstroke-dashoffset: $radius * 2 * $pi; // radius * 2 * PI\n\t}\n\tto {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n\n@keyframes breath {\n\t0% {\n\t\topacity: 1;\n\t}\n\t50% {\n\t\topacity: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t}\n}\n\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{ref:\"mask\",staticClass:\"modal-mask\",class:{ 'modal-mask--dark': _vm.dark },on:{\"click\":_vm.handleMouseMove,\"mousemove\":_vm.handleMouseMove,\"touchmove\":_vm.handleMouseMove}},[_c('transition',{attrs:{\"name\":\"fade-visibility\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.clearView),expression:\"!clearView\"}],staticClass:\"modal-header\",class:{\n\t\t\t\t\tinvisible: _vm.clearView\n\t\t\t\t}},[(_vm.title.trim() !== '')?_c('div',{staticClass:\"modal-title\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"icons-menu\"},[(_vm.hasNext && _vm.enableSlideshow)?_c('button',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.playPauseTitle),expression:\"playPauseTitle\",modifiers:{\"auto\":true}}],staticClass:\"play-pause\",class:{ 'play-pause--paused': _vm.slideshowPaused },on:{\"click\":_vm.togglePlayPause}},[_c('div',{class:[_vm.playing ? 'icon-pause' : 'icon-play']},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.playPauseTitle)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])]),_vm._v(\" \"),(_vm.playing)?_c('svg',{staticClass:\"progress-ring\",attrs:{\"height\":\"50\",\"width\":\"50\"}},[_c('circle',{staticClass:\"progress-ring__circle\",attrs:{\"stroke\":\"white\",\"stroke-width\":\"2\",\"fill\":\"transparent\",\"r\":\"15\",\"cx\":\"25\",\"cy\":\"25\"}})]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('Actions',{staticClass:\"header-actions\"},[_vm._t(\"actions\")],2),_vm._v(\" \"),(_vm.canClose)?_c('Actions',{staticClass:\"header-close\"},[_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":_vm.close}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('Close'))+\"\\n\\t\\t\\t\\t\\t\\t\")])],1):_vm._e()],1)])]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":_vm.modalTransitionName}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showModal),expression:\"showModal\"}],staticClass:\"modal-wrapper\",class:[\n\t\t\t\t\t(\"modal-wrapper--\" + _vm.size),\n\t\t\t\t\t_vm.spreadNavigation ? 'modal-wrapper--spread-navigation' : ''\n\t\t\t\t],on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.close($event)}}},[_c('transition',{attrs:{\"name\":\"fade-visibility\"}},[_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasPrevious && !_vm.clearView),expression:\"hasPrevious && !clearView\"}],staticClass:\"prev\",class:{\n\t\t\t\t\t\t\tinvisible: _vm.clearView || !_vm.hasPrevious\n\t\t\t\t\t\t},on:{\"click\":_vm.previous}},[_c('div',{staticClass:\"icon icon-previous\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('Previous'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"modal-container\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade-visibility\"}},[_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasNext && !_vm.clearView),expression:\"hasNext && !clearView\"}],staticClass:\"next\",class:{\n\t\t\t\t\t\t\tinvisible: _vm.clearView || !_vm.hasNext\n\t\t\t\t\t\t},on:{\"click\":_vm.next}},[_c('div',{staticClass:\"icon icon-next\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('Next'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])])])])],1)])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport ScopeComponent from '../../utils/ScopeComponent'\nimport Modal from './Modal'\n\nScopeComponent(Modal)\n\nexport default Modal\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&id=df113852&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&id=df113852&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../../fonts/iconfont-vue-67af392.eot\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = require(\"../../fonts/iconfont-vue-67af392.woff\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = require(\"../../fonts/iconfont-vue-67af392.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = require(\"../../fonts/iconfont-vue-67af392.svg\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\n// Module\nexports.push([module.id, \"@font-face{font-family:\\\"iconfont-vue-67af392\\\";src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"embedded-opentype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"svg\\\")}.icon[data-v-df113852]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.arrow-left[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.arrow-right-double[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.arrow-right[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.breadcrumb[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.checkmark[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.close[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.confirm[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.info[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.menu[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.more[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.pause[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.play[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.triangle-s[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.user-status-away[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.user-status-dnd[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.user-status-invisible[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.icon.user-status-online[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";content:\\\"\\\"}.modal-mask[data-v-df113852]{position:fixed;z-index:9998;top:0;left:0;display:block;width:100%;height:100%;background-color:rgba(0,0,0,0.5)}.modal-mask--dark[data-v-df113852]{background-color:rgba(0,0,0,0.92)}.modal-header[data-v-df113852]{position:absolute;z-index:10001;top:0;right:0;left:0;display:flex !important;align-items:center;justify-content:center;width:100%;height:50px;transition:opacity 250ms, visibility 250ms}.modal-header.invisible[style*='display:none'][data-v-df113852],.modal-header.invisible[style*='display: none'][data-v-df113852]{visibility:hidden}.modal-header .modal-title[data-v-df113852]{overflow-x:hidden;box-sizing:border-box;width:100%;padding:0 132px 0 12px;transition:padding ease 100ms;white-space:nowrap;text-overflow:ellipsis;color:#fff;font-size:14px}@media only screen and (min-width: 512px){.modal-header .modal-title[data-v-df113852]{text-align:center;padding-left:132px}}.modal-header .icons-menu[data-v-df113852]{position:absolute;right:0;display:flex;align-items:center;justify-content:flex-end}.modal-header .icons-menu .icon-close[data-v-df113852]{box-sizing:border-box;margin:3px;padding:10px 11px;color:#fff;background-image:none;font-size:23px}.modal-header .icons-menu .icon-close[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-header .icons-menu .play-pause[data-v-df113852]{position:relative;width:50px;height:50px;margin:0;padding:0;cursor:pointer;color:white;border:none;background-color:transparent;font-size:22px}.modal-header .icons-menu .play-pause:hover .icon-play[data-v-df113852],.modal-header .icons-menu .play-pause:hover .icon-pause[data-v-df113852],.modal-header .icons-menu .play-pause:focus .icon-play[data-v-df113852],.modal-header .icons-menu .play-pause:focus .icon-pause[data-v-df113852]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.modal-header .icons-menu .play-pause .icon-play[data-v-df113852],.modal-header .icons-menu .play-pause .icon-pause[data-v-df113852]{box-sizing:border-box;width:44px;height:44px;margin:3px;opacity:.7;background-image:none;cursor:pointer}.modal-header .icons-menu .play-pause .icon-play[data-v-df113852]{padding:11px 13px}.modal-header .icons-menu .play-pause .icon-play[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-header .icons-menu .play-pause .icon-pause[data-v-df113852]{padding:12px;font-size:19.5px}.modal-header .icons-menu .play-pause .icon-pause[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-header .icons-menu .header-actions[data-v-df113852]{margin:3px;color:white}.modal-header .icons-menu .action-item--single[data-v-df113852]{box-sizing:border-box;width:44px;height:44px;cursor:pointer;background-position:center;background-size:22px}.modal-header .icons-menu[data-v-df113852] .action-item__menutoggle{padding:13px 11px;color:#fff;font-size:22px}.modal-wrapper[data-v-df113852]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.modal-wrapper .prev[data-v-df113852],.modal-wrapper .next[data-v-df113852]{z-index:10000;display:flex !important;align-items:center;justify-content:center;width:15%;min-width:60px;height:100%;transition:opacity 250ms, visibility 250ms}.modal-wrapper .prev.invisible[style*='display:none'][data-v-df113852],.modal-wrapper .prev.invisible[style*='display: none'][data-v-df113852],.modal-wrapper .next.invisible[style*='display:none'][data-v-df113852],.modal-wrapper .next.invisible[style*='display: none'][data-v-df113852]{visibility:hidden}.modal-wrapper .icon-next[data-v-df113852],.modal-wrapper .icon-previous[data-v-df113852]{box-sizing:border-box;width:44px;height:44px;padding:12px 11px;color:white;border-radius:22px;background-image:none;font-size:24px}.modal-wrapper .icon-previous[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-wrapper .icon-next[data-v-df113852]:before{font-family:\\\"iconfont-vue-67af392\\\";font-style:normal;font-weight:400;content:\\\"\\\"}.modal-wrapper .modal-container[data-v-df113852]{display:block;overflow:hidden;padding:0;transition:transform 300ms ease;border-radius:var(--border-radius-large);background-color:var(--color-main-background);box-shadow:0 0 40px rgba(0,0,0,0.2)}.modal-wrapper:not(.modal-wrapper--large):not(.modal-wrapper--full) .modal-container[data-v-df113852]{max-width:900px;max-height:80%}.modal-wrapper--full .modal-container[data-v-df113852]{max-width:100%;max-height:100%;border-radius:0}.modal-wrapper--full .prev[data-v-df113852],.modal-wrapper--full .next[data-v-df113852],.modal-wrapper--spread-navigation .prev[data-v-df113852],.modal-wrapper--spread-navigation .next[data-v-df113852]{position:absolute;width:10%}.modal-wrapper--full .prev[data-v-df113852],.modal-wrapper--spread-navigation .prev[data-v-df113852]{left:0}.modal-wrapper--full .next[data-v-df113852],.modal-wrapper--spread-navigation .next[data-v-df113852]{right:0}.modal-wrapper--large .modal-container[data-v-df113852]{max-width:85%;max-height:90%}.modal-wrapper--large .prev[data-v-df113852],.modal-wrapper--large .next[data-v-df113852]{width:10%;min-width:44px}.fade-enter-active[data-v-df113852],.fade-leave-active[data-v-df113852]{transition:opacity 250ms}.fade-enter[data-v-df113852],.fade-leave-to[data-v-df113852]{opacity:0}.fade-visibility-enter[data-v-df113852],.fade-visibility-leave-to[data-v-df113852]{visibility:hidden;opacity:0}.modal-in-enter-active[data-v-df113852],.modal-in-leave-active[data-v-df113852],.modal-out-enter-active[data-v-df113852],.modal-out-leave-active[data-v-df113852]{transition:opacity 250ms}.modal-in-enter[data-v-df113852],.modal-in-leave-to[data-v-df113852],.modal-out-enter[data-v-df113852],.modal-out-leave-to[data-v-df113852]{opacity:0}.modal-in-enter .modal-container[data-v-df113852],.modal-in-leave-to .modal-container[data-v-df113852]{transform:scale(0.9)}.modal-out-enter .modal-container[data-v-df113852],.modal-out-leave-to .modal-container[data-v-df113852]{transform:scale(1.1)}.modal-mask .play-pause .progress-ring[data-v-df113852]{position:absolute;top:0;left:0;transform:rotate(-90deg)}.modal-mask .play-pause .progress-ring .progress-ring__circle[data-v-df113852]{transition:100ms stroke-dashoffset;transform-origin:50% 50%;animation:progressring-data-v-df113852 linear 3s infinite;stroke-linecap:round;stroke-dashoffset:94.24778;stroke-dasharray:94.24778}.modal-mask .play-pause--paused .icon-pause[data-v-df113852]{animation:breath-data-v-df113852 2s cubic-bezier(0.4, 0, 0.2, 1) infinite}.modal-mask .play-pause--paused .progress-ring__circle[data-v-df113852]{animation-play-state:paused !important}@keyframes progressring-data-v-df113852{from{stroke-dashoffset:94.24778}to{stroke-dashoffset:0}}@keyframes breath-data-v-df113852{0%{opacity:1}50%{opacity:0}100%{opacity:1}}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n  'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n    return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n    if (Array.isArray(arg)) {\n        each(arg, context[fn], context);\n        return true;\n    }\n    return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n    var i;\n\n    if (!obj) {\n        return;\n    }\n\n    if (obj.forEach) {\n        obj.forEach(iterator, context);\n    } else if (obj.length !== undefined) {\n        i = 0;\n        while (i < obj.length) {\n            iterator.call(context, obj[i], i, obj);\n            i++;\n        }\n    } else {\n        for (i in obj) {\n            obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n        }\n    }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n    var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n    return function() {\n        var e = new Error('get-stack-trace');\n        var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n            .replace(/^\\s+at\\s+/gm, '')\n            .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n        var log = window.console && (window.console.warn || window.console.log);\n        if (log) {\n            log.call(window.console, deprecationMessage, stack);\n        }\n        return method.apply(this, arguments);\n    };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n    assign = function assign(target) {\n        if (target === undefined || target === null) {\n            throw new TypeError('Cannot convert undefined or null to object');\n        }\n\n        var output = Object(target);\n        for (var index = 1; index < arguments.length; index++) {\n            var source = arguments[index];\n            if (source !== undefined && source !== null) {\n                for (var nextKey in source) {\n                    if (source.hasOwnProperty(nextKey)) {\n                        output[nextKey] = source[nextKey];\n                    }\n                }\n            }\n        }\n        return output;\n    };\n} else {\n    assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n    var keys = Object.keys(src);\n    var i = 0;\n    while (i < keys.length) {\n        if (!merge || (merge && dest[keys[i]] === undefined)) {\n            dest[keys[i]] = src[keys[i]];\n        }\n        i++;\n    }\n    return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n    return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n    var baseP = base.prototype,\n        childP;\n\n    childP = child.prototype = Object.create(baseP);\n    childP.constructor = child;\n    childP._super = baseP;\n\n    if (properties) {\n        assign(childP, properties);\n    }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n    return function boundFn() {\n        return fn.apply(context, arguments);\n    };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n    if (typeof val == TYPE_FUNCTION) {\n        return val.apply(args ? args[0] || undefined : undefined, args);\n    }\n    return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n    return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.addEventListener(type, handler, false);\n    });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n    each(splitStr(types), function(type) {\n        target.removeEventListener(type, handler, false);\n    });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n    while (node) {\n        if (node == parent) {\n            return true;\n        }\n        node = node.parentNode;\n    }\n    return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n    return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n    return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n    if (src.indexOf && !findByKey) {\n        return src.indexOf(find);\n    } else {\n        var i = 0;\n        while (i < src.length) {\n            if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n                return i;\n            }\n            i++;\n        }\n        return -1;\n    }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n    return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n    var results = [];\n    var values = [];\n    var i = 0;\n\n    while (i < src.length) {\n        var val = key ? src[i][key] : src[i];\n        if (inArray(values, val) < 0) {\n            results.push(src[i]);\n        }\n        values[i] = val;\n        i++;\n    }\n\n    if (sort) {\n        if (!key) {\n            results = results.sort();\n        } else {\n            results = results.sort(function sortUniqueArray(a, b) {\n                return a[key] > b[key];\n            });\n        }\n    }\n\n    return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n    var prefix, prop;\n    var camelProp = property[0].toUpperCase() + property.slice(1);\n\n    var i = 0;\n    while (i < VENDOR_PREFIXES.length) {\n        prefix = VENDOR_PREFIXES[i];\n        prop = (prefix) ? prefix + camelProp : property;\n\n        if (prop in obj) {\n            return prop;\n        }\n        i++;\n    }\n    return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n    return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n    var doc = element.ownerDocument || element;\n    return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n    var self = this;\n    this.manager = manager;\n    this.callback = callback;\n    this.element = manager.element;\n    this.target = manager.options.inputTarget;\n\n    // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n    // so when disabled the input events are completely bypassed.\n    this.domHandler = function(ev) {\n        if (boolOrFn(manager.options.enable, [manager])) {\n            self.handler(ev);\n        }\n    };\n\n    this.init();\n\n}\n\nInput.prototype = {\n    /**\n     * should handle the inputEvent data and trigger the callback\n     * @virtual\n     */\n    handler: function() { },\n\n    /**\n     * bind the events\n     */\n    init: function() {\n        this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    },\n\n    /**\n     * unbind the events\n     */\n    destroy: function() {\n        this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n        this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n        this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n    }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n    var Type;\n    var inputClass = manager.options.inputClass;\n\n    if (inputClass) {\n        Type = inputClass;\n    } else if (SUPPORT_POINTER_EVENTS) {\n        Type = PointerEventInput;\n    } else if (SUPPORT_ONLY_TOUCH) {\n        Type = TouchInput;\n    } else if (!SUPPORT_TOUCH) {\n        Type = MouseInput;\n    } else {\n        Type = TouchMouseInput;\n    }\n    return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n    var pointersLen = input.pointers.length;\n    var changedPointersLen = input.changedPointers.length;\n    var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n    var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n    input.isFirst = !!isFirst;\n    input.isFinal = !!isFinal;\n\n    if (isFirst) {\n        manager.session = {};\n    }\n\n    // source event is the normalized value of the domEvents\n    // like 'touchstart, mouseup, pointerdown'\n    input.eventType = eventType;\n\n    // compute scale, rotation etc\n    computeInputData(manager, input);\n\n    // emit secret event\n    manager.emit('hammer.input', input);\n\n    manager.recognize(input);\n    manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n    var session = manager.session;\n    var pointers = input.pointers;\n    var pointersLength = pointers.length;\n\n    // store the first input to calculate the distance and direction\n    if (!session.firstInput) {\n        session.firstInput = simpleCloneInputData(input);\n    }\n\n    // to compute scale and rotation we need to store the multiple touches\n    if (pointersLength > 1 && !session.firstMultiple) {\n        session.firstMultiple = simpleCloneInputData(input);\n    } else if (pointersLength === 1) {\n        session.firstMultiple = false;\n    }\n\n    var firstInput = session.firstInput;\n    var firstMultiple = session.firstMultiple;\n    var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n    var center = input.center = getCenter(pointers);\n    input.timeStamp = now();\n    input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n    input.angle = getAngle(offsetCenter, center);\n    input.distance = getDistance(offsetCenter, center);\n\n    computeDeltaXY(session, input);\n    input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n    var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n    input.overallVelocityX = overallVelocity.x;\n    input.overallVelocityY = overallVelocity.y;\n    input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n    input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n    input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n    input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n        session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n    computeIntervalInputData(session, input);\n\n    // find the correct target\n    var target = manager.element;\n    if (hasParent(input.srcEvent.target, target)) {\n        target = input.srcEvent.target;\n    }\n    input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n    var center = input.center;\n    var offset = session.offsetDelta || {};\n    var prevDelta = session.prevDelta || {};\n    var prevInput = session.prevInput || {};\n\n    if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n        prevDelta = session.prevDelta = {\n            x: prevInput.deltaX || 0,\n            y: prevInput.deltaY || 0\n        };\n\n        offset = session.offsetDelta = {\n            x: center.x,\n            y: center.y\n        };\n    }\n\n    input.deltaX = prevDelta.x + (center.x - offset.x);\n    input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n    var last = session.lastInterval || input,\n        deltaTime = input.timeStamp - last.timeStamp,\n        velocity, velocityX, velocityY, direction;\n\n    if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n        var deltaX = input.deltaX - last.deltaX;\n        var deltaY = input.deltaY - last.deltaY;\n\n        var v = getVelocity(deltaTime, deltaX, deltaY);\n        velocityX = v.x;\n        velocityY = v.y;\n        velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n        direction = getDirection(deltaX, deltaY);\n\n        session.lastInterval = input;\n    } else {\n        // use latest velocity info if it doesn't overtake a minimum period\n        velocity = last.velocity;\n        velocityX = last.velocityX;\n        velocityY = last.velocityY;\n        direction = last.direction;\n    }\n\n    input.velocity = velocity;\n    input.velocityX = velocityX;\n    input.velocityY = velocityY;\n    input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n    // make a simple copy of the pointers because we will get a reference if we don't\n    // we only need clientXY for the calculations\n    var pointers = [];\n    var i = 0;\n    while (i < input.pointers.length) {\n        pointers[i] = {\n            clientX: round(input.pointers[i].clientX),\n            clientY: round(input.pointers[i].clientY)\n        };\n        i++;\n    }\n\n    return {\n        timeStamp: now(),\n        pointers: pointers,\n        center: getCenter(pointers),\n        deltaX: input.deltaX,\n        deltaY: input.deltaY\n    };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n    var pointersLength = pointers.length;\n\n    // no need to loop when only one touch\n    if (pointersLength === 1) {\n        return {\n            x: round(pointers[0].clientX),\n            y: round(pointers[0].clientY)\n        };\n    }\n\n    var x = 0, y = 0, i = 0;\n    while (i < pointersLength) {\n        x += pointers[i].clientX;\n        y += pointers[i].clientY;\n        i++;\n    }\n\n    return {\n        x: round(x / pointersLength),\n        y: round(y / pointersLength)\n    };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n    return {\n        x: x / deltaTime || 0,\n        y: y / deltaTime || 0\n    };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n    if (x === y) {\n        return DIRECTION_NONE;\n    }\n\n    if (abs(x) >= abs(y)) {\n        return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n    }\n    return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n\n    return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n    if (!props) {\n        props = PROPS_XY;\n    }\n    var x = p2[props[0]] - p1[props[0]],\n        y = p2[props[1]] - p1[props[1]];\n    return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n    return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n    return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n    mousedown: INPUT_START,\n    mousemove: INPUT_MOVE,\n    mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n    this.evEl = MOUSE_ELEMENT_EVENTS;\n    this.evWin = MOUSE_WINDOW_EVENTS;\n\n    this.pressed = false; // mousedown state\n\n    Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function MEhandler(ev) {\n        var eventType = MOUSE_INPUT_MAP[ev.type];\n\n        // on start we want to have the left mouse button down\n        if (eventType & INPUT_START && ev.button === 0) {\n            this.pressed = true;\n        }\n\n        if (eventType & INPUT_MOVE && ev.which !== 1) {\n            eventType = INPUT_END;\n        }\n\n        // mouse must be down\n        if (!this.pressed) {\n            return;\n        }\n\n        if (eventType & INPUT_END) {\n            this.pressed = false;\n        }\n\n        this.callback(this.manager, eventType, {\n            pointers: [ev],\n            changedPointers: [ev],\n            pointerType: INPUT_TYPE_MOUSE,\n            srcEvent: ev\n        });\n    }\n});\n\nvar POINTER_INPUT_MAP = {\n    pointerdown: INPUT_START,\n    pointermove: INPUT_MOVE,\n    pointerup: INPUT_END,\n    pointercancel: INPUT_CANCEL,\n    pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n    2: INPUT_TYPE_TOUCH,\n    3: INPUT_TYPE_PEN,\n    4: INPUT_TYPE_MOUSE,\n    5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n    POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n    POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n    this.evEl = POINTER_ELEMENT_EVENTS;\n    this.evWin = POINTER_WINDOW_EVENTS;\n\n    Input.apply(this, arguments);\n\n    this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n    /**\n     * handle mouse events\n     * @param {Object} ev\n     */\n    handler: function PEhandler(ev) {\n        var store = this.store;\n        var removePointer = false;\n\n        var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n        var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n        var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n        var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n        // get index of the event in the store\n        var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n        // start and mouse must be down\n        if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n            if (storeIndex < 0) {\n                store.push(ev);\n                storeIndex = store.length - 1;\n            }\n        } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n            removePointer = true;\n        }\n\n        // it not found, so the pointer hasn't been down (so it's probably a hover)\n        if (storeIndex < 0) {\n            return;\n        }\n\n        // update the event in the store\n        store[storeIndex] = ev;\n\n        this.callback(this.manager, eventType, {\n            pointers: store,\n            changedPointers: [ev],\n            pointerType: pointerType,\n            srcEvent: ev\n        });\n\n        if (removePointer) {\n            // remove from the store\n            store.splice(storeIndex, 1);\n        }\n    }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n    this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n    this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n    this.started = false;\n\n    Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n    handler: function TEhandler(ev) {\n        var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n        // should we handle the touch events?\n        if (type === INPUT_START) {\n            this.started = true;\n        }\n\n        if (!this.started) {\n            return;\n        }\n\n        var touches = normalizeSingleTouches.call(this, ev, type);\n\n        // when done, reset the started state\n        if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n            this.started = false;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n    var all = toArray(ev.touches);\n    var changed = toArray(ev.changedTouches);\n\n    if (type & (INPUT_END | INPUT_CANCEL)) {\n        all = uniqueArray(all.concat(changed), 'identifier', true);\n    }\n\n    return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n    touchstart: INPUT_START,\n    touchmove: INPUT_MOVE,\n    touchend: INPUT_END,\n    touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n    this.evTarget = TOUCH_TARGET_EVENTS;\n    this.targetIds = {};\n\n    Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n    handler: function MTEhandler(ev) {\n        var type = TOUCH_INPUT_MAP[ev.type];\n        var touches = getTouches.call(this, ev, type);\n        if (!touches) {\n            return;\n        }\n\n        this.callback(this.manager, type, {\n            pointers: touches[0],\n            changedPointers: touches[1],\n            pointerType: INPUT_TYPE_TOUCH,\n            srcEvent: ev\n        });\n    }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n    var allTouches = toArray(ev.touches);\n    var targetIds = this.targetIds;\n\n    // when there is only one touch, the process can be simplified\n    if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n        targetIds[allTouches[0].identifier] = true;\n        return [allTouches, allTouches];\n    }\n\n    var i,\n        targetTouches,\n        changedTouches = toArray(ev.changedTouches),\n        changedTargetTouches = [],\n        target = this.target;\n\n    // get target touches from touches\n    targetTouches = allTouches.filter(function(touch) {\n        return hasParent(touch.target, target);\n    });\n\n    // collect touches\n    if (type === INPUT_START) {\n        i = 0;\n        while (i < targetTouches.length) {\n            targetIds[targetTouches[i].identifier] = true;\n            i++;\n        }\n    }\n\n    // filter changed touches to only contain touches that exist in the collected target ids\n    i = 0;\n    while (i < changedTouches.length) {\n        if (targetIds[changedTouches[i].identifier]) {\n            changedTargetTouches.push(changedTouches[i]);\n        }\n\n        // cleanup removed touches\n        if (type & (INPUT_END | INPUT_CANCEL)) {\n            delete targetIds[changedTouches[i].identifier];\n        }\n        i++;\n    }\n\n    if (!changedTargetTouches.length) {\n        return;\n    }\n\n    return [\n        // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n        uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n        changedTargetTouches\n    ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n    Input.apply(this, arguments);\n\n    var handler = bindFn(this.handler, this);\n    this.touch = new TouchInput(this.manager, handler);\n    this.mouse = new MouseInput(this.manager, handler);\n\n    this.primaryTouch = null;\n    this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n    /**\n     * handle mouse and touch events\n     * @param {Hammer} manager\n     * @param {String} inputEvent\n     * @param {Object} inputData\n     */\n    handler: function TMEhandler(manager, inputEvent, inputData) {\n        var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n            isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n        if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n            return;\n        }\n\n        // when we're in a touch event, record touches to  de-dupe synthetic mouse event\n        if (isTouch) {\n            recordTouches.call(this, inputEvent, inputData);\n        } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n            return;\n        }\n\n        this.callback(manager, inputEvent, inputData);\n    },\n\n    /**\n     * remove the event listeners\n     */\n    destroy: function destroy() {\n        this.touch.destroy();\n        this.mouse.destroy();\n    }\n});\n\nfunction recordTouches(eventType, eventData) {\n    if (eventType & INPUT_START) {\n        this.primaryTouch = eventData.changedPointers[0].identifier;\n        setLastTouch.call(this, eventData);\n    } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n        setLastTouch.call(this, eventData);\n    }\n}\n\nfunction setLastTouch(eventData) {\n    var touch = eventData.changedPointers[0];\n\n    if (touch.identifier === this.primaryTouch) {\n        var lastTouch = {x: touch.clientX, y: touch.clientY};\n        this.lastTouches.push(lastTouch);\n        var lts = this.lastTouches;\n        var removeLastTouch = function() {\n            var i = lts.indexOf(lastTouch);\n            if (i > -1) {\n                lts.splice(i, 1);\n            }\n        };\n        setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n    }\n}\n\nfunction isSyntheticEvent(eventData) {\n    var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n    for (var i = 0; i < this.lastTouches.length; i++) {\n        var t = this.lastTouches[i];\n        var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n        if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n            return true;\n        }\n    }\n    return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n    this.manager = manager;\n    this.set(value);\n}\n\nTouchAction.prototype = {\n    /**\n     * set the touchAction value on the element or enable the polyfill\n     * @param {String} value\n     */\n    set: function(value) {\n        // find out the touch-action by the event handlers\n        if (value == TOUCH_ACTION_COMPUTE) {\n            value = this.compute();\n        }\n\n        if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n            this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n        }\n        this.actions = value.toLowerCase().trim();\n    },\n\n    /**\n     * just re-set the touchAction value\n     */\n    update: function() {\n        this.set(this.manager.options.touchAction);\n    },\n\n    /**\n     * compute the value for the touchAction property based on the recognizer's settings\n     * @returns {String} value\n     */\n    compute: function() {\n        var actions = [];\n        each(this.manager.recognizers, function(recognizer) {\n            if (boolOrFn(recognizer.options.enable, [recognizer])) {\n                actions = actions.concat(recognizer.getTouchAction());\n            }\n        });\n        return cleanTouchActions(actions.join(' '));\n    },\n\n    /**\n     * this method is called on each input cycle and provides the preventing of the browser behavior\n     * @param {Object} input\n     */\n    preventDefaults: function(input) {\n        var srcEvent = input.srcEvent;\n        var direction = input.offsetDirection;\n\n        // if the touch action did prevented once this session\n        if (this.manager.session.prevented) {\n            srcEvent.preventDefault();\n            return;\n        }\n\n        var actions = this.actions;\n        var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n        var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n        var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n        if (hasNone) {\n            //do not prevent defaults if this is a tap gesture\n\n            var isTapPointer = input.pointers.length === 1;\n            var isTapMovement = input.distance < 2;\n            var isTapTouchTime = input.deltaTime < 250;\n\n            if (isTapPointer && isTapMovement && isTapTouchTime) {\n                return;\n            }\n        }\n\n        if (hasPanX && hasPanY) {\n            // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n            return;\n        }\n\n        if (hasNone ||\n            (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n            (hasPanX && direction & DIRECTION_VERTICAL)) {\n            return this.preventSrc(srcEvent);\n        }\n    },\n\n    /**\n     * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n     * @param {Object} srcEvent\n     */\n    preventSrc: function(srcEvent) {\n        this.manager.session.prevented = true;\n        srcEvent.preventDefault();\n    }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n    // none\n    if (inStr(actions, TOUCH_ACTION_NONE)) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n    var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n    // if both pan-x and pan-y are set (different recognizers\n    // for different directions, e.g. horizontal pan but vertical swipe?)\n    // we need none (as otherwise with pan-x pan-y combined none of these\n    // recognizers will work, since the browser would handle all panning\n    if (hasPanX && hasPanY) {\n        return TOUCH_ACTION_NONE;\n    }\n\n    // pan-x OR pan-y\n    if (hasPanX || hasPanY) {\n        return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n    }\n\n    // manipulation\n    if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n        return TOUCH_ACTION_MANIPULATION;\n    }\n\n    return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n    if (!NATIVE_TOUCH_ACTION) {\n        return false;\n    }\n    var touchMap = {};\n    var cssSupports = window.CSS && window.CSS.supports;\n    ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n        // If css.supports is not supported but there is native touch-action assume it supports\n        // all values. This is the case for IE 10 and 11.\n        touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n    });\n    return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n *               Possible\n *                  |\n *            +-----+---------------+\n *            |                     |\n *      +-----+-----+               |\n *      |           |               |\n *   Failed      Cancelled          |\n *                          +-------+------+\n *                          |              |\n *                      Recognized       Began\n *                                         |\n *                                      Changed\n *                                         |\n *                                  Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n    this.options = assign({}, this.defaults, options || {});\n\n    this.id = uniqueId();\n\n    this.manager = null;\n\n    // default is enable true\n    this.options.enable = ifUndefined(this.options.enable, true);\n\n    this.state = STATE_POSSIBLE;\n\n    this.simultaneous = {};\n    this.requireFail = [];\n}\n\nRecognizer.prototype = {\n    /**\n     * @virtual\n     * @type {Object}\n     */\n    defaults: {},\n\n    /**\n     * set options\n     * @param {Object} options\n     * @return {Recognizer}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // also update the touchAction, in case something changed about the directions/enabled state\n        this.manager && this.manager.touchAction.update();\n        return this;\n    },\n\n    /**\n     * recognize simultaneous with an other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    recognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n            return this;\n        }\n\n        var simultaneous = this.simultaneous;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (!simultaneous[otherRecognizer.id]) {\n            simultaneous[otherRecognizer.id] = otherRecognizer;\n            otherRecognizer.recognizeWith(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRecognizeWith: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        delete this.simultaneous[otherRecognizer.id];\n        return this;\n    },\n\n    /**\n     * recognizer can only run when an other is failing\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    requireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n            return this;\n        }\n\n        var requireFail = this.requireFail;\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        if (inArray(requireFail, otherRecognizer) === -1) {\n            requireFail.push(otherRecognizer);\n            otherRecognizer.requireFailure(this);\n        }\n        return this;\n    },\n\n    /**\n     * drop the requireFailure link. it does not remove the link on the other recognizer.\n     * @param {Recognizer} otherRecognizer\n     * @returns {Recognizer} this\n     */\n    dropRequireFailure: function(otherRecognizer) {\n        if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n            return this;\n        }\n\n        otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n        var index = inArray(this.requireFail, otherRecognizer);\n        if (index > -1) {\n            this.requireFail.splice(index, 1);\n        }\n        return this;\n    },\n\n    /**\n     * has require failures boolean\n     * @returns {boolean}\n     */\n    hasRequireFailures: function() {\n        return this.requireFail.length > 0;\n    },\n\n    /**\n     * if the recognizer can recognize simultaneous with an other recognizer\n     * @param {Recognizer} otherRecognizer\n     * @returns {Boolean}\n     */\n    canRecognizeWith: function(otherRecognizer) {\n        return !!this.simultaneous[otherRecognizer.id];\n    },\n\n    /**\n     * You should use `tryEmit` instead of `emit` directly to check\n     * that all the needed recognizers has failed before emitting.\n     * @param {Object} input\n     */\n    emit: function(input) {\n        var self = this;\n        var state = this.state;\n\n        function emit(event) {\n            self.manager.emit(event, input);\n        }\n\n        // 'panstart' and 'panmove'\n        if (state < STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n\n        emit(self.options.event); // simple 'eventName' events\n\n        if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n            emit(input.additionalEvent);\n        }\n\n        // panend and pancancel\n        if (state >= STATE_ENDED) {\n            emit(self.options.event + stateStr(state));\n        }\n    },\n\n    /**\n     * Check that all the require failure recognizers has failed,\n     * if true, it emits a gesture event,\n     * otherwise, setup the state to FAILED.\n     * @param {Object} input\n     */\n    tryEmit: function(input) {\n        if (this.canEmit()) {\n            return this.emit(input);\n        }\n        // it's failing anyway\n        this.state = STATE_FAILED;\n    },\n\n    /**\n     * can we emit?\n     * @returns {boolean}\n     */\n    canEmit: function() {\n        var i = 0;\n        while (i < this.requireFail.length) {\n            if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n                return false;\n            }\n            i++;\n        }\n        return true;\n    },\n\n    /**\n     * update the recognizer\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        // make a new copy of the inputData\n        // so we can change the inputData without messing up the other recognizers\n        var inputDataClone = assign({}, inputData);\n\n        // is is enabled and allow recognizing?\n        if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n            this.reset();\n            this.state = STATE_FAILED;\n            return;\n        }\n\n        // reset when we've reached the end\n        if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n            this.state = STATE_POSSIBLE;\n        }\n\n        this.state = this.process(inputDataClone);\n\n        // the recognizer has recognized a gesture\n        // so trigger an event\n        if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n            this.tryEmit(inputDataClone);\n        }\n    },\n\n    /**\n     * return the state of the recognizer\n     * the actual recognizing happens in this method\n     * @virtual\n     * @param {Object} inputData\n     * @returns {Const} STATE\n     */\n    process: function(inputData) { }, // jshint ignore:line\n\n    /**\n     * return the preferred touch-action\n     * @virtual\n     * @returns {Array}\n     */\n    getTouchAction: function() { },\n\n    /**\n     * called when the gesture isn't allowed to recognize\n     * like when another is being recognized or it is disabled\n     * @virtual\n     */\n    reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n    if (state & STATE_CANCELLED) {\n        return 'cancel';\n    } else if (state & STATE_ENDED) {\n        return 'end';\n    } else if (state & STATE_CHANGED) {\n        return 'move';\n    } else if (state & STATE_BEGAN) {\n        return 'start';\n    }\n    return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n    if (direction == DIRECTION_DOWN) {\n        return 'down';\n    } else if (direction == DIRECTION_UP) {\n        return 'up';\n    } else if (direction == DIRECTION_LEFT) {\n        return 'left';\n    } else if (direction == DIRECTION_RIGHT) {\n        return 'right';\n    }\n    return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n    var manager = recognizer.manager;\n    if (manager) {\n        return manager.get(otherRecognizer);\n    }\n    return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n    Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof AttrRecognizer\n     */\n    defaults: {\n        /**\n         * @type {Number}\n         * @default 1\n         */\n        pointers: 1\n    },\n\n    /**\n     * Used to check if it the recognizer receives valid input, like input.distance > 10.\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {Boolean} recognized\n     */\n    attrTest: function(input) {\n        var optionPointers = this.options.pointers;\n        return optionPointers === 0 || input.pointers.length === optionPointers;\n    },\n\n    /**\n     * Process the input and return the state for the recognizer\n     * @memberof AttrRecognizer\n     * @param {Object} input\n     * @returns {*} State\n     */\n    process: function(input) {\n        var state = this.state;\n        var eventType = input.eventType;\n\n        var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n        var isValid = this.attrTest(input);\n\n        // on cancel input and we've recognized before, return STATE_CANCELLED\n        if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n            return state | STATE_CANCELLED;\n        } else if (isRecognized || isValid) {\n            if (eventType & INPUT_END) {\n                return state | STATE_ENDED;\n            } else if (!(state & STATE_BEGAN)) {\n                return STATE_BEGAN;\n            }\n            return state | STATE_CHANGED;\n        }\n        return STATE_FAILED;\n    }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n\n    this.pX = null;\n    this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PanRecognizer\n     */\n    defaults: {\n        event: 'pan',\n        threshold: 10,\n        pointers: 1,\n        direction: DIRECTION_ALL\n    },\n\n    getTouchAction: function() {\n        var direction = this.options.direction;\n        var actions = [];\n        if (direction & DIRECTION_HORIZONTAL) {\n            actions.push(TOUCH_ACTION_PAN_Y);\n        }\n        if (direction & DIRECTION_VERTICAL) {\n            actions.push(TOUCH_ACTION_PAN_X);\n        }\n        return actions;\n    },\n\n    directionTest: function(input) {\n        var options = this.options;\n        var hasMoved = true;\n        var distance = input.distance;\n        var direction = input.direction;\n        var x = input.deltaX;\n        var y = input.deltaY;\n\n        // lock to axis?\n        if (!(direction & options.direction)) {\n            if (options.direction & DIRECTION_HORIZONTAL) {\n                direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n                hasMoved = x != this.pX;\n                distance = Math.abs(input.deltaX);\n            } else {\n                direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n                hasMoved = y != this.pY;\n                distance = Math.abs(input.deltaY);\n            }\n        }\n        input.direction = direction;\n        return hasMoved && distance > options.threshold && direction & options.direction;\n    },\n\n    attrTest: function(input) {\n        return AttrRecognizer.prototype.attrTest.call(this, input) &&\n            (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n    },\n\n    emit: function(input) {\n\n        this.pX = input.deltaX;\n        this.pY = input.deltaY;\n\n        var direction = directionStr(input.direction);\n\n        if (direction) {\n            input.additionalEvent = this.options.event + direction;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'pinch',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n    },\n\n    emit: function(input) {\n        if (input.scale !== 1) {\n            var inOut = input.scale < 1 ? 'in' : 'out';\n            input.additionalEvent = this.options.event + inOut;\n        }\n        this._super.emit.call(this, input);\n    }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    this._timer = null;\n    this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PressRecognizer\n     */\n    defaults: {\n        event: 'press',\n        pointers: 1,\n        time: 251, // minimal time of the pointer to be pressed\n        threshold: 9 // a minimal movement is ok, but keep it low\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_AUTO];\n    },\n\n    process: function(input) {\n        var options = this.options;\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTime = input.deltaTime > options.time;\n\n        this._input = input;\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n            this.reset();\n        } else if (input.eventType & INPUT_START) {\n            this.reset();\n            this._timer = setTimeoutContext(function() {\n                this.state = STATE_RECOGNIZED;\n                this.tryEmit();\n            }, options.time, this);\n        } else if (input.eventType & INPUT_END) {\n            return STATE_RECOGNIZED;\n        }\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function(input) {\n        if (this.state !== STATE_RECOGNIZED) {\n            return;\n        }\n\n        if (input && (input.eventType & INPUT_END)) {\n            this.manager.emit(this.options.event + 'up', input);\n        } else {\n            this._input.timeStamp = now();\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof RotateRecognizer\n     */\n    defaults: {\n        event: 'rotate',\n        threshold: 0,\n        pointers: 2\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_NONE];\n    },\n\n    attrTest: function(input) {\n        return this._super.attrTest.call(this, input) &&\n            (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n    }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n    AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n    /**\n     * @namespace\n     * @memberof SwipeRecognizer\n     */\n    defaults: {\n        event: 'swipe',\n        threshold: 10,\n        velocity: 0.3,\n        direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n        pointers: 1\n    },\n\n    getTouchAction: function() {\n        return PanRecognizer.prototype.getTouchAction.call(this);\n    },\n\n    attrTest: function(input) {\n        var direction = this.options.direction;\n        var velocity;\n\n        if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n            velocity = input.overallVelocity;\n        } else if (direction & DIRECTION_HORIZONTAL) {\n            velocity = input.overallVelocityX;\n        } else if (direction & DIRECTION_VERTICAL) {\n            velocity = input.overallVelocityY;\n        }\n\n        return this._super.attrTest.call(this, input) &&\n            direction & input.offsetDirection &&\n            input.distance > this.options.threshold &&\n            input.maxPointers == this.options.pointers &&\n            abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n    },\n\n    emit: function(input) {\n        var direction = directionStr(input.offsetDirection);\n        if (direction) {\n            this.manager.emit(this.options.event + direction, input);\n        }\n\n        this.manager.emit(this.options.event, input);\n    }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n    Recognizer.apply(this, arguments);\n\n    // previous time and center,\n    // used for tap counting\n    this.pTime = false;\n    this.pCenter = false;\n\n    this._timer = null;\n    this._input = null;\n    this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n    /**\n     * @namespace\n     * @memberof PinchRecognizer\n     */\n    defaults: {\n        event: 'tap',\n        pointers: 1,\n        taps: 1,\n        interval: 300, // max time between the multi-tap taps\n        time: 250, // max time of the pointer to be down (like finger on the screen)\n        threshold: 9, // a minimal movement is ok, but keep it low\n        posThreshold: 10 // a multi-tap can be a bit off the initial position\n    },\n\n    getTouchAction: function() {\n        return [TOUCH_ACTION_MANIPULATION];\n    },\n\n    process: function(input) {\n        var options = this.options;\n\n        var validPointers = input.pointers.length === options.pointers;\n        var validMovement = input.distance < options.threshold;\n        var validTouchTime = input.deltaTime < options.time;\n\n        this.reset();\n\n        if ((input.eventType & INPUT_START) && (this.count === 0)) {\n            return this.failTimeout();\n        }\n\n        // we only allow little movement\n        // and we've reached an end event, so a tap is possible\n        if (validMovement && validTouchTime && validPointers) {\n            if (input.eventType != INPUT_END) {\n                return this.failTimeout();\n            }\n\n            var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n            var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n            this.pTime = input.timeStamp;\n            this.pCenter = input.center;\n\n            if (!validMultiTap || !validInterval) {\n                this.count = 1;\n            } else {\n                this.count += 1;\n            }\n\n            this._input = input;\n\n            // if tap count matches we have recognized it,\n            // else it has began recognizing...\n            var tapCount = this.count % options.taps;\n            if (tapCount === 0) {\n                // no failing requirements, immediately trigger the tap event\n                // or wait as long as the multitap interval to trigger\n                if (!this.hasRequireFailures()) {\n                    return STATE_RECOGNIZED;\n                } else {\n                    this._timer = setTimeoutContext(function() {\n                        this.state = STATE_RECOGNIZED;\n                        this.tryEmit();\n                    }, options.interval, this);\n                    return STATE_BEGAN;\n                }\n            }\n        }\n        return STATE_FAILED;\n    },\n\n    failTimeout: function() {\n        this._timer = setTimeoutContext(function() {\n            this.state = STATE_FAILED;\n        }, this.options.interval, this);\n        return STATE_FAILED;\n    },\n\n    reset: function() {\n        clearTimeout(this._timer);\n    },\n\n    emit: function() {\n        if (this.state == STATE_RECOGNIZED) {\n            this._input.tapCount = this.count;\n            this.manager.emit(this.options.event, this._input);\n        }\n    }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n    options = options || {};\n    options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n    return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n    /**\n     * set if DOM events are being triggered.\n     * But this is slower and unused by simple implementations, so disabled by default.\n     * @type {Boolean}\n     * @default false\n     */\n    domEvents: false,\n\n    /**\n     * The value for the touchAction property/fallback.\n     * When set to `compute` it will magically set the correct value based on the added recognizers.\n     * @type {String}\n     * @default compute\n     */\n    touchAction: TOUCH_ACTION_COMPUTE,\n\n    /**\n     * @type {Boolean}\n     * @default true\n     */\n    enable: true,\n\n    /**\n     * EXPERIMENTAL FEATURE -- can be removed/changed\n     * Change the parent input target element.\n     * If Null, then it is being set the to main element.\n     * @type {Null|EventTarget}\n     * @default null\n     */\n    inputTarget: null,\n\n    /**\n     * force an input class\n     * @type {Null|Function}\n     * @default null\n     */\n    inputClass: null,\n\n    /**\n     * Default recognizer setup when calling `Hammer()`\n     * When creating a new Manager these will be skipped.\n     * @type {Array}\n     */\n    preset: [\n        // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n        [RotateRecognizer, {enable: false}],\n        [PinchRecognizer, {enable: false}, ['rotate']],\n        [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n        [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n        [TapRecognizer],\n        [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n        [PressRecognizer]\n    ],\n\n    /**\n     * Some CSS properties can be used to improve the working of Hammer.\n     * Add them to this method and they will be set when creating a new Manager.\n     * @namespace\n     */\n    cssProps: {\n        /**\n         * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userSelect: 'none',\n\n        /**\n         * Disable the Windows Phone grippers when pressing an element.\n         * @type {String}\n         * @default 'none'\n         */\n        touchSelect: 'none',\n\n        /**\n         * Disables the default callout shown when you touch and hold a touch target.\n         * On iOS, when you touch and hold a touch target such as a link, Safari displays\n         * a callout containing information about the link. This property allows you to disable that callout.\n         * @type {String}\n         * @default 'none'\n         */\n        touchCallout: 'none',\n\n        /**\n         * Specifies whether zooming is enabled. Used by IE10>\n         * @type {String}\n         * @default 'none'\n         */\n        contentZooming: 'none',\n\n        /**\n         * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n         * @type {String}\n         * @default 'none'\n         */\n        userDrag: 'none',\n\n        /**\n         * Overrides the highlight color shown when the user taps a link or a JavaScript\n         * clickable element in iOS. This property obeys the alpha value, if specified.\n         * @type {String}\n         * @default 'rgba(0,0,0,0)'\n         */\n        tapHighlightColor: 'rgba(0,0,0,0)'\n    }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n    this.options = assign({}, Hammer.defaults, options || {});\n\n    this.options.inputTarget = this.options.inputTarget || element;\n\n    this.handlers = {};\n    this.session = {};\n    this.recognizers = [];\n    this.oldCssProps = {};\n\n    this.element = element;\n    this.input = createInputInstance(this);\n    this.touchAction = new TouchAction(this, this.options.touchAction);\n\n    toggleCssProps(this, true);\n\n    each(this.options.recognizers, function(item) {\n        var recognizer = this.add(new (item[0])(item[1]));\n        item[2] && recognizer.recognizeWith(item[2]);\n        item[3] && recognizer.requireFailure(item[3]);\n    }, this);\n}\n\nManager.prototype = {\n    /**\n     * set options\n     * @param {Object} options\n     * @returns {Manager}\n     */\n    set: function(options) {\n        assign(this.options, options);\n\n        // Options that need a little more setup\n        if (options.touchAction) {\n            this.touchAction.update();\n        }\n        if (options.inputTarget) {\n            // Clean up existing event listeners and reinitialize\n            this.input.destroy();\n            this.input.target = options.inputTarget;\n            this.input.init();\n        }\n        return this;\n    },\n\n    /**\n     * stop recognizing for this session.\n     * This session will be discarded, when a new [input]start event is fired.\n     * When forced, the recognizer cycle is stopped immediately.\n     * @param {Boolean} [force]\n     */\n    stop: function(force) {\n        this.session.stopped = force ? FORCED_STOP : STOP;\n    },\n\n    /**\n     * run the recognizers!\n     * called by the inputHandler function on every movement of the pointers (touches)\n     * it walks through all the recognizers and tries to detect the gesture that is being made\n     * @param {Object} inputData\n     */\n    recognize: function(inputData) {\n        var session = this.session;\n        if (session.stopped) {\n            return;\n        }\n\n        // run the touch-action polyfill\n        this.touchAction.preventDefaults(inputData);\n\n        var recognizer;\n        var recognizers = this.recognizers;\n\n        // this holds the recognizer that is being recognized.\n        // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n        // if no recognizer is detecting a thing, it is set to `null`\n        var curRecognizer = session.curRecognizer;\n\n        // reset when the last recognizer is recognized\n        // or when we're in a new session\n        if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n            curRecognizer = session.curRecognizer = null;\n        }\n\n        var i = 0;\n        while (i < recognizers.length) {\n            recognizer = recognizers[i];\n\n            // find out if we are allowed try to recognize the input for this one.\n            // 1.   allow if the session is NOT forced stopped (see the .stop() method)\n            // 2.   allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n            //      that is being recognized.\n            // 3.   allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n            //      this can be setup with the `recognizeWith()` method on the recognizer.\n            if (session.stopped !== FORCED_STOP && ( // 1\n                    !curRecognizer || recognizer == curRecognizer || // 2\n                    recognizer.canRecognizeWith(curRecognizer))) { // 3\n                recognizer.recognize(inputData);\n            } else {\n                recognizer.reset();\n            }\n\n            // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n            // current active recognizer. but only if we don't already have an active recognizer\n            if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n                curRecognizer = session.curRecognizer = recognizer;\n            }\n            i++;\n        }\n    },\n\n    /**\n     * get a recognizer by its event name.\n     * @param {Recognizer|String} recognizer\n     * @returns {Recognizer|Null}\n     */\n    get: function(recognizer) {\n        if (recognizer instanceof Recognizer) {\n            return recognizer;\n        }\n\n        var recognizers = this.recognizers;\n        for (var i = 0; i < recognizers.length; i++) {\n            if (recognizers[i].options.event == recognizer) {\n                return recognizers[i];\n            }\n        }\n        return null;\n    },\n\n    /**\n     * add a recognizer to the manager\n     * existing recognizers with the same event name will be removed\n     * @param {Recognizer} recognizer\n     * @returns {Recognizer|Manager}\n     */\n    add: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'add', this)) {\n            return this;\n        }\n\n        // remove existing\n        var existing = this.get(recognizer.options.event);\n        if (existing) {\n            this.remove(existing);\n        }\n\n        this.recognizers.push(recognizer);\n        recognizer.manager = this;\n\n        this.touchAction.update();\n        return recognizer;\n    },\n\n    /**\n     * remove a recognizer by name or instance\n     * @param {Recognizer|String} recognizer\n     * @returns {Manager}\n     */\n    remove: function(recognizer) {\n        if (invokeArrayArg(recognizer, 'remove', this)) {\n            return this;\n        }\n\n        recognizer = this.get(recognizer);\n\n        // let's make sure this recognizer exists\n        if (recognizer) {\n            var recognizers = this.recognizers;\n            var index = inArray(recognizers, recognizer);\n\n            if (index !== -1) {\n                recognizers.splice(index, 1);\n                this.touchAction.update();\n            }\n        }\n\n        return this;\n    },\n\n    /**\n     * bind event\n     * @param {String} events\n     * @param {Function} handler\n     * @returns {EventEmitter} this\n     */\n    on: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n        if (handler === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            handlers[event] = handlers[event] || [];\n            handlers[event].push(handler);\n        });\n        return this;\n    },\n\n    /**\n     * unbind event, leave emit blank to remove all handlers\n     * @param {String} events\n     * @param {Function} [handler]\n     * @returns {EventEmitter} this\n     */\n    off: function(events, handler) {\n        if (events === undefined) {\n            return;\n        }\n\n        var handlers = this.handlers;\n        each(splitStr(events), function(event) {\n            if (!handler) {\n                delete handlers[event];\n            } else {\n                handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n            }\n        });\n        return this;\n    },\n\n    /**\n     * emit event to the listeners\n     * @param {String} event\n     * @param {Object} data\n     */\n    emit: function(event, data) {\n        // we also want to trigger dom events\n        if (this.options.domEvents) {\n            triggerDomEvent(event, data);\n        }\n\n        // no handlers, so skip it all\n        var handlers = this.handlers[event] && this.handlers[event].slice();\n        if (!handlers || !handlers.length) {\n            return;\n        }\n\n        data.type = event;\n        data.preventDefault = function() {\n            data.srcEvent.preventDefault();\n        };\n\n        var i = 0;\n        while (i < handlers.length) {\n            handlers[i](data);\n            i++;\n        }\n    },\n\n    /**\n     * destroy the manager and unbinds all events\n     * it doesn't unbind dom events, that is the user own responsibility\n     */\n    destroy: function() {\n        this.element && toggleCssProps(this, false);\n\n        this.handlers = {};\n        this.session = {};\n        this.input.destroy();\n        this.element = null;\n    }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n    var element = manager.element;\n    if (!element.style) {\n        return;\n    }\n    var prop;\n    each(manager.options.cssProps, function(value, name) {\n        prop = prefixed(element.style, name);\n        if (add) {\n            manager.oldCssProps[prop] = element.style[prop];\n            element.style[prop] = value;\n        } else {\n            element.style[prop] = manager.oldCssProps[prop] || '';\n        }\n    });\n    if (!add) {\n        manager.oldCssProps = {};\n    }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n    var gestureEvent = document.createEvent('Event');\n    gestureEvent.initEvent(event, true, true);\n    gestureEvent.gesture = data;\n    data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n    INPUT_START: INPUT_START,\n    INPUT_MOVE: INPUT_MOVE,\n    INPUT_END: INPUT_END,\n    INPUT_CANCEL: INPUT_CANCEL,\n\n    STATE_POSSIBLE: STATE_POSSIBLE,\n    STATE_BEGAN: STATE_BEGAN,\n    STATE_CHANGED: STATE_CHANGED,\n    STATE_ENDED: STATE_ENDED,\n    STATE_RECOGNIZED: STATE_RECOGNIZED,\n    STATE_CANCELLED: STATE_CANCELLED,\n    STATE_FAILED: STATE_FAILED,\n\n    DIRECTION_NONE: DIRECTION_NONE,\n    DIRECTION_LEFT: DIRECTION_LEFT,\n    DIRECTION_RIGHT: DIRECTION_RIGHT,\n    DIRECTION_UP: DIRECTION_UP,\n    DIRECTION_DOWN: DIRECTION_DOWN,\n    DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n    DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n    DIRECTION_ALL: DIRECTION_ALL,\n\n    Manager: Manager,\n    Input: Input,\n    TouchAction: TouchAction,\n\n    TouchInput: TouchInput,\n    MouseInput: MouseInput,\n    PointerEventInput: PointerEventInput,\n    TouchMouseInput: TouchMouseInput,\n    SingleTouchInput: SingleTouchInput,\n\n    Recognizer: Recognizer,\n    AttrRecognizer: AttrRecognizer,\n    Tap: TapRecognizer,\n    Pan: PanRecognizer,\n    Swipe: SwipeRecognizer,\n    Pinch: PinchRecognizer,\n    Rotate: RotateRecognizer,\n    Press: PressRecognizer,\n\n    on: addEventListeners,\n    off: removeEventListeners,\n    each: each,\n    merge: merge,\n    extend: extend,\n    assign: assign,\n    inherit: inherit,\n    bindFn: bindFn,\n    prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n//  style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n    define(function() {\n        return Hammer;\n    });\n} else if (typeof module != 'undefined' && module.exports) {\n    module.exports = Hammer;\n} else {\n    window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n"],"sourceRoot":""}