{"version":3,"sources":["webpack:///vendor.js","webpack:///webpack/bootstrap ecd4b0bd323eb9518185","webpack:///./~/process/browser.js","webpack:///./~/setimmediate/setImmediate.js","webpack:///./~/timers-browserify/main.js","webpack:///(webpack)/buildin/global.js","webpack:///./~/vue/dist/vue.esm.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","parentJsonpFunction","window","chunkIds","moreModules","executeModules","chunkId","result","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","s","1","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","createElement","type","charset","async","nc","setAttribute","src","p","setTimeout","appendChild","m","c","value","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error","273","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","this","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","len","run","Item","array","noop","process","nextTick","args","Array","arguments","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","274","setImmediate","callback","Function","task","tasksByHandle","nextHandle","registerImmediate","clearImmediate","handle","undefined","runIfPresent","currentlyRunningATask","global","doc","attachTo","getPrototypeOf","toString","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","messagePrefix","Math","random","onGlobalMessage","event","source","data","indexOf","slice","addEventListener","attachEvent","MessageChannel","channel","port1","port2","html","documentElement","onreadystatechange","removeChild","self","275","Timeout","id","clearFn","_id","_clearFn","scope","setInterval","clearInterval","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","293","47","g","eval","48","__webpack_exports__","isUndef","v","isDef","isTrue","isFalse","isPrimitive","isObject","obj","isPlainObject","_toString","isRegExp","isValidArrayIndex","val","parseFloat","String","floor","isFinite","isPromise","then","catch","isArray","JSON","stringify","toNumber","isNaN","makeMap","str","expectsLowerCase","map","create","list","split","toLowerCase","remove","arr","index","splice","hasOwn","key","cached","fn","cache","polyfillBind","ctx","boundFn","a","_length","nativeBind","bind","toArray","start","ret","extend","to","_from","toObject","res","b","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","Date","getTime","keysA","keys","keysB","looseIndexOf","called","isReserved","charCodeAt","def","writable","parsePath","path","bailRE","test","segments","isNative","Ctor","pushTarget","target","targetStack","Dep","popTarget","pop","createTextVNode","VNode","cloneVNode","vnode","cloned","tag","children","text","elm","context","componentOptions","asyncFactory","ns","isStatic","isComment","fnContext","fnOptions","fnScopeId","asyncMeta","isCloned","toggleObserving","shouldObserve","protoAugment","__proto__","copyAugment","observe","asRootData","ob","__ob__","Observer","isServerRendering","isExtensible","_isVue","vmCount","defineReactive$$1","customSetter","shallow","dep","getOwnPropertyDescriptor","setter","set","childOb","depend","dependArray","newVal","notify","max","del","mergeData","from","toVal","fromVal","hasSymbol","Reflect","ownKeys","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","dedupeHooks","hooks","mergeAssets","normalizeProps","options","props","camelize","normalizeInject","inject","normalized","normalizeDirectives","dirs","directives","def$$1","update","mergeOptions","parent","child","mergeField","strat","strats","defaultStrat","_base","extends","mixins","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","capitalize","validateProp","propOptions","propsData","prop","absent","booleanIndex","getTypeIndex","Boolean","hyphenate","stringIndex","getPropDefaultValue","prevShouldObserve","default","$options","_props","getType","match","isSameType","expectedTypes","handleError","info","cur","$parent","errorCaptured","capture","globalHandleError","invokeWithErrorHandling","handler","_handled","config","errorHandler","logError","inBrowser","inWeex","flushCallbacks","pending","copies","callbacks","cb","_resolve","timerFunc","traverse","_traverse","seenObjects","clear","seen","isA","isFrozen","depId","has","add","createFnInvoker","fns","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","old","normalizeEvent","passive","params","mergeVNodeHook","hookKey","hook","wrappedHook","oldHook","merged","extractPropsFromVNodeData","attrs","altKey","checkProp","hash","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","node","nestedIndex","lastIndex","last","_isVList","initProvide","provide","_provided","initInjections","resolveInject","forEach","provideKey","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","emptyObject","$hasNormal","key$1","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","render","Symbol","iterator","next","done","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","identity","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","keyCodes","bindObjectProps","asProp","isSync","isReservedAttribute","mustUseProp","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","staticRenderFns","_renderProxy","markStatic","markOnce","isOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","values","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","createEmptyVNode","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","_compiled","needNormalization","injections","scopedSlots","_scopeId","_c","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","clone","createComponent","baseCtor","cid","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","functional","nativeOn","abstract","installComponentHooks","createComponentInstanceForVnode","_isComponent","_parentVnode","inlineTemplate","hooksToMerge","toMerge","componentVNodeHooks","_merged","mergeHook$1","f1","f2","normalizationType","alwaysNormalize","ALWAYS_NORMALIZE","_createElement","is","SIMPLE_NORMALIZE","$vnode","getTagNamespace","isReservedTag","parsePlatformTagName","pre","applyNS","registerDeepBindings","force","style","class","initRender","_vnode","parentVnode","_renderChildren","parentData","_parentListeners","ensureCtor","comp","base","toStringTag","factory","errorComp","resolved","owner","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","$forceUpdate","reason","component","delay","isAsyncPlaceholder","getFirstComponentChild","initEvents","_events","_hasHookEvent","updateComponentListeners","remove$1","$off","_target","onceHandler","oldListeners","setActiveInstance","prevActiveInstance","activeInstance","initLifecycle","$children","$root","$refs","_watcher","_inactive","_directInactive","_isMounted","_isDestroyed","_isBeingDestroyed","mountComponent","el","hydrating","$el","callHook","updateComponent","_update","_render","Watcher","before","updateChildComponent","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","$attrs","$listeners","propKeys","_propKeys","isInInactiveTree","activateChildComponent","direct","deactivateChildComponent","handlers","j","$emit","resetSchedulerState","activatedChildren","waiting","flushing","flushSchedulerQueue","currentFlushTimestamp","getNow","watcher","sort","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","devtools","queueActivatedComponent","queueWatcher","sourceKey","sharedPropertyDefinition","initState","_watchers","opts","initProps","methods","initMethods","initData","_data","computed","initComputed","watch","nativeWatch","initWatch","propsOptions","getData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","dirty","evaluate","createWatcher","expOrFn","$watch","initInternalComponent","constructor","vnodeComponentOptions","_componentTag","super","superOptions","modifiedOptions","resolveModifiedOptions","extendOptions","components","modified","latest","sealed","sealedOptions","Vue","_init","initUse","use","plugin","installedPlugins","_installedPlugins","unshift","install","initMixin$1","mixin","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","ASSET_TYPES","Comp","initAssetRegisters","definition","getComponentName","matches","pattern","pruneCache","keepAliveInstance","filter","cachedNode","pruneCacheEntry","current","cached$$1","componentInstance","$destroy","genClassForVnode","parentNode","childNode","mergeClassData","renderClass","staticClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","isSVG","isUnknownElement","unknownElementCache","HTMLUnknownElement","HTMLElement","query","querySelector","createElement$1","tagName","multiple","createElementNS","namespace","namespaceMap","createTextNode","createComment","insertBefore","newNode","referenceNode","nextSibling","setTextContent","textContent","setStyleScope","scopeId","registerRef","isRemoval","refs","refInFor","sameVnode","sameInputType","typeA","typeB","isTextInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldVnode","oldDir","isCreate","emptyNode","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldValue","oldArg","arg","callHook$1","componentUpdated","inserted","callInsert","modifiers","emptyModifiers","getRawDirName","rawName","join","updateAttrs","inheritAttrs","oldAttrs","setAttr","isIE","isEdge","isXlink","removeAttributeNS","xlinkNS","getXlinkProp","isEnumeratedAttr","removeAttribute","baseSetAttr","isBooleanAttr","isFalsyAttrValue","convertEnumeratedValue","setAttributeNS","isIE9","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","parseFilters","exp","pushFilter","filters","lastFilterIndex","trim","prev","expression","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","charAt","validDivisionCharRE","wrapFilter","baseWarn","msg","range","pluckModuleFunction","_","addProp","dynamic","rangeSetItem","plain","addAttr","dynamicAttrs","addRawAttr","attrsMap","attrsList","addDirective","isDynamicArg","prependModifierMarker","addHandler","important","warn","right","middle","events","native","nativeEvents","newHandler","getRawBindingAttr","rawAttrsMap","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","getAndRemoveAttrByRegex","attr","end","genComponentModel","number","valueExpression","assignment","genAssignmentCode","parseModel","lastIndexOf","index$1","expressionPos","expressionEndPos","eof","chr","isStringStart","parseString","parseBracket","inBracket","stringQuote","_warn","warn$1","genSelect","genCheckboxModel","genRadioModel","genDefaultModel","valueBinding","trueValueBinding","falseValueBinding","selectedVal","code","lazy","needCompositionGuard","RANGE_TOKEN","normalizeEvents","CHECKBOX_RADIO_TOKEN","change","createOnceHandler$1","target$1","remove$2","add$1","useMicrotaskFix","attachedTimestamp","original","_wrapper","currentTarget","timeStamp","ownerDocument","supportsPassive","updateDOMListeners","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","innerHTML","svgContainer","svg","firstChild","checkVal","composing","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","activeElement","_vModifiers","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","parseStyleText","getStyle","checkChild","styleData","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","setProp","addClass","classList","whitespaceRE","getAttribute","removeClass","tar","replace","resolveTransition","css","autoCssTransition","nextFrame","raf","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","TRANSITION","transitionEndEvent","animationEndEvent","ended","onEnd","styles","getComputedStyle","transitionDelays","transitionProp","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationProp","animationDurations","animationTimeout","ANIMATION","hasTransform","transformRE","delays","durations","toMs","Number","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","nodeType","enterClass","enterToClass","enterActiveClass","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","isRootInsert","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","rm","performLeave","beforeLeave","leaveClass","leaveActiveClass","leaveToClass","explicitLeaveDuration","afterLeave","leaveCancelled","delayLeave","invokerFns","_enter","setSelected","actuallySetSelected","isMultiple","selected","option","getValue","selectedIndex","hasNoMatchingOption","onCompositionStart","onCompositionEnd","trigger","createEvent","initEvent","dispatchEvent","locateNode","getRealChild","compOptions","extractTransitionData","placeholder","h","rawChild","hasParentTransition","isSameChild","oldChild","callPendingCbs","_moveCb","recordPosition","newPos","getBoundingClientRect","applyTranslation","oldPos","pos","dx","left","dy","top","moved","transform","WebkitTransform","transitionDuration","parseText","delimiters","tagRE","buildRegex","defaultTagRE","tokenValue","tokens","rawTokens","exec","transformNode","classBinding","genData","transformNode$1","styleBinding","genData$1","decodeAttr","shouldDecodeNewlines","re","encodedAttrWithNewLines","encodedAttr","decodingMap","parseHTML","advance","substring","parseEndTag","lowerCasedTagName","stack","lowerCasedTag","lastTag","expectHTML","isUnaryTag$$1","isUnaryTag","no","canBeLeftOpenTag$$1","canBeLeftOpenTag","isPlainTextElement","endTagLength","stackedTag","reStackedTag","reCache","RegExp","rest$1","all","endTag","shouldIgnoreFirstNewline","chars","textEnd","comment","commentEnd","shouldKeepComment","conditionalComment","conditionalEnd","doctypeMatch","doctype","endTagMatch","curIndex","startTagMatch","startTagOpen","startTagClose","dynamicArgAttribute","attribute","unarySlash","isNonPhrasingTag","unary","shouldDecodeNewlinesForHref","rest","createASTElement","makeAttrsMap","parse","template","closeElement","element","trimEndingWhitespace","inVPre","processed","processElement","root","if","elseif","else","addIfCondition","block","currentParent","forbidden","processIfConditions","slotScope","slotTarget","platformIsPreTag","inPre","postTransforms","lastNode","warn$2","isPreTag","platformMustUseProp","platformGetTagNamespace","maybeComponent","transforms","preTransforms","preserveWhitespace","whitespaceOption","whitespace","comments","outputSourceRange","start$1","guardIESVGBug","isForbiddenTag","processPre","processRawAttrs","processFor","processIf","processOnce","end$1","isTextTag","decodeHTMLCached","lineBreakRE","whitespaceRE$1","processKey","processRef","processSlotContent","processSlotOutlet","processComponent","processAttrs","checkInFor","parseFor","inMatch","forAliasRE","for","alias","stripParensRE","iteratorMatch","forIteratorRE","iterator1","iterator2","findPrevElement","condition","ifConditions","slotTargetDynamic","slotBinding","slotRE","getSlotName","emptySlotScopeToken","slotBinding$1","ref$1","dynamic$1","slotContainer","dynamicArgRE","slotName","syncGen","isDynamic","dirRE","hasBindings","parseModifiers","modifierRE","bindRE","camel","onRE","argMatch","argRE","ieNSBug","ieNSPrefix","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","cloneASTElement","branch1","branch2","optimize","isStaticKey","genStaticKeysCached","staticKeys","isPlatformReservedTag","markStatic$1","markStaticRoots","genStaticKeys$1","static","i$1","l$1","staticInFor","staticRoot","isBuiltInTag","isDirectChildOfTemplateFor","genHandlers","prefix","staticHandlers","dynamicHandlers","handlerCode","genHandler","isMethodPath","simplePathRE","isFunctionExpression","fnExpRE","isFunctionInvocation","fnInvokeRE","genModifierCode","modifierCode","genGuard","keyModifier","genKeyFilter","genFilterCode","keyVal","parseInt","keyCode","keyName","keyNames","wrapListeners","bind$1","wrapData","generate","ast","state","CodegenState","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","genFor","ifProcessed","genIf","genSlot","genComponent","genData$2","genChildren","originalPreState","onceId","altGen","altEmpty","genIfConditions","conditions","genTernaryExp","altHelper","genDirectives","dataGenFns","genProps","genScopedSlots","genInlineTemplate","needRuntime","hasRuntime","gen","inlineRenderFns","some","containsSlotChild","needsKey","generatedSlots","genScopedSlot","isLegacySyntax","reverseProxy","checkSkip","altGenElement","altGenNode","el$1","normalizationType$1","getNormalizationType","genNode","needsNormalization","genComment","genText","transformSpecialNewlines","bind$$1","componentName","staticProps","dynamicProps","createFunction","errors","createCompileToFunctionFn","compile","compiled","fnGenErrors","getShouldDecode","href","div","getOuterHTML","outerHTML","container","cloneNode","freeze","camelizeRE","toUpperCase","hyphenateRE","SSR_ATTR","LIFECYCLE_HOOKS","optionMergeStrategies","silent","productionTip","performance","warnHandler","ignoredElements","isReservedAttr","_lifecycleHooks","unicodeRegExp","hasProto","WXEnvironment","platform","weexPlatform","UA","navigator","userAgent","isIOS","isFF","_isServer","_Set","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","Set","uid","subs","addSub","sub","removeSub","addDep","raw","prototypeAccessors","defineProperties","arrayProto","arrayMethods","method","observeArray","arrayKeys","getOwnPropertyNames","walk","items","isUsingMicroTask","MutationObserver","counter","observer","textNode","characterData","once$$1","init","keepAlive","mountedNode","prepatch","$mount","insert","destroy","now","uid$2","isRenderWatcher","deep","user","deps","newDeps","depIds","newDepIds","cleanupDeps","tmp","teardown","uid$3","_uid","_self","dataDef","propsDef","$set","$delete","immediate","hookRE","$once","cbs","prevEl","prevVnode","restoreActiveInstance","__patch__","__vue__","$nextTick","patternTypes","KeepAlive","include","exclude","created","destroyed","mounted","builtInComponents","configDef","util","defineReactive","delete","observable","ssrContext","emptyStyle","acceptValue","isValidContentEditableValue","math","isHTMLTag","nodeOps","baseModules","klass","cssText","listDelimiter","propertyDelimiter","cssVarRE","importantRE","setProperty","normalizedName","normalize","vendorNames","capName","hasTransition","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","requestAnimationFrame","activate","platformModules","patch","backend","emptyNodeAt","createRmCb","childElm","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","hydrate","postpatch","invokeInsertHook","initial","hasChildNodes","childrenMatch","fullInvoke","isRenderedModule","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i$2","vmodel","directive","_vOptions","prevOptions","curOptions","transition$$1","originalDisplay","__vOriginalDisplay","display","unbind","platformDirectives","transitionProps","mode","isNotTextNode","isVShowDirective","Transition","_leaving","oldRawChild","delayedLeave","moveClass","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","updated","hasMove","_reflow","body","offsetHeight","propertyName","_hasMove","platformComponents","decoder","regexEscapeRE","open","klass$1","style$1","he","decode","ncname","qnameCapture","isIgnoreNewlineTag","model$1","modules$1","directives$1","baseOptions","reduce","esc","tab","space","up","down","stop","prevent","ctrl","alt","meta","baseDirectives","cloak","createCompiler","baseCompile","finalOptions","tips","tip","compileToFunctions","idToTemplate","mount"],"mappings":"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","file":"vendor.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/ \t\tif(executeModules) {\n/******/ \t\t\tfor(i=0; i < executeModules.length; i++) {\n/******/ \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\treturn result;\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t1: 0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tvar installedChunkData = installedChunks[chunkId];\n/******/ \t\tif(installedChunkData === 0) {\n/******/ \t\t\treturn new Promise(function(resolve) { resolve(); });\n/******/ \t\t}\n/******/\n/******/ \t\t// a Promise means \"currently loading\".\n/******/ \t\tif(installedChunkData) {\n/******/ \t\t\treturn installedChunkData[2];\n/******/ \t\t}\n/******/\n/******/ \t\t// setup Promise in chunk cache\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\tinstalledChunkData[2] = promise;\n/******/\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = 'text/javascript';\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tif (__webpack_require__.nc) {\n/******/ \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n/******/ \t\t}\n/******/ \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".js\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) {\n/******/ \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\treturn promise;\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 293);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 273:\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n\n/***/ 274:\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(47), __webpack_require__(273)))\n\n/***/ }),\n\n/***/ 275:\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(274);\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(47)))\n\n/***/ }),\n\n/***/ 293:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(48);\n\n\n/***/ }),\n\n/***/ 47:\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n\n/***/ 48:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* WEBPACK VAR INJECTION */(function(global, setImmediate) {/*!\n * Vue.js v2.6.10\n * (c) 2014-2019 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 * Generate a string containing static keys from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\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: \"production\" !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: \"production\" !== '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 (false) {\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 (false) {\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 (false) {\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 (false\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 \"production\" !== '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 (false\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 \"production\" !== '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 (false) {\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 \"production\" !== '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 \"production\" !== '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 (false) {\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 && \"production\" !== '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 (false) {\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 (false) {\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 (false) {\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 (false) {\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 (false) {\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 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 (false) {\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 (false) {\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 // Techinically 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\nvar mark;\nvar measure;\n\nif (false) {\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/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (false) {\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\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 \"production\" !== '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 (false) {\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 (false) {\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 (false) {\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 (false) {\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 \"production\" !== '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 \"production\" !== '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 (false) {\n // null is a speical 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 (false) {\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 (false) {\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 \"production\" !== '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 (false\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 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 (false) {\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 becaues 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 (false) {\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 (false) {\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 \"production\" !== '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 false\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 (false) {\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 (false) {\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 (false) {\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 (false) {\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 (false) {\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 (false) {\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 (false) {\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 (false) {\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 = false\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 \"production\" !== '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 (false) {\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 \"production\" !== '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 (false) {\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 \"production\" !== '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 (false) {\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 (false) {\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 (false) {\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 (false) {\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 (false) {\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 (false) {\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 (false) {\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 (false) {\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 (false\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 (false) {\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 (false) {\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 (false) {\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.10';\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 isPreTag = function (tag) { return tag === 'pre'; };\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 \"production\" !== '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 (false) {\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 (false) {\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 (false) {\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 (parentElm, 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 (false) {\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(parentElm, 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 (false) {\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(elm, 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 (false) {\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 (false\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 (false\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 (false) {\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(parentElm, [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\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\nfunction parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n}\n\nfunction wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + (args !== ')' ? ',' + args : args))\n }\n}\n\n/* */\n\n\n\n/* eslint-disable no-unused-vars */\nfunction baseWarn (msg, range) {\n console.error((\"[Vue compiler]: \" + msg));\n}\n/* eslint-enable no-unused-vars */\n\nfunction pluckModuleFunction (\n modules,\n key\n) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n}\n\nfunction addProp (el, name, value, range, dynamic) {\n (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\nfunction addAttr (el, name, value, range, dynamic) {\n var attrs = dynamic\n ? (el.dynamicAttrs || (el.dynamicAttrs = []))\n : (el.attrs || (el.attrs = []));\n attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\n// add a raw attr (use this in preTransforms)\nfunction addRawAttr (el, name, value, range) {\n el.attrsMap[name] = value;\n el.attrsList.push(rangeSetItem({ name: name, value: value }, range));\n}\n\nfunction addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n isDynamicArg,\n modifiers,\n range\n) {\n (el.directives || (el.directives = [])).push(rangeSetItem({\n name: name,\n rawName: rawName,\n value: value,\n arg: arg,\n isDynamicArg: isDynamicArg,\n modifiers: modifiers\n }, range));\n el.plain = false;\n}\n\nfunction prependModifierMarker (symbol, name, dynamic) {\n return dynamic\n ? (\"_p(\" + name + \",\\\"\" + symbol + \"\\\")\")\n : symbol + name // mark the event as captured\n}\n\nfunction addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn,\n range,\n dynamic\n) {\n modifiers = modifiers || emptyObject;\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n false\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.',\n range\n );\n }\n\n // normalize click.right and click.middle since they don't actually fire\n // this is technically browser-specific, but at least for now browsers are\n // the only target envs that have right/middle clicks.\n if (modifiers.right) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'contextmenu':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'contextmenu';\n delete modifiers.right;\n }\n } else if (modifiers.middle) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'mouseup':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'mouseup';\n }\n }\n\n // check capture modifier\n if (modifiers.capture) {\n delete modifiers.capture;\n name = prependModifierMarker('!', name, dynamic);\n }\n if (modifiers.once) {\n delete modifiers.once;\n name = prependModifierMarker('~', name, dynamic);\n }\n /* istanbul ignore if */\n if (modifiers.passive) {\n delete modifiers.passive;\n name = prependModifierMarker('&', name, dynamic);\n }\n\n var events;\n if (modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n\n var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);\n if (modifiers !== emptyObject) {\n newHandler.modifiers = modifiers;\n }\n\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n\n el.plain = false;\n}\n\nfunction getRawBindingAttr (\n el,\n name\n) {\n return el.rawAttrsMap[':' + name] ||\n el.rawAttrsMap['v-bind:' + name] ||\n el.rawAttrsMap[name]\n}\n\nfunction getBindingAttr (\n el,\n name,\n getStatic\n) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n}\n\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\nfunction getAndRemoveAttr (\n el,\n name,\n removeFromMap\n) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n if (removeFromMap) {\n delete el.attrsMap[name];\n }\n return val\n}\n\nfunction getAndRemoveAttrByRegex (\n el,\n name\n) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n var attr = list[i];\n if (name.test(attr.name)) {\n list.splice(i, 1);\n return attr\n }\n }\n}\n\nfunction rangeSetItem (\n item,\n range\n) {\n if (range) {\n if (range.start != null) {\n item.start = range.start;\n }\n if (range.end != null) {\n item.end = range.end;\n }\n }\n return item\n}\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel (\n el,\n value,\n modifiers\n) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: JSON.stringify(value),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n}\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode (\n value,\n assignment\n) {\n var res = parseModel(value);\n if (res.key === null) {\n return (value + \"=\" + assignment)\n } else {\n return (\"$set(\" + (res.exp) + \", \" + (res.key) + \", \" + assignment + \")\")\n }\n}\n\n/**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\n\nvar len, str, chr, index$1, expressionPos, expressionEndPos;\n\n\n\nfunction parseModel (val) {\n // Fix https://github.com/vuejs/vue/pull/7730\n // allow v-model=\"obj.val \" (trailing whitespace)\n val = val.trim();\n len = val.length;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n index$1 = val.lastIndexOf('.');\n if (index$1 > -1) {\n return {\n exp: val.slice(0, index$1),\n key: '\"' + val.slice(index$1 + 1) + '\"'\n }\n } else {\n return {\n exp: val,\n key: null\n }\n }\n }\n\n str = val;\n index$1 = expressionPos = expressionEndPos = 0;\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.slice(0, expressionPos),\n key: val.slice(expressionPos + 1, expressionEndPos)\n }\n}\n\nfunction next () {\n return str.charCodeAt(++index$1)\n}\n\nfunction eof () {\n return index$1 >= len\n}\n\nfunction isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n}\n\nfunction parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n}\n\nfunction parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n}\n\n/* */\n\nvar warn$1;\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\nfunction model (\n el,\n dir,\n _warn\n) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n if (false) {\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n }\n\n if (el.component) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (false) {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.',\n el.rawAttrsMap['v-model']\n );\n }\n\n // ensure runtime directive metadata\n return true\n}\n\nfunction genCheckboxModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, 'change',\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$el.checked){$$i<0&&(\" + (genAssignmentCode(value, '$$a.concat([$$v])')) + \")}\" +\n \"else{$$i>-1&&(\" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + \")}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n}\n\nfunction genRadioModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n}\n\nfunction genSelect (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n}\n\nfunction genDefaultModel (\n el,\n value,\n modifiers\n) {\n var type = el.attrsMap.type;\n\n // warn if v-bind:value conflicts with v-model\n // except for inputs with v-bind:type\n if (false) {\n var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];\n var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\n if (value$1 && !typeBinding) {\n var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';\n warn$1(\n binding + \"=\\\"\" + value$1 + \"\\\" conflicts with v-model on the same element \" +\n 'because the latter already expands to a value binding internally',\n el.rawAttrsMap[binding]\n );\n }\n }\n\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number) {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n}\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 unnecesarry `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 (false) {\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 (false) {\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 \"production\" !== '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 (false) {\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 (false\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 (false) {\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 false\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 (false\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\nvar defaultTagRE = /\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\nvar buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n});\n\n\n\nfunction parseText (\n text,\n delimiters\n) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var rawTokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index, tokenValue;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n rawTokens.push(tokenValue = text.slice(lastIndex, index));\n tokens.push(JSON.stringify(tokenValue));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n rawTokens.push({ '@binding': exp });\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n rawTokens.push(tokenValue = text.slice(lastIndex));\n tokens.push(JSON.stringify(tokenValue));\n }\n return {\n expression: tokens.join('+'),\n tokens: rawTokens\n }\n}\n\n/* */\n\nfunction transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (false) {\n var res = parseText(staticClass, options.delimiters);\n if (res) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.',\n el.rawAttrsMap['class']\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n}\n\nfunction genData (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n}\n\nvar klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData\n};\n\n/* */\n\nfunction transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n if (false) {\n var res = parseText(staticStyle, options.delimiters);\n if (res) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.',\n el.rawAttrsMap['style']\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n}\n\nfunction genData$1 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n}\n\nvar style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$1\n};\n\n/* */\n\nvar decoder;\n\nvar he = {\n decode: function decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n }\n};\n\n/* */\n\nvar isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n);\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n);\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n);\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n// Regular Expressions for parsing tags and attributes\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar dynamicArgAttribute = /^\\s*((?:v-[\\w-]+:|@|:|#)\\[[^=]+\\][^\\s\"'<>\\/=]*)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar ncname = \"[a-zA-Z_][\\\\-\\\\.0-9_a-zA-Z\" + (unicodeRegExp.source) + \"]*\";\nvar qnameCapture = \"((?:\" + ncname + \"\\\\:)?\" + ncname + \")\";\nvar startTagOpen = new RegExp((\"^<\" + qnameCapture));\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp((\"^<\\\\/\" + qnameCapture + \"[^>]*>\"));\nvar doctype = /^<!DOCTYPE [^>]+>/i;\n// #7298: escape - to avoid being pased as HTML comment when inlined in page\nvar comment = /^<!\\--/;\nvar conditionalComment = /^<!\\[/;\n\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\n\nvar decodingMap = {\n '<': '<',\n '>': '>',\n '"': '\"',\n '&': '&',\n ' ': '\\n',\n '	': '\\t',\n ''': \"'\"\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;\n\n// #5992\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\nvar shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\nfunction decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n}\n\nfunction parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n if (options.shouldKeepComment) {\n options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);\n }\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {\n advance(1);\n }\n continue\n }\n }\n\n var text = (void 0), rest = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest = html.slice(textEnd);\n while (\n !endTag.test(rest) &&\n !startTagOpen.test(rest) &&\n !comment.test(rest) &&\n !conditionalComment.test(rest)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n }\n\n if (text) {\n advance(text.length);\n }\n\n if (options.chars && text) {\n options.chars(text, index - text.length, index);\n }\n } else {\n var endTagLength = 0;\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!\\--([\\s\\S]*?)-->/g, '$1') // #7298\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (shouldIgnoreFirstNewline(stackedTag, text)) {\n text = text.slice(1);\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest$1.length;\n html = rest$1;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (false) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"), { start: index + html.length });\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {\n attr.start = index;\n advance(attr[0].length);\n attr.end = index;\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n var value = args[3] || args[4] || args[5] || '';\n var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'\n ? options.shouldDecodeNewlinesForHref\n : options.shouldDecodeNewlines;\n attrs[i] = {\n name: args[1],\n value: decodeAttr(value, shouldDecodeNewlines)\n };\n if (false) {\n attrs[i].start = args.start + args[0].match(/^\\s*/).length;\n attrs[i].end = args.end;\n }\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs, start: match.start, end: match.end });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (false\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\"),\n { start: stack[i].start, end: stack[i].end }\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n}\n\n/* */\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:/;\nvar forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\nvar forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\nvar stripParensRE = /^\\(|\\)$/g;\nvar dynamicArgRE = /^\\[.*\\]$/;\n\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^\\.|^v-bind:/;\nvar modifierRE = /\\.[^.\\]]+(?=[^\\]]*$)/g;\n\nvar slotRE = /^v-slot(:|$)|^#/;\n\nvar lineBreakRE = /[\\r\\n]/;\nvar whitespaceRE$1 = /\\s+/g;\n\nvar invalidAttributeRE = /[\\s\"'<>\\/=]/;\n\nvar decodeHTMLCached = cached(he.decode);\n\nvar emptySlotScopeToken = \"_empty_\";\n\n// configurable state\nvar warn$2;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\nvar maybeComponent;\n\nfunction createASTElement (\n tag,\n attrs,\n parent\n) {\n return {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n rawAttrsMap: {},\n parent: parent,\n children: []\n }\n}\n\n/**\n * Convert HTML string to AST.\n */\nfunction parse (\n template,\n options\n) {\n warn$2 = options.warn || baseWarn;\n\n platformIsPreTag = options.isPreTag || no;\n platformMustUseProp = options.mustUseProp || no;\n platformGetTagNamespace = options.getTagNamespace || no;\n var isReservedTag = options.isReservedTag || no;\n maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var whitespaceOption = options.whitespace;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg, range) {\n if (!warned) {\n warned = true;\n warn$2(msg, range);\n }\n }\n\n function closeElement (element) {\n trimEndingWhitespace(element);\n if (!inVPre && !element.processed) {\n element = processElement(element, options);\n }\n // tree management\n if (!stack.length && element !== root) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n if (false) {\n checkRootConstraints(element);\n }\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else if (false) {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\",\n { start: element.start }\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else {\n if (element.slotScope) {\n // scoped slot\n // keep it in the children list so that v-else(-if) conditions can\n // find it as the prev node.\n var name = element.slotTarget || '\"default\"'\n ;(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n }\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n\n // final children cleanup\n // filter out scoped slots\n element.children = element.children.filter(function (c) { return !(c).slotScope; });\n // remove trailing whitespace node again\n trimEndingWhitespace(element);\n\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n // apply post-transforms\n for (var i = 0; i < postTransforms.length; i++) {\n postTransforms[i](element, options);\n }\n }\n\n function trimEndingWhitespace (el) {\n // remove trailing whitespace node\n if (!inPre) {\n var lastNode;\n while (\n (lastNode = el.children[el.children.length - 1]) &&\n lastNode.type === 3 &&\n lastNode.text === ' '\n ) {\n el.children.pop();\n }\n }\n }\n\n function checkRootConstraints (el) {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.',\n { start: el.start }\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.',\n el.rawAttrsMap['v-for']\n );\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,\n shouldKeepComment: options.comments,\n outputSourceRange: options.outputSourceRange,\n start: function start (tag, attrs, unary, start$1, end) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = createASTElement(tag, attrs, currentParent);\n if (ns) {\n element.ns = ns;\n }\n\n if (false) {\n if (options.outputSourceRange) {\n element.start = start$1;\n element.end = end;\n element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {\n cumulated[attr.name] = attr;\n return cumulated\n }, {});\n }\n attrs.forEach(function (attr) {\n if (invalidAttributeRE.test(attr.name)) {\n warn$2(\n \"Invalid dynamic argument expression: attribute names cannot contain \" +\n \"spaces, quotes, <, >, / or =.\",\n {\n start: attr.start + attr.name.indexOf(\"[\"),\n end: attr.start + attr.name.length\n }\n );\n }\n });\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n \"production\" !== 'production' && warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.',\n { start: element.start }\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n element = preTransforms[i](element, options) || element;\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else if (!element.processed) {\n // structural directives\n processFor(element);\n processIf(element);\n processOnce(element);\n }\n\n if (!root) {\n root = element;\n if (false) {\n checkRootConstraints(root);\n }\n }\n\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n closeElement(element);\n }\n },\n\n end: function end (tag, start, end$1) {\n var element = stack[stack.length - 1];\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n if (false) {\n element.end = end$1;\n }\n closeElement(element);\n },\n\n chars: function chars (text, start, end) {\n if (!currentParent) {\n if (false) {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.',\n { start: start }\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\"),\n { start: start }\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n if (inPre || text.trim()) {\n text = isTextTag(currentParent) ? text : decodeHTMLCached(text);\n } else if (!children.length) {\n // remove the whitespace-only node right after an opening tag\n text = '';\n } else if (whitespaceOption) {\n if (whitespaceOption === 'condense') {\n // in condense mode, remove the whitespace node if it contains\n // line break, otherwise condense to a single space\n text = lineBreakRE.test(text) ? '' : ' ';\n } else {\n text = ' ';\n }\n } else {\n text = preserveWhitespace ? ' ' : '';\n }\n if (text) {\n if (!inPre && whitespaceOption === 'condense') {\n // condense consecutive whitespaces into single space\n text = text.replace(whitespaceRE$1, ' ');\n }\n var res;\n var child;\n if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {\n child = {\n type: 2,\n expression: res.expression,\n tokens: res.tokens,\n text: text\n };\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n child = {\n type: 3,\n text: text\n };\n }\n if (child) {\n if (false) {\n child.start = start;\n child.end = end;\n }\n children.push(child);\n }\n }\n },\n comment: function comment (text, start, end) {\n // adding anyting as a sibling to the root node is forbidden\n // comments should still be allowed, but ignored\n if (currentParent) {\n var child = {\n type: 3,\n text: text,\n isComment: true\n };\n if (false) {\n child.start = start;\n child.end = end;\n }\n currentParent.children.push(child);\n }\n }\n });\n return root\n}\n\nfunction processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n}\n\nfunction processRawAttrs (el) {\n var list = el.attrsList;\n var len = list.length;\n if (len) {\n var attrs = el.attrs = new Array(len);\n for (var i = 0; i < len; i++) {\n attrs[i] = {\n name: list[i].name,\n value: JSON.stringify(list[i].value)\n };\n if (list[i].start != null) {\n attrs[i].start = list[i].start;\n attrs[i].end = list[i].end;\n }\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n}\n\nfunction processElement (\n element,\n options\n) {\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = (\n !element.key &&\n !element.scopedSlots &&\n !element.attrsList.length\n );\n\n processRef(element);\n processSlotContent(element);\n processSlotOutlet(element);\n processComponent(element);\n for (var i = 0; i < transforms.length; i++) {\n element = transforms[i](element, options) || element;\n }\n processAttrs(element);\n return element\n}\n\nfunction processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n if (false) {\n if (el.tag === 'template') {\n warn$2(\n \"<template> cannot be keyed. Place the key on real elements instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n if (el.for) {\n var iterator = el.iterator2 || el.iterator1;\n var parent = el.parent;\n if (iterator && iterator === exp && parent && parent.tag === 'transition-group') {\n warn$2(\n \"Do not use v-for index as key on <transition-group> children, \" +\n \"this is the same as not using keys.\",\n getRawBindingAttr(el, 'key'),\n true /* tip */\n );\n }\n }\n }\n el.key = exp;\n }\n}\n\nfunction processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n}\n\nfunction processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var res = parseFor(exp);\n if (res) {\n extend(el, res);\n } else if (false) {\n warn$2(\n (\"Invalid v-for expression: \" + exp),\n el.rawAttrsMap['v-for']\n );\n }\n }\n}\n\n\n\nfunction parseFor (exp) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) { return }\n var res = {};\n res.for = inMatch[2].trim();\n var alias = inMatch[1].trim().replace(stripParensRE, '');\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n res.alias = alias.replace(forIteratorRE, '').trim();\n res.iterator1 = iteratorMatch[1].trim();\n if (iteratorMatch[2]) {\n res.iterator2 = iteratorMatch[2].trim();\n }\n } else {\n res.alias = alias;\n }\n return res\n}\n\nfunction processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n}\n\nfunction processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else if (false) {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\",\n el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']\n );\n }\n}\n\nfunction findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (false) {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\",\n children[i]\n );\n }\n children.pop();\n }\n }\n}\n\nfunction addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n}\n\nfunction processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n}\n\n// handle content being passed to a component as slot,\n// e.g. <template slot=\"xxx\">, <div slot-scope=\"xxx\">\nfunction processSlotContent (el) {\n var slotScope;\n if (el.tag === 'template') {\n slotScope = getAndRemoveAttr(el, 'scope');\n /* istanbul ignore if */\n if (false) {\n warn$2(\n \"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n \"can also be used on plain elements in addition to <template> to \" +\n \"denote scoped slots.\",\n el.rawAttrsMap['scope'],\n true\n );\n }\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n /* istanbul ignore if */\n if (false) {\n warn$2(\n \"Ambiguous combined usage of slot-scope and v-for on <\" + (el.tag) + \"> \" +\n \"(v-for takes higher priority). Use a wrapper <template> for the \" +\n \"scoped slot to make it clearer.\",\n el.rawAttrsMap['slot-scope'],\n true\n );\n }\n el.slotScope = slotScope;\n }\n\n // slot=\"xxx\"\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);\n // preserve slot as an attribute for native shadow DOM compat\n // only for non-scoped slots.\n if (el.tag !== 'template' && !el.slotScope) {\n addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));\n }\n }\n\n // 2.6 v-slot syntax\n {\n if (el.tag === 'template') {\n // v-slot on <template>\n var slotBinding = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding) {\n if (false) {\n if (el.slotTarget || el.slotScope) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.parent && !maybeComponent(el.parent)) {\n warn$2(\n \"<template v-slot> can only appear at the root level inside \" +\n \"the receiving the component\",\n el\n );\n }\n }\n var ref = getSlotName(slotBinding);\n var name = ref.name;\n var dynamic = ref.dynamic;\n el.slotTarget = name;\n el.slotTargetDynamic = dynamic;\n el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf\n }\n } else {\n // v-slot on component, denotes default slot\n var slotBinding$1 = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding$1) {\n if (false) {\n if (!maybeComponent(el)) {\n warn$2(\n \"v-slot can only be used on components or <template>.\",\n slotBinding$1\n );\n }\n if (el.slotScope || el.slotTarget) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.scopedSlots) {\n warn$2(\n \"To avoid scope ambiguity, the default slot should also use \" +\n \"<template> syntax when there are other named slots.\",\n slotBinding$1\n );\n }\n }\n // add the component's children to its default slot\n var slots = el.scopedSlots || (el.scopedSlots = {});\n var ref$1 = getSlotName(slotBinding$1);\n var name$1 = ref$1.name;\n var dynamic$1 = ref$1.dynamic;\n var slotContainer = slots[name$1] = createASTElement('template', [], el);\n slotContainer.slotTarget = name$1;\n slotContainer.slotTargetDynamic = dynamic$1;\n slotContainer.children = el.children.filter(function (c) {\n if (!c.slotScope) {\n c.parent = slotContainer;\n return true\n }\n });\n slotContainer.slotScope = slotBinding$1.value || emptySlotScopeToken;\n // remove children as they are returned from scopedSlots now\n el.children = [];\n // mark el non-plain so data gets generated\n el.plain = false;\n }\n }\n }\n}\n\nfunction getSlotName (binding) {\n var name = binding.name.replace(slotRE, '');\n if (!name) {\n if (binding.name[0] !== '#') {\n name = 'default';\n } else if (false) {\n warn$2(\n \"v-slot shorthand syntax requires a slot name.\",\n binding\n );\n }\n }\n return dynamicArgRE.test(name)\n // dynamic [name]\n ? { name: name.slice(1, -1), dynamic: true }\n // static name\n : { name: (\"\\\"\" + name + \"\\\"\"), dynamic: false }\n}\n\n// handle <slot/> outlets\nfunction processSlotOutlet (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (false) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n }\n}\n\nfunction processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n}\n\nfunction processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, syncGen, isDynamic;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name.replace(dirRE, ''));\n // support .foo shorthand syntax for the .prop modifier\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n if (\n false\n ) {\n warn$2(\n (\"The value for a v-bind expression cannot be empty. Found in \\\"v-bind:\" + name + \"\\\"\")\n );\n }\n if (modifiers) {\n if (modifiers.prop && !isDynamic) {\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel && !isDynamic) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n syncGen = genAssignmentCode(value, \"$event\");\n if (!isDynamic) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n if (hyphenate(name) !== camelize(name)) {\n addHandler(\n el,\n (\"update:\" + (hyphenate(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n }\n } else {\n // handler w/ dynamic event name\n addHandler(\n el,\n (\"\\\"update:\\\"+(\" + name + \")\"),\n syncGen,\n null,\n false,\n warn$2,\n list[i],\n true // dynamic\n );\n }\n }\n }\n if ((modifiers && modifiers.prop) || (\n !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n )) {\n addProp(el, name, value, list[i], isDynamic);\n } else {\n addAttr(el, name, value, list[i], isDynamic);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n addHandler(el, name, value, modifiers, false, warn$2, list[i], isDynamic);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n isDynamic = false;\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n if (dynamicArgRE.test(arg)) {\n arg = arg.slice(1, -1);\n isDynamic = true;\n }\n }\n addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);\n if (false) {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n if (false) {\n var res = parseText(value, delimiters);\n if (res) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.',\n list[i]\n );\n }\n }\n addAttr(el, name, JSON.stringify(value), list[i]);\n // #6887 firefox doesn't update muted state if set via attribute\n // even immediately after element creation\n if (!el.component &&\n name === 'muted' &&\n platformMustUseProp(el.tag, el.attrsMap.type, name)) {\n addProp(el, name, 'true', list[i]);\n }\n }\n }\n}\n\nfunction checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n}\n\nfunction parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n}\n\nfunction makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n false\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name, attrs[i]);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n}\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n}\n\nfunction isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n}\n\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n\n/* istanbul ignore next */\nfunction guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n}\n\nfunction checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n _el = _el.parent;\n }\n}\n\n/* */\n\nfunction preTransformNode (el, options) {\n if (el.tag === 'input') {\n var map = el.attrsMap;\n if (!map['v-model']) {\n return\n }\n\n var typeBinding;\n if (map[':type'] || map['v-bind:type']) {\n typeBinding = getBindingAttr(el, 'type');\n }\n if (!map.type && !typeBinding && map['v-bind']) {\n typeBinding = \"(\" + (map['v-bind']) + \").type\";\n }\n\n if (typeBinding) {\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n var ifConditionExtra = ifCondition ? (\"&&(\" + ifCondition + \")\") : \"\";\n var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;\n var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);\n // 1. checkbox\n var branch0 = cloneASTElement(el);\n // process for on the main node\n processFor(branch0);\n addRawAttr(branch0, 'type', 'checkbox');\n processElement(branch0, options);\n branch0.processed = true; // prevent it from double-processed\n branch0.if = \"(\" + typeBinding + \")==='checkbox'\" + ifConditionExtra;\n addIfCondition(branch0, {\n exp: branch0.if,\n block: branch0\n });\n // 2. add radio else-if condition\n var branch1 = cloneASTElement(el);\n getAndRemoveAttr(branch1, 'v-for', true);\n addRawAttr(branch1, 'type', 'radio');\n processElement(branch1, options);\n addIfCondition(branch0, {\n exp: \"(\" + typeBinding + \")==='radio'\" + ifConditionExtra,\n block: branch1\n });\n // 3. other\n var branch2 = cloneASTElement(el);\n getAndRemoveAttr(branch2, 'v-for', true);\n addRawAttr(branch2, ':type', typeBinding);\n processElement(branch2, options);\n addIfCondition(branch0, {\n exp: ifCondition,\n block: branch2\n });\n\n if (hasElse) {\n branch0.else = true;\n } else if (elseIfCondition) {\n branch0.elseif = elseIfCondition;\n }\n\n return branch0\n }\n }\n}\n\nfunction cloneASTElement (el) {\n return createASTElement(el.tag, el.attrsList.slice(), el.parent)\n}\n\nvar model$1 = {\n preTransformNode: preTransformNode\n};\n\nvar modules$1 = [\n klass$1,\n style$1,\n model$1\n];\n\n/* */\n\nfunction text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\n/* */\n\nfunction html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\nvar directives$1 = {\n model: model,\n text: text,\n html: html\n};\n\n/* */\n\nvar baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n};\n\n/* */\n\nvar isStaticKey;\nvar isPlatformReservedTag;\n\nvar genStaticKeysCached = cached(genStaticKeys$1);\n\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n}\n\nfunction genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +\n (keys ? ',' + keys : '')\n )\n}\n\nfunction markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n var block = node.ifConditions[i$1].block;\n markStatic$1(block);\n if (!block.static) {\n node.static = false;\n }\n }\n }\n }\n}\n\nfunction markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\n }\n }\n }\n}\n\nfunction isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n}\n\nfunction isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n}\n\n/* */\n\nvar fnExpRE = /^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*(?:[\\w$]+)?\\s*\\(/;\nvar fnInvokeRE = /\\([^)]*?\\);*$/;\nvar simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/;\n\n// KeyboardEvent.keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n};\n\n// KeyboardEvent.key aliases\nvar keyNames = {\n // #7880: IE11 and Edge use `Esc` for Escape key name.\n esc: ['Esc', 'Escape'],\n tab: 'Tab',\n enter: 'Enter',\n // #9112: IE11 uses `Spacebar` for Space key name.\n space: [' ', 'Spacebar'],\n // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.\n up: ['Up', 'ArrowUp'],\n left: ['Left', 'ArrowLeft'],\n right: ['Right', 'ArrowRight'],\n down: ['Down', 'ArrowDown'],\n // #9112: IE11 uses `Del` for Delete key name.\n 'delete': ['Backspace', 'Delete', 'Del']\n};\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\nvar modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\n\nfunction genHandlers (\n events,\n isNative\n) {\n var prefix = isNative ? 'nativeOn:' : 'on:';\n var staticHandlers = \"\";\n var dynamicHandlers = \"\";\n for (var name in events) {\n var handlerCode = genHandler(events[name]);\n if (events[name] && events[name].dynamic) {\n dynamicHandlers += name + \",\" + handlerCode + \",\";\n } else {\n staticHandlers += \"\\\"\" + name + \"\\\":\" + handlerCode + \",\";\n }\n }\n staticHandlers = \"{\" + (staticHandlers.slice(0, -1)) + \"}\";\n if (dynamicHandlers) {\n return prefix + \"_d(\" + staticHandlers + \",[\" + (dynamicHandlers.slice(0, -1)) + \"])\"\n } else {\n return prefix + staticHandlers\n }\n}\n\nfunction genHandler (handler) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));\n\n if (!handler.modifiers) {\n if (isMethodPath || isFunctionExpression) {\n return handler.value\n }\n return (\"function($event){\" + (isFunctionInvocation ? (\"return \" + (handler.value)) : handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else if (key === 'exact') {\n var modifiers = (handler.modifiers);\n genModifierCode += genGuard(\n ['ctrl', 'shift', 'alt', 'meta']\n .filter(function (keyModifier) { return !modifiers[keyModifier]; })\n .map(function (keyModifier) { return (\"$event.\" + keyModifier + \"Key\"); })\n .join('||')\n );\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? (\"return \" + (handler.value) + \"($event)\")\n : isFunctionExpression\n ? (\"return (\" + (handler.value) + \")($event)\")\n : isFunctionInvocation\n ? (\"return \" + (handler.value))\n : handler.value;\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n}\n\nfunction genKeyFilter (keys) {\n return (\n // make sure the key filters only apply to KeyboardEvents\n // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake\n // key events that do not have keyCode property...\n \"if(!$event.type.indexOf('key')&&\" +\n (keys.map(genFilterCode).join('&&')) + \")return null;\"\n )\n}\n\nfunction genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var keyCode = keyCodes[key];\n var keyName = keyNames[key];\n return (\n \"_k($event.keyCode,\" +\n (JSON.stringify(key)) + \",\" +\n (JSON.stringify(keyCode)) + \",\" +\n \"$event.key,\" +\n \"\" + (JSON.stringify(keyName)) +\n \")\"\n )\n}\n\n/* */\n\nfunction on (el, dir) {\n if (false) {\n warn(\"v-on without argument does not support modifiers.\");\n }\n el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n}\n\n/* */\n\nfunction bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n };\n}\n\n/* */\n\nvar baseDirectives = {\n on: on,\n bind: bind$1,\n cloak: noop\n};\n\n/* */\n\n\n\n\n\nvar CodegenState = function CodegenState (options) {\n this.options = options;\n this.warn = options.warn || baseWarn;\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n this.directives = extend(extend({}, baseDirectives), options.directives);\n var isReservedTag = options.isReservedTag || no;\n this.maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n this.onceId = 0;\n this.staticRenderFns = [];\n this.pre = false;\n};\n\n\n\nfunction generate (\n ast,\n options\n) {\n var state = new CodegenState(options);\n var code = ast ? genElement(ast, state) : '_c(\"div\")';\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: state.staticRenderFns\n }\n}\n\nfunction genElement (el, state) {\n if (el.parent) {\n el.pre = el.pre || el.parent.pre;\n }\n\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el, state)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el, state)\n } else if (el.for && !el.forProcessed) {\n return genFor(el, state)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.tag === 'template' && !el.slotTarget && !state.pre) {\n return genChildren(el, state) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el, state)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el, state);\n } else {\n var data;\n if (!el.plain || (el.pre && state.maybeComponent(el))) {\n data = genData$2(el, state);\n }\n\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < state.transforms.length; i++) {\n code = state.transforms[i](el, code);\n }\n return code\n }\n}\n\n// hoist static sub-trees out\nfunction genStatic (el, state) {\n el.staticProcessed = true;\n // Some elements (templates) need to behave differently inside of a v-pre\n // node. All pre nodes are static roots, so we can use this as a location to\n // wrap a state change and reset it upon exiting the pre node.\n var originalPreState = state.pre;\n if (el.pre) {\n state.pre = el.pre;\n }\n state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n state.pre = originalPreState;\n return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n}\n\n// v-once\nfunction genOnce (el, state) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n \"production\" !== 'production' && state.warn(\n \"v-once can only be used inside v-for that is keyed. \",\n el.rawAttrsMap['v-once']\n );\n return genElement(el, state)\n }\n return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + \",\" + key + \")\")\n } else {\n return genStatic(el, state)\n }\n}\n\nfunction genIf (\n el,\n state,\n altGen,\n altEmpty\n) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n}\n\nfunction genIfConditions (\n conditions,\n state,\n altGen,\n altEmpty\n) {\n if (!conditions.length) {\n return altEmpty || '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return altGen\n ? altGen(el, state)\n : el.once\n ? genOnce(el, state)\n : genElement(el, state)\n }\n}\n\nfunction genFor (\n el,\n state,\n altGen,\n altHelper\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (false\n ) {\n state.warn(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n el.rawAttrsMap['v-for'],\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return (altHelper || '_l') + \"((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + ((altGen || genElement)(el, state)) +\n '})'\n}\n\nfunction genData$2 (el, state) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el, state);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < state.dataGenFns.length; i++) {\n data += state.dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:\" + (genProps(el.attrs)) + \",\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:\" + (genProps(el.props)) + \",\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true)) + \",\";\n }\n // slot target\n // only for non-scoped slots\n if (el.slotTarget && !el.slotScope) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el, el.scopedSlots, state)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el, state);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind dynamic argument wrap\n // v-bind with dynamic arguments must be applied using the same v-bind object\n // merge helper so that class/style/mustUseProp attrs are handled correctly.\n if (el.dynamicAttrs) {\n data = \"_b(\" + data + \",\\\"\" + (el.tag) + \"\\\",\" + (genProps(el.dynamicAttrs)) + \")\";\n }\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n // v-on data wrap\n if (el.wrapListeners) {\n data = el.wrapListeners(data);\n }\n return data\n}\n\nfunction genDirectives (el, state) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = state.directives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, state.warn);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\" + (dir.isDynamicArg ? dir.arg : (\"\\\"\" + (dir.arg) + \"\\\"\"))) : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n}\n\nfunction genInlineTemplate (el, state) {\n var ast = el.children[0];\n if (false) {\n state.warn(\n 'Inline-template components must have exactly one child element.',\n { start: el.start }\n );\n }\n if (ast && ast.type === 1) {\n var inlineRenderFns = generate(ast, state.options);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n}\n\nfunction genScopedSlots (\n el,\n slots,\n state\n) {\n // by default scoped slots are considered \"stable\", this allows child\n // components with only scoped slots to skip forced updates from parent.\n // but in some cases we have to bail-out of this optimization\n // for example if the slot contains dynamic names, has v-if or v-for on them...\n var needsForceUpdate = el.for || Object.keys(slots).some(function (key) {\n var slot = slots[key];\n return (\n slot.slotTargetDynamic ||\n slot.if ||\n slot.for ||\n containsSlotChild(slot) // is passing down slot from parent which may be dynamic\n )\n });\n\n // #9534: if a component with scoped slots is inside a conditional branch,\n // it's possible for the same component to be reused but with different\n // compiled slot content. To avoid that, we generate a unique key based on\n // the generated code of all the slot contents.\n var needsKey = !!el.if;\n\n // OR when it is inside another scoped slot or v-for (the reactivity may be\n // disconnected due to the intermediate scope variable)\n // #9438, #9506\n // TODO: this can be further optimized by properly analyzing in-scope bindings\n // and skip force updating ones that do not actually use scope variables.\n if (!needsForceUpdate) {\n var parent = el.parent;\n while (parent) {\n if (\n (parent.slotScope && parent.slotScope !== emptySlotScopeToken) ||\n parent.for\n ) {\n needsForceUpdate = true;\n break\n }\n if (parent.if) {\n needsKey = true;\n }\n parent = parent.parent;\n }\n }\n\n var generatedSlots = Object.keys(slots)\n .map(function (key) { return genScopedSlot(slots[key], state); })\n .join(',');\n\n return (\"scopedSlots:_u([\" + generatedSlots + \"]\" + (needsForceUpdate ? \",null,true\" : \"\") + (!needsForceUpdate && needsKey ? (\",null,false,\" + (hash(generatedSlots))) : \"\") + \")\")\n}\n\nfunction hash(str) {\n var hash = 5381;\n var i = str.length;\n while(i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n return hash >>> 0\n}\n\nfunction containsSlotChild (el) {\n if (el.type === 1) {\n if (el.tag === 'slot') {\n return true\n }\n return el.children.some(containsSlotChild)\n }\n return false\n}\n\nfunction genScopedSlot (\n el,\n state\n) {\n var isLegacySyntax = el.attrsMap['slot-scope'];\n if (el.if && !el.ifProcessed && !isLegacySyntax) {\n return genIf(el, state, genScopedSlot, \"null\")\n }\n if (el.for && !el.forProcessed) {\n return genFor(el, state, genScopedSlot)\n }\n var slotScope = el.slotScope === emptySlotScopeToken\n ? \"\"\n : String(el.slotScope);\n var fn = \"function(\" + slotScope + \"){\" +\n \"return \" + (el.tag === 'template'\n ? el.if && isLegacySyntax\n ? (\"(\" + (el.if) + \")?\" + (genChildren(el, state) || 'undefined') + \":undefined\")\n : genChildren(el, state) || 'undefined'\n : genElement(el, state)) + \"}\";\n // reverse proxy v-slot without scope on this.$slots\n var reverseProxy = slotScope ? \"\" : \",proxy:true\";\n return (\"{key:\" + (el.slotTarget || \"\\\"default\\\"\") + \",fn:\" + fn + reverseProxy + \"}\")\n}\n\nfunction genChildren (\n el,\n state,\n checkSkip,\n altGenElement,\n altGenNode\n) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n var normalizationType = checkSkip\n ? state.maybeComponent(el$1) ? \",1\" : \",0\"\n : \"\";\n return (\"\" + ((altGenElement || genElement)(el$1, state)) + normalizationType)\n }\n var normalizationType$1 = checkSkip\n ? getNormalizationType(children, state.maybeComponent)\n : 0;\n var gen = altGenNode || genNode;\n return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType$1 ? (\",\" + normalizationType$1) : ''))\n }\n}\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType (\n children,\n maybeComponent\n) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n}\n\nfunction needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n}\n\nfunction genNode (node, state) {\n if (node.type === 1) {\n return genElement(node, state)\n } else if (node.type === 3 && node.isComment) {\n return genComment(node)\n } else {\n return genText(node)\n }\n}\n\nfunction genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n}\n\nfunction genComment (comment) {\n return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n}\n\nfunction genSlot (el, state) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el, state);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs || el.dynamicAttrs\n ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({\n // slot props are camelized\n name: camelize(attr.name),\n value: attr.value,\n dynamic: attr.dynamic\n }); }))\n : null;\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n}\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent (\n componentName,\n el,\n state\n) {\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n}\n\nfunction genProps (props) {\n var staticProps = \"\";\n var dynamicProps = \"\";\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var value = transformSpecialNewlines(prop.value);\n if (prop.dynamic) {\n dynamicProps += (prop.name) + \",\" + value + \",\";\n } else {\n staticProps += \"\\\"\" + (prop.name) + \"\\\":\" + value + \",\";\n }\n }\n staticProps = \"{\" + (staticProps.slice(0, -1)) + \"}\";\n if (dynamicProps) {\n return (\"_d(\" + staticProps + \",[\" + (dynamicProps.slice(0, -1)) + \"])\")\n } else {\n return staticProps\n }\n}\n\n// #3895, #4268\nfunction transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/* */\n\n\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\nfunction detectErrors (ast, warn) {\n if (ast) {\n checkNode(ast, warn);\n }\n}\n\nfunction checkNode (node, warn) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n var range = node.rawAttrsMap[name];\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), warn, range);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], warn);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, warn, node);\n }\n}\n\nfunction checkEvent (exp, text, warn, range) {\n var stipped = exp.replace(stripStringRE, '');\n var keywordMatch = stipped.match(unaryOperatorsRE);\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n warn(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim()),\n range\n );\n }\n checkExpression(exp, text, warn, range);\n}\n\nfunction checkFor (node, text, warn, range) {\n checkExpression(node.for || '', text, warn, range);\n checkIdentifier(node.alias, 'v-for alias', text, warn, range);\n checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);\n checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);\n}\n\nfunction checkIdentifier (\n ident,\n type,\n text,\n warn,\n range\n) {\n if (typeof ident === 'string') {\n try {\n new Function((\"var \" + ident + \"=_\"));\n } catch (e) {\n warn((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())), range);\n }\n }\n}\n\nfunction checkExpression (exp, text, warn, range) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n warn(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\"\\n Raw expression: \" + (text.trim()),\n range\n );\n } else {\n warn(\n \"invalid expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\",\n range\n );\n }\n }\n}\n\n/* */\n\nvar range = 2;\n\nfunction generateCodeFrame (\n source,\n start,\n end\n) {\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = source.length;\n\n var lines = source.split(/\\r?\\n/);\n var count = 0;\n var res = [];\n for (var i = 0; i < lines.length; i++) {\n count += lines[i].length + 1;\n if (count >= start) {\n for (var j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) { continue }\n res.push((\"\" + (j + 1) + (repeat$1(\" \", 3 - String(j + 1).length)) + \"| \" + (lines[j])));\n var lineLength = lines[j].length;\n if (j === i) {\n // push underline\n var pad = start - (count - lineLength) + 1;\n var length = end > count ? lineLength - pad : end - start;\n res.push(\" | \" + repeat$1(\" \", pad) + repeat$1(\"^\", length));\n } else if (j > i) {\n if (end > count) {\n var length$1 = Math.min(end - count, lineLength);\n res.push(\" | \" + repeat$1(\"^\", length$1));\n }\n count += lineLength + 1;\n }\n }\n break\n }\n }\n return res.join('\\n')\n}\n\nfunction repeat$1 (str, n) {\n var result = '';\n if (n > 0) {\n while (true) { // eslint-disable-line\n if (n & 1) { result += str; }\n n >>>= 1;\n if (n <= 0) { break }\n str += str;\n }\n }\n return result\n}\n\n/* */\n\n\n\nfunction createFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n}\n\nfunction createCompileToFunctionFn (compile) {\n var cache = Object.create(null);\n\n return function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = extend({}, options);\n var warn$$1 = options.warn || warn;\n delete options.warn;\n\n /* istanbul ignore if */\n if (false) {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn$$1(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (cache[key]) {\n return cache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n if (false) {\n if (compiled.errors && compiled.errors.length) {\n if (options.outputSourceRange) {\n compiled.errors.forEach(function (e) {\n warn$$1(\n \"Error compiling template:\\n\\n\" + (e.msg) + \"\\n\\n\" +\n generateCodeFrame(template, e.start, e.end),\n vm\n );\n });\n } else {\n warn$$1(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n }\n if (compiled.tips && compiled.tips.length) {\n if (options.outputSourceRange) {\n compiled.tips.forEach(function (e) { return tip(e.msg, vm); });\n } else {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = createFunction(compiled.render, fnGenErrors);\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n return createFunction(code, fnGenErrors)\n });\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n if (false) {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn$$1(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (cache[key] = res)\n }\n}\n\n/* */\n\nfunction createCompilerCreator (baseCompile) {\n return function createCompiler (baseOptions) {\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n\n var warn = function (msg, range, tip) {\n (tip ? tips : errors).push(msg);\n };\n\n if (options) {\n if (false) {\n // $flow-disable-line\n var leadingSpaceLength = template.match(/^\\s*/)[0].length;\n\n warn = function (msg, range, tip) {\n var data = { msg: msg };\n if (range) {\n if (range.start != null) {\n data.start = range.start + leadingSpaceLength;\n }\n if (range.end != null) {\n data.end = range.end + leadingSpaceLength;\n }\n }\n (tip ? tips : errors).push(data);\n };\n }\n // merge custom modules\n if (options.modules) {\n finalOptions.modules =\n (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives || null),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n finalOptions.warn = warn;\n\n var compiled = baseCompile(template.trim(), finalOptions);\n if (false) {\n detectErrors(compiled.ast, warn);\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n return {\n compile: compile,\n compileToFunctions: createCompileToFunctionFn(compile)\n }\n }\n}\n\n/* */\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\nvar createCompiler = createCompilerCreator(function baseCompile (\n template,\n options\n) {\n var ast = parse(template.trim(), options);\n if (options.optimize !== false) {\n optimize(ast, options);\n }\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n});\n\n/* */\n\nvar ref$1 = createCompiler(baseOptions);\nvar compile = ref$1.compile;\nvar compileToFunctions = ref$1.compileToFunctions;\n\n/* */\n\n// check whether current browser encodes a char inside attribute values\nvar div;\nfunction getShouldDecode (href) {\n div = div || document.createElement('div');\n div.innerHTML = href ? \"<a href=\\\"\\n\\\"/>\" : \"<div a=\\\"\\n\\\"/>\";\n return div.innerHTML.indexOf(' ') > 0\n}\n\n// #3663: IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;\n// #6828: chrome encodes content in a[href]\nvar shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue.prototype.$mount;\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n \"production\" !== 'production' && warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (false) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (false) {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (false) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n outputSourceRange: \"production\" !== 'production',\n shouldDecodeNewlines: shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (false) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue.compile = compileToFunctions;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Vue);\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(47), __webpack_require__(275).setImmediate))\n\n/***/ })\n\n/******/ });\n\n\n// WEBPACK FOOTER //\n// vendor.js"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 293);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ecd4b0bd323eb9518185","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 273\n// module chunks = 1","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/setimmediate/setImmediate.js\n// module id = 274\n// module chunks = 1","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/timers-browserify/main.js\n// module id = 275\n// module chunks = 1","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 47\n// module chunks = 1","/*!\n * Vue.js v2.6.10\n * (c) 2014-2019 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 * Generate a string containing static keys from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\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 // Techinically 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\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/* 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\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 speical 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 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 becaues 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.10';\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 isPreTag = function (tag) { return tag === 'pre'; };\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 (parentElm, 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(parentElm, 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(elm, 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(parentElm, [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\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\nfunction parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n}\n\nfunction wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + (args !== ')' ? ',' + args : args))\n }\n}\n\n/* */\n\n\n\n/* eslint-disable no-unused-vars */\nfunction baseWarn (msg, range) {\n console.error((\"[Vue compiler]: \" + msg));\n}\n/* eslint-enable no-unused-vars */\n\nfunction pluckModuleFunction (\n modules,\n key\n) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n}\n\nfunction addProp (el, name, value, range, dynamic) {\n (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\nfunction addAttr (el, name, value, range, dynamic) {\n var attrs = dynamic\n ? (el.dynamicAttrs || (el.dynamicAttrs = []))\n : (el.attrs || (el.attrs = []));\n attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\n// add a raw attr (use this in preTransforms)\nfunction addRawAttr (el, name, value, range) {\n el.attrsMap[name] = value;\n el.attrsList.push(rangeSetItem({ name: name, value: value }, range));\n}\n\nfunction addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n isDynamicArg,\n modifiers,\n range\n) {\n (el.directives || (el.directives = [])).push(rangeSetItem({\n name: name,\n rawName: rawName,\n value: value,\n arg: arg,\n isDynamicArg: isDynamicArg,\n modifiers: modifiers\n }, range));\n el.plain = false;\n}\n\nfunction prependModifierMarker (symbol, name, dynamic) {\n return dynamic\n ? (\"_p(\" + name + \",\\\"\" + symbol + \"\\\")\")\n : symbol + name // mark the event as captured\n}\n\nfunction addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn,\n range,\n dynamic\n) {\n modifiers = modifiers || emptyObject;\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n process.env.NODE_ENV !== 'production' && warn &&\n modifiers.prevent && modifiers.passive\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.',\n range\n );\n }\n\n // normalize click.right and click.middle since they don't actually fire\n // this is technically browser-specific, but at least for now browsers are\n // the only target envs that have right/middle clicks.\n if (modifiers.right) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'contextmenu':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'contextmenu';\n delete modifiers.right;\n }\n } else if (modifiers.middle) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'mouseup':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'mouseup';\n }\n }\n\n // check capture modifier\n if (modifiers.capture) {\n delete modifiers.capture;\n name = prependModifierMarker('!', name, dynamic);\n }\n if (modifiers.once) {\n delete modifiers.once;\n name = prependModifierMarker('~', name, dynamic);\n }\n /* istanbul ignore if */\n if (modifiers.passive) {\n delete modifiers.passive;\n name = prependModifierMarker('&', name, dynamic);\n }\n\n var events;\n if (modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n\n var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);\n if (modifiers !== emptyObject) {\n newHandler.modifiers = modifiers;\n }\n\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n\n el.plain = false;\n}\n\nfunction getRawBindingAttr (\n el,\n name\n) {\n return el.rawAttrsMap[':' + name] ||\n el.rawAttrsMap['v-bind:' + name] ||\n el.rawAttrsMap[name]\n}\n\nfunction getBindingAttr (\n el,\n name,\n getStatic\n) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n}\n\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\nfunction getAndRemoveAttr (\n el,\n name,\n removeFromMap\n) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n if (removeFromMap) {\n delete el.attrsMap[name];\n }\n return val\n}\n\nfunction getAndRemoveAttrByRegex (\n el,\n name\n) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n var attr = list[i];\n if (name.test(attr.name)) {\n list.splice(i, 1);\n return attr\n }\n }\n}\n\nfunction rangeSetItem (\n item,\n range\n) {\n if (range) {\n if (range.start != null) {\n item.start = range.start;\n }\n if (range.end != null) {\n item.end = range.end;\n }\n }\n return item\n}\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel (\n el,\n value,\n modifiers\n) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: JSON.stringify(value),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n}\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode (\n value,\n assignment\n) {\n var res = parseModel(value);\n if (res.key === null) {\n return (value + \"=\" + assignment)\n } else {\n return (\"$set(\" + (res.exp) + \", \" + (res.key) + \", \" + assignment + \")\")\n }\n}\n\n/**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\n\nvar len, str, chr, index$1, expressionPos, expressionEndPos;\n\n\n\nfunction parseModel (val) {\n // Fix https://github.com/vuejs/vue/pull/7730\n // allow v-model=\"obj.val \" (trailing whitespace)\n val = val.trim();\n len = val.length;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n index$1 = val.lastIndexOf('.');\n if (index$1 > -1) {\n return {\n exp: val.slice(0, index$1),\n key: '\"' + val.slice(index$1 + 1) + '\"'\n }\n } else {\n return {\n exp: val,\n key: null\n }\n }\n }\n\n str = val;\n index$1 = expressionPos = expressionEndPos = 0;\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.slice(0, expressionPos),\n key: val.slice(expressionPos + 1, expressionEndPos)\n }\n}\n\nfunction next () {\n return str.charCodeAt(++index$1)\n}\n\nfunction eof () {\n return index$1 >= len\n}\n\nfunction isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n}\n\nfunction parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n}\n\nfunction parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n}\n\n/* */\n\nvar warn$1;\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\nfunction model (\n el,\n dir,\n _warn\n) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n if (process.env.NODE_ENV !== 'production') {\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n }\n\n if (el.component) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (process.env.NODE_ENV !== 'production') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.',\n el.rawAttrsMap['v-model']\n );\n }\n\n // ensure runtime directive metadata\n return true\n}\n\nfunction genCheckboxModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, 'change',\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$el.checked){$$i<0&&(\" + (genAssignmentCode(value, '$$a.concat([$$v])')) + \")}\" +\n \"else{$$i>-1&&(\" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + \")}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n}\n\nfunction genRadioModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n}\n\nfunction genSelect (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n}\n\nfunction genDefaultModel (\n el,\n value,\n modifiers\n) {\n var type = el.attrsMap.type;\n\n // warn if v-bind:value conflicts with v-model\n // except for inputs with v-bind:type\n if (process.env.NODE_ENV !== 'production') {\n var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];\n var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\n if (value$1 && !typeBinding) {\n var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';\n warn$1(\n binding + \"=\\\"\" + value$1 + \"\\\" conflicts with v-model on the same element \" +\n 'because the latter already expands to a value binding internally',\n el.rawAttrsMap[binding]\n );\n }\n }\n\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number) {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n}\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 unnecesarry `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\nvar defaultTagRE = /\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\nvar buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n});\n\n\n\nfunction parseText (\n text,\n delimiters\n) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var rawTokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index, tokenValue;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n rawTokens.push(tokenValue = text.slice(lastIndex, index));\n tokens.push(JSON.stringify(tokenValue));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n rawTokens.push({ '@binding': exp });\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n rawTokens.push(tokenValue = text.slice(lastIndex));\n tokens.push(JSON.stringify(tokenValue));\n }\n return {\n expression: tokens.join('+'),\n tokens: rawTokens\n }\n}\n\n/* */\n\nfunction transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (process.env.NODE_ENV !== 'production' && staticClass) {\n var res = parseText(staticClass, options.delimiters);\n if (res) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.',\n el.rawAttrsMap['class']\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n}\n\nfunction genData (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n}\n\nvar klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData\n};\n\n/* */\n\nfunction transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(staticStyle, options.delimiters);\n if (res) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.',\n el.rawAttrsMap['style']\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n}\n\nfunction genData$1 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n}\n\nvar style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$1\n};\n\n/* */\n\nvar decoder;\n\nvar he = {\n decode: function decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n }\n};\n\n/* */\n\nvar isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n);\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n);\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n);\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n// Regular Expressions for parsing tags and attributes\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar dynamicArgAttribute = /^\\s*((?:v-[\\w-]+:|@|:|#)\\[[^=]+\\][^\\s\"'<>\\/=]*)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar ncname = \"[a-zA-Z_][\\\\-\\\\.0-9_a-zA-Z\" + (unicodeRegExp.source) + \"]*\";\nvar qnameCapture = \"((?:\" + ncname + \"\\\\:)?\" + ncname + \")\";\nvar startTagOpen = new RegExp((\"^<\" + qnameCapture));\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp((\"^<\\\\/\" + qnameCapture + \"[^>]*>\"));\nvar doctype = /^<!DOCTYPE [^>]+>/i;\n// #7298: escape - to avoid being pased as HTML comment when inlined in page\nvar comment = /^<!\\--/;\nvar conditionalComment = /^<!\\[/;\n\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\n\nvar decodingMap = {\n '<': '<',\n '>': '>',\n '"': '\"',\n '&': '&',\n ' ': '\\n',\n '	': '\\t',\n ''': \"'\"\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;\n\n// #5992\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\nvar shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\nfunction decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n}\n\nfunction parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n if (options.shouldKeepComment) {\n options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);\n }\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {\n advance(1);\n }\n continue\n }\n }\n\n var text = (void 0), rest = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest = html.slice(textEnd);\n while (\n !endTag.test(rest) &&\n !startTagOpen.test(rest) &&\n !comment.test(rest) &&\n !conditionalComment.test(rest)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n }\n\n if (text) {\n advance(text.length);\n }\n\n if (options.chars && text) {\n options.chars(text, index - text.length, index);\n }\n } else {\n var endTagLength = 0;\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!\\--([\\s\\S]*?)-->/g, '$1') // #7298\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (shouldIgnoreFirstNewline(stackedTag, text)) {\n text = text.slice(1);\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest$1.length;\n html = rest$1;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"), { start: index + html.length });\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {\n attr.start = index;\n advance(attr[0].length);\n attr.end = index;\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n var value = args[3] || args[4] || args[5] || '';\n var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'\n ? options.shouldDecodeNewlinesForHref\n : options.shouldDecodeNewlines;\n attrs[i] = {\n name: args[1],\n value: decodeAttr(value, shouldDecodeNewlines)\n };\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n attrs[i].start = args.start + args[0].match(/^\\s*/).length;\n attrs[i].end = args.end;\n }\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs, start: match.start, end: match.end });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (process.env.NODE_ENV !== 'production' &&\n (i > pos || !tagName) &&\n options.warn\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\"),\n { start: stack[i].start, end: stack[i].end }\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n}\n\n/* */\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:/;\nvar forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\nvar forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\nvar stripParensRE = /^\\(|\\)$/g;\nvar dynamicArgRE = /^\\[.*\\]$/;\n\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^\\.|^v-bind:/;\nvar modifierRE = /\\.[^.\\]]+(?=[^\\]]*$)/g;\n\nvar slotRE = /^v-slot(:|$)|^#/;\n\nvar lineBreakRE = /[\\r\\n]/;\nvar whitespaceRE$1 = /\\s+/g;\n\nvar invalidAttributeRE = /[\\s\"'<>\\/=]/;\n\nvar decodeHTMLCached = cached(he.decode);\n\nvar emptySlotScopeToken = \"_empty_\";\n\n// configurable state\nvar warn$2;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\nvar maybeComponent;\n\nfunction createASTElement (\n tag,\n attrs,\n parent\n) {\n return {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n rawAttrsMap: {},\n parent: parent,\n children: []\n }\n}\n\n/**\n * Convert HTML string to AST.\n */\nfunction parse (\n template,\n options\n) {\n warn$2 = options.warn || baseWarn;\n\n platformIsPreTag = options.isPreTag || no;\n platformMustUseProp = options.mustUseProp || no;\n platformGetTagNamespace = options.getTagNamespace || no;\n var isReservedTag = options.isReservedTag || no;\n maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var whitespaceOption = options.whitespace;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg, range) {\n if (!warned) {\n warned = true;\n warn$2(msg, range);\n }\n }\n\n function closeElement (element) {\n trimEndingWhitespace(element);\n if (!inVPre && !element.processed) {\n element = processElement(element, options);\n }\n // tree management\n if (!stack.length && element !== root) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n if (process.env.NODE_ENV !== 'production') {\n checkRootConstraints(element);\n }\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\",\n { start: element.start }\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else {\n if (element.slotScope) {\n // scoped slot\n // keep it in the children list so that v-else(-if) conditions can\n // find it as the prev node.\n var name = element.slotTarget || '\"default\"'\n ;(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n }\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n\n // final children cleanup\n // filter out scoped slots\n element.children = element.children.filter(function (c) { return !(c).slotScope; });\n // remove trailing whitespace node again\n trimEndingWhitespace(element);\n\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n // apply post-transforms\n for (var i = 0; i < postTransforms.length; i++) {\n postTransforms[i](element, options);\n }\n }\n\n function trimEndingWhitespace (el) {\n // remove trailing whitespace node\n if (!inPre) {\n var lastNode;\n while (\n (lastNode = el.children[el.children.length - 1]) &&\n lastNode.type === 3 &&\n lastNode.text === ' '\n ) {\n el.children.pop();\n }\n }\n }\n\n function checkRootConstraints (el) {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.',\n { start: el.start }\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.',\n el.rawAttrsMap['v-for']\n );\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,\n shouldKeepComment: options.comments,\n outputSourceRange: options.outputSourceRange,\n start: function start (tag, attrs, unary, start$1, end) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = createASTElement(tag, attrs, currentParent);\n if (ns) {\n element.ns = ns;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (options.outputSourceRange) {\n element.start = start$1;\n element.end = end;\n element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {\n cumulated[attr.name] = attr;\n return cumulated\n }, {});\n }\n attrs.forEach(function (attr) {\n if (invalidAttributeRE.test(attr.name)) {\n warn$2(\n \"Invalid dynamic argument expression: attribute names cannot contain \" +\n \"spaces, quotes, <, >, / or =.\",\n {\n start: attr.start + attr.name.indexOf(\"[\"),\n end: attr.start + attr.name.length\n }\n );\n }\n });\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n process.env.NODE_ENV !== 'production' && warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.',\n { start: element.start }\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n element = preTransforms[i](element, options) || element;\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else if (!element.processed) {\n // structural directives\n processFor(element);\n processIf(element);\n processOnce(element);\n }\n\n if (!root) {\n root = element;\n if (process.env.NODE_ENV !== 'production') {\n checkRootConstraints(root);\n }\n }\n\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n closeElement(element);\n }\n },\n\n end: function end (tag, start, end$1) {\n var element = stack[stack.length - 1];\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n element.end = end$1;\n }\n closeElement(element);\n },\n\n chars: function chars (text, start, end) {\n if (!currentParent) {\n if (process.env.NODE_ENV !== 'production') {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.',\n { start: start }\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\"),\n { start: start }\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n if (inPre || text.trim()) {\n text = isTextTag(currentParent) ? text : decodeHTMLCached(text);\n } else if (!children.length) {\n // remove the whitespace-only node right after an opening tag\n text = '';\n } else if (whitespaceOption) {\n if (whitespaceOption === 'condense') {\n // in condense mode, remove the whitespace node if it contains\n // line break, otherwise condense to a single space\n text = lineBreakRE.test(text) ? '' : ' ';\n } else {\n text = ' ';\n }\n } else {\n text = preserveWhitespace ? ' ' : '';\n }\n if (text) {\n if (!inPre && whitespaceOption === 'condense') {\n // condense consecutive whitespaces into single space\n text = text.replace(whitespaceRE$1, ' ');\n }\n var res;\n var child;\n if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {\n child = {\n type: 2,\n expression: res.expression,\n tokens: res.tokens,\n text: text\n };\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n child = {\n type: 3,\n text: text\n };\n }\n if (child) {\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n children.push(child);\n }\n }\n },\n comment: function comment (text, start, end) {\n // adding anyting as a sibling to the root node is forbidden\n // comments should still be allowed, but ignored\n if (currentParent) {\n var child = {\n type: 3,\n text: text,\n isComment: true\n };\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n currentParent.children.push(child);\n }\n }\n });\n return root\n}\n\nfunction processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n}\n\nfunction processRawAttrs (el) {\n var list = el.attrsList;\n var len = list.length;\n if (len) {\n var attrs = el.attrs = new Array(len);\n for (var i = 0; i < len; i++) {\n attrs[i] = {\n name: list[i].name,\n value: JSON.stringify(list[i].value)\n };\n if (list[i].start != null) {\n attrs[i].start = list[i].start;\n attrs[i].end = list[i].end;\n }\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n}\n\nfunction processElement (\n element,\n options\n) {\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = (\n !element.key &&\n !element.scopedSlots &&\n !element.attrsList.length\n );\n\n processRef(element);\n processSlotContent(element);\n processSlotOutlet(element);\n processComponent(element);\n for (var i = 0; i < transforms.length; i++) {\n element = transforms[i](element, options) || element;\n }\n processAttrs(element);\n return element\n}\n\nfunction processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.tag === 'template') {\n warn$2(\n \"<template> cannot be keyed. Place the key on real elements instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n if (el.for) {\n var iterator = el.iterator2 || el.iterator1;\n var parent = el.parent;\n if (iterator && iterator === exp && parent && parent.tag === 'transition-group') {\n warn$2(\n \"Do not use v-for index as key on <transition-group> children, \" +\n \"this is the same as not using keys.\",\n getRawBindingAttr(el, 'key'),\n true /* tip */\n );\n }\n }\n }\n el.key = exp;\n }\n}\n\nfunction processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n}\n\nfunction processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var res = parseFor(exp);\n if (res) {\n extend(el, res);\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n (\"Invalid v-for expression: \" + exp),\n el.rawAttrsMap['v-for']\n );\n }\n }\n}\n\n\n\nfunction parseFor (exp) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) { return }\n var res = {};\n res.for = inMatch[2].trim();\n var alias = inMatch[1].trim().replace(stripParensRE, '');\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n res.alias = alias.replace(forIteratorRE, '').trim();\n res.iterator1 = iteratorMatch[1].trim();\n if (iteratorMatch[2]) {\n res.iterator2 = iteratorMatch[2].trim();\n }\n } else {\n res.alias = alias;\n }\n return res\n}\n\nfunction processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n}\n\nfunction processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\",\n el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']\n );\n }\n}\n\nfunction findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (process.env.NODE_ENV !== 'production' && children[i].text !== ' ') {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\",\n children[i]\n );\n }\n children.pop();\n }\n }\n}\n\nfunction addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n}\n\nfunction processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n}\n\n// handle content being passed to a component as slot,\n// e.g. <template slot=\"xxx\">, <div slot-scope=\"xxx\">\nfunction processSlotContent (el) {\n var slotScope;\n if (el.tag === 'template') {\n slotScope = getAndRemoveAttr(el, 'scope');\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && slotScope) {\n warn$2(\n \"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n \"can also be used on plain elements in addition to <template> to \" +\n \"denote scoped slots.\",\n el.rawAttrsMap['scope'],\n true\n );\n }\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && el.attrsMap['v-for']) {\n warn$2(\n \"Ambiguous combined usage of slot-scope and v-for on <\" + (el.tag) + \"> \" +\n \"(v-for takes higher priority). Use a wrapper <template> for the \" +\n \"scoped slot to make it clearer.\",\n el.rawAttrsMap['slot-scope'],\n true\n );\n }\n el.slotScope = slotScope;\n }\n\n // slot=\"xxx\"\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);\n // preserve slot as an attribute for native shadow DOM compat\n // only for non-scoped slots.\n if (el.tag !== 'template' && !el.slotScope) {\n addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));\n }\n }\n\n // 2.6 v-slot syntax\n {\n if (el.tag === 'template') {\n // v-slot on <template>\n var slotBinding = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.slotTarget || el.slotScope) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.parent && !maybeComponent(el.parent)) {\n warn$2(\n \"<template v-slot> can only appear at the root level inside \" +\n \"the receiving the component\",\n el\n );\n }\n }\n var ref = getSlotName(slotBinding);\n var name = ref.name;\n var dynamic = ref.dynamic;\n el.slotTarget = name;\n el.slotTargetDynamic = dynamic;\n el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf\n }\n } else {\n // v-slot on component, denotes default slot\n var slotBinding$1 = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding$1) {\n if (process.env.NODE_ENV !== 'production') {\n if (!maybeComponent(el)) {\n warn$2(\n \"v-slot can only be used on components or <template>.\",\n slotBinding$1\n );\n }\n if (el.slotScope || el.slotTarget) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.scopedSlots) {\n warn$2(\n \"To avoid scope ambiguity, the default slot should also use \" +\n \"<template> syntax when there are other named slots.\",\n slotBinding$1\n );\n }\n }\n // add the component's children to its default slot\n var slots = el.scopedSlots || (el.scopedSlots = {});\n var ref$1 = getSlotName(slotBinding$1);\n var name$1 = ref$1.name;\n var dynamic$1 = ref$1.dynamic;\n var slotContainer = slots[name$1] = createASTElement('template', [], el);\n slotContainer.slotTarget = name$1;\n slotContainer.slotTargetDynamic = dynamic$1;\n slotContainer.children = el.children.filter(function (c) {\n if (!c.slotScope) {\n c.parent = slotContainer;\n return true\n }\n });\n slotContainer.slotScope = slotBinding$1.value || emptySlotScopeToken;\n // remove children as they are returned from scopedSlots now\n el.children = [];\n // mark el non-plain so data gets generated\n el.plain = false;\n }\n }\n }\n}\n\nfunction getSlotName (binding) {\n var name = binding.name.replace(slotRE, '');\n if (!name) {\n if (binding.name[0] !== '#') {\n name = 'default';\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-slot shorthand syntax requires a slot name.\",\n binding\n );\n }\n }\n return dynamicArgRE.test(name)\n // dynamic [name]\n ? { name: name.slice(1, -1), dynamic: true }\n // static name\n : { name: (\"\\\"\" + name + \"\\\"\"), dynamic: false }\n}\n\n// handle <slot/> outlets\nfunction processSlotOutlet (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (process.env.NODE_ENV !== 'production' && el.key) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n }\n}\n\nfunction processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n}\n\nfunction processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, syncGen, isDynamic;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name.replace(dirRE, ''));\n // support .foo shorthand syntax for the .prop modifier\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n value.trim().length === 0\n ) {\n warn$2(\n (\"The value for a v-bind expression cannot be empty. Found in \\\"v-bind:\" + name + \"\\\"\")\n );\n }\n if (modifiers) {\n if (modifiers.prop && !isDynamic) {\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel && !isDynamic) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n syncGen = genAssignmentCode(value, \"$event\");\n if (!isDynamic) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n if (hyphenate(name) !== camelize(name)) {\n addHandler(\n el,\n (\"update:\" + (hyphenate(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n }\n } else {\n // handler w/ dynamic event name\n addHandler(\n el,\n (\"\\\"update:\\\"+(\" + name + \")\"),\n syncGen,\n null,\n false,\n warn$2,\n list[i],\n true // dynamic\n );\n }\n }\n }\n if ((modifiers && modifiers.prop) || (\n !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n )) {\n addProp(el, name, value, list[i], isDynamic);\n } else {\n addAttr(el, name, value, list[i], isDynamic);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n addHandler(el, name, value, modifiers, false, warn$2, list[i], isDynamic);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n isDynamic = false;\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n if (dynamicArgRE.test(arg)) {\n arg = arg.slice(1, -1);\n isDynamic = true;\n }\n }\n addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);\n if (process.env.NODE_ENV !== 'production' && name === 'model') {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(value, delimiters);\n if (res) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.',\n list[i]\n );\n }\n }\n addAttr(el, name, JSON.stringify(value), list[i]);\n // #6887 firefox doesn't update muted state if set via attribute\n // even immediately after element creation\n if (!el.component &&\n name === 'muted' &&\n platformMustUseProp(el.tag, el.attrsMap.type, name)) {\n addProp(el, name, 'true', list[i]);\n }\n }\n }\n}\n\nfunction checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n}\n\nfunction parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n}\n\nfunction makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n process.env.NODE_ENV !== 'production' &&\n map[attrs[i].name] && !isIE && !isEdge\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name, attrs[i]);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n}\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n}\n\nfunction isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n}\n\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n\n/* istanbul ignore next */\nfunction guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n}\n\nfunction checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n _el = _el.parent;\n }\n}\n\n/* */\n\nfunction preTransformNode (el, options) {\n if (el.tag === 'input') {\n var map = el.attrsMap;\n if (!map['v-model']) {\n return\n }\n\n var typeBinding;\n if (map[':type'] || map['v-bind:type']) {\n typeBinding = getBindingAttr(el, 'type');\n }\n if (!map.type && !typeBinding && map['v-bind']) {\n typeBinding = \"(\" + (map['v-bind']) + \").type\";\n }\n\n if (typeBinding) {\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n var ifConditionExtra = ifCondition ? (\"&&(\" + ifCondition + \")\") : \"\";\n var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;\n var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);\n // 1. checkbox\n var branch0 = cloneASTElement(el);\n // process for on the main node\n processFor(branch0);\n addRawAttr(branch0, 'type', 'checkbox');\n processElement(branch0, options);\n branch0.processed = true; // prevent it from double-processed\n branch0.if = \"(\" + typeBinding + \")==='checkbox'\" + ifConditionExtra;\n addIfCondition(branch0, {\n exp: branch0.if,\n block: branch0\n });\n // 2. add radio else-if condition\n var branch1 = cloneASTElement(el);\n getAndRemoveAttr(branch1, 'v-for', true);\n addRawAttr(branch1, 'type', 'radio');\n processElement(branch1, options);\n addIfCondition(branch0, {\n exp: \"(\" + typeBinding + \")==='radio'\" + ifConditionExtra,\n block: branch1\n });\n // 3. other\n var branch2 = cloneASTElement(el);\n getAndRemoveAttr(branch2, 'v-for', true);\n addRawAttr(branch2, ':type', typeBinding);\n processElement(branch2, options);\n addIfCondition(branch0, {\n exp: ifCondition,\n block: branch2\n });\n\n if (hasElse) {\n branch0.else = true;\n } else if (elseIfCondition) {\n branch0.elseif = elseIfCondition;\n }\n\n return branch0\n }\n }\n}\n\nfunction cloneASTElement (el) {\n return createASTElement(el.tag, el.attrsList.slice(), el.parent)\n}\n\nvar model$1 = {\n preTransformNode: preTransformNode\n};\n\nvar modules$1 = [\n klass$1,\n style$1,\n model$1\n];\n\n/* */\n\nfunction text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\n/* */\n\nfunction html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\nvar directives$1 = {\n model: model,\n text: text,\n html: html\n};\n\n/* */\n\nvar baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n};\n\n/* */\n\nvar isStaticKey;\nvar isPlatformReservedTag;\n\nvar genStaticKeysCached = cached(genStaticKeys$1);\n\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n}\n\nfunction genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +\n (keys ? ',' + keys : '')\n )\n}\n\nfunction markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n var block = node.ifConditions[i$1].block;\n markStatic$1(block);\n if (!block.static) {\n node.static = false;\n }\n }\n }\n }\n}\n\nfunction markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\n }\n }\n }\n}\n\nfunction isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n}\n\nfunction isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n}\n\n/* */\n\nvar fnExpRE = /^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*(?:[\\w$]+)?\\s*\\(/;\nvar fnInvokeRE = /\\([^)]*?\\);*$/;\nvar simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/;\n\n// KeyboardEvent.keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n};\n\n// KeyboardEvent.key aliases\nvar keyNames = {\n // #7880: IE11 and Edge use `Esc` for Escape key name.\n esc: ['Esc', 'Escape'],\n tab: 'Tab',\n enter: 'Enter',\n // #9112: IE11 uses `Spacebar` for Space key name.\n space: [' ', 'Spacebar'],\n // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.\n up: ['Up', 'ArrowUp'],\n left: ['Left', 'ArrowLeft'],\n right: ['Right', 'ArrowRight'],\n down: ['Down', 'ArrowDown'],\n // #9112: IE11 uses `Del` for Delete key name.\n 'delete': ['Backspace', 'Delete', 'Del']\n};\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\nvar modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\n\nfunction genHandlers (\n events,\n isNative\n) {\n var prefix = isNative ? 'nativeOn:' : 'on:';\n var staticHandlers = \"\";\n var dynamicHandlers = \"\";\n for (var name in events) {\n var handlerCode = genHandler(events[name]);\n if (events[name] && events[name].dynamic) {\n dynamicHandlers += name + \",\" + handlerCode + \",\";\n } else {\n staticHandlers += \"\\\"\" + name + \"\\\":\" + handlerCode + \",\";\n }\n }\n staticHandlers = \"{\" + (staticHandlers.slice(0, -1)) + \"}\";\n if (dynamicHandlers) {\n return prefix + \"_d(\" + staticHandlers + \",[\" + (dynamicHandlers.slice(0, -1)) + \"])\"\n } else {\n return prefix + staticHandlers\n }\n}\n\nfunction genHandler (handler) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));\n\n if (!handler.modifiers) {\n if (isMethodPath || isFunctionExpression) {\n return handler.value\n }\n return (\"function($event){\" + (isFunctionInvocation ? (\"return \" + (handler.value)) : handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else if (key === 'exact') {\n var modifiers = (handler.modifiers);\n genModifierCode += genGuard(\n ['ctrl', 'shift', 'alt', 'meta']\n .filter(function (keyModifier) { return !modifiers[keyModifier]; })\n .map(function (keyModifier) { return (\"$event.\" + keyModifier + \"Key\"); })\n .join('||')\n );\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? (\"return \" + (handler.value) + \"($event)\")\n : isFunctionExpression\n ? (\"return (\" + (handler.value) + \")($event)\")\n : isFunctionInvocation\n ? (\"return \" + (handler.value))\n : handler.value;\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n}\n\nfunction genKeyFilter (keys) {\n return (\n // make sure the key filters only apply to KeyboardEvents\n // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake\n // key events that do not have keyCode property...\n \"if(!$event.type.indexOf('key')&&\" +\n (keys.map(genFilterCode).join('&&')) + \")return null;\"\n )\n}\n\nfunction genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var keyCode = keyCodes[key];\n var keyName = keyNames[key];\n return (\n \"_k($event.keyCode,\" +\n (JSON.stringify(key)) + \",\" +\n (JSON.stringify(keyCode)) + \",\" +\n \"$event.key,\" +\n \"\" + (JSON.stringify(keyName)) +\n \")\"\n )\n}\n\n/* */\n\nfunction on (el, dir) {\n if (process.env.NODE_ENV !== 'production' && dir.modifiers) {\n warn(\"v-on without argument does not support modifiers.\");\n }\n el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n}\n\n/* */\n\nfunction bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n };\n}\n\n/* */\n\nvar baseDirectives = {\n on: on,\n bind: bind$1,\n cloak: noop\n};\n\n/* */\n\n\n\n\n\nvar CodegenState = function CodegenState (options) {\n this.options = options;\n this.warn = options.warn || baseWarn;\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n this.directives = extend(extend({}, baseDirectives), options.directives);\n var isReservedTag = options.isReservedTag || no;\n this.maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n this.onceId = 0;\n this.staticRenderFns = [];\n this.pre = false;\n};\n\n\n\nfunction generate (\n ast,\n options\n) {\n var state = new CodegenState(options);\n var code = ast ? genElement(ast, state) : '_c(\"div\")';\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: state.staticRenderFns\n }\n}\n\nfunction genElement (el, state) {\n if (el.parent) {\n el.pre = el.pre || el.parent.pre;\n }\n\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el, state)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el, state)\n } else if (el.for && !el.forProcessed) {\n return genFor(el, state)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.tag === 'template' && !el.slotTarget && !state.pre) {\n return genChildren(el, state) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el, state)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el, state);\n } else {\n var data;\n if (!el.plain || (el.pre && state.maybeComponent(el))) {\n data = genData$2(el, state);\n }\n\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < state.transforms.length; i++) {\n code = state.transforms[i](el, code);\n }\n return code\n }\n}\n\n// hoist static sub-trees out\nfunction genStatic (el, state) {\n el.staticProcessed = true;\n // Some elements (templates) need to behave differently inside of a v-pre\n // node. All pre nodes are static roots, so we can use this as a location to\n // wrap a state change and reset it upon exiting the pre node.\n var originalPreState = state.pre;\n if (el.pre) {\n state.pre = el.pre;\n }\n state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n state.pre = originalPreState;\n return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n}\n\n// v-once\nfunction genOnce (el, state) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n process.env.NODE_ENV !== 'production' && state.warn(\n \"v-once can only be used inside v-for that is keyed. \",\n el.rawAttrsMap['v-once']\n );\n return genElement(el, state)\n }\n return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + \",\" + key + \")\")\n } else {\n return genStatic(el, state)\n }\n}\n\nfunction genIf (\n el,\n state,\n altGen,\n altEmpty\n) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n}\n\nfunction genIfConditions (\n conditions,\n state,\n altGen,\n altEmpty\n) {\n if (!conditions.length) {\n return altEmpty || '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return altGen\n ? altGen(el, state)\n : el.once\n ? genOnce(el, state)\n : genElement(el, state)\n }\n}\n\nfunction genFor (\n el,\n state,\n altGen,\n altHelper\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (process.env.NODE_ENV !== 'production' &&\n state.maybeComponent(el) &&\n el.tag !== 'slot' &&\n el.tag !== 'template' &&\n !el.key\n ) {\n state.warn(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n el.rawAttrsMap['v-for'],\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return (altHelper || '_l') + \"((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + ((altGen || genElement)(el, state)) +\n '})'\n}\n\nfunction genData$2 (el, state) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el, state);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < state.dataGenFns.length; i++) {\n data += state.dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:\" + (genProps(el.attrs)) + \",\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:\" + (genProps(el.props)) + \",\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true)) + \",\";\n }\n // slot target\n // only for non-scoped slots\n if (el.slotTarget && !el.slotScope) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el, el.scopedSlots, state)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el, state);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind dynamic argument wrap\n // v-bind with dynamic arguments must be applied using the same v-bind object\n // merge helper so that class/style/mustUseProp attrs are handled correctly.\n if (el.dynamicAttrs) {\n data = \"_b(\" + data + \",\\\"\" + (el.tag) + \"\\\",\" + (genProps(el.dynamicAttrs)) + \")\";\n }\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n // v-on data wrap\n if (el.wrapListeners) {\n data = el.wrapListeners(data);\n }\n return data\n}\n\nfunction genDirectives (el, state) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = state.directives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, state.warn);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\" + (dir.isDynamicArg ? dir.arg : (\"\\\"\" + (dir.arg) + \"\\\"\"))) : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n}\n\nfunction genInlineTemplate (el, state) {\n var ast = el.children[0];\n if (process.env.NODE_ENV !== 'production' && (\n el.children.length !== 1 || ast.type !== 1\n )) {\n state.warn(\n 'Inline-template components must have exactly one child element.',\n { start: el.start }\n );\n }\n if (ast && ast.type === 1) {\n var inlineRenderFns = generate(ast, state.options);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n}\n\nfunction genScopedSlots (\n el,\n slots,\n state\n) {\n // by default scoped slots are considered \"stable\", this allows child\n // components with only scoped slots to skip forced updates from parent.\n // but in some cases we have to bail-out of this optimization\n // for example if the slot contains dynamic names, has v-if or v-for on them...\n var needsForceUpdate = el.for || Object.keys(slots).some(function (key) {\n var slot = slots[key];\n return (\n slot.slotTargetDynamic ||\n slot.if ||\n slot.for ||\n containsSlotChild(slot) // is passing down slot from parent which may be dynamic\n )\n });\n\n // #9534: if a component with scoped slots is inside a conditional branch,\n // it's possible for the same component to be reused but with different\n // compiled slot content. To avoid that, we generate a unique key based on\n // the generated code of all the slot contents.\n var needsKey = !!el.if;\n\n // OR when it is inside another scoped slot or v-for (the reactivity may be\n // disconnected due to the intermediate scope variable)\n // #9438, #9506\n // TODO: this can be further optimized by properly analyzing in-scope bindings\n // and skip force updating ones that do not actually use scope variables.\n if (!needsForceUpdate) {\n var parent = el.parent;\n while (parent) {\n if (\n (parent.slotScope && parent.slotScope !== emptySlotScopeToken) ||\n parent.for\n ) {\n needsForceUpdate = true;\n break\n }\n if (parent.if) {\n needsKey = true;\n }\n parent = parent.parent;\n }\n }\n\n var generatedSlots = Object.keys(slots)\n .map(function (key) { return genScopedSlot(slots[key], state); })\n .join(',');\n\n return (\"scopedSlots:_u([\" + generatedSlots + \"]\" + (needsForceUpdate ? \",null,true\" : \"\") + (!needsForceUpdate && needsKey ? (\",null,false,\" + (hash(generatedSlots))) : \"\") + \")\")\n}\n\nfunction hash(str) {\n var hash = 5381;\n var i = str.length;\n while(i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n return hash >>> 0\n}\n\nfunction containsSlotChild (el) {\n if (el.type === 1) {\n if (el.tag === 'slot') {\n return true\n }\n return el.children.some(containsSlotChild)\n }\n return false\n}\n\nfunction genScopedSlot (\n el,\n state\n) {\n var isLegacySyntax = el.attrsMap['slot-scope'];\n if (el.if && !el.ifProcessed && !isLegacySyntax) {\n return genIf(el, state, genScopedSlot, \"null\")\n }\n if (el.for && !el.forProcessed) {\n return genFor(el, state, genScopedSlot)\n }\n var slotScope = el.slotScope === emptySlotScopeToken\n ? \"\"\n : String(el.slotScope);\n var fn = \"function(\" + slotScope + \"){\" +\n \"return \" + (el.tag === 'template'\n ? el.if && isLegacySyntax\n ? (\"(\" + (el.if) + \")?\" + (genChildren(el, state) || 'undefined') + \":undefined\")\n : genChildren(el, state) || 'undefined'\n : genElement(el, state)) + \"}\";\n // reverse proxy v-slot without scope on this.$slots\n var reverseProxy = slotScope ? \"\" : \",proxy:true\";\n return (\"{key:\" + (el.slotTarget || \"\\\"default\\\"\") + \",fn:\" + fn + reverseProxy + \"}\")\n}\n\nfunction genChildren (\n el,\n state,\n checkSkip,\n altGenElement,\n altGenNode\n) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n var normalizationType = checkSkip\n ? state.maybeComponent(el$1) ? \",1\" : \",0\"\n : \"\";\n return (\"\" + ((altGenElement || genElement)(el$1, state)) + normalizationType)\n }\n var normalizationType$1 = checkSkip\n ? getNormalizationType(children, state.maybeComponent)\n : 0;\n var gen = altGenNode || genNode;\n return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType$1 ? (\",\" + normalizationType$1) : ''))\n }\n}\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType (\n children,\n maybeComponent\n) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n}\n\nfunction needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n}\n\nfunction genNode (node, state) {\n if (node.type === 1) {\n return genElement(node, state)\n } else if (node.type === 3 && node.isComment) {\n return genComment(node)\n } else {\n return genText(node)\n }\n}\n\nfunction genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n}\n\nfunction genComment (comment) {\n return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n}\n\nfunction genSlot (el, state) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el, state);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs || el.dynamicAttrs\n ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({\n // slot props are camelized\n name: camelize(attr.name),\n value: attr.value,\n dynamic: attr.dynamic\n }); }))\n : null;\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n}\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent (\n componentName,\n el,\n state\n) {\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n}\n\nfunction genProps (props) {\n var staticProps = \"\";\n var dynamicProps = \"\";\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var value = transformSpecialNewlines(prop.value);\n if (prop.dynamic) {\n dynamicProps += (prop.name) + \",\" + value + \",\";\n } else {\n staticProps += \"\\\"\" + (prop.name) + \"\\\":\" + value + \",\";\n }\n }\n staticProps = \"{\" + (staticProps.slice(0, -1)) + \"}\";\n if (dynamicProps) {\n return (\"_d(\" + staticProps + \",[\" + (dynamicProps.slice(0, -1)) + \"])\")\n } else {\n return staticProps\n }\n}\n\n// #3895, #4268\nfunction transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/* */\n\n\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\nfunction detectErrors (ast, warn) {\n if (ast) {\n checkNode(ast, warn);\n }\n}\n\nfunction checkNode (node, warn) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n var range = node.rawAttrsMap[name];\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), warn, range);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], warn);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, warn, node);\n }\n}\n\nfunction checkEvent (exp, text, warn, range) {\n var stipped = exp.replace(stripStringRE, '');\n var keywordMatch = stipped.match(unaryOperatorsRE);\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n warn(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim()),\n range\n );\n }\n checkExpression(exp, text, warn, range);\n}\n\nfunction checkFor (node, text, warn, range) {\n checkExpression(node.for || '', text, warn, range);\n checkIdentifier(node.alias, 'v-for alias', text, warn, range);\n checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);\n checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);\n}\n\nfunction checkIdentifier (\n ident,\n type,\n text,\n warn,\n range\n) {\n if (typeof ident === 'string') {\n try {\n new Function((\"var \" + ident + \"=_\"));\n } catch (e) {\n warn((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())), range);\n }\n }\n}\n\nfunction checkExpression (exp, text, warn, range) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n warn(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\"\\n Raw expression: \" + (text.trim()),\n range\n );\n } else {\n warn(\n \"invalid expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\",\n range\n );\n }\n }\n}\n\n/* */\n\nvar range = 2;\n\nfunction generateCodeFrame (\n source,\n start,\n end\n) {\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = source.length;\n\n var lines = source.split(/\\r?\\n/);\n var count = 0;\n var res = [];\n for (var i = 0; i < lines.length; i++) {\n count += lines[i].length + 1;\n if (count >= start) {\n for (var j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) { continue }\n res.push((\"\" + (j + 1) + (repeat$1(\" \", 3 - String(j + 1).length)) + \"| \" + (lines[j])));\n var lineLength = lines[j].length;\n if (j === i) {\n // push underline\n var pad = start - (count - lineLength) + 1;\n var length = end > count ? lineLength - pad : end - start;\n res.push(\" | \" + repeat$1(\" \", pad) + repeat$1(\"^\", length));\n } else if (j > i) {\n if (end > count) {\n var length$1 = Math.min(end - count, lineLength);\n res.push(\" | \" + repeat$1(\"^\", length$1));\n }\n count += lineLength + 1;\n }\n }\n break\n }\n }\n return res.join('\\n')\n}\n\nfunction repeat$1 (str, n) {\n var result = '';\n if (n > 0) {\n while (true) { // eslint-disable-line\n if (n & 1) { result += str; }\n n >>>= 1;\n if (n <= 0) { break }\n str += str;\n }\n }\n return result\n}\n\n/* */\n\n\n\nfunction createFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n}\n\nfunction createCompileToFunctionFn (compile) {\n var cache = Object.create(null);\n\n return function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = extend({}, options);\n var warn$$1 = options.warn || warn;\n delete options.warn;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn$$1(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (cache[key]) {\n return cache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n if (process.env.NODE_ENV !== 'production') {\n if (compiled.errors && compiled.errors.length) {\n if (options.outputSourceRange) {\n compiled.errors.forEach(function (e) {\n warn$$1(\n \"Error compiling template:\\n\\n\" + (e.msg) + \"\\n\\n\" +\n generateCodeFrame(template, e.start, e.end),\n vm\n );\n });\n } else {\n warn$$1(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n }\n if (compiled.tips && compiled.tips.length) {\n if (options.outputSourceRange) {\n compiled.tips.forEach(function (e) { return tip(e.msg, vm); });\n } else {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = createFunction(compiled.render, fnGenErrors);\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n return createFunction(code, fnGenErrors)\n });\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn$$1(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (cache[key] = res)\n }\n}\n\n/* */\n\nfunction createCompilerCreator (baseCompile) {\n return function createCompiler (baseOptions) {\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n\n var warn = function (msg, range, tip) {\n (tip ? tips : errors).push(msg);\n };\n\n if (options) {\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n // $flow-disable-line\n var leadingSpaceLength = template.match(/^\\s*/)[0].length;\n\n warn = function (msg, range, tip) {\n var data = { msg: msg };\n if (range) {\n if (range.start != null) {\n data.start = range.start + leadingSpaceLength;\n }\n if (range.end != null) {\n data.end = range.end + leadingSpaceLength;\n }\n }\n (tip ? tips : errors).push(data);\n };\n }\n // merge custom modules\n if (options.modules) {\n finalOptions.modules =\n (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives || null),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n finalOptions.warn = warn;\n\n var compiled = baseCompile(template.trim(), finalOptions);\n if (process.env.NODE_ENV !== 'production') {\n detectErrors(compiled.ast, warn);\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n return {\n compile: compile,\n compileToFunctions: createCompileToFunctionFn(compile)\n }\n }\n}\n\n/* */\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\nvar createCompiler = createCompilerCreator(function baseCompile (\n template,\n options\n) {\n var ast = parse(template.trim(), options);\n if (options.optimize !== false) {\n optimize(ast, options);\n }\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n});\n\n/* */\n\nvar ref$1 = createCompiler(baseOptions);\nvar compile = ref$1.compile;\nvar compileToFunctions = ref$1.compileToFunctions;\n\n/* */\n\n// check whether current browser encodes a char inside attribute values\nvar div;\nfunction getShouldDecode (href) {\n div = div || document.createElement('div');\n div.innerHTML = href ? \"<a href=\\\"\\n\\\"/>\" : \"<div a=\\\"\\n\\\"/>\";\n return div.innerHTML.indexOf(' ') > 0\n}\n\n// #3663: IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;\n// #6828: chrome encodes content in a[href]\nvar shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue.prototype.$mount;\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !template) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n outputSourceRange: process.env.NODE_ENV !== 'production',\n shouldDecodeNewlines: shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue.compile = compileToFunctions;\n\nexport default Vue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue/dist/vue.esm.js\n// module id = 48\n// module chunks = 1"],"sourceRoot":""}