{"version":3,"sources":["webpack:///./node_modules/vue-property-decorator/lib/vue-property-decorator.js","webpack:///./node_modules/vue-router/dist/vue-router.esm.js"],"names":["reflectMetadataIsSupported","Reflect","getMetadata","applyMetadata","options","target","key","Array","isArray","type","Object","Prop","componentOptions","k","props","Watch","path","_a","deep","_b","immediate","handler","watch","create","push","extend","a","b","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","toString","commaRE","encode","str","encodeURIComponent","replace","decode","decodeURIComponent","err","resolveQuery","query","extraQuery","_parseQuery","parsedQuery","parse","parseQuery","e","value","map","castQueryParamValue","String","res","trim","split","forEach","param","parts","shift","val","length","join","undefined","stringifyQuery","obj","keys","result","val2","filter","x","trailingSlashRE","createRoute","record","location","redirectedFrom","router","clone","route","name","meta","hash","params","fullPath","getFullPath","matched","formatMatch","freeze","START","unshift","parent","ref","_stringifyQuery","stringify","isSameRoute","onlyPath","isObjectEqual","aKeys","sort","bKeys","every","i","aVal","bKey","bVal","isIncludedRoute","current","indexOf","queryIncludes","handleRouteEntered","instances","instance","cbs","enteredCbs","i$1","_isBeingDestroyed","View","functional","default","render","_","children","data","routerView","h","$createElement","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","$vnode","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","component","configProps","fillPropsinData","components","registerRouteInstance","vm","hook","prepatch","vnode","componentInstance","init","propsToPass","resolveProps","attrs","config","resolvePath","relative","base","append","firstChar","charAt","stack","pop","segments","segment","parsePath","hashIndex","slice","queryIndex","cleanPath","isarray","arr","prototype","call","pathToRegexp_1","pathToRegexp","parse_1","compile_1","compile","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","RegExp","tokens","index","defaultDelimiter","delimiter","exec","m","escaped","offset","next","prefix","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","toUpperCase","encodeAsterisk","matches","flags","opts","pretty","token","TypeError","JSON","j","test","attachKeys","re","sensitive","regexpToRegexp","groups","source","match","arrayToRegexp","regexp","stringToRegexp","strict","end","endsWithDelimiter","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","params$1","rawPath","parsedPath","basePath","_Vue","toTypes","eventTypes","noop","Link","to","required","tag","custom","Boolean","exact","exactPath","activeClass","exactActiveClass","ariaCurrentValue","event","this$1$1","this","$router","resolve","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","guardEvent","on","click","class","scopedSlot","$scopedSlots","$hasNormal","navigate","isActive","isExactActive","findAnchor","$slots","isStatic","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","getAttribute","preventDefault","child","install","Vue","installed","isDef","v","registerInstance","callVal","$options","_parentVnode","mixin","beforeCreate","_router","util","defineReactive","history","destroyed","defineProperty","get","_route","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","inBrowser","window","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","l","splice","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","redirect","beforeEnter","childMatchAs","aliases","aliasRoute","createMatcher","addRoutes","addRoute","parentOrRoute","getRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","hasOwnProperty","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","len","Time","performance","now","Date","genStateKey","toFixed","_key","getStateKey","setStateKey","positionStore","setupScroll","scrollRestoration","protocolAndPath","protocol","host","absolutePath","stateCopy","state","replaceState","addEventListener","handlePopState","removeEventListener","handleScroll","from","isPop","app","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","then","scrollToPosition","catch","saveScrollPosition","pageXOffset","y","pageYOffset","getElementPosition","el","docEl","document","documentElement","docRect","getBoundingClientRect","elRect","left","top","isValidPosition","isNumber","normalizePosition","normalizeOffset","hashStartsWithNumberRE","isObject","selector","getElementById","querySelector","style","scrollTo","supportsPushState","ua","navigator","userAgent","pushState","url","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","error","createNavigationCancelledError","createNavigationAbortedError","message","Error","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","runQueue","queue","fn","cb","step","resolveAsyncComponents","hasAsync","pending","flatMapComponents","def","cid","once","resolvedDef","isESModule","resolved","reject","reason","msg","comp","flatten","concat","apply","hasSymbol","Symbol","toStringTag","__esModule","called","args","arguments","History","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","listeners","baseEl","resolveQueue","max","Math","updated","activated","deactivated","extractGuards","records","bind","reverse","guards","guard","extractGuard","extractLeaveGuards","bindGuard","extractUpdateHooks","extractEnterGuards","bindEnterGuard","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","prev","confirmTransition","updateRoute","ensureURL","afterHooks","abort","console","lastRouteIndex","lastCurrentIndex","beforeHooks","iterator","enterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","getLocation","__proto__","constructor","expectScroll","supportsScroll","handleRoutingEvent","go","n","fromRoute","getCurrentLocation","pathname","pathLowerCase","toLowerCase","baseLowerCase","search","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","mode","prototypeAccessors","configurable","$once","handleInitialScroll","routeOrError","beforeEach","registerHook","beforeResolve","afterEach","Promise","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","VueRouter$1","list","version","START_LOCATION","use"],"mappings":"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","file":"js/chunk-vendors~e160769a.4549a26b.js","sourcesContent":["/** vue-property-decorator verson 8.5.1 MIT LICENSE copyright 2020 kaorun343 */\n/// \n'use strict';\nimport Vue from 'vue';\nimport Component, { createDecorator, mixins } from 'vue-class-component';\nexport { Component, Vue, mixins as Mixins };\n/** Used for keying reactive provide/inject properties */\nvar reactiveInjectKey = '__reactiveInject__';\n/**\n * decorator of an inject\n * @param from key\n * @return PropertyDecorator\n */\nexport function Inject(options) {\n return createDecorator(function (componentOptions, key) {\n if (typeof componentOptions.inject === 'undefined') {\n componentOptions.inject = {};\n }\n if (!Array.isArray(componentOptions.inject)) {\n componentOptions.inject[key] = options || key;\n }\n });\n}\n/**\n * decorator of a reactive inject\n * @param from key\n * @return PropertyDecorator\n */\nexport function InjectReactive(options) {\n return createDecorator(function (componentOptions, key) {\n if (typeof componentOptions.inject === 'undefined') {\n componentOptions.inject = {};\n }\n if (!Array.isArray(componentOptions.inject)) {\n var fromKey_1 = !!options ? options.from || options : key;\n var defaultVal_1 = (!!options && options.default) || undefined;\n if (!componentOptions.computed)\n componentOptions.computed = {};\n componentOptions.computed[key] = function () {\n var obj = this[reactiveInjectKey];\n return obj ? obj[fromKey_1] : defaultVal_1;\n };\n componentOptions.inject[reactiveInjectKey] = reactiveInjectKey;\n }\n });\n}\nfunction produceProvide(original) {\n var provide = function () {\n var _this = this;\n var rv = typeof original === 'function' ? original.call(this) : original;\n rv = Object.create(rv || null);\n // set reactive services (propagates previous services if necessary)\n rv[reactiveInjectKey] = this[reactiveInjectKey] || {};\n for (var i in provide.managed) {\n rv[provide.managed[i]] = this[i];\n }\n var _loop_1 = function (i) {\n rv[provide.managedReactive[i]] = this_1[i]; // Duplicates the behavior of `@Provide`\n Object.defineProperty(rv[reactiveInjectKey], provide.managedReactive[i], {\n enumerable: true,\n get: function () { return _this[i]; },\n });\n };\n var this_1 = this;\n for (var i in provide.managedReactive) {\n _loop_1(i);\n }\n return rv;\n };\n provide.managed = {};\n provide.managedReactive = {};\n return provide;\n}\nfunction needToProduceProvide(original) {\n return (typeof original !== 'function' ||\n (!original.managed && !original.managedReactive));\n}\n/**\n * decorator of a provide\n * @param key key\n * @return PropertyDecorator | void\n */\nexport function Provide(key) {\n return createDecorator(function (componentOptions, k) {\n var provide = componentOptions.provide;\n if (needToProduceProvide(provide)) {\n provide = componentOptions.provide = produceProvide(provide);\n }\n provide.managed[k] = key || k;\n });\n}\n/**\n * decorator of a reactive provide\n * @param key key\n * @return PropertyDecorator | void\n */\nexport function ProvideReactive(key) {\n return createDecorator(function (componentOptions, k) {\n var provide = componentOptions.provide;\n // inject parent reactive services (if any)\n if (!Array.isArray(componentOptions.inject)) {\n componentOptions.inject = componentOptions.inject || {};\n componentOptions.inject[reactiveInjectKey] = {\n from: reactiveInjectKey,\n default: {},\n };\n }\n if (needToProduceProvide(provide)) {\n provide = componentOptions.provide = produceProvide(provide);\n }\n provide.managedReactive[k] = key || k;\n });\n}\n/** @see {@link https://github.com/vuejs/vue-class-component/blob/master/src/reflect.ts} */\nvar reflectMetadataIsSupported = typeof Reflect !== 'undefined' && typeof Reflect.getMetadata !== 'undefined';\nfunction applyMetadata(options, target, key) {\n if (reflectMetadataIsSupported) {\n if (!Array.isArray(options) &&\n typeof options !== 'function' &&\n typeof options.type === 'undefined') {\n var type = Reflect.getMetadata('design:type', target, key);\n if (type !== Object) {\n options.type = type;\n }\n }\n }\n}\n/**\n * decorator of model\n * @param event event name\n * @param options options\n * @return PropertyDecorator\n */\nexport function Model(event, options) {\n if (options === void 0) { options = {}; }\n return function (target, key) {\n applyMetadata(options, target, key);\n createDecorator(function (componentOptions, k) {\n ;\n (componentOptions.props || (componentOptions.props = {}))[k] = options;\n componentOptions.model = { prop: k, event: event || k };\n })(target, key);\n };\n}\n/**\n * decorator of a prop\n * @param options the options for the prop\n * @return PropertyDecorator | void\n */\nexport function Prop(options) {\n if (options === void 0) { options = {}; }\n return function (target, key) {\n applyMetadata(options, target, key);\n createDecorator(function (componentOptions, k) {\n ;\n (componentOptions.props || (componentOptions.props = {}))[k] = options;\n })(target, key);\n };\n}\n/**\n * decorator of a synced prop\n * @param propName the name to interface with from outside, must be different from decorated property\n * @param options the options for the synced prop\n * @return PropertyDecorator | void\n */\nexport function PropSync(propName, options) {\n if (options === void 0) { options = {}; }\n // @ts-ignore\n return function (target, key) {\n applyMetadata(options, target, key);\n createDecorator(function (componentOptions, k) {\n ;\n (componentOptions.props || (componentOptions.props = {}))[propName] = options;\n (componentOptions.computed || (componentOptions.computed = {}))[k] = {\n get: function () {\n return this[propName];\n },\n set: function (value) {\n // @ts-ignore\n this.$emit(\"update:\" + propName, value);\n },\n };\n })(target, key);\n };\n}\n/**\n * decorator of a watch function\n * @param path the path or the expression to observe\n * @param WatchOption\n * @return MethodDecorator\n */\nexport function Watch(path, options) {\n if (options === void 0) { options = {}; }\n var _a = options.deep, deep = _a === void 0 ? false : _a, _b = options.immediate, immediate = _b === void 0 ? false : _b;\n return createDecorator(function (componentOptions, handler) {\n if (typeof componentOptions.watch !== 'object') {\n componentOptions.watch = Object.create(null);\n }\n var watch = componentOptions.watch;\n if (typeof watch[path] === 'object' && !Array.isArray(watch[path])) {\n watch[path] = [watch[path]];\n }\n else if (typeof watch[path] === 'undefined') {\n watch[path] = [];\n }\n watch[path].push({ handler: handler, deep: deep, immediate: immediate });\n });\n}\n// Code copied from Vue/src/shared/util.js\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = function (str) { return str.replace(hyphenateRE, '-$1').toLowerCase(); };\n/**\n * decorator of an event-emitter function\n * @param event The name of the event\n * @return MethodDecorator\n */\nexport function Emit(event) {\n return function (_target, propertyKey, descriptor) {\n var key = hyphenate(propertyKey);\n var original = descriptor.value;\n descriptor.value = function emitter() {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var emit = function (returnValue) {\n var emitName = event || key;\n if (returnValue === undefined) {\n if (args.length === 0) {\n _this.$emit(emitName);\n }\n else if (args.length === 1) {\n _this.$emit(emitName, args[0]);\n }\n else {\n _this.$emit.apply(_this, [emitName].concat(args));\n }\n }\n else {\n if (args.length === 0) {\n _this.$emit(emitName, returnValue);\n }\n else if (args.length === 1) {\n _this.$emit(emitName, returnValue, args[0]);\n }\n else {\n _this.$emit.apply(_this, [emitName, returnValue].concat(args));\n }\n }\n };\n var returnValue = original.apply(this, args);\n if (isPromise(returnValue)) {\n returnValue.then(emit);\n }\n else {\n emit(returnValue);\n }\n return returnValue;\n };\n };\n}\n/**\n * decorator of a ref prop\n * @param refKey the ref key defined in template\n */\nexport function Ref(refKey) {\n return createDecorator(function (options, key) {\n options.computed = options.computed || {};\n options.computed[key] = {\n cache: false,\n get: function () {\n return this.$refs[refKey || key];\n },\n };\n });\n}\nfunction isPromise(obj) {\n return obj instanceof Promise || (obj && typeof obj.then === 'function');\n}\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\\n\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\" with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n"],"sourceRoot":""}