Files
ZERO_CODE/ZeroCodeProject/main/client/node_modules/.cache/babel-loader/9fbdd3dc91b2b03ad35622f93f451f2277fb662936827023f79df135d36bd86f.json
vermouth789 fe39320977 123
123
2026-01-11 00:11:34 +08:00

1 line
236 KiB
JSON

{"ast":null,"code":"import \"core-js/modules/es.array.push.js\";\n/*!\n * vue-router v3.2.0\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}\nfunction warn(condition, message) {\n if (process.env.NODE_ENV !== 'production' && !condition) {\n typeof console !== 'undefined' && console.warn(\"[vue-router] \" + message);\n }\n}\nfunction isError(err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1;\n}\nfunction isExtendedError(constructor, err) {\n return err instanceof constructor ||\n // _name is to support IE9 too\n err && (err.name === constructor.name || err._name === constructor._name);\n}\nfunction extend(a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a;\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 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] = {\n component: component\n };\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 (val && current !== vm || !val && current === vm) {\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 ;\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 && vnode.componentInstance && vnode.componentInstance !== matched.instances[name]) {\n matched.instances[name] = vnode.componentInstance;\n }\n };\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cachce\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n return h(component, data, children);\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}\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(false, \"props in \\\"\" + route.path + \"\\\" is a \" + typeof config + \", \" + \"expecting an object, function or boolean.\");\n }\n }\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) {\n return '%' + c.charCodeAt(0).toString(16);\n};\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) {\n return encodeURIComponent(str).replace(encodeReserveRE, encodeReserveReplacer).replace(commaRE, ',');\n};\nvar decode = decodeURIComponent;\nfunction resolveQuery(query, extraQuery, _parseQuery) {\n if (extraQuery === void 0) extraQuery = {};\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n parsedQuery[key] = extraQuery[key];\n }\n return parsedQuery;\n}\nfunction parseQuery(query) {\n var res = {};\n query = query.trim().replace(/^(\\?|#|&)/, '');\n if (!query) {\n return res;\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 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 return res;\n}\nfunction stringifyQuery(obj) {\n var res = obj ? Object.keys(obj).map(function (key) {\n var val = obj[key];\n if (val === undefined) {\n return '';\n }\n if (val === null) {\n return encode(key);\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 return encode(key) + '=' + encode(val);\n }).filter(function (x) {\n return x.length > 0;\n }).join('&') : null;\n return res ? \"?\" + res : '';\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\nfunction createRoute(record, location, redirectedFrom, router) {\n var stringifyQuery = router && router.options.stringifyQuery;\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\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}\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});\nfunction formatMatch(record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res;\n}\nfunction getFullPath(ref, _stringifyQuery) {\n var path = ref.path;\n var query = ref.query;\n if (query === void 0) query = {};\n var hash = ref.hash;\n if (hash === void 0) hash = '';\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash;\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 a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && a.hash === b.hash && isObjectEqual(a.query, b.query);\n } else if (a.name && b.name) {\n return a.name === b.name && a.hash === b.hash && isObjectEqual(a.query, b.query) && isObjectEqual(a.params, b.params);\n } else {\n return false;\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) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal);\n }\n return String(aVal) === String(bVal);\n });\n}\nfunction isIncludedRoute(current, target) {\n return current.path.replace(trailingSlashRE, '/').indexOf(target.path.replace(trailingSlashRE, '/')) === 0 && (!target.hash || current.hash === target.hash) && queryIncludes(current.query, target.query);\n}\nfunction queryIncludes(current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false;\n }\n }\n return true;\n}\n\n/* */\n\nfunction resolvePath(relative, base, append) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative;\n }\n if (firstChar === '?' || firstChar === '#') {\n return base + relative;\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 return stack.join('/');\n}\nfunction parsePath(path) {\n var hash = '';\n var query = '';\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n return {\n path: path,\n query: query,\n hash: hash\n };\n}\nfunction cleanPath(path) {\n return path.replace(/\\/\\//g, '/');\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+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'].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 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 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 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 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 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 return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === 'string') {\n path += token;\n continue;\n }\n var value = data[token.name];\n var segment;\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n continue;\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined');\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 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 for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\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 path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n continue;\n }\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"');\n }\n path += token.prefix + segment;\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 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 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 for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\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 options = options || {};\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 if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n keys.push(token);\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\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 route += capture;\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 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 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 options = options || {};\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */keys);\n }\n if (isarray(path)) {\n return arrayToRegexp( /** @type {!Array} */path, /** @type {!Array} */keys, options);\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);\nfunction fillParams(path, params, routeMsg) {\n params = params || {};\n try {\n var filler = regexpCompileCache[path] || (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') {\n params[0] = params.pathMatch;\n }\n return filler(params, {\n pretty: true\n });\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(raw, current, append, router) {\n var next = typeof raw === 'string' ? {\n path: raw\n } : 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 var parsedPath = parsePath(next.path || '');\n var basePath = current && current.path || '/';\n var path = parsedPath.path ? resolvePath(parsedPath.path, basePath, append || next.append) : basePath;\n var query = resolveQuery(parsedPath.query, next.query, router && router.options.parseQuery);\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\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];\nvar noop = function () {};\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 var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(this.to, current, this.append);\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback = globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback = globalExactActiveClass == null ? 'router-link-exact-active' : globalExactActiveClass;\n var activeClass = this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass = this.exactActiveClass == null ? exactActiveClassFallback : this.exactActiveClass;\n var compareTarget = route.redirectedFrom ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router) : route;\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\n classes[activeClass] = this.exact ? classes[exactActiveClass] : isIncludedRoute(current, compareTarget);\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\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 var on = {\n click: guardEvent\n };\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 var data = {\n class: classes\n };\n var scopedSlot = !this.$scopedSlots.$hasNormal && this.$scopedSlots.default && this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\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(false, \"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 return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot);\n }\n }\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = {\n href: href,\n 'aria-current': ariaCurrentValue\n };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> 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 var aAttrs = a.data.attrs = extend({}, a.data.attrs);\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n return h(this.tag, data, this.$slots.default);\n }\n};\nfunction guardEvent(e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\n return;\n }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) {\n return;\n }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) {\n return;\n }\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)) {\n return;\n }\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}\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}\nvar _Vue;\nfunction install(Vue) {\n if (install.installed && _Vue === Vue) {\n return;\n }\n install.installed = true;\n _Vue = Vue;\n var isDef = function (v) {\n 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 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 Object.defineProperty(Vue.prototype, '$router', {\n get: function get() {\n return this._routerRoot._router;\n }\n });\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get() {\n return this._routerRoot._route;\n }\n });\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\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(routes, oldPathList, oldPathMap, oldNameMap) {\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 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 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) {\n return path && path.charAt(0) !== '*' && path.charAt(0) !== '/';\n });\n if (found.length > 0) {\n var pathNames = found.map(function (path) {\n return \"- \" + path;\n }).join('\\n');\n warn(false, \"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames);\n }\n }\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n };\n}\nfunction addRouteRecord(pathList, pathMap, nameMap, route, parent, matchAs) {\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(typeof route.component !== 'string', \"route config \\\"component\\\" for path: \" + String(path || name) + \" cannot be a \" + \"string id. Use an actual component instead.\");\n }\n var pathToRegexpOptions = route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || {\n default: route.component\n },\n instances: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props: route.props == null ? {} : route.components ? route.props : {\n default: route.props\n }\n };\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (route.name && !route.redirect && route.children.some(function (child) {\n return /^\\/?$/.test(child.path);\n })) {\n warn(false, \"Named Route '\" + route.name + \"' has a default child route. \" + \"When navigating to this named route (:to=\\\"{name: '\" + route.name + \"'\\\"), \" + \"the default child route will not be rendered. Remove the name from \" + \"this route and use the name of the default child route for named \" + \"links instead.\");\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs ? cleanPath(matchAs + \"/\" + child.path) : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\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(false, \"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\");\n // skip in dev to make it work\n continue;\n }\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(pathList, pathMap, nameMap, aliasRoute, parent, record.path || '/' // matchAs\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(false, \"Duplicate named routes definition: \" + \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + record.path + \"\\\" }\");\n }\n }\n}\nfunction compileRouteRegex(path, pathToRegexpOptions) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(!keys[key.name], \"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\");\n keys[key.name] = true;\n });\n }\n return regex;\n}\nfunction normalizePath(path, parent, strict) {\n if (!strict) {\n path = path.replace(/\\/$/, '');\n }\n if (path[0] === '/') {\n return path;\n }\n if (parent == null) {\n return path;\n }\n return cleanPath(parent.path + \"/\" + path);\n}\n\n/* */\n\nfunction createMatcher(routes, router) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n function addRoutes(routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n function match(raw, currentRoute, redirectedFrom) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\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) {\n return _createRoute(null, location);\n }\n var paramNames = record.regex.keys.filter(function (key) {\n return !key.optional;\n }).map(function (key) {\n return key.name;\n });\n if (typeof location.params !== 'object') {\n location.params = {};\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 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 function redirect(record, location) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function' ? originalRedirect(createRoute(record, location, null, router)) : originalRedirect;\n if (typeof redirect === 'string') {\n redirect = {\n path: redirect\n };\n }\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, \"invalid redirect option: \" + JSON.stringify(redirect));\n }\n return _createRoute(null, location);\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 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 function alias(record, location, matchAs) {\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 function _createRoute(record, location, redirectedFrom) {\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 return {\n match: match,\n addRoutes: addRoutes\n };\n}\nfunction matchRoute(regex, path, params) {\n var m = path.match(regex);\n if (!m) {\n return false;\n } else if (!params) {\n return true;\n }\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = val;\n }\n }\n return true;\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 = inBrowser && window.performance && window.performance.now ? window.performance : Date;\nfunction genStateKey() {\n return Time.now().toFixed(3);\n}\nvar _key = genStateKey();\nfunction getStateKey() {\n return _key;\n}\nfunction setStateKey(key) {\n return _key = key;\n}\n\n/* */\n\nvar positionStore = Object.create(null);\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', function (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n });\n}\nfunction handleScroll(router, to, from, isPop) {\n if (!router.app) {\n return;\n }\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return;\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(router, to, from, isPop ? position : null);\n if (!shouldScroll) {\n return;\n }\n if (typeof shouldScroll.then === 'function') {\n shouldScroll.then(function (shouldScroll) {\n scrollToPosition(shouldScroll, position);\n }).catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\nfunction saveScrollPosition() {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\nfunction getScrollPosition() {\n var key = getStateKey();\n if (key) {\n return positionStore[key];\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}\nfunction isValidPosition(obj) {\n return isNumber(obj.x) || isNumber(obj.y);\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}\nfunction normalizeOffset(obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n };\n}\nfunction isNumber(v) {\n return typeof v === 'number';\n}\nvar hashStartsWithNumberRE = /^#\\d/;\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 if (el) {\n var offset = shouldScroll.offset && typeof shouldScroll.offset === 'object' ? shouldScroll.offset : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n if (position) {\n window.scrollTo(position.x, position.y);\n }\n}\n\n/* */\n\nvar supportsPushState = inBrowser && function () {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) {\n return false;\n }\n return window.history && typeof window.history.pushState === 'function';\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({\n key: setStateKey(genStateKey())\n }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\nfunction replaceState(url) {\n pushState(url, true);\n}\n\n/* */\n\nfunction runQueue(queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents(matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n 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 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' ? resolvedDef : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\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) ? reason : new Error(msg);\n next(error);\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 if (!hasAsync) {\n next();\n }\n };\n}\nfunction flatMapComponents(matched, fn) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return fn(m.components[key], m.instances[key], m, key);\n });\n }));\n}\nfunction flatten(arr) {\n return Array.prototype.concat.apply([], arr);\n}\nvar hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\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 = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n if (called) {\n return;\n }\n called = true;\n return fn.apply(this, args);\n };\n}\nvar NavigationDuplicated = /*@__PURE__*/function (Error) {\n function NavigationDuplicated(normalizedLocation) {\n Error.call(this);\n this.name = this._name = 'NavigationDuplicated';\n // passing the message to super() doesn't seem to work in the transpiled version\n this.message = \"Navigating to current location (\\\"\" + normalizedLocation.fullPath + \"\\\") is not allowed\";\n // add a stack property so services like Sentry can correctly display it\n Object.defineProperty(this, 'stack', {\n value: new Error().stack,\n writable: true,\n configurable: true\n });\n // we could also have used\n // Error.captureStackTrace(this, this.constructor)\n // but it only exists on node and chrome\n }\n if (Error) NavigationDuplicated.__proto__ = Error;\n NavigationDuplicated.prototype = Object.create(Error && Error.prototype);\n NavigationDuplicated.prototype.constructor = NavigationDuplicated;\n return NavigationDuplicated;\n}(Error);\n\n// support IE9\nNavigationDuplicated._name = 'NavigationDuplicated';\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};\nHistory.prototype.listen = function listen(cb) {\n this.cb = cb;\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};\nHistory.prototype.onError = function onError(errorCb) {\n this.errorCbs.push(errorCb);\n};\nHistory.prototype.transitionTo = function transitionTo(location, onComplete, onAbort) {\n var this$1 = this;\n var route = this.router.match(location, this.current);\n this.confirmTransition(route, function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n }, function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n });\n};\nHistory.prototype.confirmTransition = function confirmTransition(route, onComplete, onAbort) {\n var this$1 = this;\n var current = this.current;\n var abort = function (err) {\n // after merging https://github.com/vuejs/vue-router/pull/2771 we\n // When the user navigates through history through back/forward buttons\n // we do not want to throw the error. We only throw it if directly calling\n // push/replace. That's why it's not included in isError\n if (!isExtendedError(NavigationDuplicated, 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 if (isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n route.matched.length === current.matched.length) {\n this.ensureURL();\n return abort(new NavigationDuplicated(route));\n }\n var ref = resolveQueue(this.current.matched, route.matched);\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n 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) {\n return m.beforeEnter;\n }),\n // async components\n resolveAsyncComponents(activated));\n this.pending = route;\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort();\n }\n try {\n hook(route, current, function (to) {\n if (to === false || isError(to)) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(to);\n } else if (typeof to === 'string' || typeof to === 'object' && (typeof to.path === 'string' || typeof to.name === 'string')) {\n // next('/') or next({ path: '/' }) -> redirect\n abort();\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n runQueue(queue, iterator, function () {\n var postEnterCbs = [];\n var isValid = function () {\n return this$1.current === route;\n };\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort();\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n postEnterCbs.forEach(function (cb) {\n cb();\n });\n });\n }\n });\n });\n};\nHistory.prototype.updateRoute = function updateRoute(route) {\n var prev = this.current;\n this.current = route;\n this.cb && this.cb(route);\n this.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n};\nfunction normalizeBase(base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> 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}\nfunction resolveQueue(current, next) {\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}\nfunction extractGuards(records, name, bind, reverse) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard) ? guard.map(function (guard) {\n return bind(guard, instance, match, key);\n }) : bind(guard, instance, match, key);\n }\n });\n return flatten(reverse ? guards.reverse() : guards);\n}\nfunction extractGuard(def, key) {\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}\nfunction extractLeaveGuards(deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true);\n}\nfunction extractUpdateHooks(updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard);\n}\nfunction bindGuard(guard, instance) {\n if (instance) {\n return function boundRouteGuard() {\n return guard.apply(instance, arguments);\n };\n }\n}\nfunction extractEnterGuards(activated, cbs, isValid) {\n return extractGuards(activated, 'beforeRouteEnter', function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key, cbs, isValid);\n });\n}\nfunction bindEnterGuard(guard, match, key, cbs, isValid) {\n return function routeEnterGuard(to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n cbs.push(function () {\n // #750\n // if a router-view is wrapped with an out-in transition,\n // the instance may not have been registered at this time.\n // we will need to poll for registration until current route\n // is no longer valid.\n poll(cb, match.instances, key, isValid);\n });\n }\n next(cb);\n });\n };\n}\nfunction poll(cb,\n// somehow flow cannot infer this is a function\ninstances, key, isValid) {\n if (instances[key] && !instances[key]._isBeingDestroyed // do not reuse being destroyed instance\n ) {\n cb(instances[key]);\n } else if (isValid()) {\n setTimeout(function () {\n poll(cb, instances, key, isValid);\n }, 16);\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/function (History) {\n function HTML5History(router, base) {\n var this$1 = this;\n History.call(this, router, base);\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n if (supportsScroll) {\n setupScroll();\n }\n var initLocation = getLocation(this.base);\n window.addEventListener('popstate', function (e) {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === initLocation) {\n return;\n }\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n });\n }\n if (History) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create(History && History.prototype);\n HTML5History.prototype.constructor = HTML5History;\n HTML5History.prototype.go = function go(n) {\n window.history.go(n);\n };\n HTML5History.prototype.push = function push(location, onComplete, onAbort) {\n var this$1 = this;\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 HTML5History.prototype.replace = function replace(location, onComplete, onAbort) {\n var this$1 = this;\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 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 HTML5History.prototype.getCurrentLocation = function getCurrentLocation() {\n return getLocation(this.base);\n };\n return HTML5History;\n}(History);\nfunction getLocation(base) {\n var path = decodeURI(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 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 var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n if (supportsScroll) {\n setupScroll();\n }\n window.addEventListener(supportsPushState ? 'popstate' : 'hashchange', function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return;\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n });\n };\n HashHistory.prototype.push = function push(location, onComplete, onAbort) {\n var this$1 = this;\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n HashHistory.prototype.replace = function replace(location, onComplete, onAbort) {\n var this$1 = this;\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n HashHistory.prototype.go = function go(n) {\n window.history.go(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 HashHistory.prototype.getCurrentLocation = function getCurrentLocation() {\n return getHash();\n };\n return HashHistory;\n}(History);\nfunction checkFallback(base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true;\n }\n}\nfunction ensureSlash() {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true;\n }\n replaceHash('/' + path);\n return false;\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) {\n return '';\n }\n href = href.slice(index + 1);\n // decode the hash but not the search or hash\n // as search(query) is already decoded\n // https://github.com/vuejs/vue-router/issues/2708\n var searchIndex = href.indexOf('?');\n if (searchIndex < 0) {\n var hashIndex = href.indexOf('#');\n if (hashIndex > -1) {\n href = decodeURI(href.slice(0, hashIndex)) + href.slice(hashIndex);\n } else {\n href = decodeURI(href);\n }\n } else {\n href = decodeURI(href.slice(0, searchIndex)) + href.slice(searchIndex);\n }\n return href;\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}\nfunction pushHash(path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\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 if (History) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create(History && History.prototype);\n AbstractHistory.prototype.constructor = AbstractHistory;\n AbstractHistory.prototype.push = function push(location, onComplete, onAbort) {\n var this$1 = this;\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n }, onAbort);\n };\n AbstractHistory.prototype.replace = function replace(location, onComplete, onAbort) {\n var this$1 = this;\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n }, onAbort);\n };\n AbstractHistory.prototype.go = function go(n) {\n var this$1 = this;\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return;\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(route, function () {\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n }, function (err) {\n if (isExtendedError(NavigationDuplicated, err)) {\n this$1.index = targetIndex;\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 AbstractHistory.prototype.ensureURL = function ensureURL() {\n // noop\n };\n return AbstractHistory;\n}(History);\n\n/* */\n\nvar VueRouter = function VueRouter(options) {\n if (options === void 0) options = {};\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 var mode = options.mode || 'hash';\n this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n 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};\nvar prototypeAccessors = {\n currentRoute: {\n configurable: true\n }\n};\nVueRouter.prototype.match = function match(raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom);\n};\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current;\n};\nVueRouter.prototype.init = function init(app /* Vue component instance */) {\n var this$1 = this;\n process.env.NODE_ENV !== 'production' && assert(install.installed, \"not installed. Make sure to call `Vue.use(VueRouter)` \" + \"before creating root instance.\");\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) {\n this$1.apps.splice(index, 1);\n }\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) {\n this$1.app = this$1.apps[0] || null;\n }\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 this.app = app;\n var history = this.history;\n if (history instanceof HTML5History) {\n history.transitionTo(history.getCurrentLocation());\n } else if (history instanceof HashHistory) {\n var setupHashListener = function () {\n history.setupListeners();\n };\n history.transitionTo(history.getCurrentLocation(), setupHashListener, setupHashListener);\n }\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\nVueRouter.prototype.beforeEach = function beforeEach(fn) {\n return registerHook(this.beforeHooks, fn);\n};\nVueRouter.prototype.beforeResolve = function beforeResolve(fn) {\n return registerHook(this.resolveHooks, fn);\n};\nVueRouter.prototype.afterEach = function afterEach(fn) {\n return registerHook(this.afterHooks, fn);\n};\nVueRouter.prototype.onReady = function onReady(cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\nVueRouter.prototype.onError = function onError(errorCb) {\n this.history.onError(errorCb);\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};\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};\nVueRouter.prototype.go = function go(n) {\n this.history.go(n);\n};\nVueRouter.prototype.back = function back() {\n this.go(-1);\n};\nVueRouter.prototype.forward = function forward() {\n this.go(1);\n};\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents(to) {\n var route = to ? to.matched ? to : this.resolve(to).route : this.currentRoute;\n if (!route) {\n return [];\n }\n return [].concat.apply([], route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key];\n });\n }));\n};\nVueRouter.prototype.resolve = function resolve(to, current, append) {\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};\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};\nObject.defineProperties(VueRouter.prototype, prototypeAccessors);\nfunction registerHook(list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) {\n 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}\nVueRouter.install = install;\nVueRouter.version = '3.2.0';\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\nexport default VueRouter;","map":{"version":3,"names":["assert","condition","message","Error","warn","process","env","NODE_ENV","console","isError","err","Object","prototype","toString","call","indexOf","isExtendedError","constructor","name","_name","extend","a","b","key","View","functional","props","type","String","default","render","_","ref","children","parent","data","routerView","h","$createElement","route","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","$vnode","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","component","configProps","fillPropsinData","matched","components","registerRouteInstance","vm","val","current","instances","hook","prepatch","vnode","componentInstance","init","propsToPass","resolveProps","attrs","config","params","undefined","path","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","commaRE","encode","str","encodeURIComponent","replace","decode","decodeURIComponent","resolveQuery","query","extraQuery","_parseQuery","parse","parseQuery","parsedQuery","e","res","trim","split","forEach","param","parts","shift","length","join","Array","isArray","push","stringifyQuery","obj","keys","map","result","val2","filter","x","trailingSlashRE","createRoute","record","location","redirectedFrom","router","options","clone","meta","hash","fullPath","getFullPath","formatMatch","freeze","value","START","unshift","_stringifyQuery","stringify","isSameRoute","isObjectEqual","aKeys","bKeys","every","aVal","bVal","isIncludedRoute","target","queryIncludes","resolvePath","relative","base","append","firstChar","charAt","stack","pop","segments","i","segment","parsePath","hashIndex","slice","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","toTypes","eventTypes","noop","Link","to","required","tag","exact","Boolean","activeClass","exactActiveClass","ariaCurrentValue","event","this$1","$router","resolve","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","_Vue","install","Vue","installed","isDef","v","registerInstance","callVal","$options","_parentVnode","mixin","beforeCreate","_router","util","defineReactive","history","destroyed","defineProperty","get","_route","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","inBrowser","window","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","nameMap","addRouteRecord","l","splice","found","pathNames","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","redirect","beforeEnter","some","childMatchAs","alias","aliases","aliasRoute","createMatcher","addRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","hasOwnProperty","targetRecord","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","saveScrollPosition","handleScroll","from","isPop","app","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","then","scrollToPosition","catch","pageXOffset","y","pageYOffset","getElementPosition","el","docEl","document","documentElement","docRect","getBoundingClientRect","elRect","left","top","isValidPosition","isNumber","normalizePosition","normalizeOffset","hashStartsWithNumberRE","isObject","selector","getElementById","querySelector","scrollTo","supportsPushState","ua","navigator","userAgent","pushState","url","runQueue","queue","fn","cb","step","resolveAsyncComponents","hasAsync","pending","error","flatMapComponents","def","cid","once","resolvedDef","isESModule","resolved","reject","reason","msg","comp","flatten","concat","apply","hasSymbol","Symbol","toStringTag","__esModule","called","args","arguments","NavigationDuplicated","normalizedLocation","writable","configurable","__proto__","History","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","abort","resolveQueue","updated","deactivated","activated","extractLeaveGuards","beforeHooks","extractUpdateHooks","iterator","postEnterCbs","isValid","enterGuards","extractEnterGuards","resolveHooks","prev","afterHooks","baseEl","max","Math","extractGuards","records","bind","reverse","guards","instance","guard","extractGuard","bindGuard","boundRouteGuard","cbs","bindEnterGuard","routeEnterGuard","poll","_isBeingDestroyed","setTimeout","HTML5History","expectScroll","supportsScroll","initLocation","getLocation","go","n","fromRoute","getCurrentLocation","decodeURI","pathname","toLowerCase","search","HashHistory","fallback","checkFallback","ensureSlash","setupListeners","getHash","replaceHash","pushHash","searchIndex","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","mode","prototypeAccessors","$once","setupHashListener","beforeEach","registerHook","beforeResolve","afterEach","Promise","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","list","version","use"],"sources":["D:/20240902/project1-client/main/client/node_modules/vue-router/dist/vue-router.esm.js"],"sourcesContent":["/*!\n * vue-router v3.2.0\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 isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isExtendedError (constructor, err) {\n return (\n err instanceof constructor ||\n // _name is to support IE9 too\n (err && (err.name === constructor.name || err._name === constructor._name))\n )\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\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\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cachce\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\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nvar decode = decodeURIComponent;\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n parsedQuery[key] = extraQuery[key];\n }\n return parsedQuery\n}\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0\n ? decode(parts.join('='))\n : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj ? Object.keys(obj).map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n }).filter(function (x) { return x.length > 0; }).join('&') : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\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);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\n/* */\n\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 <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> 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 <a> 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\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 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 var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = val;\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// 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', function (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n });\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.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 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 window.scrollTo(position.x, position.y);\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/* */\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\nvar NavigationDuplicated = /*@__PURE__*/(function (Error) {\n function NavigationDuplicated (normalizedLocation) {\n Error.call(this);\n this.name = this._name = 'NavigationDuplicated';\n // passing the message to super() doesn't seem to work in the transpiled version\n this.message = \"Navigating to current location (\\\"\" + (normalizedLocation.fullPath) + \"\\\") is not allowed\";\n // add a stack property so services like Sentry can correctly display it\n Object.defineProperty(this, 'stack', {\n value: new Error().stack,\n writable: true,\n configurable: true\n });\n // we could also have used\n // Error.captureStackTrace(this, this.constructor)\n // but it only exists on node and chrome\n }\n\n if ( Error ) NavigationDuplicated.__proto__ = Error;\n NavigationDuplicated.prototype = Object.create( Error && Error.prototype );\n NavigationDuplicated.prototype.constructor = NavigationDuplicated;\n\n return NavigationDuplicated;\n}(Error));\n\n// support IE9\nNavigationDuplicated._name = 'NavigationDuplicated';\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1 = this;\n\n var route = this.router.match(location, this.current);\n this.confirmTransition(\n route,\n function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\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 var abort = function (err) {\n // after merging https://github.com/vuejs/vue-router/pull/2771 we\n // When the user navigates through history through back/forward buttons\n // we do not want to throw the error. We only throw it if directly calling\n // push/replace. That's why it's not included in isError\n if (!isExtendedError(NavigationDuplicated, 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 if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n route.matched.length === current.matched.length\n ) {\n this.ensureURL();\n return abort(new NavigationDuplicated(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 this.pending = route;\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort()\n }\n try {\n hook(route, current, function (to) {\n if (to === false || isError(to)) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort();\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n var postEnterCbs = [];\n var isValid = function () { return this$1.current === route; };\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort()\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n postEnterCbs.forEach(function (cb) {\n cb();\n });\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n var prev = this.current;\n this.current = route;\n this.cb && this.cb(route);\n this.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated,\n cbs,\n isValid\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key, cbs, isValid)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key,\n cbs,\n isValid\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n cbs.push(function () {\n // #750\n // if a router-view is wrapped with an out-in transition,\n // the instance may not have been registered at this time.\n // we will need to poll for registration until current route\n // is no longer valid.\n poll(cb, match.instances, key, isValid);\n });\n }\n next(cb);\n })\n }\n}\n\nfunction poll (\n cb, // somehow flow cannot infer this is a function\n instances,\n key,\n isValid\n) {\n if (\n instances[key] &&\n !instances[key]._isBeingDestroyed // do not reuse being destroyed instance\n ) {\n cb(instances[key]);\n } else if (isValid()) {\n setTimeout(function () {\n poll(cb, instances, key, isValid);\n }, 16);\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n var this$1 = this;\n\n History.call(this, router, base);\n\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n var initLocation = getLocation(this.base);\n window.addEventListener('popstate', function (e) {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === initLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n });\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.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 = decodeURI(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 var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n window.addEventListener(\n supportsPushState ? 'popstate' : 'hashchange',\n function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n }\n );\n };\n\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 // decode the hash but not the search or hash\n // as search(query) is already decoded\n // https://github.com/vuejs/vue-router/issues/2708\n var searchIndex = href.indexOf('?');\n if (searchIndex < 0) {\n var hashIndex = href.indexOf('#');\n if (hashIndex > -1) {\n href = decodeURI(href.slice(0, hashIndex)) + href.slice(hashIndex);\n } else { href = decodeURI(href); }\n } else {\n href = decodeURI(href.slice(0, searchIndex)) + href.slice(searchIndex);\n }\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 this$1.index = targetIndex;\n this$1.updateRoute(route);\n },\n function (err) {\n if (isExtendedError(NavigationDuplicated, err)) {\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\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (\n raw,\n current,\n redirectedFrom\n) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1 = this;\n\n process.env.NODE_ENV !== 'production' && assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // 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\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) {\n history.transitionTo(history.getCurrentLocation());\n } else if (history instanceof HashHistory) {\n var setupHashListener = function () {\n history.setupListeners();\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupHashListener,\n setupHashListener\n );\n }\n\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n 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([], route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n }))\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(\n to,\n current,\n append,\n this\n );\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.2.0';\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,MAAMA,CAAEC,SAAS,EAAEC,OAAO,EAAE;EACnC,IAAI,CAACD,SAAS,EAAE;IACd,MAAM,IAAIE,KAAK,CAAE,eAAe,GAAGD,OAAQ,CAAC;EAC9C;AACF;AAEA,SAASE,IAAIA,CAAEH,SAAS,EAAEC,OAAO,EAAE;EACjC,IAAIG,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAI,CAACN,SAAS,EAAE;IACvD,OAAOO,OAAO,KAAK,WAAW,IAAIA,OAAO,CAACJ,IAAI,CAAE,eAAe,GAAGF,OAAQ,CAAC;EAC7E;AACF;AAEA,SAASO,OAAOA,CAAEC,GAAG,EAAE;EACrB,OAAOC,MAAM,CAACC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACJ,GAAG,CAAC,CAACK,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAClE;AAEA,SAASC,eAAeA,CAAEC,WAAW,EAAEP,GAAG,EAAE;EAC1C,OACEA,GAAG,YAAYO,WAAW;EAC1B;EACCP,GAAG,KAAKA,GAAG,CAACQ,IAAI,KAAKD,WAAW,CAACC,IAAI,IAAIR,GAAG,CAACS,KAAK,KAAKF,WAAW,CAACE,KAAK,CAAE;AAE/E;AAEA,SAASC,MAAMA,CAAEC,CAAC,EAAEC,CAAC,EAAE;EACrB,KAAK,IAAIC,GAAG,IAAID,CAAC,EAAE;IACjBD,CAAC,CAACE,GAAG,CAAC,GAAGD,CAAC,CAACC,GAAG,CAAC;EACjB;EACA,OAAOF,CAAC;AACV;AAEA,IAAIG,IAAI,GAAG;EACTN,IAAI,EAAE,YAAY;EAClBO,UAAU,EAAE,IAAI;EAChBC,KAAK,EAAE;IACLR,IAAI,EAAE;MACJS,IAAI,EAAEC,MAAM;MACZC,OAAO,EAAE;IACX;EACF,CAAC;EACDC,MAAM,EAAE,SAASA,MAAMA,CAAEC,CAAC,EAAEC,GAAG,EAAE;IAC/B,IAAIN,KAAK,GAAGM,GAAG,CAACN,KAAK;IACrB,IAAIO,QAAQ,GAAGD,GAAG,CAACC,QAAQ;IAC3B,IAAIC,MAAM,GAAGF,GAAG,CAACE,MAAM;IACvB,IAAIC,IAAI,GAAGH,GAAG,CAACG,IAAI;;IAEnB;IACAA,IAAI,CAACC,UAAU,GAAG,IAAI;;IAEtB;IACA;IACA,IAAIC,CAAC,GAAGH,MAAM,CAACI,cAAc;IAC7B,IAAIpB,IAAI,GAAGQ,KAAK,CAACR,IAAI;IACrB,IAAIqB,KAAK,GAAGL,MAAM,CAACM,MAAM;IACzB,IAAIC,KAAK,GAAGP,MAAM,CAACQ,gBAAgB,KAAKR,MAAM,CAACQ,gBAAgB,GAAG,CAAC,CAAC,CAAC;;IAErE;IACA;IACA,IAAIC,KAAK,GAAG,CAAC;IACb,IAAIC,QAAQ,GAAG,KAAK;IACpB,OAAOV,MAAM,IAAIA,MAAM,CAACW,WAAW,KAAKX,MAAM,EAAE;MAC9C,IAAIY,SAAS,GAAGZ,MAAM,CAACa,MAAM,GAAGb,MAAM,CAACa,MAAM,CAACZ,IAAI,GAAG,CAAC,CAAC;MACvD,IAAIW,SAAS,CAACV,UAAU,EAAE;QACxBO,KAAK,EAAE;MACT;MACA,IAAIG,SAAS,CAACE,SAAS,IAAId,MAAM,CAACe,eAAe,IAAIf,MAAM,CAACgB,SAAS,EAAE;QACrEN,QAAQ,GAAG,IAAI;MACjB;MACAV,MAAM,GAAGA,MAAM,CAACiB,OAAO;IACzB;IACAhB,IAAI,CAACiB,eAAe,GAAGT,KAAK;;IAE5B;IACA,IAAIC,QAAQ,EAAE;MACZ,IAAIS,UAAU,GAAGZ,KAAK,CAACvB,IAAI,CAAC;MAC5B,IAAIoC,eAAe,GAAGD,UAAU,IAAIA,UAAU,CAACE,SAAS;MACxD,IAAID,eAAe,EAAE;QACnB;QACA;QACA,IAAID,UAAU,CAACG,WAAW,EAAE;UAC1BC,eAAe,CAACH,eAAe,EAAEnB,IAAI,EAAEkB,UAAU,CAACd,KAAK,EAAEc,UAAU,CAACG,WAAW,CAAC;QAClF;QACA,OAAOnB,CAAC,CAACiB,eAAe,EAAEnB,IAAI,EAAEF,QAAQ,CAAC;MAC3C,CAAC,MAAM;QACL;QACA,OAAOI,CAAC,CAAC,CAAC;MACZ;IACF;IAEA,IAAIqB,OAAO,GAAGnB,KAAK,CAACmB,OAAO,CAACf,KAAK,CAAC;IAClC,IAAIY,SAAS,GAAGG,OAAO,IAAIA,OAAO,CAACC,UAAU,CAACzC,IAAI,CAAC;;IAEnD;IACA,IAAI,CAACwC,OAAO,IAAI,CAACH,SAAS,EAAE;MAC1Bd,KAAK,CAACvB,IAAI,CAAC,GAAG,IAAI;MAClB,OAAOmB,CAAC,CAAC,CAAC;IACZ;;IAEA;IACAI,KAAK,CAACvB,IAAI,CAAC,GAAG;MAAEqC,SAAS,EAAEA;IAAU,CAAC;;IAEtC;IACA;IACApB,IAAI,CAACyB,qBAAqB,GAAG,UAAUC,EAAE,EAAEC,GAAG,EAAE;MAC9C;MACA,IAAIC,OAAO,GAAGL,OAAO,CAACM,SAAS,CAAC9C,IAAI,CAAC;MACrC,IACG4C,GAAG,IAAIC,OAAO,KAAKF,EAAE,IACrB,CAACC,GAAG,IAAIC,OAAO,KAAKF,EAAG,EACxB;QACAH,OAAO,CAACM,SAAS,CAAC9C,IAAI,CAAC,GAAG4C,GAAG;MAC/B;IACF;;IAEA;IACA;IAAA;IACC,CAAC3B,IAAI,CAAC8B,IAAI,KAAK9B,IAAI,CAAC8B,IAAI,GAAG,CAAC,CAAC,CAAC,EAAEC,QAAQ,GAAG,UAAUnC,CAAC,EAAEoC,KAAK,EAAE;MAC9DT,OAAO,CAACM,SAAS,CAAC9C,IAAI,CAAC,GAAGiD,KAAK,CAACC,iBAAiB;IACnD,CAAC;;IAED;IACA;IACAjC,IAAI,CAAC8B,IAAI,CAACI,IAAI,GAAG,UAAUF,KAAK,EAAE;MAChC,IAAIA,KAAK,CAAChC,IAAI,CAACa,SAAS,IACtBmB,KAAK,CAACC,iBAAiB,IACvBD,KAAK,CAACC,iBAAiB,KAAKV,OAAO,CAACM,SAAS,CAAC9C,IAAI,CAAC,EACnD;QACAwC,OAAO,CAACM,SAAS,CAAC9C,IAAI,CAAC,GAAGiD,KAAK,CAACC,iBAAiB;MACnD;IACF,CAAC;IAED,IAAIZ,WAAW,GAAGE,OAAO,CAAChC,KAAK,IAAIgC,OAAO,CAAChC,KAAK,CAACR,IAAI,CAAC;IACtD;IACA,IAAIsC,WAAW,EAAE;MACfpC,MAAM,CAACqB,KAAK,CAACvB,IAAI,CAAC,EAAE;QAClBqB,KAAK,EAAEA,KAAK;QACZiB,WAAW,EAAEA;MACf,CAAC,CAAC;MACFC,eAAe,CAACF,SAAS,EAAEpB,IAAI,EAAEI,KAAK,EAAEiB,WAAW,CAAC;IACtD;IAEA,OAAOnB,CAAC,CAACkB,SAAS,EAAEpB,IAAI,EAAEF,QAAQ,CAAC;EACrC;AACF,CAAC;AAED,SAASwB,eAAeA,CAAEF,SAAS,EAAEpB,IAAI,EAAEI,KAAK,EAAEiB,WAAW,EAAE;EAC7D;EACA,IAAIc,WAAW,GAAGnC,IAAI,CAACT,KAAK,GAAG6C,YAAY,CAAChC,KAAK,EAAEiB,WAAW,CAAC;EAC/D,IAAIc,WAAW,EAAE;IACf;IACAA,WAAW,GAAGnC,IAAI,CAACT,KAAK,GAAGN,MAAM,CAAC,CAAC,CAAC,EAAEkD,WAAW,CAAC;IAClD;IACA,IAAIE,KAAK,GAAGrC,IAAI,CAACqC,KAAK,GAAGrC,IAAI,CAACqC,KAAK,IAAI,CAAC,CAAC;IACzC,KAAK,IAAIjD,GAAG,IAAI+C,WAAW,EAAE;MAC3B,IAAI,CAACf,SAAS,CAAC7B,KAAK,IAAI,EAAEH,GAAG,IAAIgC,SAAS,CAAC7B,KAAK,CAAC,EAAE;QACjD8C,KAAK,CAACjD,GAAG,CAAC,GAAG+C,WAAW,CAAC/C,GAAG,CAAC;QAC7B,OAAO+C,WAAW,CAAC/C,GAAG,CAAC;MACzB;IACF;EACF;AACF;AAEA,SAASgD,YAAYA,CAAEhC,KAAK,EAAEkC,MAAM,EAAE;EACpC,QAAQ,OAAOA,MAAM;IACnB,KAAK,WAAW;MACd;IACF,KAAK,QAAQ;MACX,OAAOA,MAAM;IACf,KAAK,UAAU;MACb,OAAOA,MAAM,CAAClC,KAAK,CAAC;IACtB,KAAK,SAAS;MACZ,OAAOkC,MAAM,GAAGlC,KAAK,CAACmC,MAAM,GAAGC,SAAS;IAC1C;MACE,IAAItE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QACzCH,IAAI,CACF,KAAK,EACL,aAAa,GAAImC,KAAK,CAACqC,IAAK,GAAG,UAAU,GAAI,OAAOH,MAAO,GAAG,IAAI,GAClE,2CACF,CAAC;MACH;EACJ;AACF;;AAEA;;AAEA,IAAII,eAAe,GAAG,UAAU;AAChC,IAAIC,qBAAqB,GAAG,SAAAA,CAAUC,CAAC,EAAE;EAAE,OAAO,GAAG,GAAGA,CAAC,CAACC,UAAU,CAAC,CAAC,CAAC,CAACnE,QAAQ,CAAC,EAAE,CAAC;AAAE,CAAC;AACvF,IAAIoE,OAAO,GAAG,MAAM;;AAEpB;AACA;AACA;AACA,IAAIC,MAAM,GAAG,SAAAA,CAAUC,GAAG,EAAE;EAAE,OAAOC,kBAAkB,CAACD,GAAG,CAAC,CACzDE,OAAO,CAACR,eAAe,EAAEC,qBAAqB,CAAC,CAC/CO,OAAO,CAACJ,OAAO,EAAE,GAAG,CAAC;AAAE,CAAC;AAE3B,IAAIK,MAAM,GAAGC,kBAAkB;AAE/B,SAASC,YAAYA,CACnBC,KAAK,EACLC,UAAU,EACVC,WAAW,EACX;EACA,IAAKD,UAAU,KAAK,KAAK,CAAC,EAAGA,UAAU,GAAG,CAAC,CAAC;EAE5C,IAAIE,KAAK,GAAGD,WAAW,IAAIE,UAAU;EACrC,IAAIC,WAAW;EACf,IAAI;IACFA,WAAW,GAAGF,KAAK,CAACH,KAAK,IAAI,EAAE,CAAC;EAClC,CAAC,CAAC,OAAOM,CAAC,EAAE;IACV1F,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAIH,IAAI,CAAC,KAAK,EAAE2F,CAAC,CAAC7F,OAAO,CAAC;IAC/D4F,WAAW,GAAG,CAAC,CAAC;EAClB;EACA,KAAK,IAAIvE,GAAG,IAAImE,UAAU,EAAE;IAC1BI,WAAW,CAACvE,GAAG,CAAC,GAAGmE,UAAU,CAACnE,GAAG,CAAC;EACpC;EACA,OAAOuE,WAAW;AACpB;AAEA,SAASD,UAAUA,CAAEJ,KAAK,EAAE;EAC1B,IAAIO,GAAG,GAAG,CAAC,CAAC;EAEZP,KAAK,GAAGA,KAAK,CAACQ,IAAI,CAAC,CAAC,CAACZ,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;EAE7C,IAAI,CAACI,KAAK,EAAE;IACV,OAAOO,GAAG;EACZ;EAEAP,KAAK,CAACS,KAAK,CAAC,GAAG,CAAC,CAACC,OAAO,CAAC,UAAUC,KAAK,EAAE;IACxC,IAAIC,KAAK,GAAGD,KAAK,CAACf,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAACa,KAAK,CAAC,GAAG,CAAC;IAChD,IAAI3E,GAAG,GAAG+D,MAAM,CAACe,KAAK,CAACC,KAAK,CAAC,CAAC,CAAC;IAC/B,IAAIxC,GAAG,GAAGuC,KAAK,CAACE,MAAM,GAAG,CAAC,GACtBjB,MAAM,CAACe,KAAK,CAACG,IAAI,CAAC,GAAG,CAAC,CAAC,GACvB,IAAI;IAER,IAAIR,GAAG,CAACzE,GAAG,CAAC,KAAKoD,SAAS,EAAE;MAC1BqB,GAAG,CAACzE,GAAG,CAAC,GAAGuC,GAAG;IAChB,CAAC,MAAM,IAAI2C,KAAK,CAACC,OAAO,CAACV,GAAG,CAACzE,GAAG,CAAC,CAAC,EAAE;MAClCyE,GAAG,CAACzE,GAAG,CAAC,CAACoF,IAAI,CAAC7C,GAAG,CAAC;IACpB,CAAC,MAAM;MACLkC,GAAG,CAACzE,GAAG,CAAC,GAAG,CAACyE,GAAG,CAACzE,GAAG,CAAC,EAAEuC,GAAG,CAAC;IAC5B;EACF,CAAC,CAAC;EAEF,OAAOkC,GAAG;AACZ;AAEA,SAASY,cAAcA,CAAEC,GAAG,EAAE;EAC5B,IAAIb,GAAG,GAAGa,GAAG,GAAGlG,MAAM,CAACmG,IAAI,CAACD,GAAG,CAAC,CAACE,GAAG,CAAC,UAAUxF,GAAG,EAAE;IAClD,IAAIuC,GAAG,GAAG+C,GAAG,CAACtF,GAAG,CAAC;IAElB,IAAIuC,GAAG,KAAKa,SAAS,EAAE;MACrB,OAAO,EAAE;IACX;IAEA,IAAIb,GAAG,KAAK,IAAI,EAAE;MAChB,OAAOoB,MAAM,CAAC3D,GAAG,CAAC;IACpB;IAEA,IAAIkF,KAAK,CAACC,OAAO,CAAC5C,GAAG,CAAC,EAAE;MACtB,IAAIkD,MAAM,GAAG,EAAE;MACflD,GAAG,CAACqC,OAAO,CAAC,UAAUc,IAAI,EAAE;QAC1B,IAAIA,IAAI,KAAKtC,SAAS,EAAE;UACtB;QACF;QACA,IAAIsC,IAAI,KAAK,IAAI,EAAE;UACjBD,MAAM,CAACL,IAAI,CAACzB,MAAM,CAAC3D,GAAG,CAAC,CAAC;QAC1B,CAAC,MAAM;UACLyF,MAAM,CAACL,IAAI,CAACzB,MAAM,CAAC3D,GAAG,CAAC,GAAG,GAAG,GAAG2D,MAAM,CAAC+B,IAAI,CAAC,CAAC;QAC/C;MACF,CAAC,CAAC;MACF,OAAOD,MAAM,CAACR,IAAI,CAAC,GAAG,CAAC;IACzB;IAEA,OAAOtB,MAAM,CAAC3D,GAAG,CAAC,GAAG,GAAG,GAAG2D,MAAM,CAACpB,GAAG,CAAC;EACxC,CAAC,CAAC,CAACoD,MAAM,CAAC,UAAUC,CAAC,EAAE;IAAE,OAAOA,CAAC,CAACZ,MAAM,GAAG,CAAC;EAAE,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;EACjE,OAAOR,GAAG,GAAI,GAAG,GAAGA,GAAG,GAAI,EAAE;AAC/B;;AAEA;;AAEA,IAAIoB,eAAe,GAAG,MAAM;AAE5B,SAASC,WAAWA,CAClBC,MAAM,EACNC,QAAQ,EACRC,cAAc,EACdC,MAAM,EACN;EACA,IAAIb,cAAc,GAAGa,MAAM,IAAIA,MAAM,CAACC,OAAO,CAACd,cAAc;EAE5D,IAAInB,KAAK,GAAG8B,QAAQ,CAAC9B,KAAK,IAAI,CAAC,CAAC;EAChC,IAAI;IACFA,KAAK,GAAGkC,KAAK,CAAClC,KAAK,CAAC;EACtB,CAAC,CAAC,OAAOM,CAAC,EAAE,CAAC;EAEb,IAAIxD,KAAK,GAAG;IACVrB,IAAI,EAAEqG,QAAQ,CAACrG,IAAI,IAAKoG,MAAM,IAAIA,MAAM,CAACpG,IAAK;IAC9C0G,IAAI,EAAGN,MAAM,IAAIA,MAAM,CAACM,IAAI,IAAK,CAAC,CAAC;IACnChD,IAAI,EAAE2C,QAAQ,CAAC3C,IAAI,IAAI,GAAG;IAC1BiD,IAAI,EAAEN,QAAQ,CAACM,IAAI,IAAI,EAAE;IACzBpC,KAAK,EAAEA,KAAK;IACZf,MAAM,EAAE6C,QAAQ,CAAC7C,MAAM,IAAI,CAAC,CAAC;IAC7BoD,QAAQ,EAAEC,WAAW,CAACR,QAAQ,EAAEX,cAAc,CAAC;IAC/ClD,OAAO,EAAE4D,MAAM,GAAGU,WAAW,CAACV,MAAM,CAAC,GAAG;EAC1C,CAAC;EACD,IAAIE,cAAc,EAAE;IAClBjF,KAAK,CAACiF,cAAc,GAAGO,WAAW,CAACP,cAAc,EAAEZ,cAAc,CAAC;EACpE;EACA,OAAOjG,MAAM,CAACsH,MAAM,CAAC1F,KAAK,CAAC;AAC7B;AAEA,SAASoF,KAAKA,CAAEO,KAAK,EAAE;EACrB,IAAIzB,KAAK,CAACC,OAAO,CAACwB,KAAK,CAAC,EAAE;IACxB,OAAOA,KAAK,CAACnB,GAAG,CAACY,KAAK,CAAC;EACzB,CAAC,MAAM,IAAIO,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7C,IAAIlC,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAIzE,GAAG,IAAI2G,KAAK,EAAE;MACrBlC,GAAG,CAACzE,GAAG,CAAC,GAAGoG,KAAK,CAACO,KAAK,CAAC3G,GAAG,CAAC,CAAC;IAC9B;IACA,OAAOyE,GAAG;EACZ,CAAC,MAAM;IACL,OAAOkC,KAAK;EACd;AACF;;AAEA;AACA,IAAIC,KAAK,GAAGd,WAAW,CAAC,IAAI,EAAE;EAC5BzC,IAAI,EAAE;AACR,CAAC,CAAC;AAEF,SAASoD,WAAWA,CAAEV,MAAM,EAAE;EAC5B,IAAItB,GAAG,GAAG,EAAE;EACZ,OAAOsB,MAAM,EAAE;IACbtB,GAAG,CAACoC,OAAO,CAACd,MAAM,CAAC;IACnBA,MAAM,GAAGA,MAAM,CAACpF,MAAM;EACxB;EACA,OAAO8D,GAAG;AACZ;AAEA,SAAS+B,WAAWA,CAClB/F,GAAG,EACHqG,eAAe,EACf;EACA,IAAIzD,IAAI,GAAG5C,GAAG,CAAC4C,IAAI;EACnB,IAAIa,KAAK,GAAGzD,GAAG,CAACyD,KAAK;EAAE,IAAKA,KAAK,KAAK,KAAK,CAAC,EAAGA,KAAK,GAAG,CAAC,CAAC;EACzD,IAAIoC,IAAI,GAAG7F,GAAG,CAAC6F,IAAI;EAAE,IAAKA,IAAI,KAAK,KAAK,CAAC,EAAGA,IAAI,GAAG,EAAE;EAErD,IAAIS,SAAS,GAAGD,eAAe,IAAIzB,cAAc;EACjD,OAAO,CAAChC,IAAI,IAAI,GAAG,IAAI0D,SAAS,CAAC7C,KAAK,CAAC,GAAGoC,IAAI;AAChD;AAEA,SAASU,WAAWA,CAAElH,CAAC,EAAEC,CAAC,EAAE;EAC1B,IAAIA,CAAC,KAAK6G,KAAK,EAAE;IACf,OAAO9G,CAAC,KAAKC,CAAC;EAChB,CAAC,MAAM,IAAI,CAACA,CAAC,EAAE;IACb,OAAO,KAAK;EACd,CAAC,MAAM,IAAID,CAAC,CAACuD,IAAI,IAAItD,CAAC,CAACsD,IAAI,EAAE;IAC3B,OACEvD,CAAC,CAACuD,IAAI,CAACS,OAAO,CAAC+B,eAAe,EAAE,EAAE,CAAC,KAAK9F,CAAC,CAACsD,IAAI,CAACS,OAAO,CAAC+B,eAAe,EAAE,EAAE,CAAC,IAC3E/F,CAAC,CAACwG,IAAI,KAAKvG,CAAC,CAACuG,IAAI,IACjBW,aAAa,CAACnH,CAAC,CAACoE,KAAK,EAAEnE,CAAC,CAACmE,KAAK,CAAC;EAEnC,CAAC,MAAM,IAAIpE,CAAC,CAACH,IAAI,IAAII,CAAC,CAACJ,IAAI,EAAE;IAC3B,OACEG,CAAC,CAACH,IAAI,KAAKI,CAAC,CAACJ,IAAI,IACjBG,CAAC,CAACwG,IAAI,KAAKvG,CAAC,CAACuG,IAAI,IACjBW,aAAa,CAACnH,CAAC,CAACoE,KAAK,EAAEnE,CAAC,CAACmE,KAAK,CAAC,IAC/B+C,aAAa,CAACnH,CAAC,CAACqD,MAAM,EAAEpD,CAAC,CAACoD,MAAM,CAAC;EAErC,CAAC,MAAM;IACL,OAAO,KAAK;EACd;AACF;AAEA,SAAS8D,aAAaA,CAAEnH,CAAC,EAAEC,CAAC,EAAE;EAC5B,IAAKD,CAAC,KAAK,KAAK,CAAC,EAAGA,CAAC,GAAG,CAAC,CAAC;EAC1B,IAAKC,CAAC,KAAK,KAAK,CAAC,EAAGA,CAAC,GAAG,CAAC,CAAC;;EAE1B;EACA,IAAI,CAACD,CAAC,IAAI,CAACC,CAAC,EAAE;IAAE,OAAOD,CAAC,KAAKC,CAAC;EAAC;EAC/B,IAAImH,KAAK,GAAG9H,MAAM,CAACmG,IAAI,CAACzF,CAAC,CAAC;EAC1B,IAAIqH,KAAK,GAAG/H,MAAM,CAACmG,IAAI,CAACxF,CAAC,CAAC;EAC1B,IAAImH,KAAK,CAAClC,MAAM,KAAKmC,KAAK,CAACnC,MAAM,EAAE;IACjC,OAAO,KAAK;EACd;EACA,OAAOkC,KAAK,CAACE,KAAK,CAAC,UAAUpH,GAAG,EAAE;IAChC,IAAIqH,IAAI,GAAGvH,CAAC,CAACE,GAAG,CAAC;IACjB,IAAIsH,IAAI,GAAGvH,CAAC,CAACC,GAAG,CAAC;IACjB;IACA,IAAI,OAAOqH,IAAI,KAAK,QAAQ,IAAI,OAAOC,IAAI,KAAK,QAAQ,EAAE;MACxD,OAAOL,aAAa,CAACI,IAAI,EAAEC,IAAI,CAAC;IAClC;IACA,OAAOjH,MAAM,CAACgH,IAAI,CAAC,KAAKhH,MAAM,CAACiH,IAAI,CAAC;EACtC,CAAC,CAAC;AACJ;AAEA,SAASC,eAAeA,CAAE/E,OAAO,EAAEgF,MAAM,EAAE;EACzC,OACEhF,OAAO,CAACa,IAAI,CAACS,OAAO,CAAC+B,eAAe,EAAE,GAAG,CAAC,CAACrG,OAAO,CAChDgI,MAAM,CAACnE,IAAI,CAACS,OAAO,CAAC+B,eAAe,EAAE,GAAG,CAC1C,CAAC,KAAK,CAAC,KACN,CAAC2B,MAAM,CAAClB,IAAI,IAAI9D,OAAO,CAAC8D,IAAI,KAAKkB,MAAM,CAAClB,IAAI,CAAC,IAC9CmB,aAAa,CAACjF,OAAO,CAAC0B,KAAK,EAAEsD,MAAM,CAACtD,KAAK,CAAC;AAE9C;AAEA,SAASuD,aAAaA,CAAEjF,OAAO,EAAEgF,MAAM,EAAE;EACvC,KAAK,IAAIxH,GAAG,IAAIwH,MAAM,EAAE;IACtB,IAAI,EAAExH,GAAG,IAAIwC,OAAO,CAAC,EAAE;MACrB,OAAO,KAAK;IACd;EACF;EACA,OAAO,IAAI;AACb;;AAEA;;AAEA,SAASkF,WAAWA,CAClBC,QAAQ,EACRC,IAAI,EACJC,MAAM,EACN;EACA,IAAIC,SAAS,GAAGH,QAAQ,CAACI,MAAM,CAAC,CAAC,CAAC;EAClC,IAAID,SAAS,KAAK,GAAG,EAAE;IACrB,OAAOH,QAAQ;EACjB;EAEA,IAAIG,SAAS,KAAK,GAAG,IAAIA,SAAS,KAAK,GAAG,EAAE;IAC1C,OAAOF,IAAI,GAAGD,QAAQ;EACxB;EAEA,IAAIK,KAAK,GAAGJ,IAAI,CAACjD,KAAK,CAAC,GAAG,CAAC;;EAE3B;EACA;EACA;EACA,IAAI,CAACkD,MAAM,IAAI,CAACG,KAAK,CAACA,KAAK,CAAChD,MAAM,GAAG,CAAC,CAAC,EAAE;IACvCgD,KAAK,CAACC,GAAG,CAAC,CAAC;EACb;;EAEA;EACA,IAAIC,QAAQ,GAAGP,QAAQ,CAAC7D,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACa,KAAK,CAAC,GAAG,CAAC;EACrD,KAAK,IAAIwD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,QAAQ,CAAClD,MAAM,EAAEmD,CAAC,EAAE,EAAE;IACxC,IAAIC,OAAO,GAAGF,QAAQ,CAACC,CAAC,CAAC;IACzB,IAAIC,OAAO,KAAK,IAAI,EAAE;MACpBJ,KAAK,CAACC,GAAG,CAAC,CAAC;IACb,CAAC,MAAM,IAAIG,OAAO,KAAK,GAAG,EAAE;MAC1BJ,KAAK,CAAC5C,IAAI,CAACgD,OAAO,CAAC;IACrB;EACF;;EAEA;EACA,IAAIJ,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;IACnBA,KAAK,CAACnB,OAAO,CAAC,EAAE,CAAC;EACnB;EAEA,OAAOmB,KAAK,CAAC/C,IAAI,CAAC,GAAG,CAAC;AACxB;AAEA,SAASoD,SAASA,CAAEhF,IAAI,EAAE;EACxB,IAAIiD,IAAI,GAAG,EAAE;EACb,IAAIpC,KAAK,GAAG,EAAE;EAEd,IAAIoE,SAAS,GAAGjF,IAAI,CAAC7D,OAAO,CAAC,GAAG,CAAC;EACjC,IAAI8I,SAAS,IAAI,CAAC,EAAE;IAClBhC,IAAI,GAAGjD,IAAI,CAACkF,KAAK,CAACD,SAAS,CAAC;IAC5BjF,IAAI,GAAGA,IAAI,CAACkF,KAAK,CAAC,CAAC,EAAED,SAAS,CAAC;EACjC;EAEA,IAAIE,UAAU,GAAGnF,IAAI,CAAC7D,OAAO,CAAC,GAAG,CAAC;EAClC,IAAIgJ,UAAU,IAAI,CAAC,EAAE;IACnBtE,KAAK,GAAGb,IAAI,CAACkF,KAAK,CAACC,UAAU,GAAG,CAAC,CAAC;IAClCnF,IAAI,GAAGA,IAAI,CAACkF,KAAK,CAAC,CAAC,EAAEC,UAAU,CAAC;EAClC;EAEA,OAAO;IACLnF,IAAI,EAAEA,IAAI;IACVa,KAAK,EAAEA,KAAK;IACZoC,IAAI,EAAEA;EACR,CAAC;AACH;AAEA,SAASmC,SAASA,CAAEpF,IAAI,EAAE;EACxB,OAAOA,IAAI,CAACS,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AACnC;AAEA,IAAI4E,OAAO,GAAGxD,KAAK,CAACC,OAAO,IAAI,UAAUwD,GAAG,EAAE;EAC5C,OAAOvJ,MAAM,CAACC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACoJ,GAAG,CAAC,IAAI,gBAAgB;AAChE,CAAC;;AAED;AACA;AACA;AACA,IAAIC,cAAc,GAAGC,YAAY;AACjC,IAAIC,OAAO,GAAGzE,KAAK;AACnB,IAAI0E,SAAS,GAAGC,OAAO;AACvB,IAAIC,kBAAkB,GAAGC,gBAAgB;AACzC,IAAIC,gBAAgB,GAAGC,cAAc;;AAErC;AACA;AACA;AACA;AACA;AACA,IAAIC,WAAW,GAAG,IAAIC,MAAM,CAAC;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,wGAAwG,CACzG,CAACrE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASZ,KAAKA,CAAET,GAAG,EAAEuC,OAAO,EAAE;EAC5B,IAAIoD,MAAM,GAAG,EAAE;EACf,IAAIvJ,GAAG,GAAG,CAAC;EACX,IAAIwJ,KAAK,GAAG,CAAC;EACb,IAAInG,IAAI,GAAG,EAAE;EACb,IAAIoG,gBAAgB,GAAGtD,OAAO,IAAIA,OAAO,CAACuD,SAAS,IAAI,GAAG;EAC1D,IAAIjF,GAAG;EAEP,OAAO,CAACA,GAAG,GAAG4E,WAAW,CAACM,IAAI,CAAC/F,GAAG,CAAC,KAAK,IAAI,EAAE;IAC5C,IAAIgG,CAAC,GAAGnF,GAAG,CAAC,CAAC,CAAC;IACd,IAAIoF,OAAO,GAAGpF,GAAG,CAAC,CAAC,CAAC;IACpB,IAAIqF,MAAM,GAAGrF,GAAG,CAAC+E,KAAK;IACtBnG,IAAI,IAAIO,GAAG,CAAC2E,KAAK,CAACiB,KAAK,EAAEM,MAAM,CAAC;IAChCN,KAAK,GAAGM,MAAM,GAAGF,CAAC,CAAC5E,MAAM;;IAEzB;IACA,IAAI6E,OAAO,EAAE;MACXxG,IAAI,IAAIwG,OAAO,CAAC,CAAC,CAAC;MAClB;IACF;IAEA,IAAIE,IAAI,GAAGnG,GAAG,CAAC4F,KAAK,CAAC;IACrB,IAAIQ,MAAM,GAAGvF,GAAG,CAAC,CAAC,CAAC;IACnB,IAAI9E,IAAI,GAAG8E,GAAG,CAAC,CAAC,CAAC;IACjB,IAAIwF,OAAO,GAAGxF,GAAG,CAAC,CAAC,CAAC;IACpB,IAAIyF,KAAK,GAAGzF,GAAG,CAAC,CAAC,CAAC;IAClB,IAAI0F,QAAQ,GAAG1F,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI2F,QAAQ,GAAG3F,GAAG,CAAC,CAAC,CAAC;;IAErB;IACA,IAAIpB,IAAI,EAAE;MACRkG,MAAM,CAACnE,IAAI,CAAC/B,IAAI,CAAC;MACjBA,IAAI,GAAG,EAAE;IACX;IAEA,IAAIgH,OAAO,GAAGL,MAAM,IAAI,IAAI,IAAID,IAAI,IAAI,IAAI,IAAIA,IAAI,KAAKC,MAAM;IAC/D,IAAIM,MAAM,GAAGH,QAAQ,KAAK,GAAG,IAAIA,QAAQ,KAAK,GAAG;IACjD,IAAII,QAAQ,GAAGJ,QAAQ,KAAK,GAAG,IAAIA,QAAQ,KAAK,GAAG;IACnD,IAAIT,SAAS,GAAGjF,GAAG,CAAC,CAAC,CAAC,IAAIgF,gBAAgB;IAC1C,IAAIe,OAAO,GAAGP,OAAO,IAAIC,KAAK;IAE9BX,MAAM,CAACnE,IAAI,CAAC;MACVzF,IAAI,EAAEA,IAAI,IAAIK,GAAG,EAAE;MACnBgK,MAAM,EAAEA,MAAM,IAAI,EAAE;MACpBN,SAAS,EAAEA,SAAS;MACpBa,QAAQ,EAAEA,QAAQ;MAClBD,MAAM,EAAEA,MAAM;MACdD,OAAO,EAAEA,OAAO;MAChBD,QAAQ,EAAE,CAAC,CAACA,QAAQ;MACpBI,OAAO,EAAEA,OAAO,GAAGC,WAAW,CAACD,OAAO,CAAC,GAAIJ,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAGM,YAAY,CAAChB,SAAS,CAAC,GAAG;IAChG,CAAC,CAAC;EACJ;;EAEA;EACA,IAAIF,KAAK,GAAG5F,GAAG,CAACoB,MAAM,EAAE;IACtB3B,IAAI,IAAIO,GAAG,CAAC+G,MAAM,CAACnB,KAAK,CAAC;EAC3B;;EAEA;EACA,IAAInG,IAAI,EAAE;IACRkG,MAAM,CAACnE,IAAI,CAAC/B,IAAI,CAAC;EACnB;EAEA,OAAOkG,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASP,OAAOA,CAAEpF,GAAG,EAAEuC,OAAO,EAAE;EAC9B,OAAO+C,gBAAgB,CAAC7E,KAAK,CAACT,GAAG,EAAEuC,OAAO,CAAC,EAAEA,OAAO,CAAC;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASyE,wBAAwBA,CAAEhH,GAAG,EAAE;EACtC,OAAOiH,SAAS,CAACjH,GAAG,CAAC,CAACE,OAAO,CAAC,SAAS,EAAE,UAAUN,CAAC,EAAE;IACpD,OAAO,GAAG,GAAGA,CAAC,CAACC,UAAU,CAAC,CAAC,CAAC,CAACnE,QAAQ,CAAC,EAAE,CAAC,CAACwL,WAAW,CAAC,CAAC;EACzD,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAAEnH,GAAG,EAAE;EAC5B,OAAOiH,SAAS,CAACjH,GAAG,CAAC,CAACE,OAAO,CAAC,OAAO,EAAE,UAAUN,CAAC,EAAE;IAClD,OAAO,GAAG,GAAGA,CAAC,CAACC,UAAU,CAAC,CAAC,CAAC,CAACnE,QAAQ,CAAC,EAAE,CAAC,CAACwL,WAAW,CAAC,CAAC;EACzD,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA,SAAS5B,gBAAgBA,CAAEK,MAAM,EAAEpD,OAAO,EAAE;EAC1C;EACA,IAAI6E,OAAO,GAAG,IAAI9F,KAAK,CAACqE,MAAM,CAACvE,MAAM,CAAC;;EAEtC;EACA,KAAK,IAAImD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoB,MAAM,CAACvE,MAAM,EAAEmD,CAAC,EAAE,EAAE;IACtC,IAAI,OAAOoB,MAAM,CAACpB,CAAC,CAAC,KAAK,QAAQ,EAAE;MACjC6C,OAAO,CAAC7C,CAAC,CAAC,GAAG,IAAImB,MAAM,CAAC,MAAM,GAAGC,MAAM,CAACpB,CAAC,CAAC,CAACqC,OAAO,GAAG,IAAI,EAAES,KAAK,CAAC9E,OAAO,CAAC,CAAC;IAC5E;EACF;EAEA,OAAO,UAAUb,GAAG,EAAE4F,IAAI,EAAE;IAC1B,IAAI7H,IAAI,GAAG,EAAE;IACb,IAAIzC,IAAI,GAAG0E,GAAG,IAAI,CAAC,CAAC;IACpB,IAAIa,OAAO,GAAG+E,IAAI,IAAI,CAAC,CAAC;IACxB,IAAIvH,MAAM,GAAGwC,OAAO,CAACgF,MAAM,GAAGP,wBAAwB,GAAG/G,kBAAkB;IAE3E,KAAK,IAAIsE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoB,MAAM,CAACvE,MAAM,EAAEmD,CAAC,EAAE,EAAE;MACtC,IAAIiD,KAAK,GAAG7B,MAAM,CAACpB,CAAC,CAAC;MAErB,IAAI,OAAOiD,KAAK,KAAK,QAAQ,EAAE;QAC7B/H,IAAI,IAAI+H,KAAK;QAEb;MACF;MAEA,IAAIzE,KAAK,GAAG/F,IAAI,CAACwK,KAAK,CAACzL,IAAI,CAAC;MAC5B,IAAIyI,OAAO;MAEX,IAAIzB,KAAK,IAAI,IAAI,EAAE;QACjB,IAAIyE,KAAK,CAACb,QAAQ,EAAE;UAClB;UACA,IAAIa,KAAK,CAACf,OAAO,EAAE;YACjBhH,IAAI,IAAI+H,KAAK,CAACpB,MAAM;UACtB;UAEA;QACF,CAAC,MAAM;UACL,MAAM,IAAIqB,SAAS,CAAC,YAAY,GAAGD,KAAK,CAACzL,IAAI,GAAG,iBAAiB,CAAC;QACpE;MACF;MAEA,IAAI+I,OAAO,CAAC/B,KAAK,CAAC,EAAE;QAClB,IAAI,CAACyE,KAAK,CAACd,MAAM,EAAE;UACjB,MAAM,IAAIe,SAAS,CAAC,YAAY,GAAGD,KAAK,CAACzL,IAAI,GAAG,iCAAiC,GAAG2L,IAAI,CAACvE,SAAS,CAACJ,KAAK,CAAC,GAAG,GAAG,CAAC;QAClH;QAEA,IAAIA,KAAK,CAAC3B,MAAM,KAAK,CAAC,EAAE;UACtB,IAAIoG,KAAK,CAACb,QAAQ,EAAE;YAClB;UACF,CAAC,MAAM;YACL,MAAM,IAAIc,SAAS,CAAC,YAAY,GAAGD,KAAK,CAACzL,IAAI,GAAG,mBAAmB,CAAC;UACtE;QACF;QAEA,KAAK,IAAI4L,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG5E,KAAK,CAAC3B,MAAM,EAAEuG,CAAC,EAAE,EAAE;UACrCnD,OAAO,GAAGzE,MAAM,CAACgD,KAAK,CAAC4E,CAAC,CAAC,CAAC;UAE1B,IAAI,CAACP,OAAO,CAAC7C,CAAC,CAAC,CAACqD,IAAI,CAACpD,OAAO,CAAC,EAAE;YAC7B,MAAM,IAAIiD,SAAS,CAAC,gBAAgB,GAAGD,KAAK,CAACzL,IAAI,GAAG,cAAc,GAAGyL,KAAK,CAACZ,OAAO,GAAG,mBAAmB,GAAGc,IAAI,CAACvE,SAAS,CAACqB,OAAO,CAAC,GAAG,GAAG,CAAC;UAC3I;UAEA/E,IAAI,IAAI,CAACkI,CAAC,KAAK,CAAC,GAAGH,KAAK,CAACpB,MAAM,GAAGoB,KAAK,CAAC1B,SAAS,IAAItB,OAAO;QAC9D;QAEA;MACF;MAEAA,OAAO,GAAGgD,KAAK,CAAChB,QAAQ,GAAGW,cAAc,CAACpE,KAAK,CAAC,GAAGhD,MAAM,CAACgD,KAAK,CAAC;MAEhE,IAAI,CAACqE,OAAO,CAAC7C,CAAC,CAAC,CAACqD,IAAI,CAACpD,OAAO,CAAC,EAAE;QAC7B,MAAM,IAAIiD,SAAS,CAAC,YAAY,GAAGD,KAAK,CAACzL,IAAI,GAAG,cAAc,GAAGyL,KAAK,CAACZ,OAAO,GAAG,mBAAmB,GAAGpC,OAAO,GAAG,GAAG,CAAC;MACvH;MAEA/E,IAAI,IAAI+H,KAAK,CAACpB,MAAM,GAAG5B,OAAO;IAChC;IAEA,OAAO/E,IAAI;EACb,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASqH,YAAYA,CAAE9G,GAAG,EAAE;EAC1B,OAAOA,GAAG,CAACE,OAAO,CAAC,4BAA4B,EAAE,MAAM,CAAC;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS2G,WAAWA,CAAEP,KAAK,EAAE;EAC3B,OAAOA,KAAK,CAACpG,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS2H,UAAUA,CAAEC,EAAE,EAAEnG,IAAI,EAAE;EAC7BmG,EAAE,CAACnG,IAAI,GAAGA,IAAI;EACd,OAAOmG,EAAE;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAST,KAAKA,CAAE9E,OAAO,EAAE;EACvB,OAAOA,OAAO,IAAIA,OAAO,CAACwF,SAAS,GAAG,EAAE,GAAG,GAAG;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAAEvI,IAAI,EAAEkC,IAAI,EAAE;EACnC;EACA,IAAIsG,MAAM,GAAGxI,IAAI,CAACyI,MAAM,CAACC,KAAK,CAAC,WAAW,CAAC;EAE3C,IAAIF,MAAM,EAAE;IACV,KAAK,IAAI1D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0D,MAAM,CAAC7G,MAAM,EAAEmD,CAAC,EAAE,EAAE;MACtC5C,IAAI,CAACH,IAAI,CAAC;QACRzF,IAAI,EAAEwI,CAAC;QACP6B,MAAM,EAAE,IAAI;QACZN,SAAS,EAAE,IAAI;QACfa,QAAQ,EAAE,KAAK;QACfD,MAAM,EAAE,KAAK;QACbD,OAAO,EAAE,KAAK;QACdD,QAAQ,EAAE,KAAK;QACfI,OAAO,EAAE;MACX,CAAC,CAAC;IACJ;EACF;EAEA,OAAOiB,UAAU,CAACpI,IAAI,EAAEkC,IAAI,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASyG,aAAaA,CAAE3I,IAAI,EAAEkC,IAAI,EAAEY,OAAO,EAAE;EAC3C,IAAIrB,KAAK,GAAG,EAAE;EAEd,KAAK,IAAIqD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9E,IAAI,CAAC2B,MAAM,EAAEmD,CAAC,EAAE,EAAE;IACpCrD,KAAK,CAACM,IAAI,CAACyD,YAAY,CAACxF,IAAI,CAAC8E,CAAC,CAAC,EAAE5C,IAAI,EAAEY,OAAO,CAAC,CAAC2F,MAAM,CAAC;EACzD;EAEA,IAAIG,MAAM,GAAG,IAAI3C,MAAM,CAAC,KAAK,GAAGxE,KAAK,CAACG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAEgG,KAAK,CAAC9E,OAAO,CAAC,CAAC;EAEtE,OAAOsF,UAAU,CAACQ,MAAM,EAAE1G,IAAI,CAAC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS2G,cAAcA,CAAE7I,IAAI,EAAEkC,IAAI,EAAEY,OAAO,EAAE;EAC5C,OAAOiD,cAAc,CAAC/E,KAAK,CAAChB,IAAI,EAAE8C,OAAO,CAAC,EAAEZ,IAAI,EAAEY,OAAO,CAAC;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiD,cAAcA,CAAEG,MAAM,EAAEhE,IAAI,EAAEY,OAAO,EAAE;EAC9C,IAAI,CAACuC,OAAO,CAACnD,IAAI,CAAC,EAAE;IAClBY,OAAO,GAAG,sBAAwBZ,IAAI,IAAIY,OAAQ;IAClDZ,IAAI,GAAG,EAAE;EACX;EAEAY,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;EAEvB,IAAIgG,MAAM,GAAGhG,OAAO,CAACgG,MAAM;EAC3B,IAAIC,GAAG,GAAGjG,OAAO,CAACiG,GAAG,KAAK,KAAK;EAC/B,IAAIpL,KAAK,GAAG,EAAE;;EAEd;EACA,KAAK,IAAImH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoB,MAAM,CAACvE,MAAM,EAAEmD,CAAC,EAAE,EAAE;IACtC,IAAIiD,KAAK,GAAG7B,MAAM,CAACpB,CAAC,CAAC;IAErB,IAAI,OAAOiD,KAAK,KAAK,QAAQ,EAAE;MAC7BpK,KAAK,IAAI0J,YAAY,CAACU,KAAK,CAAC;IAC9B,CAAC,MAAM;MACL,IAAIpB,MAAM,GAAGU,YAAY,CAACU,KAAK,CAACpB,MAAM,CAAC;MACvC,IAAIC,OAAO,GAAG,KAAK,GAAGmB,KAAK,CAACZ,OAAO,GAAG,GAAG;MAEzCjF,IAAI,CAACH,IAAI,CAACgG,KAAK,CAAC;MAEhB,IAAIA,KAAK,CAACd,MAAM,EAAE;QAChBL,OAAO,IAAI,KAAK,GAAGD,MAAM,GAAGC,OAAO,GAAG,IAAI;MAC5C;MAEA,IAAImB,KAAK,CAACb,QAAQ,EAAE;QAClB,IAAI,CAACa,KAAK,CAACf,OAAO,EAAE;UAClBJ,OAAO,GAAG,KAAK,GAAGD,MAAM,GAAG,GAAG,GAAGC,OAAO,GAAG,KAAK;QAClD,CAAC,MAAM;UACLA,OAAO,GAAGD,MAAM,GAAG,GAAG,GAAGC,OAAO,GAAG,IAAI;QACzC;MACF,CAAC,MAAM;QACLA,OAAO,GAAGD,MAAM,GAAG,GAAG,GAAGC,OAAO,GAAG,GAAG;MACxC;MAEAjJ,KAAK,IAAIiJ,OAAO;IAClB;EACF;EAEA,IAAIP,SAAS,GAAGgB,YAAY,CAACvE,OAAO,CAACuD,SAAS,IAAI,GAAG,CAAC;EACtD,IAAI2C,iBAAiB,GAAGrL,KAAK,CAACuH,KAAK,CAAC,CAACmB,SAAS,CAAC1E,MAAM,CAAC,KAAK0E,SAAS;;EAEpE;EACA;EACA;EACA;EACA,IAAI,CAACyC,MAAM,EAAE;IACXnL,KAAK,GAAG,CAACqL,iBAAiB,GAAGrL,KAAK,CAACuH,KAAK,CAAC,CAAC,EAAE,CAACmB,SAAS,CAAC1E,MAAM,CAAC,GAAGhE,KAAK,IAAI,KAAK,GAAG0I,SAAS,GAAG,SAAS;EACzG;EAEA,IAAI0C,GAAG,EAAE;IACPpL,KAAK,IAAI,GAAG;EACd,CAAC,MAAM;IACL;IACA;IACAA,KAAK,IAAImL,MAAM,IAAIE,iBAAiB,GAAG,EAAE,GAAG,KAAK,GAAG3C,SAAS,GAAG,KAAK;EACvE;EAEA,OAAO+B,UAAU,CAAC,IAAInC,MAAM,CAAC,GAAG,GAAGtI,KAAK,EAAEiK,KAAK,CAAC9E,OAAO,CAAC,CAAC,EAAEZ,IAAI,CAAC;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASsD,YAAYA,CAAExF,IAAI,EAAEkC,IAAI,EAAEY,OAAO,EAAE;EAC1C,IAAI,CAACuC,OAAO,CAACnD,IAAI,CAAC,EAAE;IAClBY,OAAO,GAAG,sBAAwBZ,IAAI,IAAIY,OAAQ;IAClDZ,IAAI,GAAG,EAAE;EACX;EAEAY,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;EAEvB,IAAI9C,IAAI,YAAYiG,MAAM,EAAE;IAC1B,OAAOsC,cAAc,CAACvI,IAAI,EAAE,qBAAuBkC,IAAK,CAAC;EAC3D;EAEA,IAAImD,OAAO,CAACrF,IAAI,CAAC,EAAE;IACjB,OAAO2I,aAAa,EAAC,qBAAuB3I,IAAI,EAAG,qBAAuBkC,IAAI,EAAGY,OAAO,CAAC;EAC3F;EAEA,OAAO+F,cAAc,EAAC,qBAAuB7I,IAAI,EAAG,qBAAuBkC,IAAI,EAAGY,OAAO,CAAC;AAC5F;AACAyC,cAAc,CAACvE,KAAK,GAAGyE,OAAO;AAC9BF,cAAc,CAACI,OAAO,GAAGD,SAAS;AAClCH,cAAc,CAACM,gBAAgB,GAAGD,kBAAkB;AACpDL,cAAc,CAACQ,cAAc,GAAGD,gBAAgB;;AAEhD;;AAEA;AACA,IAAImD,kBAAkB,GAAGlN,MAAM,CAACmN,MAAM,CAAC,IAAI,CAAC;AAE5C,SAASC,UAAUA,CACjBnJ,IAAI,EACJF,MAAM,EACNsJ,QAAQ,EACR;EACAtJ,MAAM,GAAGA,MAAM,IAAI,CAAC,CAAC;EACrB,IAAI;IACF,IAAIuJ,MAAM,GACRJ,kBAAkB,CAACjJ,IAAI,CAAC,KACvBiJ,kBAAkB,CAACjJ,IAAI,CAAC,GAAGuF,cAAc,CAACI,OAAO,CAAC3F,IAAI,CAAC,CAAC;;IAE3D;IACA;IACA,IAAI,OAAOF,MAAM,CAACwJ,SAAS,KAAK,QAAQ,EAAE;MAAExJ,MAAM,CAAC,CAAC,CAAC,GAAGA,MAAM,CAACwJ,SAAS;IAAE;IAE1E,OAAOD,MAAM,CAACvJ,MAAM,EAAE;MAAEgI,MAAM,EAAE;IAAK,CAAC,CAAC;EACzC,CAAC,CAAC,OAAO3G,CAAC,EAAE;IACV,IAAI1F,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACzC;MACAH,IAAI,CAAC,OAAOsE,MAAM,CAACwJ,SAAS,KAAK,QAAQ,EAAG,oBAAoB,GAAGF,QAAQ,GAAG,IAAI,GAAIjI,CAAC,CAAC7F,OAAS,CAAC;IACpG;IACA,OAAO,EAAE;EACX,CAAC,SAAS;IACR;IACA,OAAOwE,MAAM,CAAC,CAAC,CAAC;EAClB;AACF;;AAEA;;AAEA,SAASyJ,iBAAiBA,CACxBC,GAAG,EACHrK,OAAO,EACPqF,MAAM,EACN3B,MAAM,EACN;EACA,IAAI6D,IAAI,GAAG,OAAO8C,GAAG,KAAK,QAAQ,GAAG;IAAExJ,IAAI,EAAEwJ;EAAI,CAAC,GAAGA,GAAG;EACxD;EACA,IAAI9C,IAAI,CAAC+C,WAAW,EAAE;IACpB,OAAO/C,IAAI;EACb,CAAC,MAAM,IAAIA,IAAI,CAACpK,IAAI,EAAE;IACpBoK,IAAI,GAAGlK,MAAM,CAAC,CAAC,CAAC,EAAEgN,GAAG,CAAC;IACtB,IAAI1J,MAAM,GAAG4G,IAAI,CAAC5G,MAAM;IACxB,IAAIA,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;MACxC4G,IAAI,CAAC5G,MAAM,GAAGtD,MAAM,CAAC,CAAC,CAAC,EAAEsD,MAAM,CAAC;IAClC;IACA,OAAO4G,IAAI;EACb;;EAEA;EACA,IAAI,CAACA,IAAI,CAAC1G,IAAI,IAAI0G,IAAI,CAAC5G,MAAM,IAAIX,OAAO,EAAE;IACxCuH,IAAI,GAAGlK,MAAM,CAAC,CAAC,CAAC,EAAEkK,IAAI,CAAC;IACvBA,IAAI,CAAC+C,WAAW,GAAG,IAAI;IACvB,IAAIC,QAAQ,GAAGlN,MAAM,CAACA,MAAM,CAAC,CAAC,CAAC,EAAE2C,OAAO,CAACW,MAAM,CAAC,EAAE4G,IAAI,CAAC5G,MAAM,CAAC;IAC9D,IAAIX,OAAO,CAAC7C,IAAI,EAAE;MAChBoK,IAAI,CAACpK,IAAI,GAAG6C,OAAO,CAAC7C,IAAI;MACxBoK,IAAI,CAAC5G,MAAM,GAAG4J,QAAQ;IACxB,CAAC,MAAM,IAAIvK,OAAO,CAACL,OAAO,CAAC6C,MAAM,EAAE;MACjC,IAAIgI,OAAO,GAAGxK,OAAO,CAACL,OAAO,CAACK,OAAO,CAACL,OAAO,CAAC6C,MAAM,GAAG,CAAC,CAAC,CAAC3B,IAAI;MAC9D0G,IAAI,CAAC1G,IAAI,GAAGmJ,UAAU,CAACQ,OAAO,EAAED,QAAQ,EAAG,OAAO,GAAIvK,OAAO,CAACa,IAAM,CAAC;IACvE,CAAC,MAAM,IAAIvE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MAChDH,IAAI,CAAC,KAAK,EAAE,sDAAsD,CAAC;IACrE;IACA,OAAOkL,IAAI;EACb;EAEA,IAAIkD,UAAU,GAAG5E,SAAS,CAAC0B,IAAI,CAAC1G,IAAI,IAAI,EAAE,CAAC;EAC3C,IAAI6J,QAAQ,GAAI1K,OAAO,IAAIA,OAAO,CAACa,IAAI,IAAK,GAAG;EAC/C,IAAIA,IAAI,GAAG4J,UAAU,CAAC5J,IAAI,GACtBqE,WAAW,CAACuF,UAAU,CAAC5J,IAAI,EAAE6J,QAAQ,EAAErF,MAAM,IAAIkC,IAAI,CAAClC,MAAM,CAAC,GAC7DqF,QAAQ;EAEZ,IAAIhJ,KAAK,GAAGD,YAAY,CACtBgJ,UAAU,CAAC/I,KAAK,EAChB6F,IAAI,CAAC7F,KAAK,EACVgC,MAAM,IAAIA,MAAM,CAACC,OAAO,CAAC7B,UAC3B,CAAC;EAED,IAAIgC,IAAI,GAAGyD,IAAI,CAACzD,IAAI,IAAI2G,UAAU,CAAC3G,IAAI;EACvC,IAAIA,IAAI,IAAIA,IAAI,CAACyB,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IAClCzB,IAAI,GAAG,GAAG,GAAGA,IAAI;EACnB;EAEA,OAAO;IACLwG,WAAW,EAAE,IAAI;IACjBzJ,IAAI,EAAEA,IAAI;IACVa,KAAK,EAAEA,KAAK;IACZoC,IAAI,EAAEA;EACR,CAAC;AACH;;AAEA;;AAEA;AACA,IAAI6G,OAAO,GAAG,CAAC9M,MAAM,EAAEjB,MAAM,CAAC;AAC9B,IAAIgO,UAAU,GAAG,CAAC/M,MAAM,EAAE6E,KAAK,CAAC;AAEhC,IAAImI,IAAI,GAAG,SAAAA,CAAA,EAAY,CAAC,CAAC;AAEzB,IAAIC,IAAI,GAAG;EACT3N,IAAI,EAAE,YAAY;EAClBQ,KAAK,EAAE;IACLoN,EAAE,EAAE;MACFnN,IAAI,EAAE+M,OAAO;MACbK,QAAQ,EAAE;IACZ,CAAC;IACDC,GAAG,EAAE;MACHrN,IAAI,EAAEC,MAAM;MACZC,OAAO,EAAE;IACX,CAAC;IACDoN,KAAK,EAAEC,OAAO;IACd9F,MAAM,EAAE8F,OAAO;IACf7J,OAAO,EAAE6J,OAAO;IAChBC,WAAW,EAAEvN,MAAM;IACnBwN,gBAAgB,EAAExN,MAAM;IACxByN,gBAAgB,EAAE;MAChB1N,IAAI,EAAEC,MAAM;MACZC,OAAO,EAAE;IACX,CAAC;IACDyN,KAAK,EAAE;MACL3N,IAAI,EAAEgN,UAAU;MAChB9M,OAAO,EAAE;IACX;EACF,CAAC;EACDC,MAAM,EAAE,SAASA,MAAMA,CAAEO,CAAC,EAAE;IAC1B,IAAIkN,MAAM,GAAG,IAAI;IAEjB,IAAI9H,MAAM,GAAG,IAAI,CAAC+H,OAAO;IACzB,IAAIzL,OAAO,GAAG,IAAI,CAACvB,MAAM;IACzB,IAAIR,GAAG,GAAGyF,MAAM,CAACgI,OAAO,CACtB,IAAI,CAACX,EAAE,EACP/K,OAAO,EACP,IAAI,CAACqF,MACP,CAAC;IACD,IAAI7B,QAAQ,GAAGvF,GAAG,CAACuF,QAAQ;IAC3B,IAAIhF,KAAK,GAAGP,GAAG,CAACO,KAAK;IACrB,IAAImN,IAAI,GAAG1N,GAAG,CAAC0N,IAAI;IAEnB,IAAIC,OAAO,GAAG,CAAC,CAAC;IAChB,IAAIC,iBAAiB,GAAGnI,MAAM,CAACC,OAAO,CAACmI,eAAe;IACtD,IAAIC,sBAAsB,GAAGrI,MAAM,CAACC,OAAO,CAACqI,oBAAoB;IAChE;IACA,IAAIC,mBAAmB,GACrBJ,iBAAiB,IAAI,IAAI,GAAG,oBAAoB,GAAGA,iBAAiB;IACtE,IAAIK,wBAAwB,GAC1BH,sBAAsB,IAAI,IAAI,GAC1B,0BAA0B,GAC1BA,sBAAsB;IAC5B,IAAIX,WAAW,GACb,IAAI,CAACA,WAAW,IAAI,IAAI,GAAGa,mBAAmB,GAAG,IAAI,CAACb,WAAW;IACnE,IAAIC,gBAAgB,GAClB,IAAI,CAACA,gBAAgB,IAAI,IAAI,GACzBa,wBAAwB,GACxB,IAAI,CAACb,gBAAgB;IAE3B,IAAIc,aAAa,GAAG3N,KAAK,CAACiF,cAAc,GACpCH,WAAW,CAAC,IAAI,EAAE8G,iBAAiB,CAAC5L,KAAK,CAACiF,cAAc,CAAC,EAAE,IAAI,EAAEC,MAAM,CAAC,GACxElF,KAAK;IAEToN,OAAO,CAACP,gBAAgB,CAAC,GAAG7G,WAAW,CAACxE,OAAO,EAAEmM,aAAa,CAAC;IAC/DP,OAAO,CAACR,WAAW,CAAC,GAAG,IAAI,CAACF,KAAK,GAC7BU,OAAO,CAACP,gBAAgB,CAAC,GACzBtG,eAAe,CAAC/E,OAAO,EAAEmM,aAAa,CAAC;IAE3C,IAAIb,gBAAgB,GAAGM,OAAO,CAACP,gBAAgB,CAAC,GAAG,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAE/E,IAAIc,OAAO,GAAG,SAAAA,CAAUpK,CAAC,EAAE;MACzB,IAAIqK,UAAU,CAACrK,CAAC,CAAC,EAAE;QACjB,IAAIwJ,MAAM,CAAClK,OAAO,EAAE;UAClBoC,MAAM,CAACpC,OAAO,CAACkC,QAAQ,EAAEqH,IAAI,CAAC;QAChC,CAAC,MAAM;UACLnH,MAAM,CAACd,IAAI,CAACY,QAAQ,EAAEqH,IAAI,CAAC;QAC7B;MACF;IACF,CAAC;IAED,IAAIyB,EAAE,GAAG;MAAEC,KAAK,EAAEF;IAAW,CAAC;IAC9B,IAAI3J,KAAK,CAACC,OAAO,CAAC,IAAI,CAAC4I,KAAK,CAAC,EAAE;MAC7B,IAAI,CAACA,KAAK,CAACnJ,OAAO,CAAC,UAAUJ,CAAC,EAAE;QAC9BsK,EAAE,CAACtK,CAAC,CAAC,GAAGoK,OAAO;MACjB,CAAC,CAAC;IACJ,CAAC,MAAM;MACLE,EAAE,CAAC,IAAI,CAACf,KAAK,CAAC,GAAGa,OAAO;IAC1B;IAEA,IAAIhO,IAAI,GAAG;MAAEoO,KAAK,EAAEZ;IAAQ,CAAC;IAE7B,IAAIa,UAAU,GACZ,CAAC,IAAI,CAACC,YAAY,CAACC,UAAU,IAC7B,IAAI,CAACD,YAAY,CAAC5O,OAAO,IACzB,IAAI,CAAC4O,YAAY,CAAC5O,OAAO,CAAC;MACxB6N,IAAI,EAAEA,IAAI;MACVnN,KAAK,EAAEA,KAAK;MACZoO,QAAQ,EAAER,OAAO;MACjBS,QAAQ,EAAEjB,OAAO,CAACR,WAAW,CAAC;MAC9B0B,aAAa,EAAElB,OAAO,CAACP,gBAAgB;IACzC,CAAC,CAAC;IAEJ,IAAIoB,UAAU,EAAE;MACd,IAAIA,UAAU,CAACjK,MAAM,KAAK,CAAC,EAAE;QAC3B,OAAOiK,UAAU,CAAC,CAAC,CAAC;MACtB,CAAC,MAAM,IAAIA,UAAU,CAACjK,MAAM,GAAG,CAAC,IAAI,CAACiK,UAAU,CAACjK,MAAM,EAAE;QACtD,IAAIlG,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;UACzCH,IAAI,CACF,KAAK,EACJ,uBAAuB,GAAI,IAAI,CAAC0O,EAAG,GAAG,sHACzC,CAAC;QACH;QACA,OAAO0B,UAAU,CAACjK,MAAM,KAAK,CAAC,GAAGlE,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAEmO,UAAU,CAAC;MAClE;IACF;IAEA,IAAI,IAAI,CAACxB,GAAG,KAAK,GAAG,EAAE;MACpB7M,IAAI,CAACkO,EAAE,GAAGA,EAAE;MACZlO,IAAI,CAACqC,KAAK,GAAG;QAAEkL,IAAI,EAAEA,IAAI;QAAE,cAAc,EAAEL;MAAiB,CAAC;IAC/D,CAAC,MAAM;MACL;MACA,IAAIhO,CAAC,GAAGyP,UAAU,CAAC,IAAI,CAACC,MAAM,CAAClP,OAAO,CAAC;MACvC,IAAIR,CAAC,EAAE;QACL;QACAA,CAAC,CAAC2P,QAAQ,GAAG,KAAK;QAClB,IAAIC,KAAK,GAAI5P,CAAC,CAACc,IAAI,GAAGf,MAAM,CAAC,CAAC,CAAC,EAAEC,CAAC,CAACc,IAAI,CAAE;QACzC8O,KAAK,CAACZ,EAAE,GAAGY,KAAK,CAACZ,EAAE,IAAI,CAAC,CAAC;QACzB;QACA,KAAK,IAAIf,KAAK,IAAI2B,KAAK,CAACZ,EAAE,EAAE;UAC1B,IAAIa,SAAS,GAAGD,KAAK,CAACZ,EAAE,CAACf,KAAK,CAAC;UAC/B,IAAIA,KAAK,IAAIe,EAAE,EAAE;YACfY,KAAK,CAACZ,EAAE,CAACf,KAAK,CAAC,GAAG7I,KAAK,CAACC,OAAO,CAACwK,SAAS,CAAC,GAAGA,SAAS,GAAG,CAACA,SAAS,CAAC;UACtE;QACF;QACA;QACA,KAAK,IAAIC,OAAO,IAAId,EAAE,EAAE;UACtB,IAAIc,OAAO,IAAIF,KAAK,CAACZ,EAAE,EAAE;YACvB;YACAY,KAAK,CAACZ,EAAE,CAACc,OAAO,CAAC,CAACxK,IAAI,CAAC0J,EAAE,CAACc,OAAO,CAAC,CAAC;UACrC,CAAC,MAAM;YACLF,KAAK,CAACZ,EAAE,CAACc,OAAO,CAAC,GAAGhB,OAAO;UAC7B;QACF;QAEA,IAAIiB,MAAM,GAAI/P,CAAC,CAACc,IAAI,CAACqC,KAAK,GAAGpD,MAAM,CAAC,CAAC,CAAC,EAAEC,CAAC,CAACc,IAAI,CAACqC,KAAK,CAAE;QACtD4M,MAAM,CAAC1B,IAAI,GAAGA,IAAI;QAClB0B,MAAM,CAAC,cAAc,CAAC,GAAG/B,gBAAgB;MAC3C,CAAC,MAAM;QACL;QACAlN,IAAI,CAACkO,EAAE,GAAGA,EAAE;MACd;IACF;IAEA,OAAOhO,CAAC,CAAC,IAAI,CAAC2M,GAAG,EAAE7M,IAAI,EAAE,IAAI,CAAC4O,MAAM,CAAClP,OAAO,CAAC;EAC/C;AACF,CAAC;AAED,SAASuO,UAAUA,CAAErK,CAAC,EAAE;EACtB;EACA,IAAIA,CAAC,CAACsL,OAAO,IAAItL,CAAC,CAACuL,MAAM,IAAIvL,CAAC,CAACwL,OAAO,IAAIxL,CAAC,CAACyL,QAAQ,EAAE;IAAE;EAAO;EAC/D;EACA,IAAIzL,CAAC,CAAC0L,gBAAgB,EAAE;IAAE;EAAO;EACjC;EACA,IAAI1L,CAAC,CAAC2L,MAAM,KAAK/M,SAAS,IAAIoB,CAAC,CAAC2L,MAAM,KAAK,CAAC,EAAE;IAAE;EAAO;EACvD;EACA,IAAI3L,CAAC,CAAC4L,aAAa,IAAI5L,CAAC,CAAC4L,aAAa,CAACC,YAAY,EAAE;IACnD,IAAI7I,MAAM,GAAGhD,CAAC,CAAC4L,aAAa,CAACC,YAAY,CAAC,QAAQ,CAAC;IACnD,IAAI,aAAa,CAAC7E,IAAI,CAAChE,MAAM,CAAC,EAAE;MAAE;IAAO;EAC3C;EACA;EACA,IAAIhD,CAAC,CAAC8L,cAAc,EAAE;IACpB9L,CAAC,CAAC8L,cAAc,CAAC,CAAC;EACpB;EACA,OAAO,IAAI;AACb;AAEA,SAASf,UAAUA,CAAE7O,QAAQ,EAAE;EAC7B,IAAIA,QAAQ,EAAE;IACZ,IAAI6P,KAAK;IACT,KAAK,IAAIpI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGzH,QAAQ,CAACsE,MAAM,EAAEmD,CAAC,EAAE,EAAE;MACxCoI,KAAK,GAAG7P,QAAQ,CAACyH,CAAC,CAAC;MACnB,IAAIoI,KAAK,CAAC9C,GAAG,KAAK,GAAG,EAAE;QACrB,OAAO8C,KAAK;MACd;MACA,IAAIA,KAAK,CAAC7P,QAAQ,KAAK6P,KAAK,GAAGhB,UAAU,CAACgB,KAAK,CAAC7P,QAAQ,CAAC,CAAC,EAAE;QAC1D,OAAO6P,KAAK;MACd;IACF;EACF;AACF;AAEA,IAAIC,IAAI;AAER,SAASC,OAAOA,CAAEC,GAAG,EAAE;EACrB,IAAID,OAAO,CAACE,SAAS,IAAIH,IAAI,KAAKE,GAAG,EAAE;IAAE;EAAO;EAChDD,OAAO,CAACE,SAAS,GAAG,IAAI;EAExBH,IAAI,GAAGE,GAAG;EAEV,IAAIE,KAAK,GAAG,SAAAA,CAAUC,CAAC,EAAE;IAAE,OAAOA,CAAC,KAAKzN,SAAS;EAAE,CAAC;EAEpD,IAAI0N,gBAAgB,GAAG,SAAAA,CAAUxO,EAAE,EAAEyO,OAAO,EAAE;IAC5C,IAAI5I,CAAC,GAAG7F,EAAE,CAAC0O,QAAQ,CAACC,YAAY;IAChC,IAAIL,KAAK,CAACzI,CAAC,CAAC,IAAIyI,KAAK,CAACzI,CAAC,GAAGA,CAAC,CAACvH,IAAI,CAAC,IAAIgQ,KAAK,CAACzI,CAAC,GAAGA,CAAC,CAAC9F,qBAAqB,CAAC,EAAE;MACvE8F,CAAC,CAAC7F,EAAE,EAAEyO,OAAO,CAAC;IAChB;EACF,CAAC;EAEDL,GAAG,CAACQ,KAAK,CAAC;IACRC,YAAY,EAAE,SAASA,YAAYA,CAAA,EAAI;MACrC,IAAIP,KAAK,CAAC,IAAI,CAACI,QAAQ,CAAC9K,MAAM,CAAC,EAAE;QAC/B,IAAI,CAAC5E,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC8P,OAAO,GAAG,IAAI,CAACJ,QAAQ,CAAC9K,MAAM;QACnC,IAAI,CAACkL,OAAO,CAACtO,IAAI,CAAC,IAAI,CAAC;QACvB4N,GAAG,CAACW,IAAI,CAACC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAACF,OAAO,CAACG,OAAO,CAAC/O,OAAO,CAAC;MACvE,CAAC,MAAM;QACL,IAAI,CAAClB,WAAW,GAAI,IAAI,CAACM,OAAO,IAAI,IAAI,CAACA,OAAO,CAACN,WAAW,IAAK,IAAI;MACvE;MACAwP,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC;IAC9B,CAAC;IACDU,SAAS,EAAE,SAASA,SAASA,CAAA,EAAI;MAC/BV,gBAAgB,CAAC,IAAI,CAAC;IACxB;EACF,CAAC,CAAC;EAEF1R,MAAM,CAACqS,cAAc,CAACf,GAAG,CAACrR,SAAS,EAAE,SAAS,EAAE;IAC9CqS,GAAG,EAAE,SAASA,GAAGA,CAAA,EAAI;MAAE,OAAO,IAAI,CAACpQ,WAAW,CAAC8P,OAAO;IAAC;EACzD,CAAC,CAAC;EAEFhS,MAAM,CAACqS,cAAc,CAACf,GAAG,CAACrR,SAAS,EAAE,QAAQ,EAAE;IAC7CqS,GAAG,EAAE,SAASA,GAAGA,CAAA,EAAI;MAAE,OAAO,IAAI,CAACpQ,WAAW,CAACqQ,MAAM;IAAC;EACxD,CAAC,CAAC;EAEFjB,GAAG,CAAC1O,SAAS,CAAC,YAAY,EAAE/B,IAAI,CAAC;EACjCyQ,GAAG,CAAC1O,SAAS,CAAC,YAAY,EAAEsL,IAAI,CAAC;EAEjC,IAAIsE,MAAM,GAAGlB,GAAG,CAACxN,MAAM,CAAC2O,qBAAqB;EAC7C;EACAD,MAAM,CAACE,gBAAgB,GAAGF,MAAM,CAACG,gBAAgB,GAAGH,MAAM,CAACI,iBAAiB,GAAGJ,MAAM,CAACK,OAAO;AAC/F;;AAEA;;AAEA,IAAIC,SAAS,GAAG,OAAOC,MAAM,KAAK,WAAW;;AAE7C;;AAEA,SAASC,cAAcA,CACrBC,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,UAAU,EACV;EACA;EACA,IAAIC,QAAQ,GAAGH,WAAW,IAAI,EAAE;EAChC;EACA,IAAII,OAAO,GAAGH,UAAU,IAAInT,MAAM,CAACmN,MAAM,CAAC,IAAI,CAAC;EAC/C;EACA,IAAIoG,OAAO,GAAGH,UAAU,IAAIpT,MAAM,CAACmN,MAAM,CAAC,IAAI,CAAC;EAE/C8F,MAAM,CAACzN,OAAO,CAAC,UAAU5D,KAAK,EAAE;IAC9B4R,cAAc,CAACH,QAAQ,EAAEC,OAAO,EAAEC,OAAO,EAAE3R,KAAK,CAAC;EACnD,CAAC,CAAC;;EAEF;EACA,KAAK,IAAImH,CAAC,GAAG,CAAC,EAAE0K,CAAC,GAAGJ,QAAQ,CAACzN,MAAM,EAAEmD,CAAC,GAAG0K,CAAC,EAAE1K,CAAC,EAAE,EAAE;IAC/C,IAAIsK,QAAQ,CAACtK,CAAC,CAAC,KAAK,GAAG,EAAE;MACvBsK,QAAQ,CAACrN,IAAI,CAACqN,QAAQ,CAACK,MAAM,CAAC3K,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACvC0K,CAAC,EAAE;MACH1K,CAAC,EAAE;IACL;EACF;EAEA,IAAIrJ,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IAC1C;IACA,IAAI+T,KAAK,GAAGN;IACZ;IAAA,CACG9M,MAAM,CAAC,UAAUtC,IAAI,EAAE;MAAE,OAAOA,IAAI,IAAIA,IAAI,CAAC0E,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI1E,IAAI,CAAC0E,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;IAAE,CAAC,CAAC;IAE/F,IAAIgL,KAAK,CAAC/N,MAAM,GAAG,CAAC,EAAE;MACpB,IAAIgO,SAAS,GAAGD,KAAK,CAACvN,GAAG,CAAC,UAAUnC,IAAI,EAAE;QAAE,OAAQ,IAAI,GAAGA,IAAI;MAAG,CAAC,CAAC,CAAC4B,IAAI,CAAC,IAAI,CAAC;MAC/EpG,IAAI,CAAC,KAAK,EAAG,wFAAwF,GAAGmU,SAAU,CAAC;IACrH;EACF;EAEA,OAAO;IACLP,QAAQ,EAAEA,QAAQ;IAClBC,OAAO,EAAEA,OAAO;IAChBC,OAAO,EAAEA;EACX,CAAC;AACH;AAEA,SAASC,cAAcA,CACrBH,QAAQ,EACRC,OAAO,EACPC,OAAO,EACP3R,KAAK,EACLL,MAAM,EACNsS,OAAO,EACP;EACA,IAAI5P,IAAI,GAAGrC,KAAK,CAACqC,IAAI;EACrB,IAAI1D,IAAI,GAAGqB,KAAK,CAACrB,IAAI;EACrB,IAAIb,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IACzCP,MAAM,CAAC4E,IAAI,IAAI,IAAI,EAAE,gDAAgD,CAAC;IACtE5E,MAAM,CACJ,OAAOuC,KAAK,CAACgB,SAAS,KAAK,QAAQ,EACnC,uCAAuC,GAAI3B,MAAM,CAC/CgD,IAAI,IAAI1D,IACV,CAAE,GAAG,eAAe,GAAG,6CACzB,CAAC;EACH;EAEA,IAAIuT,mBAAmB,GACrBlS,KAAK,CAACkS,mBAAmB,IAAI,CAAC,CAAC;EACjC,IAAIC,cAAc,GAAGC,aAAa,CAAC/P,IAAI,EAAE1C,MAAM,EAAEuS,mBAAmB,CAAC/G,MAAM,CAAC;EAE5E,IAAI,OAAOnL,KAAK,CAACqS,aAAa,KAAK,SAAS,EAAE;IAC5CH,mBAAmB,CAACvH,SAAS,GAAG3K,KAAK,CAACqS,aAAa;EACrD;EAEA,IAAItN,MAAM,GAAG;IACX1C,IAAI,EAAE8P,cAAc;IACpBG,KAAK,EAAEC,iBAAiB,CAACJ,cAAc,EAAED,mBAAmB,CAAC;IAC7D9Q,UAAU,EAAEpB,KAAK,CAACoB,UAAU,IAAI;MAAE9B,OAAO,EAAEU,KAAK,CAACgB;IAAU,CAAC;IAC5DS,SAAS,EAAE,CAAC,CAAC;IACb9C,IAAI,EAAEA,IAAI;IACVgB,MAAM,EAAEA,MAAM;IACdsS,OAAO,EAAEA,OAAO;IAChBO,QAAQ,EAAExS,KAAK,CAACwS,QAAQ;IACxBC,WAAW,EAAEzS,KAAK,CAACyS,WAAW;IAC9BpN,IAAI,EAAErF,KAAK,CAACqF,IAAI,IAAI,CAAC,CAAC;IACtBlG,KAAK,EACHa,KAAK,CAACb,KAAK,IAAI,IAAI,GACf,CAAC,CAAC,GACFa,KAAK,CAACoB,UAAU,GACdpB,KAAK,CAACb,KAAK,GACX;MAAEG,OAAO,EAAEU,KAAK,CAACb;IAAM;EACjC,CAAC;EAED,IAAIa,KAAK,CAACN,QAAQ,EAAE;IAClB;IACA;IACA;IACA,IAAI5B,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACzC,IACEgC,KAAK,CAACrB,IAAI,IACV,CAACqB,KAAK,CAACwS,QAAQ,IACfxS,KAAK,CAACN,QAAQ,CAACgT,IAAI,CAAC,UAAUnD,KAAK,EAAE;QAAE,OAAO,OAAO,CAAC/E,IAAI,CAAC+E,KAAK,CAAClN,IAAI,CAAC;MAAE,CAAC,CAAC,EAC1E;QACAxE,IAAI,CACF,KAAK,EACL,eAAe,GAAImC,KAAK,CAACrB,IAAK,GAAG,+BAA+B,GAC9D,qDAAqD,GAAIqB,KAAK,CAACrB,IAAK,GAAG,QAAQ,GAC/E,qEAAqE,GACrE,mEAAmE,GACnE,gBACJ,CAAC;MACH;IACF;IACAqB,KAAK,CAACN,QAAQ,CAACkE,OAAO,CAAC,UAAU2L,KAAK,EAAE;MACtC,IAAIoD,YAAY,GAAGV,OAAO,GACtBxK,SAAS,CAAEwK,OAAO,GAAG,GAAG,GAAI1C,KAAK,CAAClN,IAAM,CAAC,GACzCD,SAAS;MACbwP,cAAc,CAACH,QAAQ,EAAEC,OAAO,EAAEC,OAAO,EAAEpC,KAAK,EAAExK,MAAM,EAAE4N,YAAY,CAAC;IACzE,CAAC,CAAC;EACJ;EAEA,IAAI,CAACjB,OAAO,CAAC3M,MAAM,CAAC1C,IAAI,CAAC,EAAE;IACzBoP,QAAQ,CAACrN,IAAI,CAACW,MAAM,CAAC1C,IAAI,CAAC;IAC1BqP,OAAO,CAAC3M,MAAM,CAAC1C,IAAI,CAAC,GAAG0C,MAAM;EAC/B;EAEA,IAAI/E,KAAK,CAAC4S,KAAK,KAAKxQ,SAAS,EAAE;IAC7B,IAAIyQ,OAAO,GAAG3O,KAAK,CAACC,OAAO,CAACnE,KAAK,CAAC4S,KAAK,CAAC,GAAG5S,KAAK,CAAC4S,KAAK,GAAG,CAAC5S,KAAK,CAAC4S,KAAK,CAAC;IACtE,KAAK,IAAIzL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0L,OAAO,CAAC7O,MAAM,EAAE,EAAEmD,CAAC,EAAE;MACvC,IAAIyL,KAAK,GAAGC,OAAO,CAAC1L,CAAC,CAAC;MACtB,IAAIrJ,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAI4U,KAAK,KAAKvQ,IAAI,EAAE;QAC3DxE,IAAI,CACF,KAAK,EACJ,oDAAoD,GAAGwE,IAAI,GAAG,uEACjE,CAAC;QACD;QACA;MACF;MAEA,IAAIyQ,UAAU,GAAG;QACfzQ,IAAI,EAAEuQ,KAAK;QACXlT,QAAQ,EAAEM,KAAK,CAACN;MAClB,CAAC;MACDkS,cAAc,CACZH,QAAQ,EACRC,OAAO,EACPC,OAAO,EACPmB,UAAU,EACVnT,MAAM,EACNoF,MAAM,CAAC1C,IAAI,IAAI,GAAG,CAAC;MACrB,CAAC;IACH;EACF;EAEA,IAAI1D,IAAI,EAAE;IACR,IAAI,CAACgT,OAAO,CAAChT,IAAI,CAAC,EAAE;MAClBgT,OAAO,CAAChT,IAAI,CAAC,GAAGoG,MAAM;IACxB,CAAC,MAAM,IAAIjH,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAI,CAACiU,OAAO,EAAE;MAC5DpU,IAAI,CACF,KAAK,EACL,qCAAqC,GACnC,YAAY,GAAGc,IAAI,GAAG,cAAc,GAAIoG,MAAM,CAAC1C,IAAK,GAAG,MAC3D,CAAC;IACH;EACF;AACF;AAEA,SAASkQ,iBAAiBA,CACxBlQ,IAAI,EACJ6P,mBAAmB,EACnB;EACA,IAAII,KAAK,GAAG1K,cAAc,CAACvF,IAAI,EAAE,EAAE,EAAE6P,mBAAmB,CAAC;EACzD,IAAIpU,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IACzC,IAAIuG,IAAI,GAAGnG,MAAM,CAACmN,MAAM,CAAC,IAAI,CAAC;IAC9B+G,KAAK,CAAC/N,IAAI,CAACX,OAAO,CAAC,UAAU5E,GAAG,EAAE;MAChCnB,IAAI,CACF,CAAC0G,IAAI,CAACvF,GAAG,CAACL,IAAI,CAAC,EACd,6CAA6C,GAAG0D,IAAI,GAAG,IAC1D,CAAC;MACDkC,IAAI,CAACvF,GAAG,CAACL,IAAI,CAAC,GAAG,IAAI;IACvB,CAAC,CAAC;EACJ;EACA,OAAO2T,KAAK;AACd;AAEA,SAASF,aAAaA,CACpB/P,IAAI,EACJ1C,MAAM,EACNwL,MAAM,EACN;EACA,IAAI,CAACA,MAAM,EAAE;IAAE9I,IAAI,GAAGA,IAAI,CAACS,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EAAE;EAC/C,IAAIT,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IAAE,OAAOA,IAAI;EAAC;EACnC,IAAI1C,MAAM,IAAI,IAAI,EAAE;IAAE,OAAO0C,IAAI;EAAC;EAClC,OAAOoF,SAAS,CAAG9H,MAAM,CAAC0C,IAAI,GAAI,GAAG,GAAGA,IAAK,CAAC;AAChD;;AAEA;;AAIA,SAAS0Q,aAAaA,CACpB1B,MAAM,EACNnM,MAAM,EACN;EACA,IAAIzF,GAAG,GAAG2R,cAAc,CAACC,MAAM,CAAC;EAChC,IAAII,QAAQ,GAAGhS,GAAG,CAACgS,QAAQ;EAC3B,IAAIC,OAAO,GAAGjS,GAAG,CAACiS,OAAO;EACzB,IAAIC,OAAO,GAAGlS,GAAG,CAACkS,OAAO;EAEzB,SAASqB,SAASA,CAAE3B,MAAM,EAAE;IAC1BD,cAAc,CAACC,MAAM,EAAEI,QAAQ,EAAEC,OAAO,EAAEC,OAAO,CAAC;EACpD;EAEA,SAAS5G,KAAKA,CACZc,GAAG,EACHoH,YAAY,EACZhO,cAAc,EACd;IACA,IAAID,QAAQ,GAAG4G,iBAAiB,CAACC,GAAG,EAAEoH,YAAY,EAAE,KAAK,EAAE/N,MAAM,CAAC;IAClE,IAAIvG,IAAI,GAAGqG,QAAQ,CAACrG,IAAI;IAExB,IAAIA,IAAI,EAAE;MACR,IAAIoG,MAAM,GAAG4M,OAAO,CAAChT,IAAI,CAAC;MAC1B,IAAIb,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QACzCH,IAAI,CAACkH,MAAM,EAAG,mBAAmB,GAAGpG,IAAI,GAAG,kBAAmB,CAAC;MACjE;MACA,IAAI,CAACoG,MAAM,EAAE;QAAE,OAAOmO,YAAY,CAAC,IAAI,EAAElO,QAAQ,CAAC;MAAC;MACnD,IAAImO,UAAU,GAAGpO,MAAM,CAACuN,KAAK,CAAC/N,IAAI,CAC/BI,MAAM,CAAC,UAAU3F,GAAG,EAAE;QAAE,OAAO,CAACA,GAAG,CAACuK,QAAQ;MAAE,CAAC,CAAC,CAChD/E,GAAG,CAAC,UAAUxF,GAAG,EAAE;QAAE,OAAOA,GAAG,CAACL,IAAI;MAAE,CAAC,CAAC;MAE3C,IAAI,OAAOqG,QAAQ,CAAC7C,MAAM,KAAK,QAAQ,EAAE;QACvC6C,QAAQ,CAAC7C,MAAM,GAAG,CAAC,CAAC;MACtB;MAEA,IAAI8Q,YAAY,IAAI,OAAOA,YAAY,CAAC9Q,MAAM,KAAK,QAAQ,EAAE;QAC3D,KAAK,IAAInD,GAAG,IAAIiU,YAAY,CAAC9Q,MAAM,EAAE;UACnC,IAAI,EAAEnD,GAAG,IAAIgG,QAAQ,CAAC7C,MAAM,CAAC,IAAIgR,UAAU,CAAC3U,OAAO,CAACQ,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;YAC7DgG,QAAQ,CAAC7C,MAAM,CAACnD,GAAG,CAAC,GAAGiU,YAAY,CAAC9Q,MAAM,CAACnD,GAAG,CAAC;UACjD;QACF;MACF;MAEAgG,QAAQ,CAAC3C,IAAI,GAAGmJ,UAAU,CAACzG,MAAM,CAAC1C,IAAI,EAAE2C,QAAQ,CAAC7C,MAAM,EAAG,gBAAgB,GAAGxD,IAAI,GAAG,IAAK,CAAC;MAC1F,OAAOuU,YAAY,CAACnO,MAAM,EAAEC,QAAQ,EAAEC,cAAc,CAAC;IACvD,CAAC,MAAM,IAAID,QAAQ,CAAC3C,IAAI,EAAE;MACxB2C,QAAQ,CAAC7C,MAAM,GAAG,CAAC,CAAC;MACpB,KAAK,IAAIgF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsK,QAAQ,CAACzN,MAAM,EAAEmD,CAAC,EAAE,EAAE;QACxC,IAAI9E,IAAI,GAAGoP,QAAQ,CAACtK,CAAC,CAAC;QACtB,IAAIiM,QAAQ,GAAG1B,OAAO,CAACrP,IAAI,CAAC;QAC5B,IAAIgR,UAAU,CAACD,QAAQ,CAACd,KAAK,EAAEtN,QAAQ,CAAC3C,IAAI,EAAE2C,QAAQ,CAAC7C,MAAM,CAAC,EAAE;UAC9D,OAAO+Q,YAAY,CAACE,QAAQ,EAAEpO,QAAQ,EAAEC,cAAc,CAAC;QACzD;MACF;IACF;IACA;IACA,OAAOiO,YAAY,CAAC,IAAI,EAAElO,QAAQ,CAAC;EACrC;EAEA,SAASwN,QAAQA,CACfzN,MAAM,EACNC,QAAQ,EACR;IACA,IAAIsO,gBAAgB,GAAGvO,MAAM,CAACyN,QAAQ;IACtC,IAAIA,QAAQ,GAAG,OAAOc,gBAAgB,KAAK,UAAU,GACjDA,gBAAgB,CAACxO,WAAW,CAACC,MAAM,EAAEC,QAAQ,EAAE,IAAI,EAAEE,MAAM,CAAC,CAAC,GAC7DoO,gBAAgB;IAEpB,IAAI,OAAOd,QAAQ,KAAK,QAAQ,EAAE;MAChCA,QAAQ,GAAG;QAAEnQ,IAAI,EAAEmQ;MAAS,CAAC;IAC/B;IAEA,IAAI,CAACA,QAAQ,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;MAC7C,IAAI1U,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QACzCH,IAAI,CACF,KAAK,EAAG,2BAA2B,GAAIyM,IAAI,CAACvE,SAAS,CAACyM,QAAQ,CAChE,CAAC;MACH;MACA,OAAOU,YAAY,CAAC,IAAI,EAAElO,QAAQ,CAAC;IACrC;IAEA,IAAI0F,EAAE,GAAG8H,QAAQ;IACjB,IAAI7T,IAAI,GAAG+L,EAAE,CAAC/L,IAAI;IAClB,IAAI0D,IAAI,GAAGqI,EAAE,CAACrI,IAAI;IAClB,IAAIa,KAAK,GAAG8B,QAAQ,CAAC9B,KAAK;IAC1B,IAAIoC,IAAI,GAAGN,QAAQ,CAACM,IAAI;IACxB,IAAInD,MAAM,GAAG6C,QAAQ,CAAC7C,MAAM;IAC5Be,KAAK,GAAGwH,EAAE,CAAC6I,cAAc,CAAC,OAAO,CAAC,GAAG7I,EAAE,CAACxH,KAAK,GAAGA,KAAK;IACrDoC,IAAI,GAAGoF,EAAE,CAAC6I,cAAc,CAAC,MAAM,CAAC,GAAG7I,EAAE,CAACpF,IAAI,GAAGA,IAAI;IACjDnD,MAAM,GAAGuI,EAAE,CAAC6I,cAAc,CAAC,QAAQ,CAAC,GAAG7I,EAAE,CAACvI,MAAM,GAAGA,MAAM;IAEzD,IAAIxD,IAAI,EAAE;MACR;MACA,IAAI6U,YAAY,GAAG7B,OAAO,CAAChT,IAAI,CAAC;MAChC,IAAIb,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QACzCP,MAAM,CAAC+V,YAAY,EAAG,iCAAiC,GAAG7U,IAAI,GAAG,eAAgB,CAAC;MACpF;MACA,OAAOoM,KAAK,CAAC;QACXe,WAAW,EAAE,IAAI;QACjBnN,IAAI,EAAEA,IAAI;QACVuE,KAAK,EAAEA,KAAK;QACZoC,IAAI,EAAEA,IAAI;QACVnD,MAAM,EAAEA;MACV,CAAC,EAAEC,SAAS,EAAE4C,QAAQ,CAAC;IACzB,CAAC,MAAM,IAAI3C,IAAI,EAAE;MACf;MACA,IAAI2J,OAAO,GAAGyH,iBAAiB,CAACpR,IAAI,EAAE0C,MAAM,CAAC;MAC7C;MACA,IAAI2O,YAAY,GAAGlI,UAAU,CAACQ,OAAO,EAAE7J,MAAM,EAAG,6BAA6B,GAAG6J,OAAO,GAAG,IAAK,CAAC;MAChG;MACA,OAAOjB,KAAK,CAAC;QACXe,WAAW,EAAE,IAAI;QACjBzJ,IAAI,EAAEqR,YAAY;QAClBxQ,KAAK,EAAEA,KAAK;QACZoC,IAAI,EAAEA;MACR,CAAC,EAAElD,SAAS,EAAE4C,QAAQ,CAAC;IACzB,CAAC,MAAM;MACL,IAAIlH,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QACzCH,IAAI,CAAC,KAAK,EAAG,2BAA2B,GAAIyM,IAAI,CAACvE,SAAS,CAACyM,QAAQ,CAAG,CAAC;MACzE;MACA,OAAOU,YAAY,CAAC,IAAI,EAAElO,QAAQ,CAAC;IACrC;EACF;EAEA,SAAS4N,KAAKA,CACZ7N,MAAM,EACNC,QAAQ,EACRiN,OAAO,EACP;IACA,IAAI0B,WAAW,GAAGnI,UAAU,CAACyG,OAAO,EAAEjN,QAAQ,CAAC7C,MAAM,EAAG,4BAA4B,GAAG8P,OAAO,GAAG,IAAK,CAAC;IACvG,IAAI2B,YAAY,GAAG7I,KAAK,CAAC;MACvBe,WAAW,EAAE,IAAI;MACjBzJ,IAAI,EAAEsR;IACR,CAAC,CAAC;IACF,IAAIC,YAAY,EAAE;MAChB,IAAIzS,OAAO,GAAGyS,YAAY,CAACzS,OAAO;MAClC,IAAI0S,aAAa,GAAG1S,OAAO,CAACA,OAAO,CAAC6C,MAAM,GAAG,CAAC,CAAC;MAC/CgB,QAAQ,CAAC7C,MAAM,GAAGyR,YAAY,CAACzR,MAAM;MACrC,OAAO+Q,YAAY,CAACW,aAAa,EAAE7O,QAAQ,CAAC;IAC9C;IACA,OAAOkO,YAAY,CAAC,IAAI,EAAElO,QAAQ,CAAC;EACrC;EAEA,SAASkO,YAAYA,CACnBnO,MAAM,EACNC,QAAQ,EACRC,cAAc,EACd;IACA,IAAIF,MAAM,IAAIA,MAAM,CAACyN,QAAQ,EAAE;MAC7B,OAAOA,QAAQ,CAACzN,MAAM,EAAEE,cAAc,IAAID,QAAQ,CAAC;IACrD;IACA,IAAID,MAAM,IAAIA,MAAM,CAACkN,OAAO,EAAE;MAC5B,OAAOW,KAAK,CAAC7N,MAAM,EAAEC,QAAQ,EAAED,MAAM,CAACkN,OAAO,CAAC;IAChD;IACA,OAAOnN,WAAW,CAACC,MAAM,EAAEC,QAAQ,EAAEC,cAAc,EAAEC,MAAM,CAAC;EAC9D;EAEA,OAAO;IACL6F,KAAK,EAAEA,KAAK;IACZiI,SAAS,EAAEA;EACb,CAAC;AACH;AAEA,SAASK,UAAUA,CACjBf,KAAK,EACLjQ,IAAI,EACJF,MAAM,EACN;EACA,IAAIyG,CAAC,GAAGvG,IAAI,CAAC0I,KAAK,CAACuH,KAAK,CAAC;EAEzB,IAAI,CAAC1J,CAAC,EAAE;IACN,OAAO,KAAK;EACd,CAAC,MAAM,IAAI,CAACzG,MAAM,EAAE;IAClB,OAAO,IAAI;EACb;EAEA,KAAK,IAAIgF,CAAC,GAAG,CAAC,EAAE2M,GAAG,GAAGlL,CAAC,CAAC5E,MAAM,EAAEmD,CAAC,GAAG2M,GAAG,EAAE,EAAE3M,CAAC,EAAE;IAC5C,IAAInI,GAAG,GAAGsT,KAAK,CAAC/N,IAAI,CAAC4C,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI5F,GAAG,GAAG,OAAOqH,CAAC,CAACzB,CAAC,CAAC,KAAK,QAAQ,GAAGnE,kBAAkB,CAAC4F,CAAC,CAACzB,CAAC,CAAC,CAAC,GAAGyB,CAAC,CAACzB,CAAC,CAAC;IACpE,IAAInI,GAAG,EAAE;MACP;MACAmD,MAAM,CAACnD,GAAG,CAACL,IAAI,IAAI,WAAW,CAAC,GAAG4C,GAAG;IACvC;EACF;EAEA,OAAO,IAAI;AACb;AAEA,SAASkS,iBAAiBA,CAAEpR,IAAI,EAAE0C,MAAM,EAAE;EACxC,OAAO2B,WAAW,CAACrE,IAAI,EAAE0C,MAAM,CAACpF,MAAM,GAAGoF,MAAM,CAACpF,MAAM,CAAC0C,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC;AAC1E;;AAEA;;AAEA;AACA,IAAI0R,IAAI,GACN7C,SAAS,IAAIC,MAAM,CAAC6C,WAAW,IAAI7C,MAAM,CAAC6C,WAAW,CAACC,GAAG,GACrD9C,MAAM,CAAC6C,WAAW,GAClBE,IAAI;AAEV,SAASC,WAAWA,CAAA,EAAI;EACtB,OAAOJ,IAAI,CAACE,GAAG,CAAC,CAAC,CAACG,OAAO,CAAC,CAAC,CAAC;AAC9B;AAEA,IAAIC,IAAI,GAAGF,WAAW,CAAC,CAAC;AAExB,SAASG,WAAWA,CAAA,EAAI;EACtB,OAAOD,IAAI;AACb;AAEA,SAASE,WAAWA,CAAEvV,GAAG,EAAE;EACzB,OAAQqV,IAAI,GAAGrV,GAAG;AACpB;;AAEA;;AAEA,IAAIwV,aAAa,GAAGpW,MAAM,CAACmN,MAAM,CAAC,IAAI,CAAC;AAEvC,SAASkJ,WAAWA,CAAA,EAAI;EACtB;EACA,IAAI,mBAAmB,IAAItD,MAAM,CAACZ,OAAO,EAAE;IACzCY,MAAM,CAACZ,OAAO,CAACmE,iBAAiB,GAAG,QAAQ;EAC7C;EACA;EACA;EACA;EACA;EACA;EACA,IAAIC,eAAe,GAAGxD,MAAM,CAACnM,QAAQ,CAAC4P,QAAQ,GAAG,IAAI,GAAGzD,MAAM,CAACnM,QAAQ,CAAC6P,IAAI;EAC5E,IAAIC,YAAY,GAAG3D,MAAM,CAACnM,QAAQ,CAACmI,IAAI,CAACrK,OAAO,CAAC6R,eAAe,EAAE,EAAE,CAAC;EACpE;EACA,IAAII,SAAS,GAAGlW,MAAM,CAAC,CAAC,CAAC,EAAEsS,MAAM,CAACZ,OAAO,CAACyE,KAAK,CAAC;EAChDD,SAAS,CAAC/V,GAAG,GAAGsV,WAAW,CAAC,CAAC;EAC7BnD,MAAM,CAACZ,OAAO,CAAC0E,YAAY,CAACF,SAAS,EAAE,EAAE,EAAED,YAAY,CAAC;EACxD3D,MAAM,CAAC+D,gBAAgB,CAAC,UAAU,EAAE,UAAU1R,CAAC,EAAE;IAC/C2R,kBAAkB,CAAC,CAAC;IACpB,IAAI3R,CAAC,CAACwR,KAAK,IAAIxR,CAAC,CAACwR,KAAK,CAAChW,GAAG,EAAE;MAC1BuV,WAAW,CAAC/Q,CAAC,CAACwR,KAAK,CAAChW,GAAG,CAAC;IAC1B;EACF,CAAC,CAAC;AACJ;AAEA,SAASoW,YAAYA,CACnBlQ,MAAM,EACNqH,EAAE,EACF8I,IAAI,EACJC,KAAK,EACL;EACA,IAAI,CAACpQ,MAAM,CAACqQ,GAAG,EAAE;IACf;EACF;EAEA,IAAIC,QAAQ,GAAGtQ,MAAM,CAACC,OAAO,CAACsQ,cAAc;EAC5C,IAAI,CAACD,QAAQ,EAAE;IACb;EACF;EAEA,IAAI1X,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IACzCP,MAAM,CAAC,OAAO+X,QAAQ,KAAK,UAAU,EAAE,mCAAmC,CAAC;EAC7E;;EAEA;EACAtQ,MAAM,CAACqQ,GAAG,CAACG,SAAS,CAAC,YAAY;IAC/B,IAAIC,QAAQ,GAAGC,iBAAiB,CAAC,CAAC;IAClC,IAAIC,YAAY,GAAGL,QAAQ,CAACjX,IAAI,CAC9B2G,MAAM,EACNqH,EAAE,EACF8I,IAAI,EACJC,KAAK,GAAGK,QAAQ,GAAG,IACrB,CAAC;IAED,IAAI,CAACE,YAAY,EAAE;MACjB;IACF;IAEA,IAAI,OAAOA,YAAY,CAACC,IAAI,KAAK,UAAU,EAAE;MAC3CD,YAAY,CACTC,IAAI,CAAC,UAAUD,YAAY,EAAE;QAC5BE,gBAAgB,CAAEF,YAAY,EAAGF,QAAQ,CAAC;MAC5C,CAAC,CAAC,CACDK,KAAK,CAAC,UAAU7X,GAAG,EAAE;QACpB,IAAIL,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;UACzCP,MAAM,CAAC,KAAK,EAAEU,GAAG,CAACG,QAAQ,CAAC,CAAC,CAAC;QAC/B;MACF,CAAC,CAAC;IACN,CAAC,MAAM;MACLyX,gBAAgB,CAACF,YAAY,EAAEF,QAAQ,CAAC;IAC1C;EACF,CAAC,CAAC;AACJ;AAEA,SAASR,kBAAkBA,CAAA,EAAI;EAC7B,IAAInW,GAAG,GAAGsV,WAAW,CAAC,CAAC;EACvB,IAAItV,GAAG,EAAE;IACPwV,aAAa,CAACxV,GAAG,CAAC,GAAG;MACnB4F,CAAC,EAAEuM,MAAM,CAAC8E,WAAW;MACrBC,CAAC,EAAE/E,MAAM,CAACgF;IACZ,CAAC;EACH;AACF;AAEA,SAASP,iBAAiBA,CAAA,EAAI;EAC5B,IAAI5W,GAAG,GAAGsV,WAAW,CAAC,CAAC;EACvB,IAAItV,GAAG,EAAE;IACP,OAAOwV,aAAa,CAACxV,GAAG,CAAC;EAC3B;AACF;AAEA,SAASoX,kBAAkBA,CAAEC,EAAE,EAAEvN,MAAM,EAAE;EACvC,IAAIwN,KAAK,GAAGC,QAAQ,CAACC,eAAe;EACpC,IAAIC,OAAO,GAAGH,KAAK,CAACI,qBAAqB,CAAC,CAAC;EAC3C,IAAIC,MAAM,GAAGN,EAAE,CAACK,qBAAqB,CAAC,CAAC;EACvC,OAAO;IACL9R,CAAC,EAAE+R,MAAM,CAACC,IAAI,GAAGH,OAAO,CAACG,IAAI,GAAG9N,MAAM,CAAClE,CAAC;IACxCsR,CAAC,EAAES,MAAM,CAACE,GAAG,GAAGJ,OAAO,CAACI,GAAG,GAAG/N,MAAM,CAACoN;EACvC,CAAC;AACH;AAEA,SAASY,eAAeA,CAAExS,GAAG,EAAE;EAC7B,OAAOyS,QAAQ,CAACzS,GAAG,CAACM,CAAC,CAAC,IAAImS,QAAQ,CAACzS,GAAG,CAAC4R,CAAC,CAAC;AAC3C;AAEA,SAASc,iBAAiBA,CAAE1S,GAAG,EAAE;EAC/B,OAAO;IACLM,CAAC,EAAEmS,QAAQ,CAACzS,GAAG,CAACM,CAAC,CAAC,GAAGN,GAAG,CAACM,CAAC,GAAGuM,MAAM,CAAC8E,WAAW;IAC/CC,CAAC,EAAEa,QAAQ,CAACzS,GAAG,CAAC4R,CAAC,CAAC,GAAG5R,GAAG,CAAC4R,CAAC,GAAG/E,MAAM,CAACgF;EACtC,CAAC;AACH;AAEA,SAASc,eAAeA,CAAE3S,GAAG,EAAE;EAC7B,OAAO;IACLM,CAAC,EAAEmS,QAAQ,CAACzS,GAAG,CAACM,CAAC,CAAC,GAAGN,GAAG,CAACM,CAAC,GAAG,CAAC;IAC9BsR,CAAC,EAAEa,QAAQ,CAACzS,GAAG,CAAC4R,CAAC,CAAC,GAAG5R,GAAG,CAAC4R,CAAC,GAAG;EAC/B,CAAC;AACH;AAEA,SAASa,QAAQA,CAAElH,CAAC,EAAE;EACpB,OAAO,OAAOA,CAAC,KAAK,QAAQ;AAC9B;AAEA,IAAIqH,sBAAsB,GAAG,MAAM;AAEnC,SAASnB,gBAAgBA,CAAEF,YAAY,EAAEF,QAAQ,EAAE;EACjD,IAAIwB,QAAQ,GAAG,OAAOtB,YAAY,KAAK,QAAQ;EAC/C,IAAIsB,QAAQ,IAAI,OAAOtB,YAAY,CAACuB,QAAQ,KAAK,QAAQ,EAAE;IACzD;IACA;IACA,IAAIf,EAAE,GAAGa,sBAAsB,CAAC1M,IAAI,CAACqL,YAAY,CAACuB,QAAQ,CAAC,CAAC;IAAA,EACxDb,QAAQ,CAACc,cAAc,CAACxB,YAAY,CAACuB,QAAQ,CAAC7P,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAAA,EACxDgP,QAAQ,CAACe,aAAa,CAACzB,YAAY,CAACuB,QAAQ,CAAC;IAEjD,IAAIf,EAAE,EAAE;MACN,IAAIvN,MAAM,GACR+M,YAAY,CAAC/M,MAAM,IAAI,OAAO+M,YAAY,CAAC/M,MAAM,KAAK,QAAQ,GAC1D+M,YAAY,CAAC/M,MAAM,GACnB,CAAC,CAAC;MACRA,MAAM,GAAGmO,eAAe,CAACnO,MAAM,CAAC;MAChC6M,QAAQ,GAAGS,kBAAkB,CAACC,EAAE,EAAEvN,MAAM,CAAC;IAC3C,CAAC,MAAM,IAAIgO,eAAe,CAACjB,YAAY,CAAC,EAAE;MACxCF,QAAQ,GAAGqB,iBAAiB,CAACnB,YAAY,CAAC;IAC5C;EACF,CAAC,MAAM,IAAIsB,QAAQ,IAAIL,eAAe,CAACjB,YAAY,CAAC,EAAE;IACpDF,QAAQ,GAAGqB,iBAAiB,CAACnB,YAAY,CAAC;EAC5C;EAEA,IAAIF,QAAQ,EAAE;IACZxE,MAAM,CAACoG,QAAQ,CAAC5B,QAAQ,CAAC/Q,CAAC,EAAE+Q,QAAQ,CAACO,CAAC,CAAC;EACzC;AACF;;AAEA;;AAEA,IAAIsB,iBAAiB,GACnBtG,SAAS,IACR,YAAY;EACX,IAAIuG,EAAE,GAAGtG,MAAM,CAACuG,SAAS,CAACC,SAAS;EAEnC,IACE,CAACF,EAAE,CAACjZ,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAIiZ,EAAE,CAACjZ,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KACpEiZ,EAAE,CAACjZ,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAClCiZ,EAAE,CAACjZ,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAC3BiZ,EAAE,CAACjZ,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAClC;IACA,OAAO,KAAK;EACd;EAEA,OAAO2S,MAAM,CAACZ,OAAO,IAAI,OAAOY,MAAM,CAACZ,OAAO,CAACqH,SAAS,KAAK,UAAU;AACzE,CAAC,CAAE,CAAC;AAEN,SAASA,SAASA,CAAEC,GAAG,EAAE/U,OAAO,EAAE;EAChCqS,kBAAkB,CAAC,CAAC;EACpB;EACA;EACA,IAAI5E,OAAO,GAAGY,MAAM,CAACZ,OAAO;EAC5B,IAAI;IACF,IAAIzN,OAAO,EAAE;MACX;MACA,IAAIiS,SAAS,GAAGlW,MAAM,CAAC,CAAC,CAAC,EAAE0R,OAAO,CAACyE,KAAK,CAAC;MACzCD,SAAS,CAAC/V,GAAG,GAAGsV,WAAW,CAAC,CAAC;MAC7B/D,OAAO,CAAC0E,YAAY,CAACF,SAAS,EAAE,EAAE,EAAE8C,GAAG,CAAC;IAC1C,CAAC,MAAM;MACLtH,OAAO,CAACqH,SAAS,CAAC;QAAE5Y,GAAG,EAAEuV,WAAW,CAACJ,WAAW,CAAC,CAAC;MAAE,CAAC,EAAE,EAAE,EAAE0D,GAAG,CAAC;IACjE;EACF,CAAC,CAAC,OAAOrU,CAAC,EAAE;IACV2N,MAAM,CAACnM,QAAQ,CAAClC,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC+U,GAAG,CAAC;EACtD;AACF;AAEA,SAAS5C,YAAYA,CAAE4C,GAAG,EAAE;EAC1BD,SAAS,CAACC,GAAG,EAAE,IAAI,CAAC;AACtB;;AAEA;;AAEA,SAASC,QAAQA,CAAEC,KAAK,EAAEC,EAAE,EAAEC,EAAE,EAAE;EAChC,IAAIC,IAAI,GAAG,SAAAA,CAAU1P,KAAK,EAAE;IAC1B,IAAIA,KAAK,IAAIuP,KAAK,CAAC/T,MAAM,EAAE;MACzBiU,EAAE,CAAC,CAAC;IACN,CAAC,MAAM;MACL,IAAIF,KAAK,CAACvP,KAAK,CAAC,EAAE;QAChBwP,EAAE,CAACD,KAAK,CAACvP,KAAK,CAAC,EAAE,YAAY;UAC3B0P,IAAI,CAAC1P,KAAK,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC;MACJ,CAAC,MAAM;QACL0P,IAAI,CAAC1P,KAAK,GAAG,CAAC,CAAC;MACjB;IACF;EACF,CAAC;EACD0P,IAAI,CAAC,CAAC,CAAC;AACT;;AAEA;;AAEA,SAASC,sBAAsBA,CAAEhX,OAAO,EAAE;EACxC,OAAO,UAAUoL,EAAE,EAAE8I,IAAI,EAAEtM,IAAI,EAAE;IAC/B,IAAIqP,QAAQ,GAAG,KAAK;IACpB,IAAIC,OAAO,GAAG,CAAC;IACf,IAAIC,KAAK,GAAG,IAAI;IAEhBC,iBAAiB,CAACpX,OAAO,EAAE,UAAUqX,GAAG,EAAEhZ,CAAC,EAAEuL,KAAK,EAAE/L,GAAG,EAAE;MACvD;MACA;MACA;MACA;MACA;MACA,IAAI,OAAOwZ,GAAG,KAAK,UAAU,IAAIA,GAAG,CAACC,GAAG,KAAKrW,SAAS,EAAE;QACtDgW,QAAQ,GAAG,IAAI;QACfC,OAAO,EAAE;QAET,IAAInL,OAAO,GAAGwL,IAAI,CAAC,UAAUC,WAAW,EAAE;UACxC,IAAIC,UAAU,CAACD,WAAW,CAAC,EAAE;YAC3BA,WAAW,GAAGA,WAAW,CAACrZ,OAAO;UACnC;UACA;UACAkZ,GAAG,CAACK,QAAQ,GAAG,OAAOF,WAAW,KAAK,UAAU,GAC5CA,WAAW,GACXnJ,IAAI,CAAC3Q,MAAM,CAAC8Z,WAAW,CAAC;UAC5B5N,KAAK,CAAC3J,UAAU,CAACpC,GAAG,CAAC,GAAG2Z,WAAW;UACnCN,OAAO,EAAE;UACT,IAAIA,OAAO,IAAI,CAAC,EAAE;YAChBtP,IAAI,CAAC,CAAC;UACR;QACF,CAAC,CAAC;QAEF,IAAI+P,MAAM,GAAGJ,IAAI,CAAC,UAAUK,MAAM,EAAE;UAClC,IAAIC,GAAG,GAAG,oCAAoC,GAAGha,GAAG,GAAG,IAAI,GAAG+Z,MAAM;UACpEjb,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAIH,IAAI,CAAC,KAAK,EAAEmb,GAAG,CAAC;UACzD,IAAI,CAACV,KAAK,EAAE;YACVA,KAAK,GAAGpa,OAAO,CAAC6a,MAAM,CAAC,GACnBA,MAAM,GACN,IAAInb,KAAK,CAACob,GAAG,CAAC;YAClBjQ,IAAI,CAACuP,KAAK,CAAC;UACb;QACF,CAAC,CAAC;QAEF,IAAI7U,GAAG;QACP,IAAI;UACFA,GAAG,GAAG+U,GAAG,CAACtL,OAAO,EAAE4L,MAAM,CAAC;QAC5B,CAAC,CAAC,OAAOtV,CAAC,EAAE;UACVsV,MAAM,CAACtV,CAAC,CAAC;QACX;QACA,IAAIC,GAAG,EAAE;UACP,IAAI,OAAOA,GAAG,CAACqS,IAAI,KAAK,UAAU,EAAE;YAClCrS,GAAG,CAACqS,IAAI,CAAC5I,OAAO,EAAE4L,MAAM,CAAC;UAC3B,CAAC,MAAM;YACL;YACA,IAAIG,IAAI,GAAGxV,GAAG,CAACzC,SAAS;YACxB,IAAIiY,IAAI,IAAI,OAAOA,IAAI,CAACnD,IAAI,KAAK,UAAU,EAAE;cAC3CmD,IAAI,CAACnD,IAAI,CAAC5I,OAAO,EAAE4L,MAAM,CAAC;YAC5B;UACF;QACF;MACF;IACF,CAAC,CAAC;IAEF,IAAI,CAACV,QAAQ,EAAE;MAAErP,IAAI,CAAC,CAAC;IAAE;EAC3B,CAAC;AACH;AAEA,SAASwP,iBAAiBA,CACxBpX,OAAO,EACP6W,EAAE,EACF;EACA,OAAOkB,OAAO,CAAC/X,OAAO,CAACqD,GAAG,CAAC,UAAUoE,CAAC,EAAE;IACtC,OAAOxK,MAAM,CAACmG,IAAI,CAACqE,CAAC,CAACxH,UAAU,CAAC,CAACoD,GAAG,CAAC,UAAUxF,GAAG,EAAE;MAAE,OAAOgZ,EAAE,CAC7DpP,CAAC,CAACxH,UAAU,CAACpC,GAAG,CAAC,EACjB4J,CAAC,CAACnH,SAAS,CAACzC,GAAG,CAAC,EAChB4J,CAAC,EAAE5J,GACL,CAAC;IAAE,CAAC,CAAC;EACP,CAAC,CAAC,CAAC;AACL;AAEA,SAASka,OAAOA,CAAEvR,GAAG,EAAE;EACrB,OAAOzD,KAAK,CAAC7F,SAAS,CAAC8a,MAAM,CAACC,KAAK,CAAC,EAAE,EAAEzR,GAAG,CAAC;AAC9C;AAEA,IAAI0R,SAAS,GACX,OAAOC,MAAM,KAAK,UAAU,IAC5B,OAAOA,MAAM,CAACC,WAAW,KAAK,QAAQ;AAExC,SAASX,UAAUA,CAAEtU,GAAG,EAAE;EACxB,OAAOA,GAAG,CAACkV,UAAU,IAAKH,SAAS,IAAI/U,GAAG,CAACgV,MAAM,CAACC,WAAW,CAAC,KAAK,QAAS;AAC9E;;AAEA;AACA;AACA;AACA;AACA,SAASb,IAAIA,CAAEV,EAAE,EAAE;EACjB,IAAIyB,MAAM,GAAG,KAAK;EAClB,OAAO,YAAY;IACjB,IAAIC,IAAI,GAAG,EAAE;MAAE5F,GAAG,GAAG6F,SAAS,CAAC3V,MAAM;IACrC,OAAQ8P,GAAG,EAAE,EAAG4F,IAAI,CAAE5F,GAAG,CAAE,GAAG6F,SAAS,CAAE7F,GAAG,CAAE;IAE9C,IAAI2F,MAAM,EAAE;MAAE;IAAO;IACrBA,MAAM,GAAG,IAAI;IACb,OAAOzB,EAAE,CAACoB,KAAK,CAAC,IAAI,EAAEM,IAAI,CAAC;EAC7B,CAAC;AACH;AAEA,IAAIE,oBAAoB,GAAG,aAAc,UAAUhc,KAAK,EAAE;EACxD,SAASgc,oBAAoBA,CAAEC,kBAAkB,EAAE;IACjDjc,KAAK,CAACW,IAAI,CAAC,IAAI,CAAC;IAChB,IAAI,CAACI,IAAI,GAAG,IAAI,CAACC,KAAK,GAAG,sBAAsB;IAC/C;IACA,IAAI,CAACjB,OAAO,GAAG,oCAAoC,GAAIkc,kBAAkB,CAACtU,QAAS,GAAG,oBAAoB;IAC1G;IACAnH,MAAM,CAACqS,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;MACnC9K,KAAK,EAAE,IAAI/H,KAAK,CAAC,CAAC,CAACoJ,KAAK;MACxB8S,QAAQ,EAAE,IAAI;MACdC,YAAY,EAAE;IAChB,CAAC,CAAC;IACF;IACA;IACA;EACF;EAEA,IAAKnc,KAAK,EAAGgc,oBAAoB,CAACI,SAAS,GAAGpc,KAAK;EACnDgc,oBAAoB,CAACvb,SAAS,GAAGD,MAAM,CAACmN,MAAM,CAAE3N,KAAK,IAAIA,KAAK,CAACS,SAAU,CAAC;EAC1Eub,oBAAoB,CAACvb,SAAS,CAACK,WAAW,GAAGkb,oBAAoB;EAEjE,OAAOA,oBAAoB;AAC7B,CAAC,CAAChc,KAAK,CAAE;;AAET;AACAgc,oBAAoB,CAAChb,KAAK,GAAG,sBAAsB;;AAEnD;;AAEA,IAAIqb,OAAO,GAAG,SAASA,OAAOA,CAAE/U,MAAM,EAAE0B,IAAI,EAAE;EAC5C,IAAI,CAAC1B,MAAM,GAAGA,MAAM;EACpB,IAAI,CAAC0B,IAAI,GAAGsT,aAAa,CAACtT,IAAI,CAAC;EAC/B;EACA,IAAI,CAACpF,OAAO,GAAGoE,KAAK;EACpB,IAAI,CAACyS,OAAO,GAAG,IAAI;EACnB,IAAI,CAAC8B,KAAK,GAAG,KAAK;EAClB,IAAI,CAACC,QAAQ,GAAG,EAAE;EAClB,IAAI,CAACC,aAAa,GAAG,EAAE;EACvB,IAAI,CAACC,QAAQ,GAAG,EAAE;AACpB,CAAC;AAEDL,OAAO,CAAC5b,SAAS,CAACkc,MAAM,GAAG,SAASA,MAAMA,CAAEtC,EAAE,EAAE;EAC9C,IAAI,CAACA,EAAE,GAAGA,EAAE;AACd,CAAC;AAEDgC,OAAO,CAAC5b,SAAS,CAACmc,OAAO,GAAG,SAASA,OAAOA,CAAEvC,EAAE,EAAEwC,OAAO,EAAE;EACzD,IAAI,IAAI,CAACN,KAAK,EAAE;IACdlC,EAAE,CAAC,CAAC;EACN,CAAC,MAAM;IACL,IAAI,CAACmC,QAAQ,CAAChW,IAAI,CAAC6T,EAAE,CAAC;IACtB,IAAIwC,OAAO,EAAE;MACX,IAAI,CAACJ,aAAa,CAACjW,IAAI,CAACqW,OAAO,CAAC;IAClC;EACF;AACF,CAAC;AAEDR,OAAO,CAAC5b,SAAS,CAACqc,OAAO,GAAG,SAASA,OAAOA,CAAED,OAAO,EAAE;EACrD,IAAI,CAACH,QAAQ,CAAClW,IAAI,CAACqW,OAAO,CAAC;AAC7B,CAAC;AAEDR,OAAO,CAAC5b,SAAS,CAACsc,YAAY,GAAG,SAASA,YAAYA,CACpD3V,QAAQ,EACR4V,UAAU,EACVC,OAAO,EACP;EACE,IAAI7N,MAAM,GAAG,IAAI;EAEnB,IAAIhN,KAAK,GAAG,IAAI,CAACkF,MAAM,CAAC6F,KAAK,CAAC/F,QAAQ,EAAE,IAAI,CAACxD,OAAO,CAAC;EACrD,IAAI,CAACsZ,iBAAiB,CACpB9a,KAAK,EACL,YAAY;IACVgN,MAAM,CAAC+N,WAAW,CAAC/a,KAAK,CAAC;IACzB4a,UAAU,IAAIA,UAAU,CAAC5a,KAAK,CAAC;IAC/BgN,MAAM,CAACgO,SAAS,CAAC,CAAC;;IAElB;IACA,IAAI,CAAChO,MAAM,CAACmN,KAAK,EAAE;MACjBnN,MAAM,CAACmN,KAAK,GAAG,IAAI;MACnBnN,MAAM,CAACoN,QAAQ,CAACxW,OAAO,CAAC,UAAUqU,EAAE,EAAE;QACpCA,EAAE,CAACjY,KAAK,CAAC;MACX,CAAC,CAAC;IACJ;EACF,CAAC,EACD,UAAU7B,GAAG,EAAE;IACb,IAAI0c,OAAO,EAAE;MACXA,OAAO,CAAC1c,GAAG,CAAC;IACd;IACA,IAAIA,GAAG,IAAI,CAAC6O,MAAM,CAACmN,KAAK,EAAE;MACxBnN,MAAM,CAACmN,KAAK,GAAG,IAAI;MACnBnN,MAAM,CAACqN,aAAa,CAACzW,OAAO,CAAC,UAAUqU,EAAE,EAAE;QACzCA,EAAE,CAAC9Z,GAAG,CAAC;MACT,CAAC,CAAC;IACJ;EACF,CACF,CAAC;AACH,CAAC;AAED8b,OAAO,CAAC5b,SAAS,CAACyc,iBAAiB,GAAG,SAASA,iBAAiBA,CAAE9a,KAAK,EAAE4a,UAAU,EAAEC,OAAO,EAAE;EAC1F,IAAI7N,MAAM,GAAG,IAAI;EAEnB,IAAIxL,OAAO,GAAG,IAAI,CAACA,OAAO;EAC1B,IAAIyZ,KAAK,GAAG,SAAAA,CAAU9c,GAAG,EAAE;IACzB;IACA;IACA;IACA;IACA,IAAI,CAACM,eAAe,CAACmb,oBAAoB,EAAEzb,GAAG,CAAC,IAAID,OAAO,CAACC,GAAG,CAAC,EAAE;MAC/D,IAAI6O,MAAM,CAACsN,QAAQ,CAACtW,MAAM,EAAE;QAC1BgJ,MAAM,CAACsN,QAAQ,CAAC1W,OAAO,CAAC,UAAUqU,EAAE,EAAE;UACpCA,EAAE,CAAC9Z,GAAG,CAAC;QACT,CAAC,CAAC;MACJ,CAAC,MAAM;QACLN,IAAI,CAAC,KAAK,EAAE,yCAAyC,CAAC;QACtDI,OAAO,CAACqa,KAAK,CAACna,GAAG,CAAC;MACpB;IACF;IACA0c,OAAO,IAAIA,OAAO,CAAC1c,GAAG,CAAC;EACzB,CAAC;EACD,IACE6H,WAAW,CAAChG,KAAK,EAAEwB,OAAO,CAAC;EAC3B;EACAxB,KAAK,CAACmB,OAAO,CAAC6C,MAAM,KAAKxC,OAAO,CAACL,OAAO,CAAC6C,MAAM,EAC/C;IACA,IAAI,CAACgX,SAAS,CAAC,CAAC;IAChB,OAAOC,KAAK,CAAC,IAAIrB,oBAAoB,CAAC5Z,KAAK,CAAC,CAAC;EAC/C;EAEA,IAAIP,GAAG,GAAGyb,YAAY,CACpB,IAAI,CAAC1Z,OAAO,CAACL,OAAO,EACpBnB,KAAK,CAACmB,OACR,CAAC;EACC,IAAIga,OAAO,GAAG1b,GAAG,CAAC0b,OAAO;EACzB,IAAIC,WAAW,GAAG3b,GAAG,CAAC2b,WAAW;EACjC,IAAIC,SAAS,GAAG5b,GAAG,CAAC4b,SAAS;EAE/B,IAAItD,KAAK,GAAG,EAAE,CAACoB,MAAM;EACnB;EACAmC,kBAAkB,CAACF,WAAW,CAAC;EAC/B;EACA,IAAI,CAAClW,MAAM,CAACqW,WAAW;EACvB;EACAC,kBAAkB,CAACL,OAAO,CAAC;EAC3B;EACAE,SAAS,CAAC7W,GAAG,CAAC,UAAUoE,CAAC,EAAE;IAAE,OAAOA,CAAC,CAAC6J,WAAW;EAAE,CAAC,CAAC;EACrD;EACA0F,sBAAsB,CAACkD,SAAS,CAClC,CAAC;EAED,IAAI,CAAChD,OAAO,GAAGrY,KAAK;EACpB,IAAIyb,QAAQ,GAAG,SAAAA,CAAU/Z,IAAI,EAAEqH,IAAI,EAAE;IACnC,IAAIiE,MAAM,CAACqL,OAAO,KAAKrY,KAAK,EAAE;MAC5B,OAAOib,KAAK,CAAC,CAAC;IAChB;IACA,IAAI;MACFvZ,IAAI,CAAC1B,KAAK,EAAEwB,OAAO,EAAE,UAAU+K,EAAE,EAAE;QACjC,IAAIA,EAAE,KAAK,KAAK,IAAIrO,OAAO,CAACqO,EAAE,CAAC,EAAE;UAC/B;UACAS,MAAM,CAACgO,SAAS,CAAC,IAAI,CAAC;UACtBC,KAAK,CAAC1O,EAAE,CAAC;QACX,CAAC,MAAM,IACL,OAAOA,EAAE,KAAK,QAAQ,IACrB,OAAOA,EAAE,KAAK,QAAQ,KACpB,OAAOA,EAAE,CAAClK,IAAI,KAAK,QAAQ,IAAI,OAAOkK,EAAE,CAAC5N,IAAI,KAAK,QAAQ,CAAE,EAC/D;UACA;UACAsc,KAAK,CAAC,CAAC;UACP,IAAI,OAAO1O,EAAE,KAAK,QAAQ,IAAIA,EAAE,CAACzJ,OAAO,EAAE;YACxCkK,MAAM,CAAClK,OAAO,CAACyJ,EAAE,CAAC;UACpB,CAAC,MAAM;YACLS,MAAM,CAAC5I,IAAI,CAACmI,EAAE,CAAC;UACjB;QACF,CAAC,MAAM;UACL;UACAxD,IAAI,CAACwD,EAAE,CAAC;QACV;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,OAAO/I,CAAC,EAAE;MACVyX,KAAK,CAACzX,CAAC,CAAC;IACV;EACF,CAAC;EAEDsU,QAAQ,CAACC,KAAK,EAAE0D,QAAQ,EAAE,YAAY;IACpC,IAAIC,YAAY,GAAG,EAAE;IACrB,IAAIC,OAAO,GAAG,SAAAA,CAAA,EAAY;MAAE,OAAO3O,MAAM,CAACxL,OAAO,KAAKxB,KAAK;IAAE,CAAC;IAC9D;IACA;IACA,IAAI4b,WAAW,GAAGC,kBAAkB,CAACR,SAAS,EAAEK,YAAY,EAAEC,OAAO,CAAC;IACtE,IAAI5D,KAAK,GAAG6D,WAAW,CAACzC,MAAM,CAACnM,MAAM,CAAC9H,MAAM,CAAC4W,YAAY,CAAC;IAC1DhE,QAAQ,CAACC,KAAK,EAAE0D,QAAQ,EAAE,YAAY;MACpC,IAAIzO,MAAM,CAACqL,OAAO,KAAKrY,KAAK,EAAE;QAC5B,OAAOib,KAAK,CAAC,CAAC;MAChB;MACAjO,MAAM,CAACqL,OAAO,GAAG,IAAI;MACrBuC,UAAU,CAAC5a,KAAK,CAAC;MACjB,IAAIgN,MAAM,CAAC9H,MAAM,CAACqQ,GAAG,EAAE;QACrBvI,MAAM,CAAC9H,MAAM,CAACqQ,GAAG,CAACG,SAAS,CAAC,YAAY;UACtCgG,YAAY,CAAC9X,OAAO,CAAC,UAAUqU,EAAE,EAAE;YACjCA,EAAE,CAAC,CAAC;UACN,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC;AAEDgC,OAAO,CAAC5b,SAAS,CAAC0c,WAAW,GAAG,SAASA,WAAWA,CAAE/a,KAAK,EAAE;EAC3D,IAAI+b,IAAI,GAAG,IAAI,CAACva,OAAO;EACvB,IAAI,CAACA,OAAO,GAAGxB,KAAK;EACpB,IAAI,CAACiY,EAAE,IAAI,IAAI,CAACA,EAAE,CAACjY,KAAK,CAAC;EACzB,IAAI,CAACkF,MAAM,CAAC8W,UAAU,CAACpY,OAAO,CAAC,UAAUlC,IAAI,EAAE;IAC7CA,IAAI,IAAIA,IAAI,CAAC1B,KAAK,EAAE+b,IAAI,CAAC;EAC3B,CAAC,CAAC;AACJ,CAAC;AAED,SAAS7B,aAAaA,CAAEtT,IAAI,EAAE;EAC5B,IAAI,CAACA,IAAI,EAAE;IACT,IAAIsK,SAAS,EAAE;MACb;MACA,IAAI+K,MAAM,GAAG1F,QAAQ,CAACe,aAAa,CAAC,MAAM,CAAC;MAC3C1Q,IAAI,GAAIqV,MAAM,IAAIA,MAAM,CAAC5M,YAAY,CAAC,MAAM,CAAC,IAAK,GAAG;MACrD;MACAzI,IAAI,GAAGA,IAAI,CAAC9D,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;IAC/C,CAAC,MAAM;MACL8D,IAAI,GAAG,GAAG;IACZ;EACF;EACA;EACA,IAAIA,IAAI,CAACG,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IAC1BH,IAAI,GAAG,GAAG,GAAGA,IAAI;EACnB;EACA;EACA,OAAOA,IAAI,CAAC9D,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAChC;AAEA,SAASoY,YAAYA,CACnB1Z,OAAO,EACPuH,IAAI,EACJ;EACA,IAAI5B,CAAC;EACL,IAAI+U,GAAG,GAAGC,IAAI,CAACD,GAAG,CAAC1a,OAAO,CAACwC,MAAM,EAAE+E,IAAI,CAAC/E,MAAM,CAAC;EAC/C,KAAKmD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+U,GAAG,EAAE/U,CAAC,EAAE,EAAE;IACxB,IAAI3F,OAAO,CAAC2F,CAAC,CAAC,KAAK4B,IAAI,CAAC5B,CAAC,CAAC,EAAE;MAC1B;IACF;EACF;EACA,OAAO;IACLgU,OAAO,EAAEpS,IAAI,CAACxB,KAAK,CAAC,CAAC,EAAEJ,CAAC,CAAC;IACzBkU,SAAS,EAAEtS,IAAI,CAACxB,KAAK,CAACJ,CAAC,CAAC;IACxBiU,WAAW,EAAE5Z,OAAO,CAAC+F,KAAK,CAACJ,CAAC;EAC9B,CAAC;AACH;AAEA,SAASiV,aAAaA,CACpBC,OAAO,EACP1d,IAAI,EACJ2d,IAAI,EACJC,OAAO,EACP;EACA,IAAIC,MAAM,GAAGjE,iBAAiB,CAAC8D,OAAO,EAAE,UAAU7D,GAAG,EAAEiE,QAAQ,EAAE1R,KAAK,EAAE/L,GAAG,EAAE;IAC3E,IAAI0d,KAAK,GAAGC,YAAY,CAACnE,GAAG,EAAE7Z,IAAI,CAAC;IACnC,IAAI+d,KAAK,EAAE;MACT,OAAOxY,KAAK,CAACC,OAAO,CAACuY,KAAK,CAAC,GACvBA,KAAK,CAAClY,GAAG,CAAC,UAAUkY,KAAK,EAAE;QAAE,OAAOJ,IAAI,CAACI,KAAK,EAAED,QAAQ,EAAE1R,KAAK,EAAE/L,GAAG,CAAC;MAAE,CAAC,CAAC,GACzEsd,IAAI,CAACI,KAAK,EAAED,QAAQ,EAAE1R,KAAK,EAAE/L,GAAG,CAAC;IACvC;EACF,CAAC,CAAC;EACF,OAAOka,OAAO,CAACqD,OAAO,GAAGC,MAAM,CAACD,OAAO,CAAC,CAAC,GAAGC,MAAM,CAAC;AACrD;AAEA,SAASG,YAAYA,CACnBnE,GAAG,EACHxZ,GAAG,EACH;EACA,IAAI,OAAOwZ,GAAG,KAAK,UAAU,EAAE;IAC7B;IACAA,GAAG,GAAGhJ,IAAI,CAAC3Q,MAAM,CAAC2Z,GAAG,CAAC;EACxB;EACA,OAAOA,GAAG,CAACrT,OAAO,CAACnG,GAAG,CAAC;AACzB;AAEA,SAASsc,kBAAkBA,CAAEF,WAAW,EAAE;EACxC,OAAOgB,aAAa,CAAChB,WAAW,EAAE,kBAAkB,EAAEwB,SAAS,EAAE,IAAI,CAAC;AACxE;AAEA,SAASpB,kBAAkBA,CAAEL,OAAO,EAAE;EACpC,OAAOiB,aAAa,CAACjB,OAAO,EAAE,mBAAmB,EAAEyB,SAAS,CAAC;AAC/D;AAEA,SAASA,SAASA,CAAEF,KAAK,EAAED,QAAQ,EAAE;EACnC,IAAIA,QAAQ,EAAE;IACZ,OAAO,SAASI,eAAeA,CAAA,EAAI;MACjC,OAAOH,KAAK,CAACtD,KAAK,CAACqD,QAAQ,EAAE9C,SAAS,CAAC;IACzC,CAAC;EACH;AACF;AAEA,SAASkC,kBAAkBA,CACzBR,SAAS,EACTyB,GAAG,EACHnB,OAAO,EACP;EACA,OAAOS,aAAa,CAClBf,SAAS,EACT,kBAAkB,EAClB,UAAUqB,KAAK,EAAEld,CAAC,EAAEuL,KAAK,EAAE/L,GAAG,EAAE;IAC9B,OAAO+d,cAAc,CAACL,KAAK,EAAE3R,KAAK,EAAE/L,GAAG,EAAE8d,GAAG,EAAEnB,OAAO,CAAC;EACxD,CACF,CAAC;AACH;AAEA,SAASoB,cAAcA,CACrBL,KAAK,EACL3R,KAAK,EACL/L,GAAG,EACH8d,GAAG,EACHnB,OAAO,EACP;EACA,OAAO,SAASqB,eAAeA,CAAEzQ,EAAE,EAAE8I,IAAI,EAAEtM,IAAI,EAAE;IAC/C,OAAO2T,KAAK,CAACnQ,EAAE,EAAE8I,IAAI,EAAE,UAAU4C,EAAE,EAAE;MACnC,IAAI,OAAOA,EAAE,KAAK,UAAU,EAAE;QAC5B6E,GAAG,CAAC1Y,IAAI,CAAC,YAAY;UACnB;UACA;UACA;UACA;UACA;UACA6Y,IAAI,CAAChF,EAAE,EAAElN,KAAK,CAACtJ,SAAS,EAAEzC,GAAG,EAAE2c,OAAO,CAAC;QACzC,CAAC,CAAC;MACJ;MACA5S,IAAI,CAACkP,EAAE,CAAC;IACV,CAAC,CAAC;EACJ,CAAC;AACH;AAEA,SAASgF,IAAIA,CACXhF,EAAE;AAAE;AACJxW,SAAS,EACTzC,GAAG,EACH2c,OAAO,EACP;EACA,IACEla,SAAS,CAACzC,GAAG,CAAC,IACd,CAACyC,SAAS,CAACzC,GAAG,CAAC,CAACke,iBAAiB,CAAC;EAAA,EAClC;IACAjF,EAAE,CAACxW,SAAS,CAACzC,GAAG,CAAC,CAAC;EACpB,CAAC,MAAM,IAAI2c,OAAO,CAAC,CAAC,EAAE;IACpBwB,UAAU,CAAC,YAAY;MACrBF,IAAI,CAAChF,EAAE,EAAExW,SAAS,EAAEzC,GAAG,EAAE2c,OAAO,CAAC;IACnC,CAAC,EAAE,EAAE,CAAC;EACR;AACF;;AAEA;;AAEA,IAAIyB,YAAY,GAAG,aAAc,UAAUnD,OAAO,EAAE;EAClD,SAASmD,YAAYA,CAAElY,MAAM,EAAE0B,IAAI,EAAE;IACnC,IAAIoG,MAAM,GAAG,IAAI;IAEjBiN,OAAO,CAAC1b,IAAI,CAAC,IAAI,EAAE2G,MAAM,EAAE0B,IAAI,CAAC;IAEhC,IAAIyW,YAAY,GAAGnY,MAAM,CAACC,OAAO,CAACsQ,cAAc;IAChD,IAAI6H,cAAc,GAAG9F,iBAAiB,IAAI6F,YAAY;IAEtD,IAAIC,cAAc,EAAE;MAClB7I,WAAW,CAAC,CAAC;IACf;IAEA,IAAI8I,YAAY,GAAGC,WAAW,CAAC,IAAI,CAAC5W,IAAI,CAAC;IACzCuK,MAAM,CAAC+D,gBAAgB,CAAC,UAAU,EAAE,UAAU1R,CAAC,EAAE;MAC/C,IAAIhC,OAAO,GAAGwL,MAAM,CAACxL,OAAO;;MAE5B;MACA;MACA,IAAIwD,QAAQ,GAAGwY,WAAW,CAACxQ,MAAM,CAACpG,IAAI,CAAC;MACvC,IAAIoG,MAAM,CAACxL,OAAO,KAAKoE,KAAK,IAAIZ,QAAQ,KAAKuY,YAAY,EAAE;QACzD;MACF;MAEAvQ,MAAM,CAAC2N,YAAY,CAAC3V,QAAQ,EAAE,UAAUhF,KAAK,EAAE;QAC7C,IAAIsd,cAAc,EAAE;UAClBlI,YAAY,CAAClQ,MAAM,EAAElF,KAAK,EAAEwB,OAAO,EAAE,IAAI,CAAC;QAC5C;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA,IAAKyY,OAAO,EAAGmD,YAAY,CAACpD,SAAS,GAAGC,OAAO;EAC/CmD,YAAY,CAAC/e,SAAS,GAAGD,MAAM,CAACmN,MAAM,CAAE0O,OAAO,IAAIA,OAAO,CAAC5b,SAAU,CAAC;EACtE+e,YAAY,CAAC/e,SAAS,CAACK,WAAW,GAAG0e,YAAY;EAEjDA,YAAY,CAAC/e,SAAS,CAACof,EAAE,GAAG,SAASA,EAAEA,CAAEC,CAAC,EAAE;IAC1CvM,MAAM,CAACZ,OAAO,CAACkN,EAAE,CAACC,CAAC,CAAC;EACtB,CAAC;EAEDN,YAAY,CAAC/e,SAAS,CAAC+F,IAAI,GAAG,SAASA,IAAIA,CAAEY,QAAQ,EAAE4V,UAAU,EAAEC,OAAO,EAAE;IAC1E,IAAI7N,MAAM,GAAG,IAAI;IAEjB,IAAIvN,GAAG,GAAG,IAAI;IACd,IAAIke,SAAS,GAAGle,GAAG,CAAC+B,OAAO;IAC3B,IAAI,CAACmZ,YAAY,CAAC3V,QAAQ,EAAE,UAAUhF,KAAK,EAAE;MAC3C4X,SAAS,CAACnQ,SAAS,CAACuF,MAAM,CAACpG,IAAI,GAAG5G,KAAK,CAACuF,QAAQ,CAAC,CAAC;MAClD6P,YAAY,CAACpI,MAAM,CAAC9H,MAAM,EAAElF,KAAK,EAAE2d,SAAS,EAAE,KAAK,CAAC;MACpD/C,UAAU,IAAIA,UAAU,CAAC5a,KAAK,CAAC;IACjC,CAAC,EAAE6a,OAAO,CAAC;EACb,CAAC;EAEDuC,YAAY,CAAC/e,SAAS,CAACyE,OAAO,GAAG,SAASA,OAAOA,CAAEkC,QAAQ,EAAE4V,UAAU,EAAEC,OAAO,EAAE;IAChF,IAAI7N,MAAM,GAAG,IAAI;IAEjB,IAAIvN,GAAG,GAAG,IAAI;IACd,IAAIke,SAAS,GAAGle,GAAG,CAAC+B,OAAO;IAC3B,IAAI,CAACmZ,YAAY,CAAC3V,QAAQ,EAAE,UAAUhF,KAAK,EAAE;MAC3CiV,YAAY,CAACxN,SAAS,CAACuF,MAAM,CAACpG,IAAI,GAAG5G,KAAK,CAACuF,QAAQ,CAAC,CAAC;MACrD6P,YAAY,CAACpI,MAAM,CAAC9H,MAAM,EAAElF,KAAK,EAAE2d,SAAS,EAAE,KAAK,CAAC;MACpD/C,UAAU,IAAIA,UAAU,CAAC5a,KAAK,CAAC;IACjC,CAAC,EAAE6a,OAAO,CAAC;EACb,CAAC;EAEDuC,YAAY,CAAC/e,SAAS,CAAC2c,SAAS,GAAG,SAASA,SAASA,CAAE5W,IAAI,EAAE;IAC3D,IAAIoZ,WAAW,CAAC,IAAI,CAAC5W,IAAI,CAAC,KAAK,IAAI,CAACpF,OAAO,CAAC+D,QAAQ,EAAE;MACpD,IAAI/D,OAAO,GAAGiG,SAAS,CAAC,IAAI,CAACb,IAAI,GAAG,IAAI,CAACpF,OAAO,CAAC+D,QAAQ,CAAC;MAC1DnB,IAAI,GAAGwT,SAAS,CAACpW,OAAO,CAAC,GAAGyT,YAAY,CAACzT,OAAO,CAAC;IACnD;EACF,CAAC;EAED4b,YAAY,CAAC/e,SAAS,CAACuf,kBAAkB,GAAG,SAASA,kBAAkBA,CAAA,EAAI;IACzE,OAAOJ,WAAW,CAAC,IAAI,CAAC5W,IAAI,CAAC;EAC/B,CAAC;EAED,OAAOwW,YAAY;AACrB,CAAC,CAACnD,OAAO,CAAE;AAEX,SAASuD,WAAWA,CAAE5W,IAAI,EAAE;EAC1B,IAAIvE,IAAI,GAAGwb,SAAS,CAAC1M,MAAM,CAACnM,QAAQ,CAAC8Y,QAAQ,CAAC;EAC9C,IAAIlX,IAAI,IAAIvE,IAAI,CAAC0b,WAAW,CAAC,CAAC,CAACvf,OAAO,CAACoI,IAAI,CAACmX,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;IAChE1b,IAAI,GAAGA,IAAI,CAACkF,KAAK,CAACX,IAAI,CAAC5C,MAAM,CAAC;EAChC;EACA,OAAO,CAAC3B,IAAI,IAAI,GAAG,IAAI8O,MAAM,CAACnM,QAAQ,CAACgZ,MAAM,GAAG7M,MAAM,CAACnM,QAAQ,CAACM,IAAI;AACtE;;AAEA;;AAEA,IAAI2Y,WAAW,GAAG,aAAc,UAAUhE,OAAO,EAAE;EACjD,SAASgE,WAAWA,CAAE/Y,MAAM,EAAE0B,IAAI,EAAEsX,QAAQ,EAAE;IAC5CjE,OAAO,CAAC1b,IAAI,CAAC,IAAI,EAAE2G,MAAM,EAAE0B,IAAI,CAAC;IAChC;IACA,IAAIsX,QAAQ,IAAIC,aAAa,CAAC,IAAI,CAACvX,IAAI,CAAC,EAAE;MACxC;IACF;IACAwX,WAAW,CAAC,CAAC;EACf;EAEA,IAAKnE,OAAO,EAAGgE,WAAW,CAACjE,SAAS,GAAGC,OAAO;EAC9CgE,WAAW,CAAC5f,SAAS,GAAGD,MAAM,CAACmN,MAAM,CAAE0O,OAAO,IAAIA,OAAO,CAAC5b,SAAU,CAAC;EACrE4f,WAAW,CAAC5f,SAAS,CAACK,WAAW,GAAGuf,WAAW;;EAE/C;EACA;EACAA,WAAW,CAAC5f,SAAS,CAACggB,cAAc,GAAG,SAASA,cAAcA,CAAA,EAAI;IAChE,IAAIrR,MAAM,GAAG,IAAI;IAEjB,IAAI9H,MAAM,GAAG,IAAI,CAACA,MAAM;IACxB,IAAImY,YAAY,GAAGnY,MAAM,CAACC,OAAO,CAACsQ,cAAc;IAChD,IAAI6H,cAAc,GAAG9F,iBAAiB,IAAI6F,YAAY;IAEtD,IAAIC,cAAc,EAAE;MAClB7I,WAAW,CAAC,CAAC;IACf;IAEAtD,MAAM,CAAC+D,gBAAgB,CACrBsC,iBAAiB,GAAG,UAAU,GAAG,YAAY,EAC7C,YAAY;MACV,IAAIhW,OAAO,GAAGwL,MAAM,CAACxL,OAAO;MAC5B,IAAI,CAAC4c,WAAW,CAAC,CAAC,EAAE;QAClB;MACF;MACApR,MAAM,CAAC2N,YAAY,CAAC2D,OAAO,CAAC,CAAC,EAAE,UAAUte,KAAK,EAAE;QAC9C,IAAIsd,cAAc,EAAE;UAClBlI,YAAY,CAACpI,MAAM,CAAC9H,MAAM,EAAElF,KAAK,EAAEwB,OAAO,EAAE,IAAI,CAAC;QACnD;QACA,IAAI,CAACgW,iBAAiB,EAAE;UACtB+G,WAAW,CAACve,KAAK,CAACuF,QAAQ,CAAC;QAC7B;MACF,CAAC,CAAC;IACJ,CACF,CAAC;EACH,CAAC;EAED0Y,WAAW,CAAC5f,SAAS,CAAC+F,IAAI,GAAG,SAASA,IAAIA,CAAEY,QAAQ,EAAE4V,UAAU,EAAEC,OAAO,EAAE;IACzE,IAAI7N,MAAM,GAAG,IAAI;IAEjB,IAAIvN,GAAG,GAAG,IAAI;IACd,IAAIke,SAAS,GAAGle,GAAG,CAAC+B,OAAO;IAC3B,IAAI,CAACmZ,YAAY,CACf3V,QAAQ,EACR,UAAUhF,KAAK,EAAE;MACfwe,QAAQ,CAACxe,KAAK,CAACuF,QAAQ,CAAC;MACxB6P,YAAY,CAACpI,MAAM,CAAC9H,MAAM,EAAElF,KAAK,EAAE2d,SAAS,EAAE,KAAK,CAAC;MACpD/C,UAAU,IAAIA,UAAU,CAAC5a,KAAK,CAAC;IACjC,CAAC,EACD6a,OACF,CAAC;EACH,CAAC;EAEDoD,WAAW,CAAC5f,SAAS,CAACyE,OAAO,GAAG,SAASA,OAAOA,CAAEkC,QAAQ,EAAE4V,UAAU,EAAEC,OAAO,EAAE;IAC/E,IAAI7N,MAAM,GAAG,IAAI;IAEjB,IAAIvN,GAAG,GAAG,IAAI;IACd,IAAIke,SAAS,GAAGle,GAAG,CAAC+B,OAAO;IAC3B,IAAI,CAACmZ,YAAY,CACf3V,QAAQ,EACR,UAAUhF,KAAK,EAAE;MACfue,WAAW,CAACve,KAAK,CAACuF,QAAQ,CAAC;MAC3B6P,YAAY,CAACpI,MAAM,CAAC9H,MAAM,EAAElF,KAAK,EAAE2d,SAAS,EAAE,KAAK,CAAC;MACpD/C,UAAU,IAAIA,UAAU,CAAC5a,KAAK,CAAC;IACjC,CAAC,EACD6a,OACF,CAAC;EACH,CAAC;EAEDoD,WAAW,CAAC5f,SAAS,CAACof,EAAE,GAAG,SAASA,EAAEA,CAAEC,CAAC,EAAE;IACzCvM,MAAM,CAACZ,OAAO,CAACkN,EAAE,CAACC,CAAC,CAAC;EACtB,CAAC;EAEDO,WAAW,CAAC5f,SAAS,CAAC2c,SAAS,GAAG,SAASA,SAASA,CAAE5W,IAAI,EAAE;IAC1D,IAAI5C,OAAO,GAAG,IAAI,CAACA,OAAO,CAAC+D,QAAQ;IACnC,IAAI+Y,OAAO,CAAC,CAAC,KAAK9c,OAAO,EAAE;MACzB4C,IAAI,GAAGoa,QAAQ,CAAChd,OAAO,CAAC,GAAG+c,WAAW,CAAC/c,OAAO,CAAC;IACjD;EACF,CAAC;EAEDyc,WAAW,CAAC5f,SAAS,CAACuf,kBAAkB,GAAG,SAASA,kBAAkBA,CAAA,EAAI;IACxE,OAAOU,OAAO,CAAC,CAAC;EAClB,CAAC;EAED,OAAOL,WAAW;AACpB,CAAC,CAAChE,OAAO,CAAE;AAEX,SAASkE,aAAaA,CAAEvX,IAAI,EAAE;EAC5B,IAAI5B,QAAQ,GAAGwY,WAAW,CAAC5W,IAAI,CAAC;EAChC,IAAI,CAAC,MAAM,CAAC4D,IAAI,CAACxF,QAAQ,CAAC,EAAE;IAC1BmM,MAAM,CAACnM,QAAQ,CAAClC,OAAO,CAAC2E,SAAS,CAACb,IAAI,GAAG,IAAI,GAAG5B,QAAQ,CAAC,CAAC;IAC1D,OAAO,IAAI;EACb;AACF;AAEA,SAASoZ,WAAWA,CAAA,EAAI;EACtB,IAAI/b,IAAI,GAAGic,OAAO,CAAC,CAAC;EACpB,IAAIjc,IAAI,CAAC0E,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IAC1B,OAAO,IAAI;EACb;EACAwX,WAAW,CAAC,GAAG,GAAGlc,IAAI,CAAC;EACvB,OAAO,KAAK;AACd;AAEA,SAASic,OAAOA,CAAA,EAAI;EAClB;EACA;EACA,IAAInR,IAAI,GAAGgE,MAAM,CAACnM,QAAQ,CAACmI,IAAI;EAC/B,IAAI3E,KAAK,GAAG2E,IAAI,CAAC3O,OAAO,CAAC,GAAG,CAAC;EAC7B;EACA,IAAIgK,KAAK,GAAG,CAAC,EAAE;IAAE,OAAO,EAAE;EAAC;EAE3B2E,IAAI,GAAGA,IAAI,CAAC5F,KAAK,CAACiB,KAAK,GAAG,CAAC,CAAC;EAC5B;EACA;EACA;EACA,IAAIiW,WAAW,GAAGtR,IAAI,CAAC3O,OAAO,CAAC,GAAG,CAAC;EACnC,IAAIigB,WAAW,GAAG,CAAC,EAAE;IACnB,IAAInX,SAAS,GAAG6F,IAAI,CAAC3O,OAAO,CAAC,GAAG,CAAC;IACjC,IAAI8I,SAAS,GAAG,CAAC,CAAC,EAAE;MAClB6F,IAAI,GAAG0Q,SAAS,CAAC1Q,IAAI,CAAC5F,KAAK,CAAC,CAAC,EAAED,SAAS,CAAC,CAAC,GAAG6F,IAAI,CAAC5F,KAAK,CAACD,SAAS,CAAC;IACpE,CAAC,MAAM;MAAE6F,IAAI,GAAG0Q,SAAS,CAAC1Q,IAAI,CAAC;IAAE;EACnC,CAAC,MAAM;IACLA,IAAI,GAAG0Q,SAAS,CAAC1Q,IAAI,CAAC5F,KAAK,CAAC,CAAC,EAAEkX,WAAW,CAAC,CAAC,GAAGtR,IAAI,CAAC5F,KAAK,CAACkX,WAAW,CAAC;EACxE;EAEA,OAAOtR,IAAI;AACb;AAEA,SAASuR,MAAMA,CAAErc,IAAI,EAAE;EACrB,IAAI8K,IAAI,GAAGgE,MAAM,CAACnM,QAAQ,CAACmI,IAAI;EAC/B,IAAIhG,CAAC,GAAGgG,IAAI,CAAC3O,OAAO,CAAC,GAAG,CAAC;EACzB,IAAIoI,IAAI,GAAGO,CAAC,IAAI,CAAC,GAAGgG,IAAI,CAAC5F,KAAK,CAAC,CAAC,EAAEJ,CAAC,CAAC,GAAGgG,IAAI;EAC3C,OAAQvG,IAAI,GAAG,GAAG,GAAGvE,IAAI;AAC3B;AAEA,SAASmc,QAAQA,CAAEnc,IAAI,EAAE;EACvB,IAAImV,iBAAiB,EAAE;IACrBI,SAAS,CAAC8G,MAAM,CAACrc,IAAI,CAAC,CAAC;EACzB,CAAC,MAAM;IACL8O,MAAM,CAACnM,QAAQ,CAACM,IAAI,GAAGjD,IAAI;EAC7B;AACF;AAEA,SAASkc,WAAWA,CAAElc,IAAI,EAAE;EAC1B,IAAImV,iBAAiB,EAAE;IACrBvC,YAAY,CAACyJ,MAAM,CAACrc,IAAI,CAAC,CAAC;EAC5B,CAAC,MAAM;IACL8O,MAAM,CAACnM,QAAQ,CAAClC,OAAO,CAAC4b,MAAM,CAACrc,IAAI,CAAC,CAAC;EACvC;AACF;;AAEA;;AAEA,IAAIsc,eAAe,GAAG,aAAc,UAAU1E,OAAO,EAAE;EACrD,SAAS0E,eAAeA,CAAEzZ,MAAM,EAAE0B,IAAI,EAAE;IACtCqT,OAAO,CAAC1b,IAAI,CAAC,IAAI,EAAE2G,MAAM,EAAE0B,IAAI,CAAC;IAChC,IAAI,CAACI,KAAK,GAAG,EAAE;IACf,IAAI,CAACwB,KAAK,GAAG,CAAC,CAAC;EACjB;EAEA,IAAKyR,OAAO,EAAG0E,eAAe,CAAC3E,SAAS,GAAGC,OAAO;EAClD0E,eAAe,CAACtgB,SAAS,GAAGD,MAAM,CAACmN,MAAM,CAAE0O,OAAO,IAAIA,OAAO,CAAC5b,SAAU,CAAC;EACzEsgB,eAAe,CAACtgB,SAAS,CAACK,WAAW,GAAGigB,eAAe;EAEvDA,eAAe,CAACtgB,SAAS,CAAC+F,IAAI,GAAG,SAASA,IAAIA,CAAEY,QAAQ,EAAE4V,UAAU,EAAEC,OAAO,EAAE;IAC7E,IAAI7N,MAAM,GAAG,IAAI;IAEjB,IAAI,CAAC2N,YAAY,CACf3V,QAAQ,EACR,UAAUhF,KAAK,EAAE;MACfgN,MAAM,CAAChG,KAAK,GAAGgG,MAAM,CAAChG,KAAK,CAACO,KAAK,CAAC,CAAC,EAAEyF,MAAM,CAACxE,KAAK,GAAG,CAAC,CAAC,CAAC2Q,MAAM,CAACnZ,KAAK,CAAC;MACpEgN,MAAM,CAACxE,KAAK,EAAE;MACdoS,UAAU,IAAIA,UAAU,CAAC5a,KAAK,CAAC;IACjC,CAAC,EACD6a,OACF,CAAC;EACH,CAAC;EAED8D,eAAe,CAACtgB,SAAS,CAACyE,OAAO,GAAG,SAASA,OAAOA,CAAEkC,QAAQ,EAAE4V,UAAU,EAAEC,OAAO,EAAE;IACnF,IAAI7N,MAAM,GAAG,IAAI;IAEjB,IAAI,CAAC2N,YAAY,CACf3V,QAAQ,EACR,UAAUhF,KAAK,EAAE;MACfgN,MAAM,CAAChG,KAAK,GAAGgG,MAAM,CAAChG,KAAK,CAACO,KAAK,CAAC,CAAC,EAAEyF,MAAM,CAACxE,KAAK,CAAC,CAAC2Q,MAAM,CAACnZ,KAAK,CAAC;MAChE4a,UAAU,IAAIA,UAAU,CAAC5a,KAAK,CAAC;IACjC,CAAC,EACD6a,OACF,CAAC;EACH,CAAC;EAED8D,eAAe,CAACtgB,SAAS,CAACof,EAAE,GAAG,SAASA,EAAEA,CAAEC,CAAC,EAAE;IAC7C,IAAI1Q,MAAM,GAAG,IAAI;IAEjB,IAAI4R,WAAW,GAAG,IAAI,CAACpW,KAAK,GAAGkV,CAAC;IAChC,IAAIkB,WAAW,GAAG,CAAC,IAAIA,WAAW,IAAI,IAAI,CAAC5X,KAAK,CAAChD,MAAM,EAAE;MACvD;IACF;IACA,IAAIhE,KAAK,GAAG,IAAI,CAACgH,KAAK,CAAC4X,WAAW,CAAC;IACnC,IAAI,CAAC9D,iBAAiB,CACpB9a,KAAK,EACL,YAAY;MACVgN,MAAM,CAACxE,KAAK,GAAGoW,WAAW;MAC1B5R,MAAM,CAAC+N,WAAW,CAAC/a,KAAK,CAAC;IAC3B,CAAC,EACD,UAAU7B,GAAG,EAAE;MACb,IAAIM,eAAe,CAACmb,oBAAoB,EAAEzb,GAAG,CAAC,EAAE;QAC9C6O,MAAM,CAACxE,KAAK,GAAGoW,WAAW;MAC5B;IACF,CACF,CAAC;EACH,CAAC;EAEDD,eAAe,CAACtgB,SAAS,CAACuf,kBAAkB,GAAG,SAASA,kBAAkBA,CAAA,EAAI;IAC5E,IAAIpc,OAAO,GAAG,IAAI,CAACwF,KAAK,CAAC,IAAI,CAACA,KAAK,CAAChD,MAAM,GAAG,CAAC,CAAC;IAC/C,OAAOxC,OAAO,GAAGA,OAAO,CAAC+D,QAAQ,GAAG,GAAG;EACzC,CAAC;EAEDoZ,eAAe,CAACtgB,SAAS,CAAC2c,SAAS,GAAG,SAASA,SAASA,CAAA,EAAI;IAC1D;EAAA,CACD;EAED,OAAO2D,eAAe;AACxB,CAAC,CAAC1E,OAAO,CAAE;;AAEX;;AAIA,IAAI4E,SAAS,GAAG,SAASA,SAASA,CAAE1Z,OAAO,EAAE;EAC3C,IAAKA,OAAO,KAAK,KAAK,CAAC,EAAGA,OAAO,GAAG,CAAC,CAAC;EAEtC,IAAI,CAACoQ,GAAG,GAAG,IAAI;EACf,IAAI,CAACuJ,IAAI,GAAG,EAAE;EACd,IAAI,CAAC3Z,OAAO,GAAGA,OAAO;EACtB,IAAI,CAACoW,WAAW,GAAG,EAAE;EACrB,IAAI,CAACO,YAAY,GAAG,EAAE;EACtB,IAAI,CAACE,UAAU,GAAG,EAAE;EACpB,IAAI,CAAC+C,OAAO,GAAGhM,aAAa,CAAC5N,OAAO,CAACkM,MAAM,IAAI,EAAE,EAAE,IAAI,CAAC;EAExD,IAAI2N,IAAI,GAAG7Z,OAAO,CAAC6Z,IAAI,IAAI,MAAM;EACjC,IAAI,CAACd,QAAQ,GAAGc,IAAI,KAAK,SAAS,IAAI,CAACxH,iBAAiB,IAAIrS,OAAO,CAAC+Y,QAAQ,KAAK,KAAK;EACtF,IAAI,IAAI,CAACA,QAAQ,EAAE;IACjBc,IAAI,GAAG,MAAM;EACf;EACA,IAAI,CAAC9N,SAAS,EAAE;IACd8N,IAAI,GAAG,UAAU;EACnB;EACA,IAAI,CAACA,IAAI,GAAGA,IAAI;EAEhB,QAAQA,IAAI;IACV,KAAK,SAAS;MACZ,IAAI,CAACzO,OAAO,GAAG,IAAI6M,YAAY,CAAC,IAAI,EAAEjY,OAAO,CAACyB,IAAI,CAAC;MACnD;IACF,KAAK,MAAM;MACT,IAAI,CAAC2J,OAAO,GAAG,IAAI0N,WAAW,CAAC,IAAI,EAAE9Y,OAAO,CAACyB,IAAI,EAAE,IAAI,CAACsX,QAAQ,CAAC;MACjE;IACF,KAAK,UAAU;MACb,IAAI,CAAC3N,OAAO,GAAG,IAAIoO,eAAe,CAAC,IAAI,EAAExZ,OAAO,CAACyB,IAAI,CAAC;MACtD;IACF;MACE,IAAI9I,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QACzCP,MAAM,CAAC,KAAK,EAAG,gBAAgB,GAAGuhB,IAAK,CAAC;MAC1C;EACJ;AACF,CAAC;AAED,IAAIC,kBAAkB,GAAG;EAAEhM,YAAY,EAAE;IAAE8G,YAAY,EAAE;EAAK;AAAE,CAAC;AAEjE8E,SAAS,CAACxgB,SAAS,CAAC0M,KAAK,GAAG,SAASA,KAAKA,CACxCc,GAAG,EACHrK,OAAO,EACPyD,cAAc,EACd;EACA,OAAO,IAAI,CAAC8Z,OAAO,CAAChU,KAAK,CAACc,GAAG,EAAErK,OAAO,EAAEyD,cAAc,CAAC;AACzD,CAAC;AAEDga,kBAAkB,CAAChM,YAAY,CAACvC,GAAG,GAAG,YAAY;EAChD,OAAO,IAAI,CAACH,OAAO,IAAI,IAAI,CAACA,OAAO,CAAC/O,OAAO;AAC7C,CAAC;AAEDqd,SAAS,CAACxgB,SAAS,CAACyD,IAAI,GAAG,SAASA,IAAIA,CAAEyT,GAAG,CAAC,8BAA8B;EACxE,IAAIvI,MAAM,GAAG,IAAI;EAEnBlP,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAIP,MAAM,CAC7CgS,OAAO,CAACE,SAAS,EACjB,wDAAwD,GACxD,gCACF,CAAC;EAED,IAAI,CAACmP,IAAI,CAAC1a,IAAI,CAACmR,GAAG,CAAC;;EAEnB;EACA;EACAA,GAAG,CAAC2J,KAAK,CAAC,gBAAgB,EAAE,YAAY;IACtC;IACA,IAAI1W,KAAK,GAAGwE,MAAM,CAAC8R,IAAI,CAACtgB,OAAO,CAAC+W,GAAG,CAAC;IACpC,IAAI/M,KAAK,GAAG,CAAC,CAAC,EAAE;MAAEwE,MAAM,CAAC8R,IAAI,CAAChN,MAAM,CAACtJ,KAAK,EAAE,CAAC,CAAC;IAAE;IAChD;IACA;IACA,IAAIwE,MAAM,CAACuI,GAAG,KAAKA,GAAG,EAAE;MAAEvI,MAAM,CAACuI,GAAG,GAAGvI,MAAM,CAAC8R,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI;IAAE;EACjE,CAAC,CAAC;;EAEF;EACA;EACA,IAAI,IAAI,CAACvJ,GAAG,EAAE;IACZ;EACF;EAEA,IAAI,CAACA,GAAG,GAAGA,GAAG;EAEd,IAAIhF,OAAO,GAAG,IAAI,CAACA,OAAO;EAE1B,IAAIA,OAAO,YAAY6M,YAAY,EAAE;IACnC7M,OAAO,CAACoK,YAAY,CAACpK,OAAO,CAACqN,kBAAkB,CAAC,CAAC,CAAC;EACpD,CAAC,MAAM,IAAIrN,OAAO,YAAY0N,WAAW,EAAE;IACzC,IAAIkB,iBAAiB,GAAG,SAAAA,CAAA,EAAY;MAClC5O,OAAO,CAAC8N,cAAc,CAAC,CAAC;IAC1B,CAAC;IACD9N,OAAO,CAACoK,YAAY,CAClBpK,OAAO,CAACqN,kBAAkB,CAAC,CAAC,EAC5BuB,iBAAiB,EACjBA,iBACF,CAAC;EACH;EAEA5O,OAAO,CAACgK,MAAM,CAAC,UAAUva,KAAK,EAAE;IAC9BgN,MAAM,CAAC8R,IAAI,CAAClb,OAAO,CAAC,UAAU2R,GAAG,EAAE;MACjCA,GAAG,CAAC5E,MAAM,GAAG3Q,KAAK;IACpB,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC;AAED6e,SAAS,CAACxgB,SAAS,CAAC+gB,UAAU,GAAG,SAASA,UAAUA,CAAEpH,EAAE,EAAE;EACxD,OAAOqH,YAAY,CAAC,IAAI,CAAC9D,WAAW,EAAEvD,EAAE,CAAC;AAC3C,CAAC;AAED6G,SAAS,CAACxgB,SAAS,CAACihB,aAAa,GAAG,SAASA,aAAaA,CAAEtH,EAAE,EAAE;EAC9D,OAAOqH,YAAY,CAAC,IAAI,CAACvD,YAAY,EAAE9D,EAAE,CAAC;AAC5C,CAAC;AAED6G,SAAS,CAACxgB,SAAS,CAACkhB,SAAS,GAAG,SAASA,SAASA,CAAEvH,EAAE,EAAE;EACtD,OAAOqH,YAAY,CAAC,IAAI,CAACrD,UAAU,EAAEhE,EAAE,CAAC;AAC1C,CAAC;AAED6G,SAAS,CAACxgB,SAAS,CAACmc,OAAO,GAAG,SAASA,OAAOA,CAAEvC,EAAE,EAAEwC,OAAO,EAAE;EAC3D,IAAI,CAAClK,OAAO,CAACiK,OAAO,CAACvC,EAAE,EAAEwC,OAAO,CAAC;AACnC,CAAC;AAEDoE,SAAS,CAACxgB,SAAS,CAACqc,OAAO,GAAG,SAASA,OAAOA,CAAED,OAAO,EAAE;EACvD,IAAI,CAAClK,OAAO,CAACmK,OAAO,CAACD,OAAO,CAAC;AAC/B,CAAC;AAEDoE,SAAS,CAACxgB,SAAS,CAAC+F,IAAI,GAAG,SAASA,IAAIA,CAAEY,QAAQ,EAAE4V,UAAU,EAAEC,OAAO,EAAE;EACrE,IAAI7N,MAAM,GAAG,IAAI;;EAEnB;EACA,IAAI,CAAC4N,UAAU,IAAI,CAACC,OAAO,IAAI,OAAO2E,OAAO,KAAK,WAAW,EAAE;IAC7D,OAAO,IAAIA,OAAO,CAAC,UAAUtS,OAAO,EAAE4L,MAAM,EAAE;MAC5C9L,MAAM,CAACuD,OAAO,CAACnM,IAAI,CAACY,QAAQ,EAAEkI,OAAO,EAAE4L,MAAM,CAAC;IAChD,CAAC,CAAC;EACJ,CAAC,MAAM;IACL,IAAI,CAACvI,OAAO,CAACnM,IAAI,CAACY,QAAQ,EAAE4V,UAAU,EAAEC,OAAO,CAAC;EAClD;AACF,CAAC;AAEDgE,SAAS,CAACxgB,SAAS,CAACyE,OAAO,GAAG,SAASA,OAAOA,CAAEkC,QAAQ,EAAE4V,UAAU,EAAEC,OAAO,EAAE;EAC3E,IAAI7N,MAAM,GAAG,IAAI;;EAEnB;EACA,IAAI,CAAC4N,UAAU,IAAI,CAACC,OAAO,IAAI,OAAO2E,OAAO,KAAK,WAAW,EAAE;IAC7D,OAAO,IAAIA,OAAO,CAAC,UAAUtS,OAAO,EAAE4L,MAAM,EAAE;MAC5C9L,MAAM,CAACuD,OAAO,CAACzN,OAAO,CAACkC,QAAQ,EAAEkI,OAAO,EAAE4L,MAAM,CAAC;IACnD,CAAC,CAAC;EACJ,CAAC,MAAM;IACL,IAAI,CAACvI,OAAO,CAACzN,OAAO,CAACkC,QAAQ,EAAE4V,UAAU,EAAEC,OAAO,CAAC;EACrD;AACF,CAAC;AAEDgE,SAAS,CAACxgB,SAAS,CAACof,EAAE,GAAG,SAASA,EAAEA,CAAEC,CAAC,EAAE;EACvC,IAAI,CAACnN,OAAO,CAACkN,EAAE,CAACC,CAAC,CAAC;AACpB,CAAC;AAEDmB,SAAS,CAACxgB,SAAS,CAACohB,IAAI,GAAG,SAASA,IAAIA,CAAA,EAAI;EAC1C,IAAI,CAAChC,EAAE,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;AAEDoB,SAAS,CAACxgB,SAAS,CAACqhB,OAAO,GAAG,SAASA,OAAOA,CAAA,EAAI;EAChD,IAAI,CAACjC,EAAE,CAAC,CAAC,CAAC;AACZ,CAAC;AAEDoB,SAAS,CAACxgB,SAAS,CAACshB,oBAAoB,GAAG,SAASA,oBAAoBA,CAAEpT,EAAE,EAAE;EAC5E,IAAIvM,KAAK,GAAGuM,EAAE,GACVA,EAAE,CAACpL,OAAO,GACRoL,EAAE,GACF,IAAI,CAACW,OAAO,CAACX,EAAE,CAAC,CAACvM,KAAK,GACxB,IAAI,CAACiT,YAAY;EACrB,IAAI,CAACjT,KAAK,EAAE;IACV,OAAO,EAAE;EACX;EACA,OAAO,EAAE,CAACmZ,MAAM,CAACC,KAAK,CAAC,EAAE,EAAEpZ,KAAK,CAACmB,OAAO,CAACqD,GAAG,CAAC,UAAUoE,CAAC,EAAE;IACxD,OAAOxK,MAAM,CAACmG,IAAI,CAACqE,CAAC,CAACxH,UAAU,CAAC,CAACoD,GAAG,CAAC,UAAUxF,GAAG,EAAE;MAClD,OAAO4J,CAAC,CAACxH,UAAU,CAACpC,GAAG,CAAC;IAC1B,CAAC,CAAC;EACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED6f,SAAS,CAACxgB,SAAS,CAAC6O,OAAO,GAAG,SAASA,OAAOA,CAC5CX,EAAE,EACF/K,OAAO,EACPqF,MAAM,EACN;EACArF,OAAO,GAAGA,OAAO,IAAI,IAAI,CAAC+O,OAAO,CAAC/O,OAAO;EACzC,IAAIwD,QAAQ,GAAG4G,iBAAiB,CAC9BW,EAAE,EACF/K,OAAO,EACPqF,MAAM,EACN,IACF,CAAC;EACD,IAAI7G,KAAK,GAAG,IAAI,CAAC+K,KAAK,CAAC/F,QAAQ,EAAExD,OAAO,CAAC;EACzC,IAAI+D,QAAQ,GAAGvF,KAAK,CAACiF,cAAc,IAAIjF,KAAK,CAACuF,QAAQ;EACrD,IAAIqB,IAAI,GAAG,IAAI,CAAC2J,OAAO,CAAC3J,IAAI;EAC5B,IAAIuG,IAAI,GAAGyS,UAAU,CAAChZ,IAAI,EAAErB,QAAQ,EAAE,IAAI,CAACyZ,IAAI,CAAC;EAChD,OAAO;IACLha,QAAQ,EAAEA,QAAQ;IAClBhF,KAAK,EAAEA,KAAK;IACZmN,IAAI,EAAEA,IAAI;IACV;IACA0S,YAAY,EAAE7a,QAAQ;IACtB6T,QAAQ,EAAE7Y;EACZ,CAAC;AACH,CAAC;AAED6e,SAAS,CAACxgB,SAAS,CAAC2U,SAAS,GAAG,SAASA,SAASA,CAAE3B,MAAM,EAAE;EAC1D,IAAI,CAAC0N,OAAO,CAAC/L,SAAS,CAAC3B,MAAM,CAAC;EAC9B,IAAI,IAAI,CAACd,OAAO,CAAC/O,OAAO,KAAKoE,KAAK,EAAE;IAClC,IAAI,CAAC2K,OAAO,CAACoK,YAAY,CAAC,IAAI,CAACpK,OAAO,CAACqN,kBAAkB,CAAC,CAAC,CAAC;EAC9D;AACF,CAAC;AAEDxf,MAAM,CAAC0hB,gBAAgB,CAAEjB,SAAS,CAACxgB,SAAS,EAAE4gB,kBAAmB,CAAC;AAElE,SAASI,YAAYA,CAAEU,IAAI,EAAE/H,EAAE,EAAE;EAC/B+H,IAAI,CAAC3b,IAAI,CAAC4T,EAAE,CAAC;EACb,OAAO,YAAY;IACjB,IAAI7Q,CAAC,GAAG4Y,IAAI,CAACvhB,OAAO,CAACwZ,EAAE,CAAC;IACxB,IAAI7Q,CAAC,GAAG,CAAC,CAAC,EAAE;MAAE4Y,IAAI,CAACjO,MAAM,CAAC3K,CAAC,EAAE,CAAC,CAAC;IAAE;EACnC,CAAC;AACH;AAEA,SAASyY,UAAUA,CAAEhZ,IAAI,EAAErB,QAAQ,EAAEyZ,IAAI,EAAE;EACzC,IAAI3c,IAAI,GAAG2c,IAAI,KAAK,MAAM,GAAG,GAAG,GAAGzZ,QAAQ,GAAGA,QAAQ;EACtD,OAAOqB,IAAI,GAAGa,SAAS,CAACb,IAAI,GAAG,GAAG,GAAGvE,IAAI,CAAC,GAAGA,IAAI;AACnD;AAEAwc,SAAS,CAACpP,OAAO,GAAGA,OAAO;AAC3BoP,SAAS,CAACmB,OAAO,GAAG,OAAO;AAE3B,IAAI9O,SAAS,IAAIC,MAAM,CAACzB,GAAG,EAAE;EAC3ByB,MAAM,CAACzB,GAAG,CAACuQ,GAAG,CAACpB,SAAS,CAAC;AAC3B;AAEA,eAAeA,SAAS","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}