b0y-101 Mini Shell


Current Path : E:/www/instructor/teacher09/media/com_eventgallery/dist/
File Upload :
Current File : E:/www/instructor/teacher09/media/com_eventgallery/dist/backend-debug.js.map

{"version":3,"sources":["webpack://eventgallery/./node_modules/async/asyncify.js","webpack://eventgallery/./node_modules/async/internal/DoublyLinkedList.js","webpack://eventgallery/./node_modules/async/internal/initialParams.js","webpack://eventgallery/./node_modules/async/internal/onlyOnce.js","webpack://eventgallery/./node_modules/async/internal/queue.js","webpack://eventgallery/./node_modules/async/internal/setImmediate.js","webpack://eventgallery/./node_modules/async/internal/wrapAsync.js","webpack://eventgallery/./node_modules/async/queue.js","webpack://eventgallery/./backend/js/Albumselector.js","webpack://eventgallery/./backend/js/EventgalleryBehavior.js","webpack://eventgallery/./backend/js/EventgalleryGooglePhotos.js","webpack://eventgallery/./backend/js/EventgalleryInlineFormEdit.js","webpack://eventgallery/./backend/js/LocalizableText.js","webpack://eventgallery/./backend/vue/cacheclear/index.js","webpack://eventgallery/./backend/vue/filesync/index.js","webpack://eventgallery/./backend/vue/imagecontentpluginform/index.js","webpack://eventgallery/./backend/vue/scalepriceeditor/index.js","webpack://eventgallery/./backend/vue/thumbnailcreator/index.js","webpack://eventgallery/./backend/vue/uploader/index.js","webpack://eventgallery/./common/js/BatchCreator.js","webpack://eventgallery/./common/js/EventgalleryTools.js","webpack://eventgallery/./common/js/Helpers.js","webpack://eventgallery/./common/vue/helper/LocalizationMapper.js","webpack://eventgallery/./frontend/js/EventgalleryGooglePhotosProcessor.js","webpack://eventgallery/./frontend/js/URLHelper.js","webpack://eventgallery/backend/vue/cacheclear/Cacheclear.vue","webpack://eventgallery/backend/vue/cacheclear/Elements.vue","webpack://eventgallery/backend/vue/cacheclear/Groups.vue","webpack://eventgallery/backend/vue/components/ErrorPanel.vue","webpack://eventgallery/backend/vue/components/Folder.vue","webpack://eventgallery/backend/vue/components/Folders.vue","webpack://eventgallery/backend/vue/components/ProcessSteps.vue","webpack://eventgallery/backend/vue/components/Progress.vue","webpack://eventgallery/backend/vue/filesync/Filesync.vue","webpack://eventgallery/backend/vue/imagecontentpluginform/ImageContentPluginForm.vue","webpack://eventgallery/backend/vue/imagecontentpluginform/ImageSelector.vue","webpack://eventgallery/backend/vue/imagecontentpluginform/Input.vue","webpack://eventgallery/backend/vue/imagecontentpluginform/Label.vue","webpack://eventgallery/backend/vue/imagecontentpluginform/Radio.vue","webpack://eventgallery/backend/vue/imagecontentpluginform/Select.vue","webpack://eventgallery/backend/vue/scalepriceeditor/Scalepriceeditor.vue","webpack://eventgallery/backend/vue/thumbnailcreator/Thumbnailcreator.vue","webpack://eventgallery/backend/vue/uploader/Uploader.vue","webpack://eventgallery/./node_modules/list.js/src/add-async.js","webpack://eventgallery/./node_modules/list.js/src/filter.js","webpack://eventgallery/./node_modules/list.js/src/fuzzy-search.js","webpack://eventgallery/./node_modules/list.js/src/index.js","webpack://eventgallery/./node_modules/list.js/src/item.js","webpack://eventgallery/./node_modules/list.js/src/pagination.js","webpack://eventgallery/./node_modules/list.js/src/parse.js","webpack://eventgallery/./node_modules/list.js/src/search.js","webpack://eventgallery/./node_modules/list.js/src/sort.js","webpack://eventgallery/./node_modules/list.js/src/templater.js","webpack://eventgallery/./node_modules/list.js/src/utils/classes.js","webpack://eventgallery/./node_modules/list.js/src/utils/events.js","webpack://eventgallery/./node_modules/list.js/src/utils/extend.js","webpack://eventgallery/./node_modules/list.js/src/utils/fuzzy.js","webpack://eventgallery/./node_modules/list.js/src/utils/get-attribute.js","webpack://eventgallery/./node_modules/list.js/src/utils/get-by-class.js","webpack://eventgallery/./node_modules/list.js/src/utils/index-of.js","webpack://eventgallery/./node_modules/list.js/src/utils/to-array.js","webpack://eventgallery/./node_modules/list.js/src/utils/to-string.js","webpack://eventgallery/./node_modules/string-natural-compare/natural-compare.js","webpack://eventgallery/./backend/vue/cacheclear/Cacheclear.vue","webpack://eventgallery/./backend/vue/cacheclear/Elements.vue?ddea","webpack://eventgallery/./backend/vue/cacheclear/Groups.vue?4f4b","webpack://eventgallery/./backend/vue/components/ErrorPanel.vue?a570","webpack://eventgallery/./backend/vue/components/Folder.vue?d67c","webpack://eventgallery/./backend/vue/components/Folders.vue?3c78","webpack://eventgallery/./backend/vue/components/ProcessSteps.vue?7ca8","webpack://eventgallery/./backend/vue/components/Progress.vue?c7d1","webpack://eventgallery/./backend/vue/filesync/Filesync.vue","webpack://eventgallery/./backend/vue/imagecontentpluginform/ImageContentPluginForm.vue?8c7d","webpack://eventgallery/./backend/vue/imagecontentpluginform/ImageSelector.vue?f6c6","webpack://eventgallery/./backend/vue/imagecontentpluginform/Input.vue","webpack://eventgallery/./backend/vue/imagecontentpluginform/Label.vue?6514","webpack://eventgallery/./backend/vue/imagecontentpluginform/Radio.vue","webpack://eventgallery/./backend/vue/imagecontentpluginform/Select.vue","webpack://eventgallery/./backend/vue/scalepriceeditor/Scalepriceeditor.vue?b509","webpack://eventgallery/./backend/vue/thumbnailcreator/Thumbnailcreator.vue","webpack://eventgallery/./backend/vue/uploader/Uploader.vue","webpack://eventgallery/./backend/vue/cacheclear/Cacheclear.vue?52c8","webpack://eventgallery/./backend/vue/cacheclear/Elements.vue?e9cb","webpack://eventgallery/./backend/vue/cacheclear/Groups.vue?9ac1","webpack://eventgallery/./backend/vue/components/ErrorPanel.vue?ac81","webpack://eventgallery/./backend/vue/components/Folder.vue?1ff3","webpack://eventgallery/./backend/vue/components/Folders.vue?7597","webpack://eventgallery/./backend/vue/components/ProcessSteps.vue?80c2","webpack://eventgallery/./backend/vue/components/Progress.vue?2d9e","webpack://eventgallery/./backend/vue/filesync/Filesync.vue?1e07","webpack://eventgallery/./backend/vue/imagecontentpluginform/ImageContentPluginForm.vue?6f2e","webpack://eventgallery/./backend/vue/imagecontentpluginform/ImageSelector.vue?af47","webpack://eventgallery/./backend/vue/imagecontentpluginform/Input.vue?651c","webpack://eventgallery/./backend/vue/imagecontentpluginform/Label.vue?f09e","webpack://eventgallery/./backend/vue/imagecontentpluginform/Radio.vue?92e2","webpack://eventgallery/./backend/vue/imagecontentpluginform/Select.vue?7e02","webpack://eventgallery/./backend/vue/scalepriceeditor/Scalepriceeditor.vue?4783","webpack://eventgallery/./backend/vue/thumbnailcreator/Thumbnailcreator.vue?3509","webpack://eventgallery/./backend/vue/uploader/Uploader.vue?a6a9","webpack://eventgallery/./backend/vue/cacheclear/Cacheclear.vue?fb40","webpack://eventgallery/./backend/vue/cacheclear/Elements.vue?f4b5","webpack://eventgallery/./backend/vue/cacheclear/Groups.vue?4776","webpack://eventgallery/./backend/vue/components/ErrorPanel.vue?4cae","webpack://eventgallery/./backend/vue/components/Folder.vue?47a1","webpack://eventgallery/./backend/vue/components/Folders.vue?030f","webpack://eventgallery/./backend/vue/components/ProcessSteps.vue?1684","webpack://eventgallery/./backend/vue/components/Progress.vue?2232","webpack://eventgallery/./backend/vue/filesync/Filesync.vue?e5ce","webpack://eventgallery/./backend/vue/imagecontentpluginform/ImageContentPluginForm.vue?5a21","webpack://eventgallery/./backend/vue/imagecontentpluginform/ImageSelector.vue?e384","webpack://eventgallery/./backend/vue/imagecontentpluginform/Input.vue?14ed","webpack://eventgallery/./backend/vue/imagecontentpluginform/Label.vue?40b2","webpack://eventgallery/./backend/vue/imagecontentpluginform/Radio.vue?046f","webpack://eventgallery/./backend/vue/imagecontentpluginform/Select.vue?e27b","webpack://eventgallery/./backend/vue/scalepriceeditor/Scalepriceeditor.vue?9513","webpack://eventgallery/./backend/vue/thumbnailcreator/Thumbnailcreator.vue?761e","webpack://eventgallery/./backend/vue/uploader/Uploader.vue?84d8","webpack://eventgallery/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://eventgallery/./node_modules/vue/dist/vue.runtime.esm.js","webpack://eventgallery/webpack/bootstrap","webpack://eventgallery/webpack/runtime/compat get default export","webpack://eventgallery/webpack/runtime/define property getters","webpack://eventgallery/webpack/runtime/global","webpack://eventgallery/webpack/runtime/hasOwnProperty shorthand","webpack://eventgallery/webpack/runtime/make namespace object","webpack://eventgallery/./eventgallery-backend.js"],"names":["Object","defineProperty","exports","value","default","func","_wrapAsync","isAsync","args","callback","pop","handlePromise","apply","this","_initialParams2","result","e","then","_interopRequireDefault","_setImmediate2","obj","__esModule","promise","invokeCallback","err","message","Error","error","module","DLL","head","tail","length","node","prev","next","shift","newNode","insertBefore","setInitial","insertAfter","removeLink","Symbol","iterator","cur","data","testFn","curr","dll","fn","call","callFn","worker","concurrency","payload","RangeError","_worker","_wrapAsync2","numRunning","workersList","events","drain","saturated","unsaturated","empty","off","event","handler","filter","ev","keys","forEach","trigger","processingScheduled","_insert","insertAtFront","rejectOnError","res","rej","promiseCallback","q","started","item","_tasks","unshift","push","process","Promise","resolve","reject","_createCB","tasks","i","l","task","index","indexOf","splice","buffer","idle","_maybeDrain","eventMethod","name","handleAndRemove","once","on","isProcessing","_DoublyLinkedList2","paused","Array","isArray","map","datum","remove","Math","min","cb","_onlyOnce2","running","defineProperties","writable","fallback","wrap","_defer","hasSetImmediate","setImmediate","hasNextTick","nextTick","setTimeout","defer","isAsyncIterable","isAsyncGenerator","undefined","_asyncify2","toStringTag","asyncFn","asyncIterator","_queue2","items","template","document","createElement","innerHTML","Albumselector","_shadowRoot","attachShadow","mode","appendChild","content","cloneNode","$loadingLabel","querySelector","$loading","$empty","$albumlist","element","parent","getElementById","xhr","XMLHttpRequest","onreadystatechange","readyState","JSON","parse","response","createTable","albums","open","url","accountid","send","values","album","previewThumbnail","coverPhotoBaseUrl","encodedTitle","encodeURI","title","mediaItemsCount","albumid","id","link","productUrl","myList","List","page","valueNames","attr","add","buttons","querySelectorAll","button","addEventListener","preventDefault","stopPropagation","getAttribute","decodeURI","postMessage","stringify","style","display","oldVal","newVal","label","label_empty","getData","HTMLElement","window","customElements","define","Eventgallery","GooglePhotosProcessor","processImages","dataStr","startsWith","replace","albumField","onchange","click","target","oauthWindow","closed","alert","fireDomLoadEvent","dispatchEvent","Event","bubbles","cancelable","assignClickEvents","assignClickEvent","openInlineForm","saveInlineForm","closeInlineForm","elements","removeEventListener","currentContainer","closest","xhttp","status","responseText","form","setRequestHeader","serializeForm","setAttribute","inputFields","getElementsByClassName","collectData","field","languageTag","trim","jsonData","rootId","Vue","el","mounted","$el","render","Cacheclear","props","cacheClearUrl","elementsJson","groupsJson","csrfToken","i18n","mapLocalizationData","Filesync","loadFoldersUrl","fileSyncUrl","folderSyncUrl","fileBatchSize","parseInt","maxParallelRequests","ImageContentPluginForm","editorName","loadFilesUrl","formId","formDefinitionJson","nodes","inputName","inputId","inputValue","Thumbnailcreator","require","Uploader","maxFileSize","uploadUrl","COM_EVENTGALLERY_EVENT_UPLOAD_FILES_TO_UPLOAD","COM_EVENTGALLERY_EVENT_UPLOAD_PENDING","COM_EVENTGALLERY_EVENT_UPLOAD_FINISHED","createBatches","max_items_per_batch","batches","currentBatch","eventgallery","jQuery","Tools","mergeObjects","calcBorderWidth","addUrlHashParameter","getUrlHashParameterValue","removeUrlHashParameter","addUrlParameter","removeUrlParameter","setCSSStyle","removeElement","array","elm","defaults","options","key","properties","sum","j","parseFloat","css","isNaN","initialUrl","fragments","split","urlpart","hashparts","encodeURIComponent","join","prefix","newHashParts","urlparts","pars","getParents","parents","parentElement","serialized","inputElements","disabled","type","n","selected","checked","dataI18n","hmltElement","_elements","attributes","attrib","toUpperCase","t","localizationKey","lookup","LOADING_MATCHER","MARKER_IMAGE_IS_IN_PROGRESS_ATTRIBUTE","albumUrl","albumsUrl","EventGalleryGooglePhotosConfiguration","imageAddedCallback","doReloadLightbox","detail","isOverlay","_groupByAlbum","_collectHTMLElements","_markImagesAsInProgress","_getMainImageDataFromServer","htmlCollection","getElementsByTagName","img","backgroundImage","dataSrc","src","foundLinkHTMLElements","concat","a","rel","href","parsedHTMLElement","getHTMLElement","htmlElements","Map","imageHTMLElement","_parseHTMLElement","updateParameters","folder","parameters","get","set","htmlElement","tagName","ParsedImageHTMLElement","ParsedLinkHTMLElement","foldername","_doAlbumRequest","fetch","json","_processAlbumResult","_replaceImages","albumsWithMainImagesOnly","_filterForAlbumsWithMainImageOnly","size","_doAlbumsRequest","_getAlbumDataFromServer","_processAlbumsResult","newAlbums","mainImages","image","isMainImage","serverResult","parsedImageHTMLElement","imageUrl","getFile","replaceElementLinks","lightbox","isOpen","getCurrentSlide","thumbnailContainer","_gallery","close","ParsedHTMLElement","attributeNames","Set","styleAttributeNames","parameterString","substring","URLHelper","updateParametersWithUrl","getImageUrl","getWidth","width","urlParameterString","pairs","pair","splittedPair","urlSring","parts","queryParts","parseURLParameter","urlString","list","addAsync","valuesToAdd","update","handlers","filterStart","filterComplete","filterFunction","reset","filtered","is","il","visibleItems","extend","toString","getByClass","fuzzy","location","distance","threshold","multiSearch","searchClass","fuzzySearch","search","searchString","columns","searchArguments","k","kl","found","foundArgument","jl","searchArgument","hasOwnProperty","text","toLowerCase","bind","listContainer","srcElement","str","naturalSort","classes","toArray","init","self","Item","initPagination","start","listClass","sortClass","matchingItems","searched","searchColumns","utils","templater","sort","pagination","reIndex","toJSON","added","notCreate","show","valueName","matchedItems","clear","matching","hide","initValues","_values","newValues","visible","parentNode","refresh","pagingList","pages","ceil","currentPage","innerWindow","left","outerWindow","right","className","number","dotted","addEvent","currentPageItem","dottedLeft","dottedRight","paginationClass","itemElements","parseAsync","itemsToIndex","parseComplete","childNodes","getChildren","indexAsync","customSearch","prepare","resetList","setOptions","setColumns","setSearchString","s","tmpColumn","column","searchMethod","arguments","searchStart","searchComplete","els","getOrder","btn","predefinedOrder","has","getInSensitive","insensitive","setOrder","order","currentTarget","sortFunction","customSortFunction","multi","itemA","itemB","alphabet","caseInsensitive","sortStart","sortComplete","Templater","itemSource","clearSourceItem","getItemSource","exec","tbody","firstChild","div","source","create","v","getValueName","newItem","removeAttribute","removeChild","hasChildNodes","re","ClassList","nodeType","classList","prototype","arr","toggle","force","contains","unbind","capture","object","slice","property","pattern","Match_Location","Match_Distance","Match_Threshold","loc","charAt","match_bitapScore_","x","accuracy","proximity","abs","score_threshold","best_loc","lastIndexOf","bin_min","bin_mid","matchmask","last_rd","bin_max","d","floor","max","finish","rd","charMatch","score","nodeName","nodeValue","container","single","test","classElements","elsLen","RegExp","polyfill","collection","Function","alphabetIndexMap","alphabetIndexMapLength","isNumberCode","code","naturalCompare","b","lengthA","lengthB","aIndex","bIndex","charCodeA","charCodeAt","charCodeB","numStartA","numStartB","numEndA","numEndB","difference","component","staticRenderFns","__file","_vm","_h","$createElement","_c","_self","attrs","_v","_s","staticClass","checkAll","uncheckAll","stopQueue","isReadyForCacheDeletion","clearCache","numberOfTasks","remaining","total","numberOfLastQueuePush","_e","groups","blocked","_withStripped","sortedElements","group","displayname","_l","$event","directives","rawName","expression","domProps","_i","change","$$a","$$el","$$c","$$i","$set","count","class","errorMessages","failedFolders","headline","reversedErrorMessages","failedFolder","backgroundColor","files","numberOfFilesLeft","i18n_labelNeedSync","sortedFolders","active","i18n_labelStep1","numberOfSelectedFolders","i18n_labelStep2","i18n_hintStep2","$emit","i18n_labelButtonStep2","i18n_labelItemsStep2","isReadyForSyncFiles","i18n_labelStep3","i18n_hintStep3","i18n_labelButtonStep3","numberOfSelectedFiles","i18n_labelItemsStep3","progress","numberOfSyncableFiles","selectedFolders","isSyncFilesProcessReadyToStart","syncFiles","syncFolders","folders","formDefinition","fieldset","description","model","$$v","option","tagContent","insertImageContentTag","showImageSelectorState","thumb","staticStyle","showImageSelector","hideImageSelector","folderFilter","input","composing","filteredFolders","myFolder","loadFiles","isLoading","file","setImage","Id","_q","for","currentOption","$$selectedVal","o","_value","multiple","currentInputValue","newQuantity","newPrice","addScalePrice","_m","sortedScalePrices","scalePrice","quantity","price","deleteQuantity","refreshetags","addFiles","pendingFiles","inProgressFiles","revertedPendingFiles","pendingFile","finishedFilesContent","failedFilesContent","inProgressFile","failedFileContent","revertedFinishedFilesContent","finishedFileContent","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","emptyObject","freeze","isUndef","isDef","isTrue","isPrimitive","isObject","_toString","toRawType","isPlainObject","isRegExp","isValidArrayIndex","val","String","isFinite","isPromise","catch","toNumber","makeMap","expectsLowerCase","isBuiltInTag","isReservedAttribute","hasOwn","cached","cache","camelizeRE","camelize","_","c","capitalize","hyphenateRE","hyphenate","ctx","boundFn","_length","ret","to","_from","toObject","noop","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","Date","getTime","keysA","keysB","looseIndexOf","called","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","def","enumerable","configurable","_isServer","bailRE","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","navigator","userAgent","isIE","isIE9","isEdge","isIOS","isFF","match","nativeWatch","watch","supportsPassive","opts","isServerRendering","g","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","warn","tip","formatComponentName","generateComponentTrace","hasConsole","console","classifyRE","msg","vm","trace","includeFile","cid","_isVue","constructor","_componentTag","$parent","tree","currentRecursiveSequence","last","repeat","uid","Dep","subs","addSub","sub","removeSub","depend","addDep","notify","targetStack","pushTarget","popTarget","VNode","tag","children","componentOptions","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","method","original","len","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","__proto__","protoAugment","copyAugment","walk","observe","asRootData","isExtensible","defineReactive$$1","customSetter","shallow","getOwnPropertyDescriptor","getter","setter","childOb","dependArray","del","strats","mergeData","from","toVal","fromVal","mergeDataOrFn","parentVal","childVal","instanceData","defaultData","mergeHook","hooks","dedupeHooks","mergeAssets","assertObjectType","propsData","defaultStrat","key$1","methods","inject","computed","provide","validateComponentName","mergeOptions","components","checkComponents","normalizeProps","normalized","normalizeInject","dirs","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","prop","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","_props","getType","getPropDefaultValue","prevShouldObserve","required","valid","expectedTypes","assertedType","assertType","expectedType","validator","receivedType","expectedValue","styleValue","receivedValue","isExplicable","some","elem","isBoolean","getInvalidTypeMessage","assertProp","simpleCheckRE","isSameType","Number","handleError","info","errorCaptured","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","initProxy","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","p","MutationObserver","counter","observer","textNode","createTextNode","characterData","_resolve","allowedGlobals","warnNonPresent","warnReservedPrefix","hasProxy","Proxy","isBuiltInModifier","hasHandler","isAllowed","$data","getHandler","_renderProxy","mark","measure","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","perf","clearMarks","clearMeasures","startTag","endTag","normalizeEvent","passive","once$$1","createFnInvoker","fns","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","old","params","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","hash","altKey","preserve","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","lastIndex","_isVList","resolveInject","provideKey","_provided","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","done","renderSlot","bindObject","scopedSlotFn","$scopedSlots","$slots","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","camelizedKey","hyphenatedKey","renderStatic","isInFor","_staticTrees","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_t","_f","_k","_b","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","needNormalization","listeners","injections","scopedSlots","cloneAndMarkFunctionalResult","renderContext","clone","devtoolsMeta","mergeProps","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","isUpdatingChildComponent","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","insert","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","destroy","deactivateChildComponent","$destroy","hooksToMerge","createComponent","baseCtor","factory","errorComp","resolved","owner","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","clearTimeout","ensureCtor","reason","delay","timeout","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","transformModel","keyInLowerCase","extractPropsFromVNodeData","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","normalizationType","alwaysNormalize","simpleNormalizeChildren","pre","applyNS","registerDeepBindings","_createElement","comp","base","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","isInInactiveTree","direct","_directInactive","$children","_hasHookEvent","queue","circular","waiting","flushing","currentFlushTimestamp","getNow","now","createEvent","timeStamp","flushSchedulerQueue","watcher","before","run","user","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","deep","lazy","dirty","deps","newDeps","depIds","newDepIds","path","segments","parsePath","cleanupDeps","tmp","queueWatcher","oldValue","evaluate","teardown","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","computedWatcherOptions","defineComputed","userDef","shouldCache","createComputedGetter","createGetterInvoker","_computedWatchers","createWatcher","$watch","uid$3","super","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","_init","getComponentName","matches","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","current","cached$$1","_uid","vnodeComponentOptions","initInternalComponent","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","propsOptions","isRoot","initProps","initMethods","_data","initData","watchers","isSSR","initComputed","initWatch","initState","initProvide","_name","initMixin","dataDef","propsDef","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","lowerCaseEvent","eventsMixin","_update","prevEl","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderError","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","created","destroyed","configDef","util","defineReactive","delete","observable","use","plugin","installedPlugins","_installedPlugins","install","initUse","mixin","initMixin$1","Super","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps$1","initComputed$1","initExtend","definition","initAssetRegisters","initGlobalAPI","version","acceptValue","isEnumeratedAttr","isValidContentEditableValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","isFalsyAttrValue","mergeClassData","stringifyClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","createElementNS","namespace","createComment","referenceNode","nextSibling","setTextContent","textContent","setStyleScope","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","arg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","baseSetAttr","convertEnumeratedValue","setAttributeNS","__ieph","blocker","stopImmediatePropagation","updateClass","oldData","cls","childNode","dynamicClass","genClassForVnode","transitionClass","_transitionClasses","_prevClass","target$1","klass","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","ownerDocument","updateDOMListeners","normalizeEvents","svgContainer","updateDOMProps","oldProps","strCur","shouldUpdateValue","checkVal","notInFocus","activeElement","isNotInFocusAndDirty","_vModifiers","isDirtyWithModifiers","parseStyleText","cssText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","addClass","removeClass","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","getTransitionInfo","propCount","ended","end","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","checkDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","modules","removeNode","isUnknownElement$$1","inVPre","ignore","creatingElmInVPre","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","checkDuplicateKeys","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","childElm","createRmCb","seenKeys","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","hydrationBailed","isRenderedModule","assertNodeMatch","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i$2","createPatchFunction","vmodel","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","hasNoMatchingOption","actuallySetSelected","isMultiple","selectedIndex","initEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","transitionProps","getRealChild","compOptions","extractTransitionData","placeholder","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","getBoundingClientRect","applyTranslation","oldPos","pos","dx","dy","top","moved","transform","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","updated","hasMove","_reflow","body","offsetHeight","propertyName","_hasMove","HTMLUnknownElement","updateComponent","mountComponent","query","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","globalThis","r"],"mappings":"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","file":"backend-debug.js","sourcesContent":["'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = asyncify;\n\nvar _initialParams = require('./internal/initialParams');\n\nvar _initialParams2 = _interopRequireDefault(_initialParams);\n\nvar _setImmediate = require('./internal/setImmediate');\n\nvar _setImmediate2 = _interopRequireDefault(_setImmediate);\n\nvar _wrapAsync = require('./internal/wrapAsync');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Take a sync function and make it async, passing its return value to a\n * callback. This is useful for plugging sync functions into a waterfall,\n * series, or other async functions. Any arguments passed to the generated\n * function will be passed to the wrapped function (except for the final\n * callback argument). Errors thrown will be passed to the callback.\n *\n * If the function passed to `asyncify` returns a Promise, that promises's\n * resolved/rejected state will be used to call the callback, rather than simply\n * the synchronous return value.\n *\n * This also means you can asyncify ES2017 `async` functions.\n *\n * @name asyncify\n * @static\n * @memberOf module:Utils\n * @method\n * @alias wrapSync\n * @category Util\n * @param {Function} func - The synchronous function, or Promise-returning\n * function to convert to an {@link AsyncFunction}.\n * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n * invoked with `(args..., callback)`.\n * @example\n *\n * // passing a regular synchronous function\n * async.waterfall([\n *     async.apply(fs.readFile, filename, \"utf8\"),\n *     async.asyncify(JSON.parse),\n *     function (data, next) {\n *         // data is the result of parsing the text.\n *         // If there was a parsing error, it would have been caught.\n *     }\n * ], callback);\n *\n * // passing a function returning a promise\n * async.waterfall([\n *     async.apply(fs.readFile, filename, \"utf8\"),\n *     async.asyncify(function (contents) {\n *         return db.model.create(contents);\n *     }),\n *     function (model, next) {\n *         // `model` is the instantiated model object.\n *         // If there was an error, this function would be skipped.\n *     }\n * ], callback);\n *\n * // es2017 example, though `asyncify` is not needed if your JS environment\n * // supports async functions out of the box\n * var q = async.queue(async.asyncify(async function(file) {\n *     var intermediateStep = await processFile(file);\n *     return await somePromise(intermediateStep)\n * }));\n *\n * q.push(files);\n */\nfunction asyncify(func) {\n    if ((0, _wrapAsync.isAsync)(func)) {\n        return function (...args /*, callback*/) {\n            const callback = args.pop();\n            const promise = func.apply(this, args);\n            return handlePromise(promise, callback);\n        };\n    }\n\n    return (0, _initialParams2.default)(function (args, callback) {\n        var result;\n        try {\n            result = func.apply(this, args);\n        } catch (e) {\n            return callback(e);\n        }\n        // if result is Promise object\n        if (result && typeof result.then === 'function') {\n            return handlePromise(result, callback);\n        } else {\n            callback(null, result);\n        }\n    });\n}\n\nfunction handlePromise(promise, callback) {\n    return promise.then(value => {\n        invokeCallback(callback, null, value);\n    }, err => {\n        invokeCallback(callback, err && err.message ? err : new Error(err));\n    });\n}\n\nfunction invokeCallback(callback, error, value) {\n    try {\n        callback(error, value);\n    } catch (err) {\n        (0, _setImmediate2.default)(e => {\n            throw e;\n        }, err);\n    }\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation\n// used for queues. This implementation assumes that the node provided by the user can be modified\n// to adjust the next and last properties. We implement only the minimal functionality\n// for queue support.\nclass DLL {\n    constructor() {\n        this.head = this.tail = null;\n        this.length = 0;\n    }\n\n    removeLink(node) {\n        if (node.prev) node.prev.next = node.next;else this.head = node.next;\n        if (node.next) node.next.prev = node.prev;else this.tail = node.prev;\n\n        node.prev = node.next = null;\n        this.length -= 1;\n        return node;\n    }\n\n    empty() {\n        while (this.head) this.shift();\n        return this;\n    }\n\n    insertAfter(node, newNode) {\n        newNode.prev = node;\n        newNode.next = node.next;\n        if (node.next) node.next.prev = newNode;else this.tail = newNode;\n        node.next = newNode;\n        this.length += 1;\n    }\n\n    insertBefore(node, newNode) {\n        newNode.prev = node.prev;\n        newNode.next = node;\n        if (node.prev) node.prev.next = newNode;else this.head = newNode;\n        node.prev = newNode;\n        this.length += 1;\n    }\n\n    unshift(node) {\n        if (this.head) this.insertBefore(this.head, node);else setInitial(this, node);\n    }\n\n    push(node) {\n        if (this.tail) this.insertAfter(this.tail, node);else setInitial(this, node);\n    }\n\n    shift() {\n        return this.head && this.removeLink(this.head);\n    }\n\n    pop() {\n        return this.tail && this.removeLink(this.tail);\n    }\n\n    toArray() {\n        return [...this];\n    }\n\n    *[Symbol.iterator]() {\n        var cur = this.head;\n        while (cur) {\n            yield cur.data;\n            cur = cur.next;\n        }\n    }\n\n    remove(testFn) {\n        var curr = this.head;\n        while (curr) {\n            var { next } = curr;\n            if (testFn(curr)) {\n                this.removeLink(curr);\n            }\n            curr = next;\n        }\n        return this;\n    }\n}\n\nexports.default = DLL;\nfunction setInitial(dll, node) {\n    dll.length = 1;\n    dll.head = dll.tail = node;\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nexports.default = function (fn) {\n    return function (...args /*, callback*/) {\n        var callback = args.pop();\n        return fn.call(this, args, callback);\n    };\n};\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = onlyOnce;\nfunction onlyOnce(fn) {\n    return function (...args) {\n        if (fn === null) throw new Error(\"Callback was already called.\");\n        var callFn = fn;\n        fn = null;\n        callFn.apply(this, args);\n    };\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = queue;\n\nvar _onlyOnce = require('./onlyOnce');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _setImmediate = require('./setImmediate');\n\nvar _setImmediate2 = _interopRequireDefault(_setImmediate);\n\nvar _DoublyLinkedList = require('./DoublyLinkedList');\n\nvar _DoublyLinkedList2 = _interopRequireDefault(_DoublyLinkedList);\n\nvar _wrapAsync = require('./wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction queue(worker, concurrency, payload) {\n    if (concurrency == null) {\n        concurrency = 1;\n    } else if (concurrency === 0) {\n        throw new RangeError('Concurrency must not be zero');\n    }\n\n    var _worker = (0, _wrapAsync2.default)(worker);\n    var numRunning = 0;\n    var workersList = [];\n    const events = {\n        error: [],\n        drain: [],\n        saturated: [],\n        unsaturated: [],\n        empty: []\n    };\n\n    function on(event, handler) {\n        events[event].push(handler);\n    }\n\n    function once(event, handler) {\n        const handleAndRemove = (...args) => {\n            off(event, handleAndRemove);\n            handler(...args);\n        };\n        events[event].push(handleAndRemove);\n    }\n\n    function off(event, handler) {\n        if (!event) return Object.keys(events).forEach(ev => events[ev] = []);\n        if (!handler) return events[event] = [];\n        events[event] = events[event].filter(ev => ev !== handler);\n    }\n\n    function trigger(event, ...args) {\n        events[event].forEach(handler => handler(...args));\n    }\n\n    var processingScheduled = false;\n    function _insert(data, insertAtFront, rejectOnError, callback) {\n        if (callback != null && typeof callback !== 'function') {\n            throw new Error('task callback must be a function');\n        }\n        q.started = true;\n\n        var res, rej;\n        function promiseCallback(err, ...args) {\n            // we don't care about the error, let the global error handler\n            // deal with it\n            if (err) return rejectOnError ? rej(err) : res();\n            if (args.length <= 1) return res(args[0]);\n            res(args);\n        }\n\n        var item = {\n            data,\n            callback: rejectOnError ? promiseCallback : callback || promiseCallback\n        };\n\n        if (insertAtFront) {\n            q._tasks.unshift(item);\n        } else {\n            q._tasks.push(item);\n        }\n\n        if (!processingScheduled) {\n            processingScheduled = true;\n            (0, _setImmediate2.default)(() => {\n                processingScheduled = false;\n                q.process();\n            });\n        }\n\n        if (rejectOnError || !callback) {\n            return new Promise((resolve, reject) => {\n                res = resolve;\n                rej = reject;\n            });\n        }\n    }\n\n    function _createCB(tasks) {\n        return function (err, ...args) {\n            numRunning -= 1;\n\n            for (var i = 0, l = tasks.length; i < l; i++) {\n                var task = tasks[i];\n\n                var index = workersList.indexOf(task);\n                if (index === 0) {\n                    workersList.shift();\n                } else if (index > 0) {\n                    workersList.splice(index, 1);\n                }\n\n                task.callback(err, ...args);\n\n                if (err != null) {\n                    trigger('error', err, task.data);\n                }\n            }\n\n            if (numRunning <= q.concurrency - q.buffer) {\n                trigger('unsaturated');\n            }\n\n            if (q.idle()) {\n                trigger('drain');\n            }\n            q.process();\n        };\n    }\n\n    function _maybeDrain(data) {\n        if (data.length === 0 && q.idle()) {\n            // call drain immediately if there are no tasks\n            (0, _setImmediate2.default)(() => trigger('drain'));\n            return true;\n        }\n        return false;\n    }\n\n    const eventMethod = name => handler => {\n        if (!handler) {\n            return new Promise((resolve, reject) => {\n                once(name, (err, data) => {\n                    if (err) return reject(err);\n                    resolve(data);\n                });\n            });\n        }\n        off(name);\n        on(name, handler);\n    };\n\n    var isProcessing = false;\n    var q = {\n        _tasks: new _DoublyLinkedList2.default(),\n        *[Symbol.iterator]() {\n            yield* q._tasks[Symbol.iterator]();\n        },\n        concurrency,\n        payload,\n        buffer: concurrency / 4,\n        started: false,\n        paused: false,\n        push(data, callback) {\n            if (Array.isArray(data)) {\n                if (_maybeDrain(data)) return;\n                return data.map(datum => _insert(datum, false, false, callback));\n            }\n            return _insert(data, false, false, callback);\n        },\n        pushAsync(data, callback) {\n            if (Array.isArray(data)) {\n                if (_maybeDrain(data)) return;\n                return data.map(datum => _insert(datum, false, true, callback));\n            }\n            return _insert(data, false, true, callback);\n        },\n        kill() {\n            off();\n            q._tasks.empty();\n        },\n        unshift(data, callback) {\n            if (Array.isArray(data)) {\n                if (_maybeDrain(data)) return;\n                return data.map(datum => _insert(datum, true, false, callback));\n            }\n            return _insert(data, true, false, callback);\n        },\n        unshiftAsync(data, callback) {\n            if (Array.isArray(data)) {\n                if (_maybeDrain(data)) return;\n                return data.map(datum => _insert(datum, true, true, callback));\n            }\n            return _insert(data, true, true, callback);\n        },\n        remove(testFn) {\n            q._tasks.remove(testFn);\n        },\n        process() {\n            // Avoid trying to start too many processing operations. This can occur\n            // when callbacks resolve synchronously (#1267).\n            if (isProcessing) {\n                return;\n            }\n            isProcessing = true;\n            while (!q.paused && numRunning < q.concurrency && q._tasks.length) {\n                var tasks = [],\n                    data = [];\n                var l = q._tasks.length;\n                if (q.payload) l = Math.min(l, q.payload);\n                for (var i = 0; i < l; i++) {\n                    var node = q._tasks.shift();\n                    tasks.push(node);\n                    workersList.push(node);\n                    data.push(node.data);\n                }\n\n                numRunning += 1;\n\n                if (q._tasks.length === 0) {\n                    trigger('empty');\n                }\n\n                if (numRunning === q.concurrency) {\n                    trigger('saturated');\n                }\n\n                var cb = (0, _onlyOnce2.default)(_createCB(tasks));\n                _worker(data, cb);\n            }\n            isProcessing = false;\n        },\n        length() {\n            return q._tasks.length;\n        },\n        running() {\n            return numRunning;\n        },\n        workersList() {\n            return workersList;\n        },\n        idle() {\n            return q._tasks.length + numRunning === 0;\n        },\n        pause() {\n            q.paused = true;\n        },\n        resume() {\n            if (q.paused === false) {\n                return;\n            }\n            q.paused = false;\n            (0, _setImmediate2.default)(q.process);\n        }\n    };\n    // define these as fixed properties, so people get useful errors when updating\n    Object.defineProperties(q, {\n        saturated: {\n            writable: false,\n            value: eventMethod('saturated')\n        },\n        unsaturated: {\n            writable: false,\n            value: eventMethod('unsaturated')\n        },\n        empty: {\n            writable: false,\n            value: eventMethod('empty')\n        },\n        drain: {\n            writable: false,\n            value: eventMethod('drain')\n        },\n        error: {\n            writable: false,\n            value: eventMethod('error')\n        }\n    });\n    return q;\n}\nmodule.exports = exports['default'];","'use strict';\n/* istanbul ignore file */\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.fallback = fallback;\nexports.wrap = wrap;\nvar hasSetImmediate = exports.hasSetImmediate = typeof setImmediate === 'function' && setImmediate;\nvar hasNextTick = exports.hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';\n\nfunction fallback(fn) {\n    setTimeout(fn, 0);\n}\n\nfunction wrap(defer) {\n    return (fn, ...args) => defer(() => fn(...args));\n}\n\nvar _defer;\n\nif (hasSetImmediate) {\n    _defer = setImmediate;\n} else if (hasNextTick) {\n    _defer = process.nextTick;\n} else {\n    _defer = fallback;\n}\n\nexports.default = wrap(_defer);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.isAsyncIterable = exports.isAsyncGenerator = exports.isAsync = undefined;\n\nvar _asyncify = require('../asyncify');\n\nvar _asyncify2 = _interopRequireDefault(_asyncify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isAsync(fn) {\n    return fn[Symbol.toStringTag] === 'AsyncFunction';\n}\n\nfunction isAsyncGenerator(fn) {\n    return fn[Symbol.toStringTag] === 'AsyncGenerator';\n}\n\nfunction isAsyncIterable(obj) {\n    return typeof obj[Symbol.asyncIterator] === 'function';\n}\n\nfunction wrapAsync(asyncFn) {\n    if (typeof asyncFn !== 'function') throw new Error('expected a function');\n    return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn;\n}\n\nexports.default = wrapAsync;\nexports.isAsync = isAsync;\nexports.isAsyncGenerator = isAsyncGenerator;\nexports.isAsyncIterable = isAsyncIterable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (worker, concurrency) {\n  var _worker = (0, _wrapAsync2.default)(worker);\n  return (0, _queue2.default)((items, cb) => {\n    _worker(items[0], cb);\n  }, concurrency, 1);\n};\n\nvar _queue = require('./internal/queue');\n\nvar _queue2 = _interopRequireDefault(_queue);\n\nvar _wrapAsync = require('./internal/wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n\n/**\n * A queue of tasks for the worker function to complete.\n * @typedef {Iterable} QueueObject\n * @memberOf module:ControlFlow\n * @property {Function} length - a function returning the number of items\n * waiting to be processed. Invoke with `queue.length()`.\n * @property {boolean} started - a boolean indicating whether or not any\n * items have been pushed and processed by the queue.\n * @property {Function} running - a function returning the number of items\n * currently being processed. Invoke with `queue.running()`.\n * @property {Function} workersList - a function returning the array of items\n * currently being processed. Invoke with `queue.workersList()`.\n * @property {Function} idle - a function returning false if there are items\n * waiting or being processed, or true if not. Invoke with `queue.idle()`.\n * @property {number} concurrency - an integer for determining how many `worker`\n * functions should be run in parallel. This property can be changed after a\n * `queue` is created to alter the concurrency on-the-fly.\n * @property {number} payload - an integer that specifies how many items are\n * passed to the worker function at a time. only applies if this is a\n * [cargo]{@link module:ControlFlow.cargo} object\n * @property {AsyncFunction} push - add a new task to the `queue`. Calls `callback`\n * once the `worker` has finished processing the task. Instead of a single task,\n * a `tasks` array can be submitted. The respective callback is used for every\n * task in the list. Invoke with `queue.push(task, [callback])`,\n * @property {AsyncFunction} unshift - add a new task to the front of the `queue`.\n * Invoke with `queue.unshift(task, [callback])`.\n * @property {AsyncFunction} pushAsync - the same as `q.push`, except this returns\n * a promise that rejects if an error occurs.\n * @property {AsyncFunction} unshirtAsync - the same as `q.unshift`, except this returns\n * a promise that rejects if an error occurs.\n * @property {Function} remove - remove items from the queue that match a test\n * function.  The test function will be passed an object with a `data` property,\n * and a `priority` property, if this is a\n * [priorityQueue]{@link module:ControlFlow.priorityQueue} object.\n * Invoked with `queue.remove(testFn)`, where `testFn` is of the form\n * `function ({data, priority}) {}` and returns a Boolean.\n * @property {Function} saturated - a function that sets a callback that is\n * called when the number of running workers hits the `concurrency` limit, and\n * further tasks will be queued.  If the callback is omitted, `q.saturated()`\n * returns a promise for the next occurrence.\n * @property {Function} unsaturated - a function that sets a callback that is\n * called when the number of running workers is less than the `concurrency` &\n * `buffer` limits, and further tasks will not be queued. If the callback is\n * omitted, `q.unsaturated()` returns a promise for the next occurrence.\n * @property {number} buffer - A minimum threshold buffer in order to say that\n * the `queue` is `unsaturated`.\n * @property {Function} empty - a function that sets a callback that is called\n * when the last item from the `queue` is given to a `worker`. If the callback\n * is omitted, `q.empty()` returns a promise for the next occurrence.\n * @property {Function} drain - a function that sets a callback that is called\n * when the last item from the `queue` has returned from the `worker`. If the\n * callback is omitted, `q.drain()` returns a promise for the next occurrence.\n * @property {Function} error - a function that sets a callback that is called\n * when a task errors. Has the signature `function(error, task)`. If the\n * callback is omitted, `error()` returns a promise that rejects on the next\n * error.\n * @property {boolean} paused - a boolean for determining whether the queue is\n * in a paused state.\n * @property {Function} pause - a function that pauses the processing of tasks\n * until `resume()` is called. Invoke with `queue.pause()`.\n * @property {Function} resume - a function that resumes the processing of\n * queued tasks when the queue is paused. Invoke with `queue.resume()`.\n * @property {Function} kill - a function that removes the `drain` callback and\n * empties remaining tasks from the queue forcing it to go idle. No more tasks\n * should be pushed to the queue after calling this function. Invoke with `queue.kill()`.\n *\n * @example\n * const q = aync.queue(worker, 2)\n * q.push(item1)\n * q.push(item2)\n * q.push(item3)\n * // queues are iterable, spread into an array to inspect\n * const items = [...q] // [item1, item2, item3]\n * // or use for of\n * for (let item of q) {\n *     console.log(item)\n * }\n *\n * q.drain(() => {\n *     console.log('all done')\n * })\n * // or\n * await q.drain()\n */\n\n/**\n * Creates a `queue` object with the specified `concurrency`. Tasks added to the\n * `queue` are processed in parallel (up to the `concurrency` limit). If all\n * `worker`s are in progress, the task is queued until one becomes available.\n * Once a `worker` completes a `task`, that `task`'s callback is called.\n *\n * @name queue\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {AsyncFunction} worker - An async function for processing a queued task.\n * If you want to handle errors from an individual task, pass a callback to\n * `q.push()`. Invoked with (task, callback).\n * @param {number} [concurrency=1] - An `integer` for determining how many\n * `worker` functions should be run in parallel.  If omitted, the concurrency\n * defaults to `1`.  If the concurrency is `0`, an error is thrown.\n * @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can be\n * attached as certain properties to listen for specific events during the\n * lifecycle of the queue.\n * @example\n *\n * // create a queue object with concurrency 2\n * var q = async.queue(function(task, callback) {\n *     console.log('hello ' + task.name);\n *     callback();\n * }, 2);\n *\n * // assign a callback\n * q.drain(function() {\n *     console.log('all items have been processed');\n * });\n * // or await the end\n * await q.drain()\n *\n * // assign an error callback\n * q.error(function(err, task) {\n *     console.error('task experienced an error');\n * });\n *\n * // add some items to the queue\n * q.push({name: 'foo'}, function(err) {\n *     console.log('finished processing foo');\n * });\n * // callback is optional\n * q.push({name: 'bar'});\n *\n * // add some items to the queue (batch-wise)\n * q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function(err) {\n *     console.log('finished processing item');\n * });\n *\n * // add some items to the front of the queue\n * q.unshift({name: 'bar'}, function (err) {\n *     console.log('finished processing bar');\n * });\n */","const template = document.createElement('template');\r\ntemplate.innerHTML = `\r\n  <style>\r\n    .list {\r\n      font-family:sans-serif;\r\n      margin:0;\r\n      padding:20px 0 0;\r\n    }\r\n    \r\n    table {\r\n    width: 100%;\r\n    }\r\n    \r\n    tr:nth-child(even) {background: #EEE}\r\n    tr:nth-child(odd) {}\r\n    \r\n    img {\r\n      max-width: 100%;\r\n    }\r\n    input {\r\n      border:solid 1px #ccc;\r\n      border-radius: 5px;\r\n      padding:7px 14px;\r\n      margin-bottom:10px\r\n    }\r\n    input:focus {\r\n      outline:none;\r\n      border-color:#aaa;\r\n    }\r\n    .sort {\r\n      padding:8px 30px;\r\n      border-radius: 6px;\r\n      border:none;\r\n      display:inline-block;\r\n      color:#fff;\r\n      text-decoration: none;\r\n      background-color: #28a8e0;\r\n    }\r\n    .sort:hover {\r\n      text-decoration: none;\r\n      background-color:#1b8aba;\r\n    }\r\n    .sort:focus {\r\n      outline:none;\r\n    }\r\n    .sort:after {\r\n      width: 0;\r\n      height: 0;\r\n      border-left: 5px solid transparent;\r\n      border-right: 5px solid transparent;\r\n      border-bottom: 5px solid transparent;\r\n      content:\"\";\r\n      position: relative;\r\n      top:-10px;\r\n      right:-5px;\r\n    }\r\n    .sort.asc:after {\r\n      width: 0;\r\n      height: 0;\r\n      border-left: 5px solid transparent;\r\n      border-right: 5px solid transparent;\r\n      border-top: 5px solid #fff;\r\n      content:\"\";\r\n      position: relative;\r\n      top:13px;\r\n      right:-5px;\r\n    }\r\n    .sort.desc:after {\r\n      width: 0;\r\n      height: 0;\r\n      border-left: 5px solid transparent;\r\n      border-right: 5px solid transparent;\r\n      border-bottom: 5px solid #fff;\r\n      content:\"\";\r\n      position: relative;\r\n      top:-10px;\r\n      right:-5px;\r\n    }\r\n  </style>\r\n \r\n    <div id=\"albumlist\">\r\n    \r\n      <input class=\"search\" />\r\n      <span class=\"sort\" data-sort=\"title\">Sort by title</span>\r\n      <span class=\"sort\" data-sort=\"mediaItemsCount\">Sort by count</span>\r\n    \r\n      <table class=\"list\">\r\n      </table>\r\n      \r\n    </div>\r\n\r\n    <div id=\"loading\" class=\"well\">\r\n        <p id=\"loading_label\"></p>\r\n    </div>\r\n    <div id=\"empty\" class=\"well\" style=\"display:none\"></div>\r\n  \r\n`;\r\n\r\n\r\nimport List from 'list.js';\r\n\r\nclass Albumselector extends HTMLElement {\r\n    constructor() {\r\n        super();\r\n        this._shadowRoot = this.attachShadow({mode: 'open'});\r\n        this._shadowRoot.appendChild(template.content.cloneNode(true));\r\n        this.$loadingLabel = this._shadowRoot.querySelector('#loading_label');\r\n        this.$loading = this._shadowRoot.querySelector('#loading');\r\n        this.$empty = this._shadowRoot.querySelector('#empty');\r\n        this.$albumlist = this._shadowRoot.querySelector('#albumlist');\r\n\r\n        this['accountid'] = 1;\r\n\r\n        //the url for the iframe can't be changed dynamically, so we need to grab this from the parent.\r\n        let element = parent.document.getElementById('foldertype_4_account');\r\n        if (element) {\r\n            this['accountid'] = element.value;\r\n        }\r\n\r\n    }\r\n\r\n    getData() {\r\n\r\n        var xhr = new XMLHttpRequest();\r\n\r\n        xhr.onreadystatechange = () => {\r\n            if (xhr.readyState === 4) {\r\n                let data = JSON.parse(xhr.response);\r\n                this.createTable(data.albums);\r\n            }\r\n        };\r\n\r\n        xhr.open('GET', this.url +'&id=' + this.accountid, true);\r\n        xhr.send('');\r\n    }\r\n\r\n    createTable(albums) {\r\n\r\n\r\n        var options = {\r\n            page: 5000,\r\n            valueNames: [\r\n                    {name: 'previewThumbnail', attr: 'src'},\r\n                    {name: 'encodedTitle', attr: 'data-title'},\r\n                    {name: 'albumid', attr: 'data-albumid'},\r\n                    'title',\r\n                    'mediaItemsCount',\r\n                    {name: 'link', attr: 'href'}\r\n                ],\r\n            item: '<tr>' +\r\n                '<td><button class=\"encodedTitle albumid\" data-title=\"\" data-albumid=\"\">Select</button></td>' +\r\n                '<td><img class=\"previewThumbnail\" src=\"\"></td>' +\r\n                '<td><span class=\"title\"></span></td>'+\r\n                '<td><span class=\"mediaItemsCount\"></span></td>'+\r\n                '<td><a class=\"link\" href=\"\" target=\"_blank\">Link</a></td>'+\r\n                '</tr>'\r\n        };\r\n\r\n        let values = [];\r\n\r\n        if (!!albums) {\r\n            for (let i = 0; i < albums.length; i++) {\r\n                let album = albums[i];\r\n\r\n                values.push(\r\n                    {\r\n                        previewThumbnail: album.coverPhotoBaseUrl + '=w200-h200',\r\n                        encodedTitle: encodeURI(album.title),\r\n                        title: album.title,\r\n                        mediaItemsCount: album.mediaItemsCount,\r\n                        albumid: album.id,\r\n                        link: album.productUrl\r\n                    }\r\n                );\r\n            }\r\n        }\r\n\r\n        let myList = new List(this.$albumlist, options);\r\n\r\n        myList.add(values, () => {\r\n            let buttons = this._shadowRoot.querySelectorAll('button.albumid');\r\n            for(let i=0; i<buttons.length;i++) {\r\n                let button = buttons[i];\r\n                button.addEventListener('click', (e)=> {\r\n                    e.preventDefault();\r\n                    e.stopPropagation();\r\n\r\n                    let data = {\r\n                        albumid: button.getAttribute(\"data-albumid\"),\r\n                        title: decodeURI(button.getAttribute(\"data-title\"))\r\n                    };\r\n\r\n                    parent.postMessage('eventgalleryGooglePhotosAlbum_' + JSON.stringify(data), '*');\r\n                })\r\n            }\r\n        });\r\n\r\n        this.$loading.style.display = 'none';\r\n\r\n        if (myList.items.length === 0 ) {\r\n            this.$empty.style.display = 'block';\r\n        }\r\n    }\r\n\r\n    static get observedAttributes() {\r\n        return ['label', 'url', 'label_empty'];\r\n    }\r\n\r\n    attributeChangedCallback(name, oldVal, newVal) {\r\n        this[name] = newVal;\r\n    }\r\n\r\n    connectedCallback() {\r\n        this.$loadingLabel.innerHTML = this.label;\r\n        this.$empty.innerHTML = this.label_empty;\r\n        this.getData();\r\n    }\r\n\r\n}\r\n\r\n\r\nwindow.customElements.define('album-selector', Albumselector);","(function(Eventgallery){\r\n\r\n    document.addEventListener('DOMContentLoaded', () =>{\r\n\r\n        let googlePhotosProcessor = new Eventgallery.GooglePhotosProcessor();\r\n        googlePhotosProcessor.processImages();\r\n\r\n    });\r\n\r\n})(Eventgallery);\r\n","(function(){\r\n    \"use strict\";\r\n\r\n    /**\r\n     * process selector input\r\n     */\r\n    window.addEventListener('message', function(e) {\r\n        if (!e.data) return;\r\n\r\n        let dataStr = e.data;\r\n\r\n        if (typeof dataStr !== 'string') {\r\n            return;\r\n        }\r\n        if (dataStr.startsWith('eventgalleryGooglePhotosAlbum_')) {\r\n            var data = JSON.parse(dataStr.replace('eventgalleryGooglePhotosAlbum_',''));\r\n\r\n            let albumField = document.getElementById('foldertype-4-album')\r\n            albumField.value = data.albumid;\r\n\r\n            let titleField = document.getElementById('foldertype-4-title');\r\n            titleField.value = data.title;\r\n\r\n            albumField.onchange();\r\n\r\n            document.querySelector('#google-photos-album-selector-modal .modal-header button.close').click();\r\n        }\r\n    });\r\n\r\n    document.addEventListener('DOMContentLoaded', () =>{\r\n\r\n        let button = document.querySelector('.google-photos-api-oauth-trigger-button');\r\n        if (button) {\r\n            button.addEventListener('click', function (e) {\r\n                e.preventDefault();\r\n                var id = e.target.getAttribute('data-id');\r\n\r\n                var oauthWindow = window.open(\"index.php?option=com_eventgallery&view=googlephotos&layout=getauthtoken&tmpl=component&id=\" + id, \"_blank\", \"width=700,height=400\");\r\n                if (!oauthWindow || oauthWindow.closed || typeof oauthWindow.closed === 'undefined') {\r\n                    alert('Failed');\r\n                }\r\n            });\r\n        }\r\n\r\n    });\r\n\r\n})();\r\n","import {serializeForm} from \"../../common/js/Helpers\";\r\n\r\n(function(){\r\n    \"use strict\";\r\n\r\n    let fireDomLoadEvent = function() {\r\n        window.document.dispatchEvent(new Event(\"eventgallery.localizableContentLoaded\", {\r\n            bubbles: true,\r\n            cancelable: true\r\n        }));\r\n    };\r\n\r\n    document.addEventListener('DOMContentLoaded', () =>{\r\n        assignClickEvents();\r\n    });\r\n\r\n    let assignClickEvents = function() {\r\n        assignClickEvent('.openInlineForm', openInlineForm);\r\n        assignClickEvent('.saveInlineForm', saveInlineForm);\r\n        assignClickEvent('.closeInlineForm', closeInlineForm);\r\n    };\r\n\r\n    let assignClickEvent = function(querySelector, callback) {\r\n        let elements = document.querySelectorAll(querySelector);\r\n        for(let i=0; i<elements.length; i++) {\r\n            let element = elements[i];\r\n            element.removeEventListener('click', callback);\r\n            element.addEventListener('click', callback);\r\n        }\r\n    };\r\n\r\n    let openInlineForm = function(e) {\r\n        e.preventDefault();\r\n        let currentContainer = e.target.closest('div[data-id]');\r\n\r\n        currentContainer.innerHTML='Loading...';\r\n\r\n        let xhttp = new XMLHttpRequest();\r\n        xhttp.onreadystatechange = function() {\r\n            if (this.readyState === 4 && this.status === 200) {\r\n                currentContainer.innerHTML = this.responseText;\r\n                fireDomLoadEvent();\r\n                assignClickEvents();\r\n            }\r\n        };\r\n        xhttp.open(\"GET\", currentContainer.getAttribute('data-editlink'), true);\r\n        xhttp.send();\r\n    };\r\n\r\n    let saveInlineForm = function(e) {\r\n        e.preventDefault();\r\n\r\n        let id = e.target.getAttribute('data-id');\r\n        let form = e.target.closest('div[data-action]');\r\n        let currentContainer = document.querySelector('div[data-id=\"' + id + '\"]');\r\n        let url = form.getAttribute('data-action');\r\n        form.querySelector('input[name=\"task\"]').value = e.target.getAttribute('data-task');\r\n\r\n        currentContainer.innerHTML = 'Loading.. ';\r\n\r\n        let xhttp = new XMLHttpRequest();\r\n        xhttp.onreadystatechange = function() {\r\n            if (this.readyState === 4 && this.status === 200) {\r\n                currentContainer.innerHTML = this.responseText;\r\n                fireDomLoadEvent();\r\n                assignClickEvents();\r\n            }\r\n        };\r\n\r\n        xhttp.open(\"POST\", url, true);\r\n        xhttp.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n        xhttp.send(serializeForm(form));\r\n    };\r\n\r\n    let closeInlineForm = function(e) {\r\n        e.preventDefault();\r\n        let id = e.target.getAttribute('data-id');\r\n        let currentContainer = document.querySelector('div[data-id=\"' + id + '\"]');\r\n        let url = e.target.getAttribute('data-href');\r\n\r\n        currentContainer.innerHTML = 'Loading.. ';\r\n\r\n        let xhttp = new XMLHttpRequest();\r\n        xhttp.onreadystatechange = function() {\r\n            if (this.readyState === 4 && this.status === 200) {\r\n                currentContainer.innerHTML = this.responseText;\r\n                assignClickEvents();\r\n            }\r\n        };\r\n\r\n        xhttp.open(\"GET\", url, true);\r\n        xhttp.send();\r\n    };\r\n\r\n})();","(function(){\r\n    \"use strict\";\r\n\r\n    document.addEventListener(\"DOMContentLoaded\", (event) => {\r\n        window.document.dispatchEvent(new Event(\"eventgallery.localizableContentLoaded\", {\r\n            bubbles: true,\r\n            cancelable: true\r\n        }));\r\n    }, {once: true});\r\n\r\n    /**\r\n     * the event eventgallery.localizableContentLoaded is fired and the editor will start\r\n     * initializing.\r\n     */\r\n    document.addEventListener(\"eventgallery.localizableContentLoaded\", (event) => {\r\n\r\n        let elements = document.querySelectorAll('input[data-localizabletext]');\r\n\r\n        for (let i=0; i<elements.length; i++) {\r\n            let element = elements[i];\r\n\r\n            if (element.getAttribute('data-localizedtext-enabled')) {\r\n                continue;\r\n            }\r\n            element.setAttribute('data-localizedtext-enabled', true);\r\n\r\n            let container = element.closest(\".localizabletext\");\r\n            let inputFields = container.getElementsByClassName('lc_' + element.id);\r\n\r\n            for (let i=0; i<inputFields.length; i++) {\r\n                inputFields[i].addEventListener('blur', () => collectData(element));\r\n            }\r\n        }\r\n    });\r\n\r\n\r\n    let collectData = function (element) {\r\n        let data = {};\r\n        let container = element.closest(\".localizabletext\");\r\n        let inputFields = container.getElementsByClassName('lc_' + element.id);\r\n\r\n        for (let i=0; i<inputFields.length; i++) {\r\n               let field = inputFields[i];\r\n            let value = field.value;\r\n            let languageTag = field.getAttribute(\"data-tag\");\r\n\r\n            if (value.trim().length > 0) {\r\n                data[languageTag] = value;\r\n            }\r\n        }\r\n\r\n        let jsonData = JSON.stringify(data);\r\n        if (jsonData.length < 3) {\r\n            jsonData = \"\";\r\n        }\r\n\r\n        element.value = jsonData;\r\n    }\r\n\r\n})();","import Vue from 'vue';\r\nimport Cacheclear from './Cacheclear.vue';\r\nimport {mapLocalizationData} from '../../../common/vue/helper/LocalizationMapper'\r\n\r\ndocument.addEventListener('DOMContentLoaded', () =>{\r\n    let rootId = 'cacheclear';\r\n\r\n    if (document.getElementById(rootId)) {\r\n\r\n        new Vue({\r\n            el: '#' + rootId,\r\n            mounted: function() {\r\n                this.id = this.$el.getAttribute('data-id');\r\n            },\r\n            render: function (createElement) {\r\n                return createElement(Cacheclear, {\r\n                    props: {\r\n                        cacheClearUrl: this.$el.getAttribute('data-cache-clear-url'),\r\n                        elementsJson: decodeURI(this.$el.getAttribute('data-elements-json')),\r\n                        groupsJson: decodeURI(this.$el.getAttribute('data-groups-json')),\r\n                        csrfToken: this.$el.getAttribute('data-csrf-token'),\r\n                        i18n: mapLocalizationData(this.$el),\r\n                    },\r\n                })\r\n            }\r\n        });\r\n    }\r\n\r\n});\r\n","import Vue from 'vue';\r\nimport Filesync from './Filesync.vue';\r\nimport {mapLocalizationData} from '../../../common/vue/helper/LocalizationMapper'\r\n\r\ndocument.addEventListener('DOMContentLoaded', () =>{\r\n    let rootId = 'filesync';\r\n\r\n    if (document.getElementById(rootId)) {\r\n        new Vue({\r\n            el: '#' + rootId,\r\n            mounted: function() {\r\n                this.id = this.$el.getAttribute('data-id');\r\n            },\r\n            render: function (createElement) {\r\n                return createElement(Filesync, {\r\n                    props: {\r\n                        loadFoldersUrl: this.$el.getAttribute('data-load-folders-url'),\r\n                        fileSyncUrl: this.$el.getAttribute('data-file-sync-url'),\r\n                        folderSyncUrl: this.$el.getAttribute('data-folder-sync-url'),\r\n                        csrfToken: this.$el.getAttribute('data-csrf-token'),\r\n                        fileBatchSize: parseInt(this.$el.getAttribute('data-file-batch-size')),\r\n                        maxParallelRequests: 4,\r\n                        i18n: mapLocalizationData(this.$el),\r\n                    },\r\n                })\r\n            }\r\n        });\r\n    }\r\n\r\n});\r\n","import Vue from 'vue';\r\nimport {mapLocalizationData} from '../../../common/vue/helper/LocalizationMapper'\r\nimport ImageContentPluginForm from \"./ImageContentPluginForm.vue\";\r\n\r\ndocument.addEventListener('DOMContentLoaded', () =>{\r\n    let rootId = 'imagecontentpluginform';\r\n\r\n    if (document.getElementById(rootId)) {\r\n        new Vue({\r\n            el: '#' + rootId,\r\n            mounted: function() {\r\n                this.id = this.$el.getAttribute('data-id');\r\n            },\r\n            render: function (createElement) {\r\n                return createElement(ImageContentPluginForm, {\r\n                    props: {\r\n                        editorName: this.$el.getAttribute('data-editor-name'),\r\n                        loadFoldersUrl: this.$el.getAttribute('data-load-folders-url'),\r\n                        loadFilesUrl: this.$el.getAttribute('data-load-files-url'),\r\n                        formId: this.$el.getAttribute('data-form-id'),\r\n                        formDefinitionJson: this.$el.getAttribute('data-form-definition-json'),\r\n                        csrfToken: this.$el.getAttribute('data-csrf-token'),\r\n                        i18n: mapLocalizationData(this.$el),\r\n                    },\r\n                })\r\n            }\r\n        });\r\n    }\r\n\r\n});\r\n","import Vue from 'vue';\r\nimport {mapLocalizationData} from '../../../common/vue/helper/LocalizationMapper'\r\nimport ImageContentPluginForm from \"./Scalepriceeditor.vue\";\r\n\r\ndocument.addEventListener('DOMContentLoaded', () =>{\r\n    let rootSelector = '.scale-price-editor';\r\n\r\n    let nodes = document.querySelectorAll(rootSelector);\r\n\r\n    for (let i=0; i<nodes.length;i++) {\r\n        let node = nodes[i];\r\n        new Vue({\r\n            el: node,\r\n            mounted: function() {\r\n                this.id = this.$el.getAttribute('data-id');\r\n            },\r\n            render: function (createElement) {\r\n                return createElement(ImageContentPluginForm, {\r\n                    props: {\r\n                        inputName: this.$el.getAttribute('name'),\r\n                        inputId: this.$el.getAttribute('id'),\r\n                        inputValue: this.$el.getAttribute('value'),\r\n                        i18n: mapLocalizationData(this.$el),\r\n                    },\r\n                })\r\n            }\r\n        });\r\n    }\r\n\r\n\r\n\r\n\r\n});\r\n","import Vue from 'vue';\r\nimport Thumbnailcreator from \"./Thumbnailcreator.vue\";\r\nimport {mapLocalizationData} from \"../../../common/vue/helper/LocalizationMapper\";\r\n\r\ndocument.addEventListener('DOMContentLoaded', () =>{\r\n    let rootId = 'thumbnailcreator';\r\n    if (document.getElementById(rootId)) {\r\n        new Vue({\r\n            el: '#' + rootId,\r\n            mounted: function() {\r\n                this.id = this.$el.getAttribute('data-id');\r\n            },\r\n            render: function (createElement) {\r\n                return createElement(Thumbnailcreator, {\r\n                    props: {\r\n                        loadFoldersUrl: this.$el.getAttribute('data-load-folders-url'),\r\n                        fileSyncUrl: this.$el.getAttribute('data-file-sync-url'),\r\n                        folderSyncUrl: this.$el.getAttribute('data-folder-sync-url'),\r\n                        csrfToken: this.$el.getAttribute('data-csrf-token'),\r\n                        fileBatchSize: parseInt(this.$el.getAttribute('data-file-batch-size')),\r\n                        maxParallelRequests: 4,\r\n                        i18n: mapLocalizationData(this.$el)\r\n                    }\r\n                })\r\n            }\r\n        });\r\n    }\r\n\r\n});\r\n","import Vue from 'vue';\r\nimport Uploader from './Uploader.vue';\r\nrequire('./_Uploader.less');\r\n\r\ndocument.addEventListener('DOMContentLoaded', () =>{\r\n    let rootId = 'uploader';\r\n    if (document.getElementById(rootId)) {\r\n        new Vue({\r\n            el: '#' + rootId,\r\n            mounted: function() {\r\n                this.id = this.$el.getAttribute('data-id');\r\n            },\r\n            render: function (createElement) {\r\n                return createElement(Uploader, {\r\n                    props: {\r\n                        maxFileSize: this.$el.getAttribute('data-max-file-size'),\r\n                        uploadUrl: this.$el.getAttribute('data-upload-url'),\r\n                        i18n: {\r\n                            COM_EVENTGALLERY_EVENT_UPLOAD_FILES_TO_UPLOAD: this.$el.getAttribute('data-i18n-COM_EVENTGALLERY_EVENT_UPLOAD_FILES_TO_UPLOAD'),\r\n                            COM_EVENTGALLERY_EVENT_UPLOAD_PENDING: this.$el.getAttribute('data-i18n-COM_EVENTGALLERY_EVENT_UPLOAD_PENDING'),\r\n                            COM_EVENTGALLERY_EVENT_UPLOAD_FINISHED: this.$el.getAttribute('data-i18n-COM_EVENTGALLERY_EVENT_UPLOAD_FINISHED')\r\n                        }\r\n                    }\r\n                })\r\n            }\r\n        });\r\n    }\r\n\r\n});","export function createBatches(items, max_items_per_batch) {\r\n\r\n    let batches = [],\r\n        currentBatch = [],\r\n        i;\r\n\r\n    for(i = 0; i < items.length; i++) {\r\n        if (currentBatch.length === max_items_per_batch) {\r\n            batches.push(currentBatch);\r\n            currentBatch = [];\r\n        }\r\n\r\n        currentBatch.push(items[i]);\r\n    }\r\n\r\n    batches.push(currentBatch);\r\n\r\n    return batches;\r\n}","import { addUrlHashParameter,\r\n    calcBorderWidth,\r\n    mergeObjects,\r\n    addUrlParameter,\r\n    getUrlHashParameterValue,\r\n    removeUrlHashParameter,\r\n    removeUrlParameter,\r\n    setCSSStyle\r\n} from './Helpers';\r\n\r\nwindow.Eventgallery = window.Eventgallery || {};\r\nif (typeof eventgallery !== 'undefined') {\r\n    Eventgallery.jQuery = eventgallery.jQuery;\r\n}\r\n\r\nEventgallery.Tools = {};\r\nEventgallery.Tools.mergeObjects = mergeObjects;\r\nEventgallery.Tools.calcBorderWidth = calcBorderWidth;\r\nEventgallery.Tools.addUrlHashParameter = addUrlHashParameter;\r\nEventgallery.Tools.getUrlHashParameterValue = getUrlHashParameterValue;\r\nEventgallery.Tools.removeUrlHashParameter = removeUrlHashParameter;\r\nEventgallery.Tools.addUrlParameter = addUrlParameter;\r\nEventgallery.Tools.removeUrlParameter = removeUrlParameter;\r\nEventgallery.Tools.setCSSStyle = setCSSStyle;\r\n","function removeElement(array, elm) {\r\n    const index = array.indexOf(elm);\r\n    if (index > -1) {\r\n        array.splice(index, 1);\r\n    }\r\n}\r\n\r\nfunction mergeObjects(defaults, options) {\r\n    if (options === null || defaults === null) {\r\n        return defaults;\r\n    }\r\n\r\n    for (let key in options) {\r\n        defaults[key] = options[key];\r\n    }\r\n\r\n    return defaults;\r\n}\r\n\r\n/**\r\n * calculates the border of the given elements with the given properties\r\n */\r\nfunction calcBorderWidth(elements, properties) {\r\n    let sum = 0;\r\n\r\n    for (let i=0; i<elements.length; i++) {\r\n        for (let j=0; j<properties.length; j++) {\r\n            let value = parseFloat( elements[i].css(properties[j]) );\r\n            if (!isNaN(value)) {\r\n                sum += value;\r\n            }\r\n        }\r\n    }\r\n\r\n    return sum;\r\n}\r\n\r\nfunction addUrlHashParameter(initialUrl, key, value) {\r\n    let url = removeUrlHashParameter(initialUrl, key),\r\n        fragments = url.split('#'),\r\n        urlpart = fragments[0],\r\n        hashparts = fragments.length>1? fragments[1].split(\"&\") : [],\r\n        result;\r\n\r\n    hashparts.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(value));\r\n\r\n    if (hashparts.length>0) {\r\n        result = urlpart + '#' + hashparts.join('&');\r\n    } else {\r\n        result = urlpart;\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nfunction getUrlHashParameterValue(url, key) {\r\n    let fragments=url.split('#'),\r\n        hashparts = fragments.length>1? fragments[1].split(\"&\") : [],\r\n        result;\r\n\r\n    if (hashparts.length>0)\r\n    {\r\n        let prefix= encodeURIComponent(key)+'=';\r\n\r\n        for (let i=0; i<hashparts.length; i++) {\r\n            if (hashparts[i].indexOf(prefix, 0) === 0) {\r\n                result = hashparts[i].replace(prefix, '');\r\n            }\r\n        }\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nfunction removeUrlHashParameter(url, key) {\r\n    let fragments=url.split('#'),\r\n        urlpart= fragments[0],\r\n        hashparts = fragments.length>1? fragments[1].split(\"&\") : [],\r\n        result;\r\n\r\n    if (hashparts.length>0)\r\n    {\r\n        let prefix= encodeURIComponent(key)+'=',\r\n            newHashParts = [];\r\n\r\n        for (let i=0; i<hashparts.length; i++) {\r\n            if (hashparts[i].indexOf(prefix, 0) === 0) {\r\n\r\n            } else {\r\n                newHashParts.push(hashparts[i]);\r\n            }\r\n        }\r\n        hashparts = newHashParts;\r\n    }\r\n\r\n    if (hashparts.length>0) {\r\n        result = urlpart + '#' + hashparts.join('&');\r\n    } else {\r\n        result = urlpart;\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nfunction addUrlParameter(initialUrl, key, value) {\r\n    let url = removeUrlParameter(initialUrl, key),\r\n        fragments = url.split('#'),\r\n        urlparts= fragments[0].split('?'),\r\n        result;\r\n\r\n    if (urlparts.length === 1) {\r\n        result = urlparts[0] + '?' + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\r\n    } else {\r\n        result = urlparts.join('?') + '&' + encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\r\n    }\r\n\r\n    if (fragments.length>1) {\r\n        return result + '#' + fragments[1];\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nfunction removeUrlParameter(url, key) {\r\n    let fragments=url.split('#'),\r\n        urlparts= fragments[0].split('?'),\r\n        result;\r\n\r\n    if (urlparts.length>1)\r\n    {\r\n        let prefix= encodeURIComponent(key)+'=';\r\n        let pars= urlparts[1].split('&');\r\n\r\n        for (let i=0; i<pars.length; i++) {\r\n            if (pars[i].indexOf(prefix, 0) === 0) {\r\n                pars.splice(i, 1);\r\n            }\r\n        }\r\n        if (pars.length > 0) {\r\n            result = urlparts[0] + '?' + pars.join('&');\r\n        }\r\n        else {\r\n            result = urlparts[0];\r\n        }\r\n    }\r\n    else {\r\n        result =  urlparts[0];\r\n    }\r\n\r\n    if (fragments.length>1) {\r\n        return result + '#' + fragments[1];\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nfunction setCSSStyle (nodes, style, value) {\r\n    for (let i=0; i<nodes.length; i++) {\r\n        nodes[i].style[style] = value;\r\n    }\r\n}\r\n\r\n/**\r\n *\r\n * @param node HTMLElement\r\n */\r\nfunction getParents(node) {\r\n    let parents = [];\r\n\r\n    if (node === null) {\r\n        return parents;\r\n    }\r\n\r\n    while(node.parentElement != null) {\r\n        let parent = node.parentElement;\r\n        parents.push(parent);\r\n        node = parent;\r\n    }\r\n    return parents;\r\n}\r\n\r\n/*!\r\n * Serialize all form data into a query string\r\n * (c) 2018 Chris Ferdinandi, MIT License, https://gomakethings.com\r\n * Modified to use any HTML element instead of a form element.\r\n * @param  {Node}   form The form container to serialize\r\n * @return {String}      The serialized form data\r\n */\r\nvar serializeForm = function (form) {\r\n\r\n    // Setup our serialized data\r\n    var serialized = [];\r\n\r\n    let inputElements = form.querySelectorAll('input,select,textarea');\r\n    // Loop through each field in the form\r\n    for (var i = 0; i < inputElements.length; i++) {\r\n\r\n        var field = inputElements[i];\r\n\r\n        // Don't serialize fields without a name, submits, buttons, file and reset inputs, and disabled fields\r\n        if (!field.name || field.disabled || field.type === 'file' || field.type === 'reset' || field.type === 'submit' || field.type === 'button') continue;\r\n\r\n        // If a multi-select, get all selections\r\n        if (field.type === 'select-multiple') {\r\n            for (var n = 0; n < field.options.length; n++) {\r\n                if (!field.options[n].selected) continue;\r\n                serialized.push(encodeURIComponent(field.name) + \"=\" + encodeURIComponent(field.options[n].value));\r\n            }\r\n        }\r\n\r\n        // Convert field data to a query string\r\n        else if ((field.type !== 'checkbox' && field.type !== 'radio') || field.checked) {\r\n            serialized.push(encodeURIComponent(field.name) + \"=\" + encodeURIComponent(field.value));\r\n        }\r\n    }\r\n\r\n    return serialized.join('&');\r\n\r\n};\r\n\r\nexport { removeElement, addUrlHashParameter, calcBorderWidth, mergeObjects, addUrlParameter, getUrlHashParameterValue, removeUrlHashParameter, removeUrlParameter, setCSSStyle, getParents, serializeForm };","/**\r\n * Prefix for the data attribute if we want to identify it as a localization key/value pair\r\n * @type {string}\r\n */\r\nconst dataI18n = 'data-i18n-';\r\n\r\n/**\r\n * Creates a class which can translate things.\r\n *\r\n * @param hmltElement\r\n * @returns {{t: (function(*): *)}}\r\n */\r\nexport let mapLocalizationData = function(hmltElement) {\r\n\r\n    let _elements = [];\r\n\r\n    for (var i = 0; i < hmltElement.attributes.length; i++) {\r\n        var attrib = hmltElement.attributes[i];\r\n        if (attrib.name.indexOf(dataI18n) === 0) {\r\n            _elements[attrib.name.replace(dataI18n,'').toUpperCase()] = attrib.value;\r\n        }\r\n    }\r\n\r\n    return {\r\n        /**\r\n         * Performs a translation using the given localization key\r\n         *\r\n         * @param localizationKey\r\n         * @returns {*}\r\n         */\r\n        t: (localizationKey) => {\r\n            let lookup = localizationKey.toUpperCase();\r\n            return _elements[lookup] ? _elements[lookup] : localizationKey;\r\n        }\r\n    };\r\n};\r\n\r\n","import URLHelper from \"./URLHelper\";\r\n\r\n(function(Eventgallery){\r\n\r\n    const LOADING_MATCHER = 'gp.svg';\r\n    const MARKER_IMAGE_IS_IN_PROGRESS_ATTRIBUTE = 'data-eg-gp-processing';\r\n\r\nEventgallery.GooglePhotosProcessor = class {\r\n\r\n\r\n\r\n    constructor() {\r\n\r\n        this.albumUrl = \"\";\r\n        this.albumsUrl = \"\";\r\n\r\n        // noinspection JSUnresolvedVariable\r\n        if (window.EventGalleryGooglePhotosConfiguration) {\r\n            this.albumUrl = window.EventGalleryGooglePhotosConfiguration.albumUrl;\r\n            this.albumsUrl = window.EventGalleryGooglePhotosConfiguration.albumsUrl;\r\n        }\r\n\r\n        this.imageAddedCallback = (e) => this.processImages(e);\r\n        document.addEventListener(\"eventgallery-images-added\", this.imageAddedCallback, true);\r\n    };\r\n\r\n    destroy() {\r\n        document.removeEventListener(\"eventgallery-images-added\", this.imageAddedCallback, true);\r\n    }\r\n\r\n    // noinspection JSUnusedGlobalSymbols\r\n    processImages(e) {\r\n        let doReloadLightbox = true;\r\n        if (e?.detail?.isOverlay) {\r\n            doReloadLightbox = false;\r\n        }\r\n        let albums = this._groupByAlbum(this._collectHTMLElements());\r\n        this._markImagesAsInProgress(albums);\r\n        this._getMainImageDataFromServer(albums, doReloadLightbox);\r\n    }\r\n\r\n    // noinspection JSMethodCanBeStatic\r\n    /**\r\n     * Grabs IMG tag items from the DOM for Google Photos image placeholder.\r\n     *\r\n     * @returns <Element>[]\r\n     * @private\r\n     */\r\n     _collectHTMLElements() {\r\n        let htmlCollection = document.getElementsByTagName('IMG');\r\n\r\n        let foundImageHTMLElements = /** @type {HTMLElement} */[...htmlCollection];\r\n\r\n        let result = foundImageHTMLElements.filter(img => {\r\n            let backgroundImage = img.style.backgroundImage;\r\n            let dataSrc = img.getAttribute('data-src');\r\n            let src = img.src;\r\n\r\n            if (img.getAttribute(MARKER_IMAGE_IS_IN_PROGRESS_ATTRIBUTE) === '1') {\r\n                return false;\r\n            }\r\n\r\n            return (backgroundImage && backgroundImage.indexOf(LOADING_MATCHER)>0)\r\n                || (dataSrc && dataSrc.indexOf(LOADING_MATCHER)>0)\r\n                || (src && src.indexOf(LOADING_MATCHER)>0);\r\n        });\r\n\r\n        htmlCollection = document.getElementsByTagName('A');\r\n        let foundLinkHTMLElements = /** @type {HTMLElement} */[...htmlCollection];\r\n        result = result.concat(foundLinkHTMLElements.filter(a => {\r\n            let dataSrc = a.getAttribute('data-src');\r\n            let rel = a.getAttribute('rel');\r\n            let href = a.getAttribute('href');\r\n\r\n            if (a.getAttribute(MARKER_IMAGE_IS_IN_PROGRESS_ATTRIBUTE) === '1') {\r\n                return false;\r\n            }\r\n            return (href && href.indexOf(LOADING_MATCHER)>0)\r\n                || (dataSrc && dataSrc.indexOf(LOADING_MATCHER)>0)\r\n                || (rel && rel.indexOf(LOADING_MATCHER)>0);\r\n        }));\r\n\r\n        return result;\r\n\r\n    }\r\n\r\n    /**\r\n     *\r\n     * @param albums {Map<any, any>}\r\n     * @private\r\n     */\r\n    _markImagesAsInProgress(albums) {\r\n        for (let [foldername, album] of albums) {\r\n            /**\r\n             * @var ParsedHTMLElement parsedHTMLElement\r\n             */\r\n            album.forEach(parsedHTMLElement => {\r\n              parsedHTMLElement.getHTMLElement().setAttribute(MARKER_IMAGE_IS_IN_PROGRESS_ATTRIBUTE, 1);\r\n            })\r\n        }\r\n    }\r\n\r\n    /**\r\n     * sorts all found images into a map: key=folder, value=array of\r\n     *\r\n     * @param htmlElements\r\n     * @returns {Map<any, any>}\r\n     * @private\r\n     */\r\n    _groupByAlbum(htmlElements) {\r\n        let albums = new Map();\r\n        htmlElements.forEach((imageHTMLElement) => {\r\n           let parsedHTMLElement = this._parseHTMLElement(imageHTMLElement);\r\n            parsedHTMLElement.updateParameters();\r\n           let folder = parsedHTMLElement.parameters.get('folder');\r\n\r\n           if (!albums.get(folder)) {\r\n             albums.set(folder, []);\r\n           }\r\n\r\n           albums.get(folder).push(parsedHTMLElement);\r\n        });\r\n\r\n        return albums;\r\n    }\r\n\r\n    // noinspection JSMethodCanBeStatic\r\n    /**\r\n     *\r\n     * @param htmlElement\r\n     * @returns {ParsedHTMLElement}\r\n     * @private\r\n     */\r\n    _parseHTMLElement(htmlElement) {\r\n        if (htmlElement.tagName === 'IMG') {\r\n            return new ParsedImageHTMLElement(htmlElement);\r\n        }\r\n        return new ParsedLinkHTMLElement(htmlElement);\r\n    }\r\n\r\n\r\n    /**\r\n     * starts several requests to the server to determine\r\n     *\r\n     * @param albums\r\n     * @private\r\n     */\r\n    _getAlbumDataFromServer(albums, doReloadLightbox) {\r\n        for (let [foldername, album] of albums) {\r\n            this._doAlbumRequest(foldername, album, doReloadLightbox);\r\n        }\r\n    }\r\n\r\n    _doAlbumRequest(foldername, album, doReloadLightbox) {\r\n        if (!this.albumUrl) return;\r\n        fetch(this.albumUrl + '&folder=' + foldername)\r\n            .then(response => response.json())\r\n            .then(data => this._processAlbumResult(album, data, doReloadLightbox));\r\n    }\r\n\r\n    _processAlbumResult(album, data, doReloadLightbox) {\r\n        this._replaceImages(album, data, doReloadLightbox);\r\n    }\r\n\r\n    _getMainImageDataFromServer(albums, doReloadLightbox) {\r\n        let albumsWithMainImagesOnly = this._filterForAlbumsWithMainImageOnly(albums);\r\n\r\n        if (albumsWithMainImagesOnly.size > 0) {\r\n            this._doAlbumsRequest(albumsWithMainImagesOnly, albums, doReloadLightbox);\r\n            for (let [foldername, album] of albumsWithMainImagesOnly) {\r\n                albums.delete(foldername);\r\n            }\r\n        }\r\n\r\n        this._getAlbumDataFromServer(albums, doReloadLightbox);\r\n    }\r\n\r\n    _doAlbumsRequest(albumsWithMainImagesOnly, albums, doReloadLightbox) {\r\n        if (!this.albumsUrl) return;\r\n        fetch(this.albumsUrl)\r\n            .then(response => response.json())\r\n            .then(data => this._processAlbumsResult(albumsWithMainImagesOnly, albums, data, doReloadLightbox));\r\n    }\r\n\r\n    _processAlbumsResult(albumsWithMainImagesOnly, albums, data, doReloadLightbox) {\r\n        for (let [key, album] of albumsWithMainImagesOnly) {\r\n            this._replaceImages(album, data[key], doReloadLightbox);\r\n        }\r\n        this._getAlbumDataFromServer(albums, doReloadLightbox);\r\n    }\r\n\r\n    // noinspection JSMethodCanBeStatic\r\n    _filterForAlbumsWithMainImageOnly(albums) {\r\n        let newAlbums = new Map();\r\n        for(let [key, album] of albums) {\r\n            let mainImages = album.filter(image => image.isMainImage());\r\n\r\n            if (mainImages.length> 0 && mainImages.length === album.length) {\r\n                newAlbums.set(key, album);\r\n            }\r\n        }\r\n        return newAlbums;\r\n    }\r\n\r\n    _replaceImages(album, serverResult, doReloadLightbox) {\r\n        if (album === undefined || serverResult === undefined) {\r\n            return;\r\n        }\r\n\r\n        album.forEach(parsedImageHTMLElement => {\r\n            let imageUrl = serverResult[parsedImageHTMLElement.getFile()];\r\n            if (imageUrl === undefined) {\r\n                return false;\r\n            }\r\n\r\n            parsedImageHTMLElement.updateParameters();\r\n            parsedImageHTMLElement.replaceElementLinks(imageUrl);\r\n            parsedImageHTMLElement.getHTMLElement().setAttribute(MARKER_IMAGE_IS_IN_PROGRESS_ATTRIBUTE, 0);\r\n\r\n        });\r\n\r\n        if (doReloadLightbox && Eventgallery.lightbox) {\r\n            if (Eventgallery.lightbox.isOpen()) {\r\n                let link = Eventgallery.lightbox.getCurrentSlide().thumbnailContainer;\r\n                Eventgallery.lightbox._gallery.close();\r\n                setTimeout(()=>link.click(),500);\r\n            }\r\n        }\r\n    }\r\n};\r\n\r\nclass ParsedHTMLElement {\r\n    constructor(htmlElement) {\r\n        this.htmlElement = htmlElement;\r\n        this.parameters = null;\r\n        this.attributeNames = new Set();\r\n        this.styleAttributeNames = new Set();\r\n    }\r\n\r\n    updateParametersWithUrl(url) {\r\n        let parameterString = url.substring(url.indexOf('#')+1);\r\n        this.parameters = URLHelper.parseURLParameter(parameterString);\r\n    }\r\n\r\n    updateParameters() {\r\n        for(let n of this.attributeNames) {\r\n            let url = this.getHTMLElement().getAttribute(n);\r\n            if (url && url.indexOf(LOADING_MATCHER)>0) {\r\n                this.updateParametersWithUrl(url);\r\n                return;\r\n            }\r\n        }\r\n\r\n        for(let n of this.styleAttributeNames) {\r\n            let url = URLHelper.extractBackgroudUrl(this.getHTMLElement().style[n]);\r\n            if (url && url.indexOf(LOADING_MATCHER)>0) {\r\n                this.updateParametersWithUrl(url);\r\n                return;\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    replaceElementLinks(imageUrl) {\r\n\r\n        for(let n of this.attributeNames) {\r\n            let url = this.getHTMLElement().getAttribute(n);\r\n            if (url && url.indexOf(LOADING_MATCHER)>0) {\r\n                this.getHTMLElement().setAttribute(n, this.getImageUrl(imageUrl, this.getWidth(url)));\r\n            }\r\n        }\r\n\r\n        for(let n of this.styleAttributeNames) {\r\n            let url = URLHelper.extractBackgroudUrl(this.getHTMLElement().style[n]);\r\n            if (url && url.indexOf(LOADING_MATCHER)>0) {\r\n                this.getHTMLElement().style[n] = 'url(' + this.getImageUrl(imageUrl, this.getWidth(url)) + ')';\r\n            }\r\n        }\r\n    }\r\n\r\n    getHTMLElement() {\r\n        return this.htmlElement;\r\n    }\r\n\r\n    getFolder() {\r\n        return this.parameters.get('folder');\r\n    }\r\n\r\n    getFile() {\r\n        return this.parameters.get('file');\r\n    }\r\n\r\n\r\n    getWidth(url) {\r\n        return URLHelper.parseURLParameter(url).get('width');\r\n    }\r\n\r\n    getImageUrl(imageUrl, width) {\r\n        return imageUrl + '=w' + width;\r\n    }\r\n\r\n    isMainImage() {\r\n        return this.parameters.get('m') === '1';\r\n    }\r\n}\r\n\r\nclass ParsedLinkHTMLElement extends ParsedHTMLElement {\r\n\r\n    constructor(htmlElement) {\r\n        super(htmlElement);\r\n        this.attributeNames = new Set(['href', 'data-src', 'rel']);\r\n    }\r\n\r\n}\r\n\r\nclass ParsedImageHTMLElement extends ParsedHTMLElement{\r\n\r\n    constructor(htmlElement) {\r\n        super(htmlElement);\r\n        this.attributeNames = new Set(['src', 'data-src']);\r\n        this.styleAttributeNames = new Set(['backgroundImage']);\r\n    }\r\n}\r\n\r\n\r\n})(Eventgallery);\r\n","export default class URLHelper {\r\n\r\n    constructor() {\r\n    }\r\n\r\n    /**\r\n     * splits a URL parameter like foo=bar&1=2 into a parameter map\r\n     *\r\n     * @param urlParameterString\r\n     * @returns {Map<any, any>}\r\n     */\r\n    static parseURLParameter(urlParameterString) {\r\n        let pairs = urlParameterString.split('&');\r\n        let parameters = new Map();\r\n\r\n        pairs.forEach(pair => {\r\n            let splittedPair = pair.split('=');\r\n            if (splittedPair.length === 2) {\r\n                parameters.set(splittedPair[0], splittedPair[1]);\r\n            }\r\n        });\r\n\r\n        return parameters;\r\n    }\r\n\r\n    /**\r\n     * returns a map of the query string of an full url\r\n     *\r\n     * @param urlSring\r\n     * @returns {URLSearchParams}\r\n     */\r\n    static getParameters(urlSring) {\r\n        let parts = urlSring.split('?');\r\n        if (parts.length < 2) {\r\n            return new Map();\r\n        }\r\n        let queryParts = parts[1].split('#');\r\n        return URLHelper.parseURLParameter(queryParts[0]);\r\n    }\r\n\r\n    /**\r\n     * returns the url from strings like \"url ('foobar.jpg')\"\r\n     *\r\n     * @param urlString\r\n     * @returns {*}\r\n     */\r\n    static extractBackgroudUrl(urlString) {\r\n        return urlString.replace(/(url\\(|\\)|\"|')/g, '');\r\n    }\r\n};\r\n\r\n\r\n","<style scoped lang=\"less\">\r\n</style>\r\n\r\n<template>\r\n    <div id=\"Cacheclear\">\r\n\r\n        <div>{{i18n.t('COM_EVENTGALLERY_CLEAR_CACHE_START_DESC')}}</div>\r\n\r\n        <div class=\"control-group\">\r\n            <div class=\"controls\">\r\n                <div class=\"btn-group sync-buttons\">\r\n                    <button class=\"btn btn-light checkall\" v-on:click=\"checkAll\">{{i18n.t('COM_EVENTGALLERY_CLEAR_CACHE_CHECK_ALL')}}</button>\r\n                    <button class=\"btn btn-light\" v-on:click=\"uncheckAll\">{{i18n.t('COM_EVENTGALLERY_CLEAR_CACHE_CHECK_NONE')}}</button>\r\n                    <button class=\"btn btn-warning\" :disabled=\"!running\" v-on:click=\"stopQueue\">{{i18n.t('COM_EVENTGALLERY_CLEAR_CACHE_STOP_QUEUE')}}</button>\r\n                    <button class=\"btn btn-danger\" :disabled=\"running || !isReadyForCacheDeletion\" v-on:click=\"clearCache\">{{i18n.t('COM_EVENTGALLERY_CLEAR_CACHE_START')}}</button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <Progress v-if=\"numberOfTasks>0\"\r\n                  :remaining=\"numberOfTasks\"\r\n                  :total=\"numberOfLastQueuePush\"></Progress>\r\n\r\n        <Groups :groups=\"groups\" :elements=\"elements\" :blocked=\"running\"></Groups>\r\n\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n\r\n    import queue from 'async/queue';\r\n    import Groups from \"./Groups.vue\";\r\n    import ProcessSteps from \"../components/ProcessSteps.vue\";\r\n    import Progress from \"../components/Progress.vue\";\r\n    import ErrorPanel from \"../components/ErrorPanel.vue\";\r\n\r\n    export default {\r\n        components: {\r\n            Groups, Progress, ErrorPanel, ProcessSteps\r\n        },\r\n        props: {\r\n            i18n: null,\r\n            elementsJson: null,\r\n            groupsJson: null,\r\n            cacheClearUrl: null,\r\n            csrfToken: null,\r\n        },\r\n        data() {\r\n            return {\r\n                elements: [],\r\n                groups: [],\r\n                failedElements: [],\r\n                errorMessages: [],\r\n                queue: null,\r\n                numberOfRunningTasks: 0,\r\n                numberOfTasks: 0,\r\n                numberOfLastQueuePush: 0,\r\n                running: false\r\n            };\r\n        },\r\n        created: function() {\r\n            this.queue = queue((task, callback) => {\r\n                task(callback);\r\n            }, 1);\r\n            this.queue.drain(()=>{\r\n                this.updateQueueStatus();\r\n                this.running = false;\r\n            });\r\n        },\r\n        mounted: function() {\r\n            this.elements = JSON.parse(this.elementsJson);\r\n            this.groups = JSON.parse(this.groupsJson);\r\n        },\r\n        computed: {\r\n            selectedElements: function() {\r\n                return this.elements.filter((element)=> {\r\n                    return element.checked;\r\n                });\r\n            },\r\n            isReadyForCacheDeletion: function() {\r\n                return this.selectedElements.filter(element => {\r\n                    return !element.removed;\r\n                }).length > 0;\r\n            }\r\n        },\r\n        methods: {\r\n            checkAll: function() {\r\n                this.elements.forEach(element=>{element.checked=true})\r\n            },\r\n            uncheckAll: function() {\r\n                this.elements.forEach(element=>{element.checked=false})\r\n            },\r\n            stopQueue: function(){\r\n                this.queue.remove(() => {return true});\r\n            },\r\n            updateQueueStatus: function() {\r\n                this.numberOfRunningTasks = this.queue.running();\r\n                this.numberOfTasks = this.queue.length() + this.numberOfRunningTasks;\r\n            },\r\n            clearCache: function() {\r\n                this.running = true;\r\n                this.selectedElements.forEach((element) => {\r\n                        this.queue.push((done) => { this.clearCacheForElement(element, () => {done(); this.updateQueueStatus(); })});\r\n                });\r\n                this.numberOfLastQueuePush = this.selectedElements.length;\r\n            },\r\n            clearCacheForElement: function(element, done) {\r\n\r\n                let data = element.group + '=' + element.value + '&' + this.csrfToken + '=1';\r\n                let xhr = new XMLHttpRequest();\r\n\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4) {\r\n                        if(xhr.status === 200) {\r\n                            try {\r\n                                this.$set(element, 'removed', true);\r\n                            } catch(e) {\r\n                                console.log(e);\r\n                                this.errorMessages.push(xhr.responseText);\r\n                            }\r\n                        }\r\n                        done();\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.cacheClearUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            },\r\n\r\n        }\r\n    };\r\n</script>\r\n","<style lang=\"less\" scoped>\n\n    .elements {\n        list-style: none;\n\n        li {\n            margin: 10px;\n        }\n\n        .checkbox  {\n            float:left;\n        }\n    }\n</style>\n\n<template>\n    <div v-if=\"sortedElements.length>0\"><h2>{{group.displayname}}</h2>\n\n    <ul class=\"elements\">\n        <template v-for=\"element in sortedElements\">\n            <li @click=\"element.checked = !element.checked\" v-bind:key=\"element.value\">\n                <div class=\"checkbox\"><input type=\"checkbox\" v-model=\"element.checked\" ></div>\n                <div class=\"description\">\n                    {{element.name}} <span class=\"filecount\">({{element.count}} / {{element.size}})</span>\n                </div>\n            </li>\n        </template>\n    </ul>\n    </div>\n</template>\n\n<script>\n    export default {\n        props: {\n            group: null,\n            elements: null,\n        },\n        computed: {\n            sortedElements: function(){\n                return this.elements.slice().filter(a => {\n                    return !a.removed && a.group === this.group.name && a.count > 0;\n                }).sort((a, b) => {\n                    return a.name.localeCompare(b.name);\n                });\n            }\n        }\n    };\n</script>\n","<style lang=\"less\" scoped>\n    .blocked {\n        opacity: 0.4;\n    }\n</style>\n\n<template>\n    <div class=\"groups\" v-bind:class=\"{blocked: blocked}\">\n        <Elements v-for=\"group in groups\" v-bind:key=\"group.value\" :group=\"group\" :elements=\"elements\"></Elements>\n    </div>\n</template>\n\n<script>\n    import Elements from \"./Elements.vue\";\n\n    export default {\n        components: {\n            Elements\n        },\n        props: {\n            groups: null,\n            elements: null,\n            blocked: null\n        },\n        computed: {\n        }\n\n    };\n</script>\n","<style scoped lang=\"less\">\n    #errorMessages {\n        pre {\n            max-height: 50vh;\n            overflow-y: scroll;\n        }\n        div {\n            color: #D8000C;\n            background-color: #FFD2D2;\n            padding: 12px;\n            margin: 10px 0;\n        }\n    }\n</style>\n\n<template>\n    <div id=\"errorMessages\" v-if=\"errorMessages.length>0 || failedFolders.length>0\">\n        <h2>{{headline}}</h2>\n        <pre v-if=\"errorMessages.length>0\"><template v-for=\"message in reversedErrorMessages\">{{message}}</template></pre>\n        <div v-for=\"failedFolder in failedFolders\">\n            {{failedFolder.error}}\n        </div>\n    </div>\n</template>\n\n<script>\n    export default {\n        props: {\n            headline: null,\n            errorMessages: null,\n            failedFolders: null,\n        },\n        computed: {\n            reversedErrorMessages: function() {\n                return this.errorMessages.slice().reverse();\n            }\n        }\n\n    };\n</script>\n","<style scoped>\n    li {\n        display: flex;\n        align-items: center;\n    }\n\n    input[type=checkbox] {\n        transform: scale(1.5);\n    }\n\n    .description {\n        margin: 10px;\n    }\n\n    .filecount {\n        width: 100%;\n        text-align: center;\n        font-size: 1.2em;\n        padding: 5px;\n    }\n\n</style>\n\n<template>\n    <li @click=\"folder.checked = !folder.checked\" :style=\"{backgroundColor: backgroundColor}\">\n        <div><input type=\"checkbox\" v-model=\"folder.checked\" ></div>\n        <div class=\"description\">\n            <div>{{folder.foldername}}</div>\n            <div><strong>{{status}}</strong></div>\n            <div class=\"filecount\" v-if=\"folder.files\">({{numberOfFilesLeft}} / {{folder.files.length}} {{i18n_labelNeedSync}})</div>\n        </div>\n    </li>\n</template>\n\n<script>\n    export default {\n        props: {\n            folder: null,\n            i18n_labelNeedSync: String\n        },\n        methods: {\n\n        },\n        computed: {\n            folderid: function() {\n                return 'folder_' + this.folder.foldername;\n            },\n            numberOfFilesLeft: function () {\n                return this.folder.files.filter((file => {return file.status !== 'sync'})).length;\n            },\n            status: function() {\n                return this.folder.status;\n            },\n            backgroundColor: function() {\n                if (!this.folder || !this.folder.status) return \"\";\n\n                if (this.folder.status === 'sync') {\n                    console.log(this.numberOfFilesLeft)\n                    if (this.numberOfFilesLeft === 0 ) {\n                        return \"lightgreen\";\n                    }\n                    return '#FAFAD2'\n                }\n                if (this.folder.status === 'nosync') {\n                    return \"#DDD\";\n                }\n                if (this.folder.status === 'deleted') {\n                    return 'orange';\n                }\n\n            }\n        }\n\n    };\n</script>\n","<style lang=\"less\" scoped>\n\n    .folders {\n        display: flex;\n        flex-wrap: wrap;\n        justify-content: space-between;\n        list-style: none;\n\n        li {\n            padding: 10px;\n            margin: 10px;\n            border: 5px solid #EEE;\n        }\n    }\n\n    .blocked {\n        opacity: 0.5;\n    }\n</style>\n\n<template>\n    <ul class=\"folders\" v-bind:class=\"{blocked: blocked}\">\n        <folder v-for=\"folder in sortedFolders\"  v-bind:key=\"folder.foldername\" :folder=\"folder\" :i18n_label-need-sync=\"i18n_labelNeedSync\"></folder>\n    </ul>\n</template>\n\n<script>\n\n    import Folder from \"./Folder.vue\";\n\n    export default {\n        components: {\n            Folder\n        },\n        props: {\n            folders: null,\n            blocked: null,\n            i18n_labelNeedSync: String\n        },\n        computed: {\n            sortedFolders: function(){\n                return this.folders.slice().sort((a, b) => {\n                    return a.foldername.localeCompare(b.foldername);\n                });\n            }\n        }\n\n    };\n</script>\n","<style scoped>\n    .container {\n        width: 100%;\n        margin: 20px auto;\n    }\n    .progressbar {\n        counter-reset: step;\n        display: flex;\n    }\n    .progressbar li {\n        list-style-type: none;\n        width: 33.333%;\n        font-size: 12px;\n        position: relative;\n        text-align: center;\n        color: #7d7d7d;\n    }\n\n    .progressbar li span.title {\n        text-transform: uppercase;\n    }\n\n    .progressbar li:before {\n        width: 30px;\n        height: 30px;\n        content: counter(step);\n        counter-increment: step;\n        line-height: 30px;\n        border: 2px solid #7d7d7d;\n        display: block;\n        text-align: center;\n        margin: 0 auto 10px auto;\n        border-radius: 50%;\n        background-color: white;\n    }\n    .progressbar li:after {\n        width: 100%;\n        height: 2px;\n        content: '';\n        position: absolute;\n        background-color: #7d7d7d;\n        top: 15px;\n        left: -50%;\n        z-index: -1;\n    }\n    .progressbar li:first-child:after {\n        content: none;\n    }\n    .progressbar li.active {\n        color: green;\n    }\n    .progressbar li.active:before {\n        border-color: #55b776;\n    }\n    .progressbar li.active + li:after {\n        background-color: #55b776;\n    }\n\n    .progressbar span {\n        display: block;\n        margin-bottom: 10px;\n    }\n\n</style>\n\n<template>\n    <div class=\"container\">\n        <ul class=\"progressbar\">\n            <li v-bind:class=\"{active: true}\">\n                <span class=\"title\">{{i18n_labelStep1}}</span>\n            </li>\n            <li v-bind:class=\"{active: numberOfSelectedFolders > 0}\">\n                <span class=\"title\">{{i18n_labelStep2}}</span>\n                <span v-if=\"numberOfSelectedFolders === 0\">{{i18n_hintStep2}}</span>\n                <button class=\"btn btn-primary sync-folders\" :disabled=\"running || numberOfSelectedFolders===0\" v-on:click=\"$emit('sync-folders')\">{{i18n_labelButtonStep2}} ({{numberOfSelectedFolders}} {{i18n_labelItemsStep2}})</button>\n            </li>\n            <li v-bind:class=\"{active: isReadyForSyncFiles > 0}\">\n                <span class=\"title\">{{i18n_labelStep3}}</span>\n                <span v-if=\"isReadyForSyncFiles\">{{i18n_hintStep3}}</span>\n                <button class=\"btn btn-primary sync-files\" :disabled=\"running || !isReadyForSyncFiles\" v-on:click=\"$emit('sync-files')\">{{i18n_labelButtonStep3}} ({{numberOfSelectedFiles}} {{i18n_labelItemsStep3}})</button>\n            </li>\n        </ul>\n\n\n    </div>\n</template>\n\n<script>\n    export default {\n        props: {\n            running: null,\n            isReadyForSyncFiles: null,\n            numberOfSelectedFolders: null,\n            numberOfSelectedFiles: null,\n            i18n_labelStep1: String,\n            i18n_labelStep2: String,\n            i18n_hintStep2: String,\n            i18n_labelButtonStep2: String,\n            i18n_labelStep3: String,\n            i18n_hintStep3: String,\n            i18n_labelButtonStep3: String,\n            i18n_labelItemsStep2: String,\n            i18n_labelItemsStep3: String\n        }\n    };\n</script>\n","<style scoped>\n    .eg-progressbar-state {\n        height: 20px;\n        text-align: center;\n    }\n</style>\n\n<template>\n       <div class=\"eg-progressbar\" >\n            <div class=\"eg-progressbar-state\" v-bind:style=\"{width: progress + '%'}\">\n                <template v-if=\"remaining>0\"></template>\n            </div>\n        </div>\n\n</template>\n\n<script>\n    export default {\n        props: {\n            remaining: null,\n            total: null,\n        },\n        computed: {\n            progress: function() {\n                return (this.total-this.remaining) / this.total * 100;\n            }\n        }\n\n    };\n</script>\n","<style scoped lang=\"less\">\r\n</style>\r\n\r\n<template>\r\n    <div id=\"Filesync\">\r\n\r\n        <ErrorPanel :error-messages=\"errorMessages\" :failed-folders=\"failedFolders\" :headline=\"i18n.t('COM_EVENTGALLERY_SYNC_ERROR_HEADLINE')\"></ErrorPanel>\r\n\r\n        <ProcessSteps :i18n=\"i18n\"\r\n                      :number-of-selected-files=\"numberOfSyncableFiles\"\r\n                      :number-of-selected-folders=\"selectedFolders.length\"\r\n                      :is-ready-for-sync-files=\"isSyncFilesProcessReadyToStart\"\r\n                      :running=\"running\"\r\n                      :i18n_label-step1=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP1')\"\r\n                      :i18n_label-step2=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP2')\"\r\n                      :i18n_label-items-step2=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP2_ITEMS')\"\r\n                      :i18n_label-step3=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP3')\"\r\n                      :i18n_label-items-step3=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP3_ITEMS')\"\r\n                      :i18n_hint-step2=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP2_HINT')\"\r\n                      :i18n_hint-step3=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP3_HINT')\"\r\n                      :i18n_label-button-step2=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP2_BUTTON_LABEL')\"\r\n                      :i18n_label-button-step3=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP3_BUTTON_LABEL')\"\r\n                      v-on:sync-files=\"syncFiles\"\r\n                      v-on:sync-folders=\"syncFolders\">\r\n        </ProcessSteps>\r\n\r\n        <div class=\"control-group\">\r\n            <div class=\"controls\">\r\n                <div class=\"btn-group sync-buttons\">\r\n                    <button class=\"btn btn-light checkall\" v-on:click=\"checkAll\">{{i18n.t('COM_EVENTGALLERY_SYNC_CHECK_ALL')}}</button>\r\n                    <button class=\"btn btn-light\" v-on:click=\"uncheckAll\">{{i18n.t('COM_EVENTGALLERY_SYNC_CHECK_NONE')}}</button>\r\n                    <button class=\"btn btn-warning\" :disabled=\"!running\" v-on:click=\"stopQueue\">{{i18n.t('COM_EVENTGALLERY_SYNC_STOP_QUEUE')}}</button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <Progress v-if=\"numberOfTasks>0\"\r\n                  :remaining=\"numberOfTasks\"\r\n                  :total=\"numberOfLastQueuePush\"></Progress>\r\n        <Folders :folders=\"folders\" :blocked=\"running\" :i18n_label-need-sync=\"i18n.t('COM_EVENTGALLERY_SYNC_OPEN_IMAGES_NEEDS_SYNC')\"></Folders>\r\n\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n\r\n    import queue from 'async/queue';\r\n    import { createBatches } from \"../../../common/js/BatchCreator\";\r\n    import Folders from \"../components/Folders.vue\";\r\n    import ProcessSteps from \"../components/ProcessSteps.vue\";\r\n    import Progress from \"../components/Progress.vue\";\r\n    import ErrorPanel from \"../components/ErrorPanel.vue\";\r\n\r\n    export default {\r\n        components: {\r\n            Folders, Progress, ErrorPanel, ProcessSteps\r\n        },\r\n        props: {\r\n            i18n: null,\r\n            loadFoldersUrl: null,\r\n            fileSyncUrl: null,\r\n            folderSyncUrl: null,\r\n            csrfToken: null,\r\n            fileBatchSize: null,\r\n            maxParallelRequests: null,\r\n        },\r\n        data() {\r\n            return {\r\n                folders: [],\r\n                failedFolders: [],\r\n                errorMessages: [],\r\n                queue: null,\r\n                numberOfRunningTasks: 0,\r\n                numberOfTasks: 0,\r\n                numberOfLastQueuePush: 0,\r\n                running: false\r\n\r\n            };\r\n        },\r\n        created: function() {\r\n            this.queue = queue((task, callback) => {\r\n                task(callback);\r\n            }, this.maxParallelRequests);\r\n            this.queue.drain(()=>{\r\n                this.updateQueueStatus();\r\n                this.running = false;\r\n            });\r\n        },\r\n        mounted: function() {\r\n            this.loadFolders();\r\n        },\r\n        computed: {\r\n            numberOfSyncableFiles: function() {\r\n                let number = 0;\r\n                this.selectedFolders.forEach((folder) => {\r\n                    if (folder.files) {\r\n                        number +=folder.files.length\r\n                    }\r\n                });\r\n                return number;\r\n            },\r\n            selectedFolders: function() {\r\n                return this.folders.filter((folder)=> {\r\n                    return folder.checked;\r\n                });\r\n            },\r\n            isSyncFilesProcessReadyToStart: function() {\r\n                let isReady = this.selectedFolders.length>0;\r\n                this.selectedFolders.forEach((folder) => {\r\n                    if (!folder.files) {\r\n                        isReady = false;\r\n                    }\r\n                });\r\n                return isReady;\r\n            }\r\n        },\r\n        methods: {\r\n            checkAll: function() {\r\n                this.folders.forEach(folder=>{folder.checked=true})\r\n            },\r\n            uncheckAll: function() {\r\n                this.folders.forEach(folder=>{folder.checked=false})\r\n            },\r\n            stopQueue: function(){\r\n                this.queue.remove(() => {return true});\r\n            },\r\n            updateQueueStatus: function() {\r\n                this.numberOfRunningTasks = this.queue.running();\r\n                this.numberOfTasks = this.queue.length() + this.numberOfRunningTasks;\r\n            },\r\n            syncFolders: function() {\r\n                this.running = true;\r\n                this.selectedFolders.forEach((folder) => {\r\n                        this.queue.push((done) => { this.syncFolder(folder, () => {done(); this.updateQueueStatus(); })});\r\n                });\r\n                this.numberOfLastQueuePush = this.selectedFolders.length;\r\n            },\r\n            syncFolder: function(folder, done) {\r\n\r\n                let data = 'folder=' + folder.foldername + \"&foldertype=\" + folder.foldertype + '&' + this.csrfToken + '=1';\r\n                let xhr = new XMLHttpRequest();\r\n\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4) {\r\n                        if(xhr.status === 200) {\r\n                            try {\r\n                                let responseJSON = JSON.parse(xhr.responseText);\r\n                                let files = [];\r\n                                responseJSON.files.forEach(file => {\r\n                                    files.push({foldername: folder.foldername, filename: file, status: 'new'})\r\n                                });\r\n\r\n                                this.$set(folder, 'files', files);\r\n                                this.$set(folder, 'status', responseJSON.status);\r\n                            } catch(e) {\r\n                                console.log(e);\r\n                                this.errorMessages.push(xhr.responseText);\r\n                            }\r\n                        }\r\n                        done();\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.folderSyncUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            },\r\n            syncFiles: function() {\r\n                this.running = true;\r\n\r\n                let files = [];\r\n\r\n                this.folders.forEach((folder) => {\r\n                    if (folder.checked) {\r\n                        folder.files.forEach((file)=>{\r\n                            files.push(file);\r\n                        })\r\n                    }\r\n                });\r\n\r\n                let batches = createBatches(files, this.fileBatchSize);\r\n                batches.forEach((fileBatch) => {\r\n                    this.queue.push((done) => { this.syncFileBatch(fileBatch, () => {done(); this.updateQueueStatus();})});\r\n                });\r\n                this.numberOfLastQueuePush = files.length>0 ? batches.length : 0;\r\n            },\r\n            syncFileBatch: function(fileBatch, done) {\r\n                let data = this.csrfToken + '=1';\r\n\r\n                fileBatch.forEach(file =>  {\r\n                    data +='&folder[]=' + encodeURIComponent(file.foldername) + '&file[]=' + encodeURIComponent(file.filename)\r\n                });\r\n\r\n                let xhr = new XMLHttpRequest();\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4) {\r\n                        if (xhr.status === 200) {\r\n                            try {\r\n                                let resultFiles = JSON.parse(xhr.responseText);\r\n                                fileBatch.forEach(file => {\r\n                                    resultFiles.forEach(resultFile => {\r\n                                        if (file.foldername === resultFile.foldername && file.filename === resultFile.filename) {\r\n                                            file.status = resultFile.sync;\r\n                                        }\r\n                                    });\r\n                                })\r\n                            } catch (e) {\r\n                                console.log(e);\r\n                                this.errorMessages.push(xhr.responseText);\r\n                            }\r\n                        }\r\n                        done();\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.fileSyncUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            },\r\n            loadFolders: function() {\r\n                let xhr = new XMLHttpRequest();\r\n                let data = this.csrfToken + '=1';\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4 && xhr.status === 200) {\r\n                        try {\r\n                            let folders = JSON.parse(xhr.responseText);\r\n\r\n                            folders.forEach(folder => {\r\n                                if (folder.error != null) {\r\n                                    this.failedFolders.push(folder);\r\n                                } else {\r\n                                    folder.checked = folder.isNew;\r\n                                    this.folders.push(folder);\r\n                                }\r\n                            });\r\n                        } catch(e) {\r\n                            console.log(e);\r\n                            this.errorMessages.push(xhr.responseText);\r\n                        }                     \r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.loadFoldersUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            }\r\n        }\r\n    };\r\n</script>\r\n","<template>\r\n    <div>\r\n        <form>\r\n            <div class=\"adminform form-horizontal\">\r\n                <template v-for=\"field in formDefinition.form.fieldset.field\">\r\n                    <Input v-if=\"field.type==='text'\" v-model=\"data[field.name]\" :name=\"field.name\" :label=\"field.label\" :description=\"field.description\" :default-value=\"field.default\"></Input>\r\n                    <Select v-else-if=\"field.type==='list'\" v-model=\"data[field.name]\" :name=\"field.name\" :label=\"field.label\" :description=\"field.description\" :options=\"field.option\" :default-value=\"field.default\"></Select>\r\n                    <Radio v-else-if=\"field.type==='radio'\" v-model=\"data[field.name]\" :name=\"field.name\" :label=\"field.label\" :description=\"field.description\" :options=\"field.option\" :default-value=\"field.default\"></Radio>\r\n                    <ImageSelector v-else-if=\"field.type==='imageselector'\" v-model=\"data.image\" :load-folders-url=\"loadFoldersUrl\" :load-files-url=\"loadFilesUrl\" :name=\"field.name\" :label=\"field.label\" :description=\"field.description\"></ImageSelector>\r\n                    <div v-else>Unsupported form element {{field}}</div>\r\n                </template>\r\n            </div>\r\n\r\n            <div id=\"imagetagfield\">{{tagContent}}</div>\r\n\r\n            <button class=\"pull-right btn btn-primary\" v-on:click=\"insertImageContentTag\">{{i18n.t('COM_EVENTGALLERY_CONTENTPLUGINBUTTON_BUTTON_INSERT')}}</button>\r\n\r\n        </form>\r\n\r\n    </div>\r\n</template>\r\n<style>\r\n#imagetagfield {\r\n  font-family: \"Courier New\", Courier, monospace;\r\n  padding: 10px;\r\n  border-radius: 5px;\r\n  background-color: #DDDCDC;\r\n  margin-bottom: 10px;\r\n}\r\n</style>\r\n<script>\r\n\r\n    import ImageSelector from \"./ImageSelector.vue\";\r\n    import Input from \"./Input.vue\";\r\n    import Select from \"./Select.vue\";\r\n    import Radio from \"./Radio.vue\";\r\n\r\n    export default {\r\n        components: {\r\n            ImageSelector, Input, Select, Radio\r\n        },\r\n        props: {\r\n            editorName: null,\r\n            loadFoldersUrl: null,\r\n            loadFilesUrl: null,\r\n            formId: null,\r\n            formDefinitionJson: null,\r\n            i18n: null\r\n        },\r\n        data() {\r\n            return {\r\n                data: {\r\n                    attr: null,\r\n                    image_crop: null,\r\n                    image_mode: null,\r\n                    image_width: null,\r\n                    cssclass: null,\r\n                    use_cart: null,\r\n                    image: {\r\n                        file: null,\r\n                        folder: null,\r\n                        thumb: null\r\n                    },\r\n                },\r\n                formDefinition: JSON.parse(this.formDefinitionJson),\r\n            };\r\n        },\r\n        computed: {\r\n            tagContent: function() {\r\n                let tag = \"{eventgallery-image \";\r\n\r\n                tag = tag + \"event='\" + this.data.image.folder + \"' \";\r\n                tag = tag + \"file='\" + this.data.image.file + \"' \";\r\n\r\n                tag = tag + \"attr='\"+ this.data.attr +\"' \";\r\n\r\n                if (this.data.attr === \"image\") {\r\n                    tag = tag + \"mode='\"+ this.data.image_mode +\"' \";\r\n                    tag = tag + \"crop='\"+ this.data.image_crop +\"' \";\r\n                    if (this.data.image_width) tag = tag + \"thumb_width='\"+ this.data.image_width + \"' \";\r\n                    if (this.data.cssclass) tag = tag + \"cssclass='\"+ this.data.cssclass + \"' \";\r\n                    if (this.data.use_cart) tag = tag + \"use_cart='\"+ this.data.use_cart + \"' \";\r\n                }\r\n\r\n                tag = tag + \"}\";\r\n\r\n                return tag\r\n            }\r\n        },\r\n        methods: {\r\n            insertImageContentTag: function() {\r\n                console.log(this.tagContent);\r\n                // Joomla 3.x code\r\n                if (window.parent.jInsertEditorText) {\r\n                    window.parent.jInsertEditorText(this.tagContent, this.editorName);\r\n                    window.parent.SqueezeBox.close();\r\n                } else {\r\n                    // Joomla 4 code\r\n                    window.parent.Joomla.editors.instances[this.editorName].replaceSelection(this.tagContent);\r\n                    window.parent.Joomla.Modal.getCurrent().close();\r\n                }\r\n                return false;\r\n            }\r\n        }\r\n    };\r\n</script>\r\n","<style scoped>\r\n    .fullscreenOverlay {\r\n        /* Height & width depends on how you want to reveal the overlay (see JS below) */\r\n        height: 100%;\r\n        width: 100%;\r\n        position: absolute;\r\n        z-index: 1; /* Sit on top */\r\n        left: 0;\r\n        top: 0;\r\n        background-color: white;\r\n        padding: 10px;\r\n        box-sizing: border-box;\r\n    }\r\n\r\n    .ImageSelector {\r\n        display: flex;\r\n        width: 100%;\r\n    }\r\n\r\n    .folders {\r\n        width: 250px;\r\n        margin-right: 20px;\r\n        flex: 1;\r\n    }\r\n\r\n    ul {\r\n        margin: 0;\r\n    }\r\n\r\n    li {\r\n        cursor: pointer;\r\n    }\r\n\r\n    li:hover{\r\n        background-color: #eee;\r\n    }\r\n\r\n    li.active {\r\n        background-color: orange;\r\n    }\r\n\r\n    .folders ul {\r\n        list-style: none;\r\n    }\r\n\r\n    .folders li {\r\n        margin: 5px 0;\r\n        padding: 5px;\r\n    }\r\n\r\n\r\n\r\n    .files {\r\n        flex: 3;\r\n        width: 100%;\r\n        display: flex;\r\n        flex-flow: row wrap;\r\n        list-style: none;\r\n        padding: 0;\r\n    }\r\n\r\n    .files ul {\r\n        display: flex;\r\n        flex-flow: row wrap;\r\n    }\r\n\r\n    .files li {\r\n        display: block;\r\n        box-sizing: border-box;\r\n        width: 25%;\r\n        flex-grow: 0;\r\n        padding: 10px;\r\n    }\r\n\r\n    .files li img {\r\n        width: 100%;\r\n    }\r\n\r\n    label {\r\n        word-break: break-all;\r\n    }\r\n\r\n    .lds-dual-ring {\r\n        display: inline-block;\r\n        width: 80px;\r\n        height: 80px;\r\n    }\r\n    .lds-dual-ring:after {\r\n        content: \" \";\r\n        display: block;\r\n        width: 64px;\r\n        height: 64px;\r\n        margin: 8px;\r\n        border-radius: 50%;\r\n        border: 6px solid #000;\r\n        border-color: #000 transparent #000 transparent;\r\n        animation: lds-dual-ring 1.2s linear infinite;\r\n    }\r\n    @keyframes lds-dual-ring {\r\n        0% {\r\n            transform: rotate(0deg);\r\n        }\r\n        100% {\r\n            transform: rotate(360deg);\r\n        }\r\n    }\r\n</style>\r\n<template>\r\n    <div>\r\n        <div v-show=\"!showImageSelectorState\">\r\n            <div class=\"control-group\">\r\n                <div class=\"control-label\"><Label :description=\"description\" :label=\"label\"></Label></div>\r\n                <div class=\"controls\">\r\n                    <p v-show=\"value.thumb\">\r\n                    <img :src=\"value.thumb\" style=\"max-height: 150px;\">\r\n                    </p>\r\n                    <button class=\"btn btn-secondary\" v-on:click.prevent=\"showImageSelector\">{{label}}</button>\r\n                </div>\r\n            </div>\r\n\r\n        </div>\r\n        <div v-show=\"showImageSelectorState\" class=\"fullscreenOverlay\">\r\n            <div class=\"overlay-content\">\r\n                <div class=\"ImageSelector\">\r\n                    <div class=\"folders\">\r\n                        <button v-on:click.prevent=\"hideImageSelector\">&lt;&lt;</button>\r\n                        <input type=\"text\" v-model=\"folderFilter\">\r\n                        <ul>\r\n                            <li v-for=\"myFolder in filteredFolders\" :key=\"myFolder.folder\" :class=\"{active: (myFolder.folder === folder)}\" v-on:click=\"loadFiles(myFolder.folder)\">{{myFolder.name}}</li>\r\n                        </ul>\r\n                    </div>\r\n                    <div class=\"files\">\r\n                        <div v-show=\"isLoading\"><div class=\"lds-dual-ring\"></div></div>\r\n                        <ul v-show=\"!isLoading\">\r\n                            <li v-for=\"file in files\" :key=\"file.id \" v-on:click=\"setImage(file)\">\r\n                                <label>{{file.file}}</label>\r\n                                <img :src=\"file.thumb\">\r\n                            </li>\r\n                        </ul>\r\n                    </div>\r\n                </div>\r\n\r\n            </div>\r\n        </div>\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    import Label from \"./Label\";\r\n\r\n    export default {\r\n        components: {\r\n            Label\r\n        },\r\n        props: {\r\n            name: null,\r\n            label: null,\r\n            description: null,\r\n            loadFoldersUrl: null,\r\n            loadFilesUrl: null,\r\n            value: null\r\n        },\r\n        data() {\r\n            return {\r\n                file: \"\",\r\n                thumb: \"\",\r\n                folder: \"\",\r\n                folders: [],\r\n                files: [],\r\n                isLoading: false,\r\n                folderFilter: \"\",\r\n                showImageSelectorState: false\r\n            };\r\n        },\r\n        computed: {\r\n            filteredFolders: function() {\r\n                if (this.folderFilter === \"\") return this.folders;\r\n                let filter = this.folderFilter.toLowerCase();\r\n\r\n                return this.folders.filter((folder)=>{\r\n                    if (folder.folder.toLowerCase().includes(filter)) {\r\n                        return true;\r\n                    }\r\n                    if (folder.name.toLowerCase().includes(filter)) {\r\n                        return true;\r\n                    }\r\n                    return false;\r\n                })\r\n            },\r\n            image: function() {\r\n                let imageObject = {\r\n                    file: this.file,\r\n                    folder: this.folder,\r\n                    thumb: this.thumb\r\n                };\r\n                return imageObject;\r\n            }\r\n        },\r\n        created() {\r\n            let xhr = new XMLHttpRequest();\r\n            xhr.onreadystatechange = () => {\r\n                if (xhr.readyState === 4) {\r\n                    if (xhr.status === 200) {\r\n                        try {\r\n                            this.folders = JSON.parse(xhr.responseText);\r\n                        } catch (e) {\r\n                            console.log(e);\r\n                        }\r\n                    }\r\n                }\r\n            };\r\n\r\n            xhr.open(\"GET\", this.loadFoldersUrl);\r\n            xhr.send();\r\n        },\r\n        methods: {\r\n            loadFiles: function(folder) {\r\n                if (this.isLoading) return;\r\n                this.folder = folder;\r\n                this.isLoading = true;\r\n                let xhr = new XMLHttpRequest();\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4) {\r\n                        if (xhr.status === 200) {\r\n                            try {\r\n                                this.files = JSON.parse(xhr.responseText);\r\n                                setTimeout(this.sendCustomEvent,500);\r\n\r\n                            } catch (e) {\r\n                                console.log(e);\r\n                            }\r\n                            this.isLoading = false;\r\n                        }\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"GET\", this.loadFilesUrl + '&folder=' + folder);\r\n                xhr.send();\r\n            },\r\n            setImage: function(file) {\r\n                if (file) {\r\n                    this.folder = file.folder;\r\n                    this.file = file.file;\r\n                    this.thumb = file.thumb;\r\n                }\r\n                this.$emit('input', this.image);\r\n                if (this.callback) this.callback();\r\n                this.hideImageSelector();\r\n                setTimeout(this.sendCustomEvent, 500);\r\n\r\n            },\r\n            sendCustomEvent: function() {\r\n                let event = new CustomEvent('eventgallery-images-added');\r\n                document.dispatchEvent(event);\r\n            },\r\n            showImageSelector: function() {\r\n                this.showImageSelectorState = true;\r\n            },\r\n            hideImageSelector: function() {\r\n                this.showImageSelectorState = false;\r\n            }\r\n        }\r\n    };\r\n</script>\r\n","<template>\r\n    <div class=\"control-group\">\r\n        <div class=\"control-label\"><Label :description=\"description\" :label=\"label\"></Label></div>\r\n        <div class=\"controls\">\r\n            <input class=\"form-control\"\r\n                    :name=\"name\"\r\n                    v-bind:value=\"value\"\r\n                    v-on:input=\"$emit('input', $event.target.value)\"\r\n            >\r\n        </div>\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    import Label from \"./Label\";\r\n\r\n    export default {\r\n        components: {\r\n            Label\r\n        },\r\n        props: {\r\n            name: null,\r\n            label: null,\r\n            description: null,\r\n            value: null,\r\n            defaultValue: null\r\n        },\r\n        data() {\r\n            return {\r\n            };\r\n        },\r\n        mounted() {\r\n            this.$emit('input', this.defaultValue);\r\n        },\r\n        methods: {\r\n        }\r\n    };\r\n</script>\r\n","<style scoped>\n    /* Tooltip container */\n    .eg-tooltip {\n        position: relative;\n        display: inline-block;\n        padding-right: 10px;\n    }\n\n    /* Tooltip text */\n    .eg-tooltip .eg-tooltiptext {\n        visibility: hidden;\n        width: 170px;\n        background-color: #EEE;\n        color: #000;\n        text-align: center;\n        padding: 5px;\n        border-radius: 6px;\n        border: 1px solid #CCC;\n        position: absolute;\n        z-index: 1;\n    }\n\n    .eg-tooltip:hover .eg-tooltiptext,\n    .eg-tooltip:active .eg-tooltiptext{\n        visibility: visible;\n    }\n\n    .eg-tooltip-right {\n        top: -50%;\n        left: 100%;\n    }\n</style>\n\n<template>\n    <label class=\"eg-tooltip\"><span class=\"eg-tooltiptext eg-tooltip-right\">{{description}}</span>{{label}}</label>\n</template>\n\n<script>\n    export default {\n        props: {\n            label: String,\n            description: String\n        }\n    };\n</script>\n","<template>\n    <div class=\"control-group\">\n        <div class=\"control-label\"><Label :description=\"description\" :label=\"label\"></Label></div>\n        <div class=\"controls\">\n\n              <div class=\"form-check\" v-for=\"item in options\">\n                <input type=\"radio\" class=\"pull-left form-check-input\" :id=\"item.name + item.value\"\n                       v-model=\"value\" :value=\"item.value\" :key=\"item.Id\" :selected=\"value === item.value\" @input=\"$emit('input', $event.target.value)\"></input>\n                <label class=\"radio form-check-label\" :for=\"item.name + item.value\">\n                    {{item.text}}\n                </label>\n              </div>\n\n        </div>\n    </div>\n</template>\n\n<script>\n    import Label from \"./Label\";\n\n    export default {\n        components: {\n            Label\n        },\n        props: {\n            name: null,\n            label: null,\n            description: null,\n            value: null,\n            options: null,\n            defaultValue: null,\n        },\n        data() {\n            return {\n                currentOption: \"\"\n            };\n        },\n        watch: {\n            value: function(newValue){\n                this.currentOption = newValue;\n            }\n        },\n        mounted() {\n            if (this.defaultValue) {\n                this.currentOption = this.defaultValue;\n            } else {\n                this.currentOption = this.options[0].value;\n            }\n\n            this.$emit('input', this.currentOption);\n        },\n        methods: {\n\n        }\n    };\n</script>\n","<template>\n    <div class=\"control-group\">\n        <div class=\"control-label\"><Label :description=\"description\" :label=\"label\"></Label></div>\n        <div class=\"controls\">\n            <select class=\"form-control\" v-model=\"currentOption\" @input=\"$emit('input', $event.target.value)\">\n                <option v-for=\"item in options\" :value=\"item.value\" :key=\"item.value\" :selected=\"value === item.value\">{{ item.text }}</option>\n            </select>\n        </div>\n\n    </div>\n</template>\n\n<script>\n    import Label from \"./Label\";\n\n    export default {\n        components: {\n            Label\n        },\n        props: {\n            name: null,\n            label: null,\n            description: null,\n            value: null,\n            options: null,\n            defaultValue: null,\n        },\n        data() {\n            return {\n                currentOption: \"\"\n            };\n        },\n        watch: {\n            value: function(newValue){\n                this.currentOption = newValue;\n            }\n        },\n        mounted() {\n            this.currentOption = this.defaultValue;\n            this.$emit('input', this.currentOption);\n        },\n        methods: {\n\n        }\n    };\n</script>\n","<style scoped>\n    table {\n        min-width: 200px;\n        margin-top: 20px;\n    }\n\n    th{\n        text-align: left;\n    }\n\n    td {\n        padding: 10px;\n    }\n\n    td.action {\n        text-align: right;\n    }\n\n    input {\n        width: 75px;\n    }\n\n    tr:nth-child(even) {\n        background-color: #eee;\n    }\n\n    tr:hover {\n        background-color: orange;\n    }\n\n    .form-control {\n        display: inline-block;\n        margin: 0 10px;\n    }\n</style>\n<template>\n    <div>\n        <input type=\"hidden\" :name=\"inputName\" :value=\"currentInputValue\" :id=\"inputId\">\n\n        <div class=\"input-append\">\n            <span class=\"add-on\">Quantity</span><input class=\"form-control\" v-model=\"newQuantity\" type=\"number\" min=\"2\">\n            <span class=\"add-on\">Price</span><input class=\"form-control\" v-model=\"newPrice\" type=\"text\" >\n            <button class=\"btn btn-success\" v-on:click.prevent=\"addScalePrice\">+</button>\n        </div>\n\n        <table>\n            <tr>\n                <th>Quantity</th>\n                <th>Price</th>\n                <th>&nbsp;</th>\n            </tr>\n\n            <tr v-for=\"scalePrice in sortedScalePrices\" :key=\"scalePrice.id\">\n                <td>{{scalePrice.quantity}}</td>\n                <td>{{scalePrice.price}}</td>\n                <td class=\"action\"><button class=\"btn btn-danger\" v-on:click.prevent=\"deleteQuantity(scalePrice.quantity)\">-</button></td>\n            </tr>\n        </table>\n    </div>\n</template>\n\n<script>\n    export default {\n        props: {\n            inputName: null,\n            inputId: null,\n            inputValue: null,\n            i18n: null,\n        },\n        data() {\n            return {\n                scalePrices: [],\n                newQuantity: '',\n                newPrice: '',\n                currentId: 0\n            };\n        },\n        computed: {\n            sortedScalePrices: function() {\n                return this.scalePrices.sort((sp1, sp2) => {\n                    let n1 = parseInt(sp1.quantity);\n                    let n2 = parseInt(sp2.quantity);\n                    if (n1 > n2) return 1;\n                    if (n1 < n2) return -1;\n                    return 0;\n                })\n            },\n            currentInputValue: function() {\n                let simpleDataStructure = this.sortedScalePrices.map((scalePrice) => {\n                    return {\n                        quantity: scalePrice.quantity,\n                        price: scalePrice.price\n                    }\n                });\n                return JSON.stringify(simpleDataStructure);\n            },\n        },\n        mounted() {\n            let data = JSON.parse(this.inputValue);\n            this.scalePrices = [];\n            data.forEach((entry) => {\n                this.createEntry(entry.quantity, entry.price);\n            })\n        },\n        methods: {\n            addScalePrice: function() {\n                if (this.newQuantity>1 && this.newPrice.length>0) {\n                    this.deleteQuantity(this.newQuantity);\n                    this.createEntry(this.newQuantity, this.newPrice);\n                    this.newPrice = '';\n                    this.newQuantity = '';\n                }\n            },\n            deleteQuantity: function(quantity) {\n                this.scalePrices = this.scalePrices.filter((scalePrice)=> {\n                    return scalePrice.quantity !== quantity;\n                })\n            },\n            createEntry: function(quantity, price) {\n                this.scalePrices.push({price: price, quantity: quantity, id: this.getNextId()})\n            },\n            getNextId: function() {\n                return this.currentId++;\n            }\n        }\n    };\n</script>\n","<style scoped lang=\"less\">\r\n\r\n</style>\r\n\r\n<template>\r\n    <div id=\"Thumbnailcreator\">\r\n\r\n\r\n        <p class=\"well\">\r\n            <span v-html=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_START2_DESC')\"></span>\r\n            <br><br>\r\n            <label class=\"checkbox\">\r\n                <input v-model=\"refreshetags\" type=\"checkbox\">  {{i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_REFRESHETAGS_DESC')}}\r\n            </label>\r\n\r\n        </p>\r\n\r\n        <ErrorPanel :error-messages=\"errorMessages\" :failed-folders=\"failedFolders\" :headline=\"i18n.t('COM_EVENTGALLERY_SYNC_ERROR_HEADLINE')\"></ErrorPanel>\r\n\r\n        <ProcessSteps :i18n=\"i18n\"\r\n                      :number-of-selected-files=\"numberOfSyncableFiles\"\r\n                      :number-of-selected-folders=\"selectedFolders.length\"\r\n                      :is-ready-for-sync-files=\"isSyncFilesProcessReadyToStart\"\r\n                      :running=\"running\"\r\n                      :i18n_label-step1=\"i18n.t('COM_EVENTGALLERY_SYNC_STEP1')\"\r\n                      :i18n_label-step2=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_GETMISSINGTHUMBNAILS')\"\r\n                      :i18n_label-step3=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_START_THUMBNAILCREATION')\"\r\n                      :i18n_hint-step2=\"i18n.t('')\"\r\n                      :i18n_hint-step3=\"i18n.t('')\"\r\n                      :i18n_label-button-step2=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_START')\"\r\n                      :i18n_label-button-step3=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_START')\"\r\n                      :i18n_label-items-step2=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_STEP2_ITEMS')\"\r\n                      :i18n_label-items-step3=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_STEP3_ITEMS')\"\r\n                      v-on:sync-files=\"syncFiles\"\r\n                      v-on:sync-folders=\"syncFolders\">\r\n        </ProcessSteps>\r\n\r\n        <div class=\"control-group\">\r\n            <div class=\"controls\">\r\n                <div class=\"btn-group sync-buttons\">\r\n                    <button class=\"btn btn-light checkall\" v-on:click=\"checkAll\">{{i18n.t('COM_EVENTGALLERY_SYNC_CHECK_ALL')}}</button>\r\n                    <button class=\"btn btn-light\" v-on:click=\"uncheckAll\">{{i18n.t('COM_EVENTGALLERY_SYNC_CHECK_NONE')}}</button>\r\n                    <button class=\"btn btn-warning\" :disabled=\"!running\" v-on:click=\"stopQueue\">{{i18n.t('COM_EVENTGALLERY_SYNC_STOP_QUEUE')}}</button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <Progress v-if=\"numberOfTasks>0\"\r\n                  :remaining=\"numberOfTasks\"\r\n                  :total=\"numberOfLastQueuePush\"></Progress>\r\n\r\n        <Folders :folders=\"folders\" :blocked=\"running\" :i18n_label-need-sync=\"i18n.t('COM_EVENTGALLERY_THUMBNAILGENERATOR_OPEN_IMAGES_NEEDS_SYNC')\"></Folders>\r\n\r\n    </div>\r\n</template>\r\n\r\n<script>\r\n    import queue from 'async/queue';\r\n    import { createBatches } from \"../../../common/js/BatchCreator\";\r\n    import Folders from \"../components/Folders.vue\";\r\n    import ProcessSteps from \"../components/ProcessSteps.vue\";\r\n    import Progress from \"../components/Progress.vue\";\r\n    import ErrorPanel from \"../components/ErrorPanel.vue\";\r\n\r\n    export default {\r\n        components: {\r\n            Folders, Progress, ErrorPanel, ProcessSteps\r\n        },\r\n        props: {\r\n            i18n: null,\r\n            loadFoldersUrl: null,\r\n            fileSyncUrl: null,\r\n            folderSyncUrl: null,\r\n            csrfToken: null,\r\n            fileBatchSize: null,\r\n            maxParallelRequests: null,\r\n        },\r\n        data() {\r\n            return {\r\n                folders: [],\r\n                failedFolders: [],\r\n                errorMessages: [],\r\n                queue: null,\r\n                numberOfRunningTasks: 0,\r\n                numberOfTasks: 0,\r\n                numberOfLastQueuePush: 0,\r\n                running: false,\r\n                refreshetags: true\r\n\r\n            };\r\n        },\r\n        created: function() {\r\n            this.queue = queue((task, callback) => {\r\n                task(callback);\r\n            }, this.maxParallelRequests);\r\n            this.queue.drain(()=>{\r\n                this.updateQueueStatus();\r\n                this.running = false;\r\n            });\r\n        },\r\n        mounted: function() {\r\n            this.loadFolders();\r\n        },\r\n        computed: {\r\n            numberOfSyncableFiles: function() {\r\n                let number = 0;\r\n                this.selectedFolders.forEach((folder) => {\r\n                    if (folder.files) {\r\n                        number += folder.files.filter(file => {return file.status !== 'synced'}).length;\r\n                        //number +=folder.files.length\r\n                    }\r\n                });\r\n                return number;\r\n            },\r\n            selectedFolders: function() {\r\n                return this.folders.filter((folder)=> {\r\n                    return folder.checked;\r\n                });\r\n            },\r\n            isSyncFilesProcessReadyToStart: function() {\r\n                let isReady = this.selectedFolders.length>0;\r\n                this.selectedFolders.forEach((folder) => {\r\n                    if (!folder.files) {\r\n                        isReady = false;\r\n                    }\r\n                });\r\n                return isReady;\r\n            }\r\n        },\r\n        methods: {\r\n            checkAll: function() {\r\n                this.folders.forEach(folder=>{folder.checked=true})\r\n            },\r\n            uncheckAll: function() {\r\n                this.folders.forEach(folder=>{folder.checked=false})\r\n            },\r\n            stopQueue: function(){\r\n                this.queue.remove(() => {return true});\r\n            },\r\n            updateQueueStatus: function() {\r\n                this.numberOfRunningTasks = this.queue.running();\r\n                this.numberOfTasks = this.queue.length() + this.numberOfRunningTasks;\r\n            },\r\n            syncFolders: function() {\r\n                this.running = true;\r\n                this.selectedFolders.forEach((folder) => {\r\n                        this.queue.push((done) => { this.syncFolder(folder, () => {done(); this.updateQueueStatus(); })});\r\n                });\r\n                this.numberOfLastQueuePush = this.selectedFolders.length;\r\n            },\r\n            syncFolder: function(folder, done) {\r\n\r\n                let data = 'folder=' + folder.foldername + \"&foldertype=\" + folder.foldertype + '&refreshetags=' + this.refreshetags + '&' + this.csrfToken + '=1';\r\n                let xhr = new XMLHttpRequest();\r\n\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4) {\r\n                        if(xhr.status === 200) {\r\n                            try {\r\n                                let responseJSON = JSON.parse(xhr.responseText);\r\n                                let files = [];\r\n                                responseJSON.files.forEach(file => {\r\n                                    files.push({foldername: folder.foldername, filename: file, status: 'new'})\r\n                                });\r\n\r\n                                this.$set(folder, 'files', files);\r\n                                this.$set(folder, 'status', responseJSON.status);\r\n                            } catch(e) {\r\n                                console.log(e);\r\n                                this.errorMessages.push(xhr.responseText);\r\n                            }\r\n                        }\r\n                        done();\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.folderSyncUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            },\r\n            syncFiles: function() {\r\n                this.running = true;\r\n\r\n                let files = [];\r\n\r\n                this.folders.forEach((folder) => {\r\n                    if (folder.checked) {\r\n                        folder.files.forEach((file)=>{\r\n                            files.push(file);\r\n                        })\r\n                    }\r\n                });\r\n\r\n                let batches = createBatches(files, this.fileBatchSize);\r\n                batches.forEach((fileBatch) => {\r\n                    this.queue.push((done) => { this.syncFileBatch(fileBatch, () => {done(); this.updateQueueStatus();})});\r\n                });\r\n                this.numberOfLastQueuePush = files.length>0 ? batches.length : 0;\r\n            },\r\n            syncFileBatch: function(fileBatch, done) {\r\n                let data = this.csrfToken + '=1';\r\n\r\n                fileBatch.forEach(file =>  {\r\n                    data +='&folder[]=' + encodeURIComponent(file.foldername) + '&file[]=' + encodeURIComponent(file.filename)\r\n                });\r\n\r\n                let xhr = new XMLHttpRequest();\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4) {\r\n                        if (xhr.status === 200) {\r\n                            try {\r\n                                let resultFiles = JSON.parse(xhr.responseText);\r\n                                fileBatch.forEach(file => {\r\n                                    resultFiles.forEach(resultFile => {\r\n                                        if (file.foldername === resultFile.foldername && file.filename === resultFile.filename) {\r\n                                            file.status = 'sync';\r\n                                        }\r\n                                    });\r\n                                })\r\n                            } catch (e) {\r\n                                console.log(e);\r\n                                this.errorMessages.push(xhr.responseText);\r\n                            }\r\n                        }\r\n                        done();\r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.fileSyncUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            },\r\n            loadFolders: function() {\r\n                let xhr = new XMLHttpRequest();\r\n                let data = this.csrfToken + '=1';\r\n                xhr.onreadystatechange = () => {\r\n                    if (xhr.readyState === 4 && xhr.status === 200) {\r\n                        try {\r\n                            let folders = JSON.parse(xhr.responseText);\r\n\r\n                            folders.forEach(folder => {\r\n                                if (folder.error != null) {\r\n                                    this.failedFolders.push(folder);\r\n                                } else {\r\n                                    folder.checked = folder.isNew;\r\n                                    this.folders.push(folder);\r\n                                }\r\n                            });\r\n                        } catch(e) {\r\n                            console.log(e);\r\n                            this.errorMessages.push(xhr.responseText);\r\n                        }                     \r\n                    }\r\n                };\r\n\r\n                xhr.open(\"POST\", this.loadFoldersUrl);\r\n                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\r\n                xhr.send(data);\r\n            }\r\n        }\r\n    };\r\n</script>\r\n","<style scoped lang=\"less\">\n    @import \"_Uploader.less\";\n</style>\n\n<template>\n    <div class=\"Uploader\">\n        <label for=\"fileselect\">{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_FILES_TO_UPLOAD}}:</label>\n        <input id=\"fileselect\" type=\"file\" multiple=\"multiple\" v-on:change=\"addFiles\">\n\n        <div class=\"eg-progressbar\" v-if=\"pendingFiles.length + inProgressFiles.length > 0\">\n            <div class=\"eg-progressbar-state\" v-bind:style=\"{width: progress + '%'}\"></div>\n        </div>\n\n        <div class=\"eg-bo-row\">\n\n            <div v-if=\"pendingFiles.length > 0\" class=\"eg-bo-column3\">\n                <h2 >{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_PENDING}}</h2>\n                <ul id=\"pending\">\n                    <li v-for=\"pendingFile in revertedPendingFiles\">\n                        {{ pendingFile.name }}\n                    </li>\n                </ul>\n            </div>\n\n            <div v-if=\"finishedFilesContent.length > 0 || inProgressFiles.length > 0 || failedFilesContent.length > 0\" class=\"eg-bo-column9\">\n                <h2>{{i18n.COM_EVENTGALLERY_EVENT_UPLOAD_FINISHED}}</h2>\n                <ul id=\"finished\" class=\"eg-bo-row\" style=\"flex-wrap: wrap\">\n                    <li v-for=\"inProgressFile in inProgressFiles\" class=\"eg-bo-column3\">\n                        <div>{{ inProgressFile.name }}</div>\n                        <div class=\"lds-ring\"><div></div><div></div><div></div><div></div></div>\n                    </li>\n                    <li v-for=\"failedFileContent in failedFilesContent\" class=\"eg-bo-column3\" v-html=\"failedFileContent.content\" v-bind:key=\"failedFileContent.id\">\n                    </li>\n                    <li v-for=\"finishedFileContent in revertedFinishedFilesContent\" v-html=\"finishedFileContent.content\" v-bind:key=\"finishedFileContent.id\" class=\"eg-bo-column3\">\n                    </li>\n                </ul>\n            </div>\n        </div>\n    </div>\n</template>\n\n<script>\n    import {removeElement} from '../../../common/js/Helpers';\n\n    export default {\n        props: {\n            i18n: null,\n            uploadUrl: null,\n            maxFileSize: null\n        },\n        computed: {\n            progress: function() {\n                let total = this.pendingFiles.length + this.inProgressFiles.length + this.finishedFilesContent.length + this.failedFilesContent.length;\n                let progress = (total - this.pendingFiles.length) / total * 100;\n                return progress;\n            },\n            revertedPendingFiles: function() {\n                  return this.pendingFiles.slice().reverse();\n            },\n            revertedFinishedFilesContent: function() {\n                return this.finishedFilesContent.slice().reverse();\n            }\n        },\n        data() {\n            return {\n                pendingFiles: [],\n                inProgressFiles: [],\n                finishedFilesContent: [],\n                failedFilesContent: [],\n            };\n        },\n        methods: {\n            addFiles: function (event) {\n                let newFiles = event.target.files || event.dataTransfer.files;\n                for (let i = 0; i<newFiles.length; i++) {\n                    let f = newFiles[i];\n                    this.pendingFiles.push(f);\n                }\n\n                this.upload();\n            },\n            upload: function() {\n                if (this.pendingFiles.length === 0) {\n                    return;\n                }\n                let file = this.pendingFiles.pop();\n                let data = new FormData();\n                let xhr = new XMLHttpRequest();\n\n                if (xhr.upload && file.size <= this.maxFileSize) {\n\n                    this.inProgressFiles.push(file);\n\n                    // file received/failed\n                    xhr.onreadystatechange = () => {\n                        if (xhr.readyState === 4) {\n                            if (xhr.status === 200) {\n                                this.finishedFilesContent.push({id: this.finishedFilesContent.length,'content':xhr.responseText});\n                            } else {\n                                this.failedFilesContent.push({id: this.failedFilesContent.length,'content': xhr.responseText});\n                            }\n                            removeElement(this.inProgressFiles, file);\n                            this.upload();\n                        }\n                    };\n\n                    data.append('file', file, file.name);\n                    xhr.open(\"POST\", this.uploadUrl, true);\n                    xhr.send(data);\n\n                } else {\n                    console.log(\"invalid file, will not try to upload it\");\n                    this.upload();\n                }\n            }\n        }\n    };\n</script>\n","module.exports = function(list) {\n  var addAsync = function(values, callback, items) {\n    var valuesToAdd = values.splice(0, 50);\n    items = items || [];\n    items = items.concat(list.add(valuesToAdd));\n    if (values.length > 0) {\n      setTimeout(function() {\n        addAsync(values, callback, items);\n      }, 1);\n    } else {\n      list.update();\n      callback(items);\n    }\n  };\n  return addAsync;\n};\n","module.exports = function(list) {\n\n  // Add handlers\n  list.handlers.filterStart = list.handlers.filterStart || [];\n  list.handlers.filterComplete = list.handlers.filterComplete || [];\n\n  return function(filterFunction) {\n    list.trigger('filterStart');\n    list.i = 1; // Reset paging\n    list.reset.filter();\n    if (filterFunction === undefined) {\n      list.filtered = false;\n    } else {\n      list.filtered = true;\n      var is = list.items;\n      for (var i = 0, il = is.length; i < il; i++) {\n        var item = is[i];\n        if (filterFunction(item)) {\n          item.filtered = true;\n        } else {\n          item.filtered = false;\n        }\n      }\n    }\n    list.update();\n    list.trigger('filterComplete');\n    return list.visibleItems;\n  };\n};\n","\nvar classes = require('./utils/classes'),\n  events = require('./utils/events'),\n  extend = require('./utils/extend'),\n  toString = require('./utils/to-string'),\n  getByClass = require('./utils/get-by-class'),\n  fuzzy = require('./utils/fuzzy');\n\nmodule.exports = function(list, options) {\n  options = options || {};\n\n  options = extend({\n    location: 0,\n    distance: 100,\n    threshold: 0.4,\n    multiSearch: true,\n    searchClass: 'fuzzy-search'\n  }, options);\n\n\n\n  var fuzzySearch = {\n    search: function(searchString, columns) {\n      // Substract arguments from the searchString or put searchString as only argument\n      var searchArguments = options.multiSearch ? searchString.replace(/ +$/, '').split(/ +/) : [searchString];\n\n      for (var k = 0, kl = list.items.length; k < kl; k++) {\n        fuzzySearch.item(list.items[k], columns, searchArguments);\n      }\n    },\n    item: function(item, columns, searchArguments) {\n      var found = true;\n      for(var i = 0; i < searchArguments.length; i++) {\n        var foundArgument = false;\n        for (var j = 0, jl = columns.length; j < jl; j++) {\n          if (fuzzySearch.values(item.values(), columns[j], searchArguments[i])) {\n            foundArgument = true;\n          }\n        }\n        if(!foundArgument) {\n          found = false;\n        }\n      }\n      item.found = found;\n    },\n    values: function(values, value, searchArgument) {\n      if (values.hasOwnProperty(value)) {\n        var text = toString(values[value]).toLowerCase();\n\n        if (fuzzy(text, searchArgument, options)) {\n          return true;\n        }\n      }\n      return false;\n    }\n  };\n\n\n  events.bind(getByClass(list.listContainer, options.searchClass), 'keyup', function(e) {\n    var target = e.target || e.srcElement; // IE have srcElement\n    list.search(target.value, fuzzySearch.search);\n  });\n\n  return function(str, columns) {\n    list.search(str, columns, fuzzySearch.search);\n  };\n};\n","var naturalSort = require('string-natural-compare'),\n  getByClass = require('./utils/get-by-class'),\n  extend = require('./utils/extend'),\n  indexOf = require('./utils/index-of'),\n  events = require('./utils/events'),\n  toString = require('./utils/to-string'),\n  classes = require('./utils/classes'),\n  getAttribute = require('./utils/get-attribute'),\n  toArray = require('./utils/to-array');\n\nmodule.exports = function(id, options, values) {\n\n  var self = this,\n    init,\n    Item = require('./item')(self),\n    addAsync = require('./add-async')(self),\n    initPagination = require('./pagination')(self);\n\n  init = {\n    start: function() {\n      self.listClass      = \"list\";\n      self.searchClass    = \"search\";\n      self.sortClass      = \"sort\";\n      self.page           = 10000;\n      self.i              = 1;\n      self.items          = [];\n      self.visibleItems   = [];\n      self.matchingItems  = [];\n      self.searched       = false;\n      self.filtered       = false;\n      self.searchColumns  = undefined;\n      self.handlers       = { 'updated': [] };\n      self.valueNames     = [];\n      self.utils          = {\n        getByClass: getByClass,\n        extend: extend,\n        indexOf: indexOf,\n        events: events,\n        toString: toString,\n        naturalSort: naturalSort,\n        classes: classes,\n        getAttribute: getAttribute,\n        toArray: toArray\n      };\n\n      self.utils.extend(self, options);\n\n      self.listContainer = (typeof(id) === 'string') ? document.getElementById(id) : id;\n      if (!self.listContainer) { return; }\n      self.list       = getByClass(self.listContainer, self.listClass, true);\n\n      self.parse        = require('./parse')(self);\n      self.templater    = require('./templater')(self);\n      self.search       = require('./search')(self);\n      self.filter       = require('./filter')(self);\n      self.sort         = require('./sort')(self);\n      self.fuzzySearch  = require('./fuzzy-search')(self, options.fuzzySearch);\n\n      this.handlers();\n      this.items();\n      this.pagination();\n\n      self.update();\n    },\n    handlers: function() {\n      for (var handler in self.handlers) {\n        if (self[handler]) {\n          self.on(handler, self[handler]);\n        }\n      }\n    },\n    items: function() {\n      self.parse(self.list);\n      if (values !== undefined) {\n        self.add(values);\n      }\n    },\n    pagination: function() {\n      if (options.pagination !== undefined) {\n        if (options.pagination === true) {\n          options.pagination = [{}];\n        }\n        if (options.pagination[0] === undefined){\n          options.pagination = [options.pagination];\n        }\n        for (var i = 0, il = options.pagination.length; i < il; i++) {\n          initPagination(options.pagination[i]);\n        }\n      }\n    }\n  };\n\n  /*\n  * Re-parse the List, use if html have changed\n  */\n  this.reIndex = function() {\n    self.items          = [];\n    self.visibleItems   = [];\n    self.matchingItems  = [];\n    self.searched       = false;\n    self.filtered       = false;\n    self.parse(self.list);\n  };\n\n  this.toJSON = function() {\n    var json = [];\n    for (var i = 0, il = self.items.length; i < il; i++) {\n      json.push(self.items[i].values());\n    }\n    return json;\n  };\n\n\n  /*\n  * Add object to list\n  */\n  this.add = function(values, callback) {\n    if (values.length === 0) {\n      return;\n    }\n    if (callback) {\n      addAsync(values, callback);\n      return;\n    }\n    var added = [],\n      notCreate = false;\n    if (values[0] === undefined){\n      values = [values];\n    }\n    for (var i = 0, il = values.length; i < il; i++) {\n      var item = null;\n      notCreate = (self.items.length > self.page) ? true : false;\n      item = new Item(values[i], undefined, notCreate);\n      self.items.push(item);\n      added.push(item);\n    }\n    self.update();\n    return added;\n  };\n\n\tthis.show = function(i, page) {\n\t\tthis.i = i;\n\t\tthis.page = page;\n\t\tself.update();\n    return self;\n\t};\n\n  /* Removes object from list.\n  * Loops through the list and removes objects where\n  * property \"valuename\" === value\n  */\n  this.remove = function(valueName, value, options) {\n    var found = 0;\n    for (var i = 0, il = self.items.length; i < il; i++) {\n      if (self.items[i].values()[valueName] == value) {\n        self.templater.remove(self.items[i], options);\n        self.items.splice(i,1);\n        il--;\n        i--;\n        found++;\n      }\n    }\n    self.update();\n    return found;\n  };\n\n  /* Gets the objects in the list which\n  * property \"valueName\" === value\n  */\n  this.get = function(valueName, value) {\n    var matchedItems = [];\n    for (var i = 0, il = self.items.length; i < il; i++) {\n      var item = self.items[i];\n      if (item.values()[valueName] == value) {\n        matchedItems.push(item);\n      }\n    }\n    return matchedItems;\n  };\n\n  /*\n  * Get size of the list\n  */\n  this.size = function() {\n    return self.items.length;\n  };\n\n  /*\n  * Removes all items from the list\n  */\n  this.clear = function() {\n    self.templater.clear();\n    self.items = [];\n    return self;\n  };\n\n  this.on = function(event, callback) {\n    self.handlers[event].push(callback);\n    return self;\n  };\n\n  this.off = function(event, callback) {\n    var e = self.handlers[event];\n    var index = indexOf(e, callback);\n    if (index > -1) {\n      e.splice(index, 1);\n    }\n    return self;\n  };\n\n  this.trigger = function(event) {\n    var i = self.handlers[event].length;\n    while(i--) {\n      self.handlers[event][i](self);\n    }\n    return self;\n  };\n\n  this.reset = {\n    filter: function() {\n      var is = self.items,\n        il = is.length;\n      while (il--) {\n        is[il].filtered = false;\n      }\n      return self;\n    },\n    search: function() {\n      var is = self.items,\n        il = is.length;\n      while (il--) {\n        is[il].found = false;\n      }\n      return self;\n    }\n  };\n\n  this.update = function() {\n    var is = self.items,\n\t\t\til = is.length;\n\n    self.visibleItems = [];\n    self.matchingItems = [];\n    self.templater.clear();\n    for (var i = 0; i < il; i++) {\n      if (is[i].matching() && ((self.matchingItems.length+1) >= self.i && self.visibleItems.length < self.page)) {\n        is[i].show();\n        self.visibleItems.push(is[i]);\n        self.matchingItems.push(is[i]);\n      } else if (is[i].matching()) {\n        self.matchingItems.push(is[i]);\n        is[i].hide();\n      } else {\n        is[i].hide();\n      }\n    }\n    self.trigger('updated');\n    return self;\n  };\n\n  init.start();\n};\n","module.exports = function(list) {\n  return function(initValues, element, notCreate) {\n    var item = this;\n\n    this._values = {};\n\n    this.found = false; // Show if list.searched == true and this.found == true\n    this.filtered = false;// Show if list.filtered == true and this.filtered == true\n\n    var init = function(initValues, element, notCreate) {\n      if (element === undefined) {\n        if (notCreate) {\n          item.values(initValues, notCreate);\n        } else {\n          item.values(initValues);\n        }\n      } else {\n        item.elm = element;\n        var values = list.templater.get(item, initValues);\n        item.values(values);\n      }\n    };\n\n    this.values = function(newValues, notCreate) {\n      if (newValues !== undefined) {\n        for(var name in newValues) {\n          item._values[name] = newValues[name];\n        }\n        if (notCreate !== true) {\n          list.templater.set(item, item.values());\n        }\n      } else {\n        return item._values;\n      }\n    };\n\n    this.show = function() {\n      list.templater.show(item);\n    };\n\n    this.hide = function() {\n      list.templater.hide(item);\n    };\n\n    this.matching = function() {\n      return (\n        (list.filtered && list.searched && item.found && item.filtered) ||\n        (list.filtered && !list.searched && item.filtered) ||\n        (!list.filtered && list.searched && item.found) ||\n        (!list.filtered && !list.searched)\n      );\n    };\n\n    this.visible = function() {\n      return (item.elm && (item.elm.parentNode == list.list)) ? true : false;\n    };\n\n    init(initValues, element, notCreate);\n  };\n};\n","var classes = require('./utils/classes'),\n  events = require('./utils/events'),\n  List = require('./index');\n\nmodule.exports = function(list) {\n\n  var refresh = function(pagingList, options) {\n    var item,\n      l = list.matchingItems.length,\n      index = list.i,\n      page = list.page,\n      pages = Math.ceil(l / page),\n      currentPage = Math.ceil((index / page)),\n      innerWindow = options.innerWindow || 2,\n      left = options.left || options.outerWindow || 0,\n      right = options.right || options.outerWindow || 0;\n\n    right = pages - right;\n\n    pagingList.clear();\n    for (var i = 1; i <= pages; i++) {\n      var className = (currentPage === i) ? \"active\" : \"\";\n\n      //console.log(i, left, right, currentPage, (currentPage - innerWindow), (currentPage + innerWindow), className);\n\n      if (is.number(i, left, right, currentPage, innerWindow)) {\n        item = pagingList.add({\n          page: i,\n          dotted: false\n        })[0];\n        if (className) {\n          classes(item.elm).add(className);\n        }\n        addEvent(item.elm, i, page);\n      } else if (is.dotted(pagingList, i, left, right, currentPage, innerWindow, pagingList.size())) {\n        item = pagingList.add({\n          page: \"...\",\n          dotted: true\n        })[0];\n        classes(item.elm).add(\"disabled\");\n      }\n    }\n  };\n\n  var is = {\n    number: function(i, left, right, currentPage, innerWindow) {\n       return this.left(i, left) || this.right(i, right) || this.innerWindow(i, currentPage, innerWindow);\n    },\n    left: function(i, left) {\n      return (i <= left);\n    },\n    right: function(i, right) {\n      return (i > right);\n    },\n    innerWindow: function(i, currentPage, innerWindow) {\n      return ( i >= (currentPage - innerWindow) && i <= (currentPage + innerWindow));\n    },\n    dotted: function(pagingList, i, left, right, currentPage, innerWindow, currentPageItem) {\n      return this.dottedLeft(pagingList, i, left, right, currentPage, innerWindow) || (this.dottedRight(pagingList, i, left, right, currentPage, innerWindow, currentPageItem));\n    },\n    dottedLeft: function(pagingList, i, left, right, currentPage, innerWindow) {\n      return ((i == (left + 1)) && !this.innerWindow(i, currentPage, innerWindow) && !this.right(i, right));\n    },\n    dottedRight: function(pagingList, i, left, right, currentPage, innerWindow, currentPageItem) {\n      if (pagingList.items[currentPageItem-1].values().dotted) {\n        return false;\n      } else {\n        return ((i == (right)) && !this.innerWindow(i, currentPage, innerWindow) && !this.right(i, right));\n      }\n    }\n  };\n\n  var addEvent = function(elm, i, page) {\n     events.bind(elm, 'click', function() {\n       list.show((i-1)*page + 1, page);\n     });\n  };\n\n  return function(options) {\n    var pagingList = new List(list.listContainer.id, {\n      listClass: options.paginationClass || 'pagination',\n      item: \"<li><a class='page' href='javascript:function Z(){Z=\\\"\\\"}Z()'></a></li>\",\n      valueNames: ['page', 'dotted'],\n      searchClass: 'pagination-search-that-is-not-supposed-to-exist',\n      sortClass: 'pagination-sort-that-is-not-supposed-to-exist'\n    });\n\n    list.on('updated', function() {\n      refresh(pagingList, options);\n    });\n    refresh(pagingList, options);\n  };\n};\n","module.exports = function(list) {\n\n  var Item = require('./item')(list);\n\n  var getChildren = function(parent) {\n    var nodes = parent.childNodes,\n      items = [];\n    for (var i = 0, il = nodes.length; i < il; i++) {\n      // Only textnodes have a data attribute\n      if (nodes[i].data === undefined) {\n        items.push(nodes[i]);\n      }\n    }\n    return items;\n  };\n\n  var parse = function(itemElements, valueNames) {\n    for (var i = 0, il = itemElements.length; i < il; i++) {\n      list.items.push(new Item(valueNames, itemElements[i]));\n    }\n  };\n  var parseAsync = function(itemElements, valueNames) {\n    var itemsToIndex = itemElements.splice(0, 50); // TODO: If < 100 items, what happens in IE etc?\n    parse(itemsToIndex, valueNames);\n    if (itemElements.length > 0) {\n      setTimeout(function() {\n        parseAsync(itemElements, valueNames);\n      }, 1);\n    } else {\n      list.update();\n      list.trigger('parseComplete');\n    }\n  };\n\n  list.handlers.parseComplete = list.handlers.parseComplete || [];\n\n  return function() {\n    var itemsToIndex = getChildren(list.list),\n      valueNames = list.valueNames;\n\n    if (list.indexAsync) {\n      parseAsync(itemsToIndex, valueNames);\n    } else {\n      parse(itemsToIndex, valueNames);\n    }\n  };\n};\n","module.exports = function(list) {\n  var item,\n    text,\n    columns,\n    searchString,\n    customSearch;\n\n  var prepare = {\n    resetList: function() {\n      list.i = 1;\n      list.templater.clear();\n      customSearch = undefined;\n    },\n    setOptions: function(args) {\n      if (args.length == 2 && args[1] instanceof Array) {\n        columns = args[1];\n      } else if (args.length == 2 && typeof(args[1]) == \"function\") {\n        columns = undefined;\n        customSearch = args[1];\n      } else if (args.length == 3) {\n        columns = args[1];\n        customSearch = args[2];\n      } else {\n        columns = undefined;\n      }\n    },\n    setColumns: function() {\n      if (list.items.length === 0) return;\n      if (columns === undefined) {\n        columns = (list.searchColumns === undefined) ? prepare.toArray(list.items[0].values()) : list.searchColumns;\n      }\n    },\n    setSearchString: function(s) {\n      s = list.utils.toString(s).toLowerCase();\n      s = s.replace(/[-[\\]{}()*+?.,\\\\^$|#]/g, \"\\\\$&\"); // Escape regular expression characters\n      searchString = s;\n    },\n    toArray: function(values) {\n      var tmpColumn = [];\n      for (var name in values) {\n        tmpColumn.push(name);\n      }\n      return tmpColumn;\n    }\n  };\n  var search = {\n    list: function() {\n      for (var k = 0, kl = list.items.length; k < kl; k++) {\n        search.item(list.items[k]);\n      }\n    },\n    item: function(item) {\n      item.found = false;\n      for (var j = 0, jl = columns.length; j < jl; j++) {\n        if (search.values(item.values(), columns[j])) {\n          item.found = true;\n          return;\n        }\n      }\n    },\n    values: function(values, column) {\n      if (values.hasOwnProperty(column)) {\n        text = list.utils.toString(values[column]).toLowerCase();\n        if ((searchString !== \"\") && (text.search(searchString) > -1)) {\n          return true;\n        }\n      }\n      return false;\n    },\n    reset: function() {\n      list.reset.search();\n      list.searched = false;\n    }\n  };\n\n  var searchMethod = function(str) {\n    list.trigger('searchStart');\n\n    prepare.resetList();\n    prepare.setSearchString(str);\n    prepare.setOptions(arguments); // str, cols|searchFunction, searchFunction\n    prepare.setColumns();\n\n    if (searchString === \"\" ) {\n      search.reset();\n    } else {\n      list.searched = true;\n      if (customSearch) {\n        customSearch(searchString, columns);\n      } else {\n        search.list();\n      }\n    }\n\n    list.update();\n    list.trigger('searchComplete');\n    return list.visibleItems;\n  };\n\n  list.handlers.searchStart = list.handlers.searchStart || [];\n  list.handlers.searchComplete = list.handlers.searchComplete || [];\n\n  list.utils.events.bind(list.utils.getByClass(list.listContainer, list.searchClass), 'keyup', function(e) {\n    var target = e.target || e.srcElement, // IE have srcElement\n      alreadyCleared = (target.value === \"\" && !list.searched);\n    if (!alreadyCleared) { // If oninput already have resetted the list, do nothing\n      searchMethod(target.value);\n    }\n  });\n\n  // Used to detect click on HTML5 clear button\n  list.utils.events.bind(list.utils.getByClass(list.listContainer, list.searchClass), 'input', function(e) {\n    var target = e.target || e.srcElement;\n    if (target.value === \"\") {\n      searchMethod('');\n    }\n  });\n\n  return searchMethod;\n};\n","module.exports = function(list) {\n\n  var buttons = {\n    els: undefined,\n    clear: function() {\n      for (var i = 0, il = buttons.els.length; i < il; i++) {\n        list.utils.classes(buttons.els[i]).remove('asc');\n        list.utils.classes(buttons.els[i]).remove('desc');\n      }\n    },\n    getOrder: function(btn) {\n      var predefinedOrder = list.utils.getAttribute(btn, 'data-order');\n      if (predefinedOrder == \"asc\" || predefinedOrder == \"desc\") {\n        return predefinedOrder;\n      } else if (list.utils.classes(btn).has('desc')) {\n        return \"asc\";\n      } else if (list.utils.classes(btn).has('asc')) {\n        return \"desc\";\n      } else {\n        return \"asc\";\n      }\n    },\n    getInSensitive: function(btn, options) {\n      var insensitive = list.utils.getAttribute(btn, 'data-insensitive');\n      if (insensitive === \"false\") {\n        options.insensitive = false;\n      } else {\n        options.insensitive = true;\n      }\n    },\n    setOrder: function(options) {\n      for (var i = 0, il = buttons.els.length; i < il; i++) {\n        var btn = buttons.els[i];\n        if (list.utils.getAttribute(btn, 'data-sort') !== options.valueName) {\n          continue;\n        }\n        var predefinedOrder = list.utils.getAttribute(btn, 'data-order');\n        if (predefinedOrder == \"asc\" || predefinedOrder == \"desc\") {\n          if (predefinedOrder == options.order) {\n            list.utils.classes(btn).add(options.order);\n          }\n        } else {\n          list.utils.classes(btn).add(options.order);\n        }\n      }\n    }\n  };\n\n  var sort = function() {\n    list.trigger('sortStart');\n    var options = {};\n\n    var target = arguments[0].currentTarget || arguments[0].srcElement || undefined;\n\n    if (target) {\n      options.valueName = list.utils.getAttribute(target, 'data-sort');\n      buttons.getInSensitive(target, options);\n      options.order = buttons.getOrder(target);\n    } else {\n      options = arguments[1] || options;\n      options.valueName = arguments[0];\n      options.order = options.order || \"asc\";\n      options.insensitive = (typeof options.insensitive == \"undefined\") ? true : options.insensitive;\n    }\n\n    buttons.clear();\n    buttons.setOrder(options);\n\n\n    // caseInsensitive\n    // alphabet\n    var customSortFunction = (options.sortFunction || list.sortFunction || null),\n        multi = ((options.order === 'desc') ? -1 : 1),\n        sortFunction;\n\n    if (customSortFunction) {\n      sortFunction = function(itemA, itemB) {\n        return customSortFunction(itemA, itemB, options) * multi;\n      };\n    } else {\n      sortFunction = function(itemA, itemB) {\n        var sort = list.utils.naturalSort;\n        sort.alphabet = list.alphabet || options.alphabet || undefined;\n        if (!sort.alphabet && options.insensitive) {\n          sort = list.utils.naturalSort.caseInsensitive;\n        }\n        return sort(itemA.values()[options.valueName], itemB.values()[options.valueName]) * multi;\n      };\n    }\n\n    list.items.sort(sortFunction);\n    list.update();\n    list.trigger('sortComplete');\n  };\n\n  // Add handlers\n  list.handlers.sortStart = list.handlers.sortStart || [];\n  list.handlers.sortComplete = list.handlers.sortComplete || [];\n\n  buttons.els = list.utils.getByClass(list.listContainer, list.sortClass);\n  list.utils.events.bind(buttons.els, 'click', sort);\n  list.on('searchStart', buttons.clear);\n  list.on('filterStart', buttons.clear);\n\n  return sort;\n};\n","var Templater = function(list) {\n  var itemSource,\n    templater = this;\n\n  var init = function() {\n    itemSource = templater.getItemSource(list.item);\n    if (itemSource) {\n      itemSource = templater.clearSourceItem(itemSource, list.valueNames);\n    }\n  };\n\n  this.clearSourceItem = function(el, valueNames) {\n    for(var i = 0, il = valueNames.length; i < il; i++) {\n      var elm;\n      if (valueNames[i].data) {\n        for (var j = 0, jl = valueNames[i].data.length; j < jl; j++) {\n          el.setAttribute('data-'+valueNames[i].data[j], '');\n        }\n      } else if (valueNames[i].attr && valueNames[i].name) {\n        elm = list.utils.getByClass(el, valueNames[i].name, true);\n        if (elm) {\n          elm.setAttribute(valueNames[i].attr, \"\");\n        }\n      } else {\n        elm = list.utils.getByClass(el, valueNames[i], true);\n        if (elm) {\n          elm.innerHTML = \"\";\n        }\n      }\n      elm = undefined;\n    }\n    return el;\n  };\n\n  this.getItemSource = function(item) {\n    if (item === undefined) {\n      var nodes = list.list.childNodes,\n        items = [];\n\n      for (var i = 0, il = nodes.length; i < il; i++) {\n        // Only textnodes have a data attribute\n        if (nodes[i].data === undefined) {\n          return nodes[i].cloneNode(true);\n        }\n      }\n    } else if (/<tr[\\s>]/g.exec(item)) {\n      var tbody = document.createElement('tbody');\n      tbody.innerHTML = item;\n      return tbody.firstChild;\n    } else if (item.indexOf(\"<\") !== -1) {\n      var div = document.createElement('div');\n      div.innerHTML = item;\n      return div.firstChild;\n    } else {\n      var source = document.getElementById(list.item);\n      if (source) {\n        return source;\n      }\n    }\n    return undefined;\n  };\n\n  this.get = function(item, valueNames) {\n    templater.create(item);\n    var values = {};\n    for(var i = 0, il = valueNames.length; i < il; i++) {\n      var elm;\n      if (valueNames[i].data) {\n        for (var j = 0, jl = valueNames[i].data.length; j < jl; j++) {\n          values[valueNames[i].data[j]] = list.utils.getAttribute(item.elm, 'data-'+valueNames[i].data[j]);\n        }\n      } else if (valueNames[i].attr && valueNames[i].name) {\n        elm = list.utils.getByClass(item.elm, valueNames[i].name, true);\n        values[valueNames[i].name] = elm ? list.utils.getAttribute(elm, valueNames[i].attr) : \"\";\n      } else {\n        elm = list.utils.getByClass(item.elm, valueNames[i], true);\n        values[valueNames[i]] = elm ? elm.innerHTML : \"\";\n      }\n      elm = undefined;\n    }\n    return values;\n  };\n\n  this.set = function(item, values) {\n    var getValueName = function(name) {\n      for (var i = 0, il = list.valueNames.length; i < il; i++) {\n        if (list.valueNames[i].data) {\n          var data = list.valueNames[i].data;\n          for (var j = 0, jl = data.length; j < jl; j++) {\n            if (data[j] === name) {\n              return { data: name };\n            }\n          }\n        } else if (list.valueNames[i].attr && list.valueNames[i].name && list.valueNames[i].name == name) {\n          return list.valueNames[i];\n        } else if (list.valueNames[i] === name) {\n          return name;\n        }\n      }\n    };\n    var setValue = function(name, value) {\n      var elm;\n      var valueName = getValueName(name);\n      if (!valueName)\n        return;\n      if (valueName.data) {\n        item.elm.setAttribute('data-'+valueName.data, value);\n      } else if (valueName.attr && valueName.name) {\n        elm = list.utils.getByClass(item.elm, valueName.name, true);\n        if (elm) {\n          elm.setAttribute(valueName.attr, value);\n        }\n      } else {\n        elm = list.utils.getByClass(item.elm, valueName, true);\n        if (elm) {\n          elm.innerHTML = value;\n        }\n      }\n      elm = undefined;\n    };\n    if (!templater.create(item)) {\n      for(var v in values) {\n        if (values.hasOwnProperty(v)) {\n          setValue(v, values[v]);\n        }\n      }\n    }\n  };\n\n  this.create = function(item) {\n    if (item.elm !== undefined) {\n      return false;\n    }\n    if (itemSource === undefined) {\n      throw new Error(\"The list need to have at list one item on init otherwise you'll have to add a template.\");\n    }\n    /* If item source does not exists, use the first item in list as\n    source for new items */\n    var newItem = itemSource.cloneNode(true);\n    newItem.removeAttribute('id');\n    item.elm = newItem;\n    templater.set(item, item.values());\n    return true;\n  };\n  this.remove = function(item) {\n    if (item.elm.parentNode === list.list) {\n      list.list.removeChild(item.elm);\n    }\n  };\n  this.show = function(item) {\n    templater.create(item);\n    list.list.appendChild(item.elm);\n  };\n  this.hide = function(item) {\n    if (item.elm !== undefined && item.elm.parentNode === list.list) {\n      list.list.removeChild(item.elm);\n    }\n  };\n  this.clear = function() {\n    /* .innerHTML = ''; fucks up IE */\n    if (list.list.hasChildNodes()) {\n      while (list.list.childNodes.length >= 1)\n      {\n        list.list.removeChild(list.list.firstChild);\n      }\n    }\n  };\n\n  init();\n};\n\nmodule.exports = function(list) {\n  return new Templater(list);\n};\n","/**\n * Module dependencies.\n */\n\nvar index = require('./index-of');\n\n/**\n * Whitespace regexp.\n */\n\nvar re = /\\s+/;\n\n/**\n * toString reference.\n */\n\nvar toString = Object.prototype.toString;\n\n/**\n * Wrap `el` in a `ClassList`.\n *\n * @param {Element} el\n * @return {ClassList}\n * @api public\n */\n\nmodule.exports = function(el){\n  return new ClassList(el);\n};\n\n/**\n * Initialize a new ClassList for `el`.\n *\n * @param {Element} el\n * @api private\n */\n\nfunction ClassList(el) {\n  if (!el || !el.nodeType) {\n    throw new Error('A DOM element reference is required');\n  }\n  this.el = el;\n  this.list = el.classList;\n}\n\n/**\n * Add class `name` if not already present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.add = function(name){\n  // classList\n  if (this.list) {\n    this.list.add(name);\n    return this;\n  }\n\n  // fallback\n  var arr = this.array();\n  var i = index(arr, name);\n  if (!~i) arr.push(name);\n  this.el.className = arr.join(' ');\n  return this;\n};\n\n/**\n * Remove class `name` when present, or\n * pass a regular expression to remove\n * any which match.\n *\n * @param {String|RegExp} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.remove = function(name){\n  // classList\n  if (this.list) {\n    this.list.remove(name);\n    return this;\n  }\n\n  // fallback\n  var arr = this.array();\n  var i = index(arr, name);\n  if (~i) arr.splice(i, 1);\n  this.el.className = arr.join(' ');\n  return this;\n};\n\n\n/**\n * Toggle class `name`, can force state via `force`.\n *\n * For browsers that support classList, but do not support `force` yet,\n * the mistake will be detected and corrected.\n *\n * @param {String} name\n * @param {Boolean} force\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.toggle = function(name, force){\n  // classList\n  if (this.list) {\n    if (\"undefined\" !== typeof force) {\n      if (force !== this.list.toggle(name, force)) {\n        this.list.toggle(name); // toggle again to correct\n      }\n    } else {\n      this.list.toggle(name);\n    }\n    return this;\n  }\n\n  // fallback\n  if (\"undefined\" !== typeof force) {\n    if (!force) {\n      this.remove(name);\n    } else {\n      this.add(name);\n    }\n  } else {\n    if (this.has(name)) {\n      this.remove(name);\n    } else {\n      this.add(name);\n    }\n  }\n\n  return this;\n};\n\n/**\n * Return an array of classes.\n *\n * @return {Array}\n * @api public\n */\n\nClassList.prototype.array = function(){\n  var className = this.el.getAttribute('class') || '';\n  var str = className.replace(/^\\s+|\\s+$/g, '');\n  var arr = str.split(re);\n  if ('' === arr[0]) arr.shift();\n  return arr;\n};\n\n/**\n * Check if class `name` is present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.has =\nClassList.prototype.contains = function(name){\n  return this.list ? this.list.contains(name) : !! ~index(this.array(), name);\n};\n","var bind = window.addEventListener ? 'addEventListener' : 'attachEvent',\n    unbind = window.removeEventListener ? 'removeEventListener' : 'detachEvent',\n    prefix = bind !== 'addEventListener' ? 'on' : '',\n    toArray = require('./to-array');\n\n/**\n * Bind `el` event `type` to `fn`.\n *\n * @param {Element} el, NodeList, HTMLCollection or Array\n * @param {String} type\n * @param {Function} fn\n * @param {Boolean} capture\n * @api public\n */\n\nexports.bind = function(el, type, fn, capture){\n  el = toArray(el);\n  for ( var i = 0; i < el.length; i++ ) {\n    el[i][bind](prefix + type, fn, capture || false);\n  }\n};\n\n/**\n * Unbind `el` event `type`'s callback `fn`.\n *\n * @param {Element} el, NodeList, HTMLCollection or Array\n * @param {String} type\n * @param {Function} fn\n * @param {Boolean} capture\n * @api public\n */\n\nexports.unbind = function(el, type, fn, capture){\n  el = toArray(el);\n  for ( var i = 0; i < el.length; i++ ) {\n    el[i][unbind](prefix + type, fn, capture || false);\n  }\n};\n","/*\n * Source: https://github.com/segmentio/extend\n */\n\nmodule.exports = function extend (object) {\n    // Takes an unlimited number of extenders.\n    var args = Array.prototype.slice.call(arguments, 1);\n\n    // For each extender, copy their properties on our object.\n    for (var i = 0, source; source = args[i]; i++) {\n        if (!source) continue;\n        for (var property in source) {\n            object[property] = source[property];\n        }\n    }\n\n    return object;\n};\n","module.exports = function(text, pattern, options) {\n    // Aproximately where in the text is the pattern expected to be found?\n    var Match_Location = options.location || 0;\n\n    //Determines how close the match must be to the fuzzy location (specified above). An exact letter match which is 'distance' characters away from the fuzzy location would score as a complete mismatch. A distance of '0' requires the match be at the exact location specified, a threshold of '1000' would require a perfect match to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n    var Match_Distance = options.distance || 100;\n\n    // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match (of both letters and location), a threshold of '1.0' would match anything.\n    var Match_Threshold = options.threshold || 0.4;\n\n    if (pattern === text) return true; // Exact match\n    if (pattern.length > 32) return false; // This algorithm cannot be used\n\n    // Set starting location at beginning text and initialise the alphabet.\n    var loc = Match_Location,\n        s = (function() {\n            var q = {},\n                i;\n\n            for (i = 0; i < pattern.length; i++) {\n                q[pattern.charAt(i)] = 0;\n            }\n\n            for (i = 0; i < pattern.length; i++) {\n                q[pattern.charAt(i)] |= 1 << (pattern.length - i - 1);\n            }\n\n            return q;\n        }());\n\n    // Compute and return the score for a match with e errors and x location.\n    // Accesses loc and pattern through being a closure.\n\n    function match_bitapScore_(e, x) {\n        var accuracy = e / pattern.length,\n            proximity = Math.abs(loc - x);\n\n        if (!Match_Distance) {\n            // Dodge divide by zero error.\n            return proximity ? 1.0 : accuracy;\n        }\n        return accuracy + (proximity / Match_Distance);\n    }\n\n    var score_threshold = Match_Threshold, // Highest score beyond which we give up.\n        best_loc = text.indexOf(pattern, loc); // Is there a nearby exact match? (speedup)\n\n    if (best_loc != -1) {\n        score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n        // What about in the other direction? (speedup)\n        best_loc = text.lastIndexOf(pattern, loc + pattern.length);\n\n        if (best_loc != -1) {\n            score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n        }\n    }\n\n    // Initialise the bit arrays.\n    var matchmask = 1 << (pattern.length - 1);\n    best_loc = -1;\n\n    var bin_min, bin_mid;\n    var bin_max = pattern.length + text.length;\n    var last_rd;\n    for (var d = 0; d < pattern.length; d++) {\n        // Scan for the best match; each iteration allows for one more error.\n        // Run a binary search to determine how far from 'loc' we can stray at this\n        // error level.\n        bin_min = 0;\n        bin_mid = bin_max;\n        while (bin_min < bin_mid) {\n            if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {\n                bin_min = bin_mid;\n            } else {\n                bin_max = bin_mid;\n            }\n            bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);\n        }\n        // Use the result from this iteration as the maximum for the next.\n        bin_max = bin_mid;\n        var start = Math.max(1, loc - bin_mid + 1);\n        var finish = Math.min(loc + bin_mid, text.length) + pattern.length;\n\n        var rd = Array(finish + 2);\n        rd[finish + 1] = (1 << d) - 1;\n        for (var j = finish; j >= start; j--) {\n            // The alphabet (s) is a sparse hash, so the following line generates\n            // warnings.\n            var charMatch = s[text.charAt(j - 1)];\n            if (d === 0) {    // First pass: exact match.\n                rd[j] = ((rd[j + 1] << 1) | 1) & charMatch;\n            } else {    // Subsequent passes: fuzzy match.\n                rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) |\n                                (((last_rd[j + 1] | last_rd[j]) << 1) | 1) |\n                                last_rd[j + 1];\n            }\n            if (rd[j] & matchmask) {\n                var score = match_bitapScore_(d, j - 1);\n                // This match will almost certainly be better than any existing match.\n                // But check anyway.\n                if (score <= score_threshold) {\n                    // Told you so.\n                    score_threshold = score;\n                    best_loc = j - 1;\n                    if (best_loc > loc) {\n                        // When passing loc, don't exceed our current distance from loc.\n                        start = Math.max(1, 2 * loc - best_loc);\n                    } else {\n                        // Already passed loc, downhill from here on in.\n                        break;\n                    }\n                }\n            }\n        }\n        // No hope for a (better) match at greater error levels.\n        if (match_bitapScore_(d + 1, loc) > score_threshold) {\n            break;\n        }\n        last_rd = rd;\n    }\n\n    return (best_loc < 0) ? false : true;\n};\n","/**\n * A cross-browser implementation of getAttribute.\n * Source found here: http://stackoverflow.com/a/3755343/361337 written by Vivin Paliath\n *\n * Return the value for `attr` at `element`.\n *\n * @param {Element} el\n * @param {String} attr\n * @api public\n */\n\nmodule.exports = function(el, attr) {\n  var result = (el.getAttribute && el.getAttribute(attr)) || null;\n  if( !result ) {\n    var attrs = el.attributes;\n    var length = attrs.length;\n    for(var i = 0; i < length; i++) {\n      if (attr[i] !== undefined) {\n        if(attr[i].nodeName === attr) {\n          result = attr[i].nodeValue;\n        }\n      }\n    }\n  }\n  return result;\n};\n","/**\n * A cross-browser implementation of getElementsByClass.\n * Heavily based on Dustin Diaz's function: http://dustindiaz.com/getelementsbyclass.\n *\n * Find all elements with class `className` inside `container`.\n * Use `single = true` to increase performance in older browsers\n * when only one element is needed.\n *\n * @param {String} className\n * @param {Element} container\n * @param {Boolean} single\n * @api public\n */\n\nvar getElementsByClassName = function(container, className, single) {\n  if (single) {\n    return container.getElementsByClassName(className)[0];\n  } else {\n    return container.getElementsByClassName(className);\n  }\n};\n\nvar querySelector = function(container, className, single) {\n  className = '.' + className;\n  if (single) {\n    return container.querySelector(className);\n  } else {\n    return container.querySelectorAll(className);\n  }\n};\n\nvar polyfill = function(container, className, single) {\n  var classElements = [],\n    tag = '*';\n\n  var els = container.getElementsByTagName(tag);\n  var elsLen = els.length;\n  var pattern = new RegExp(\"(^|\\\\s)\"+className+\"(\\\\s|$)\");\n  for (var i = 0, j = 0; i < elsLen; i++) {\n    if ( pattern.test(els[i].className) ) {\n      if (single) {\n        return els[i];\n      } else {\n        classElements[j] = els[i];\n        j++;\n      }\n    }\n  }\n  return classElements;\n};\n\nmodule.exports = (function() {\n  return function(container, className, single, options) {\n    options = options || {};\n    if ((options.test && options.getElementsByClassName) || (!options.test && document.getElementsByClassName)) {\n      return getElementsByClassName(container, className, single);\n    } else if ((options.test && options.querySelector) || (!options.test && document.querySelector)) {\n      return querySelector(container, className, single);\n    } else {\n      return polyfill(container, className, single);\n    }\n  };\n})();\n","var indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n  if (indexOf) return arr.indexOf(obj);\n  for (var i = 0; i < arr.length; ++i) {\n    if (arr[i] === obj) return i;\n  }\n  return -1;\n};\n","/**\n * Source: https://github.com/timoxley/to-array\n *\n * Convert an array-like object into an `Array`.\n * If `collection` is already an `Array`, then will return a clone of `collection`.\n *\n * @param {Array | Mixed} collection An `Array` or array-like object to convert e.g. `arguments` or `NodeList`\n * @return {Array} Naive conversion of `collection` to a new `Array`.\n * @api public\n */\n\nmodule.exports = function toArray(collection) {\n  if (typeof collection === 'undefined') return [];\n  if (collection === null) return [null];\n  if (collection === window) return [window];\n  if (typeof collection === 'string') return [collection];\n  if (isArray(collection)) return collection;\n  if (typeof collection.length != 'number') return [collection];\n  if (typeof collection === 'function' && collection instanceof Function) return [collection];\n\n  var arr = [];\n  for (var i = 0; i < collection.length; i++) {\n    if (Object.prototype.hasOwnProperty.call(collection, i) || i in collection) {\n      arr.push(collection[i]);\n    }\n  }\n  if (!arr.length) return [];\n  return arr;\n};\n\nfunction isArray(arr) {\n  return Object.prototype.toString.call(arr) === \"[object Array]\";\n}\n","module.exports = function(s) {\n  s = (s === undefined) ? \"\" : s;\n  s = (s === null) ? \"\" : s;\n  s = s.toString();\n  return s;\n};\n","'use strict';\n\nvar alphabet;\nvar alphabetIndexMap;\nvar alphabetIndexMapLength = 0;\n\nfunction isNumberCode(code) {\n  return code >= 48 && code <= 57;\n}\n\nfunction naturalCompare(a, b) {\n  var lengthA = (a += '').length;\n  var lengthB = (b += '').length;\n  var aIndex = 0;\n  var bIndex = 0;\n\n  while (aIndex < lengthA && bIndex < lengthB) {\n    var charCodeA = a.charCodeAt(aIndex);\n    var charCodeB = b.charCodeAt(bIndex);\n\n    if (isNumberCode(charCodeA)) {\n      if (!isNumberCode(charCodeB)) {\n        return charCodeA - charCodeB;\n      }\n\n      var numStartA = aIndex;\n      var numStartB = bIndex;\n\n      while (charCodeA === 48 && ++numStartA < lengthA) {\n        charCodeA = a.charCodeAt(numStartA);\n      }\n      while (charCodeB === 48 && ++numStartB < lengthB) {\n        charCodeB = b.charCodeAt(numStartB);\n      }\n\n      var numEndA = numStartA;\n      var numEndB = numStartB;\n\n      while (numEndA < lengthA && isNumberCode(a.charCodeAt(numEndA))) {\n        ++numEndA;\n      }\n      while (numEndB < lengthB && isNumberCode(b.charCodeAt(numEndB))) {\n        ++numEndB;\n      }\n\n      var difference = numEndA - numStartA - numEndB + numStartB; // numA length - numB length\n      if (difference) {\n        return difference;\n      }\n\n      while (numStartA < numEndA) {\n        difference = a.charCodeAt(numStartA++) - b.charCodeAt(numStartB++);\n        if (difference) {\n          return difference;\n        }\n      }\n\n      aIndex = numEndA;\n      bIndex = numEndB;\n      continue;\n    }\n\n    if (charCodeA !== charCodeB) {\n      if (\n        charCodeA < alphabetIndexMapLength &&\n        charCodeB < alphabetIndexMapLength &&\n        alphabetIndexMap[charCodeA] !== -1 &&\n        alphabetIndexMap[charCodeB] !== -1\n      ) {\n        return alphabetIndexMap[charCodeA] - alphabetIndexMap[charCodeB];\n      }\n\n      return charCodeA - charCodeB;\n    }\n\n    ++aIndex;\n    ++bIndex;\n  }\n\n  if (aIndex >= lengthA && bIndex < lengthB && lengthA >= lengthB) {\n    return -1;\n  }\n\n  if (bIndex >= lengthB && aIndex < lengthA && lengthB >= lengthA) {\n    return 1;\n  }\n\n  return lengthA - lengthB;\n}\n\nnaturalCompare.caseInsensitive = naturalCompare.i = function(a, b) {\n  return naturalCompare(('' + a).toLowerCase(), ('' + b).toLowerCase());\n};\n\nObject.defineProperties(naturalCompare, {\n  alphabet: {\n    get: function() {\n      return alphabet;\n    },\n\n    set: function(value) {\n      alphabet = value;\n      alphabetIndexMap = [];\n\n      var i = 0;\n\n      if (alphabet) {\n        for (; i < alphabet.length; i++) {\n          alphabetIndexMap[alphabet.charCodeAt(i)] = i;\n        }\n      }\n\n      alphabetIndexMapLength = alphabetIndexMap.length;\n\n      for (i = 0; i < alphabetIndexMapLength; i++) {\n        if (alphabetIndexMap[i] === undefined) {\n          alphabetIndexMap[i] = -1;\n        }\n      }\n    },\n  },\n});\n\nmodule.exports = naturalCompare;\n","import { render, staticRenderFns } from \"./Cacheclear.vue?vue&type=template&id=50807fe6&scoped=true&\"\nimport script from \"./Cacheclear.vue?vue&type=script&lang=js&\"\nexport * from \"./Cacheclear.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"50807fe6\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('50807fe6')) {\n      api.createRecord('50807fe6', component.options)\n    } else {\n      api.reload('50807fe6', component.options)\n    }\n    module.hot.accept(\"./Cacheclear.vue?vue&type=template&id=50807fe6&scoped=true&\", function () {\n      api.rerender('50807fe6', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/cacheclear/Cacheclear.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Elements.vue?vue&type=template&id=5d3d150e&scoped=true&\"\nimport script from \"./Elements.vue?vue&type=script&lang=js&\"\nexport * from \"./Elements.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Elements.vue?vue&type=style&index=0&id=5d3d150e&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"5d3d150e\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('5d3d150e')) {\n      api.createRecord('5d3d150e', component.options)\n    } else {\n      api.reload('5d3d150e', component.options)\n    }\n    module.hot.accept(\"./Elements.vue?vue&type=template&id=5d3d150e&scoped=true&\", function () {\n      api.rerender('5d3d150e', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/cacheclear/Elements.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Groups.vue?vue&type=template&id=ef71ab54&scoped=true&\"\nimport script from \"./Groups.vue?vue&type=script&lang=js&\"\nexport * from \"./Groups.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Groups.vue?vue&type=style&index=0&id=ef71ab54&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"ef71ab54\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('ef71ab54')) {\n      api.createRecord('ef71ab54', component.options)\n    } else {\n      api.reload('ef71ab54', component.options)\n    }\n    module.hot.accept(\"./Groups.vue?vue&type=template&id=ef71ab54&scoped=true&\", function () {\n      api.rerender('ef71ab54', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/cacheclear/Groups.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./ErrorPanel.vue?vue&type=template&id=462fe1f3&scoped=true&\"\nimport script from \"./ErrorPanel.vue?vue&type=script&lang=js&\"\nexport * from \"./ErrorPanel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ErrorPanel.vue?vue&type=style&index=0&id=462fe1f3&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"462fe1f3\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('462fe1f3')) {\n      api.createRecord('462fe1f3', component.options)\n    } else {\n      api.reload('462fe1f3', component.options)\n    }\n    module.hot.accept(\"./ErrorPanel.vue?vue&type=template&id=462fe1f3&scoped=true&\", function () {\n      api.rerender('462fe1f3', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/components/ErrorPanel.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Folder.vue?vue&type=template&id=1ec29ff6&scoped=true&\"\nimport script from \"./Folder.vue?vue&type=script&lang=js&\"\nexport * from \"./Folder.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Folder.vue?vue&type=style&index=0&id=1ec29ff6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1ec29ff6\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('1ec29ff6')) {\n      api.createRecord('1ec29ff6', component.options)\n    } else {\n      api.reload('1ec29ff6', component.options)\n    }\n    module.hot.accept(\"./Folder.vue?vue&type=template&id=1ec29ff6&scoped=true&\", function () {\n      api.rerender('1ec29ff6', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/components/Folder.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Folders.vue?vue&type=template&id=26e2f1be&scoped=true&\"\nimport script from \"./Folders.vue?vue&type=script&lang=js&\"\nexport * from \"./Folders.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Folders.vue?vue&type=style&index=0&id=26e2f1be&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"26e2f1be\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('26e2f1be')) {\n      api.createRecord('26e2f1be', component.options)\n    } else {\n      api.reload('26e2f1be', component.options)\n    }\n    module.hot.accept(\"./Folders.vue?vue&type=template&id=26e2f1be&scoped=true&\", function () {\n      api.rerender('26e2f1be', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/components/Folders.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./ProcessSteps.vue?vue&type=template&id=269a1562&scoped=true&\"\nimport script from \"./ProcessSteps.vue?vue&type=script&lang=js&\"\nexport * from \"./ProcessSteps.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProcessSteps.vue?vue&type=style&index=0&id=269a1562&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"269a1562\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('269a1562')) {\n      api.createRecord('269a1562', component.options)\n    } else {\n      api.reload('269a1562', component.options)\n    }\n    module.hot.accept(\"./ProcessSteps.vue?vue&type=template&id=269a1562&scoped=true&\", function () {\n      api.rerender('269a1562', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/components/ProcessSteps.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Progress.vue?vue&type=template&id=15a54af8&scoped=true&\"\nimport script from \"./Progress.vue?vue&type=script&lang=js&\"\nexport * from \"./Progress.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Progress.vue?vue&type=style&index=0&id=15a54af8&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"15a54af8\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('15a54af8')) {\n      api.createRecord('15a54af8', component.options)\n    } else {\n      api.reload('15a54af8', component.options)\n    }\n    module.hot.accept(\"./Progress.vue?vue&type=template&id=15a54af8&scoped=true&\", function () {\n      api.rerender('15a54af8', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/components/Progress.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Filesync.vue?vue&type=template&id=c4440ce6&scoped=true&\"\nimport script from \"./Filesync.vue?vue&type=script&lang=js&\"\nexport * from \"./Filesync.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"c4440ce6\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('c4440ce6')) {\n      api.createRecord('c4440ce6', component.options)\n    } else {\n      api.reload('c4440ce6', component.options)\n    }\n    module.hot.accept(\"./Filesync.vue?vue&type=template&id=c4440ce6&scoped=true&\", function () {\n      api.rerender('c4440ce6', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/filesync/Filesync.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./ImageContentPluginForm.vue?vue&type=template&id=4c7c98ed&\"\nimport script from \"./ImageContentPluginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageContentPluginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ImageContentPluginForm.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('4c7c98ed')) {\n      api.createRecord('4c7c98ed', component.options)\n    } else {\n      api.reload('4c7c98ed', component.options)\n    }\n    module.hot.accept(\"./ImageContentPluginForm.vue?vue&type=template&id=4c7c98ed&\", function () {\n      api.rerender('4c7c98ed', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/imagecontentpluginform/ImageContentPluginForm.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./ImageSelector.vue?vue&type=template&id=f64e921c&scoped=true&\"\nimport script from \"./ImageSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageSelector.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ImageSelector.vue?vue&type=style&index=0&id=f64e921c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"f64e921c\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('f64e921c')) {\n      api.createRecord('f64e921c', component.options)\n    } else {\n      api.reload('f64e921c', component.options)\n    }\n    module.hot.accept(\"./ImageSelector.vue?vue&type=template&id=f64e921c&scoped=true&\", function () {\n      api.rerender('f64e921c', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/imagecontentpluginform/ImageSelector.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Input.vue?vue&type=template&id=622b6062&\"\nimport script from \"./Input.vue?vue&type=script&lang=js&\"\nexport * from \"./Input.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('622b6062')) {\n      api.createRecord('622b6062', component.options)\n    } else {\n      api.reload('622b6062', component.options)\n    }\n    module.hot.accept(\"./Input.vue?vue&type=template&id=622b6062&\", function () {\n      api.rerender('622b6062', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/imagecontentpluginform/Input.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Label.vue?vue&type=template&id=4f983ae8&scoped=true&\"\nimport script from \"./Label.vue?vue&type=script&lang=js&\"\nexport * from \"./Label.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Label.vue?vue&type=style&index=0&id=4f983ae8&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4f983ae8\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('4f983ae8')) {\n      api.createRecord('4f983ae8', component.options)\n    } else {\n      api.reload('4f983ae8', component.options)\n    }\n    module.hot.accept(\"./Label.vue?vue&type=template&id=4f983ae8&scoped=true&\", function () {\n      api.rerender('4f983ae8', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/imagecontentpluginform/Label.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Radio.vue?vue&type=template&id=7acec7da&\"\nimport script from \"./Radio.vue?vue&type=script&lang=js&\"\nexport * from \"./Radio.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('7acec7da')) {\n      api.createRecord('7acec7da', component.options)\n    } else {\n      api.reload('7acec7da', component.options)\n    }\n    module.hot.accept(\"./Radio.vue?vue&type=template&id=7acec7da&\", function () {\n      api.rerender('7acec7da', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/imagecontentpluginform/Radio.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Select.vue?vue&type=template&id=30861e94&\"\nimport script from \"./Select.vue?vue&type=script&lang=js&\"\nexport * from \"./Select.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('30861e94')) {\n      api.createRecord('30861e94', component.options)\n    } else {\n      api.reload('30861e94', component.options)\n    }\n    module.hot.accept(\"./Select.vue?vue&type=template&id=30861e94&\", function () {\n      api.rerender('30861e94', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/imagecontentpluginform/Select.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Scalepriceeditor.vue?vue&type=template&id=eacbcba6&scoped=true&\"\nimport script from \"./Scalepriceeditor.vue?vue&type=script&lang=js&\"\nexport * from \"./Scalepriceeditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Scalepriceeditor.vue?vue&type=style&index=0&id=eacbcba6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"eacbcba6\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('eacbcba6')) {\n      api.createRecord('eacbcba6', component.options)\n    } else {\n      api.reload('eacbcba6', component.options)\n    }\n    module.hot.accept(\"./Scalepriceeditor.vue?vue&type=template&id=eacbcba6&scoped=true&\", function () {\n      api.rerender('eacbcba6', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/scalepriceeditor/Scalepriceeditor.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Thumbnailcreator.vue?vue&type=template&id=9fc9a6a6&scoped=true&\"\nimport script from \"./Thumbnailcreator.vue?vue&type=script&lang=js&\"\nexport * from \"./Thumbnailcreator.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"9fc9a6a6\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('9fc9a6a6')) {\n      api.createRecord('9fc9a6a6', component.options)\n    } else {\n      api.reload('9fc9a6a6', component.options)\n    }\n    module.hot.accept(\"./Thumbnailcreator.vue?vue&type=template&id=9fc9a6a6&scoped=true&\", function () {\n      api.rerender('9fc9a6a6', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/thumbnailcreator/Thumbnailcreator.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Uploader.vue?vue&type=template&id=3d2e0926&scoped=true&\"\nimport script from \"./Uploader.vue?vue&type=script&lang=js&\"\nexport * from \"./Uploader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Uploader.vue?vue&type=style&index=0&id=3d2e0926&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3d2e0926\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/var/www/eventgallery/build/tmpBuildDir/components/com_eventgallery/media/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('3d2e0926')) {\n      api.createRecord('3d2e0926', component.options)\n    } else {\n      api.reload('3d2e0926', component.options)\n    }\n    module.hot.accept(\"./Uploader.vue?vue&type=template&id=3d2e0926&scoped=true&\", function () {\n      api.rerender('3d2e0926', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"backend/vue/uploader/Uploader.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cacheclear.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!./Cacheclear.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Elements.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!./Elements.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Groups.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!./Groups.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorPanel.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!./ErrorPanel.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Folder.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!./Folder.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Folders.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!./Folders.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessSteps.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!./ProcessSteps.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Progress.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!./Progress.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Filesync.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!./Filesync.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageContentPluginForm.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!./ImageContentPluginForm.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageSelector.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!./ImageSelector.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Input.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!./Input.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Label.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!./Label.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Radio.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!./Radio.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Select.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!./Select.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Scalepriceeditor.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!./Scalepriceeditor.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Thumbnailcreator.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!./Thumbnailcreator.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Uploader.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!./Uploader.vue?vue&type=script&lang=js&\"","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"Cacheclear\" } },\n    [\n      _c(\"div\", [\n        _vm._v(_vm._s(_vm.i18n.t(\"COM_EVENTGALLERY_CLEAR_CACHE_START_DESC\")))\n      ]),\n      _vm._v(\" \"),\n      _c(\"div\", { staticClass: \"control-group\" }, [\n        _c(\"div\", { staticClass: \"controls\" }, [\n          _c(\"div\", { staticClass: \"btn-group sync-buttons\" }, [\n            _c(\n              \"button\",\n              {\n                staticClass: \"btn btn-light checkall\",\n                on: { click: _vm.checkAll }\n              },\n              [\n                _vm._v(\n                  _vm._s(_vm.i18n.t(\"COM_EVENTGALLERY_CLEAR_CACHE_CHECK_ALL\"))\n                )\n              ]\n            ),\n            _vm._v(\" \"),\n            _c(\n              \"button\",\n              { staticClass: \"btn btn-light\", on: { click: _vm.uncheckAll } },\n              [\n                _vm._v(\n                  _vm._s(_vm.i18n.t(\"COM_EVENTGALLERY_CLEAR_CACHE_CHECK_NONE\"))\n                )\n              ]\n            ),\n            _vm._v(\" \"),\n            _c(\n              \"button\",\n              {\n                staticClass: \"btn btn-warning\",\n                attrs: { disabled: !_vm.running },\n                on: { click: _vm.stopQueue }\n              },\n              [\n                _vm._v(\n                  _vm._s(_vm.i18n.t(\"COM_EVENTGALLERY_CLEAR_CACHE_STOP_QUEUE\"))\n                )\n              ]\n            ),\n            _vm._v(\" \"),\n            _c(\n              \"button\",\n              {\n                staticClass: \"btn btn-danger\",\n                attrs: {\n                  disabled: _vm.running || !_vm.isReadyForCacheDeletion\n                },\n                on: { click: _vm.clearCache }\n              },\n              [_vm._v(_vm._s(_vm.i18n.t(\"COM_EVENTGALLERY_CLEAR_CACHE_START\")))]\n            )\n          ])\n        ])\n      ]),\n      _vm._v(\" \"),\n      _vm.numberOfTasks > 0\n        ? _c(\"Progress\", {\n            attrs: {\n              remaining: _vm.numberOfTasks,\n              total: _vm.numberOfLastQueuePush\n            }\n          })\n        : _vm._e(),\n      _vm._v(\" \"),\n      _c(\"Groups\", {\n        attrs: {\n          groups: _vm.groups,\n          elements: _vm.elements,\n          blocked: _vm.running\n        }\n      })\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _vm.sortedElements.length > 0\n    ? _c(\"div\", [\n        _c(\"h2\", [_vm._v(_vm._s(_vm.group.displayname))]),\n        _vm._v(\" \"),\n        _c(\n          \"ul\",\n          { staticClass: \"elements\" },\n          [\n            _vm._l(_vm.sortedElements, function(element) {\n              return [\n                _c(\n                  \"li\",\n                  {\n                    key: element.value,\n                    on: {\n                      click: function($event) {\n                        element.checked = !element.checked\n                      }\n                    }\n                  },\n                  [\n                    _c(\"div\", { staticClass: \"checkbox\" }, [\n                      _c(\"input\", {\n                        directives: [\n                          {\n                            name: \"model\",\n                            rawName: \"v-model\",\n                            value: element.checked,\n                            expression: \"element.checked\"\n                          }\n                        ],\n                        attrs: { type: \"checkbox\" },\n                        domProps: {\n                          checked: Array.isArray(element.checked)\n                            ? _vm._i(element.checked, null) > -1\n                            : element.checked\n                        },\n                        on: {\n                          change: function($event) {\n                            var $$a = element.checked,\n                              $$el = $event.target,\n                              $$c = $$el.checked ? true : false\n                            if (Array.isArray($$a)) {\n                              var $$v = null,\n                                $$i = _vm._i($$a, $$v)\n                              if ($$el.checked) {\n                                $$i < 0 &&\n                                  _vm.$set(\n                                    element,\n                                    \"checked\",\n                                    $$a.concat([$$v])\n                                  )\n                              } else {\n                                $$i > -1 &&\n                                  _vm.$set(\n                                    element,\n                                    \"checked\",\n                                    $$a.slice(0, $$i).concat($$a.slice($$i + 1))\n                                  )\n                              }\n                            } else {\n                              _vm.$set(element, \"checked\", $$c)\n                            }\n                          }\n                        }\n                      })\n                    ]),\n                    _vm._v(\" \"),\n                    _c(\"div\", { staticClass: \"description\" }, [\n                      _vm._v(\"\\n                \" + _vm._s(element.name) + \" \"),\n                      _c(\"span\", { staticClass: \"filecount\" }, [\n                        _vm._v(\n                          \"(\" +\n                            _vm._s(element.count) +\n                            \" / \" +\n                            _vm._s(element.size) +\n                            \")\"\n                        )\n                      ])\n                    ])\n                  ]\n                )\n              ]\n            })\n          ],\n          2\n        )\n      ])\n    : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"groups\", class: { blocked: _vm.blocked } },\n    _vm._l(_vm.groups, function(group) {\n      return _c(\"Elements\", {\n        key: group.value,\n        attrs: { group: group, elements: _vm.elements }\n      })\n    }),\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _vm.errorMessages.length > 0 || _vm.failedFolders.length > 0\n    ? _c(\n        \"div\",\n        { attrs: { id: \"errorMessages\" } },\n        [\n          _c(\"h2\", [_vm._v(_vm._s(_vm.headline))]),\n          _vm._v(\" \"),\n          _vm.errorMessages.length > 0\n            ? _c(\n                \"pre\",\n                [\n                  _vm._l(_vm.reversedErrorMessages, function(message) {\n                    return [_vm._v(_vm._s(message))]\n                  })\n                ],\n                2\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm._l(_vm.failedFolders, function(failedFolder) {\n            return _c(\"div\", [\n              _vm._v(\"\\n        \" + _vm._s(failedFolder.error) + \"\\n    \")\n            ])\n          })\n        ],\n        2\n      )\n    : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"li\",\n    {\n      style: { backgroundColor: _vm.backgroundColor },\n      on: {\n        click: function($event) {\n          _vm.folder.checked = !_vm.folder.checked\n        }\n      }\n    },\n    [\n      _c(\"div\", [\n        _c(\"input\", {\n          directives: [\n            {\n              name: \"model\",\n              rawName: \"v-model\",\n              value: _vm.folder.checked,\n              expression: \"folder.checked\"\n            }\n          ],\n          attrs: { type: \"checkbox\" },\n          domProps: {\n            checked: Array.isArray(_vm.folder.checked)\n              ? _vm._i(_vm.folder.checked, null) > -1\n              : _vm.folder.checked\n          },\n          on: {\n            change: function($event) {\n              var $$a = _vm.folder.checked,\n                $$el = $event.target,\n                $$c = $$el.checked ? true : false\n              if (Array.isArray($$a)) {\n                var $$v = null,\n                  $$i = _vm._i($$a, $$v)\n                if ($$el.checked) {\n                  $$i < 0 && _vm.$set(_vm.folder, \"checked\", $$a.concat([$$v]))\n                } else {\n                  $$i > -1 &&\n                    _vm.$set(\n                      _vm.folder,\n                      \"checked\",\n                      $$a.slice(0, $$i).concat($$a.slice($$i + 1))\n                    )\n                }\n              } else {\n                _vm.$set(_vm.folder, \"checked\", $$c)\n              }\n            }\n          }\n        })\n      ]),\n      _vm._v(\" \"),\n      _c(\"div\", { staticClass: \"description\" }, [\n        _c(\"div\", [_vm._v(_vm._s(_vm.folder.foldername))]),\n        _vm._v(\" \"),\n        _c(\"div\", [_c(\"strong\", [_vm._v(_vm._s(_vm.status))])]),\n        _vm._v(\" \"),\n        _vm.folder.files\n          ? _c(\"div\", { staticClass: \"filecount\" }, [\n              _vm._v(\n                \"(\" +\n                  _vm._s(_vm.numberOfFilesLeft) +\n                  \" / \" +\n                  _vm._s(_vm.folder.files.length) +\n                  \" \" +\n                  _vm._s(_vm.i18n_labelNeedSync) +\n                  \")\"\n              )\n            ])\n          : _vm._e()\n      ])\n    ]\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"ul\",\n    { staticClass: \"folders\", class: { blocked: _vm.blocked } },\n    _vm._l(_vm.sortedFolders, function(folder) {\n      return _c(\"folder\", {\n        key: folder.foldername,\n        attrs: {\n          folder: folder,\n          \"i18n_label-need-sync\": _vm.i18n_labelNeedSync\n        }\n      })\n    }),\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { staticClass: \"container\" }, [\n    _c(\"ul\", { staticClass: \"progressbar\" }, [\n      _c(\"li\", { class: { active: true } }, [\n        _c(\"span\", { staticClass: \"title\" }, [\n          _vm._v(_vm._s(_vm.i18n_labelStep1))\n        ])\n      ]),\n      _vm._v(\" \"),\n      _c(\"li\", { class: { active: _vm.numberOfSelectedFolders > 0 } }, [\n        _c(\"span\", { staticClass: \"title\" }, [\n          _vm._v(_vm._s(_vm.i18n_labelStep2))\n        ]),\n        _vm._v(\" \"),\n        _vm.numberOfSelectedFolders === 0\n          ? _c(\"span\", [_vm._v(_vm._s(_vm.i18n_hintStep2))])\n          : _vm._e(),\n        _vm._v(\" \"),\n        _c(\n          \"button\",\n          {\n            staticClass: \"btn btn-primary sync-folders\",\n            attrs: {\n              disabled: _vm.running || _vm.numberOfSelectedFolders === 0\n            },\n            on: {\n              click: function($event) {\n                return _vm.$emit(\"sync-folders\")\n              }\n            }\n          },\n          [\n            _vm._v(\n              _vm._s(_vm.i18n_labelButtonStep2) +\n                \" (\" +\n                _vm._s(_vm.numberOfSelectedFolders) +\n                \" \" +\n                _vm._s(_vm.i18n_labelItemsStep2) +\n                \")\"\n            )\n          ]\n        )\n      ]),\n      _vm._v(\" \"),\n      _c(\"li\", { class: { active: _vm.isReadyForSyncFiles > 0 } }, [\n        _c(\"span\", { staticClass: \"title\" }, [\n          _vm._v(_vm._s(_vm.i18n_labelStep3))\n        ]),\n        _vm._v(\" \"),\n        _vm.isReadyForSyncFiles\n          ? _c(\"span\", [_vm._v(_vm._s(_vm.i18n_hintStep3))])\n          : _vm._e(),\n        _vm._v(\" \"),\n        _c(\n          \"button\",\n          {\n            staticClass: \"btn btn-primary sync-files\",\n            attrs: { disabled: _vm.running || !_vm.isReadyForSyncFiles },\n            on: {\n              click: function($event) {\n                return _vm.$emit(\"sync-files\")\n              }\n            }\n          },\n          [\n            _vm._v(\n              _vm._s(_vm.i18n_labelButtonStep3) +\n                \" (\" +\n                _vm._s(_vm.numberOfSelectedFiles) +\n                \" \" +\n                _vm._s(_vm.i18n_labelItemsStep3) +\n                \")\"\n            )\n          ]\n        )\n      ])\n    ])\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { staticClass: \"eg-progressbar\" }, [\n    _c(\n      \"div\",\n      {\n        staticClass: \"eg-progressbar-state\",\n        style: { width: _vm.progress + \"%\" }\n      },\n      [_vm.remaining > 0 ? void 0 : _vm._e()],\n      2\n    )\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"Filesync\" } },\n    [\n      _c(\"ErrorPanel\", {\n        attrs: {\n          \"error-messages\": _vm.errorMessages,\n          \"failed-folders\": _vm.failedFolders,\n          headline: _vm.i18n.t(\"COM_EVENTGALLERY_SYNC_ERROR_HEADLINE\")\n        }\n      }),\n      _vm._v(\" \"),\n      _c(\"ProcessSteps\", {\n        attrs: {\n          i18n: _vm.i18n,\n          \"number-of-selected-files\": _vm.numberOfSyncableFiles,\n          \"number-of-selected-folders\": _vm.selectedFolders.length,\n          \"is-ready-for-sync-files\": _vm.isSyncFilesProcessReadyToStart,\n          running: _vm.running,\n          \"i18n_label-step1\": _vm.i18n.t(\"COM_EVENTGALLERY_SYNC_STEP1\"),\n          \"i18n_label-step2\": _vm.i18n.t(\"COM_EVENTGALLERY_SYNC_STEP2\"),\n          \"i18n_label-items-step2\": _vm.i18n.t(\n            \"COM_EVENTGALLERY_SYNC_STEP2_ITEMS\"\n          ),\n          \"i18n_label-step3\": _vm.i18n.t(\"COM_EVENTGALLERY_SYNC_STEP3\"),\n          \"i18n_label-items-step3\": _vm.i18n.t(\n            \"COM_EVENTGALLERY_SYNC_STEP3_ITEMS\"\n          ),\n          \"i18n_hint-step2\": _vm.i18n.t(\"COM_EVENTGALLERY_SYNC_STEP2_HINT\"),\n          \"i18n_hint-step3\": _vm.i18n.t(\"COM_EVENTGALLERY_SYNC_STEP3_HINT\"),\n          \"i18n_label-button-step2\": _vm.i18n.t(\n            \"COM_EVENTGALLERY_SYNC_STEP2_BUTTON_LABEL\"\n          ),\n          \"i18n_label-button-step3\": _vm.i18n.t(\n            \"COM_EVENTGALLERY_SYNC_STEP3_BUTTON_LABEL\"\n          )\n        },\n        on: { \"sync-files\": _vm.syncFiles, \"sync-folders\": _vm.syncFolders }\n      }),\n      _vm._v(\" \"),\n      _c(\"div\", { staticClass: \"control-group\" }, [\n        _c(\"div\", { staticClass: \"controls\" }, [\n          _c(\"div\", { staticClass: \"btn-group sync-buttons\" }, [\n            _c(\n              \"button\",\n              {\n                staticClass: \"btn btn-light checkall\",\n                on: { click: _vm.checkAll }\n              },\n              [_vm._v(_vm._s(_vm.i18n.t(\"COM_EVENTGALLERY_SYNC_CHECK_ALL\")))]\n            ),\n            _vm._v(\" \"),\n            _c(\n              \"button\",\n              { staticClass: \"btn btn-light\", on: { click: _vm.uncheckAll } },\n              [_vm._v(_vm._s(_vm.i18n.t(\"COM_EVENTGALLERY_SYNC_CHECK_NONE\")))]\n            ),\n            _vm._v(\" \"),\n            _c(\n              \"button\",\n              {\n                staticClass: \"btn btn-warning\",\n                attrs: { disabled: !_vm.running },\n                on: { click: _vm.stopQueue }\n              },\n              [_vm._v(_vm._s(_vm.i18n.t(\"COM_EVENTGALLERY_SYNC_STOP_QUEUE\")))]\n            )\n          ])\n        ])\n      ]),\n      _vm._v(\" \"),\n      _vm.numberOfTasks > 0\n        ? _c(\"Progress\", {\n            attrs: {\n              remaining: _vm.numberOfTasks,\n              total: _vm.numberOfLastQueuePush\n            }\n          })\n        : _vm._e(),\n      _vm._v(\" \"),\n      _c(\"Folders\", {\n        attrs: {\n          folders: _vm.folders,\n          blocked: _vm.running,\n          \"i18n_label-need-sync\": _vm.i18n.t(\n            \"COM_EVENTGALLERY_SYNC_OPEN_IMAGES_NEEDS_SYNC\"\n          )\n        }\n      })\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", [\n    _c(\"form\", [\n      _c(\n        \"div\",\n        { staticClass: \"adminform form-horizontal\" },\n        [\n          _vm._l(_vm.formDefinition.form.fieldset.field, function(field) {\n            return [\n              field.type === \"text\"\n                ? _c(\"Input\", {\n                    attrs: {\n                      name: field.name,\n                      label: field.label,\n                      description: field.description,\n                      \"default-value\": field.default\n                    },\n                    model: {\n                      value: _vm.data[field.name],\n                      callback: function($$v) {\n                        _vm.$set(_vm.data, field.name, $$v)\n                      },\n                      expression: \"data[field.name]\"\n                    }\n                  })\n                : field.type === \"list\"\n                ? _c(\"Select\", {\n                    attrs: {\n                      name: field.name,\n                      label: field.label,\n                      description: field.description,\n                      options: field.option,\n                      \"default-value\": field.default\n                    },\n                    model: {\n                      value: _vm.data[field.name],\n                      callback: function($$v) {\n                        _vm.$set(_vm.data, field.name, $$v)\n                      },\n                      expression: \"data[field.name]\"\n                    }\n                  })\n                : field.type === \"radio\"\n                ? _c(\"Radio\", {\n                    attrs: {\n                      name: field.name,\n                      label: field.label,\n                      description: field.description,\n                      options: field.option,\n                      \"default-value\": field.default\n                    },\n                    model: {\n                      value: _vm.data[field.name],\n                      callback: function($$v) {\n                        _vm.$set(_vm.data, field.name, $$v)\n                      },\n                      expression: \"data[field.name]\"\n                    }\n                  })\n                : field.type === \"imageselector\"\n                ? _c(\"ImageSelector\", {\n                    attrs: {\n                      \"load-folders-url\": _vm.loadFoldersUrl,\n                      \"load-files-url\": _vm.loadFilesUrl,\n                      name: field.name,\n                      label: field.label,\n                      description: field.description\n                    },\n                    model: {\n                      value: _vm.data.image,\n                      callback: function($$v) {\n                        _vm.$set(_vm.data, \"image\", $$v)\n                      },\n                      expression: \"data.image\"\n                    }\n                  })\n                : _c(\"div\", [\n                    _vm._v(\"Unsupported form element \" + _vm._s(field))\n                  ])\n            ]\n          })\n        ],\n        2\n      ),\n      _vm._v(\" \"),\n      _c(\"div\", { attrs: { id: \"imagetagfield\" } }, [\n        _vm._v(_vm._s(_vm.tagContent))\n      ]),\n      _vm._v(\" \"),\n      _c(\n        \"button\",\n        {\n          staticClass: \"pull-right btn btn-primary\",\n          on: { click: _vm.insertImageContentTag }\n        },\n        [\n          _vm._v(\n            _vm._s(\n              _vm.i18n.t(\"COM_EVENTGALLERY_CONTENTPLUGINBUTTON_BUTTON_INSERT\")\n            )\n          )\n        ]\n      )\n    ])\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", [\n    _c(\n      \"div\",\n      {\n        directives: [\n          {\n            name: \"show\",\n            rawName: \"v-show\",\n            value: !_vm.showImageSelectorState,\n            expression: \"!showImageSelectorState\"\n          }\n        ]\n      },\n      [\n        _c(\"div\", { staticClass: \"control-group\" }, [\n          _c(\n            \"div\",\n            { staticClass: \"control-label\" },\n            [\n              _c(\"Label\", {\n                attrs: { description: _vm.description, label: _vm.label }\n              })\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _c(\"div\", { staticClass: \"controls\" }, [\n            _c(\n              \"p\",\n              {\n                directives: [\n                  {\n                    name: \"show\",\n                    rawName: \"v-show\",\n                    value: _vm.value.thumb,\n                    expression: \"value.thumb\"\n                  }\n                ]\n              },\n              [\n                _c(\"img\", {\n                  staticStyle: { \"max-height\": \"150px\" },\n                  attrs: { src: _vm.value.thumb }\n                })\n              ]\n            ),\n            _vm._v(\" \"),\n            _c(\n              \"button\",\n              {\n                staticClass: \"btn btn-secondary\",\n                on: {\n                  click: function($event) {\n                    $event.preventDefault()\n                    return _vm.showImageSelector($event)\n                  }\n                }\n              },\n              [_vm._v(_vm._s(_vm.label))]\n            )\n          ])\n        ])\n      ]\n    ),\n    _vm._v(\" \"),\n    _c(\n      \"div\",\n      {\n        directives: [\n          {\n            name: \"show\",\n            rawName: \"v-show\",\n            value: _vm.showImageSelectorState,\n            expression: \"showImageSelectorState\"\n          }\n        ],\n        staticClass: \"fullscreenOverlay\"\n      },\n      [\n        _c(\"div\", { staticClass: \"overlay-content\" }, [\n          _c(\"div\", { staticClass: \"ImageSelector\" }, [\n            _c(\"div\", { staticClass: \"folders\" }, [\n              _c(\n                \"button\",\n                {\n                  on: {\n                    click: function($event) {\n                      $event.preventDefault()\n                      return _vm.hideImageSelector($event)\n                    }\n                  }\n                },\n                [_vm._v(\"<<\")]\n              ),\n              _vm._v(\" \"),\n              _c(\"input\", {\n                directives: [\n                  {\n                    name: \"model\",\n                    rawName: \"v-model\",\n                    value: _vm.folderFilter,\n                    expression: \"folderFilter\"\n                  }\n                ],\n                attrs: { type: \"text\" },\n                domProps: { value: _vm.folderFilter },\n                on: {\n                  input: function($event) {\n                    if ($event.target.composing) {\n                      return\n                    }\n                    _vm.folderFilter = $event.target.value\n                  }\n                }\n              }),\n              _vm._v(\" \"),\n              _c(\n                \"ul\",\n                _vm._l(_vm.filteredFolders, function(myFolder) {\n                  return _c(\n                    \"li\",\n                    {\n                      key: myFolder.folder,\n                      class: { active: myFolder.folder === _vm.folder },\n                      on: {\n                        click: function($event) {\n                          return _vm.loadFiles(myFolder.folder)\n                        }\n                      }\n                    },\n                    [_vm._v(_vm._s(myFolder.name))]\n                  )\n                }),\n                0\n              )\n            ]),\n            _vm._v(\" \"),\n            _c(\"div\", { staticClass: \"files\" }, [\n              _c(\n                \"div\",\n                {\n                  directives: [\n                    {\n                      name: \"show\",\n                      rawName: \"v-show\",\n                      value: _vm.isLoading,\n                      expression: \"isLoading\"\n                    }\n                  ]\n                },\n                [_c(\"div\", { staticClass: \"lds-dual-ring\" })]\n              ),\n              _vm._v(\" \"),\n              _c(\n                \"ul\",\n                {\n                  directives: [\n                    {\n                      name: \"show\",\n                      rawName: \"v-show\",\n                      value: !_vm.isLoading,\n                      expression: \"!isLoading\"\n                    }\n                  ]\n                },\n                _vm._l(_vm.files, function(file) {\n                  return _c(\n                    \"li\",\n                    {\n                      key: file.id,\n                      on: {\n                        click: function($event) {\n                          return _vm.setImage(file)\n                        }\n                      }\n                    },\n                    [\n                      _c(\"label\", [_vm._v(_vm._s(file.file))]),\n                      _vm._v(\" \"),\n                      _c(\"img\", { attrs: { src: file.thumb } })\n                    ]\n                  )\n                }),\n                0\n              )\n            ])\n          ])\n        ])\n      ]\n    )\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { staticClass: \"control-group\" }, [\n    _c(\n      \"div\",\n      { staticClass: \"control-label\" },\n      [\n        _c(\"Label\", {\n          attrs: { description: _vm.description, label: _vm.label }\n        })\n      ],\n      1\n    ),\n    _vm._v(\" \"),\n    _c(\"div\", { staticClass: \"controls\" }, [\n      _c(\"input\", {\n        staticClass: \"form-control\",\n        attrs: { name: _vm.name },\n        domProps: { value: _vm.value },\n        on: {\n          input: function($event) {\n            return _vm.$emit(\"input\", $event.target.value)\n          }\n        }\n      })\n    ])\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"label\", { staticClass: \"eg-tooltip\" }, [\n    _c(\"span\", { staticClass: \"eg-tooltiptext eg-tooltip-right\" }, [\n      _vm._v(_vm._s(_vm.description))\n    ]),\n    _vm._v(_vm._s(_vm.label))\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { staticClass: \"control-group\" }, [\n    _c(\n      \"div\",\n      { staticClass: \"control-label\" },\n      [\n        _c(\"Label\", {\n          attrs: { description: _vm.description, label: _vm.label }\n        })\n      ],\n      1\n    ),\n    _vm._v(\" \"),\n    _c(\n      \"div\",\n      { staticClass: \"controls\" },\n      _vm._l(_vm.options, function(item) {\n        return _c(\"div\", { staticClass: \"form-check\" }, [\n          _c(\"input\", {\n            directives: [\n              {\n                name: \"model\",\n                rawName: \"v-model\",\n                value: _vm.value,\n                expression: \"value\"\n              }\n            ],\n            key: item.Id,\n            staticClass: \"pull-left form-check-input\",\n            attrs: {\n              type: \"radio\",\n              id: item.name + item.value,\n              selected: _vm.value === item.value\n            },\n            domProps: {\n              value: item.value,\n              checked: _vm._q(_vm.value, item.value)\n            },\n            on: {\n              input: function($event) {\n                return _vm.$emit(\"input\", $event.target.value)\n              },\n              change: function($event) {\n                _vm.value = item.value\n              }\n            }\n          }),\n          _vm._v(\" \"),\n          _c(\n            \"label\",\n            {\n              staticClass: \"radio form-check-label\",\n              attrs: { for: item.name + item.value }\n            },\n            [\n              _vm._v(\n                \"\\n                \" + _vm._s(item.text) + \"\\n            \"\n              )\n            ]\n          )\n        ])\n      }),\n      0\n    )\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { staticClass: \"control-group\" }, [\n    _c(\n      \"div\",\n      { staticClass: \"control-label\" },\n      [\n        _c(\"Label\", {\n          attrs: { description: _vm.description, label: _vm.label }\n        })\n      ],\n      1\n    ),\n    _vm._v(\" \"),\n    _c(\"div\", { staticClass: \"controls\" }, [\n      _c(\n        \"select\",\n        {\n          directives: [\n            {\n              name: \"model\",\n              rawName: \"v-model\",\n              value: _vm.currentOption,\n              expression: \"currentOption\"\n            }\n          ],\n          staticClass: \"form-control\",\n          on: {\n            input: function($event) {\n              return _vm.$emit(\"input\", $event.target.value)\n            },\n            change: function($event) {\n              var $$selectedVal = Array.prototype.filter\n                .call($event.target.options, function(o) {\n                  return o.selected\n                })\n                .map(function(o) {\n                  var val = \"_value\" in o ? o._value : o.value\n                  return val\n                })\n              _vm.currentOption = $event.target.multiple\n                ? $$selectedVal\n                : $$selectedVal[0]\n            }\n          }\n        },\n        _vm._l(_vm.options, function(item) {\n          return _c(\n            \"option\",\n            {\n              key: item.value,\n              domProps: {\n                value: item.value,\n                selected: _vm.value === item.value\n              }\n            },\n            [_vm._v(_vm._s(item.text))]\n          )\n        }),\n        0\n      )\n    ])\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", [\n    _c(\"input\", {\n      attrs: { type: \"hidden\", name: _vm.inputName, id: _vm.inputId },\n      domProps: { value: _vm.currentInputValue }\n    }),\n    _vm._v(\" \"),\n    _c(\"div\", { staticClass: \"input-append\" }, [\n      _c(\"span\", { staticClass: \"add-on\" }, [_vm._v(\"Quantity\")]),\n      _c(\"input\", {\n        directives: [\n          {\n            name: \"model\",\n            rawName: \"v-model\",\n            value: _vm.newQuantity,\n            expression: \"newQuantity\"\n          }\n        ],\n        staticClass: \"form-control\",\n        attrs: { type: \"number\", min: \"2\" },\n        domProps: { value: _vm.newQuantity },\n        on: {\n          input: function($event) {\n            if ($event.target.composing) {\n              return\n            }\n            _vm.newQuantity = $event.target.value\n          }\n        }\n      }),\n      _vm._v(\" \"),\n      _c(\"span\", { staticClass: \"add-on\" }, [_vm._v(\"Price\")]),\n      _c(\"input\", {\n        directives: [\n          {\n            name: \"model\",\n            rawName: \"v-model\",\n            value: _vm.newPrice,\n            expression: \"newPrice\"\n          }\n        ],\n        staticClass: \"form-control\",\n        attrs: { type: \"text\" },\n        domProps: { value: _vm.newPrice },\n        on: {\n          input: function($event) {\n            if ($event.target.composing) {\n              return\n            }\n            _vm.newPrice = $event.target.value\n          }\n        }\n      }),\n      _vm._v(\" \"),\n      _c(\n        \"button\",\n        {\n          staticClass: \"btn btn-success\",\n          on: {\n            click: function($event) {\n              $event.preventDefault()\n              return _vm.addScalePrice($event)\n            }\n          }\n        },\n        [_vm._v(\"+\")]\n      )\n    ]),\n    _vm._v(\" \"),\n    _c(\n      \"table\",\n      [\n        _vm._m(0),\n        _vm._v(\" \"),\n        _vm._l(_vm.sortedScalePrices, function(scalePrice) {\n          return _c(\"tr\", { key: scalePrice.id }, [\n            _c(\"td\", [_vm._v(_vm._s(scalePrice.quantity))]),\n            _vm._v(\" \"),\n            _c(\"td\", [_vm._v(_vm._s(scalePrice.price))]),\n            _vm._v(\" \"),\n            _c(\"td\", { staticClass: \"action\" }, [\n              _c(\n                \"button\",\n                {\n                  staticClass: \"btn btn-danger\",\n                  on: {\n                    click: function($event) {\n                      $event.preventDefault()\n                      return _vm.deleteQuantity(scalePrice.quantity)\n                    }\n                  }\n                },\n                [_vm._v(\"-\")]\n              )\n            ])\n          ])\n        })\n      ],\n      2\n    )\n  ])\n}\nvar staticRenderFns = [\n  function() {\n    var _vm = this\n    var _h = _vm.$createElement\n    var _c = _vm._self._c || _h\n    return _c(\"tr\", [\n      _c(\"th\", [_vm._v(\"Quantity\")]),\n      _vm._v(\" \"),\n      _c(\"th\", [_vm._v(\"Price\")]),\n      _vm._v(\" \"),\n      _c(\"th\", [_vm._v(\" \")])\n    ])\n  }\n]\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"Thumbnailcreator\" } },\n    [\n      _c(\"p\", { staticClass: \"well\" }, [\n        _c(\"span\", {\n          domProps: {\n            innerHTML: _vm._s(\n              _vm.i18n.t(\"COM_EVENTGALLERY_THUMBNAILGENERATOR_START2_DESC\")\n            )\n          }\n        }),\n        _vm._v(\" \"),\n        _c(\"br\"),\n        _c(\"br\"),\n        _vm._v(\" \"),\n        _c(\"label\", { staticClass: \"checkbox\" }, [\n          _c(\"input\", {\n            directives: [\n              {\n                name: \"model\",\n                rawName: \"v-model\",\n                value: _vm.refreshetags,\n                expression: \"refreshetags\"\n              }\n            ],\n            attrs: { type: \"checkbox\" },\n            domProps: {\n              checked: Array.isArray(_vm.refreshetags)\n                ? _vm._i(_vm.refreshetags, null) > -1\n                : _vm.refreshetags\n            },\n            on: {\n              change: function($event) {\n                var $$a = _vm.refreshetags,\n                  $$el = $event.target,\n                  $$c = $$el.checked ? true : false\n                if (Array.isArray($$a)) {\n                  var $$v = null,\n                    $$i = _vm._i($$a, $$v)\n                  if ($$el.checked) {\n                    $$i < 0 && (_vm.refreshetags = $$a.concat([$$v]))\n                  } else {\n                    $$i > -1 &&\n                      (_vm.refreshetags = $$a\n                        .slice(0, $$i)\n                        .concat($$a.slice($$i + 1)))\n                  }\n                } else {\n                  _vm.refreshetags = $$c\n                }\n              }\n            }\n          }),\n          _vm._v(\n            \"  \" +\n              _vm._s(\n                _vm.i18n.t(\n                  \"COM_EVENTGALLERY_THUMBNAILGENERATOR_REFRESHETAGS_DESC\"\n                )\n              ) +\n              \"\\n        \"\n          )\n        ])\n      ]),\n      _vm._v(\" \"),\n      _c(\"ErrorPanel\", {\n        attrs: {\n          \"error-messages\": _vm.errorMessages,\n          \"failed-folders\": _vm.failedFolders,\n          headline: _vm.i18n.t(\"COM_EVENTGALLERY_SYNC_ERROR_HEADLINE\")\n        }\n      }),\n      _vm._v(\" \"),\n      _c(\"ProcessSteps\", {\n        attrs: {\n          i18n: _vm.i18n,\n          \"number-of-selected-files\": _vm.numberOfSyncableFiles,\n          \"number-of-selected-folders\": _vm.selectedFolders.length,\n          \"is-ready-for-sync-files\": _vm.isSyncFilesProcessReadyToStart,\n          running: _vm.running,\n          \"i18n_label-step1\": _vm.i18n.t(\"COM_EVENTGALLERY_SYNC_STEP1\"),\n          \"i18n_label-step2\": _vm.i18n.t(\n            \"COM_EVENTGALLERY_THUMBNAILGENERATOR_GETMISSINGTHUMBNAILS\"\n          ),\n          \"i18n_label-step3\": _vm.i18n.t(\n            \"COM_EVENTGALLERY_THUMBNAILGENERATOR_START_THUMBNAILCREATION\"\n          ),\n          \"i18n_hint-step2\": _vm.i18n.t(\"\"),\n          \"i18n_hint-step3\": _vm.i18n.t(\"\"),\n          \"i18n_label-button-step2\": _vm.i18n.t(\n            \"COM_EVENTGALLERY_THUMBNAILGENERATOR_START\"\n          ),\n          \"i18n_label-button-step3\": _vm.i18n.t(\n            \"COM_EVENTGALLERY_THUMBNAILGENERATOR_START\"\n          ),\n          \"i18n_label-items-step2\": _vm.i18n.t(\n            \"COM_EVENTGALLERY_THUMBNAILGENERATOR_STEP2_ITEMS\"\n          ),\n          \"i18n_label-items-step3\": _vm.i18n.t(\n            \"COM_EVENTGALLERY_THUMBNAILGENERATOR_STEP3_ITEMS\"\n          )\n        },\n        on: { \"sync-files\": _vm.syncFiles, \"sync-folders\": _vm.syncFolders }\n      }),\n      _vm._v(\" \"),\n      _c(\"div\", { staticClass: \"control-group\" }, [\n        _c(\"div\", { staticClass: \"controls\" }, [\n          _c(\"div\", { staticClass: \"btn-group sync-buttons\" }, [\n            _c(\n              \"button\",\n              {\n                staticClass: \"btn btn-light checkall\",\n                on: { click: _vm.checkAll }\n              },\n              [_vm._v(_vm._s(_vm.i18n.t(\"COM_EVENTGALLERY_SYNC_CHECK_ALL\")))]\n            ),\n            _vm._v(\" \"),\n            _c(\n              \"button\",\n              { staticClass: \"btn btn-light\", on: { click: _vm.uncheckAll } },\n              [_vm._v(_vm._s(_vm.i18n.t(\"COM_EVENTGALLERY_SYNC_CHECK_NONE\")))]\n            ),\n            _vm._v(\" \"),\n            _c(\n              \"button\",\n              {\n                staticClass: \"btn btn-warning\",\n                attrs: { disabled: !_vm.running },\n                on: { click: _vm.stopQueue }\n              },\n              [_vm._v(_vm._s(_vm.i18n.t(\"COM_EVENTGALLERY_SYNC_STOP_QUEUE\")))]\n            )\n          ])\n        ])\n      ]),\n      _vm._v(\" \"),\n      _vm.numberOfTasks > 0\n        ? _c(\"Progress\", {\n            attrs: {\n              remaining: _vm.numberOfTasks,\n              total: _vm.numberOfLastQueuePush\n            }\n          })\n        : _vm._e(),\n      _vm._v(\" \"),\n      _c(\"Folders\", {\n        attrs: {\n          folders: _vm.folders,\n          blocked: _vm.running,\n          \"i18n_label-need-sync\": _vm.i18n.t(\n            \"COM_EVENTGALLERY_THUMBNAILGENERATOR_OPEN_IMAGES_NEEDS_SYNC\"\n          )\n        }\n      })\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { staticClass: \"Uploader\" }, [\n    _c(\"label\", { attrs: { for: \"fileselect\" } }, [\n      _vm._v(\n        _vm._s(_vm.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_FILES_TO_UPLOAD) + \":\"\n      )\n    ]),\n    _vm._v(\" \"),\n    _c(\"input\", {\n      attrs: { id: \"fileselect\", type: \"file\", multiple: \"multiple\" },\n      on: { change: _vm.addFiles }\n    }),\n    _vm._v(\" \"),\n    _vm.pendingFiles.length + _vm.inProgressFiles.length > 0\n      ? _c(\"div\", { staticClass: \"eg-progressbar\" }, [\n          _c(\"div\", {\n            staticClass: \"eg-progressbar-state\",\n            style: { width: _vm.progress + \"%\" }\n          })\n        ])\n      : _vm._e(),\n    _vm._v(\" \"),\n    _c(\"div\", { staticClass: \"eg-bo-row\" }, [\n      _vm.pendingFiles.length > 0\n        ? _c(\"div\", { staticClass: \"eg-bo-column3\" }, [\n            _c(\"h2\", [\n              _vm._v(_vm._s(_vm.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_PENDING))\n            ]),\n            _vm._v(\" \"),\n            _c(\n              \"ul\",\n              { attrs: { id: \"pending\" } },\n              _vm._l(_vm.revertedPendingFiles, function(pendingFile) {\n                return _c(\"li\", [\n                  _vm._v(\n                    \"\\n                    \" +\n                      _vm._s(pendingFile.name) +\n                      \"\\n                \"\n                  )\n                ])\n              }),\n              0\n            )\n          ])\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm.finishedFilesContent.length > 0 ||\n      _vm.inProgressFiles.length > 0 ||\n      _vm.failedFilesContent.length > 0\n        ? _c(\"div\", { staticClass: \"eg-bo-column9\" }, [\n            _c(\"h2\", [\n              _vm._v(_vm._s(_vm.i18n.COM_EVENTGALLERY_EVENT_UPLOAD_FINISHED))\n            ]),\n            _vm._v(\" \"),\n            _c(\n              \"ul\",\n              {\n                staticClass: \"eg-bo-row\",\n                staticStyle: { \"flex-wrap\": \"wrap\" },\n                attrs: { id: \"finished\" }\n              },\n              [\n                _vm._l(_vm.inProgressFiles, function(inProgressFile) {\n                  return _c(\"li\", { staticClass: \"eg-bo-column3\" }, [\n                    _c(\"div\", [_vm._v(_vm._s(inProgressFile.name))]),\n                    _vm._v(\" \"),\n                    _vm._m(0, true)\n                  ])\n                }),\n                _vm._v(\" \"),\n                _vm._l(_vm.failedFilesContent, function(failedFileContent) {\n                  return _c(\"li\", {\n                    key: failedFileContent.id,\n                    staticClass: \"eg-bo-column3\",\n                    domProps: { innerHTML: _vm._s(failedFileContent.content) }\n                  })\n                }),\n                _vm._v(\" \"),\n                _vm._l(_vm.revertedFinishedFilesContent, function(\n                  finishedFileContent\n                ) {\n                  return _c(\"li\", {\n                    key: finishedFileContent.id,\n                    staticClass: \"eg-bo-column3\",\n                    domProps: { innerHTML: _vm._s(finishedFileContent.content) }\n                  })\n                })\n              ],\n              2\n            )\n          ])\n        : _vm._e()\n    ])\n  ])\n}\nvar staticRenderFns = [\n  function() {\n    var _vm = this\n    var _h = _vm.$createElement\n    var _c = _vm._self._c || _h\n    return _c(\"div\", { staticClass: \"lds-ring\" }, [\n      _c(\"div\"),\n      _c(\"div\"),\n      _c(\"div\"),\n      _c(\"div\")\n    ])\n  }\n]\nrender._withStripped = true\n\nexport { render, staticRenderFns }","/* 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","/*!\n * Vue.js v2.6.12\n * (c) 2014-2020 Evan You\n * Released under the MIT License.\n */\n/*  */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n  return v === undefined || v === null\n}\n\nfunction isDef (v) {\n  return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n  return v === true\n}\n\nfunction isFalse (v) {\n  return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n  return (\n    typeof value === 'string' ||\n    typeof value === 'number' ||\n    // $flow-disable-line\n    typeof value === 'symbol' ||\n    typeof value === 'boolean'\n  )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n  return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n  return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n  return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n  var n = parseFloat(String(val));\n  return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n  return (\n    isDef(val) &&\n    typeof val.then === 'function' &&\n    typeof val.catch === 'function'\n  )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n  return val == null\n    ? ''\n    : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n      ? JSON.stringify(val, null, 2)\n      : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n  var n = parseFloat(val);\n  return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n  str,\n  expectsLowerCase\n) {\n  var map = Object.create(null);\n  var list = str.split(',');\n  for (var i = 0; i < list.length; i++) {\n    map[list[i]] = true;\n  }\n  return expectsLowerCase\n    ? function (val) { return map[val.toLowerCase()]; }\n    : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n  if (arr.length) {\n    var index = arr.indexOf(item);\n    if (index > -1) {\n      return arr.splice(index, 1)\n    }\n  }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n  return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n  var cache = Object.create(null);\n  return (function cachedFn (str) {\n    var hit = cache[str];\n    return hit || (cache[str] = fn(str))\n  })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n  return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n  return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n  return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n  function boundFn (a) {\n    var l = arguments.length;\n    return l\n      ? l > 1\n        ? fn.apply(ctx, arguments)\n        : fn.call(ctx, a)\n      : fn.call(ctx)\n  }\n\n  boundFn._length = fn.length;\n  return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n  return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n  ? nativeBind\n  : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n  start = start || 0;\n  var i = list.length - start;\n  var ret = new Array(i);\n  while (i--) {\n    ret[i] = list[i + start];\n  }\n  return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n  for (var key in _from) {\n    to[key] = _from[key];\n  }\n  return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n  var res = {};\n  for (var i = 0; i < arr.length; i++) {\n    if (arr[i]) {\n      extend(res, arr[i]);\n    }\n  }\n  return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n  if (a === b) { return true }\n  var isObjectA = isObject(a);\n  var isObjectB = isObject(b);\n  if (isObjectA && isObjectB) {\n    try {\n      var isArrayA = Array.isArray(a);\n      var isArrayB = Array.isArray(b);\n      if (isArrayA && isArrayB) {\n        return a.length === b.length && a.every(function (e, i) {\n          return looseEqual(e, b[i])\n        })\n      } else if (a instanceof Date && b instanceof Date) {\n        return a.getTime() === b.getTime()\n      } else if (!isArrayA && !isArrayB) {\n        var keysA = Object.keys(a);\n        var keysB = Object.keys(b);\n        return keysA.length === keysB.length && keysA.every(function (key) {\n          return looseEqual(a[key], b[key])\n        })\n      } else {\n        /* istanbul ignore next */\n        return false\n      }\n    } catch (e) {\n      /* istanbul ignore next */\n      return false\n    }\n  } else if (!isObjectA && !isObjectB) {\n    return String(a) === String(b)\n  } else {\n    return false\n  }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n  for (var i = 0; i < arr.length; i++) {\n    if (looseEqual(arr[i], val)) { return i }\n  }\n  return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n  var called = false;\n  return function () {\n    if (!called) {\n      called = true;\n      fn.apply(this, arguments);\n    }\n  }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n  'component',\n  'directive',\n  'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n  'beforeCreate',\n  'created',\n  'beforeMount',\n  'mounted',\n  'beforeUpdate',\n  'updated',\n  'beforeDestroy',\n  'destroyed',\n  'activated',\n  'deactivated',\n  'errorCaptured',\n  'serverPrefetch'\n];\n\n/*  */\n\n\n\nvar config = ({\n  /**\n   * Option merge strategies (used in core/util/options)\n   */\n  // $flow-disable-line\n  optionMergeStrategies: Object.create(null),\n\n  /**\n   * Whether to suppress warnings.\n   */\n  silent: false,\n\n  /**\n   * Show production mode tip message on boot?\n   */\n  productionTip: process.env.NODE_ENV !== 'production',\n\n  /**\n   * Whether to enable devtools\n   */\n  devtools: process.env.NODE_ENV !== 'production',\n\n  /**\n   * Whether to record perf\n   */\n  performance: false,\n\n  /**\n   * Error handler for watcher errors\n   */\n  errorHandler: null,\n\n  /**\n   * Warn handler for watcher warns\n   */\n  warnHandler: null,\n\n  /**\n   * Ignore certain custom elements\n   */\n  ignoredElements: [],\n\n  /**\n   * Custom user key aliases for v-on\n   */\n  // $flow-disable-line\n  keyCodes: Object.create(null),\n\n  /**\n   * Check if a tag is reserved so that it cannot be registered as a\n   * component. This is platform-dependent and may be overwritten.\n   */\n  isReservedTag: no,\n\n  /**\n   * Check if an attribute is reserved so that it cannot be used as a component\n   * prop. This is platform-dependent and may be overwritten.\n   */\n  isReservedAttr: no,\n\n  /**\n   * Check if a tag is an unknown element.\n   * Platform-dependent.\n   */\n  isUnknownElement: no,\n\n  /**\n   * Get the namespace of an element\n   */\n  getTagNamespace: noop,\n\n  /**\n   * Parse the real tag name for the specific platform.\n   */\n  parsePlatformTagName: identity,\n\n  /**\n   * Check if an attribute must be bound using property, e.g. value\n   * Platform-dependent.\n   */\n  mustUseProp: no,\n\n  /**\n   * Perform updates asynchronously. Intended to be used by Vue Test Utils\n   * This will significantly reduce performance if set to false.\n   */\n  async: true,\n\n  /**\n   * Exposed for legacy reasons\n   */\n  _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/*  */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n  var c = (str + '').charCodeAt(0);\n  return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n  Object.defineProperty(obj, key, {\n    value: val,\n    enumerable: !!enumerable,\n    writable: true,\n    configurable: true\n  });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n  if (bailRE.test(path)) {\n    return\n  }\n  var segments = path.split('.');\n  return function (obj) {\n    for (var i = 0; i < segments.length; i++) {\n      if (!obj) { return }\n      obj = obj[segments[i]];\n    }\n    return obj\n  }\n}\n\n/*  */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n  try {\n    var opts = {};\n    Object.defineProperty(opts, 'passive', ({\n      get: function get () {\n        /* istanbul ignore next */\n        supportsPassive = true;\n      }\n    })); // https://github.com/facebook/flow/issues/285\n    window.addEventListener('test-passive', null, opts);\n  } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n  if (_isServer === undefined) {\n    /* istanbul ignore if */\n    if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n      // detect presence of vue-server-renderer and avoid\n      // Webpack shimming the process\n      _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n    } else {\n      _isServer = false;\n    }\n  }\n  return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n  return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n  typeof Symbol !== 'undefined' && isNative(Symbol) &&\n  typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n  // use native Set when available.\n  _Set = Set;\n} else {\n  // a non-standard Set polyfill that only works with primitive keys.\n  _Set = /*@__PURE__*/(function () {\n    function Set () {\n      this.set = Object.create(null);\n    }\n    Set.prototype.has = function has (key) {\n      return this.set[key] === true\n    };\n    Set.prototype.add = function add (key) {\n      this.set[key] = true;\n    };\n    Set.prototype.clear = function clear () {\n      this.set = Object.create(null);\n    };\n\n    return Set;\n  }());\n}\n\n/*  */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n  var hasConsole = typeof console !== 'undefined';\n  var classifyRE = /(?:^|[-_])(\\w)/g;\n  var classify = function (str) { return str\n    .replace(classifyRE, function (c) { return c.toUpperCase(); })\n    .replace(/[-_]/g, ''); };\n\n  warn = function (msg, vm) {\n    var trace = vm ? generateComponentTrace(vm) : '';\n\n    if (config.warnHandler) {\n      config.warnHandler.call(null, msg, vm, trace);\n    } else if (hasConsole && (!config.silent)) {\n      console.error((\"[Vue warn]: \" + msg + trace));\n    }\n  };\n\n  tip = function (msg, vm) {\n    if (hasConsole && (!config.silent)) {\n      console.warn(\"[Vue tip]: \" + msg + (\n        vm ? generateComponentTrace(vm) : ''\n      ));\n    }\n  };\n\n  formatComponentName = function (vm, includeFile) {\n    if (vm.$root === vm) {\n      return '<Root>'\n    }\n    var options = typeof vm === 'function' && vm.cid != null\n      ? vm.options\n      : vm._isVue\n        ? vm.$options || vm.constructor.options\n        : vm;\n    var name = options.name || options._componentTag;\n    var file = options.__file;\n    if (!name && file) {\n      var match = file.match(/([^/\\\\]+)\\.vue$/);\n      name = match && match[1];\n    }\n\n    return (\n      (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n      (file && includeFile !== false ? (\" at \" + file) : '')\n    )\n  };\n\n  var repeat = function (str, n) {\n    var res = '';\n    while (n) {\n      if (n % 2 === 1) { res += str; }\n      if (n > 1) { str += str; }\n      n >>= 1;\n    }\n    return res\n  };\n\n  generateComponentTrace = function (vm) {\n    if (vm._isVue && vm.$parent) {\n      var tree = [];\n      var currentRecursiveSequence = 0;\n      while (vm) {\n        if (tree.length > 0) {\n          var last = tree[tree.length - 1];\n          if (last.constructor === vm.constructor) {\n            currentRecursiveSequence++;\n            vm = vm.$parent;\n            continue\n          } else if (currentRecursiveSequence > 0) {\n            tree[tree.length - 1] = [last, currentRecursiveSequence];\n            currentRecursiveSequence = 0;\n          }\n        }\n        tree.push(vm);\n        vm = vm.$parent;\n      }\n      return '\\n\\nfound in\\n\\n' + tree\n        .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n            ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n            : formatComponentName(vm))); })\n        .join('\\n')\n    } else {\n      return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n    }\n  };\n}\n\n/*  */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n  this.id = uid++;\n  this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n  this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n  remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n  if (Dep.target) {\n    Dep.target.addDep(this);\n  }\n};\n\nDep.prototype.notify = function notify () {\n  // stabilize the subscriber list first\n  var subs = this.subs.slice();\n  if (process.env.NODE_ENV !== 'production' && !config.async) {\n    // subs aren't sorted in scheduler if not running async\n    // we need to sort them now to make sure they fire in correct\n    // order\n    subs.sort(function (a, b) { return a.id - b.id; });\n  }\n  for (var i = 0, l = subs.length; i < l; i++) {\n    subs[i].update();\n  }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n  targetStack.push(target);\n  Dep.target = target;\n}\n\nfunction popTarget () {\n  targetStack.pop();\n  Dep.target = targetStack[targetStack.length - 1];\n}\n\n/*  */\n\nvar VNode = function VNode (\n  tag,\n  data,\n  children,\n  text,\n  elm,\n  context,\n  componentOptions,\n  asyncFactory\n) {\n  this.tag = tag;\n  this.data = data;\n  this.children = children;\n  this.text = text;\n  this.elm = elm;\n  this.ns = undefined;\n  this.context = context;\n  this.fnContext = undefined;\n  this.fnOptions = undefined;\n  this.fnScopeId = undefined;\n  this.key = data && data.key;\n  this.componentOptions = componentOptions;\n  this.componentInstance = undefined;\n  this.parent = undefined;\n  this.raw = false;\n  this.isStatic = false;\n  this.isRootInsert = true;\n  this.isComment = false;\n  this.isCloned = false;\n  this.isOnce = false;\n  this.asyncFactory = asyncFactory;\n  this.asyncMeta = undefined;\n  this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n  return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n  if ( text === void 0 ) text = '';\n\n  var node = new VNode();\n  node.text = text;\n  node.isComment = true;\n  return node\n};\n\nfunction createTextVNode (val) {\n  return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n  var cloned = new VNode(\n    vnode.tag,\n    vnode.data,\n    // #7975\n    // clone children array to avoid mutating original in case of cloning\n    // a child.\n    vnode.children && vnode.children.slice(),\n    vnode.text,\n    vnode.elm,\n    vnode.context,\n    vnode.componentOptions,\n    vnode.asyncFactory\n  );\n  cloned.ns = vnode.ns;\n  cloned.isStatic = vnode.isStatic;\n  cloned.key = vnode.key;\n  cloned.isComment = vnode.isComment;\n  cloned.fnContext = vnode.fnContext;\n  cloned.fnOptions = vnode.fnOptions;\n  cloned.fnScopeId = vnode.fnScopeId;\n  cloned.asyncMeta = vnode.asyncMeta;\n  cloned.isCloned = true;\n  return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n  'push',\n  'pop',\n  'shift',\n  'unshift',\n  'splice',\n  'sort',\n  'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n  // cache original method\n  var original = arrayProto[method];\n  def(arrayMethods, method, function mutator () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var result = original.apply(this, args);\n    var ob = this.__ob__;\n    var inserted;\n    switch (method) {\n      case 'push':\n      case 'unshift':\n        inserted = args;\n        break\n      case 'splice':\n        inserted = args.slice(2);\n        break\n    }\n    if (inserted) { ob.observeArray(inserted); }\n    // notify change\n    ob.dep.notify();\n    return result\n  });\n});\n\n/*  */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n  shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n  this.value = value;\n  this.dep = new Dep();\n  this.vmCount = 0;\n  def(value, '__ob__', this);\n  if (Array.isArray(value)) {\n    if (hasProto) {\n      protoAugment(value, arrayMethods);\n    } else {\n      copyAugment(value, arrayMethods, arrayKeys);\n    }\n    this.observeArray(value);\n  } else {\n    this.walk(value);\n  }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n  var keys = Object.keys(obj);\n  for (var i = 0; i < keys.length; i++) {\n    defineReactive$$1(obj, keys[i]);\n  }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n  for (var i = 0, l = items.length; i < l; i++) {\n    observe(items[i]);\n  }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n  /* eslint-disable no-proto */\n  target.__proto__ = src;\n  /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n  for (var i = 0, l = keys.length; i < l; i++) {\n    var key = keys[i];\n    def(target, key, src[key]);\n  }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n  if (!isObject(value) || value instanceof VNode) {\n    return\n  }\n  var ob;\n  if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n    ob = value.__ob__;\n  } else if (\n    shouldObserve &&\n    !isServerRendering() &&\n    (Array.isArray(value) || isPlainObject(value)) &&\n    Object.isExtensible(value) &&\n    !value._isVue\n  ) {\n    ob = new Observer(value);\n  }\n  if (asRootData && ob) {\n    ob.vmCount++;\n  }\n  return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n  obj,\n  key,\n  val,\n  customSetter,\n  shallow\n) {\n  var dep = new Dep();\n\n  var property = Object.getOwnPropertyDescriptor(obj, key);\n  if (property && property.configurable === false) {\n    return\n  }\n\n  // cater for pre-defined getter/setters\n  var getter = property && property.get;\n  var setter = property && property.set;\n  if ((!getter || setter) && arguments.length === 2) {\n    val = obj[key];\n  }\n\n  var childOb = !shallow && observe(val);\n  Object.defineProperty(obj, key, {\n    enumerable: true,\n    configurable: true,\n    get: function reactiveGetter () {\n      var value = getter ? getter.call(obj) : val;\n      if (Dep.target) {\n        dep.depend();\n        if (childOb) {\n          childOb.dep.depend();\n          if (Array.isArray(value)) {\n            dependArray(value);\n          }\n        }\n      }\n      return value\n    },\n    set: function reactiveSetter (newVal) {\n      var value = getter ? getter.call(obj) : val;\n      /* eslint-disable no-self-compare */\n      if (newVal === value || (newVal !== newVal && value !== value)) {\n        return\n      }\n      /* eslint-enable no-self-compare */\n      if (process.env.NODE_ENV !== 'production' && customSetter) {\n        customSetter();\n      }\n      // #7981: for accessor properties without setter\n      if (getter && !setter) { return }\n      if (setter) {\n        setter.call(obj, newVal);\n      } else {\n        val = newVal;\n      }\n      childOb = !shallow && observe(newVal);\n      dep.notify();\n    }\n  });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n  if (process.env.NODE_ENV !== 'production' &&\n    (isUndef(target) || isPrimitive(target))\n  ) {\n    warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n  }\n  if (Array.isArray(target) && isValidArrayIndex(key)) {\n    target.length = Math.max(target.length, key);\n    target.splice(key, 1, val);\n    return val\n  }\n  if (key in target && !(key in Object.prototype)) {\n    target[key] = val;\n    return val\n  }\n  var ob = (target).__ob__;\n  if (target._isVue || (ob && ob.vmCount)) {\n    process.env.NODE_ENV !== 'production' && warn(\n      'Avoid adding reactive properties to a Vue instance or its root $data ' +\n      'at runtime - declare it upfront in the data option.'\n    );\n    return val\n  }\n  if (!ob) {\n    target[key] = val;\n    return val\n  }\n  defineReactive$$1(ob.value, key, val);\n  ob.dep.notify();\n  return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n  if (process.env.NODE_ENV !== 'production' &&\n    (isUndef(target) || isPrimitive(target))\n  ) {\n    warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n  }\n  if (Array.isArray(target) && isValidArrayIndex(key)) {\n    target.splice(key, 1);\n    return\n  }\n  var ob = (target).__ob__;\n  if (target._isVue || (ob && ob.vmCount)) {\n    process.env.NODE_ENV !== 'production' && warn(\n      'Avoid deleting properties on a Vue instance or its root $data ' +\n      '- just set it to null.'\n    );\n    return\n  }\n  if (!hasOwn(target, key)) {\n    return\n  }\n  delete target[key];\n  if (!ob) {\n    return\n  }\n  ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n  for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n    e = value[i];\n    e && e.__ob__ && e.__ob__.dep.depend();\n    if (Array.isArray(e)) {\n      dependArray(e);\n    }\n  }\n}\n\n/*  */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n  strats.el = strats.propsData = function (parent, child, vm, key) {\n    if (!vm) {\n      warn(\n        \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n        'creation with the `new` keyword.'\n      );\n    }\n    return defaultStrat(parent, child)\n  };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n  if (!from) { return to }\n  var key, toVal, fromVal;\n\n  var keys = hasSymbol\n    ? Reflect.ownKeys(from)\n    : Object.keys(from);\n\n  for (var i = 0; i < keys.length; i++) {\n    key = keys[i];\n    // in case the object is already observed...\n    if (key === '__ob__') { continue }\n    toVal = to[key];\n    fromVal = from[key];\n    if (!hasOwn(to, key)) {\n      set(to, key, fromVal);\n    } else if (\n      toVal !== fromVal &&\n      isPlainObject(toVal) &&\n      isPlainObject(fromVal)\n    ) {\n      mergeData(toVal, fromVal);\n    }\n  }\n  return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n  parentVal,\n  childVal,\n  vm\n) {\n  if (!vm) {\n    // in a Vue.extend merge, both should be functions\n    if (!childVal) {\n      return parentVal\n    }\n    if (!parentVal) {\n      return childVal\n    }\n    // when parentVal & childVal are both present,\n    // we need to return a function that returns the\n    // merged result of both functions... no need to\n    // check if parentVal is a function here because\n    // it has to be a function to pass previous merges.\n    return function mergedDataFn () {\n      return mergeData(\n        typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n        typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n      )\n    }\n  } else {\n    return function mergedInstanceDataFn () {\n      // instance merge\n      var instanceData = typeof childVal === 'function'\n        ? childVal.call(vm, vm)\n        : childVal;\n      var defaultData = typeof parentVal === 'function'\n        ? parentVal.call(vm, vm)\n        : parentVal;\n      if (instanceData) {\n        return mergeData(instanceData, defaultData)\n      } else {\n        return defaultData\n      }\n    }\n  }\n}\n\nstrats.data = function (\n  parentVal,\n  childVal,\n  vm\n) {\n  if (!vm) {\n    if (childVal && typeof childVal !== 'function') {\n      process.env.NODE_ENV !== 'production' && warn(\n        'The \"data\" option should be a function ' +\n        'that returns a per-instance value in component ' +\n        'definitions.',\n        vm\n      );\n\n      return parentVal\n    }\n    return mergeDataOrFn(parentVal, childVal)\n  }\n\n  return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n  parentVal,\n  childVal\n) {\n  var res = childVal\n    ? parentVal\n      ? parentVal.concat(childVal)\n      : Array.isArray(childVal)\n        ? childVal\n        : [childVal]\n    : parentVal;\n  return res\n    ? dedupeHooks(res)\n    : res\n}\n\nfunction dedupeHooks (hooks) {\n  var res = [];\n  for (var i = 0; i < hooks.length; i++) {\n    if (res.indexOf(hooks[i]) === -1) {\n      res.push(hooks[i]);\n    }\n  }\n  return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n  strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n  parentVal,\n  childVal,\n  vm,\n  key\n) {\n  var res = Object.create(parentVal || null);\n  if (childVal) {\n    process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n    return extend(res, childVal)\n  } else {\n    return res\n  }\n}\n\nASSET_TYPES.forEach(function (type) {\n  strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n  parentVal,\n  childVal,\n  vm,\n  key\n) {\n  // work around Firefox's Object.prototype.watch...\n  if (parentVal === nativeWatch) { parentVal = undefined; }\n  if (childVal === nativeWatch) { childVal = undefined; }\n  /* istanbul ignore if */\n  if (!childVal) { return Object.create(parentVal || null) }\n  if (process.env.NODE_ENV !== 'production') {\n    assertObjectType(key, childVal, vm);\n  }\n  if (!parentVal) { return childVal }\n  var ret = {};\n  extend(ret, parentVal);\n  for (var key$1 in childVal) {\n    var parent = ret[key$1];\n    var child = childVal[key$1];\n    if (parent && !Array.isArray(parent)) {\n      parent = [parent];\n    }\n    ret[key$1] = parent\n      ? parent.concat(child)\n      : Array.isArray(child) ? child : [child];\n  }\n  return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n  parentVal,\n  childVal,\n  vm,\n  key\n) {\n  if (childVal && process.env.NODE_ENV !== 'production') {\n    assertObjectType(key, childVal, vm);\n  }\n  if (!parentVal) { return childVal }\n  var ret = Object.create(null);\n  extend(ret, parentVal);\n  if (childVal) { extend(ret, childVal); }\n  return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n  return childVal === undefined\n    ? parentVal\n    : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n  for (var key in options.components) {\n    validateComponentName(key);\n  }\n}\n\nfunction validateComponentName (name) {\n  if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n    warn(\n      'Invalid component name: \"' + name + '\". Component names ' +\n      'should conform to valid custom element name in html5 specification.'\n    );\n  }\n  if (isBuiltInTag(name) || config.isReservedTag(name)) {\n    warn(\n      'Do not use built-in or reserved HTML elements as component ' +\n      'id: ' + name\n    );\n  }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n  var props = options.props;\n  if (!props) { return }\n  var res = {};\n  var i, val, name;\n  if (Array.isArray(props)) {\n    i = props.length;\n    while (i--) {\n      val = props[i];\n      if (typeof val === 'string') {\n        name = camelize(val);\n        res[name] = { type: null };\n      } else if (process.env.NODE_ENV !== 'production') {\n        warn('props must be strings when using array syntax.');\n      }\n    }\n  } else if (isPlainObject(props)) {\n    for (var key in props) {\n      val = props[key];\n      name = camelize(key);\n      res[name] = isPlainObject(val)\n        ? val\n        : { type: val };\n    }\n  } else if (process.env.NODE_ENV !== 'production') {\n    warn(\n      \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n      \"but got \" + (toRawType(props)) + \".\",\n      vm\n    );\n  }\n  options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n  var inject = options.inject;\n  if (!inject) { return }\n  var normalized = options.inject = {};\n  if (Array.isArray(inject)) {\n    for (var i = 0; i < inject.length; i++) {\n      normalized[inject[i]] = { from: inject[i] };\n    }\n  } else if (isPlainObject(inject)) {\n    for (var key in inject) {\n      var val = inject[key];\n      normalized[key] = isPlainObject(val)\n        ? extend({ from: key }, val)\n        : { from: val };\n    }\n  } else if (process.env.NODE_ENV !== 'production') {\n    warn(\n      \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n      \"but got \" + (toRawType(inject)) + \".\",\n      vm\n    );\n  }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n  var dirs = options.directives;\n  if (dirs) {\n    for (var key in dirs) {\n      var def$$1 = dirs[key];\n      if (typeof def$$1 === 'function') {\n        dirs[key] = { bind: def$$1, update: def$$1 };\n      }\n    }\n  }\n}\n\nfunction assertObjectType (name, value, vm) {\n  if (!isPlainObject(value)) {\n    warn(\n      \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n      \"but got \" + (toRawType(value)) + \".\",\n      vm\n    );\n  }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n  parent,\n  child,\n  vm\n) {\n  if (process.env.NODE_ENV !== 'production') {\n    checkComponents(child);\n  }\n\n  if (typeof child === 'function') {\n    child = child.options;\n  }\n\n  normalizeProps(child, vm);\n  normalizeInject(child, vm);\n  normalizeDirectives(child);\n\n  // Apply extends and mixins on the child options,\n  // but only if it is a raw options object that isn't\n  // the result of another mergeOptions call.\n  // Only merged options has the _base property.\n  if (!child._base) {\n    if (child.extends) {\n      parent = mergeOptions(parent, child.extends, vm);\n    }\n    if (child.mixins) {\n      for (var i = 0, l = child.mixins.length; i < l; i++) {\n        parent = mergeOptions(parent, child.mixins[i], vm);\n      }\n    }\n  }\n\n  var options = {};\n  var key;\n  for (key in parent) {\n    mergeField(key);\n  }\n  for (key in child) {\n    if (!hasOwn(parent, key)) {\n      mergeField(key);\n    }\n  }\n  function mergeField (key) {\n    var strat = strats[key] || defaultStrat;\n    options[key] = strat(parent[key], child[key], vm, key);\n  }\n  return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n  options,\n  type,\n  id,\n  warnMissing\n) {\n  /* istanbul ignore if */\n  if (typeof id !== 'string') {\n    return\n  }\n  var assets = options[type];\n  // check local registration variations first\n  if (hasOwn(assets, id)) { return assets[id] }\n  var camelizedId = camelize(id);\n  if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n  var PascalCaseId = capitalize(camelizedId);\n  if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n  // fallback to prototype chain\n  var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n  if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n    warn(\n      'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n      options\n    );\n  }\n  return res\n}\n\n/*  */\n\n\n\nfunction validateProp (\n  key,\n  propOptions,\n  propsData,\n  vm\n) {\n  var prop = propOptions[key];\n  var absent = !hasOwn(propsData, key);\n  var value = propsData[key];\n  // boolean casting\n  var booleanIndex = getTypeIndex(Boolean, prop.type);\n  if (booleanIndex > -1) {\n    if (absent && !hasOwn(prop, 'default')) {\n      value = false;\n    } else if (value === '' || value === hyphenate(key)) {\n      // only cast empty string / same name to boolean if\n      // boolean has higher priority\n      var stringIndex = getTypeIndex(String, prop.type);\n      if (stringIndex < 0 || booleanIndex < stringIndex) {\n        value = true;\n      }\n    }\n  }\n  // check default value\n  if (value === undefined) {\n    value = getPropDefaultValue(vm, prop, key);\n    // since the default value is a fresh copy,\n    // make sure to observe it.\n    var prevShouldObserve = shouldObserve;\n    toggleObserving(true);\n    observe(value);\n    toggleObserving(prevShouldObserve);\n  }\n  if (\n    process.env.NODE_ENV !== 'production' &&\n    // skip validation for weex recycle-list child component props\n    !(false)\n  ) {\n    assertProp(prop, key, value, vm, absent);\n  }\n  return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n  // no default, return undefined\n  if (!hasOwn(prop, 'default')) {\n    return undefined\n  }\n  var def = prop.default;\n  // warn against non-factory defaults for Object & Array\n  if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n    warn(\n      'Invalid default value for prop \"' + key + '\": ' +\n      'Props with type Object/Array must use a factory function ' +\n      'to return the default value.',\n      vm\n    );\n  }\n  // the raw prop value was also undefined from previous render,\n  // return previous default value to avoid unnecessary watcher trigger\n  if (vm && vm.$options.propsData &&\n    vm.$options.propsData[key] === undefined &&\n    vm._props[key] !== undefined\n  ) {\n    return vm._props[key]\n  }\n  // call factory function for non-Function types\n  // a value is Function if its prototype is function even across different execution context\n  return typeof def === 'function' && getType(prop.type) !== 'Function'\n    ? def.call(vm)\n    : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n  prop,\n  name,\n  value,\n  vm,\n  absent\n) {\n  if (prop.required && absent) {\n    warn(\n      'Missing required prop: \"' + name + '\"',\n      vm\n    );\n    return\n  }\n  if (value == null && !prop.required) {\n    return\n  }\n  var type = prop.type;\n  var valid = !type || type === true;\n  var expectedTypes = [];\n  if (type) {\n    if (!Array.isArray(type)) {\n      type = [type];\n    }\n    for (var i = 0; i < type.length && !valid; i++) {\n      var assertedType = assertType(value, type[i]);\n      expectedTypes.push(assertedType.expectedType || '');\n      valid = assertedType.valid;\n    }\n  }\n\n  if (!valid) {\n    warn(\n      getInvalidTypeMessage(name, value, expectedTypes),\n      vm\n    );\n    return\n  }\n  var validator = prop.validator;\n  if (validator) {\n    if (!validator(value)) {\n      warn(\n        'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n        vm\n      );\n    }\n  }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n  var valid;\n  var expectedType = getType(type);\n  if (simpleCheckRE.test(expectedType)) {\n    var t = typeof value;\n    valid = t === expectedType.toLowerCase();\n    // for primitive wrapper objects\n    if (!valid && t === 'object') {\n      valid = value instanceof type;\n    }\n  } else if (expectedType === 'Object') {\n    valid = isPlainObject(value);\n  } else if (expectedType === 'Array') {\n    valid = Array.isArray(value);\n  } else {\n    valid = value instanceof type;\n  }\n  return {\n    valid: valid,\n    expectedType: expectedType\n  }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n  var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n  return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n  return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n  if (!Array.isArray(expectedTypes)) {\n    return isSameType(expectedTypes, type) ? 0 : -1\n  }\n  for (var i = 0, len = expectedTypes.length; i < len; i++) {\n    if (isSameType(expectedTypes[i], type)) {\n      return i\n    }\n  }\n  return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n  var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n    \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n  var expectedType = expectedTypes[0];\n  var receivedType = toRawType(value);\n  var expectedValue = styleValue(value, expectedType);\n  var receivedValue = styleValue(value, receivedType);\n  // check if we need to specify expected value\n  if (expectedTypes.length === 1 &&\n      isExplicable(expectedType) &&\n      !isBoolean(expectedType, receivedType)) {\n    message += \" with value \" + expectedValue;\n  }\n  message += \", got \" + receivedType + \" \";\n  // check if we need to specify received value\n  if (isExplicable(receivedType)) {\n    message += \"with value \" + receivedValue + \".\";\n  }\n  return message\n}\n\nfunction styleValue (value, type) {\n  if (type === 'String') {\n    return (\"\\\"\" + value + \"\\\"\")\n  } else if (type === 'Number') {\n    return (\"\" + (Number(value)))\n  } else {\n    return (\"\" + value)\n  }\n}\n\nfunction isExplicable (value) {\n  var explicitTypes = ['string', 'number', 'boolean'];\n  return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/*  */\n\nfunction handleError (err, vm, info) {\n  // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n  // See: https://github.com/vuejs/vuex/issues/1505\n  pushTarget();\n  try {\n    if (vm) {\n      var cur = vm;\n      while ((cur = cur.$parent)) {\n        var hooks = cur.$options.errorCaptured;\n        if (hooks) {\n          for (var i = 0; i < hooks.length; i++) {\n            try {\n              var capture = hooks[i].call(cur, err, vm, info) === false;\n              if (capture) { return }\n            } catch (e) {\n              globalHandleError(e, cur, 'errorCaptured hook');\n            }\n          }\n        }\n      }\n    }\n    globalHandleError(err, vm, info);\n  } finally {\n    popTarget();\n  }\n}\n\nfunction invokeWithErrorHandling (\n  handler,\n  context,\n  args,\n  vm,\n  info\n) {\n  var res;\n  try {\n    res = args ? handler.apply(context, args) : handler.call(context);\n    if (res && !res._isVue && isPromise(res) && !res._handled) {\n      res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n      // issue #9511\n      // avoid catch triggering multiple times when nested calls\n      res._handled = true;\n    }\n  } catch (e) {\n    handleError(e, vm, info);\n  }\n  return res\n}\n\nfunction globalHandleError (err, vm, info) {\n  if (config.errorHandler) {\n    try {\n      return config.errorHandler.call(null, err, vm, info)\n    } catch (e) {\n      // if the user intentionally throws the original error in the handler,\n      // do not log it twice\n      if (e !== err) {\n        logError(e, null, 'config.errorHandler');\n      }\n    }\n  }\n  logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n  }\n  /* istanbul ignore else */\n  if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n    console.error(err);\n  } else {\n    throw err\n  }\n}\n\n/*  */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n  pending = false;\n  var copies = callbacks.slice(0);\n  callbacks.length = 0;\n  for (var i = 0; i < copies.length; i++) {\n    copies[i]();\n  }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n  var p = Promise.resolve();\n  timerFunc = function () {\n    p.then(flushCallbacks);\n    // In problematic UIWebViews, Promise.then doesn't completely break, but\n    // it can get stuck in a weird state where callbacks are pushed into the\n    // microtask queue but the queue isn't being flushed, until the browser\n    // needs to do some other work, e.g. handle a timer. Therefore we can\n    // \"force\" the microtask queue to be flushed by adding an empty timer.\n    if (isIOS) { setTimeout(noop); }\n  };\n  isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n  isNative(MutationObserver) ||\n  // PhantomJS and iOS 7.x\n  MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n  // Use MutationObserver where native Promise is not available,\n  // e.g. PhantomJS, iOS7, Android 4.4\n  // (#6466 MutationObserver is unreliable in IE11)\n  var counter = 1;\n  var observer = new MutationObserver(flushCallbacks);\n  var textNode = document.createTextNode(String(counter));\n  observer.observe(textNode, {\n    characterData: true\n  });\n  timerFunc = function () {\n    counter = (counter + 1) % 2;\n    textNode.data = String(counter);\n  };\n  isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n  // Fallback to setImmediate.\n  // Technically it leverages the (macro) task queue,\n  // but it is still a better choice than setTimeout.\n  timerFunc = function () {\n    setImmediate(flushCallbacks);\n  };\n} else {\n  // Fallback to setTimeout.\n  timerFunc = function () {\n    setTimeout(flushCallbacks, 0);\n  };\n}\n\nfunction nextTick (cb, ctx) {\n  var _resolve;\n  callbacks.push(function () {\n    if (cb) {\n      try {\n        cb.call(ctx);\n      } catch (e) {\n        handleError(e, ctx, 'nextTick');\n      }\n    } else if (_resolve) {\n      _resolve(ctx);\n    }\n  });\n  if (!pending) {\n    pending = true;\n    timerFunc();\n  }\n  // $flow-disable-line\n  if (!cb && typeof Promise !== 'undefined') {\n    return new Promise(function (resolve) {\n      _resolve = resolve;\n    })\n  }\n}\n\n/*  */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n  var allowedGlobals = makeMap(\n    'Infinity,undefined,NaN,isFinite,isNaN,' +\n    'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n    'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n    'require' // for Webpack/Browserify\n  );\n\n  var warnNonPresent = function (target, key) {\n    warn(\n      \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n      'referenced during render. Make sure that this property is reactive, ' +\n      'either in the data option, or for class-based components, by ' +\n      'initializing the property. ' +\n      'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n      target\n    );\n  };\n\n  var warnReservedPrefix = function (target, key) {\n    warn(\n      \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n      'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n      'prevent conflicts with Vue internals. ' +\n      'See: https://vuejs.org/v2/api/#data',\n      target\n    );\n  };\n\n  var hasProxy =\n    typeof Proxy !== 'undefined' && isNative(Proxy);\n\n  if (hasProxy) {\n    var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n    config.keyCodes = new Proxy(config.keyCodes, {\n      set: function set (target, key, value) {\n        if (isBuiltInModifier(key)) {\n          warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n          return false\n        } else {\n          target[key] = value;\n          return true\n        }\n      }\n    });\n  }\n\n  var hasHandler = {\n    has: function has (target, key) {\n      var has = key in target;\n      var isAllowed = allowedGlobals(key) ||\n        (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n      if (!has && !isAllowed) {\n        if (key in target.$data) { warnReservedPrefix(target, key); }\n        else { warnNonPresent(target, key); }\n      }\n      return has || !isAllowed\n    }\n  };\n\n  var getHandler = {\n    get: function get (target, key) {\n      if (typeof key === 'string' && !(key in target)) {\n        if (key in target.$data) { warnReservedPrefix(target, key); }\n        else { warnNonPresent(target, key); }\n      }\n      return target[key]\n    }\n  };\n\n  initProxy = function initProxy (vm) {\n    if (hasProxy) {\n      // determine which proxy handler to use\n      var options = vm.$options;\n      var handlers = options.render && options.render._withStripped\n        ? getHandler\n        : hasHandler;\n      vm._renderProxy = new Proxy(vm, handlers);\n    } else {\n      vm._renderProxy = vm;\n    }\n  };\n}\n\n/*  */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n  _traverse(val, seenObjects);\n  seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n  var i, keys;\n  var isA = Array.isArray(val);\n  if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n    return\n  }\n  if (val.__ob__) {\n    var depId = val.__ob__.dep.id;\n    if (seen.has(depId)) {\n      return\n    }\n    seen.add(depId);\n  }\n  if (isA) {\n    i = val.length;\n    while (i--) { _traverse(val[i], seen); }\n  } else {\n    keys = Object.keys(val);\n    i = keys.length;\n    while (i--) { _traverse(val[keys[i]], seen); }\n  }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n  var perf = inBrowser && window.performance;\n  /* istanbul ignore if */\n  if (\n    perf &&\n    perf.mark &&\n    perf.measure &&\n    perf.clearMarks &&\n    perf.clearMeasures\n  ) {\n    mark = function (tag) { return perf.mark(tag); };\n    measure = function (name, startTag, endTag) {\n      perf.measure(name, startTag, endTag);\n      perf.clearMarks(startTag);\n      perf.clearMarks(endTag);\n      // perf.clearMeasures(name)\n    };\n  }\n}\n\n/*  */\n\nvar normalizeEvent = cached(function (name) {\n  var passive = name.charAt(0) === '&';\n  name = passive ? name.slice(1) : name;\n  var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n  name = once$$1 ? name.slice(1) : name;\n  var capture = name.charAt(0) === '!';\n  name = capture ? name.slice(1) : name;\n  return {\n    name: name,\n    once: once$$1,\n    capture: capture,\n    passive: passive\n  }\n});\n\nfunction createFnInvoker (fns, vm) {\n  function invoker () {\n    var arguments$1 = arguments;\n\n    var fns = invoker.fns;\n    if (Array.isArray(fns)) {\n      var cloned = fns.slice();\n      for (var i = 0; i < cloned.length; i++) {\n        invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n      }\n    } else {\n      // return handler return value for single handlers\n      return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n    }\n  }\n  invoker.fns = fns;\n  return invoker\n}\n\nfunction updateListeners (\n  on,\n  oldOn,\n  add,\n  remove$$1,\n  createOnceHandler,\n  vm\n) {\n  var name, def$$1, cur, old, event;\n  for (name in on) {\n    def$$1 = cur = on[name];\n    old = oldOn[name];\n    event = normalizeEvent(name);\n    if (isUndef(cur)) {\n      process.env.NODE_ENV !== 'production' && warn(\n        \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n        vm\n      );\n    } else if (isUndef(old)) {\n      if (isUndef(cur.fns)) {\n        cur = on[name] = createFnInvoker(cur, vm);\n      }\n      if (isTrue(event.once)) {\n        cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n      }\n      add(event.name, cur, event.capture, event.passive, event.params);\n    } else if (cur !== old) {\n      old.fns = cur;\n      on[name] = old;\n    }\n  }\n  for (name in oldOn) {\n    if (isUndef(on[name])) {\n      event = normalizeEvent(name);\n      remove$$1(event.name, oldOn[name], event.capture);\n    }\n  }\n}\n\n/*  */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n  if (def instanceof VNode) {\n    def = def.data.hook || (def.data.hook = {});\n  }\n  var invoker;\n  var oldHook = def[hookKey];\n\n  function wrappedHook () {\n    hook.apply(this, arguments);\n    // important: remove merged hook to ensure it's called only once\n    // and prevent memory leak\n    remove(invoker.fns, wrappedHook);\n  }\n\n  if (isUndef(oldHook)) {\n    // no existing hook\n    invoker = createFnInvoker([wrappedHook]);\n  } else {\n    /* istanbul ignore if */\n    if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n      // already a merged invoker\n      invoker = oldHook;\n      invoker.fns.push(wrappedHook);\n    } else {\n      // existing plain hook\n      invoker = createFnInvoker([oldHook, wrappedHook]);\n    }\n  }\n\n  invoker.merged = true;\n  def[hookKey] = invoker;\n}\n\n/*  */\n\nfunction extractPropsFromVNodeData (\n  data,\n  Ctor,\n  tag\n) {\n  // we are only extracting raw values here.\n  // validation and default values are handled in the child\n  // component itself.\n  var propOptions = Ctor.options.props;\n  if (isUndef(propOptions)) {\n    return\n  }\n  var res = {};\n  var attrs = data.attrs;\n  var props = data.props;\n  if (isDef(attrs) || isDef(props)) {\n    for (var key in propOptions) {\n      var altKey = hyphenate(key);\n      if (process.env.NODE_ENV !== 'production') {\n        var keyInLowerCase = key.toLowerCase();\n        if (\n          key !== keyInLowerCase &&\n          attrs && hasOwn(attrs, keyInLowerCase)\n        ) {\n          tip(\n            \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n            (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n            \" \\\"\" + key + \"\\\". \" +\n            \"Note that HTML attributes are case-insensitive and camelCased \" +\n            \"props need to use their kebab-case equivalents when using in-DOM \" +\n            \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n          );\n        }\n      }\n      checkProp(res, props, key, altKey, true) ||\n      checkProp(res, attrs, key, altKey, false);\n    }\n  }\n  return res\n}\n\nfunction checkProp (\n  res,\n  hash,\n  key,\n  altKey,\n  preserve\n) {\n  if (isDef(hash)) {\n    if (hasOwn(hash, key)) {\n      res[key] = hash[key];\n      if (!preserve) {\n        delete hash[key];\n      }\n      return true\n    } else if (hasOwn(hash, altKey)) {\n      res[key] = hash[altKey];\n      if (!preserve) {\n        delete hash[altKey];\n      }\n      return true\n    }\n  }\n  return false\n}\n\n/*  */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n  for (var i = 0; i < children.length; i++) {\n    if (Array.isArray(children[i])) {\n      return Array.prototype.concat.apply([], children)\n    }\n  }\n  return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n  return isPrimitive(children)\n    ? [createTextVNode(children)]\n    : Array.isArray(children)\n      ? normalizeArrayChildren(children)\n      : undefined\n}\n\nfunction isTextNode (node) {\n  return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n  var res = [];\n  var i, c, lastIndex, last;\n  for (i = 0; i < children.length; i++) {\n    c = children[i];\n    if (isUndef(c) || typeof c === 'boolean') { continue }\n    lastIndex = res.length - 1;\n    last = res[lastIndex];\n    //  nested\n    if (Array.isArray(c)) {\n      if (c.length > 0) {\n        c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n        // merge adjacent text nodes\n        if (isTextNode(c[0]) && isTextNode(last)) {\n          res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n          c.shift();\n        }\n        res.push.apply(res, c);\n      }\n    } else if (isPrimitive(c)) {\n      if (isTextNode(last)) {\n        // merge adjacent text nodes\n        // this is necessary for SSR hydration because text nodes are\n        // essentially merged when rendered to HTML strings\n        res[lastIndex] = createTextVNode(last.text + c);\n      } else if (c !== '') {\n        // convert primitive to vnode\n        res.push(createTextVNode(c));\n      }\n    } else {\n      if (isTextNode(c) && isTextNode(last)) {\n        // merge adjacent text nodes\n        res[lastIndex] = createTextVNode(last.text + c.text);\n      } else {\n        // default key for nested array children (likely generated by v-for)\n        if (isTrue(children._isVList) &&\n          isDef(c.tag) &&\n          isUndef(c.key) &&\n          isDef(nestedIndex)) {\n          c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n        }\n        res.push(c);\n      }\n    }\n  }\n  return res\n}\n\n/*  */\n\nfunction initProvide (vm) {\n  var provide = vm.$options.provide;\n  if (provide) {\n    vm._provided = typeof provide === 'function'\n      ? provide.call(vm)\n      : provide;\n  }\n}\n\nfunction initInjections (vm) {\n  var result = resolveInject(vm.$options.inject, vm);\n  if (result) {\n    toggleObserving(false);\n    Object.keys(result).forEach(function (key) {\n      /* istanbul ignore else */\n      if (process.env.NODE_ENV !== 'production') {\n        defineReactive$$1(vm, key, result[key], function () {\n          warn(\n            \"Avoid mutating an injected value directly since the changes will be \" +\n            \"overwritten whenever the provided component re-renders. \" +\n            \"injection being mutated: \\\"\" + key + \"\\\"\",\n            vm\n          );\n        });\n      } else {\n        defineReactive$$1(vm, key, result[key]);\n      }\n    });\n    toggleObserving(true);\n  }\n}\n\nfunction resolveInject (inject, vm) {\n  if (inject) {\n    // inject is :any because flow is not smart enough to figure out cached\n    var result = Object.create(null);\n    var keys = hasSymbol\n      ? Reflect.ownKeys(inject)\n      : Object.keys(inject);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n      // #6574 in case the inject object is observed...\n      if (key === '__ob__') { continue }\n      var provideKey = inject[key].from;\n      var source = vm;\n      while (source) {\n        if (source._provided && hasOwn(source._provided, provideKey)) {\n          result[key] = source._provided[provideKey];\n          break\n        }\n        source = source.$parent;\n      }\n      if (!source) {\n        if ('default' in inject[key]) {\n          var provideDefault = inject[key].default;\n          result[key] = typeof provideDefault === 'function'\n            ? provideDefault.call(vm)\n            : provideDefault;\n        } else if (process.env.NODE_ENV !== 'production') {\n          warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n        }\n      }\n    }\n    return result\n  }\n}\n\n/*  */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n  children,\n  context\n) {\n  if (!children || !children.length) {\n    return {}\n  }\n  var slots = {};\n  for (var i = 0, l = children.length; i < l; i++) {\n    var child = children[i];\n    var data = child.data;\n    // remove slot attribute if the node is resolved as a Vue slot node\n    if (data && data.attrs && data.attrs.slot) {\n      delete data.attrs.slot;\n    }\n    // named slots should only be respected if the vnode was rendered in the\n    // same context.\n    if ((child.context === context || child.fnContext === context) &&\n      data && data.slot != null\n    ) {\n      var name = data.slot;\n      var slot = (slots[name] || (slots[name] = []));\n      if (child.tag === 'template') {\n        slot.push.apply(slot, child.children || []);\n      } else {\n        slot.push(child);\n      }\n    } else {\n      (slots.default || (slots.default = [])).push(child);\n    }\n  }\n  // ignore slots that contains only whitespace\n  for (var name$1 in slots) {\n    if (slots[name$1].every(isWhitespace)) {\n      delete slots[name$1];\n    }\n  }\n  return slots\n}\n\nfunction isWhitespace (node) {\n  return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/*  */\n\nfunction normalizeScopedSlots (\n  slots,\n  normalSlots,\n  prevSlots\n) {\n  var res;\n  var hasNormalSlots = Object.keys(normalSlots).length > 0;\n  var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n  var key = slots && slots.$key;\n  if (!slots) {\n    res = {};\n  } else if (slots._normalized) {\n    // fast path 1: child component re-render only, parent did not change\n    return slots._normalized\n  } else if (\n    isStable &&\n    prevSlots &&\n    prevSlots !== emptyObject &&\n    key === prevSlots.$key &&\n    !hasNormalSlots &&\n    !prevSlots.$hasNormal\n  ) {\n    // fast path 2: stable scoped slots w/ no normal slots to proxy,\n    // only need to normalize once\n    return prevSlots\n  } else {\n    res = {};\n    for (var key$1 in slots) {\n      if (slots[key$1] && key$1[0] !== '$') {\n        res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n      }\n    }\n  }\n  // expose normal slots on scopedSlots\n  for (var key$2 in normalSlots) {\n    if (!(key$2 in res)) {\n      res[key$2] = proxyNormalSlot(normalSlots, key$2);\n    }\n  }\n  // avoriaz seems to mock a non-extensible $scopedSlots object\n  // and when that is passed down this would cause an error\n  if (slots && Object.isExtensible(slots)) {\n    (slots)._normalized = res;\n  }\n  def(res, '$stable', isStable);\n  def(res, '$key', key);\n  def(res, '$hasNormal', hasNormalSlots);\n  return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n  var normalized = function () {\n    var res = arguments.length ? fn.apply(null, arguments) : fn({});\n    res = res && typeof res === 'object' && !Array.isArray(res)\n      ? [res] // single vnode\n      : normalizeChildren(res);\n    return res && (\n      res.length === 0 ||\n      (res.length === 1 && res[0].isComment) // #9658\n    ) ? undefined\n      : res\n  };\n  // this is a slot using the new v-slot syntax without scope. although it is\n  // compiled as a scoped slot, render fn users would expect it to be present\n  // on this.$slots because the usage is semantically a normal slot.\n  if (fn.proxy) {\n    Object.defineProperty(normalSlots, key, {\n      get: normalized,\n      enumerable: true,\n      configurable: true\n    });\n  }\n  return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n  return function () { return slots[key]; }\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n  val,\n  render\n) {\n  var ret, i, l, keys, key;\n  if (Array.isArray(val) || typeof val === 'string') {\n    ret = new Array(val.length);\n    for (i = 0, l = val.length; i < l; i++) {\n      ret[i] = render(val[i], i);\n    }\n  } else if (typeof val === 'number') {\n    ret = new Array(val);\n    for (i = 0; i < val; i++) {\n      ret[i] = render(i + 1, i);\n    }\n  } else if (isObject(val)) {\n    if (hasSymbol && val[Symbol.iterator]) {\n      ret = [];\n      var iterator = val[Symbol.iterator]();\n      var result = iterator.next();\n      while (!result.done) {\n        ret.push(render(result.value, ret.length));\n        result = iterator.next();\n      }\n    } else {\n      keys = Object.keys(val);\n      ret = new Array(keys.length);\n      for (i = 0, l = keys.length; i < l; i++) {\n        key = keys[i];\n        ret[i] = render(val[key], key, i);\n      }\n    }\n  }\n  if (!isDef(ret)) {\n    ret = [];\n  }\n  (ret)._isVList = true;\n  return ret\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n  name,\n  fallback,\n  props,\n  bindObject\n) {\n  var scopedSlotFn = this.$scopedSlots[name];\n  var nodes;\n  if (scopedSlotFn) { // scoped slot\n    props = props || {};\n    if (bindObject) {\n      if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n        warn(\n          'slot v-bind without argument expects an Object',\n          this\n        );\n      }\n      props = extend(extend({}, bindObject), props);\n    }\n    nodes = scopedSlotFn(props) || fallback;\n  } else {\n    nodes = this.$slots[name] || fallback;\n  }\n\n  var target = props && props.slot;\n  if (target) {\n    return this.$createElement('template', { slot: target }, nodes)\n  } else {\n    return nodes\n  }\n}\n\n/*  */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n  return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/*  */\n\nfunction isKeyNotMatch (expect, actual) {\n  if (Array.isArray(expect)) {\n    return expect.indexOf(actual) === -1\n  } else {\n    return expect !== actual\n  }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n  eventKeyCode,\n  key,\n  builtInKeyCode,\n  eventKeyName,\n  builtInKeyName\n) {\n  var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n  if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n    return isKeyNotMatch(builtInKeyName, eventKeyName)\n  } else if (mappedKeyCode) {\n    return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n  } else if (eventKeyName) {\n    return hyphenate(eventKeyName) !== key\n  }\n}\n\n/*  */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n  data,\n  tag,\n  value,\n  asProp,\n  isSync\n) {\n  if (value) {\n    if (!isObject(value)) {\n      process.env.NODE_ENV !== 'production' && warn(\n        'v-bind without argument expects an Object or Array value',\n        this\n      );\n    } else {\n      if (Array.isArray(value)) {\n        value = toObject(value);\n      }\n      var hash;\n      var loop = function ( key ) {\n        if (\n          key === 'class' ||\n          key === 'style' ||\n          isReservedAttribute(key)\n        ) {\n          hash = data;\n        } else {\n          var type = data.attrs && data.attrs.type;\n          hash = asProp || config.mustUseProp(tag, type, key)\n            ? data.domProps || (data.domProps = {})\n            : data.attrs || (data.attrs = {});\n        }\n        var camelizedKey = camelize(key);\n        var hyphenatedKey = hyphenate(key);\n        if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n          hash[key] = value[key];\n\n          if (isSync) {\n            var on = data.on || (data.on = {});\n            on[(\"update:\" + key)] = function ($event) {\n              value[key] = $event;\n            };\n          }\n        }\n      };\n\n      for (var key in value) loop( key );\n    }\n  }\n  return data\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n  index,\n  isInFor\n) {\n  var cached = this._staticTrees || (this._staticTrees = []);\n  var tree = cached[index];\n  // if has already-rendered static tree and not inside v-for,\n  // we can reuse the same tree.\n  if (tree && !isInFor) {\n    return tree\n  }\n  // otherwise, render a fresh tree.\n  tree = cached[index] = this.$options.staticRenderFns[index].call(\n    this._renderProxy,\n    null,\n    this // for render fns generated for functional component templates\n  );\n  markStatic(tree, (\"__static__\" + index), false);\n  return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n  tree,\n  index,\n  key\n) {\n  markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n  return tree\n}\n\nfunction markStatic (\n  tree,\n  key,\n  isOnce\n) {\n  if (Array.isArray(tree)) {\n    for (var i = 0; i < tree.length; i++) {\n      if (tree[i] && typeof tree[i] !== 'string') {\n        markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n      }\n    }\n  } else {\n    markStaticNode(tree, key, isOnce);\n  }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n  node.isStatic = true;\n  node.key = key;\n  node.isOnce = isOnce;\n}\n\n/*  */\n\nfunction bindObjectListeners (data, value) {\n  if (value) {\n    if (!isPlainObject(value)) {\n      process.env.NODE_ENV !== 'production' && warn(\n        'v-on without argument expects an Object value',\n        this\n      );\n    } else {\n      var on = data.on = data.on ? extend({}, data.on) : {};\n      for (var key in value) {\n        var existing = on[key];\n        var ours = value[key];\n        on[key] = existing ? [].concat(existing, ours) : ours;\n      }\n    }\n  }\n  return data\n}\n\n/*  */\n\nfunction resolveScopedSlots (\n  fns, // see flow/vnode\n  res,\n  // the following are added in 2.6\n  hasDynamicKeys,\n  contentHashKey\n) {\n  res = res || { $stable: !hasDynamicKeys };\n  for (var i = 0; i < fns.length; i++) {\n    var slot = fns[i];\n    if (Array.isArray(slot)) {\n      resolveScopedSlots(slot, res, hasDynamicKeys);\n    } else if (slot) {\n      // marker for reverse proxying v-slot without scope on this.$slots\n      if (slot.proxy) {\n        slot.fn.proxy = true;\n      }\n      res[slot.key] = slot.fn;\n    }\n  }\n  if (contentHashKey) {\n    (res).$key = contentHashKey;\n  }\n  return res\n}\n\n/*  */\n\nfunction bindDynamicKeys (baseObj, values) {\n  for (var i = 0; i < values.length; i += 2) {\n    var key = values[i];\n    if (typeof key === 'string' && key) {\n      baseObj[values[i]] = values[i + 1];\n    } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n      // null is a special value for explicitly removing a binding\n      warn(\n        (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n        this\n      );\n    }\n  }\n  return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n  return typeof value === 'string' ? symbol + value : value\n}\n\n/*  */\n\nfunction installRenderHelpers (target) {\n  target._o = markOnce;\n  target._n = toNumber;\n  target._s = toString;\n  target._l = renderList;\n  target._t = renderSlot;\n  target._q = looseEqual;\n  target._i = looseIndexOf;\n  target._m = renderStatic;\n  target._f = resolveFilter;\n  target._k = checkKeyCodes;\n  target._b = bindObjectProps;\n  target._v = createTextVNode;\n  target._e = createEmptyVNode;\n  target._u = resolveScopedSlots;\n  target._g = bindObjectListeners;\n  target._d = bindDynamicKeys;\n  target._p = prependModifier;\n}\n\n/*  */\n\nfunction FunctionalRenderContext (\n  data,\n  props,\n  children,\n  parent,\n  Ctor\n) {\n  var this$1 = this;\n\n  var options = Ctor.options;\n  // ensure the createElement function in functional components\n  // gets a unique context - this is necessary for correct named slot check\n  var contextVm;\n  if (hasOwn(parent, '_uid')) {\n    contextVm = Object.create(parent);\n    // $flow-disable-line\n    contextVm._original = parent;\n  } else {\n    // the context vm passed in is a functional context as well.\n    // in this case we want to make sure we are able to get a hold to the\n    // real context instance.\n    contextVm = parent;\n    // $flow-disable-line\n    parent = parent._original;\n  }\n  var isCompiled = isTrue(options._compiled);\n  var needNormalization = !isCompiled;\n\n  this.data = data;\n  this.props = props;\n  this.children = children;\n  this.parent = parent;\n  this.listeners = data.on || emptyObject;\n  this.injections = resolveInject(options.inject, parent);\n  this.slots = function () {\n    if (!this$1.$slots) {\n      normalizeScopedSlots(\n        data.scopedSlots,\n        this$1.$slots = resolveSlots(children, parent)\n      );\n    }\n    return this$1.$slots\n  };\n\n  Object.defineProperty(this, 'scopedSlots', ({\n    enumerable: true,\n    get: function get () {\n      return normalizeScopedSlots(data.scopedSlots, this.slots())\n    }\n  }));\n\n  // support for compiled functional template\n  if (isCompiled) {\n    // exposing $options for renderStatic()\n    this.$options = options;\n    // pre-resolve slots for renderSlot()\n    this.$slots = this.slots();\n    this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n  }\n\n  if (options._scopeId) {\n    this._c = function (a, b, c, d) {\n      var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n      if (vnode && !Array.isArray(vnode)) {\n        vnode.fnScopeId = options._scopeId;\n        vnode.fnContext = parent;\n      }\n      return vnode\n    };\n  } else {\n    this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n  }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n  Ctor,\n  propsData,\n  data,\n  contextVm,\n  children\n) {\n  var options = Ctor.options;\n  var props = {};\n  var propOptions = options.props;\n  if (isDef(propOptions)) {\n    for (var key in propOptions) {\n      props[key] = validateProp(key, propOptions, propsData || emptyObject);\n    }\n  } else {\n    if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n    if (isDef(data.props)) { mergeProps(props, data.props); }\n  }\n\n  var renderContext = new FunctionalRenderContext(\n    data,\n    props,\n    children,\n    contextVm,\n    Ctor\n  );\n\n  var vnode = options.render.call(null, renderContext._c, renderContext);\n\n  if (vnode instanceof VNode) {\n    return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n  } else if (Array.isArray(vnode)) {\n    var vnodes = normalizeChildren(vnode) || [];\n    var res = new Array(vnodes.length);\n    for (var i = 0; i < vnodes.length; i++) {\n      res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n    }\n    return res\n  }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n  // #7817 clone node before setting fnContext, otherwise if the node is reused\n  // (e.g. it was from a cached normal slot) the fnContext causes named slots\n  // that should not be matched to match.\n  var clone = cloneVNode(vnode);\n  clone.fnContext = contextVm;\n  clone.fnOptions = options;\n  if (process.env.NODE_ENV !== 'production') {\n    (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n  }\n  if (data.slot) {\n    (clone.data || (clone.data = {})).slot = data.slot;\n  }\n  return clone\n}\n\nfunction mergeProps (to, from) {\n  for (var key in from) {\n    to[camelize(key)] = from[key];\n  }\n}\n\n/*  */\n\n/*  */\n\n/*  */\n\n/*  */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n  init: function init (vnode, hydrating) {\n    if (\n      vnode.componentInstance &&\n      !vnode.componentInstance._isDestroyed &&\n      vnode.data.keepAlive\n    ) {\n      // kept-alive components, treat as a patch\n      var mountedNode = vnode; // work around flow\n      componentVNodeHooks.prepatch(mountedNode, mountedNode);\n    } else {\n      var child = vnode.componentInstance = createComponentInstanceForVnode(\n        vnode,\n        activeInstance\n      );\n      child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n    }\n  },\n\n  prepatch: function prepatch (oldVnode, vnode) {\n    var options = vnode.componentOptions;\n    var child = vnode.componentInstance = oldVnode.componentInstance;\n    updateChildComponent(\n      child,\n      options.propsData, // updated props\n      options.listeners, // updated listeners\n      vnode, // new parent vnode\n      options.children // new children\n    );\n  },\n\n  insert: function insert (vnode) {\n    var context = vnode.context;\n    var componentInstance = vnode.componentInstance;\n    if (!componentInstance._isMounted) {\n      componentInstance._isMounted = true;\n      callHook(componentInstance, 'mounted');\n    }\n    if (vnode.data.keepAlive) {\n      if (context._isMounted) {\n        // vue-router#1212\n        // During updates, a kept-alive component's child components may\n        // change, so directly walking the tree here may call activated hooks\n        // on incorrect children. Instead we push them into a queue which will\n        // be processed after the whole patch process ended.\n        queueActivatedComponent(componentInstance);\n      } else {\n        activateChildComponent(componentInstance, true /* direct */);\n      }\n    }\n  },\n\n  destroy: function destroy (vnode) {\n    var componentInstance = vnode.componentInstance;\n    if (!componentInstance._isDestroyed) {\n      if (!vnode.data.keepAlive) {\n        componentInstance.$destroy();\n      } else {\n        deactivateChildComponent(componentInstance, true /* direct */);\n      }\n    }\n  }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n  Ctor,\n  data,\n  context,\n  children,\n  tag\n) {\n  if (isUndef(Ctor)) {\n    return\n  }\n\n  var baseCtor = context.$options._base;\n\n  // plain options object: turn it into a constructor\n  if (isObject(Ctor)) {\n    Ctor = baseCtor.extend(Ctor);\n  }\n\n  // if at this stage it's not a constructor or an async component factory,\n  // reject.\n  if (typeof Ctor !== 'function') {\n    if (process.env.NODE_ENV !== 'production') {\n      warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n    }\n    return\n  }\n\n  // async component\n  var asyncFactory;\n  if (isUndef(Ctor.cid)) {\n    asyncFactory = Ctor;\n    Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n    if (Ctor === undefined) {\n      // return a placeholder node for async component, which is rendered\n      // as a comment node but preserves all the raw information for the node.\n      // the information will be used for async server-rendering and hydration.\n      return createAsyncPlaceholder(\n        asyncFactory,\n        data,\n        context,\n        children,\n        tag\n      )\n    }\n  }\n\n  data = data || {};\n\n  // resolve constructor options in case global mixins are applied after\n  // component constructor creation\n  resolveConstructorOptions(Ctor);\n\n  // transform component v-model data into props & events\n  if (isDef(data.model)) {\n    transformModel(Ctor.options, data);\n  }\n\n  // extract props\n  var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n  // functional component\n  if (isTrue(Ctor.options.functional)) {\n    return createFunctionalComponent(Ctor, propsData, data, context, children)\n  }\n\n  // extract listeners, since these needs to be treated as\n  // child component listeners instead of DOM listeners\n  var listeners = data.on;\n  // replace with listeners with .native modifier\n  // so it gets processed during parent component patch.\n  data.on = data.nativeOn;\n\n  if (isTrue(Ctor.options.abstract)) {\n    // abstract components do not keep anything\n    // other than props & listeners & slot\n\n    // work around flow\n    var slot = data.slot;\n    data = {};\n    if (slot) {\n      data.slot = slot;\n    }\n  }\n\n  // install component management hooks onto the placeholder node\n  installComponentHooks(data);\n\n  // return a placeholder vnode\n  var name = Ctor.options.name || tag;\n  var vnode = new VNode(\n    (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n    data, undefined, undefined, undefined, context,\n    { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n    asyncFactory\n  );\n\n  return vnode\n}\n\nfunction createComponentInstanceForVnode (\n  vnode, // we know it's MountedComponentVNode but flow doesn't\n  parent // activeInstance in lifecycle state\n) {\n  var options = {\n    _isComponent: true,\n    _parentVnode: vnode,\n    parent: parent\n  };\n  // check inline-template render functions\n  var inlineTemplate = vnode.data.inlineTemplate;\n  if (isDef(inlineTemplate)) {\n    options.render = inlineTemplate.render;\n    options.staticRenderFns = inlineTemplate.staticRenderFns;\n  }\n  return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n  var hooks = data.hook || (data.hook = {});\n  for (var i = 0; i < hooksToMerge.length; i++) {\n    var key = hooksToMerge[i];\n    var existing = hooks[key];\n    var toMerge = componentVNodeHooks[key];\n    if (existing !== toMerge && !(existing && existing._merged)) {\n      hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n    }\n  }\n}\n\nfunction mergeHook$1 (f1, f2) {\n  var merged = function (a, b) {\n    // flow complains about extra args which is why we use any\n    f1(a, b);\n    f2(a, b);\n  };\n  merged._merged = true;\n  return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n  var prop = (options.model && options.model.prop) || 'value';\n  var event = (options.model && options.model.event) || 'input'\n  ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n  var on = data.on || (data.on = {});\n  var existing = on[event];\n  var callback = data.model.callback;\n  if (isDef(existing)) {\n    if (\n      Array.isArray(existing)\n        ? existing.indexOf(callback) === -1\n        : existing !== callback\n    ) {\n      on[event] = [callback].concat(existing);\n    }\n  } else {\n    on[event] = callback;\n  }\n}\n\n/*  */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n  context,\n  tag,\n  data,\n  children,\n  normalizationType,\n  alwaysNormalize\n) {\n  if (Array.isArray(data) || isPrimitive(data)) {\n    normalizationType = children;\n    children = data;\n    data = undefined;\n  }\n  if (isTrue(alwaysNormalize)) {\n    normalizationType = ALWAYS_NORMALIZE;\n  }\n  return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n  context,\n  tag,\n  data,\n  children,\n  normalizationType\n) {\n  if (isDef(data) && isDef((data).__ob__)) {\n    process.env.NODE_ENV !== 'production' && warn(\n      \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n      'Always create fresh vnode data objects in each render!',\n      context\n    );\n    return createEmptyVNode()\n  }\n  // object syntax in v-bind\n  if (isDef(data) && isDef(data.is)) {\n    tag = data.is;\n  }\n  if (!tag) {\n    // in case of component :is set to falsy value\n    return createEmptyVNode()\n  }\n  // warn against non-primitive key\n  if (process.env.NODE_ENV !== 'production' &&\n    isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n  ) {\n    {\n      warn(\n        'Avoid using non-primitive value as key, ' +\n        'use string/number value instead.',\n        context\n      );\n    }\n  }\n  // support single function children as default scoped slot\n  if (Array.isArray(children) &&\n    typeof children[0] === 'function'\n  ) {\n    data = data || {};\n    data.scopedSlots = { default: children[0] };\n    children.length = 0;\n  }\n  if (normalizationType === ALWAYS_NORMALIZE) {\n    children = normalizeChildren(children);\n  } else if (normalizationType === SIMPLE_NORMALIZE) {\n    children = simpleNormalizeChildren(children);\n  }\n  var vnode, ns;\n  if (typeof tag === 'string') {\n    var Ctor;\n    ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n    if (config.isReservedTag(tag)) {\n      // platform built-in elements\n      if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.nativeOn)) {\n        warn(\n          (\"The .native modifier for v-on is only valid on components but it was used on <\" + tag + \">.\"),\n          context\n        );\n      }\n      vnode = new VNode(\n        config.parsePlatformTagName(tag), data, children,\n        undefined, undefined, context\n      );\n    } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n      // component\n      vnode = createComponent(Ctor, data, context, children, tag);\n    } else {\n      // unknown or unlisted namespaced elements\n      // check at runtime because it may get assigned a namespace when its\n      // parent normalizes children\n      vnode = new VNode(\n        tag, data, children,\n        undefined, undefined, context\n      );\n    }\n  } else {\n    // direct component options / constructor\n    vnode = createComponent(tag, data, context, children);\n  }\n  if (Array.isArray(vnode)) {\n    return vnode\n  } else if (isDef(vnode)) {\n    if (isDef(ns)) { applyNS(vnode, ns); }\n    if (isDef(data)) { registerDeepBindings(data); }\n    return vnode\n  } else {\n    return createEmptyVNode()\n  }\n}\n\nfunction applyNS (vnode, ns, force) {\n  vnode.ns = ns;\n  if (vnode.tag === 'foreignObject') {\n    // use default namespace inside foreignObject\n    ns = undefined;\n    force = true;\n  }\n  if (isDef(vnode.children)) {\n    for (var i = 0, l = vnode.children.length; i < l; i++) {\n      var child = vnode.children[i];\n      if (isDef(child.tag) && (\n        isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n        applyNS(child, ns, force);\n      }\n    }\n  }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n  if (isObject(data.style)) {\n    traverse(data.style);\n  }\n  if (isObject(data.class)) {\n    traverse(data.class);\n  }\n}\n\n/*  */\n\nfunction initRender (vm) {\n  vm._vnode = null; // the root of the child tree\n  vm._staticTrees = null; // v-once cached trees\n  var options = vm.$options;\n  var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n  var renderContext = parentVnode && parentVnode.context;\n  vm.$slots = resolveSlots(options._renderChildren, renderContext);\n  vm.$scopedSlots = emptyObject;\n  // bind the createElement fn to this instance\n  // so that we get proper render context inside it.\n  // args order: tag, data, children, normalizationType, alwaysNormalize\n  // internal version is used by render functions compiled from templates\n  vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n  // normalization is always applied for the public version, used in\n  // user-written render functions.\n  vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n  // $attrs & $listeners are exposed for easier HOC creation.\n  // they need to be reactive so that HOCs using them are always updated\n  var parentData = parentVnode && parentVnode.data;\n\n  /* istanbul ignore else */\n  if (process.env.NODE_ENV !== 'production') {\n    defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n      !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n    }, true);\n    defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n      !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n    }, true);\n  } else {\n    defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n    defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n  }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n  // install runtime convenience helpers\n  installRenderHelpers(Vue.prototype);\n\n  Vue.prototype.$nextTick = function (fn) {\n    return nextTick(fn, this)\n  };\n\n  Vue.prototype._render = function () {\n    var vm = this;\n    var ref = vm.$options;\n    var render = ref.render;\n    var _parentVnode = ref._parentVnode;\n\n    if (_parentVnode) {\n      vm.$scopedSlots = normalizeScopedSlots(\n        _parentVnode.data.scopedSlots,\n        vm.$slots,\n        vm.$scopedSlots\n      );\n    }\n\n    // set parent vnode. this allows render functions to have access\n    // to the data on the placeholder node.\n    vm.$vnode = _parentVnode;\n    // render self\n    var vnode;\n    try {\n      // There's no need to maintain a stack because all render fns are called\n      // separately from one another. Nested component's render fns are called\n      // when parent component is patched.\n      currentRenderingInstance = vm;\n      vnode = render.call(vm._renderProxy, vm.$createElement);\n    } catch (e) {\n      handleError(e, vm, \"render\");\n      // return error render result,\n      // or previous vnode to prevent render error causing blank component\n      /* istanbul ignore else */\n      if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n        try {\n          vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n        } catch (e) {\n          handleError(e, vm, \"renderError\");\n          vnode = vm._vnode;\n        }\n      } else {\n        vnode = vm._vnode;\n      }\n    } finally {\n      currentRenderingInstance = null;\n    }\n    // if the returned array contains only a single node, allow it\n    if (Array.isArray(vnode) && vnode.length === 1) {\n      vnode = vnode[0];\n    }\n    // return empty vnode in case the render function errored out\n    if (!(vnode instanceof VNode)) {\n      if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n        warn(\n          'Multiple root nodes returned from render function. Render function ' +\n          'should return a single root node.',\n          vm\n        );\n      }\n      vnode = createEmptyVNode();\n    }\n    // set parent\n    vnode.parent = _parentVnode;\n    return vnode\n  };\n}\n\n/*  */\n\nfunction ensureCtor (comp, base) {\n  if (\n    comp.__esModule ||\n    (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n  ) {\n    comp = comp.default;\n  }\n  return isObject(comp)\n    ? base.extend(comp)\n    : comp\n}\n\nfunction createAsyncPlaceholder (\n  factory,\n  data,\n  context,\n  children,\n  tag\n) {\n  var node = createEmptyVNode();\n  node.asyncFactory = factory;\n  node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n  return node\n}\n\nfunction resolveAsyncComponent (\n  factory,\n  baseCtor\n) {\n  if (isTrue(factory.error) && isDef(factory.errorComp)) {\n    return factory.errorComp\n  }\n\n  if (isDef(factory.resolved)) {\n    return factory.resolved\n  }\n\n  var owner = currentRenderingInstance;\n  if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n    // already pending\n    factory.owners.push(owner);\n  }\n\n  if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n    return factory.loadingComp\n  }\n\n  if (owner && !isDef(factory.owners)) {\n    var owners = factory.owners = [owner];\n    var sync = true;\n    var timerLoading = null;\n    var timerTimeout = null\n\n    ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n    var forceRender = function (renderCompleted) {\n      for (var i = 0, l = owners.length; i < l; i++) {\n        (owners[i]).$forceUpdate();\n      }\n\n      if (renderCompleted) {\n        owners.length = 0;\n        if (timerLoading !== null) {\n          clearTimeout(timerLoading);\n          timerLoading = null;\n        }\n        if (timerTimeout !== null) {\n          clearTimeout(timerTimeout);\n          timerTimeout = null;\n        }\n      }\n    };\n\n    var resolve = once(function (res) {\n      // cache resolved\n      factory.resolved = ensureCtor(res, baseCtor);\n      // invoke callbacks only if this is not a synchronous resolve\n      // (async resolves are shimmed as synchronous during SSR)\n      if (!sync) {\n        forceRender(true);\n      } else {\n        owners.length = 0;\n      }\n    });\n\n    var reject = once(function (reason) {\n      process.env.NODE_ENV !== 'production' && warn(\n        \"Failed to resolve async component: \" + (String(factory)) +\n        (reason ? (\"\\nReason: \" + reason) : '')\n      );\n      if (isDef(factory.errorComp)) {\n        factory.error = true;\n        forceRender(true);\n      }\n    });\n\n    var res = factory(resolve, reject);\n\n    if (isObject(res)) {\n      if (isPromise(res)) {\n        // () => Promise\n        if (isUndef(factory.resolved)) {\n          res.then(resolve, reject);\n        }\n      } else if (isPromise(res.component)) {\n        res.component.then(resolve, reject);\n\n        if (isDef(res.error)) {\n          factory.errorComp = ensureCtor(res.error, baseCtor);\n        }\n\n        if (isDef(res.loading)) {\n          factory.loadingComp = ensureCtor(res.loading, baseCtor);\n          if (res.delay === 0) {\n            factory.loading = true;\n          } else {\n            timerLoading = setTimeout(function () {\n              timerLoading = null;\n              if (isUndef(factory.resolved) && isUndef(factory.error)) {\n                factory.loading = true;\n                forceRender(false);\n              }\n            }, res.delay || 200);\n          }\n        }\n\n        if (isDef(res.timeout)) {\n          timerTimeout = setTimeout(function () {\n            timerTimeout = null;\n            if (isUndef(factory.resolved)) {\n              reject(\n                process.env.NODE_ENV !== 'production'\n                  ? (\"timeout (\" + (res.timeout) + \"ms)\")\n                  : null\n              );\n            }\n          }, res.timeout);\n        }\n      }\n    }\n\n    sync = false;\n    // return in case resolved synchronously\n    return factory.loading\n      ? factory.loadingComp\n      : factory.resolved\n  }\n}\n\n/*  */\n\nfunction isAsyncPlaceholder (node) {\n  return node.isComment && node.asyncFactory\n}\n\n/*  */\n\nfunction getFirstComponentChild (children) {\n  if (Array.isArray(children)) {\n    for (var i = 0; i < children.length; i++) {\n      var c = children[i];\n      if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n        return c\n      }\n    }\n  }\n}\n\n/*  */\n\n/*  */\n\nfunction initEvents (vm) {\n  vm._events = Object.create(null);\n  vm._hasHookEvent = false;\n  // init parent attached events\n  var listeners = vm.$options._parentListeners;\n  if (listeners) {\n    updateComponentListeners(vm, listeners);\n  }\n}\n\nvar target;\n\nfunction add (event, fn) {\n  target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n  target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n  var _target = target;\n  return function onceHandler () {\n    var res = fn.apply(null, arguments);\n    if (res !== null) {\n      _target.$off(event, onceHandler);\n    }\n  }\n}\n\nfunction updateComponentListeners (\n  vm,\n  listeners,\n  oldListeners\n) {\n  target = vm;\n  updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n  target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n  var hookRE = /^hook:/;\n  Vue.prototype.$on = function (event, fn) {\n    var vm = this;\n    if (Array.isArray(event)) {\n      for (var i = 0, l = event.length; i < l; i++) {\n        vm.$on(event[i], fn);\n      }\n    } else {\n      (vm._events[event] || (vm._events[event] = [])).push(fn);\n      // optimize hook:event cost by using a boolean flag marked at registration\n      // instead of a hash lookup\n      if (hookRE.test(event)) {\n        vm._hasHookEvent = true;\n      }\n    }\n    return vm\n  };\n\n  Vue.prototype.$once = function (event, fn) {\n    var vm = this;\n    function on () {\n      vm.$off(event, on);\n      fn.apply(vm, arguments);\n    }\n    on.fn = fn;\n    vm.$on(event, on);\n    return vm\n  };\n\n  Vue.prototype.$off = function (event, fn) {\n    var vm = this;\n    // all\n    if (!arguments.length) {\n      vm._events = Object.create(null);\n      return vm\n    }\n    // array of events\n    if (Array.isArray(event)) {\n      for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n        vm.$off(event[i$1], fn);\n      }\n      return vm\n    }\n    // specific event\n    var cbs = vm._events[event];\n    if (!cbs) {\n      return vm\n    }\n    if (!fn) {\n      vm._events[event] = null;\n      return vm\n    }\n    // specific handler\n    var cb;\n    var i = cbs.length;\n    while (i--) {\n      cb = cbs[i];\n      if (cb === fn || cb.fn === fn) {\n        cbs.splice(i, 1);\n        break\n      }\n    }\n    return vm\n  };\n\n  Vue.prototype.$emit = function (event) {\n    var vm = this;\n    if (process.env.NODE_ENV !== 'production') {\n      var lowerCaseEvent = event.toLowerCase();\n      if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n        tip(\n          \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n          (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n          \"Note that HTML attributes are case-insensitive and you cannot use \" +\n          \"v-on to listen to camelCase events when using in-DOM templates. \" +\n          \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n        );\n      }\n    }\n    var cbs = vm._events[event];\n    if (cbs) {\n      cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n      var args = toArray(arguments, 1);\n      var info = \"event handler for \\\"\" + event + \"\\\"\";\n      for (var i = 0, l = cbs.length; i < l; i++) {\n        invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n      }\n    }\n    return vm\n  };\n}\n\n/*  */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n  var prevActiveInstance = activeInstance;\n  activeInstance = vm;\n  return function () {\n    activeInstance = prevActiveInstance;\n  }\n}\n\nfunction initLifecycle (vm) {\n  var options = vm.$options;\n\n  // locate first non-abstract parent\n  var parent = options.parent;\n  if (parent && !options.abstract) {\n    while (parent.$options.abstract && parent.$parent) {\n      parent = parent.$parent;\n    }\n    parent.$children.push(vm);\n  }\n\n  vm.$parent = parent;\n  vm.$root = parent ? parent.$root : vm;\n\n  vm.$children = [];\n  vm.$refs = {};\n\n  vm._watcher = null;\n  vm._inactive = null;\n  vm._directInactive = false;\n  vm._isMounted = false;\n  vm._isDestroyed = false;\n  vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n  Vue.prototype._update = function (vnode, hydrating) {\n    var vm = this;\n    var prevEl = vm.$el;\n    var prevVnode = vm._vnode;\n    var restoreActiveInstance = setActiveInstance(vm);\n    vm._vnode = vnode;\n    // Vue.prototype.__patch__ is injected in entry points\n    // based on the rendering backend used.\n    if (!prevVnode) {\n      // initial render\n      vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n    } else {\n      // updates\n      vm.$el = vm.__patch__(prevVnode, vnode);\n    }\n    restoreActiveInstance();\n    // update __vue__ reference\n    if (prevEl) {\n      prevEl.__vue__ = null;\n    }\n    if (vm.$el) {\n      vm.$el.__vue__ = vm;\n    }\n    // if parent is an HOC, update its $el as well\n    if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n      vm.$parent.$el = vm.$el;\n    }\n    // updated hook is called by the scheduler to ensure that children are\n    // updated in a parent's updated hook.\n  };\n\n  Vue.prototype.$forceUpdate = function () {\n    var vm = this;\n    if (vm._watcher) {\n      vm._watcher.update();\n    }\n  };\n\n  Vue.prototype.$destroy = function () {\n    var vm = this;\n    if (vm._isBeingDestroyed) {\n      return\n    }\n    callHook(vm, 'beforeDestroy');\n    vm._isBeingDestroyed = true;\n    // remove self from parent\n    var parent = vm.$parent;\n    if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n      remove(parent.$children, vm);\n    }\n    // teardown watchers\n    if (vm._watcher) {\n      vm._watcher.teardown();\n    }\n    var i = vm._watchers.length;\n    while (i--) {\n      vm._watchers[i].teardown();\n    }\n    // remove reference from data ob\n    // frozen object may not have observer.\n    if (vm._data.__ob__) {\n      vm._data.__ob__.vmCount--;\n    }\n    // call the last hook...\n    vm._isDestroyed = true;\n    // invoke destroy hooks on current rendered tree\n    vm.__patch__(vm._vnode, null);\n    // fire destroyed hook\n    callHook(vm, 'destroyed');\n    // turn off all instance listeners.\n    vm.$off();\n    // remove __vue__ reference\n    if (vm.$el) {\n      vm.$el.__vue__ = null;\n    }\n    // release circular reference (#6759)\n    if (vm.$vnode) {\n      vm.$vnode.parent = null;\n    }\n  };\n}\n\nfunction mountComponent (\n  vm,\n  el,\n  hydrating\n) {\n  vm.$el = el;\n  if (!vm.$options.render) {\n    vm.$options.render = createEmptyVNode;\n    if (process.env.NODE_ENV !== 'production') {\n      /* istanbul ignore if */\n      if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n        vm.$options.el || el) {\n        warn(\n          'You are using the runtime-only build of Vue where the template ' +\n          'compiler is not available. Either pre-compile the templates into ' +\n          'render functions, or use the compiler-included build.',\n          vm\n        );\n      } else {\n        warn(\n          'Failed to mount component: template or render function not defined.',\n          vm\n        );\n      }\n    }\n  }\n  callHook(vm, 'beforeMount');\n\n  var updateComponent;\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n    updateComponent = function () {\n      var name = vm._name;\n      var id = vm._uid;\n      var startTag = \"vue-perf-start:\" + id;\n      var endTag = \"vue-perf-end:\" + id;\n\n      mark(startTag);\n      var vnode = vm._render();\n      mark(endTag);\n      measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n      mark(startTag);\n      vm._update(vnode, hydrating);\n      mark(endTag);\n      measure((\"vue \" + name + \" patch\"), startTag, endTag);\n    };\n  } else {\n    updateComponent = function () {\n      vm._update(vm._render(), hydrating);\n    };\n  }\n\n  // we set this to vm._watcher inside the watcher's constructor\n  // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n  // component's mounted hook), which relies on vm._watcher being already defined\n  new Watcher(vm, updateComponent, noop, {\n    before: function before () {\n      if (vm._isMounted && !vm._isDestroyed) {\n        callHook(vm, 'beforeUpdate');\n      }\n    }\n  }, true /* isRenderWatcher */);\n  hydrating = false;\n\n  // manually mounted instance, call mounted on self\n  // mounted is called for render-created child components in its inserted hook\n  if (vm.$vnode == null) {\n    vm._isMounted = true;\n    callHook(vm, 'mounted');\n  }\n  return vm\n}\n\nfunction updateChildComponent (\n  vm,\n  propsData,\n  listeners,\n  parentVnode,\n  renderChildren\n) {\n  if (process.env.NODE_ENV !== 'production') {\n    isUpdatingChildComponent = true;\n  }\n\n  // determine whether component has slot children\n  // we need to do this before overwriting $options._renderChildren.\n\n  // check if there are dynamic scopedSlots (hand-written or compiled but with\n  // dynamic slot names). Static scoped slots compiled from template has the\n  // \"$stable\" marker.\n  var newScopedSlots = parentVnode.data.scopedSlots;\n  var oldScopedSlots = vm.$scopedSlots;\n  var hasDynamicScopedSlot = !!(\n    (newScopedSlots && !newScopedSlots.$stable) ||\n    (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n    (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n  );\n\n  // Any static slot children from the parent may have changed during parent's\n  // update. Dynamic scoped slots may also have changed. In such cases, a forced\n  // update is necessary to ensure correctness.\n  var needsForceUpdate = !!(\n    renderChildren ||               // has new static slots\n    vm.$options._renderChildren ||  // has old static slots\n    hasDynamicScopedSlot\n  );\n\n  vm.$options._parentVnode = parentVnode;\n  vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n  if (vm._vnode) { // update child tree's parent\n    vm._vnode.parent = parentVnode;\n  }\n  vm.$options._renderChildren = renderChildren;\n\n  // update $attrs and $listeners hash\n  // these are also reactive so they may trigger child update if the child\n  // used them during render\n  vm.$attrs = parentVnode.data.attrs || emptyObject;\n  vm.$listeners = listeners || emptyObject;\n\n  // update props\n  if (propsData && vm.$options.props) {\n    toggleObserving(false);\n    var props = vm._props;\n    var propKeys = vm.$options._propKeys || [];\n    for (var i = 0; i < propKeys.length; i++) {\n      var key = propKeys[i];\n      var propOptions = vm.$options.props; // wtf flow?\n      props[key] = validateProp(key, propOptions, propsData, vm);\n    }\n    toggleObserving(true);\n    // keep a copy of raw propsData\n    vm.$options.propsData = propsData;\n  }\n\n  // update listeners\n  listeners = listeners || emptyObject;\n  var oldListeners = vm.$options._parentListeners;\n  vm.$options._parentListeners = listeners;\n  updateComponentListeners(vm, listeners, oldListeners);\n\n  // resolve slots + force update if has children\n  if (needsForceUpdate) {\n    vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n    vm.$forceUpdate();\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    isUpdatingChildComponent = false;\n  }\n}\n\nfunction isInInactiveTree (vm) {\n  while (vm && (vm = vm.$parent)) {\n    if (vm._inactive) { return true }\n  }\n  return false\n}\n\nfunction activateChildComponent (vm, direct) {\n  if (direct) {\n    vm._directInactive = false;\n    if (isInInactiveTree(vm)) {\n      return\n    }\n  } else if (vm._directInactive) {\n    return\n  }\n  if (vm._inactive || vm._inactive === null) {\n    vm._inactive = false;\n    for (var i = 0; i < vm.$children.length; i++) {\n      activateChildComponent(vm.$children[i]);\n    }\n    callHook(vm, 'activated');\n  }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n  if (direct) {\n    vm._directInactive = true;\n    if (isInInactiveTree(vm)) {\n      return\n    }\n  }\n  if (!vm._inactive) {\n    vm._inactive = true;\n    for (var i = 0; i < vm.$children.length; i++) {\n      deactivateChildComponent(vm.$children[i]);\n    }\n    callHook(vm, 'deactivated');\n  }\n}\n\nfunction callHook (vm, hook) {\n  // #7573 disable dep collection when invoking lifecycle hooks\n  pushTarget();\n  var handlers = vm.$options[hook];\n  var info = hook + \" hook\";\n  if (handlers) {\n    for (var i = 0, j = handlers.length; i < j; i++) {\n      invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n    }\n  }\n  if (vm._hasHookEvent) {\n    vm.$emit('hook:' + hook);\n  }\n  popTarget();\n}\n\n/*  */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n  index = queue.length = activatedChildren.length = 0;\n  has = {};\n  if (process.env.NODE_ENV !== 'production') {\n    circular = {};\n  }\n  waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n  var performance = window.performance;\n  if (\n    performance &&\n    typeof performance.now === 'function' &&\n    getNow() > document.createEvent('Event').timeStamp\n  ) {\n    // if the event timestamp, although evaluated AFTER the Date.now(), is\n    // smaller than it, it means the event is using a hi-res timestamp,\n    // and we need to use the hi-res version for event listener timestamps as\n    // well.\n    getNow = function () { return performance.now(); };\n  }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n  currentFlushTimestamp = getNow();\n  flushing = true;\n  var watcher, id;\n\n  // Sort queue before flush.\n  // This ensures that:\n  // 1. Components are updated from parent to child. (because parent is always\n  //    created before the child)\n  // 2. A component's user watchers are run before its render watcher (because\n  //    user watchers are created before the render watcher)\n  // 3. If a component is destroyed during a parent component's watcher run,\n  //    its watchers can be skipped.\n  queue.sort(function (a, b) { return a.id - b.id; });\n\n  // do not cache length because more watchers might be pushed\n  // as we run existing watchers\n  for (index = 0; index < queue.length; index++) {\n    watcher = queue[index];\n    if (watcher.before) {\n      watcher.before();\n    }\n    id = watcher.id;\n    has[id] = null;\n    watcher.run();\n    // in dev build, check and stop circular updates.\n    if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n      circular[id] = (circular[id] || 0) + 1;\n      if (circular[id] > MAX_UPDATE_COUNT) {\n        warn(\n          'You may have an infinite update loop ' + (\n            watcher.user\n              ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n              : \"in a component render function.\"\n          ),\n          watcher.vm\n        );\n        break\n      }\n    }\n  }\n\n  // keep copies of post queues before resetting state\n  var activatedQueue = activatedChildren.slice();\n  var updatedQueue = queue.slice();\n\n  resetSchedulerState();\n\n  // call component updated and activated hooks\n  callActivatedHooks(activatedQueue);\n  callUpdatedHooks(updatedQueue);\n\n  // devtool hook\n  /* istanbul ignore if */\n  if (devtools && config.devtools) {\n    devtools.emit('flush');\n  }\n}\n\nfunction callUpdatedHooks (queue) {\n  var i = queue.length;\n  while (i--) {\n    var watcher = queue[i];\n    var vm = watcher.vm;\n    if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n      callHook(vm, 'updated');\n    }\n  }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n  // setting _inactive to false here so that a render function can\n  // rely on checking whether it's in an inactive tree (e.g. router-view)\n  vm._inactive = false;\n  activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n  for (var i = 0; i < queue.length; i++) {\n    queue[i]._inactive = true;\n    activateChildComponent(queue[i], true /* true */);\n  }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n  var id = watcher.id;\n  if (has[id] == null) {\n    has[id] = true;\n    if (!flushing) {\n      queue.push(watcher);\n    } else {\n      // if already flushing, splice the watcher based on its id\n      // if already past its id, it will be run next immediately.\n      var i = queue.length - 1;\n      while (i > index && queue[i].id > watcher.id) {\n        i--;\n      }\n      queue.splice(i + 1, 0, watcher);\n    }\n    // queue the flush\n    if (!waiting) {\n      waiting = true;\n\n      if (process.env.NODE_ENV !== 'production' && !config.async) {\n        flushSchedulerQueue();\n        return\n      }\n      nextTick(flushSchedulerQueue);\n    }\n  }\n}\n\n/*  */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n  vm,\n  expOrFn,\n  cb,\n  options,\n  isRenderWatcher\n) {\n  this.vm = vm;\n  if (isRenderWatcher) {\n    vm._watcher = this;\n  }\n  vm._watchers.push(this);\n  // options\n  if (options) {\n    this.deep = !!options.deep;\n    this.user = !!options.user;\n    this.lazy = !!options.lazy;\n    this.sync = !!options.sync;\n    this.before = options.before;\n  } else {\n    this.deep = this.user = this.lazy = this.sync = false;\n  }\n  this.cb = cb;\n  this.id = ++uid$2; // uid for batching\n  this.active = true;\n  this.dirty = this.lazy; // for lazy watchers\n  this.deps = [];\n  this.newDeps = [];\n  this.depIds = new _Set();\n  this.newDepIds = new _Set();\n  this.expression = process.env.NODE_ENV !== 'production'\n    ? expOrFn.toString()\n    : '';\n  // parse expression for getter\n  if (typeof expOrFn === 'function') {\n    this.getter = expOrFn;\n  } else {\n    this.getter = parsePath(expOrFn);\n    if (!this.getter) {\n      this.getter = noop;\n      process.env.NODE_ENV !== 'production' && warn(\n        \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n        'Watcher only accepts simple dot-delimited paths. ' +\n        'For full control, use a function instead.',\n        vm\n      );\n    }\n  }\n  this.value = this.lazy\n    ? undefined\n    : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n  pushTarget(this);\n  var value;\n  var vm = this.vm;\n  try {\n    value = this.getter.call(vm, vm);\n  } catch (e) {\n    if (this.user) {\n      handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n    } else {\n      throw e\n    }\n  } finally {\n    // \"touch\" every property so they are all tracked as\n    // dependencies for deep watching\n    if (this.deep) {\n      traverse(value);\n    }\n    popTarget();\n    this.cleanupDeps();\n  }\n  return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n  var id = dep.id;\n  if (!this.newDepIds.has(id)) {\n    this.newDepIds.add(id);\n    this.newDeps.push(dep);\n    if (!this.depIds.has(id)) {\n      dep.addSub(this);\n    }\n  }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n  var i = this.deps.length;\n  while (i--) {\n    var dep = this.deps[i];\n    if (!this.newDepIds.has(dep.id)) {\n      dep.removeSub(this);\n    }\n  }\n  var tmp = this.depIds;\n  this.depIds = this.newDepIds;\n  this.newDepIds = tmp;\n  this.newDepIds.clear();\n  tmp = this.deps;\n  this.deps = this.newDeps;\n  this.newDeps = tmp;\n  this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n  /* istanbul ignore else */\n  if (this.lazy) {\n    this.dirty = true;\n  } else if (this.sync) {\n    this.run();\n  } else {\n    queueWatcher(this);\n  }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n  if (this.active) {\n    var value = this.get();\n    if (\n      value !== this.value ||\n      // Deep watchers and watchers on Object/Arrays should fire even\n      // when the value is the same, because the value may\n      // have mutated.\n      isObject(value) ||\n      this.deep\n    ) {\n      // set new value\n      var oldValue = this.value;\n      this.value = value;\n      if (this.user) {\n        try {\n          this.cb.call(this.vm, value, oldValue);\n        } catch (e) {\n          handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n        }\n      } else {\n        this.cb.call(this.vm, value, oldValue);\n      }\n    }\n  }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n  this.value = this.get();\n  this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n  var i = this.deps.length;\n  while (i--) {\n    this.deps[i].depend();\n  }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n  if (this.active) {\n    // remove self from vm's watcher list\n    // this is a somewhat expensive operation so we skip it\n    // if the vm is being destroyed.\n    if (!this.vm._isBeingDestroyed) {\n      remove(this.vm._watchers, this);\n    }\n    var i = this.deps.length;\n    while (i--) {\n      this.deps[i].removeSub(this);\n    }\n    this.active = false;\n  }\n};\n\n/*  */\n\nvar sharedPropertyDefinition = {\n  enumerable: true,\n  configurable: true,\n  get: noop,\n  set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n  sharedPropertyDefinition.get = function proxyGetter () {\n    return this[sourceKey][key]\n  };\n  sharedPropertyDefinition.set = function proxySetter (val) {\n    this[sourceKey][key] = val;\n  };\n  Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n  vm._watchers = [];\n  var opts = vm.$options;\n  if (opts.props) { initProps(vm, opts.props); }\n  if (opts.methods) { initMethods(vm, opts.methods); }\n  if (opts.data) {\n    initData(vm);\n  } else {\n    observe(vm._data = {}, true /* asRootData */);\n  }\n  if (opts.computed) { initComputed(vm, opts.computed); }\n  if (opts.watch && opts.watch !== nativeWatch) {\n    initWatch(vm, opts.watch);\n  }\n}\n\nfunction initProps (vm, propsOptions) {\n  var propsData = vm.$options.propsData || {};\n  var props = vm._props = {};\n  // cache prop keys so that future props updates can iterate using Array\n  // instead of dynamic object key enumeration.\n  var keys = vm.$options._propKeys = [];\n  var isRoot = !vm.$parent;\n  // root instance props should be converted\n  if (!isRoot) {\n    toggleObserving(false);\n  }\n  var loop = function ( key ) {\n    keys.push(key);\n    var value = validateProp(key, propsOptions, propsData, vm);\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== 'production') {\n      var hyphenatedKey = hyphenate(key);\n      if (isReservedAttribute(hyphenatedKey) ||\n          config.isReservedAttr(hyphenatedKey)) {\n        warn(\n          (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n          vm\n        );\n      }\n      defineReactive$$1(props, key, value, function () {\n        if (!isRoot && !isUpdatingChildComponent) {\n          warn(\n            \"Avoid mutating a prop directly since the value will be \" +\n            \"overwritten whenever the parent component re-renders. \" +\n            \"Instead, use a data or computed property based on the prop's \" +\n            \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n            vm\n          );\n        }\n      });\n    } else {\n      defineReactive$$1(props, key, value);\n    }\n    // static props are already proxied on the component's prototype\n    // during Vue.extend(). We only need to proxy props defined at\n    // instantiation here.\n    if (!(key in vm)) {\n      proxy(vm, \"_props\", key);\n    }\n  };\n\n  for (var key in propsOptions) loop( key );\n  toggleObserving(true);\n}\n\nfunction initData (vm) {\n  var data = vm.$options.data;\n  data = vm._data = typeof data === 'function'\n    ? getData(data, vm)\n    : data || {};\n  if (!isPlainObject(data)) {\n    data = {};\n    process.env.NODE_ENV !== 'production' && warn(\n      'data functions should return an object:\\n' +\n      'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n      vm\n    );\n  }\n  // proxy data on instance\n  var keys = Object.keys(data);\n  var props = vm.$options.props;\n  var methods = vm.$options.methods;\n  var i = keys.length;\n  while (i--) {\n    var key = keys[i];\n    if (process.env.NODE_ENV !== 'production') {\n      if (methods && hasOwn(methods, key)) {\n        warn(\n          (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n          vm\n        );\n      }\n    }\n    if (props && hasOwn(props, key)) {\n      process.env.NODE_ENV !== 'production' && warn(\n        \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n        \"Use prop default value instead.\",\n        vm\n      );\n    } else if (!isReserved(key)) {\n      proxy(vm, \"_data\", key);\n    }\n  }\n  // observe data\n  observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n  // #7573 disable dep collection when invoking data getters\n  pushTarget();\n  try {\n    return data.call(vm, vm)\n  } catch (e) {\n    handleError(e, vm, \"data()\");\n    return {}\n  } finally {\n    popTarget();\n  }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n  // $flow-disable-line\n  var watchers = vm._computedWatchers = Object.create(null);\n  // computed properties are just getters during SSR\n  var isSSR = isServerRendering();\n\n  for (var key in computed) {\n    var userDef = computed[key];\n    var getter = typeof userDef === 'function' ? userDef : userDef.get;\n    if (process.env.NODE_ENV !== 'production' && getter == null) {\n      warn(\n        (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n        vm\n      );\n    }\n\n    if (!isSSR) {\n      // create internal watcher for the computed property.\n      watchers[key] = new Watcher(\n        vm,\n        getter || noop,\n        noop,\n        computedWatcherOptions\n      );\n    }\n\n    // component-defined computed properties are already defined on the\n    // component prototype. We only need to define computed properties defined\n    // at instantiation here.\n    if (!(key in vm)) {\n      defineComputed(vm, key, userDef);\n    } else if (process.env.NODE_ENV !== 'production') {\n      if (key in vm.$data) {\n        warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n      } else if (vm.$options.props && key in vm.$options.props) {\n        warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n      }\n    }\n  }\n}\n\nfunction defineComputed (\n  target,\n  key,\n  userDef\n) {\n  var shouldCache = !isServerRendering();\n  if (typeof userDef === 'function') {\n    sharedPropertyDefinition.get = shouldCache\n      ? createComputedGetter(key)\n      : createGetterInvoker(userDef);\n    sharedPropertyDefinition.set = noop;\n  } else {\n    sharedPropertyDefinition.get = userDef.get\n      ? shouldCache && userDef.cache !== false\n        ? createComputedGetter(key)\n        : createGetterInvoker(userDef.get)\n      : noop;\n    sharedPropertyDefinition.set = userDef.set || noop;\n  }\n  if (process.env.NODE_ENV !== 'production' &&\n      sharedPropertyDefinition.set === noop) {\n    sharedPropertyDefinition.set = function () {\n      warn(\n        (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n        this\n      );\n    };\n  }\n  Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n  return function computedGetter () {\n    var watcher = this._computedWatchers && this._computedWatchers[key];\n    if (watcher) {\n      if (watcher.dirty) {\n        watcher.evaluate();\n      }\n      if (Dep.target) {\n        watcher.depend();\n      }\n      return watcher.value\n    }\n  }\n}\n\nfunction createGetterInvoker(fn) {\n  return function computedGetter () {\n    return fn.call(this, this)\n  }\n}\n\nfunction initMethods (vm, methods) {\n  var props = vm.$options.props;\n  for (var key in methods) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof methods[key] !== 'function') {\n        warn(\n          \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n          \"Did you reference the function correctly?\",\n          vm\n        );\n      }\n      if (props && hasOwn(props, key)) {\n        warn(\n          (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n          vm\n        );\n      }\n      if ((key in vm) && isReserved(key)) {\n        warn(\n          \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n          \"Avoid defining component methods that start with _ or $.\"\n        );\n      }\n    }\n    vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n  }\n}\n\nfunction initWatch (vm, watch) {\n  for (var key in watch) {\n    var handler = watch[key];\n    if (Array.isArray(handler)) {\n      for (var i = 0; i < handler.length; i++) {\n        createWatcher(vm, key, handler[i]);\n      }\n    } else {\n      createWatcher(vm, key, handler);\n    }\n  }\n}\n\nfunction createWatcher (\n  vm,\n  expOrFn,\n  handler,\n  options\n) {\n  if (isPlainObject(handler)) {\n    options = handler;\n    handler = handler.handler;\n  }\n  if (typeof handler === 'string') {\n    handler = vm[handler];\n  }\n  return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n  // flow somehow has problems with directly declared definition object\n  // when using Object.defineProperty, so we have to procedurally build up\n  // the object here.\n  var dataDef = {};\n  dataDef.get = function () { return this._data };\n  var propsDef = {};\n  propsDef.get = function () { return this._props };\n  if (process.env.NODE_ENV !== 'production') {\n    dataDef.set = function () {\n      warn(\n        'Avoid replacing instance root $data. ' +\n        'Use nested data properties instead.',\n        this\n      );\n    };\n    propsDef.set = function () {\n      warn(\"$props is readonly.\", this);\n    };\n  }\n  Object.defineProperty(Vue.prototype, '$data', dataDef);\n  Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n  Vue.prototype.$set = set;\n  Vue.prototype.$delete = del;\n\n  Vue.prototype.$watch = function (\n    expOrFn,\n    cb,\n    options\n  ) {\n    var vm = this;\n    if (isPlainObject(cb)) {\n      return createWatcher(vm, expOrFn, cb, options)\n    }\n    options = options || {};\n    options.user = true;\n    var watcher = new Watcher(vm, expOrFn, cb, options);\n    if (options.immediate) {\n      try {\n        cb.call(vm, watcher.value);\n      } catch (error) {\n        handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n      }\n    }\n    return function unwatchFn () {\n      watcher.teardown();\n    }\n  };\n}\n\n/*  */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n  Vue.prototype._init = function (options) {\n    var vm = this;\n    // a uid\n    vm._uid = uid$3++;\n\n    var startTag, endTag;\n    /* istanbul ignore if */\n    if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n      startTag = \"vue-perf-start:\" + (vm._uid);\n      endTag = \"vue-perf-end:\" + (vm._uid);\n      mark(startTag);\n    }\n\n    // a flag to avoid this being observed\n    vm._isVue = true;\n    // merge options\n    if (options && options._isComponent) {\n      // optimize internal component instantiation\n      // since dynamic options merging is pretty slow, and none of the\n      // internal component options needs special treatment.\n      initInternalComponent(vm, options);\n    } else {\n      vm.$options = mergeOptions(\n        resolveConstructorOptions(vm.constructor),\n        options || {},\n        vm\n      );\n    }\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== 'production') {\n      initProxy(vm);\n    } else {\n      vm._renderProxy = vm;\n    }\n    // expose real self\n    vm._self = vm;\n    initLifecycle(vm);\n    initEvents(vm);\n    initRender(vm);\n    callHook(vm, 'beforeCreate');\n    initInjections(vm); // resolve injections before data/props\n    initState(vm);\n    initProvide(vm); // resolve provide after data/props\n    callHook(vm, 'created');\n\n    /* istanbul ignore if */\n    if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n      vm._name = formatComponentName(vm, false);\n      mark(endTag);\n      measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n    }\n\n    if (vm.$options.el) {\n      vm.$mount(vm.$options.el);\n    }\n  };\n}\n\nfunction initInternalComponent (vm, options) {\n  var opts = vm.$options = Object.create(vm.constructor.options);\n  // doing this because it's faster than dynamic enumeration.\n  var parentVnode = options._parentVnode;\n  opts.parent = options.parent;\n  opts._parentVnode = parentVnode;\n\n  var vnodeComponentOptions = parentVnode.componentOptions;\n  opts.propsData = vnodeComponentOptions.propsData;\n  opts._parentListeners = vnodeComponentOptions.listeners;\n  opts._renderChildren = vnodeComponentOptions.children;\n  opts._componentTag = vnodeComponentOptions.tag;\n\n  if (options.render) {\n    opts.render = options.render;\n    opts.staticRenderFns = options.staticRenderFns;\n  }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n  var options = Ctor.options;\n  if (Ctor.super) {\n    var superOptions = resolveConstructorOptions(Ctor.super);\n    var cachedSuperOptions = Ctor.superOptions;\n    if (superOptions !== cachedSuperOptions) {\n      // super option changed,\n      // need to resolve new options.\n      Ctor.superOptions = superOptions;\n      // check if there are any late-modified/attached options (#4976)\n      var modifiedOptions = resolveModifiedOptions(Ctor);\n      // update base extend options\n      if (modifiedOptions) {\n        extend(Ctor.extendOptions, modifiedOptions);\n      }\n      options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n      if (options.name) {\n        options.components[options.name] = Ctor;\n      }\n    }\n  }\n  return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n  var modified;\n  var latest = Ctor.options;\n  var sealed = Ctor.sealedOptions;\n  for (var key in latest) {\n    if (latest[key] !== sealed[key]) {\n      if (!modified) { modified = {}; }\n      modified[key] = latest[key];\n    }\n  }\n  return modified\n}\n\nfunction Vue (options) {\n  if (process.env.NODE_ENV !== 'production' &&\n    !(this instanceof Vue)\n  ) {\n    warn('Vue is a constructor and should be called with the `new` keyword');\n  }\n  this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/*  */\n\nfunction initUse (Vue) {\n  Vue.use = function (plugin) {\n    var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n    if (installedPlugins.indexOf(plugin) > -1) {\n      return this\n    }\n\n    // additional parameters\n    var args = toArray(arguments, 1);\n    args.unshift(this);\n    if (typeof plugin.install === 'function') {\n      plugin.install.apply(plugin, args);\n    } else if (typeof plugin === 'function') {\n      plugin.apply(null, args);\n    }\n    installedPlugins.push(plugin);\n    return this\n  };\n}\n\n/*  */\n\nfunction initMixin$1 (Vue) {\n  Vue.mixin = function (mixin) {\n    this.options = mergeOptions(this.options, mixin);\n    return this\n  };\n}\n\n/*  */\n\nfunction initExtend (Vue) {\n  /**\n   * Each instance constructor, including Vue, has a unique\n   * cid. This enables us to create wrapped \"child\n   * constructors\" for prototypal inheritance and cache them.\n   */\n  Vue.cid = 0;\n  var cid = 1;\n\n  /**\n   * Class inheritance\n   */\n  Vue.extend = function (extendOptions) {\n    extendOptions = extendOptions || {};\n    var Super = this;\n    var SuperId = Super.cid;\n    var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n    if (cachedCtors[SuperId]) {\n      return cachedCtors[SuperId]\n    }\n\n    var name = extendOptions.name || Super.options.name;\n    if (process.env.NODE_ENV !== 'production' && name) {\n      validateComponentName(name);\n    }\n\n    var Sub = function VueComponent (options) {\n      this._init(options);\n    };\n    Sub.prototype = Object.create(Super.prototype);\n    Sub.prototype.constructor = Sub;\n    Sub.cid = cid++;\n    Sub.options = mergeOptions(\n      Super.options,\n      extendOptions\n    );\n    Sub['super'] = Super;\n\n    // For props and computed properties, we define the proxy getters on\n    // the Vue instances at extension time, on the extended prototype. This\n    // avoids Object.defineProperty calls for each instance created.\n    if (Sub.options.props) {\n      initProps$1(Sub);\n    }\n    if (Sub.options.computed) {\n      initComputed$1(Sub);\n    }\n\n    // allow further extension/mixin/plugin usage\n    Sub.extend = Super.extend;\n    Sub.mixin = Super.mixin;\n    Sub.use = Super.use;\n\n    // create asset registers, so extended classes\n    // can have their private assets too.\n    ASSET_TYPES.forEach(function (type) {\n      Sub[type] = Super[type];\n    });\n    // enable recursive self-lookup\n    if (name) {\n      Sub.options.components[name] = Sub;\n    }\n\n    // keep a reference to the super options at extension time.\n    // later at instantiation we can check if Super's options have\n    // been updated.\n    Sub.superOptions = Super.options;\n    Sub.extendOptions = extendOptions;\n    Sub.sealedOptions = extend({}, Sub.options);\n\n    // cache constructor\n    cachedCtors[SuperId] = Sub;\n    return Sub\n  };\n}\n\nfunction initProps$1 (Comp) {\n  var props = Comp.options.props;\n  for (var key in props) {\n    proxy(Comp.prototype, \"_props\", key);\n  }\n}\n\nfunction initComputed$1 (Comp) {\n  var computed = Comp.options.computed;\n  for (var key in computed) {\n    defineComputed(Comp.prototype, key, computed[key]);\n  }\n}\n\n/*  */\n\nfunction initAssetRegisters (Vue) {\n  /**\n   * Create asset registration methods.\n   */\n  ASSET_TYPES.forEach(function (type) {\n    Vue[type] = function (\n      id,\n      definition\n    ) {\n      if (!definition) {\n        return this.options[type + 's'][id]\n      } else {\n        /* istanbul ignore if */\n        if (process.env.NODE_ENV !== 'production' && type === 'component') {\n          validateComponentName(id);\n        }\n        if (type === 'component' && isPlainObject(definition)) {\n          definition.name = definition.name || id;\n          definition = this.options._base.extend(definition);\n        }\n        if (type === 'directive' && typeof definition === 'function') {\n          definition = { bind: definition, update: definition };\n        }\n        this.options[type + 's'][id] = definition;\n        return definition\n      }\n    };\n  });\n}\n\n/*  */\n\n\n\nfunction getComponentName (opts) {\n  return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n  if (Array.isArray(pattern)) {\n    return pattern.indexOf(name) > -1\n  } else if (typeof pattern === 'string') {\n    return pattern.split(',').indexOf(name) > -1\n  } else if (isRegExp(pattern)) {\n    return pattern.test(name)\n  }\n  /* istanbul ignore next */\n  return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n  var cache = keepAliveInstance.cache;\n  var keys = keepAliveInstance.keys;\n  var _vnode = keepAliveInstance._vnode;\n  for (var key in cache) {\n    var cachedNode = cache[key];\n    if (cachedNode) {\n      var name = getComponentName(cachedNode.componentOptions);\n      if (name && !filter(name)) {\n        pruneCacheEntry(cache, key, keys, _vnode);\n      }\n    }\n  }\n}\n\nfunction pruneCacheEntry (\n  cache,\n  key,\n  keys,\n  current\n) {\n  var cached$$1 = cache[key];\n  if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n    cached$$1.componentInstance.$destroy();\n  }\n  cache[key] = null;\n  remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n  name: 'keep-alive',\n  abstract: true,\n\n  props: {\n    include: patternTypes,\n    exclude: patternTypes,\n    max: [String, Number]\n  },\n\n  created: function created () {\n    this.cache = Object.create(null);\n    this.keys = [];\n  },\n\n  destroyed: function destroyed () {\n    for (var key in this.cache) {\n      pruneCacheEntry(this.cache, key, this.keys);\n    }\n  },\n\n  mounted: function mounted () {\n    var this$1 = this;\n\n    this.$watch('include', function (val) {\n      pruneCache(this$1, function (name) { return matches(val, name); });\n    });\n    this.$watch('exclude', function (val) {\n      pruneCache(this$1, function (name) { return !matches(val, name); });\n    });\n  },\n\n  render: function render () {\n    var slot = this.$slots.default;\n    var vnode = getFirstComponentChild(slot);\n    var componentOptions = vnode && vnode.componentOptions;\n    if (componentOptions) {\n      // check pattern\n      var name = getComponentName(componentOptions);\n      var ref = this;\n      var include = ref.include;\n      var exclude = ref.exclude;\n      if (\n        // not included\n        (include && (!name || !matches(include, name))) ||\n        // excluded\n        (exclude && name && matches(exclude, name))\n      ) {\n        return vnode\n      }\n\n      var ref$1 = this;\n      var cache = ref$1.cache;\n      var keys = ref$1.keys;\n      var key = vnode.key == null\n        // same constructor may get registered as different local components\n        // so cid alone is not enough (#3269)\n        ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n        : vnode.key;\n      if (cache[key]) {\n        vnode.componentInstance = cache[key].componentInstance;\n        // make current key freshest\n        remove(keys, key);\n        keys.push(key);\n      } else {\n        cache[key] = vnode;\n        keys.push(key);\n        // prune oldest entry\n        if (this.max && keys.length > parseInt(this.max)) {\n          pruneCacheEntry(cache, keys[0], keys, this._vnode);\n        }\n      }\n\n      vnode.data.keepAlive = true;\n    }\n    return vnode || (slot && slot[0])\n  }\n};\n\nvar builtInComponents = {\n  KeepAlive: KeepAlive\n};\n\n/*  */\n\nfunction initGlobalAPI (Vue) {\n  // config\n  var configDef = {};\n  configDef.get = function () { return config; };\n  if (process.env.NODE_ENV !== 'production') {\n    configDef.set = function () {\n      warn(\n        'Do not replace the Vue.config object, set individual fields instead.'\n      );\n    };\n  }\n  Object.defineProperty(Vue, 'config', configDef);\n\n  // exposed util methods.\n  // NOTE: these are not considered part of the public API - avoid relying on\n  // them unless you are aware of the risk.\n  Vue.util = {\n    warn: warn,\n    extend: extend,\n    mergeOptions: mergeOptions,\n    defineReactive: defineReactive$$1\n  };\n\n  Vue.set = set;\n  Vue.delete = del;\n  Vue.nextTick = nextTick;\n\n  // 2.6 explicit observable API\n  Vue.observable = function (obj) {\n    observe(obj);\n    return obj\n  };\n\n  Vue.options = Object.create(null);\n  ASSET_TYPES.forEach(function (type) {\n    Vue.options[type + 's'] = Object.create(null);\n  });\n\n  // this is used to identify the \"base\" constructor to extend all plain-object\n  // components with in Weex's multi-instance scenarios.\n  Vue.options._base = Vue;\n\n  extend(Vue.options.components, builtInComponents);\n\n  initUse(Vue);\n  initMixin$1(Vue);\n  initExtend(Vue);\n  initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n  get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n  get: function get () {\n    /* istanbul ignore next */\n    return this.$vnode && this.$vnode.ssrContext\n  }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n  value: FunctionalRenderContext\n});\n\nVue.version = '2.6.12';\n\n/*  */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n  return (\n    (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n    (attr === 'selected' && tag === 'option') ||\n    (attr === 'checked' && tag === 'input') ||\n    (attr === 'muted' && tag === 'video')\n  )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n  return isFalsyAttrValue(value) || value === 'false'\n    ? 'false'\n    // allow arbitrary string value for contenteditable\n    : key === 'contenteditable' && isValidContentEditableValue(value)\n      ? value\n      : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n  'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n  'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n  'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n  'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n  'required,reversed,scoped,seamless,selected,sortable,translate,' +\n  'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n  return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n  return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n  return val == null || val === false\n};\n\n/*  */\n\nfunction genClassForVnode (vnode) {\n  var data = vnode.data;\n  var parentNode = vnode;\n  var childNode = vnode;\n  while (isDef(childNode.componentInstance)) {\n    childNode = childNode.componentInstance._vnode;\n    if (childNode && childNode.data) {\n      data = mergeClassData(childNode.data, data);\n    }\n  }\n  while (isDef(parentNode = parentNode.parent)) {\n    if (parentNode && parentNode.data) {\n      data = mergeClassData(data, parentNode.data);\n    }\n  }\n  return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n  return {\n    staticClass: concat(child.staticClass, parent.staticClass),\n    class: isDef(child.class)\n      ? [child.class, parent.class]\n      : parent.class\n  }\n}\n\nfunction renderClass (\n  staticClass,\n  dynamicClass\n) {\n  if (isDef(staticClass) || isDef(dynamicClass)) {\n    return concat(staticClass, stringifyClass(dynamicClass))\n  }\n  /* istanbul ignore next */\n  return ''\n}\n\nfunction concat (a, b) {\n  return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n  if (Array.isArray(value)) {\n    return stringifyArray(value)\n  }\n  if (isObject(value)) {\n    return stringifyObject(value)\n  }\n  if (typeof value === 'string') {\n    return value\n  }\n  /* istanbul ignore next */\n  return ''\n}\n\nfunction stringifyArray (value) {\n  var res = '';\n  var stringified;\n  for (var i = 0, l = value.length; i < l; i++) {\n    if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n      if (res) { res += ' '; }\n      res += stringified;\n    }\n  }\n  return res\n}\n\nfunction stringifyObject (value) {\n  var res = '';\n  for (var key in value) {\n    if (value[key]) {\n      if (res) { res += ' '; }\n      res += key;\n    }\n  }\n  return res\n}\n\n/*  */\n\nvar namespaceMap = {\n  svg: 'http://www.w3.org/2000/svg',\n  math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n  'html,body,base,head,link,meta,style,title,' +\n  'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n  'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n  'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n  's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n  'embed,object,param,source,canvas,script,noscript,del,ins,' +\n  'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n  'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n  'output,progress,select,textarea,' +\n  'details,dialog,menu,menuitem,summary,' +\n  'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n  'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n  'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n  'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n  true\n);\n\nvar isReservedTag = function (tag) {\n  return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n  if (isSVG(tag)) {\n    return 'svg'\n  }\n  // basic support for MathML\n  // note it doesn't support other MathML elements being component roots\n  if (tag === 'math') {\n    return 'math'\n  }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n  /* istanbul ignore if */\n  if (!inBrowser) {\n    return true\n  }\n  if (isReservedTag(tag)) {\n    return false\n  }\n  tag = tag.toLowerCase();\n  /* istanbul ignore if */\n  if (unknownElementCache[tag] != null) {\n    return unknownElementCache[tag]\n  }\n  var el = document.createElement(tag);\n  if (tag.indexOf('-') > -1) {\n    // http://stackoverflow.com/a/28210364/1070244\n    return (unknownElementCache[tag] = (\n      el.constructor === window.HTMLUnknownElement ||\n      el.constructor === window.HTMLElement\n    ))\n  } else {\n    return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n  }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/*  */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n  if (typeof el === 'string') {\n    var selected = document.querySelector(el);\n    if (!selected) {\n      process.env.NODE_ENV !== 'production' && warn(\n        'Cannot find element: ' + el\n      );\n      return document.createElement('div')\n    }\n    return selected\n  } else {\n    return el\n  }\n}\n\n/*  */\n\nfunction createElement$1 (tagName, vnode) {\n  var elm = document.createElement(tagName);\n  if (tagName !== 'select') {\n    return elm\n  }\n  // false or null will remove the attribute but undefined will not\n  if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n    elm.setAttribute('multiple', 'multiple');\n  }\n  return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n  return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n  return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n  return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n  parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n  node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n  node.appendChild(child);\n}\n\nfunction parentNode (node) {\n  return node.parentNode\n}\n\nfunction nextSibling (node) {\n  return node.nextSibling\n}\n\nfunction tagName (node) {\n  return node.tagName\n}\n\nfunction setTextContent (node, text) {\n  node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n  node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n  createElement: createElement$1,\n  createElementNS: createElementNS,\n  createTextNode: createTextNode,\n  createComment: createComment,\n  insertBefore: insertBefore,\n  removeChild: removeChild,\n  appendChild: appendChild,\n  parentNode: parentNode,\n  nextSibling: nextSibling,\n  tagName: tagName,\n  setTextContent: setTextContent,\n  setStyleScope: setStyleScope\n});\n\n/*  */\n\nvar ref = {\n  create: function create (_, vnode) {\n    registerRef(vnode);\n  },\n  update: function update (oldVnode, vnode) {\n    if (oldVnode.data.ref !== vnode.data.ref) {\n      registerRef(oldVnode, true);\n      registerRef(vnode);\n    }\n  },\n  destroy: function destroy (vnode) {\n    registerRef(vnode, true);\n  }\n};\n\nfunction registerRef (vnode, isRemoval) {\n  var key = vnode.data.ref;\n  if (!isDef(key)) { return }\n\n  var vm = vnode.context;\n  var ref = vnode.componentInstance || vnode.elm;\n  var refs = vm.$refs;\n  if (isRemoval) {\n    if (Array.isArray(refs[key])) {\n      remove(refs[key], ref);\n    } else if (refs[key] === ref) {\n      refs[key] = undefined;\n    }\n  } else {\n    if (vnode.data.refInFor) {\n      if (!Array.isArray(refs[key])) {\n        refs[key] = [ref];\n      } else if (refs[key].indexOf(ref) < 0) {\n        // $flow-disable-line\n        refs[key].push(ref);\n      }\n    } else {\n      refs[key] = ref;\n    }\n  }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n  return (\n    a.key === b.key && (\n      (\n        a.tag === b.tag &&\n        a.isComment === b.isComment &&\n        isDef(a.data) === isDef(b.data) &&\n        sameInputType(a, b)\n      ) || (\n        isTrue(a.isAsyncPlaceholder) &&\n        a.asyncFactory === b.asyncFactory &&\n        isUndef(b.asyncFactory.error)\n      )\n    )\n  )\n}\n\nfunction sameInputType (a, b) {\n  if (a.tag !== 'input') { return true }\n  var i;\n  var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n  var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n  return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n  var i, key;\n  var map = {};\n  for (i = beginIdx; i <= endIdx; ++i) {\n    key = children[i].key;\n    if (isDef(key)) { map[key] = i; }\n  }\n  return map\n}\n\nfunction createPatchFunction (backend) {\n  var i, j;\n  var cbs = {};\n\n  var modules = backend.modules;\n  var nodeOps = backend.nodeOps;\n\n  for (i = 0; i < hooks.length; ++i) {\n    cbs[hooks[i]] = [];\n    for (j = 0; j < modules.length; ++j) {\n      if (isDef(modules[j][hooks[i]])) {\n        cbs[hooks[i]].push(modules[j][hooks[i]]);\n      }\n    }\n  }\n\n  function emptyNodeAt (elm) {\n    return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n  }\n\n  function createRmCb (childElm, listeners) {\n    function remove$$1 () {\n      if (--remove$$1.listeners === 0) {\n        removeNode(childElm);\n      }\n    }\n    remove$$1.listeners = listeners;\n    return remove$$1\n  }\n\n  function removeNode (el) {\n    var parent = nodeOps.parentNode(el);\n    // element may have already been removed due to v-html / v-text\n    if (isDef(parent)) {\n      nodeOps.removeChild(parent, el);\n    }\n  }\n\n  function isUnknownElement$$1 (vnode, inVPre) {\n    return (\n      !inVPre &&\n      !vnode.ns &&\n      !(\n        config.ignoredElements.length &&\n        config.ignoredElements.some(function (ignore) {\n          return isRegExp(ignore)\n            ? ignore.test(vnode.tag)\n            : ignore === vnode.tag\n        })\n      ) &&\n      config.isUnknownElement(vnode.tag)\n    )\n  }\n\n  var creatingElmInVPre = 0;\n\n  function createElm (\n    vnode,\n    insertedVnodeQueue,\n    parentElm,\n    refElm,\n    nested,\n    ownerArray,\n    index\n  ) {\n    if (isDef(vnode.elm) && isDef(ownerArray)) {\n      // This vnode was used in a previous render!\n      // now it's used as a new node, overwriting its elm would cause\n      // potential patch errors down the road when it's used as an insertion\n      // reference node. Instead, we clone the node on-demand before creating\n      // associated DOM element for it.\n      vnode = ownerArray[index] = cloneVNode(vnode);\n    }\n\n    vnode.isRootInsert = !nested; // for transition enter check\n    if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n      return\n    }\n\n    var data = vnode.data;\n    var children = vnode.children;\n    var tag = vnode.tag;\n    if (isDef(tag)) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (data && data.pre) {\n          creatingElmInVPre++;\n        }\n        if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n          warn(\n            'Unknown custom element: <' + tag + '> - did you ' +\n            'register the component correctly? For recursive components, ' +\n            'make sure to provide the \"name\" option.',\n            vnode.context\n          );\n        }\n      }\n\n      vnode.elm = vnode.ns\n        ? nodeOps.createElementNS(vnode.ns, tag)\n        : nodeOps.createElement(tag, vnode);\n      setScope(vnode);\n\n      /* istanbul ignore if */\n      {\n        createChildren(vnode, children, insertedVnodeQueue);\n        if (isDef(data)) {\n          invokeCreateHooks(vnode, insertedVnodeQueue);\n        }\n        insert(parentElm, vnode.elm, refElm);\n      }\n\n      if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n        creatingElmInVPre--;\n      }\n    } else if (isTrue(vnode.isComment)) {\n      vnode.elm = nodeOps.createComment(vnode.text);\n      insert(parentElm, vnode.elm, refElm);\n    } else {\n      vnode.elm = nodeOps.createTextNode(vnode.text);\n      insert(parentElm, vnode.elm, refElm);\n    }\n  }\n\n  function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n    var i = vnode.data;\n    if (isDef(i)) {\n      var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n      if (isDef(i = i.hook) && isDef(i = i.init)) {\n        i(vnode, false /* hydrating */);\n      }\n      // after calling the init hook, if the vnode is a child component\n      // it should've created a child instance and mounted it. the child\n      // component also has set the placeholder vnode's elm.\n      // in that case we can just return the element and be done.\n      if (isDef(vnode.componentInstance)) {\n        initComponent(vnode, insertedVnodeQueue);\n        insert(parentElm, vnode.elm, refElm);\n        if (isTrue(isReactivated)) {\n          reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n        }\n        return true\n      }\n    }\n  }\n\n  function initComponent (vnode, insertedVnodeQueue) {\n    if (isDef(vnode.data.pendingInsert)) {\n      insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n      vnode.data.pendingInsert = null;\n    }\n    vnode.elm = vnode.componentInstance.$el;\n    if (isPatchable(vnode)) {\n      invokeCreateHooks(vnode, insertedVnodeQueue);\n      setScope(vnode);\n    } else {\n      // empty component root.\n      // skip all element-related modules except for ref (#3455)\n      registerRef(vnode);\n      // make sure to invoke the insert hook\n      insertedVnodeQueue.push(vnode);\n    }\n  }\n\n  function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n    var i;\n    // hack for #4339: a reactivated component with inner transition\n    // does not trigger because the inner node's created hooks are not called\n    // again. It's not ideal to involve module-specific logic in here but\n    // there doesn't seem to be a better way to do it.\n    var innerNode = vnode;\n    while (innerNode.componentInstance) {\n      innerNode = innerNode.componentInstance._vnode;\n      if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n        for (i = 0; i < cbs.activate.length; ++i) {\n          cbs.activate[i](emptyNode, innerNode);\n        }\n        insertedVnodeQueue.push(innerNode);\n        break\n      }\n    }\n    // unlike a newly created component,\n    // a reactivated keep-alive component doesn't insert itself\n    insert(parentElm, vnode.elm, refElm);\n  }\n\n  function insert (parent, elm, ref$$1) {\n    if (isDef(parent)) {\n      if (isDef(ref$$1)) {\n        if (nodeOps.parentNode(ref$$1) === parent) {\n          nodeOps.insertBefore(parent, elm, ref$$1);\n        }\n      } else {\n        nodeOps.appendChild(parent, elm);\n      }\n    }\n  }\n\n  function createChildren (vnode, children, insertedVnodeQueue) {\n    if (Array.isArray(children)) {\n      if (process.env.NODE_ENV !== 'production') {\n        checkDuplicateKeys(children);\n      }\n      for (var i = 0; i < children.length; ++i) {\n        createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n      }\n    } else if (isPrimitive(vnode.text)) {\n      nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n    }\n  }\n\n  function isPatchable (vnode) {\n    while (vnode.componentInstance) {\n      vnode = vnode.componentInstance._vnode;\n    }\n    return isDef(vnode.tag)\n  }\n\n  function invokeCreateHooks (vnode, insertedVnodeQueue) {\n    for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n      cbs.create[i$1](emptyNode, vnode);\n    }\n    i = vnode.data.hook; // Reuse variable\n    if (isDef(i)) {\n      if (isDef(i.create)) { i.create(emptyNode, vnode); }\n      if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n    }\n  }\n\n  // set scope id attribute for scoped CSS.\n  // this is implemented as a special case to avoid the overhead\n  // of going through the normal attribute patching process.\n  function setScope (vnode) {\n    var i;\n    if (isDef(i = vnode.fnScopeId)) {\n      nodeOps.setStyleScope(vnode.elm, i);\n    } else {\n      var ancestor = vnode;\n      while (ancestor) {\n        if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n          nodeOps.setStyleScope(vnode.elm, i);\n        }\n        ancestor = ancestor.parent;\n      }\n    }\n    // for slot content they should also get the scopeId from the host instance.\n    if (isDef(i = activeInstance) &&\n      i !== vnode.context &&\n      i !== vnode.fnContext &&\n      isDef(i = i.$options._scopeId)\n    ) {\n      nodeOps.setStyleScope(vnode.elm, i);\n    }\n  }\n\n  function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n    for (; startIdx <= endIdx; ++startIdx) {\n      createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n    }\n  }\n\n  function invokeDestroyHook (vnode) {\n    var i, j;\n    var data = vnode.data;\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n      for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n    }\n    if (isDef(i = vnode.children)) {\n      for (j = 0; j < vnode.children.length; ++j) {\n        invokeDestroyHook(vnode.children[j]);\n      }\n    }\n  }\n\n  function removeVnodes (vnodes, startIdx, endIdx) {\n    for (; startIdx <= endIdx; ++startIdx) {\n      var ch = vnodes[startIdx];\n      if (isDef(ch)) {\n        if (isDef(ch.tag)) {\n          removeAndInvokeRemoveHook(ch);\n          invokeDestroyHook(ch);\n        } else { // Text node\n          removeNode(ch.elm);\n        }\n      }\n    }\n  }\n\n  function removeAndInvokeRemoveHook (vnode, rm) {\n    if (isDef(rm) || isDef(vnode.data)) {\n      var i;\n      var listeners = cbs.remove.length + 1;\n      if (isDef(rm)) {\n        // we have a recursively passed down rm callback\n        // increase the listeners count\n        rm.listeners += listeners;\n      } else {\n        // directly removing\n        rm = createRmCb(vnode.elm, listeners);\n      }\n      // recursively invoke hooks on child component root node\n      if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n        removeAndInvokeRemoveHook(i, rm);\n      }\n      for (i = 0; i < cbs.remove.length; ++i) {\n        cbs.remove[i](vnode, rm);\n      }\n      if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n        i(vnode, rm);\n      } else {\n        rm();\n      }\n    } else {\n      removeNode(vnode.elm);\n    }\n  }\n\n  function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n    var oldStartIdx = 0;\n    var newStartIdx = 0;\n    var oldEndIdx = oldCh.length - 1;\n    var oldStartVnode = oldCh[0];\n    var oldEndVnode = oldCh[oldEndIdx];\n    var newEndIdx = newCh.length - 1;\n    var newStartVnode = newCh[0];\n    var newEndVnode = newCh[newEndIdx];\n    var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n    // removeOnly is a special flag used only by <transition-group>\n    // to ensure removed elements stay in correct relative positions\n    // during leaving transitions\n    var canMove = !removeOnly;\n\n    if (process.env.NODE_ENV !== 'production') {\n      checkDuplicateKeys(newCh);\n    }\n\n    while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n      if (isUndef(oldStartVnode)) {\n        oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n      } else if (isUndef(oldEndVnode)) {\n        oldEndVnode = oldCh[--oldEndIdx];\n      } else if (sameVnode(oldStartVnode, newStartVnode)) {\n        patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n        oldStartVnode = oldCh[++oldStartIdx];\n        newStartVnode = newCh[++newStartIdx];\n      } else if (sameVnode(oldEndVnode, newEndVnode)) {\n        patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n        oldEndVnode = oldCh[--oldEndIdx];\n        newEndVnode = newCh[--newEndIdx];\n      } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n        patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n        canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n        oldStartVnode = oldCh[++oldStartIdx];\n        newEndVnode = newCh[--newEndIdx];\n      } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n        patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n        canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n        oldEndVnode = oldCh[--oldEndIdx];\n        newStartVnode = newCh[++newStartIdx];\n      } else {\n        if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n        idxInOld = isDef(newStartVnode.key)\n          ? oldKeyToIdx[newStartVnode.key]\n          : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n        if (isUndef(idxInOld)) { // New element\n          createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n        } else {\n          vnodeToMove = oldCh[idxInOld];\n          if (sameVnode(vnodeToMove, newStartVnode)) {\n            patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n            oldCh[idxInOld] = undefined;\n            canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n          } else {\n            // same key but different element. treat as new element\n            createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n          }\n        }\n        newStartVnode = newCh[++newStartIdx];\n      }\n    }\n    if (oldStartIdx > oldEndIdx) {\n      refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n      addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n    } else if (newStartIdx > newEndIdx) {\n      removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n    }\n  }\n\n  function checkDuplicateKeys (children) {\n    var seenKeys = {};\n    for (var i = 0; i < children.length; i++) {\n      var vnode = children[i];\n      var key = vnode.key;\n      if (isDef(key)) {\n        if (seenKeys[key]) {\n          warn(\n            (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n            vnode.context\n          );\n        } else {\n          seenKeys[key] = true;\n        }\n      }\n    }\n  }\n\n  function findIdxInOld (node, oldCh, start, end) {\n    for (var i = start; i < end; i++) {\n      var c = oldCh[i];\n      if (isDef(c) && sameVnode(node, c)) { return i }\n    }\n  }\n\n  function patchVnode (\n    oldVnode,\n    vnode,\n    insertedVnodeQueue,\n    ownerArray,\n    index,\n    removeOnly\n  ) {\n    if (oldVnode === vnode) {\n      return\n    }\n\n    if (isDef(vnode.elm) && isDef(ownerArray)) {\n      // clone reused vnode\n      vnode = ownerArray[index] = cloneVNode(vnode);\n    }\n\n    var elm = vnode.elm = oldVnode.elm;\n\n    if (isTrue(oldVnode.isAsyncPlaceholder)) {\n      if (isDef(vnode.asyncFactory.resolved)) {\n        hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n      } else {\n        vnode.isAsyncPlaceholder = true;\n      }\n      return\n    }\n\n    // reuse element for static trees.\n    // note we only do this if the vnode is cloned -\n    // if the new node is not cloned it means the render functions have been\n    // reset by the hot-reload-api and we need to do a proper re-render.\n    if (isTrue(vnode.isStatic) &&\n      isTrue(oldVnode.isStatic) &&\n      vnode.key === oldVnode.key &&\n      (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n    ) {\n      vnode.componentInstance = oldVnode.componentInstance;\n      return\n    }\n\n    var i;\n    var data = vnode.data;\n    if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n      i(oldVnode, vnode);\n    }\n\n    var oldCh = oldVnode.children;\n    var ch = vnode.children;\n    if (isDef(data) && isPatchable(vnode)) {\n      for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n      if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n    }\n    if (isUndef(vnode.text)) {\n      if (isDef(oldCh) && isDef(ch)) {\n        if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n      } else if (isDef(ch)) {\n        if (process.env.NODE_ENV !== 'production') {\n          checkDuplicateKeys(ch);\n        }\n        if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n        addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n      } else if (isDef(oldCh)) {\n        removeVnodes(oldCh, 0, oldCh.length - 1);\n      } else if (isDef(oldVnode.text)) {\n        nodeOps.setTextContent(elm, '');\n      }\n    } else if (oldVnode.text !== vnode.text) {\n      nodeOps.setTextContent(elm, vnode.text);\n    }\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n    }\n  }\n\n  function invokeInsertHook (vnode, queue, initial) {\n    // delay insert hooks for component root nodes, invoke them after the\n    // element is really inserted\n    if (isTrue(initial) && isDef(vnode.parent)) {\n      vnode.parent.data.pendingInsert = queue;\n    } else {\n      for (var i = 0; i < queue.length; ++i) {\n        queue[i].data.hook.insert(queue[i]);\n      }\n    }\n  }\n\n  var hydrationBailed = false;\n  // list of modules that can skip create hook during hydration because they\n  // are already rendered on the client or has no need for initialization\n  // Note: style is excluded because it relies on initial clone for future\n  // deep updates (#7063).\n  var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n  // Note: this is a browser-only function so we can assume elms are DOM nodes.\n  function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n    var i;\n    var tag = vnode.tag;\n    var data = vnode.data;\n    var children = vnode.children;\n    inVPre = inVPre || (data && data.pre);\n    vnode.elm = elm;\n\n    if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n      vnode.isAsyncPlaceholder = true;\n      return true\n    }\n    // assert node match\n    if (process.env.NODE_ENV !== 'production') {\n      if (!assertNodeMatch(elm, vnode, inVPre)) {\n        return false\n      }\n    }\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n      if (isDef(i = vnode.componentInstance)) {\n        // child component. it should have hydrated its own tree.\n        initComponent(vnode, insertedVnodeQueue);\n        return true\n      }\n    }\n    if (isDef(tag)) {\n      if (isDef(children)) {\n        // empty element, allow client to pick up and populate children\n        if (!elm.hasChildNodes()) {\n          createChildren(vnode, children, insertedVnodeQueue);\n        } else {\n          // v-html and domProps: innerHTML\n          if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n            if (i !== elm.innerHTML) {\n              /* istanbul ignore if */\n              if (process.env.NODE_ENV !== 'production' &&\n                typeof console !== 'undefined' &&\n                !hydrationBailed\n              ) {\n                hydrationBailed = true;\n                console.warn('Parent: ', elm);\n                console.warn('server innerHTML: ', i);\n                console.warn('client innerHTML: ', elm.innerHTML);\n              }\n              return false\n            }\n          } else {\n            // iterate and compare children lists\n            var childrenMatch = true;\n            var childNode = elm.firstChild;\n            for (var i$1 = 0; i$1 < children.length; i$1++) {\n              if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n                childrenMatch = false;\n                break\n              }\n              childNode = childNode.nextSibling;\n            }\n            // if childNode is not null, it means the actual childNodes list is\n            // longer than the virtual children list.\n            if (!childrenMatch || childNode) {\n              /* istanbul ignore if */\n              if (process.env.NODE_ENV !== 'production' &&\n                typeof console !== 'undefined' &&\n                !hydrationBailed\n              ) {\n                hydrationBailed = true;\n                console.warn('Parent: ', elm);\n                console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n              }\n              return false\n            }\n          }\n        }\n      }\n      if (isDef(data)) {\n        var fullInvoke = false;\n        for (var key in data) {\n          if (!isRenderedModule(key)) {\n            fullInvoke = true;\n            invokeCreateHooks(vnode, insertedVnodeQueue);\n            break\n          }\n        }\n        if (!fullInvoke && data['class']) {\n          // ensure collecting deps for deep class bindings for future updates\n          traverse(data['class']);\n        }\n      }\n    } else if (elm.data !== vnode.text) {\n      elm.data = vnode.text;\n    }\n    return true\n  }\n\n  function assertNodeMatch (node, vnode, inVPre) {\n    if (isDef(vnode.tag)) {\n      return vnode.tag.indexOf('vue-component') === 0 || (\n        !isUnknownElement$$1(vnode, inVPre) &&\n        vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n      )\n    } else {\n      return node.nodeType === (vnode.isComment ? 8 : 3)\n    }\n  }\n\n  return function patch (oldVnode, vnode, hydrating, removeOnly) {\n    if (isUndef(vnode)) {\n      if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n      return\n    }\n\n    var isInitialPatch = false;\n    var insertedVnodeQueue = [];\n\n    if (isUndef(oldVnode)) {\n      // empty mount (likely as component), create new root element\n      isInitialPatch = true;\n      createElm(vnode, insertedVnodeQueue);\n    } else {\n      var isRealElement = isDef(oldVnode.nodeType);\n      if (!isRealElement && sameVnode(oldVnode, vnode)) {\n        // patch existing root node\n        patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n      } else {\n        if (isRealElement) {\n          // mounting to a real element\n          // check if this is server-rendered content and if we can perform\n          // a successful hydration.\n          if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n            oldVnode.removeAttribute(SSR_ATTR);\n            hydrating = true;\n          }\n          if (isTrue(hydrating)) {\n            if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n              invokeInsertHook(vnode, insertedVnodeQueue, true);\n              return oldVnode\n            } else if (process.env.NODE_ENV !== 'production') {\n              warn(\n                'The client-side rendered virtual DOM tree is not matching ' +\n                'server-rendered content. This is likely caused by incorrect ' +\n                'HTML markup, for example nesting block-level elements inside ' +\n                '<p>, or missing <tbody>. Bailing hydration and performing ' +\n                'full client-side render.'\n              );\n            }\n          }\n          // either not server-rendered, or hydration failed.\n          // create an empty node and replace it\n          oldVnode = emptyNodeAt(oldVnode);\n        }\n\n        // replacing existing element\n        var oldElm = oldVnode.elm;\n        var parentElm = nodeOps.parentNode(oldElm);\n\n        // create new node\n        createElm(\n          vnode,\n          insertedVnodeQueue,\n          // extremely rare edge case: do not insert if old element is in a\n          // leaving transition. Only happens when combining transition +\n          // keep-alive + HOCs. (#4590)\n          oldElm._leaveCb ? null : parentElm,\n          nodeOps.nextSibling(oldElm)\n        );\n\n        // update parent placeholder node element, recursively\n        if (isDef(vnode.parent)) {\n          var ancestor = vnode.parent;\n          var patchable = isPatchable(vnode);\n          while (ancestor) {\n            for (var i = 0; i < cbs.destroy.length; ++i) {\n              cbs.destroy[i](ancestor);\n            }\n            ancestor.elm = vnode.elm;\n            if (patchable) {\n              for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n                cbs.create[i$1](emptyNode, ancestor);\n              }\n              // #6513\n              // invoke insert hooks that may have been merged by create hooks.\n              // e.g. for directives that uses the \"inserted\" hook.\n              var insert = ancestor.data.hook.insert;\n              if (insert.merged) {\n                // start at index 1 to avoid re-invoking component mounted hook\n                for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n                  insert.fns[i$2]();\n                }\n              }\n            } else {\n              registerRef(ancestor);\n            }\n            ancestor = ancestor.parent;\n          }\n        }\n\n        // destroy old node\n        if (isDef(parentElm)) {\n          removeVnodes([oldVnode], 0, 0);\n        } else if (isDef(oldVnode.tag)) {\n          invokeDestroyHook(oldVnode);\n        }\n      }\n    }\n\n    invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n    return vnode.elm\n  }\n}\n\n/*  */\n\nvar directives = {\n  create: updateDirectives,\n  update: updateDirectives,\n  destroy: function unbindDirectives (vnode) {\n    updateDirectives(vnode, emptyNode);\n  }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n  if (oldVnode.data.directives || vnode.data.directives) {\n    _update(oldVnode, vnode);\n  }\n}\n\nfunction _update (oldVnode, vnode) {\n  var isCreate = oldVnode === emptyNode;\n  var isDestroy = vnode === emptyNode;\n  var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n  var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n  var dirsWithInsert = [];\n  var dirsWithPostpatch = [];\n\n  var key, oldDir, dir;\n  for (key in newDirs) {\n    oldDir = oldDirs[key];\n    dir = newDirs[key];\n    if (!oldDir) {\n      // new directive, bind\n      callHook$1(dir, 'bind', vnode, oldVnode);\n      if (dir.def && dir.def.inserted) {\n        dirsWithInsert.push(dir);\n      }\n    } else {\n      // existing directive, update\n      dir.oldValue = oldDir.value;\n      dir.oldArg = oldDir.arg;\n      callHook$1(dir, 'update', vnode, oldVnode);\n      if (dir.def && dir.def.componentUpdated) {\n        dirsWithPostpatch.push(dir);\n      }\n    }\n  }\n\n  if (dirsWithInsert.length) {\n    var callInsert = function () {\n      for (var i = 0; i < dirsWithInsert.length; i++) {\n        callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n      }\n    };\n    if (isCreate) {\n      mergeVNodeHook(vnode, 'insert', callInsert);\n    } else {\n      callInsert();\n    }\n  }\n\n  if (dirsWithPostpatch.length) {\n    mergeVNodeHook(vnode, 'postpatch', function () {\n      for (var i = 0; i < dirsWithPostpatch.length; i++) {\n        callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n      }\n    });\n  }\n\n  if (!isCreate) {\n    for (key in oldDirs) {\n      if (!newDirs[key]) {\n        // no longer present, unbind\n        callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n      }\n    }\n  }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n  dirs,\n  vm\n) {\n  var res = Object.create(null);\n  if (!dirs) {\n    // $flow-disable-line\n    return res\n  }\n  var i, dir;\n  for (i = 0; i < dirs.length; i++) {\n    dir = dirs[i];\n    if (!dir.modifiers) {\n      // $flow-disable-line\n      dir.modifiers = emptyModifiers;\n    }\n    res[getRawDirName(dir)] = dir;\n    dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n  }\n  // $flow-disable-line\n  return res\n}\n\nfunction getRawDirName (dir) {\n  return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n  var fn = dir.def && dir.def[hook];\n  if (fn) {\n    try {\n      fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n    } catch (e) {\n      handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n    }\n  }\n}\n\nvar baseModules = [\n  ref,\n  directives\n];\n\n/*  */\n\nfunction updateAttrs (oldVnode, vnode) {\n  var opts = vnode.componentOptions;\n  if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n    return\n  }\n  if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n    return\n  }\n  var key, cur, old;\n  var elm = vnode.elm;\n  var oldAttrs = oldVnode.data.attrs || {};\n  var attrs = vnode.data.attrs || {};\n  // clone observed objects, as the user probably wants to mutate it\n  if (isDef(attrs.__ob__)) {\n    attrs = vnode.data.attrs = extend({}, attrs);\n  }\n\n  for (key in attrs) {\n    cur = attrs[key];\n    old = oldAttrs[key];\n    if (old !== cur) {\n      setAttr(elm, key, cur);\n    }\n  }\n  // #4391: in IE9, setting type can reset value for input[type=radio]\n  // #6666: IE/Edge forces progress value down to 1 before setting a max\n  /* istanbul ignore if */\n  if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n    setAttr(elm, 'value', attrs.value);\n  }\n  for (key in oldAttrs) {\n    if (isUndef(attrs[key])) {\n      if (isXlink(key)) {\n        elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n      } else if (!isEnumeratedAttr(key)) {\n        elm.removeAttribute(key);\n      }\n    }\n  }\n}\n\nfunction setAttr (el, key, value) {\n  if (el.tagName.indexOf('-') > -1) {\n    baseSetAttr(el, key, value);\n  } else if (isBooleanAttr(key)) {\n    // set attribute for blank value\n    // e.g. <option disabled>Select one</option>\n    if (isFalsyAttrValue(value)) {\n      el.removeAttribute(key);\n    } else {\n      // technically allowfullscreen is a boolean attribute for <iframe>,\n      // but Flash expects a value of \"true\" when used on <embed> tag\n      value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n        ? 'true'\n        : key;\n      el.setAttribute(key, value);\n    }\n  } else if (isEnumeratedAttr(key)) {\n    el.setAttribute(key, convertEnumeratedValue(key, value));\n  } else if (isXlink(key)) {\n    if (isFalsyAttrValue(value)) {\n      el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n    } else {\n      el.setAttributeNS(xlinkNS, key, value);\n    }\n  } else {\n    baseSetAttr(el, key, value);\n  }\n}\n\nfunction baseSetAttr (el, key, value) {\n  if (isFalsyAttrValue(value)) {\n    el.removeAttribute(key);\n  } else {\n    // #7138: IE10 & 11 fires input event when setting placeholder on\n    // <textarea>... block the first input event and remove the blocker\n    // immediately.\n    /* istanbul ignore if */\n    if (\n      isIE && !isIE9 &&\n      el.tagName === 'TEXTAREA' &&\n      key === 'placeholder' && value !== '' && !el.__ieph\n    ) {\n      var blocker = function (e) {\n        e.stopImmediatePropagation();\n        el.removeEventListener('input', blocker);\n      };\n      el.addEventListener('input', blocker);\n      // $flow-disable-line\n      el.__ieph = true; /* IE placeholder patched */\n    }\n    el.setAttribute(key, value);\n  }\n}\n\nvar attrs = {\n  create: updateAttrs,\n  update: updateAttrs\n};\n\n/*  */\n\nfunction updateClass (oldVnode, vnode) {\n  var el = vnode.elm;\n  var data = vnode.data;\n  var oldData = oldVnode.data;\n  if (\n    isUndef(data.staticClass) &&\n    isUndef(data.class) && (\n      isUndef(oldData) || (\n        isUndef(oldData.staticClass) &&\n        isUndef(oldData.class)\n      )\n    )\n  ) {\n    return\n  }\n\n  var cls = genClassForVnode(vnode);\n\n  // handle transition classes\n  var transitionClass = el._transitionClasses;\n  if (isDef(transitionClass)) {\n    cls = concat(cls, stringifyClass(transitionClass));\n  }\n\n  // set the class\n  if (cls !== el._prevClass) {\n    el.setAttribute('class', cls);\n    el._prevClass = cls;\n  }\n}\n\nvar klass = {\n  create: updateClass,\n  update: updateClass\n};\n\n/*  */\n\n/*  */\n\n/*  */\n\n/*  */\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\n/*  */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n  /* istanbul ignore if */\n  if (isDef(on[RANGE_TOKEN])) {\n    // IE input[type=range] only supports `change` event\n    var event = isIE ? 'change' : 'input';\n    on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n    delete on[RANGE_TOKEN];\n  }\n  // This was originally intended to fix #4521 but no longer necessary\n  // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n  /* istanbul ignore if */\n  if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n    on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n    delete on[CHECKBOX_RADIO_TOKEN];\n  }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n  var _target = target$1; // save current target element in closure\n  return function onceHandler () {\n    var res = handler.apply(null, arguments);\n    if (res !== null) {\n      remove$2(event, onceHandler, capture, _target);\n    }\n  }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n  name,\n  handler,\n  capture,\n  passive\n) {\n  // async edge case #6566: inner click event triggers patch, event handler\n  // attached to outer element during patch, and triggered again. This\n  // happens because browsers fire microtask ticks between event propagation.\n  // the solution is simple: we save the timestamp when a handler is attached,\n  // and the handler would only fire if the event passed to it was fired\n  // AFTER it was attached.\n  if (useMicrotaskFix) {\n    var attachedTimestamp = currentFlushTimestamp;\n    var original = handler;\n    handler = original._wrapper = function (e) {\n      if (\n        // no bubbling, should always fire.\n        // this is just a safety net in case event.timeStamp is unreliable in\n        // certain weird environments...\n        e.target === e.currentTarget ||\n        // event is fired after handler attachment\n        e.timeStamp >= attachedTimestamp ||\n        // bail for environments that have buggy event.timeStamp implementations\n        // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n        // #9681 QtWebEngine event.timeStamp is negative value\n        e.timeStamp <= 0 ||\n        // #9448 bail if event is fired in another document in a multi-page\n        // electron/nw.js app, since event.timeStamp will be using a different\n        // starting reference\n        e.target.ownerDocument !== document\n      ) {\n        return original.apply(this, arguments)\n      }\n    };\n  }\n  target$1.addEventListener(\n    name,\n    handler,\n    supportsPassive\n      ? { capture: capture, passive: passive }\n      : capture\n  );\n}\n\nfunction remove$2 (\n  name,\n  handler,\n  capture,\n  _target\n) {\n  (_target || target$1).removeEventListener(\n    name,\n    handler._wrapper || handler,\n    capture\n  );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n  if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n    return\n  }\n  var on = vnode.data.on || {};\n  var oldOn = oldVnode.data.on || {};\n  target$1 = vnode.elm;\n  normalizeEvents(on);\n  updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n  target$1 = undefined;\n}\n\nvar events = {\n  create: updateDOMListeners,\n  update: updateDOMListeners\n};\n\n/*  */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n  if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n    return\n  }\n  var key, cur;\n  var elm = vnode.elm;\n  var oldProps = oldVnode.data.domProps || {};\n  var props = vnode.data.domProps || {};\n  // clone observed objects, as the user probably wants to mutate it\n  if (isDef(props.__ob__)) {\n    props = vnode.data.domProps = extend({}, props);\n  }\n\n  for (key in oldProps) {\n    if (!(key in props)) {\n      elm[key] = '';\n    }\n  }\n\n  for (key in props) {\n    cur = props[key];\n    // ignore children if the node has textContent or innerHTML,\n    // as these will throw away existing DOM nodes and cause removal errors\n    // on subsequent patches (#3360)\n    if (key === 'textContent' || key === 'innerHTML') {\n      if (vnode.children) { vnode.children.length = 0; }\n      if (cur === oldProps[key]) { continue }\n      // #6601 work around Chrome version <= 55 bug where single textNode\n      // replaced by innerHTML/textContent retains its parentNode property\n      if (elm.childNodes.length === 1) {\n        elm.removeChild(elm.childNodes[0]);\n      }\n    }\n\n    if (key === 'value' && elm.tagName !== 'PROGRESS') {\n      // store value as _value as well since\n      // non-string values will be stringified\n      elm._value = cur;\n      // avoid resetting cursor position when value is the same\n      var strCur = isUndef(cur) ? '' : String(cur);\n      if (shouldUpdateValue(elm, strCur)) {\n        elm.value = strCur;\n      }\n    } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n      // IE doesn't support innerHTML for SVG elements\n      svgContainer = svgContainer || document.createElement('div');\n      svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n      var svg = svgContainer.firstChild;\n      while (elm.firstChild) {\n        elm.removeChild(elm.firstChild);\n      }\n      while (svg.firstChild) {\n        elm.appendChild(svg.firstChild);\n      }\n    } else if (\n      // skip the update if old and new VDOM state is the same.\n      // `value` is handled separately because the DOM value may be temporarily\n      // out of sync with VDOM state due to focus, composition and modifiers.\n      // This  #4521 by skipping the unnecessary `checked` update.\n      cur !== oldProps[key]\n    ) {\n      // some property updates can throw\n      // e.g. `value` on <progress> w/ non-finite value\n      try {\n        elm[key] = cur;\n      } catch (e) {}\n    }\n  }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n  return (!elm.composing && (\n    elm.tagName === 'OPTION' ||\n    isNotInFocusAndDirty(elm, checkVal) ||\n    isDirtyWithModifiers(elm, checkVal)\n  ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n  // return true when textbox (.number and .trim) loses focus and its value is\n  // not equal to the updated value\n  var notInFocus = true;\n  // #6157\n  // work around IE bug when accessing document.activeElement in an iframe\n  try { notInFocus = document.activeElement !== elm; } catch (e) {}\n  return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n  var value = elm.value;\n  var modifiers = elm._vModifiers; // injected by v-model runtime\n  if (isDef(modifiers)) {\n    if (modifiers.number) {\n      return toNumber(value) !== toNumber(newVal)\n    }\n    if (modifiers.trim) {\n      return value.trim() !== newVal.trim()\n    }\n  }\n  return value !== newVal\n}\n\nvar domProps = {\n  create: updateDOMProps,\n  update: updateDOMProps\n};\n\n/*  */\n\nvar parseStyleText = cached(function (cssText) {\n  var res = {};\n  var listDelimiter = /;(?![^(]*\\))/g;\n  var propertyDelimiter = /:(.+)/;\n  cssText.split(listDelimiter).forEach(function (item) {\n    if (item) {\n      var tmp = item.split(propertyDelimiter);\n      tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n  var style = normalizeStyleBinding(data.style);\n  // static style is pre-processed into an object during compilation\n  // and is always a fresh object, so it's safe to merge into it\n  return data.staticStyle\n    ? extend(data.staticStyle, style)\n    : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n  if (Array.isArray(bindingStyle)) {\n    return toObject(bindingStyle)\n  }\n  if (typeof bindingStyle === 'string') {\n    return parseStyleText(bindingStyle)\n  }\n  return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n  var res = {};\n  var styleData;\n\n  if (checkChild) {\n    var childNode = vnode;\n    while (childNode.componentInstance) {\n      childNode = childNode.componentInstance._vnode;\n      if (\n        childNode && childNode.data &&\n        (styleData = normalizeStyleData(childNode.data))\n      ) {\n        extend(res, styleData);\n      }\n    }\n  }\n\n  if ((styleData = normalizeStyleData(vnode.data))) {\n    extend(res, styleData);\n  }\n\n  var parentNode = vnode;\n  while ((parentNode = parentNode.parent)) {\n    if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n      extend(res, styleData);\n    }\n  }\n  return res\n}\n\n/*  */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n  /* istanbul ignore if */\n  if (cssVarRE.test(name)) {\n    el.style.setProperty(name, val);\n  } else if (importantRE.test(val)) {\n    el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n  } else {\n    var normalizedName = normalize(name);\n    if (Array.isArray(val)) {\n      // Support values array created by autoprefixer, e.g.\n      // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n      // Set them one by one, and the browser will only set those it can recognize\n      for (var i = 0, len = val.length; i < len; i++) {\n        el.style[normalizedName] = val[i];\n      }\n    } else {\n      el.style[normalizedName] = val;\n    }\n  }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n  emptyStyle = emptyStyle || document.createElement('div').style;\n  prop = camelize(prop);\n  if (prop !== 'filter' && (prop in emptyStyle)) {\n    return prop\n  }\n  var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n  for (var i = 0; i < vendorNames.length; i++) {\n    var name = vendorNames[i] + capName;\n    if (name in emptyStyle) {\n      return name\n    }\n  }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n  var data = vnode.data;\n  var oldData = oldVnode.data;\n\n  if (isUndef(data.staticStyle) && isUndef(data.style) &&\n    isUndef(oldData.staticStyle) && isUndef(oldData.style)\n  ) {\n    return\n  }\n\n  var cur, name;\n  var el = vnode.elm;\n  var oldStaticStyle = oldData.staticStyle;\n  var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n  // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n  var oldStyle = oldStaticStyle || oldStyleBinding;\n\n  var style = normalizeStyleBinding(vnode.data.style) || {};\n\n  // store normalized style under a different key for next diff\n  // make sure to clone it if it's reactive, since the user likely wants\n  // to mutate it.\n  vnode.data.normalizedStyle = isDef(style.__ob__)\n    ? extend({}, style)\n    : style;\n\n  var newStyle = getStyle(vnode, true);\n\n  for (name in oldStyle) {\n    if (isUndef(newStyle[name])) {\n      setProp(el, name, '');\n    }\n  }\n  for (name in newStyle) {\n    cur = newStyle[name];\n    if (cur !== oldStyle[name]) {\n      // ie9 setting to null has no effect, must use empty string\n      setProp(el, name, cur == null ? '' : cur);\n    }\n  }\n}\n\nvar style = {\n  create: updateStyle,\n  update: updateStyle\n};\n\n/*  */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n  /* istanbul ignore if */\n  if (!cls || !(cls = cls.trim())) {\n    return\n  }\n\n  /* istanbul ignore else */\n  if (el.classList) {\n    if (cls.indexOf(' ') > -1) {\n      cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n    } else {\n      el.classList.add(cls);\n    }\n  } else {\n    var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n    if (cur.indexOf(' ' + cls + ' ') < 0) {\n      el.setAttribute('class', (cur + cls).trim());\n    }\n  }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n  /* istanbul ignore if */\n  if (!cls || !(cls = cls.trim())) {\n    return\n  }\n\n  /* istanbul ignore else */\n  if (el.classList) {\n    if (cls.indexOf(' ') > -1) {\n      cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n    } else {\n      el.classList.remove(cls);\n    }\n    if (!el.classList.length) {\n      el.removeAttribute('class');\n    }\n  } else {\n    var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n    var tar = ' ' + cls + ' ';\n    while (cur.indexOf(tar) >= 0) {\n      cur = cur.replace(tar, ' ');\n    }\n    cur = cur.trim();\n    if (cur) {\n      el.setAttribute('class', cur);\n    } else {\n      el.removeAttribute('class');\n    }\n  }\n}\n\n/*  */\n\nfunction resolveTransition (def$$1) {\n  if (!def$$1) {\n    return\n  }\n  /* istanbul ignore else */\n  if (typeof def$$1 === 'object') {\n    var res = {};\n    if (def$$1.css !== false) {\n      extend(res, autoCssTransition(def$$1.name || 'v'));\n    }\n    extend(res, def$$1);\n    return res\n  } else if (typeof def$$1 === 'string') {\n    return autoCssTransition(def$$1)\n  }\n}\n\nvar autoCssTransition = cached(function (name) {\n  return {\n    enterClass: (name + \"-enter\"),\n    enterToClass: (name + \"-enter-to\"),\n    enterActiveClass: (name + \"-enter-active\"),\n    leaveClass: (name + \"-leave\"),\n    leaveToClass: (name + \"-leave-to\"),\n    leaveActiveClass: (name + \"-leave-active\")\n  }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n  /* istanbul ignore if */\n  if (window.ontransitionend === undefined &&\n    window.onwebkittransitionend !== undefined\n  ) {\n    transitionProp = 'WebkitTransition';\n    transitionEndEvent = 'webkitTransitionEnd';\n  }\n  if (window.onanimationend === undefined &&\n    window.onwebkitanimationend !== undefined\n  ) {\n    animationProp = 'WebkitAnimation';\n    animationEndEvent = 'webkitAnimationEnd';\n  }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n  ? window.requestAnimationFrame\n    ? window.requestAnimationFrame.bind(window)\n    : setTimeout\n  : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n  raf(function () {\n    raf(fn);\n  });\n}\n\nfunction addTransitionClass (el, cls) {\n  var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n  if (transitionClasses.indexOf(cls) < 0) {\n    transitionClasses.push(cls);\n    addClass(el, cls);\n  }\n}\n\nfunction removeTransitionClass (el, cls) {\n  if (el._transitionClasses) {\n    remove(el._transitionClasses, cls);\n  }\n  removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n  el,\n  expectedType,\n  cb\n) {\n  var ref = getTransitionInfo(el, expectedType);\n  var type = ref.type;\n  var timeout = ref.timeout;\n  var propCount = ref.propCount;\n  if (!type) { return cb() }\n  var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n  var ended = 0;\n  var end = function () {\n    el.removeEventListener(event, onEnd);\n    cb();\n  };\n  var onEnd = function (e) {\n    if (e.target === el) {\n      if (++ended >= propCount) {\n        end();\n      }\n    }\n  };\n  setTimeout(function () {\n    if (ended < propCount) {\n      end();\n    }\n  }, timeout + 1);\n  el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n  var styles = window.getComputedStyle(el);\n  // JSDOM may return undefined for transition properties\n  var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n  var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n  var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n  var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n  var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n  var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n  var type;\n  var timeout = 0;\n  var propCount = 0;\n  /* istanbul ignore if */\n  if (expectedType === TRANSITION) {\n    if (transitionTimeout > 0) {\n      type = TRANSITION;\n      timeout = transitionTimeout;\n      propCount = transitionDurations.length;\n    }\n  } else if (expectedType === ANIMATION) {\n    if (animationTimeout > 0) {\n      type = ANIMATION;\n      timeout = animationTimeout;\n      propCount = animationDurations.length;\n    }\n  } else {\n    timeout = Math.max(transitionTimeout, animationTimeout);\n    type = timeout > 0\n      ? transitionTimeout > animationTimeout\n        ? TRANSITION\n        : ANIMATION\n      : null;\n    propCount = type\n      ? type === TRANSITION\n        ? transitionDurations.length\n        : animationDurations.length\n      : 0;\n  }\n  var hasTransform =\n    type === TRANSITION &&\n    transformRE.test(styles[transitionProp + 'Property']);\n  return {\n    type: type,\n    timeout: timeout,\n    propCount: propCount,\n    hasTransform: hasTransform\n  }\n}\n\nfunction getTimeout (delays, durations) {\n  /* istanbul ignore next */\n  while (delays.length < durations.length) {\n    delays = delays.concat(delays);\n  }\n\n  return Math.max.apply(null, durations.map(function (d, i) {\n    return toMs(d) + toMs(delays[i])\n  }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n  return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/*  */\n\nfunction enter (vnode, toggleDisplay) {\n  var el = vnode.elm;\n\n  // call leave callback now\n  if (isDef(el._leaveCb)) {\n    el._leaveCb.cancelled = true;\n    el._leaveCb();\n  }\n\n  var data = resolveTransition(vnode.data.transition);\n  if (isUndef(data)) {\n    return\n  }\n\n  /* istanbul ignore if */\n  if (isDef(el._enterCb) || el.nodeType !== 1) {\n    return\n  }\n\n  var css = data.css;\n  var type = data.type;\n  var enterClass = data.enterClass;\n  var enterToClass = data.enterToClass;\n  var enterActiveClass = data.enterActiveClass;\n  var appearClass = data.appearClass;\n  var appearToClass = data.appearToClass;\n  var appearActiveClass = data.appearActiveClass;\n  var beforeEnter = data.beforeEnter;\n  var enter = data.enter;\n  var afterEnter = data.afterEnter;\n  var enterCancelled = data.enterCancelled;\n  var beforeAppear = data.beforeAppear;\n  var appear = data.appear;\n  var afterAppear = data.afterAppear;\n  var appearCancelled = data.appearCancelled;\n  var duration = data.duration;\n\n  // activeInstance will always be the <transition> component managing this\n  // transition. One edge case to check is when the <transition> is placed\n  // as the root node of a child component. In that case we need to check\n  // <transition>'s parent for appear check.\n  var context = activeInstance;\n  var transitionNode = activeInstance.$vnode;\n  while (transitionNode && transitionNode.parent) {\n    context = transitionNode.context;\n    transitionNode = transitionNode.parent;\n  }\n\n  var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n  if (isAppear && !appear && appear !== '') {\n    return\n  }\n\n  var startClass = isAppear && appearClass\n    ? appearClass\n    : enterClass;\n  var activeClass = isAppear && appearActiveClass\n    ? appearActiveClass\n    : enterActiveClass;\n  var toClass = isAppear && appearToClass\n    ? appearToClass\n    : enterToClass;\n\n  var beforeEnterHook = isAppear\n    ? (beforeAppear || beforeEnter)\n    : beforeEnter;\n  var enterHook = isAppear\n    ? (typeof appear === 'function' ? appear : enter)\n    : enter;\n  var afterEnterHook = isAppear\n    ? (afterAppear || afterEnter)\n    : afterEnter;\n  var enterCancelledHook = isAppear\n    ? (appearCancelled || enterCancelled)\n    : enterCancelled;\n\n  var explicitEnterDuration = toNumber(\n    isObject(duration)\n      ? duration.enter\n      : duration\n  );\n\n  if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n    checkDuration(explicitEnterDuration, 'enter', vnode);\n  }\n\n  var expectsCSS = css !== false && !isIE9;\n  var userWantsControl = getHookArgumentsLength(enterHook);\n\n  var cb = el._enterCb = once(function () {\n    if (expectsCSS) {\n      removeTransitionClass(el, toClass);\n      removeTransitionClass(el, activeClass);\n    }\n    if (cb.cancelled) {\n      if (expectsCSS) {\n        removeTransitionClass(el, startClass);\n      }\n      enterCancelledHook && enterCancelledHook(el);\n    } else {\n      afterEnterHook && afterEnterHook(el);\n    }\n    el._enterCb = null;\n  });\n\n  if (!vnode.data.show) {\n    // remove pending leave element on enter by injecting an insert hook\n    mergeVNodeHook(vnode, 'insert', function () {\n      var parent = el.parentNode;\n      var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n      if (pendingNode &&\n        pendingNode.tag === vnode.tag &&\n        pendingNode.elm._leaveCb\n      ) {\n        pendingNode.elm._leaveCb();\n      }\n      enterHook && enterHook(el, cb);\n    });\n  }\n\n  // start enter transition\n  beforeEnterHook && beforeEnterHook(el);\n  if (expectsCSS) {\n    addTransitionClass(el, startClass);\n    addTransitionClass(el, activeClass);\n    nextFrame(function () {\n      removeTransitionClass(el, startClass);\n      if (!cb.cancelled) {\n        addTransitionClass(el, toClass);\n        if (!userWantsControl) {\n          if (isValidDuration(explicitEnterDuration)) {\n            setTimeout(cb, explicitEnterDuration);\n          } else {\n            whenTransitionEnds(el, type, cb);\n          }\n        }\n      }\n    });\n  }\n\n  if (vnode.data.show) {\n    toggleDisplay && toggleDisplay();\n    enterHook && enterHook(el, cb);\n  }\n\n  if (!expectsCSS && !userWantsControl) {\n    cb();\n  }\n}\n\nfunction leave (vnode, rm) {\n  var el = vnode.elm;\n\n  // call enter callback now\n  if (isDef(el._enterCb)) {\n    el._enterCb.cancelled = true;\n    el._enterCb();\n  }\n\n  var data = resolveTransition(vnode.data.transition);\n  if (isUndef(data) || el.nodeType !== 1) {\n    return rm()\n  }\n\n  /* istanbul ignore if */\n  if (isDef(el._leaveCb)) {\n    return\n  }\n\n  var css = data.css;\n  var type = data.type;\n  var leaveClass = data.leaveClass;\n  var leaveToClass = data.leaveToClass;\n  var leaveActiveClass = data.leaveActiveClass;\n  var beforeLeave = data.beforeLeave;\n  var leave = data.leave;\n  var afterLeave = data.afterLeave;\n  var leaveCancelled = data.leaveCancelled;\n  var delayLeave = data.delayLeave;\n  var duration = data.duration;\n\n  var expectsCSS = css !== false && !isIE9;\n  var userWantsControl = getHookArgumentsLength(leave);\n\n  var explicitLeaveDuration = toNumber(\n    isObject(duration)\n      ? duration.leave\n      : duration\n  );\n\n  if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n    checkDuration(explicitLeaveDuration, 'leave', vnode);\n  }\n\n  var cb = el._leaveCb = once(function () {\n    if (el.parentNode && el.parentNode._pending) {\n      el.parentNode._pending[vnode.key] = null;\n    }\n    if (expectsCSS) {\n      removeTransitionClass(el, leaveToClass);\n      removeTransitionClass(el, leaveActiveClass);\n    }\n    if (cb.cancelled) {\n      if (expectsCSS) {\n        removeTransitionClass(el, leaveClass);\n      }\n      leaveCancelled && leaveCancelled(el);\n    } else {\n      rm();\n      afterLeave && afterLeave(el);\n    }\n    el._leaveCb = null;\n  });\n\n  if (delayLeave) {\n    delayLeave(performLeave);\n  } else {\n    performLeave();\n  }\n\n  function performLeave () {\n    // the delayed leave may have already been cancelled\n    if (cb.cancelled) {\n      return\n    }\n    // record leaving element\n    if (!vnode.data.show && el.parentNode) {\n      (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n    }\n    beforeLeave && beforeLeave(el);\n    if (expectsCSS) {\n      addTransitionClass(el, leaveClass);\n      addTransitionClass(el, leaveActiveClass);\n      nextFrame(function () {\n        removeTransitionClass(el, leaveClass);\n        if (!cb.cancelled) {\n          addTransitionClass(el, leaveToClass);\n          if (!userWantsControl) {\n            if (isValidDuration(explicitLeaveDuration)) {\n              setTimeout(cb, explicitLeaveDuration);\n            } else {\n              whenTransitionEnds(el, type, cb);\n            }\n          }\n        }\n      });\n    }\n    leave && leave(el, cb);\n    if (!expectsCSS && !userWantsControl) {\n      cb();\n    }\n  }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n  if (typeof val !== 'number') {\n    warn(\n      \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n      \"got \" + (JSON.stringify(val)) + \".\",\n      vnode.context\n    );\n  } else if (isNaN(val)) {\n    warn(\n      \"<transition> explicit \" + name + \" duration is NaN - \" +\n      'the duration expression might be incorrect.',\n      vnode.context\n    );\n  }\n}\n\nfunction isValidDuration (val) {\n  return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n  if (isUndef(fn)) {\n    return false\n  }\n  var invokerFns = fn.fns;\n  if (isDef(invokerFns)) {\n    // invoker\n    return getHookArgumentsLength(\n      Array.isArray(invokerFns)\n        ? invokerFns[0]\n        : invokerFns\n    )\n  } else {\n    return (fn._length || fn.length) > 1\n  }\n}\n\nfunction _enter (_, vnode) {\n  if (vnode.data.show !== true) {\n    enter(vnode);\n  }\n}\n\nvar transition = inBrowser ? {\n  create: _enter,\n  activate: _enter,\n  remove: function remove$$1 (vnode, rm) {\n    /* istanbul ignore else */\n    if (vnode.data.show !== true) {\n      leave(vnode, rm);\n    } else {\n      rm();\n    }\n  }\n} : {};\n\nvar platformModules = [\n  attrs,\n  klass,\n  events,\n  domProps,\n  style,\n  transition\n];\n\n/*  */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n  // http://www.matts411.com/post/internet-explorer-9-oninput/\n  document.addEventListener('selectionchange', function () {\n    var el = document.activeElement;\n    if (el && el.vmodel) {\n      trigger(el, 'input');\n    }\n  });\n}\n\nvar directive = {\n  inserted: function inserted (el, binding, vnode, oldVnode) {\n    if (vnode.tag === 'select') {\n      // #6903\n      if (oldVnode.elm && !oldVnode.elm._vOptions) {\n        mergeVNodeHook(vnode, 'postpatch', function () {\n          directive.componentUpdated(el, binding, vnode);\n        });\n      } else {\n        setSelected(el, binding, vnode.context);\n      }\n      el._vOptions = [].map.call(el.options, getValue);\n    } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n      el._vModifiers = binding.modifiers;\n      if (!binding.modifiers.lazy) {\n        el.addEventListener('compositionstart', onCompositionStart);\n        el.addEventListener('compositionend', onCompositionEnd);\n        // Safari < 10.2 & UIWebView doesn't fire compositionend when\n        // switching focus before confirming composition choice\n        // this also fixes the issue where some browsers e.g. iOS Chrome\n        // fires \"change\" instead of \"input\" on autocomplete.\n        el.addEventListener('change', onCompositionEnd);\n        /* istanbul ignore if */\n        if (isIE9) {\n          el.vmodel = true;\n        }\n      }\n    }\n  },\n\n  componentUpdated: function componentUpdated (el, binding, vnode) {\n    if (vnode.tag === 'select') {\n      setSelected(el, binding, vnode.context);\n      // in case the options rendered by v-for have changed,\n      // it's possible that the value is out-of-sync with the rendered options.\n      // detect such cases and filter out values that no longer has a matching\n      // option in the DOM.\n      var prevOptions = el._vOptions;\n      var curOptions = el._vOptions = [].map.call(el.options, getValue);\n      if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n        // trigger change event if\n        // no matching option found for at least one value\n        var needReset = el.multiple\n          ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n          : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n        if (needReset) {\n          trigger(el, 'change');\n        }\n      }\n    }\n  }\n};\n\nfunction setSelected (el, binding, vm) {\n  actuallySetSelected(el, binding, vm);\n  /* istanbul ignore if */\n  if (isIE || isEdge) {\n    setTimeout(function () {\n      actuallySetSelected(el, binding, vm);\n    }, 0);\n  }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n  var value = binding.value;\n  var isMultiple = el.multiple;\n  if (isMultiple && !Array.isArray(value)) {\n    process.env.NODE_ENV !== 'production' && warn(\n      \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n      \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n      vm\n    );\n    return\n  }\n  var selected, option;\n  for (var i = 0, l = el.options.length; i < l; i++) {\n    option = el.options[i];\n    if (isMultiple) {\n      selected = looseIndexOf(value, getValue(option)) > -1;\n      if (option.selected !== selected) {\n        option.selected = selected;\n      }\n    } else {\n      if (looseEqual(getValue(option), value)) {\n        if (el.selectedIndex !== i) {\n          el.selectedIndex = i;\n        }\n        return\n      }\n    }\n  }\n  if (!isMultiple) {\n    el.selectedIndex = -1;\n  }\n}\n\nfunction hasNoMatchingOption (value, options) {\n  return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n  return '_value' in option\n    ? option._value\n    : option.value\n}\n\nfunction onCompositionStart (e) {\n  e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n  // prevent triggering an input event for no reason\n  if (!e.target.composing) { return }\n  e.target.composing = false;\n  trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n  var e = document.createEvent('HTMLEvents');\n  e.initEvent(type, true, true);\n  el.dispatchEvent(e);\n}\n\n/*  */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n  return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n    ? locateNode(vnode.componentInstance._vnode)\n    : vnode\n}\n\nvar show = {\n  bind: function bind (el, ref, vnode) {\n    var value = ref.value;\n\n    vnode = locateNode(vnode);\n    var transition$$1 = vnode.data && vnode.data.transition;\n    var originalDisplay = el.__vOriginalDisplay =\n      el.style.display === 'none' ? '' : el.style.display;\n    if (value && transition$$1) {\n      vnode.data.show = true;\n      enter(vnode, function () {\n        el.style.display = originalDisplay;\n      });\n    } else {\n      el.style.display = value ? originalDisplay : 'none';\n    }\n  },\n\n  update: function update (el, ref, vnode) {\n    var value = ref.value;\n    var oldValue = ref.oldValue;\n\n    /* istanbul ignore if */\n    if (!value === !oldValue) { return }\n    vnode = locateNode(vnode);\n    var transition$$1 = vnode.data && vnode.data.transition;\n    if (transition$$1) {\n      vnode.data.show = true;\n      if (value) {\n        enter(vnode, function () {\n          el.style.display = el.__vOriginalDisplay;\n        });\n      } else {\n        leave(vnode, function () {\n          el.style.display = 'none';\n        });\n      }\n    } else {\n      el.style.display = value ? el.__vOriginalDisplay : 'none';\n    }\n  },\n\n  unbind: function unbind (\n    el,\n    binding,\n    vnode,\n    oldVnode,\n    isDestroy\n  ) {\n    if (!isDestroy) {\n      el.style.display = el.__vOriginalDisplay;\n    }\n  }\n};\n\nvar platformDirectives = {\n  model: directive,\n  show: show\n};\n\n/*  */\n\nvar transitionProps = {\n  name: String,\n  appear: Boolean,\n  css: Boolean,\n  mode: String,\n  type: String,\n  enterClass: String,\n  leaveClass: String,\n  enterToClass: String,\n  leaveToClass: String,\n  enterActiveClass: String,\n  leaveActiveClass: String,\n  appearClass: String,\n  appearActiveClass: String,\n  appearToClass: String,\n  duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n  var compOptions = vnode && vnode.componentOptions;\n  if (compOptions && compOptions.Ctor.options.abstract) {\n    return getRealChild(getFirstComponentChild(compOptions.children))\n  } else {\n    return vnode\n  }\n}\n\nfunction extractTransitionData (comp) {\n  var data = {};\n  var options = comp.$options;\n  // props\n  for (var key in options.propsData) {\n    data[key] = comp[key];\n  }\n  // events.\n  // extract listeners and pass them directly to the transition methods\n  var listeners = options._parentListeners;\n  for (var key$1 in listeners) {\n    data[camelize(key$1)] = listeners[key$1];\n  }\n  return data\n}\n\nfunction placeholder (h, rawChild) {\n  if (/\\d-keep-alive$/.test(rawChild.tag)) {\n    return h('keep-alive', {\n      props: rawChild.componentOptions.propsData\n    })\n  }\n}\n\nfunction hasParentTransition (vnode) {\n  while ((vnode = vnode.parent)) {\n    if (vnode.data.transition) {\n      return true\n    }\n  }\n}\n\nfunction isSameChild (child, oldChild) {\n  return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n  name: 'transition',\n  props: transitionProps,\n  abstract: true,\n\n  render: function render (h) {\n    var this$1 = this;\n\n    var children = this.$slots.default;\n    if (!children) {\n      return\n    }\n\n    // filter out text nodes (possible whitespaces)\n    children = children.filter(isNotTextNode);\n    /* istanbul ignore if */\n    if (!children.length) {\n      return\n    }\n\n    // warn multiple elements\n    if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n      warn(\n        '<transition> can only be used on a single element. Use ' +\n        '<transition-group> for lists.',\n        this.$parent\n      );\n    }\n\n    var mode = this.mode;\n\n    // warn invalid mode\n    if (process.env.NODE_ENV !== 'production' &&\n      mode && mode !== 'in-out' && mode !== 'out-in'\n    ) {\n      warn(\n        'invalid <transition> mode: ' + mode,\n        this.$parent\n      );\n    }\n\n    var rawChild = children[0];\n\n    // if this is a component root node and the component's\n    // parent container node also has transition, skip.\n    if (hasParentTransition(this.$vnode)) {\n      return rawChild\n    }\n\n    // apply transition data to child\n    // use getRealChild() to ignore abstract components e.g. keep-alive\n    var child = getRealChild(rawChild);\n    /* istanbul ignore if */\n    if (!child) {\n      return rawChild\n    }\n\n    if (this._leaving) {\n      return placeholder(h, rawChild)\n    }\n\n    // ensure a key that is unique to the vnode type and to this transition\n    // component instance. This key will be used to remove pending leaving nodes\n    // during entering.\n    var id = \"__transition-\" + (this._uid) + \"-\";\n    child.key = child.key == null\n      ? child.isComment\n        ? id + 'comment'\n        : id + child.tag\n      : isPrimitive(child.key)\n        ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n        : child.key;\n\n    var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n    var oldRawChild = this._vnode;\n    var oldChild = getRealChild(oldRawChild);\n\n    // mark v-show\n    // so that the transition module can hand over the control to the directive\n    if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n      child.data.show = true;\n    }\n\n    if (\n      oldChild &&\n      oldChild.data &&\n      !isSameChild(child, oldChild) &&\n      !isAsyncPlaceholder(oldChild) &&\n      // #6687 component root is a comment node\n      !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n    ) {\n      // replace old child transition data with fresh one\n      // important for dynamic transitions!\n      var oldData = oldChild.data.transition = extend({}, data);\n      // handle transition mode\n      if (mode === 'out-in') {\n        // return placeholder node and queue update when leave finishes\n        this._leaving = true;\n        mergeVNodeHook(oldData, 'afterLeave', function () {\n          this$1._leaving = false;\n          this$1.$forceUpdate();\n        });\n        return placeholder(h, rawChild)\n      } else if (mode === 'in-out') {\n        if (isAsyncPlaceholder(child)) {\n          return oldRawChild\n        }\n        var delayedLeave;\n        var performLeave = function () { delayedLeave(); };\n        mergeVNodeHook(data, 'afterEnter', performLeave);\n        mergeVNodeHook(data, 'enterCancelled', performLeave);\n        mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n      }\n    }\n\n    return rawChild\n  }\n};\n\n/*  */\n\nvar props = extend({\n  tag: String,\n  moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n  props: props,\n\n  beforeMount: function beforeMount () {\n    var this$1 = this;\n\n    var update = this._update;\n    this._update = function (vnode, hydrating) {\n      var restoreActiveInstance = setActiveInstance(this$1);\n      // force removing pass\n      this$1.__patch__(\n        this$1._vnode,\n        this$1.kept,\n        false, // hydrating\n        true // removeOnly (!important, avoids unnecessary moves)\n      );\n      this$1._vnode = this$1.kept;\n      restoreActiveInstance();\n      update.call(this$1, vnode, hydrating);\n    };\n  },\n\n  render: function render (h) {\n    var tag = this.tag || this.$vnode.data.tag || 'span';\n    var map = Object.create(null);\n    var prevChildren = this.prevChildren = this.children;\n    var rawChildren = this.$slots.default || [];\n    var children = this.children = [];\n    var transitionData = extractTransitionData(this);\n\n    for (var i = 0; i < rawChildren.length; i++) {\n      var c = rawChildren[i];\n      if (c.tag) {\n        if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n          children.push(c);\n          map[c.key] = c\n          ;(c.data || (c.data = {})).transition = transitionData;\n        } else if (process.env.NODE_ENV !== 'production') {\n          var opts = c.componentOptions;\n          var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n          warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n        }\n      }\n    }\n\n    if (prevChildren) {\n      var kept = [];\n      var removed = [];\n      for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n        var c$1 = prevChildren[i$1];\n        c$1.data.transition = transitionData;\n        c$1.data.pos = c$1.elm.getBoundingClientRect();\n        if (map[c$1.key]) {\n          kept.push(c$1);\n        } else {\n          removed.push(c$1);\n        }\n      }\n      this.kept = h(tag, null, kept);\n      this.removed = removed;\n    }\n\n    return h(tag, null, children)\n  },\n\n  updated: function updated () {\n    var children = this.prevChildren;\n    var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n    if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n      return\n    }\n\n    // we divide the work into three loops to avoid mixing DOM reads and writes\n    // in each iteration - which helps prevent layout thrashing.\n    children.forEach(callPendingCbs);\n    children.forEach(recordPosition);\n    children.forEach(applyTranslation);\n\n    // force reflow to put everything in position\n    // assign to this to avoid being removed in tree-shaking\n    // $flow-disable-line\n    this._reflow = document.body.offsetHeight;\n\n    children.forEach(function (c) {\n      if (c.data.moved) {\n        var el = c.elm;\n        var s = el.style;\n        addTransitionClass(el, moveClass);\n        s.transform = s.WebkitTransform = s.transitionDuration = '';\n        el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n          if (e && e.target !== el) {\n            return\n          }\n          if (!e || /transform$/.test(e.propertyName)) {\n            el.removeEventListener(transitionEndEvent, cb);\n            el._moveCb = null;\n            removeTransitionClass(el, moveClass);\n          }\n        });\n      }\n    });\n  },\n\n  methods: {\n    hasMove: function hasMove (el, moveClass) {\n      /* istanbul ignore if */\n      if (!hasTransition) {\n        return false\n      }\n      /* istanbul ignore if */\n      if (this._hasMove) {\n        return this._hasMove\n      }\n      // Detect whether an element with the move class applied has\n      // CSS transitions. Since the element may be inside an entering\n      // transition at this very moment, we make a clone of it and remove\n      // all other transition classes applied to ensure only the move class\n      // is applied.\n      var clone = el.cloneNode();\n      if (el._transitionClasses) {\n        el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n      }\n      addClass(clone, moveClass);\n      clone.style.display = 'none';\n      this.$el.appendChild(clone);\n      var info = getTransitionInfo(clone);\n      this.$el.removeChild(clone);\n      return (this._hasMove = info.hasTransform)\n    }\n  }\n};\n\nfunction callPendingCbs (c) {\n  /* istanbul ignore if */\n  if (c.elm._moveCb) {\n    c.elm._moveCb();\n  }\n  /* istanbul ignore if */\n  if (c.elm._enterCb) {\n    c.elm._enterCb();\n  }\n}\n\nfunction recordPosition (c) {\n  c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n  var oldPos = c.data.pos;\n  var newPos = c.data.newPos;\n  var dx = oldPos.left - newPos.left;\n  var dy = oldPos.top - newPos.top;\n  if (dx || dy) {\n    c.data.moved = true;\n    var s = c.elm.style;\n    s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n    s.transitionDuration = '0s';\n  }\n}\n\nvar platformComponents = {\n  Transition: Transition,\n  TransitionGroup: TransitionGroup\n};\n\n/*  */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n  el,\n  hydrating\n) {\n  el = el && inBrowser ? query(el) : undefined;\n  return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n  setTimeout(function () {\n    if (config.devtools) {\n      if (devtools) {\n        devtools.emit('init', Vue);\n      } else if (\n        process.env.NODE_ENV !== 'production' &&\n        process.env.NODE_ENV !== 'test'\n      ) {\n        console[console.info ? 'info' : 'log'](\n          'Download the Vue Devtools extension for a better development experience:\\n' +\n          'https://github.com/vuejs/vue-devtools'\n        );\n      }\n    }\n    if (process.env.NODE_ENV !== 'production' &&\n      process.env.NODE_ENV !== 'test' &&\n      config.productionTip !== false &&\n      typeof console !== 'undefined'\n    ) {\n      console[console.info ? 'info' : 'log'](\n        \"You are running Vue in development mode.\\n\" +\n        \"Make sure to turn on production mode when deploying for production.\\n\" +\n        \"See more tips at https://vuejs.org/guide/deployment.html\"\n      );\n    }\n  }, 0);\n}\n\n/*  */\n\nexport default Vue;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\r\n * Created by sven.bluege on 04.04.2017.\r\n */\r\n\r\n\r\n\r\nrequire('./common/js/EventgalleryTools.js');\r\n\r\nrequire('./backend/vue/uploader/index.js');\r\nrequire('./backend/vue/filesync/index.js');\r\nrequire('./backend/vue/thumbnailcreator/index.js');\r\nrequire('./backend/vue/cacheclear/index.js');\r\nrequire('./backend/vue/imagecontentpluginform/index.js');\r\nrequire('./backend/vue/scalepriceeditor/index.js');\r\n\r\n\r\nrequire('./backend/js/EventgalleryBehavior.js');\r\nrequire('./backend/js/EventgalleryInlineFormEdit.js');\r\nrequire('./backend/js/EventgalleryGooglePhotos.js');\r\nrequire('./frontend/js/EventgalleryGooglePhotosProcessor.js');\r\nrequire('./backend/js/Albumselector.js');\r\nrequire('./backend/js/LocalizableText.js');\r\n\r\nrequire('./backend/css/eventgallery.css');\r\nrequire('./frontend/less/font-awesome/font-awesome.less');\r\n\r\n"],"sourceRoot":""}

Copyright © 2019 by b0y-101