{"version":3,"file":"js/8345-9ebf3a5650859adf73d3.js","mappings":"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","sources":["webpack:///./node_modules/vue-router/dist/vue-router.esm.js"],"sourcesContent":["/**\n * vue-router v3.0.1\n * (c) 2017 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 (process.env.NODE_ENV !== 'production' && !condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nvar View = {\n name: 'router-view',\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 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 if (parent.$vnode && parent.$vnode.data.routerView) {\n depth++;\n }\n if (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 return h(cache[name], data, children)\n }\n\n var matched = route.matched[depth];\n // render empty node if no matched route\n if (!matched) {\n cache[name] = null;\n return h()\n }\n\n var component = cache[name] = matched.components[name];\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 // resolve props\n var propsToPass = data.props = resolveProps(route, matched.props && matched.props[name]);\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 return h(component, data, children)\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\nfunction extend (to, from) {\n for (var key in from) {\n to[key] = from[key];\n }\n return to\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\nvar decode = decodeURIComponent;\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 parsedQuery[key] = extraQuery[key];\n }\n return parsedQuery\n}\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\n ? decode(parts.join('='))\n : 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 ? Object.keys(obj).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 }).filter(function (x) { return x.length > 0; }).join('&') : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery$$1 = 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$$1),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery$$1);\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) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return (\n a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query)\n )\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params)\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);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\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\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar Link = {\n name: 'router-link',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n exact: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(this.to, current, this.append);\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 = globalActiveClass == null\n ? 'router-link-active'\n : globalActiveClass;\n var exactActiveClassFallback = globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass = this.activeClass == null\n ? activeClassFallback\n : this.activeClass;\n var exactActiveClass = this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n var compareTarget = location.path\n ? createRoute(null, location, null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\n classes[activeClass] = this.exact\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location);\n } else {\n router.push(location);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) { on[e] = handler; });\n } else {\n on[this.event] = handler;\n }\n\n var data = {\n class: classes\n };\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href };\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 extend = _Vue.util.extend;\n var aData = a.data = extend({}, a.data);\n aData.on = on;\n var aAttrs = a.data.attrs = extend({}, a.data.attrs);\n aAttrs.href = href;\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('router-view', View);\n Vue.component('router-link', 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 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(/\\/\\//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))\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) {\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 + ')$');\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.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}\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 try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n return filler(params || {}, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n }\n}\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap\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);\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 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(path || name)) + \" cannot be a \" +\n \"string id. Use an actual component instead.\"\n );\n }\n\n var pathToRegexpOptions = route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(\n path,\n parent,\n pathToRegexpOptions.strict\n );\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 instances: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props: 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 (route.name && !route.redirect && route.children.some(function (child) { return /^\\/?$/.test(child.path); })) {\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 (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias)\n ? route.alias\n : [route.alias];\n\n aliases.forEach(function (alias) {\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 (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\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 (path, pathToRegexpOptions) {\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(!keys[key.name], (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\"));\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (path, parent, strict) {\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\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.name || next._normalized) {\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = assign({}, next);\n next._normalized = true;\n var params = assign(assign({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params, (\"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\nfunction assign (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\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 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 if (record) {\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n }\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 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 var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n if (key) {\n params[key.name] = val;\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\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Fix for #1585 for Firefox\n window.history.replaceState({ key: getStateKey() }, '');\n window.addEventListener('popstate', function (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\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(to, from, isPop ? position : null);\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll.then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\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 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\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n var el = document.querySelector(shouldScroll.selector);\n if (el) {\n var offset = shouldScroll.offset && typeof shouldScroll.offset === 'object' ? shouldScroll.offset : {};\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 window.scrollTo(position.x, position.y);\n }\n}\n\n/* */\n\nvar supportsPushState = inBrowser && (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 && 'pushState' in window.history\n})();\n\n// use User Timing api (if present) for more accurate key precision\nvar Time = inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nvar _key = genKey();\n\nfunction genKey () {\n return Time.now().toFixed(3)\n}\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n _key = key;\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 history.replaceState({ key: _key }, '', url);\n } else {\n _key = genKey();\n history.pushState({ key: _key }, '', 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/* */\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};\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 (location, onComplete, onAbort) {\n var this$1 = this;\n\n var route = this.router.match(location, this.current);\n this.confirmTransition(route, function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) { cb(route); });\n }\n }, function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) { cb(err); });\n }\n });\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n var abort = function (err) {\n if (isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) { cb(err); });\n } else {\n warn(false, 'uncaught error during route navigation:');\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n route.matched.length === current.matched.length\n ) {\n this.ensureURL();\n return abort()\n }\n\n var ref = resolveQueue(this.current.matched, route.matched);\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 this.pending = route;\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort()\n }\n try {\n hook(route, current, function (to) {\n if (to === false || isError(to)) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' && (\n typeof to.path === 'string' ||\n typeof to.name === 'string'\n ))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort();\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$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 var postEnterCbs = [];\n var isValid = function () { return this$1.current === route; };\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort()\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n postEnterCbs.forEach(function (cb) { cb(); });\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n var prev = this.current;\n this.current = route;\n this.cb && this.cb(route);\n this.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\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 cbs,\n isValid\n) {\n return extractGuards(activated, 'beforeRouteEnter', function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key, cbs, isValid)\n })\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key,\n cbs,\n isValid\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n next(cb);\n if (typeof cb === 'function') {\n cbs.push(function () {\n // #750\n // if a router-view is wrapped with an out-in transition,\n // the instance may not have been registered at this time.\n // we will need to poll for registration until current route\n // is no longer valid.\n poll(cb, match.instances, key, isValid);\n });\n }\n })\n }\n}\n\nfunction poll (\n cb, // somehow flow cannot infer this is a function\n instances,\n key,\n isValid\n) {\n if (instances[key]) {\n cb(instances[key]);\n } else if (isValid()) {\n setTimeout(function () {\n poll(cb, instances, key, isValid);\n }, 16);\n }\n}\n\n/* */\n\n\nvar HTML5History = (function (History$$1) {\n function HTML5History (router, base) {\n var this$1 = this;\n\n History$$1.call(this, router, base);\n\n var expectScroll = router.options.scrollBehavior;\n\n if (expectScroll) {\n setupScroll();\n }\n\n var initLocation = getLocation(this.base);\n window.addEventListener('popstate', function (e) {\n var current = this$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.base);\n if (this$1.current === START && location === initLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (expectScroll) {\n handleScroll(router, route, current, true);\n }\n });\n });\n }\n\n if ( History$$1 ) HTML5History.__proto__ = History$$1;\n HTML5History.prototype = Object.create( History$$1 && History$$1.prototype );\n HTML5History.prototype.constructor = HTML5History;\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 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$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 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$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 if (base && path.indexOf(base) === 0) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\n\nvar HashHistory = (function (History$$1) {\n function HashHistory (router, base, fallback) {\n History$$1.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$$1 ) HashHistory.__proto__ = History$$1;\n HashHistory.prototype = Object.create( History$$1 && History$$1.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 = this;\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n window.addEventListener(supportsPushState ? 'popstate' : 'hashchange', function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\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(\n cleanPath(base + '/#' + location)\n );\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 return index === -1 ? '' : href.slice(index + 1)\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\n\nvar AbstractHistory = (function (History$$1) {\n function AbstractHistory (router, base) {\n History$$1.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History$$1 ) AbstractHistory.__proto__ = History$$1;\n AbstractHistory.prototype = Object.create( History$$1 && History$$1.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$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(route, function () {\n this$1.index = targetIndex;\n this$1.updateRoute(route);\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\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\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 = 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 (\n raw,\n current,\n redirectedFrom\n) {\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 = this;\n\n process.env.NODE_ENV !== 'production' && 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 // main app already initialized.\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History) {\n history.transitionTo(history.getCurrentLocation());\n } else if (history instanceof HashHistory) {\n var setupHashListener = function () {\n history.setupListeners();\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupHashListener,\n setupHashListener\n );\n }\n\n history.listen(function (route) {\n this$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 this.history.push(location, onComplete, onAbort);\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n this.history.replace(location, onComplete, onAbort);\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([], route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n }))\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n var location = normalizeLocation(\n to,\n current || this.history.current,\n append,\n this\n );\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.addRoutes = function addRoutes (routes) {\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\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\nVueRouter.install = install;\nVueRouter.version = '3.0.1';\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n"],"names":["isError","err","Object","prototype","toString","call","indexOf","View","name","functional","props","type","String","default","render","_","ref","children","parent","data","routerView","h","$createElement","route","$route","cache","_routerViewCache","depth","inactive","_routerRoot","$vnode","_inactive","$parent","routerViewDepth","matched","component","components","registerRouteInstance","vm","val","current","instances","hook","prepatch","vnode","componentInstance","propsToPass","config","params","undefined","resolveProps","to","from","key","extend","attrs","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","commaRE","encode","str","encodeURIComponent","replace","decode","decodeURIComponent","parseQuery","query","res","trim","split","forEach","param","parts","shift","length","join","Array","isArray","push","stringifyQuery","obj","keys","map","result","val2","filter","x","trailingSlashRE","createRoute","record","location","redirectedFrom","router","stringifyQuery$$1","options","clone","e","meta","path","hash","fullPath","getFullPath","formatMatch","freeze","value","START","unshift","_stringifyQuery","isSameRoute","a","b","isObjectEqual","aKeys","bKeys","every","aVal","bVal","_Vue","Link","required","tag","exact","Boolean","append","activeClass","exactActiveClass","event","this$1","this","$router","resolve","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","target","queryIncludes","isIncludedRoute","handler","guardEvent","on","click","class","findAnchor","$slots","isStatic","util","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","getAttribute","test","preventDefault","child","i","inBrowser","window","resolvePath","relative","base","firstChar","charAt","stack","pop","segments","segment","cleanPath","isarray","arr","pathToRegexp_1","pathToRegexp","parse_1","parse","compile_1","tokensToFunction","tokensToFunction_1","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","RegExp","tokens","index","defaultDelimiter","delimiter","exec","m","escaped","offset","slice","next","prefix","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","toUpperCase","matches","opts","pretty","token","TypeError","JSON","stringify","j","attachKeys","re","flags","sensitive","strict","end","endsWithDelimiter","groups","source","match","regexpToRegexp","arrayToRegexp","stringToRegexp","compile","regexpCompileCache","create","fillParams","routeMsg","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","nameMap","addRouteRecord","l","splice","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","redirect","beforeEnter","childMatchAs","alias","aliasRoute","normalizeLocation","raw","_normalized","assign","rawPath","parsedPath","hashIndex","queryIndex","parsePath","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","hasOwnProperty","resolveRecordPath","aliasedMatch","aliasedRecord","addRoutes","len","positionStore","setupScroll","history","replaceState","getStateKey","addEventListener","saveScrollPosition","state","_key","handleScroll","isPop","app","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","then","scrollToPosition","catch","pageXOffset","y","pageYOffset","isValidPosition","isNumber","normalizePosition","v","isObject","selector","el","document","querySelector","docRect","documentElement","getBoundingClientRect","elRect","left","top","getElementPosition","scrollTo","ua","supportsPushState","navigator","userAgent","Time","performance","now","Date","genKey","toFixed","pushState","url","runQueue","queue","fn","cb","step","resolveAsyncComponents","hasAsync","pending","error","flatMapComponents","def","cid","once","resolvedDef","__esModule","hasSymbol","Symbol","toStringTag","resolved","reject","reason","msg","Error","comp","flatten","concat","apply","called","args","arguments","History","baseEl","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","extractGuards","records","bind","reverse","guards","instance","guard","extractGuard","bindGuard","poll","isValid","setTimeout","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","abort","console","max","Math","updated","activated","deactivated","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","iterator","postEnterCbs","enterGuards","cbs","bindEnterGuard","extractEnterGuards","resolveHooks","prev","afterHooks","HTML5History","History$$1","expectScroll","initLocation","getLocation","__proto__","constructor","go","n","fromRoute","getCurrentLocation","pathname","search","HashHistory","fallback","checkFallback","ensureSlash","setupListeners","supportsScroll","getHash","replaceHash","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","mode","prototypeAccessors","configurable","registerHook","list","get","init","setupHashListener","_route","beforeEach","beforeResolve","afterEach","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","install","Vue","installed","isDef","registerInstance","callVal","$options","_parentVnode","mixin","beforeCreate","_router","defineReactive","destroyed","defineProperty","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","version","use"],"sourceRoot":""}