{"version":3,"sources":["webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/node-libs-browser/mock/process.js","webpack:///./node_modules/vue-router/dist/vue-router.esm.js","webpack:///./node_modules/register-service-worker/index.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/path-browserify/index.js"],"names":["normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","this","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","exports","nextTick","fn","args","Array","prototype","slice","arguments","shift","setTimeout","apply","platform","arch","execPath","title","pid","browser","env","argv","binding","name","Error","path","cwd","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","warn","condition","message","extend","a","b","key","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","toString","commaRE","encode","str","encodeURIComponent","replace","decode","decodeURIComponent","err","resolveQuery","query","extraQuery","_parseQuery","parsedQuery","parse","parseQuery","e","value","isArray","map","castQueryParamValue","String","res","trim","split","forEach","param","parts","val","length","join","undefined","push","stringifyQuery","obj","Object","keys","result","val2","filter","x","trailingSlashRE","createRoute","record","location","redirectedFrom","router","clone","route","meta","hash","params","fullPath","getFullPath","matched","formatMatch","freeze","START","unshift","ref","_stringifyQuery","stringify","isSameRoute","isObjectEqual","aKeys","sort","bKeys","every","i","aVal","bKey","bVal","isIncludedRoute","current","target","indexOf","queryIncludes","handleRouteEntered","instances","instance","cbs","enteredCbs","i$1","_isBeingDestroyed","View","props","type","default","_","children","data","routerView","$createElement","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","component","configProps","fillPropsinData","components","registerRouteInstance","vm","prepatch","vnode","componentInstance","init","propsToPass","resolveProps","attrs","config","resolvePath","relative","base","append","firstChar","charAt","stack","pop","segments","segment","parsePath","hashIndex","queryIndex","cleanPath","isarray","arr","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","create","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","params$1","rawPath","parsedPath","basePath","_Vue","toTypes","eventTypes","noop","Link","to","required","tag","exact","Boolean","activeClass","exactActiveClass","ariaCurrentValue","event","this$1","$router","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","handler","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","_parentVnode","mixin","_router","util","defineReactive","history","destroyed","defineProperty","get","_route","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","inBrowser","window","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","nameMap","addRouteRecord","l","splice","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","redirect","beforeEnter","childMatchAs","alias","aliases","aliasRoute","createMatcher","addRoutes","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","runQueue","queue","cb","step","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","error","createNavigationCancelledError","createNavigationAbortedError","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","resolveAsyncComponents","hasAsync","pending","flatMapComponents","def","cid","once","resolvedDef","isESModule","resolved","reject","reason","msg","comp","flatten","hasSymbol","Symbol","toStringTag","__esModule","called","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","toLowerCase","search","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","mode","prototypeAccessors","configurable","registerHook","list","createHref","$once","handleInitialScroll","routeOrError","beforeEach","beforeResolve","afterEach","Promise","back","forward","getMatchedComponents","normalizedTo","defineProperties","version","use","waitWindowLoad","isLocalhost","hostname","register","swUrl","hooks","registrationOptions","emit","checkValidServiceWorker","serviceWorker","registration","handleError","registerValidSW","onLine","waiting","onupdatefound","installingWorker","installing","onstatechange","controller","fetch","response","status","unregister","headers","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","enumerable","writable","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","makeInvokeMethod","tryCatch","arg","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","method","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","awrap","async","iter","object","skipTempReset","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","Function","normalizeArray","allowAboveRoot","up","last","basename","start","matchedSlash","xs","f","resolvedAbsolute","process","p","normalize","isAbsolute","trailingSlash","paths","fromParts","toParts","min","samePartsLength","outputParts","sep","dirname","code","hasRoot","ext","extname","startDot","startPart","preDotState"],"mappings":"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","file":"js/chunk-vendors~b58f7129.49fbb4c2.js","sourcesContent":["/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","/*!\n * vue-router v3.4.9\n * (c) 2020 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 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) {\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).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(/\\/\\//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 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 exact: 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 = 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);\n classes[activeClass] = this.exact\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.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 (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 (\"RouterLink 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 (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) {\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 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 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 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 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/* */\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// 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 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 = 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.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$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.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.ready = true;\n this$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 = 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.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n warn(false, 'uncaught error during route navigation:');\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 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.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.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$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.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 // 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.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$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 = 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.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 === this$1._startLocation) {\n return\n }\n\n this$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 = 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.toLowerCase().indexOf(base.toLowerCase()) === 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 = 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.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 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 = 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.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 = 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.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 = this;\n\n this.transitionTo(\n location,\n 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 },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$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 = 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.current;\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n this$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.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\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 =\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 = 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.apps.indexOf(app);\n if (index > -1) { this$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.app === app) { this$1.app = this$1.apps[0] || null; }\n\n if (!this$1.app) { this$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.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$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.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 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$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 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$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.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.4.9';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n","// Register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\nvar isLocalhost = function () { return Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n); }\n\nvar waitWindowLoad\n// https://github.com/yyx990803/register-service-worker/pull/33#discussion_r394181861\nif (typeof window !== 'undefined') {\n // Typically, a browser that supports `serviceWorker` should also have supported\n // `Promise`. But as this package can be used in environments without service\n // worker support (in that case it would do nothing), there's a chance that\n // `Promise` does not exist. So we must check for its existence first.\n if (typeof Promise !== 'undefined') {\n waitWindowLoad = new Promise(function (resolve) { return window.addEventListener('load', resolve); })\n } else {\n waitWindowLoad = { then: function (cb) { return window.addEventListener('load', cb); } }\n }\n}\n\nexport function register (swUrl, hooks) {\n if ( hooks === void 0 ) hooks = {};\n\n var registrationOptions = hooks.registrationOptions; if ( registrationOptions === void 0 ) registrationOptions = {};\n delete hooks.registrationOptions\n\n var emit = function (hook) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n if (hooks && hooks[hook]) {\n hooks[hook].apply(hooks, args)\n }\n }\n\n if ('serviceWorker' in navigator) {\n waitWindowLoad.then(function () {\n if (isLocalhost()) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, emit, registrationOptions)\n navigator.serviceWorker.ready.then(function (registration) {\n emit('ready', registration)\n }).catch(function (error) { return handleError(emit, error); })\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl, emit, registrationOptions)\n navigator.serviceWorker.ready.then(function (registration) {\n emit('ready', registration)\n }).catch(function (error) { return handleError(emit, error); })\n }\n })\n }\n}\n\nfunction handleError (emit, error) {\n if (!navigator.onLine) {\n emit('offline')\n }\n emit('error', error)\n}\n\nfunction registerValidSW (swUrl, emit, registrationOptions) {\n navigator.serviceWorker\n .register(swUrl, registrationOptions)\n .then(function (registration) {\n emit('registered', registration)\n if (registration.waiting) {\n emit('updated', registration)\n return\n }\n registration.onupdatefound = function () {\n emit('updatefound', registration)\n var installingWorker = registration.installing\n installingWorker.onstatechange = function () {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n emit('updated', registration)\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n emit('cached', registration)\n }\n }\n }\n }\n })\n .catch(function (error) { return handleError(emit, error); })\n}\n\nfunction checkValidServiceWorker (swUrl, emit, registrationOptions) {\n // Check if the service worker can be found.\n fetch(swUrl)\n .then(function (response) {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (response.status === 404) {\n // No service worker found.\n emit('error', new Error((\"Service worker not found at \" + swUrl)))\n unregister()\n } else if (response.headers.get('content-type').indexOf('javascript') === -1) {\n emit('error', new Error(\n \"Expected \" + swUrl + \" to have javascript content-type, \" +\n \"but received \" + (response.headers.get('content-type'))))\n unregister()\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, emit, registrationOptions)\n }\n })\n .catch(function (error) { return handleError(emit, error); })\n}\n\nexport function unregister () {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(function (registration) {\n registration.unregister()\n }).catch(function (error) { return handleError(emit, error); })\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n"],"sourceRoot":""}