UNPKG

276 kBSource Map (JSON)View Raw
1{"version":3,"file":"bundle.js","sources":["src/config.js","src/decorators.js","src/rally-tools.js","src/config-create.js","src/providers.js","src/file.js","src/asset.js","src/fswrap.js","src/preset.js","src/notification.js","src/rule.js","src/supply-chain.js","src/user.js","src/tag.js","src/trace.js","src/index.js","src/baseCode.js","src/cli.js"],"sourcesContent":["import {homedir} from \"os\";\nimport {readFileSync} from \"fs\";\n\nexport let configFile = null\n\nif(homedir){\n configFile = homedir() + \"/.rallyconfig\";\n}\n\nlet configObject;\nexport function loadConfig(file){\n if(file) configFile = file;\n if(!configFile) return;\n\n configObject = {hasConfig: true};\n try{\n let json = readFileSync(configFile);\n configObject = JSON.parse(json);\n configObject.hasConfig = true;\n }catch(e){\n if(e.code == \"ENOENT\"){\n configObject.hasConfig = false;\n //ok, they should probably make a config\n }else{\n throw e;\n }\n }\n}\n\nexport function loadConfigFromArgs(args){\n let tempConfig = {\n hasConfig: true,\n ...args.config\n };\n\n configObject = tempConfig;\n}\n\nexport function setConfig(obj){\n configObject = obj;\n}\n\nexport {configObject};\n","\n//these are the help entries for each command\nexport let helpEntries = {};\nlet helpEntry = name => helpEntries[name] ? helpEntries[name] : (helpEntries[name] = {name});\n\n//short description\nexport function helpText(text){\n return function(func, name){\n helpEntry(name).text = text;\n return func;\n }\n}\n\n//flag type argument like -f or --file\nexport function arg(long, short, desc){\n return function(func, name){\n let args = helpEntry(name).args = helpEntry(name).args || [];\n args.unshift({long, short, desc});\n return func;\n }\n}\n\n//normal argument\nexport function param(param, desc){\n return function(func, name){\n let params = helpEntry(name).params = helpEntry(name).params || [];\n params.unshift({param, desc});\n return func;\n }\n}\n\n//usage string\nexport function usage(usage){\n return function(func, name){\n usage = usage.replace(/[\\[<](\\w+)[\\]>]/g, chalk`[{blue $1}]`);\n helpEntry(name).usage = usage;\n return func;\n }\n}\n\nexport function cachedgetter(target, key, desc){\n let cachedVal;\n\n let oldget = desc.get;\n desc.get = function(){\n if(cachedVal) return cachedVal;\n return cachedVal = oldget.call(this);\n };\n desc.set = function(val){\n cachedVal = val;\n };\n}\n\nfunction findValueInCache(args, cache){\n for(let [argsKey, value] of cache){\n if(args.length !== argsKey.length) continue;\n for(let i in argsKey){\n if(args[i] !== argsKey[i]){\n continue\n }\n }\n return {found: true, value};\n }\n return {found: false};\n}\n\n//This decorator takes a function and returns a function that remembers the\n// value returned by given arguments\nexport function cached(target, key, desc){\n let oldFunc = desc.value;\n let cachedValues = [];\n function newFunc(...args){\n let {found, value} = findValueInCache(args, cachedValues);\n if(!found){\n //Call the old function to find the value, then store it in the cache\n value = oldFun(...args);\n cachedValues.push([args, value]);\n }\n return value;\n }\n newFunc.clearCache = function(){\n cachedValues = [];\n }\n newFunc.cachePush = function(args, value){\n cachedValues.push([args, value]);\n }\n newFunc.remove = function(...args){\n let {found, value} = findValueInCache(args, cachedValues);\n if(found){\n cachedValues = cachedValues.filter(([arg, item]) => item !== value);\n }\n }\n\n return {\n ...desc,\n value: newFunc,\n };\n}\n\n//Access a deep property of an object: if path is [\"a\", \"b\", \"c\"], then this\n//function retuns obj.a.b.c\nfunction deepAccess(obj, path){\n let o = obj;\n for(let key of path){\n if(!o) return [];\n o = o[key];\n }\n return o;\n}\n\n//This takes a class as the first argument, then adds a getter/setter pair that\n//corresponds to an object in this.data\nexport function defineAssoc(classname, shortname, path){\n path = path.split(\".\");\n let lastKey = path.pop();\n\n Object.defineProperty(classname.prototype, shortname, {\n get(){\n return deepAccess(this, path)[lastKey];\n },\n set(val){\n deepAccess(this, path)[lastKey] = val;\n },\n });\n}\n\nimport {spawn as cp_spawn} from \"child_process\";\nimport {performance} from \"perf_hooks\";\n\n//Spawn promise decorator, based on https://gist.github.com/Stuk/6226938\nexport function spawn(options, ...args){\n if(typeof options !== \"object\"){\n args.unshift(options);\n options = {};\n }\n //todo options\n return new Promise((resolve, reject) => {\n let start = performance.now();\n\n let stdout = \"\";\n let stderr = \"\";\n let cp = cp_spawn(...args);\n\n let write = global.write;\n if(options.noecho){\n write = () => {};\n }\n if(cp.stdout) cp.stdout.on(\"data\", chunk => {stdout += chunk; write(chunk)});\n if(cp.stderr) cp.stderr.on(\"data\", chunk => {stderr += chunk; write(chunk)});\n\n cp.on(\"error\", reject);\n cp.on(\"close\", code => {\n let end = performance.now();\n let time = end - start;\n let timestr = time > 1000 ? (time/100|0)/10 + \"s\" : (time|0) + \"ms\";\n resolve({stdout, stderr, exitCode: code, time, timestr});\n });\n });\n}\n","import chalk from \"chalk\";\nimport {configObject} from \"./config.js\";\nimport {cached} from \"./decorators.js\";\nimport rp from \"request-promise\";\n\nglobal.chalk = chalk;\nglobal.log = (...text) => console.log(...text);\nglobal.write = (...text) => process.stdout.write(...text);\nglobal.elog = (...text) => console.log(...text);\nglobal.ewrite = (...text) => process.stderr.write(...text);\nglobal.errorLog = (...text) => log(...text.map(chalk.red));\n\nexport class lib{\n //This function takes 2 required arguemnts:\n // env: the enviornment you wish to use\n // and either:\n // 'path', the short path to the resource. ex '/presets/'\n // 'path_full', the full path to the resource like 'https://discovery-dev.sdvi.com/presets'\n //\n // If the method is anything but GET, either payload or body should be set.\n // payload should be a javascript object to be turned into json as the request body\n // body should be a string that is passed as the body. for example: the python code of a preset.\n //\n // qs are the querystring parameters, in a key: value object.\n // {filter: \"name=test name\"} becomes something like 'filter=name=test+name'\n //\n // headers are the headers of the request. \"Content-Type\" is already set if\n // payload is given as a parameter\n //\n // fullResponse should be true if you want to receive the request object,\n // not just the returned data.\n static async makeAPIRequest({\n env, path, path_full, fullPath,\n payload, body, method = \"GET\",\n qs, headers = {},\n fullResponse = false, timeout = configObject.timeout || 20000\n }){\n //backwards compatability from ruby script\n if(fullPath) path_full = fullPath;\n //Keys are defined in enviornment variables\n let config = configObject?.api?.[env];\n if(!config) {\n throw new UnconfiguredEnvError(env);\n };\n //Protect PROD and UAT(?) if the --no-protect flag was not set.\n if(method !== \"GET\" && !configObject.dangerModify){\n if(env === \"UAT\" && configObject.restrictUAT || env === \"PROD\"){\n throw new ProtectedEnvError(env);\n }\n }\n\n let rally_api_key = config.key;\n let rally_api = config.url;\n if(path && path.startsWith(\"/v1.0/\")){\n rally_api = rally_api.replace(\"/api/v2\", \"/api\");\n }\n\n path = path_full || rally_api + path;\n if(payload){\n body = JSON.stringify(payload, null, 4);\n }\n\n if(payload){\n headers[\"Content-Type\"] = \"application/vnd.api+json\";\n }\n\n let fullHeaders = {\n //SDVI ignores this header sometimes.\n Accept: \"application/vnd.api+json\",\n \"X-SDVI-Client-Application\": \"Discovery-rtlib-\" + (configObject.appName || \"commandline\"),\n ...headers,\n }\n\n if(configObject.vvverbose){\n log(`${method} @ ${path}`)\n log(JSON.stringify(fullHeaders, null, 4))\n\n if(body){\n log(body);\n }else{\n log(\"(No body\")\n }\n }\n\n let requestOptions = {\n method, body, qs, uri: path,\n timeout,\n auth: {bearer: rally_api_key},\n headers: fullHeaders,\n simple: false, resolveWithFullResponse: true,\n };\n\n let response;\n try{\n response = await rp(requestOptions);\n if(configObject.vverbose || configObject.vvverbose){\n log(chalk`${method} @ ${response.request.uri.href}`);\n }\n }catch(e){\n if(e?.cause.code === \"ESOCKETTIMEDOUT\"){\n throw new APIError(response || {}, requestOptions, body);\n }else{\n throw e;\n }\n }\n\n //Throw an error for any 5xx or 4xx\n if(!fullResponse && ![200, 201, 202, 203, 204].includes(response.statusCode)){\n throw new APIError(response, requestOptions, body);\n }\n let contentType = response.headers[\"content-type\"];\n let isJSONResponse = contentType === \"application/vnd.api+json\" || contentType === \"application/json\";\n\n if(configObject.vvverbose){\n log(response.body);\n }\n\n if(fullResponse){\n return response;\n }else if(isJSONResponse){\n if([200, 201, 202, 203, 204].includes(response.statusCode) && !response?.body?.trim()) return {};\n try{\n return JSON.parse(response.body);\n }catch(e){\n log(response.body);\n throw new AbortError(\"Body is not valid json: \");\n }\n }else{\n return response.body;\n }\n }\n\n //Index a json endpoint that returns a {links} field.\n //This function returns the merged data objects as an array\n //\n //Additonal options (besides makeAPIRequest options):\n // - Observe: function to be called for each set of data from the api\n static async indexPath(env, path){\n let all = [];\n\n let opts = typeof env === \"string\" ? {env, path} : env;\n let json = await this.makeAPIRequest(opts);\n\n let [numPages, pageSize] = this.numPages(json.links.last);\n //log(`num pages: ${numPages} * ${pageSize}`);\n\n all = [...json.data];\n while(json.links.next){\n json = await this.makeAPIRequest({...opts, path_full: json.links.next});\n if(opts.observe) await opts.observe(json.data);\n all = [...all, ...json.data];\n }\n\n return all;\n }\n\n //Returns number of pages and pagination size\n static numPages(str){\n return /page=(\\d+)p(\\d+)/.exec(str).slice(1);\n }\n\n static arrayChunk(array, chunkSize){\n let newArr = [];\n for (let i = 0; i < array.length; i += chunkSize){\n newArr.push(array.slice(i, i + chunkSize));\n }\n return newArr;\n }\n\n static async doPromises(promises, result = [], cb){\n for(let promise of promises){\n let res = await promise;\n result.push(res);\n if(cb){\n cb(res.data);\n }\n }\n return result\n }\n\n static clearProgress(size = 30){\n if(!configObject.globalProgress) return;\n process.stderr.write(`\\r${\" \".repeat(size + 15)}\\r`);\n }\n\n static async drawProgress(i, max, size = process.stdout.columns - 15 || 15){\n if(!configObject.globalProgress) return;\n if(size > 45) size = 45;\n let pct = Number(i) / Number(max);\n //clamp between 0 and 1\n pct = pct < 0 ? 0 : pct > 1 ? 1 : pct;\n let numFilled = Math.floor(pct * size);\n let numEmpty = size - numFilled;\n\n this.clearProgress(size);\n process.stderr.write(`[${\"*\".repeat(numFilled)}${\" \".repeat(numEmpty)}] ${i} / ${max}`);\n }\n\n\n static async keepalive(func, inputData, {chunksize = 20, observe = async _=>_, progress = configObject.globalProgress} = {}){\n let total = inputData ? inputData.length : func.length;\n let i = 0;\n let createPromise = () => {\n let ret;\n if(i >= total) return [];\n if(inputData){\n ret = [i, func(inputData[i])];\n }else{\n ret = [i, func[i]()];\n }\n\n i++;\n return ret;\n }\n\n let values = [];\n let finished = 0;\n if(progress) process.stderr.write(\"\\n\");\n let threads = [...this.range(chunksize)].map(async whichThread => {\n while(true){\n let [i, currentPromise] = createPromise();\n if(i == undefined) break;\n values[i] = await observe(await currentPromise);\n if(progress) this.drawProgress(++finished, total);\n }\n });\n await Promise.all(threads);\n if(progress) process.stderr.write(\"\\n\");\n\n\n return values;\n }\n\n static *range(start, end){\n if(end === undefined){\n end = start;\n start = 0;\n }\n while(start < end) yield start++;\n }\n\n //Index a json endpoint that returns a {links} field.\n //\n //This function is faster than indexPath because it can guess the pages it\n //needs to retreive so that it can request all assets at once.\n //\n //This function assumes that the content from the inital request is the\n //first page, so starting on another page may cause issues. Consider\n //indexPath for that.\n //\n //Additional opts, besides default indexPath opts:\n // - chunksize[10]: How often to break apart concurrent requests\n static async indexPathFast(env, path){\n let opts = typeof env === \"string\" ? {env, path} : env;\n //Create a copy of the options in case we need to have a special first request\n let start = opts.start || 1;\n let initOpts = {...opts};\n if(opts.pageSize){\n initOpts.qs = {...opts.qs};\n initOpts.qs.page = `${start}p${opts.pageSize}`;\n }\n\n let json = await this.makeAPIRequest(initOpts);\n\n if(opts.observe && opts.start !== 1) json = await opts.observe(json);\n\n let baselink = json.links.first;\n const linkToPage = page => baselink.replace(`page=1p`, `page=${page}p`);\n\n let [numPages, pageSize] = this.numPages(json.links.last);\n\n //Construct an array of all the requests that are done simultanously.\n //Assume that the content from the inital request is the first page.\n let allResults = await this.keepalive(\n this.makeAPIRequest,\n [...this.range(start+1, Number(numPages) + 1 || opts.limit + 1)]\n .map(i => ({...opts, path_full: linkToPage(i)})),\n {chunksize: opts.chunksize, observe: opts.observe},\n );\n if(start == 1){\n allResults.unshift(json);\n }\n this.clearProgress();\n\n let all = [];\n for(let result of allResults){\n for(let item of result.data){\n all.push(item);\n }\n }\n\n return all;\n }\n static isLocalEnv(env){\n return !env || env === \"LOCAL\" || env === \"LOC\";\n }\n static envName(env){\n if(this.isLocalEnv(env)) return \"LOCAL\";\n return env;\n }\n};\n\nexport class AbortError extends Error{\n constructor(message){\n super(message);\n Error.captureStackTrace(this, this.constructor);\n this.name = \"AbortError\";\n }\n}\n\nexport class APIError extends Error{\n constructor(response, opts, body){\n super(chalk`\n{reset Request returned} {yellow ${response?.statusCode}}{\n{green ${JSON.stringify(opts, null, 4)}}\n{green ${body}}\n{reset ${response.body}}\n===============================\n{red ${response.body ? \"Request timed out\" : \"Bad response from API\"}}\n===============================\n `);\n this.response = response;\n this.opts = opts;\n this.body = body;\n\n Error.captureStackTrace(this, this.constructor);\n this.name = \"ApiError\";\n }\n}\n\nexport class UnconfiguredEnvError extends AbortError{\n constructor(env){\n super(\"Unconfigured enviornment: \" + env);\n this.name = \"Unconfigured Env Error\";\n }\n}\n\nexport class ProtectedEnvError extends AbortError{\n constructor(env){\n super(\"Protected enviornment: \" + env);\n this.name = \"Protected Env Error\";\n }\n}\n\nexport class FileTooLargeError extends Error{\n constructor(file){\n super(`File ${file.parentAsset ? file.parentAsset.name : \"(unknown)\"}/${file.name} size is: ${file.sizeGB}g (> ~.2G)`);\n this.name = \"File too large error\";\n }\n}\n\nexport class Collection{\n constructor(arr){\n this.arr = arr;\n }\n [Symbol.iterator](){\n return this.arr[Symbol.iterator]();\n }\n findById(id){\n return this.arr.find(x => x.id == id);\n }\n findByName(name){\n return this.arr.find(x => x.name == name);\n }\n findByNameContains(name){\n return this.arr.find(x => x.name.includes(name));\n }\n log(){\n for(let d of this){\n if(d){\n log(d.chalkPrint(true));\n }else{\n log(chalk`{red (None)}`);\n }\n }\n }\n get length(){return this.arr.length;}\n}\n\nexport class RallyBase{\n static handleCaching(){\n if(!this.cache) this.cache = [];\n }\n static isLoaded(env){\n if(!this.hasLoadedAll) return;\n return this.hasLoadedAll[env];\n }\n static async getById(env, id, qs){\n this.handleCaching();\n for(let item of this.cache){\n if(item.id == id && item.remote === env || `${env}-${id}` === item.metastring) return item;\n }\n\n let data = await lib.makeAPIRequest({\n env, path: `/${this.endpoint}/${id}`,\n qs\n });\n if(data.data){\n let o = new this({data: data.data, remote: env, included: data.included});\n this.cache.push(o);\n return o;\n }\n }\n\n static async getByName(env, name, qs){\n this.handleCaching();\n for(let item of this.cache){\n if(item.name === name && item.remote === env) return item;\n }\n\n let data = await lib.makeAPIRequest({\n env, path: `/${this.endpoint}`,\n qs: {...qs, filter: `name=${name}` + (qs ? qs.filter : \"\")},\n });\n //TODO included might not wokr correctly here\n if(data.data[0]){\n let o = new this({data: data.data[0], remote: env, included: data.included});\n this.cache.push(o);\n return o;\n }\n }\n\n static async getAllPreCollect(d){return d;}\n static async getAll(env){\n this.handleCaching();\n let datas = await lib.indexPathFast({\n env, path: `/${this.endpoint}`,\n pageSize: \"50\",\n qs: {sort: \"id\"},\n });\n datas = await this.getAllPreCollect(datas);\n let all = new Collection(datas.map(data => new this({data, remote: env})));\n this.cache = [...this.cache, ...all.arr];\n return all;\n }\n static async removeCache(env){\n this.handleCaching();\n this.cache = this.cache.filter(x => x.remote !== env);\n }\n\n //Specific turns name into id based on env\n //Generic turns ids into names\n async resolveApply(type, dataObj, direction){\n let obj;\n if(direction == \"generic\"){\n obj = await type.getById(this.remote, dataObj.id);\n if(obj){\n dataObj.name = obj.name\n }\n }else if(direction == \"specific\"){\n obj = await type.getByName(this.remote, dataObj.name);\n if(obj){\n dataObj.id = obj.id\n }\n }\n return obj;\n }\n\n //Type is the baseclass you are looking for (should extend RallyBase)\n //name is the name of the field\n //isArray is true if it has multiple cardinailty, false if it is single\n //direction gets passed directly to resolveApply\n async resolveField(type, name, isArray=false, direction=\"generic\"){\n // ignore empty fields\n let field = this.relationships[name];\n if(!field?.data) return;\n\n if(isArray){\n return await Promise.all(field.data.map(o => this.resolveApply(type, o, direction)));\n }else{\n return await this.resolveApply(type, field.data, direction);\n }\n }\n\n cleanup(){\n for(let [key, val] of Object.entries(this.relationships)){\n //Remove ids from data\n if(val.data){\n if(val.data.id){\n delete val.data.id;\n }else if(val.data[0]){\n for(let x of val.data) delete x.id;\n }\n }\n delete val.links;\n }\n // organization is unused (?)\n delete this.relationships.organization;\n // id is specific to envs\n // but save source inside meta string in case we need it\n this.metastring = this.remote + \"-\" + this.data.id;\n delete this.data.id;\n // links too\n delete this.data.links;\n }\n}\n\nexport function sleep(time = 1000){\n return new Promise(resolve => setTimeout(resolve, time));\n}\n","import {configObject} from \"./config.js\";\nimport {join} from \"path\";\nimport Preset from \"./preset.js\";\nimport Rule from \"./rule.js\";\nexport const inquirer = importLazy(\"inquirer\");\nconst readdir = importLazy(\"recursive-readdir\");\n\nlet hasAutoCompletePrompt = false;\nexport function addAutoCompletePrompt(){\n if(hasAutoCompletePrompt) return\n hasAutoCompletePrompt = true;\n inquirer.registerPrompt(\"autocomplete\", require(\"inquirer-autocomplete-prompt\"));\n}\n\nexport async function $api(propArray){\n let q;\n q = await inquirer.prompt([{\n type: \"input\",\n name: \"company\",\n message: `What is your company?`,\n default: `discovery`,\n }]);\n\n let company = q.company;\n\n const defaults = {\n DEV: `https://${company}-dev.sdvi.com/api/v2`,\n UAT: `https://${company}-uat.sdvi.com/api/v2`,\n QA: `https://${company}-qa.sdvi.com/api/v2`,\n PROD: `https://${company}.sdvi.com/api/v2`,\n };\n\n if(propArray && propArray[1]){\n q = {envs: [propArray[1]]};\n }else{\n //Create a checkbox prompt to choose enviornments\n q = await inquirer.prompt([{\n type: \"checkbox\",\n name: \"envs\",\n message: `What enviornments would you like to configure?`,\n choices: Object.keys(defaults).map(name => ({name, checked:true})),\n }]);\n }\n\n //Each env should ask 2 for two things: The url and the key.\n let questions = q.envs.map(env => {\n let defaultKey = process.env[`rally_api_key_${env}`];\n if(configObject && configObject.api && configObject.api[env]){\n defaultKey = configObject.api[env].key;\n }\n\n return [{\n type: \"input\",\n name: `api.${env}.url`,\n message: `What is the api endpoint for ${env}?`,\n default: defaults[env],\n }, {\n type: \"input\",\n name: `api.${env}.key`,\n message: `What is your api key for ${env}?`,\n default: defaultKey,\n }];\n });\n\n //flatten and ask\n questions = [].concat(...questions);\n q = await inquirer.prompt(questions);\n if(propArray){\n q.api = {...configObject.api, ...q.api};\n }\n return q;\n}\nexport async function $chalk(propArray){\n return {chalk: await askQuestion(\"Would you like chalk enabled (Adds coloring)?\")};\n}\nexport async function $restrictUAT(propArray){\n return {restrictUAT: await askQuestion(\"Would you like to protect UAT?\")};\n}\nexport async function $repodir(propArray){\n return await inquirer.prompt([{\n type: \"input\",\n name: `repodir`,\n message: `Where is your rally repository?`,\n default: process.env[\"rally_repo_path\"],\n }]);\n}\n\nexport async function $appName(propArray){\n let defaultAppName = \"cmdline-\" + (process.env.USERNAME || process.env.LOGNAME);\n let project = await askInput(\"Application name?\", defaultAppName);\n if(project === \"none\" || project === \"-\" || project === \"\" || !project){\n project = null\n }\n return {appName: project};\n}\n\nexport async function $project(propArray){\n let project = await askInput(\"Subproject directory?\");\n if(project === \"none\" || project === \"-\" || project === \"\" || !project){\n project = null\n }\n return {project};\n}\n\nexport async function $defaultEnv(propArray){\n return await inquirer.prompt([{\n type: \"input\",\n name: `defaultEnv`,\n message: `Default enviornment?`,\n default: \"DEV\",\n }]);\n}\n\n//Internal usage/testing\nexport async function selectProvider(providers, autoDefault = false){\n addAutoCompletePrompt();\n let defaultProvider = providers.findByName(\"SdviEvaluate\");\n if(autoDefault){\n return defaultProvider;\n }else{\n let choices = providers.arr.map(x => ({\n name: x.chalkPrint(true),\n value: x,\n }))\n let q = await inquirer.prompt([{\n type: \"autocomplete\",\n name: \"provider\",\n default: defaultProvider,\n source: async (sofar, input) => {\n return choices.filter(x => input ? x.value.name.toLowerCase().includes(input.toLowerCase()) : true);\n },\n }]);\n return q.provider;\n }\n}\n\nexport async function loadLocals(path, Class){\n let basePath = configObject.repodir;\n let f = await readdir(basePath);\n let objs = f.filter(name => name.includes(path)).map(name => new Class({path: name}));\n return objs;\n}\n\nexport async function selectLocal(path, typeName, Class, canSelectNone = true){\n addAutoCompletePrompt();\n let objs = loadLocals(path, Class);\n let objsMap = objs.map(x => ({\n name: x.chalkPrint(true),\n value: x,\n }));\n let none = {\n name: (chalk` {red None}: {red None}`),\n value: null,\n };\n\n if(canSelectNone) objsMap.unshift(none);\n\n let q = await inquirer.prompt([{\n type: \"autocomplete\",\n name: \"obj\",\n message: `What ${typeName} do you want?`,\n source: async (sofar, input) => {\n return objsMap.filter(x => input ? x.name.toLowerCase().includes(input.toLowerCase()) : true);\n },\n }]);\n return q.obj;\n}\n\nexport async function selectPreset({purpose = \"preset\", canSelectNone}){\n return selectLocal(\"silo-presets\", purpose, Preset, canSelectNone);\n}\nexport async function selectRule({purpose = \"rule\", canSelectNone}){\n return selectLocal(\"silo-rules\", purpose, Rule, canSelectNone);\n}\n\nexport async function askInput(question, def){\n return (await inquirer.prompt([{\n type: \"input\",\n name: \"ok\",\n message: question,\n default: def,\n }])).ok;\n}\n\nexport async function askQuestion(question){\n return (await inquirer.prompt([{\n type: \"confirm\",\n name: \"ok\",\n message: question,\n }])).ok;\n}\n","import {cached, defineAssoc} from \"./decorators.js\";\nimport {lib, Collection, RallyBase} from \"./rally-tools.js\";\n\nclass Provider extends RallyBase{\n constructor({data, remote}){\n super();\n this.data = data;\n this.meta = {};\n this.remote = remote;\n }\n //cached\n async getEditorConfig(){\n if(this.editorConfig) return this.editorConfig;\n\n this.editorConfig = await lib.makeAPIRequest({\n env: this.remote,\n path_full: this.data.links.editorConfig\n });\n this.editorConfig.fileExt = await this.getFileExtension();\n return this.editorConfig;\n }\n static async getAllPreCollect(providers){\n return providers.sort((a, b) => {\n return a.attributes.category.localeCompare(b.attributes.category) ||\n a.attributes.name .localeCompare(b.attributes.name);\n });\n }\n\n async getFileExtension(){\n let config = await this.getEditorConfig();\n let map = {\n python: \"py\",\n text: \"txt\",\n getmap(key){\n if(this.name === \"Aurora\") return \"zip\";\n if(this[key]) return this[key];\n return key;\n }\n }\n return map.getmap(config.lang);\n }\n\n chalkPrint(pad=true){\n let id = String(this.id)\n if(pad) id = id.padStart(4);\n return chalk`{green ${id}}: {blue ${this.category}} - {green ${this.name}}`;\n }\n}\n\ndefineAssoc(Provider, \"id\", \"data.id\");\ndefineAssoc(Provider, \"name\", \"data.attributes.name\");\ndefineAssoc(Provider, \"category\", \"data.attributes.category\");\ndefineAssoc(Provider, \"remote\", \"meta.remote\");\ndefineAssoc(Provider, \"editorConfig\", \"meta.editorConfig\");\nProvider.endpoint = \"providerTypes\";\n\nexport default Provider;\n","import {cached, defineAssoc} from \"./decorators.js\";\nimport {lib, Collection, RallyBase, FileTooLargeError} from \"./rally-tools.js\";\n\nclass File extends RallyBase{\n constructor({data, remote, included, parent}){\n super();\n this.data = data;\n this.meta = {};\n this.remote = remote;\n this.parentAsset = parent;\n }\n\n chalkPrint(pad=false){\n let id = String(\"F-\" + (this.remote && this.remote + \"-\" + this.id || \"LOCAL\"))\n if(pad) id = id.padStart(15);\n return chalk`{green ${id}}: {blue ${this.data.attributes ? this.name : \"(lite asset)\"}}`;\n }\n\n canBeDownloaded(){\n return this.sizeGB <= .2;\n }\n\n async getContent(force = false){\n if(!this.canBeDownloaded() && !force){\n throw new FileTooLargeError(this);\n }\n\n return lib.makeAPIRequest({\n env: this.remote, fullPath: this.contentLink\n });\n }\n async delete(remove = true){\n return lib.makeAPIRequest({\n env: this.remote, fullPath: this.selfLink,\n method: \"DELETE\",\n });\n }\n get size(){\n return Object.values(this.data.attributes.instances)[0].size\n }\n\n get sizeGB(){\n return Math.round(this.size / 1024 / 1024 / 1024 * 10) / 10;\n }\n}\n\ndefineAssoc(File, \"id\", \"data.id\");\ndefineAssoc(File, \"name\", \"data.attributes.label\");\ndefineAssoc(File, \"contentLink\", \"data.links.content\");\ndefineAssoc(File, \"selfLink\", \"data.links.self\");\ndefineAssoc(File, \"label\", \"data.attributes.label\");\ndefineAssoc(File, \"md5\", \"data.attributes.md5\");\ndefineAssoc(File, \"sha512\", \"data.attributes.sha512\");\ndefineAssoc(File, \"tags\", \"data.attributes.tagList\");\ndefineAssoc(File, \"instances\", \"data.attributes.instances\");\nFile.endpoint = null\n\nexport default File;\n","import {cached, defineAssoc} from \"./decorators.js\";\nimport {lib, Collection, RallyBase, sleep} from \"./rally-tools.js\";\nimport File from \"./file.js\";\nimport Provider from \"./providers.js\";\n\nclass Asset extends RallyBase{\n constructor({data, remote, included, lite}){\n super();\n this.data = data;\n this.meta = {};\n this.remote = remote;\n if(included){\n this.meta.metadata = Asset.normalizeMetadata(included);\n }\n this.lite = !!lite;\n }\n static normalizeMetadata(payload){\n let newMetadata = {}\n for(let md of payload){\n if(md.type !== \"metadata\") continue;\n newMetadata[md.attributes.usage] = md.attributes.metadata;\n }\n return newMetadata;\n }\n\n async getMetadata(forceRefresh = false){\n if(this.meta.metadata && !forceRefresh) return this.meta.metadata;\n let req = await lib.makeAPIRequest({\n env: this.remote, path: `/movies/${this.id}/metadata`,\n });\n\n return this.meta.metadata = Asset.normalizeMetadata(req.data);\n }\n\n async patchMetadata(metadata){\n if(metadata.Workflow && false){\n let req = await lib.makeAPIRequest({\n env: this.remote, path: `/movies/${this.id}/metadata/Workflow`,\n method: \"PATCH\",\n payload: {\n \"data\": {\n \"type\": \"metadata\",\n \"attributes\": {\n \"metadata\": metadata.Workflow\n },\n }\n }\n });\n }\n if(metadata.Metadata){\n let req = await lib.makeAPIRequest({\n env: this.remote, path: `/movies/${this.id}/metadata/Metadata`,\n method: \"PATCH\",\n payload: {\n \"data\": {\n \"type\": \"metadata\",\n \"attributes\": {\n \"metadata\": metadata.Metadata\n },\n }\n }\n });\n }\n }\n\n static lite(id, remote){\n return new this({data: {id}, remote, lite: true})\n }\n\n chalkPrint(pad=false){\n let id = String(\"A-\" + (this.remote && this.remote + \"-\" + this.id || \"LOCAL\"))\n if(pad) id = id.padStart(15);\n return chalk`{green ${id}}: {blue ${this.data.attributes ? this.name : \"(lite asset)\"}}`;\n }\n\n static async createNew(name, env){\n let req = await lib.makeAPIRequest({\n env, path: \"/assets\",\n method: \"POST\",\n payload: {\n data: {\n attributes: {name},\n type: \"assets\"\n }\n }\n });\n return new this({data: req.data, remote: env});\n }\n\n async delete(){\n let req = await lib.makeAPIRequest({\n env: this.remote, path: \"/assets/\" + this.id,\n method: \"DELETE\",\n });\n }\n\n async getFiles(){\n let req = await lib.indexPathFast({\n env: this.remote, path: `/assets/${this.id}/files`,\n method: \"GET\",\n });\n\n //return req;\n return new Collection(req.map(x => new File({data: x, remote: this.remote, parent: this})));\n }\n\n async addFile(label, fileuris){\n if(!Array.isArray(fileuris)) fileuris = [fileuris];\n\n let instances = {}\n for(let i = 0; i < fileuris.length; i++){\n instances[String(i + 1)] = {uri: fileuris[i]};\n }\n\n let req = await lib.makeAPIRequest({\n env: this.remote, path: \"/files\",\n method: \"POST\",\n payload: {\n \"data\": {\n \"attributes\": {\n label, instances,\n },\n \"relationships\": {\n \"asset\": {\n \"data\": {\n id: this.id,\n \"type\": \"assets\"\n }\n }\n },\n \"type\": \"files\"\n }\n\n }\n });\n return req;\n }\n async startWorkflow(jobName, {initData, priority} = {}){\n let attributes = {};\n if(initData){\n //Convert init data to string\n initData = typeof initData === \"string\" ? initData : JSON.stringify(initData);\n attributes.initData = initData;\n }\n if(priority){\n attributes.priority = priority\n }\n\n let req = await lib.makeAPIRequest({\n env: this.remote, path: \"/workflows\",\n method: \"POST\",\n payload: {\n \"data\": {\n \"type\": \"workflows\",\n attributes,\n \"relationships\": {\n \"movie\": {\n \"data\": {\n id: this.id,\n \"type\": \"movies\"\n }\n }, \"rule\": {\n \"data\": {\n \"attributes\": {\n \"name\": jobName,\n },\n \"type\": \"rules\"\n }\n }\n }\n }\n }\n });\n return req;\n }\n static async startAnonWorkflow(env, jobName, {initData, priority} = {}){\n let attributes = {};\n if(initData){\n //Convert init data to string\n initData = typeof initData === \"string\" ? initData : JSON.stringify(initData);\n attributes.initData = initData;\n }\n if(priority){\n attributes.priority = priority\n }\n\n let req = await lib.makeAPIRequest({\n env, path: \"/workflows\",\n method: \"POST\",\n payload: {\n \"data\": {\n \"type\": \"workflows\",\n attributes,\n \"relationships\": {\n \"rule\": {\n \"data\": {\n \"attributes\": {\n \"name\": jobName,\n },\n \"type\": \"rules\"\n }\n }\n }\n }\n }\n });\n return req;\n\n }\n\n async startEphemeralEvaluateIdeal(preset, dynamicPresetData){\n let res;\n const env = this.remote;\n let provider = await Provider.getByName(this.remote, \"SdviEvaluate\");\n\n write(chalk`Starting ephemeral evaluate on ${this.chalkPrint(false)}...`)\n\n // Fire and forget.\n let evalInfo = await lib.makeAPIRequest({\n env: this.remote, path: \"/jobs\", method: \"POST\",\n payload: {\n data: {\n attributes: {\n category: provider.category,\n providerTypeName: provider.name,\n rallyConfiguration: {},\n providerData: Buffer.from(preset.code, \"binary\").toString(\"base64\"),\n dynamicPresetData,\n },\n type: \"jobs\",\n relationships: {\n movie: {\n data: {\n id: this.id,\n type: \"movies\",\n }\n }\n }\n }\n }\n });\n\n write(\" Waiting for finish...\");\n for(;;){\n res = await lib.makeAPIRequest({\n env, path_full: evalInfo.data.links.self\n });\n write(\".\");\n if(res.data.attributes.state == \"Complete\"){\n write(chalk`{green Done}...\\n`);\n break;\n }\n await sleep(300);\n }\n\n return;\n }\n\n async startEvaluate(presetid, dynamicPresetData){\n // Fire and forget.\n let data = await lib.makeAPIRequest({\n env: this.remote, path: \"/jobs\", method: \"POST\",\n payload: {\n data: {\n type: \"jobs\",\n attributes: {\n dynamicPresetData,\n },\n relationships: {\n movie: {\n data: {\n id: this.id,\n type: \"movies\",\n }\n }, preset: {\n data: {\n id: presetid,\n type: \"presets\",\n }\n }\n }\n }\n }\n });\n return data;\n }\n async rename(newName){\n let req = await lib.makeAPIRequest({\n env: this.remote, path: `/assets/${this.id}`,\n method: \"PATCH\",\n payload: {\n data: {\n attributes: {\n name: newName,\n },\n type: \"assets\",\n }\n }\n });\n\n this.name = newName;\n\n return req;\n }\n}\n\ndefineAssoc(Asset, \"id\", \"data.id\");\ndefineAssoc(Asset, \"name\", \"data.attributes.name\");\ndefineAssoc(Asset, \"remote\", \"meta.remote\");\ndefineAssoc(Asset, \"md\", \"meta.metadata\");\ndefineAssoc(Asset, \"lite\", \"meta.lite\");\nAsset.endpoint = \"movies\"\n\nexport default Asset;\n","import fs from \"fs\";\nimport {dirname} from \"path\";\n\nimport {configObject} from \"./config.js\";\nimport {homedir} from \"os\";\n\n\nlet home;\nif(homedir){\n home = homedir();\n}\nconst colon = /:/g;\nconst siloLike = /(silo\\-\\w+?)s?\\/([^\\/]+)\\.([\\w1234567890]+)$/g;\nexport function pathTransform(path){\n if(path.includes(\":\")){\n //Ignore the first colon in window-like filesystems\n path = path.slice(0, 3) + path.slice(3).replace(colon, \"--\");\n }\n if(configObject.invertedPath){\n path = path.replace(siloLike, \"$2-$1.$3\")\n }\n if(path.includes(\"\\\\342\\\\200\\\\220\")){\n path = path.replace(\"\\\\342\\\\200\\\\220\", \"‐\");\n }\n return path;\n}\n\nexport function readFileSync(path, options){\n return fs.readFileSync(pathTransform(path), options);\n}\n//Create writefilesync, with ability to create directory if it doesnt exist\nexport function writeFileSync(path, data, options, dircreated = false){\n path = pathTransform(path);\n try{\n return fs.writeFileSync(path, data, options);\n }catch(e){\n if(dircreated) throw e;\n let directory = dirname(path);\n try{\n fs.statSync(directory);\n throw e;\n }catch(nodir){\n fs.mkdirSync(directory);\n return writeFileSync(path, data, options, true);\n }\n }\n}\n","import {RallyBase, lib, AbortError, Collection} from \"./rally-tools.js\";\nimport {basename, resolve as pathResolve, dirname} from \"path\";\nimport {cached, defineAssoc, spawn} from \"./decorators.js\";\nimport {configObject} from \"./config.js\";\nimport {loadLocals} from \"./config-create\";\nimport Provider from \"./providers.js\";\nimport Asset from \"./asset.js\";\n\n// pathtransform for hotfix\nimport {writeFileSync, readFileSync, pathTransform} from \"./fswrap.js\";\nimport path from \"path\";\nimport moment from \"moment\";\n\nlet exists = {};\n\nclass Preset extends RallyBase{\n constructor({path, remote, data, subProject} = {}){\n // Get full path if possible\n if(path){\n path = pathResolve(path);\n if(dirname(path).includes(\"silo-metadata\")){\n throw new AbortError(\"Constructing preset from metadata file\")\n }\n }\n\n super();\n\n\n // Cache by path\n if(path){\n if(exists[pathTransform(path)]) return exists[pathTransform(path)];\n exists[pathTransform(path)] = this;\n }\n\n this.meta = {};\n this.subproject = subProject;\n this.remote = remote\n if(lib.isLocalEnv(this.remote)){\n if(path){\n this.path = path;\n let pathspl = this.path.split(\".\");\n this.ext = pathspl[pathspl.length-1];\n try{\n this.code = this.getLocalCode();\n }catch(e){\n if(e.code === \"ENOENT\" && configObject.ignoreMissing){\n this.missing = true;\n return undefined;\n }else{\n log(chalk`{red Node Error} ${e.message}`);\n throw new AbortError(\"Could not load code of local file\");\n }\n }\n let name = this.parseFilenameForName() || this.parseCodeForName();\n try{\n this.data = this.getLocalMetadata();\n this.isGeneric = true;\n name = this.name;\n }catch(e){\n log(chalk`{yellow Warning}: ${path} does not have a readable metadata file! Looking for ${this.localmetadatapath}`);\n this.data = Preset.newShell(name);\n this.isGeneric = false;\n }\n this.name = name;\n }else{\n this.data = Preset.newShell();\n }\n }else{\n this.data = data;\n //this.name = data.attributes.name;\n //this.id = data.id;\n this.isGeneric = false;\n }\n this.data.attributes.rallyConfiguration = undefined;\n this.data.attributes.systemManaged = undefined;\n }\n //Given a metadata file, get its actualy file\n static async fromMetadata(path, subproject){\n let data;\n try{\n data = JSON.parse(readFileSync(path));\n }catch(e){\n if(e.code === \"ENOENT\" && configObject.ignoreMissing){\n return null;\n }else{\n throw e;\n }\n }\n let providerType = data.relationships.providerType.data.name;\n let provider = await Provider.getByName(\"DEV\", providerType);\n\n if(!provider){\n log(chalk`{red The provider type {green ${providerType}} does not exist}`);\n log(chalk`{red Skipping {green ${path}}.}`);\n return null;\n }\n\n let ext = await provider.getFileExtension();\n let name = data.attributes.name;\n\n let realpath = Preset.getLocalPath(name, ext, subproject);\n return new Preset({path: realpath, subProject: subproject});\n }\n\n static newShell(name = undefined){\n return {\n \"attributes\": {\n \"providerSettings\": {\n \"PresetName\": name\n }\n },\n \"relationships\": {},\n \"type\": \"presets\",\n };\n }\n cleanup(){\n super.cleanup();\n delete this.attributes[\"createdAt\"];\n delete this.attributes[\"updatedAt\"];\n }\n async acclimatize(env){\n if(!this.isGeneric) throw new AbortError(\"Cannot acclimatize non-generics or shells\");\n let providers = await Provider.getAll(env);\n let ptype = this.relationships[\"providerType\"];\n ptype = ptype.data;\n\n let provider = providers.findByName(ptype.name);\n ptype.id = provider.id;\n }\n get test(){\n if(!this.code) return [];\n\n const regex = /[^-]autotest:\\s?([\\w\\d_\\-. \\/]+)[\\r\\s\\n]*?/gm;\n let match\n let matches = []\n while(match = regex.exec(this.code)){\n matches.push(match[1]);\n }\n return matches\n }\n async runTest(env){\n let remote = await Preset.getByName(env, this.name);\n for(let test of this.test){\n log(\"Tests...\");\n let asset;\n\n if(test.startsWith(\"id\")){\n let match = /id:\\s*(\\d+)/g.exec(test);\n if(!match){\n log(chalk`{red Could not parse autotest} ${test}.`);\n throw new AbortError(\"Could not properly parse the preset header\");\n }\n asset = await Asset.getById(env, match[1]);\n }else{\n asset = await Asset.getByName(env, test);\n }\n\n if(!asset){\n log(chalk`{yellow No movie found}, skipping test.`);\n continue;\n }\n\n log(chalk`Starting job {green ${this.name}} on ${asset.chalkPrint(false)}... `);\n await asset.startEvaluate(remote.id);\n }\n }\n async resolve(){\n if(this.isGeneric) return;\n\n let proType = await this.resolveField(Provider, \"providerType\");\n\n this.ext = await proType.getFileExtension();\n\n this.isGeneric = true;\n\n return {proType};\n }\n async saveLocal(){\n await this.saveLocalMetadata();\n await this.saveLocalFile();\n }\n async saveLocalMetadata(){\n if(!this.isGeneric){\n await this.resolve();\n this.cleanup();\n }\n writeFileSync(this.localmetadatapath, JSON.stringify(this.data, null, 4));\n }\n async saveLocalFile(){\n writeFileSync(this.localpath, this.code);\n }\n async uploadRemote(env){\n await this.uploadCodeToEnv(env, true);\n }\n async save(env){\n this.saved = true;\n if(!this.isGeneric){\n await this.resolve();\n }\n\n this.cleanup();\n if(lib.isLocalEnv(env)){\n log(chalk`Saving preset {green ${this.name}} to {blue ${lib.envName(env)}}.`)\n await this.saveLocal();\n }else{\n await this.uploadRemote(env);\n }\n }\n\n async downloadCode(){\n if(!this.remote || this.code) return this.code;\n let code = await lib.makeAPIRequest({\n env: this.remote,\n path_full: this.data.links.providerData,\n json: false,\n });\n\n //match header like \n // # c: d\n // # b\n // # a\n // ##################\n let headerRegex = /(^# .+[\\r\\n]+)+#+[\\r\\n]+/gim;\n let hasHeader = headerRegex.exec(code);\n\n if(hasHeader){\n this.header = code.substring(0, hasHeader[0].length - 1);\n code = code.substring(hasHeader[0].length);\n }\n\n return this.code = code;\n }\n\n get code(){\n if(this._code) return this._code;\n }\n set code(v){this._code = v;}\n\n chalkPrint(pad=true){\n let id = String(\"P-\" + (this.remote && this.remote + \"-\" + this.id || \"LOCAL\"))\n let sub = \"\";\n if(this.subproject){\n sub = chalk`{yellow ${this.subproject}}`;\n }\n if(pad) id = id.padStart(10);\n if(this.name == undefined){\n return chalk`{green ${id}}: ${sub}{red ${this.path}}`;\n }else if(this.meta.proType){\n return chalk`{green ${id}}: ${sub}{red ${this.meta.proType.name}} {blue ${this.name}}`;\n }else{\n return chalk`{green ${id}}: ${sub}{blue ${this.name}}`;\n }\n }\n parseFilenameForName(){\n if(this.path.endsWith(\".jinja\") || this.path.endsWith(\".json\")){\n return basename(this.path)\n .replace(\"_\", \" \")\n .replace(\"-\", \" \")\n .replace(\".json\", \"\")\n .replace(\".jinja\", \"\");\n }\n }\n\n parseCodeForName(){\n const name_regex = /name\\s?:\\s([\\w\\d. \\/]+)[\\r\\s\\n]*?/;\n const match = name_regex.exec(this.code);\n if(match) return match[1];\n }\n\n findStringsInCode(strings){\n if(!this.code) return [];\n\n return strings.filter(str => {\n let regex = new RegExp(str);\n return !!this.code.match(regex);\n });\n }\n static getLocalPath(name, ext, subproject){\n return path.join(configObject.repodir, subproject || \"\", \"silo-presets\", name + \".\" + ext);\n }\n get localpath(){return Preset.getLocalPath(this.name, this.ext, this.subproject)}\n\n get path(){\n if(this._path) return this._path;\n }\n set path(val){\n this._path = val;\n }\n get name(){\n return this._nameOuter;\n }\n set name(val){\n if(!this._nameInner) this._nameInner = val;\n this._nameOuter = val;\n }\n set providerType(value){\n this.relationships[\"providerType\"] = {\n data: {\n ...value,\n type: \"providerTypes\",\n }\n };\n }\n get localmetadatapath(){\n if(this.path){\n return this.path.replace(\"silo-presets\", \"silo-metadata\").replace(new RegExp(this.ext + \"$\"), \"json\")\n }\n return path.join(configObject.repodir, this.subproject || \"\", \"silo-metadata\", this.name + \".json\");\n }\n get immutable(){\n return this.name.includes(\"Constant\") && !configObject.updateImmutable;\n }\n async uploadPresetData(env, id){\n if(this.code.trim() === \"NOUPLOAD\"){\n write(chalk`code skipped {yellow :)}, `);\n return;\n }\n\n let code = this.code;\n let headers = {};\n\n let providerName = this.relationships?.providerType?.data?.name;\n if(!configObject.skipHeader && (providerName === \"SdviEvaluate\" || providerName === \"SdviEvalPro\")){\n write(chalk`generate header, `);\n let repodir = configObject.repodir;\n let localpath = this.path.replace(repodir, \"\");\n if(localpath.startsWith(\"/\")) localpath = localpath.substring(1);\n\n try{\n let {stdout: headerText} = await spawn(\n {noecho: true},\n \"sh\",\n [\n path.join(configObject.repodir, `bin/header.sh`),\n moment(Date.now()).format(\"ddd YYYY/MM/DD hh:mm:ssa\"),\n localpath,\n ]\n );\n code = headerText + code;\n write(chalk`header ok, `);\n }catch(e){\n write(chalk`missing unix, `);\n }\n }\n\n //binary presets\n if(providerName == \"Vantage\"){\n code = code.toString(\"base64\");\n headers[\"Content-Transfer-Encoding\"] = \"base64\";\n }\n\n let res = await lib.makeAPIRequest({\n env, path: `/presets/${id}/providerData`,\n body: code, method: \"PUT\", fullResponse: true, timeout: 10000,\n headers,\n });\n write(chalk`code up {yellow ${res.statusCode}}, `);\n }\n async grabMetadata(env){\n let remote = await Preset.getByName(env, this.name);\n this.isGeneric = false;\n if(!remote){\n throw new AbortError(`No file found on remote ${env} with name ${this.name}`);\n }\n this.data = remote.data;\n this.remote = env;\n }\n\n async deleteRemoteVersion(env, id=null){\n if(lib.isLocalEnv(env)) return false;\n if(!id){\n let remote = await Preset.getByName(env, this.name);\n id = remote.id;\n }\n\n return await lib.makeAPIRequest({\n env, path: `/presets/${id}`,\n method: \"DELETE\",\n });\n }\n\n async delete(){\n if(lib.isLocalEnv(this.remote)) return false;\n\n return await this.deleteRemoteVersion(this.remote, this.id);\n }\n\n async uploadCodeToEnv(env, includeMetadata, shouldTest = true){\n if(!this.name){\n let match;\n if(match = /^(#|[\"']{3})\\s*EPH (\\d+)/.exec(this.code.trim())){\n let a = await Asset.getById(env, Number(match[2]))\n return a.startEphemeralEvaluateIdeal(this);\n }else{\n log(chalk`Failed uploading {red ${this.path}}. No name found.`);\n return;\n }\n }\n\n write(chalk`Uploading preset {green ${this.name}} to {green ${env}}: `);\n\n if(this.immutable){\n log(chalk`{magenta IMMUTABLE}. Nothing to do.`);\n return;\n }\n\n //First query the api to see if this already exists.\n let remote = await Preset.getByName(env, this.name);\n\n if(remote){\n //If it exists we can replace it\n write(\"replace, \");\n if(includeMetadata){\n let payload = {data: {attributes: this.data.attributes, type: \"presets\"}};\n if(this.relationships.tagNames){\n payload.relationships = {tagNames: this.relationships.tagNames};\n }\n let res = await lib.makeAPIRequest({\n env, path: `/presets/${remote.id}`, method: \"PATCH\",\n payload,\n fullResponse: true,\n });\n write(chalk`metadata {yellow ${res.statusCode}}, `);\n if(res.statusCode == 500){\n log(chalk`skipping code upload, did not successfully upload metadata`)\n return;\n }\n }\n\n await this.uploadPresetData(env, remote.id);\n }else{\n write(\"create, \");\n let metadata = {data: this.data};\n if(!this.relationships[\"providerType\"]){\n throw new AbortError(\"Cannot acclimatize shelled presets. (try creating it on the env first)\");\n }\n\n await this.acclimatize(env);\n write(\"Posting to create preset... \");\n let res = await lib.makeAPIRequest({\n env, path: `/presets`, method: \"POST\",\n payload: metadata, timeout: 5000,\n });\n let id = res.data.id;\n write(chalk`Created id {green ${id}}... Uploading Code... `);\n await this.uploadPresetData(env, id);\n }\n if(this.test[0] && shouldTest){\n await this.runTest(env);\n }else{\n log(\"No tests. Done.\");\n }\n }\n\n getLocalMetadata(){\n return JSON.parse(readFileSync(this.localmetadatapath, \"utf-8\"));\n }\n getLocalCode(){\n //todo fixup for binary presets, see uploadPresetData\n return readFileSync(this.path, \"utf-8\");\n }\n\n parseHeaderInfo(){\n if(!this.header) return null;\n let abs = {\n built: /Built On:(.+)/.exec(this.header)[1]?.trim(),\n author: /Author:(.+)/.exec(this.header)[1]?.trim(),\n build: /Build:(.+)/.exec(this.header)[1]?.trim(),\n version: /Version:(.+)/.exec(this.header)[1]?.trim(),\n branch: /Branch:(.+)/.exec(this.header)[1]?.trim(),\n commit: /Commit:(.+)/.exec(this.header)[1]?.trim(),\n local: /Local File:(.+)/.exec(this.header)[1]?.trim(),\n }\n\n let tryFormats = [\n [true, \"ddd MMM DD HH:mm:ss YYYY\"],\n [false, \"ddd YYYY/MM/DD LTS\"],\n ];\n\n for(let [isUTC, format] of tryFormats){\n let date;\n if(isUTC){\n date = moment.utc(abs.built, format)\n }else{\n date = moment(abs.built, format)\n }\n\n if(!date.isValid()) continue;\n\n abs.offset = date.fromNow();\n\n break;\n }\n\n return abs;\n }\n\n async printRemoteInfo(env){\n let remote = await Preset.getByName(env, this.name);\n await remote.downloadCode();\n let i = remote.parseHeaderInfo();\n\n if(i){\n log(chalk`\n ENV: {red ${env}}, updated {yellow ~${i.offset}}\n Built on {blue ${i.built}} by {green ${i.author}}\n From ${i.build || \"(unknown)\"} on ${i.branch} ({yellow ${i.commit}})\n `.replace(/^[ \\t]+/gim, \"\").trim());\n }else{\n log(chalk`No header on {red ${env}}`);\n }\n }\n\n async getInfo(envs){\n await this.printDepends();\n for(let env of envs.split(\",\")){\n await this.printRemoteInfo(env);\n }\n }\n\n async printDepends(indent=0, locals=null, seen={}){\n let includeRegex = /@include \"(.+)\"/gim;\n let includes = this.code\n .split(\"\\n\")\n .map(x => includeRegex.exec(x))\n .filter(x => x)\n .map(x => x[1]);\n\n if(!locals){\n locals = new Collection(await loadLocals(\"silo-presets\", Preset));\n }\n\n log(Array(indent + 1).join(\" \") + \"- \" + this.name);\n\n for(let include of includes){\n if(seen[include]){\n log(Array(indent + 1).join(\" \") + \" - (seen) \" + include);\n }else{\n seen[include] = true\n await locals.findByName(include).printDepends(indent + 2, locals, seen);\n }\n }\n }\n}\n\ndefineAssoc(Preset, \"_nameInner\", \"data.attributes.providerSettings.PresetName\");\ndefineAssoc(Preset, \"_nameOuter\", \"data.attributes.name\");\ndefineAssoc(Preset, \"id\", \"data.id\");\ndefineAssoc(Preset, \"attributes\", \"data.attributes\");\ndefineAssoc(Preset, \"relationships\", \"data.relationships\");\ndefineAssoc(Preset, \"remote\", \"meta.remote\");\ndefineAssoc(Preset, \"_code\", \"meta.code\");\ndefineAssoc(Preset, \"_path\", \"meta.path\");\ndefineAssoc(Preset, \"isGeneric\", \"meta.isGeneric\");\ndefineAssoc(Preset, \"ext\", \"meta.ext\");\ndefineAssoc(Preset, \"subproject\", \"meta.project\");\ndefineAssoc(Preset, \"metastring\", \"meta.metastring\");\nPreset.endpoint = \"presets\";\n\nexport default Preset;\n","import {cached, defineAssoc} from \"./decorators.js\";\nimport {lib, Collection, RallyBase} from \"./rally-tools.js\";\n\nclass Notification extends RallyBase{\n constructor({data, remote}){\n super();\n this.data = data;\n this.meta = {};\n this.remote = remote;\n }\n\n static async getAllPreCollect(notifications){\n return notifications.sort((a, b) => {\n return a.attributes.type.localeCompare(b.attributes.type) ||\n a.attributes.name.localeCompare(b.attributes.name);\n });\n }\n\n chalkPrint(pad=false){\n let id = String(\"N-\" + this.id)\n if(pad) id = id.padStart(4);\n return chalk`{green ${id}}: {blue ${this.type}} - {green ${this.name}}`;\n }\n}\n\ndefineAssoc(Notification, \"id\", \"data.id\");\ndefineAssoc(Notification, \"name\", \"data.attributes.name\");\ndefineAssoc(Notification, \"address\", \"data.attributes.address\");\ndefineAssoc(Notification, \"type\", \"data.attributes.type\");\ndefineAssoc(Notification, \"remote\", \"meta.remote\");\nNotification.endpoint = \"notificationPresets\"\n\nexport default Notification;\n","import {cached, defineAssoc} from \"./decorators.js\";\nimport {RallyBase, lib, Collection, AbortError} from \"./rally-tools.js\";\nimport {configObject} from \"./config.js\";\nimport Preset from \"./preset.js\";\nimport Provider from \"./providers.js\";\nimport Notification from \"./notification.js\";\n\nimport {writeFileSync, readFileSync} from \"./fswrap.js\";\nimport {join, resolve as pathResolve} from \"path\";\n\nclass Rule extends RallyBase{\n constructor({path, data, remote, subProject} = {}){\n super();\n if(path){\n path = pathResolve(path);\n try{\n let f = readFileSync(path, \"utf-8\")\n data = JSON.parse(readFileSync(path, \"utf-8\"));\n }catch(e){\n if(e.code === \"ENOENT\"){\n if(configObject.ignoreMissing){\n this.missing = true;\n return undefined;\n }else{\n throw new AbortError(\"Could not load code of local file\");\n }\n }else{\n throw new AbortError(`Unreadable JSON in ${path}. ${e}`);\n }\n }\n }\n this.meta = {};\n this.subproject = subProject;\n if(!data){\n data = Rule.newShell();\n }\n this.data = data;\n this.remote = remote;\n this.isGeneric = !this.remote;\n }\n\n static newShell(){\n return {\n \"attributes\": {\n \"description\": \"-\",\n \"priority\": \"PriorityNorm\",\n \"starred\": false,\n },\n \"relationships\": {},\n \"type\": \"workflowRules\",\n };\n }\n\n async acclimatize(env){\n this.remote = env;\n\n let preset = await this.resolveField(Preset, \"preset\", false, \"specific\");\n let pNext = await this.resolveField(Rule, \"passNext\", false, \"specific\");\n let eNext = await this.resolveField(Rule, \"errorNext\", false, \"specific\");\n let proType = await this.resolveField(Provider, \"providerType\", false, \"specific\");\n\n let dynamicNexts = await this.resolveField(Rule, \"dynamicNexts\", true, \"specific\");\n\n let enterNotif = await this.resolveField(Notification, \"enterNotifications\", true, \"specific\");\n let errorNotif = await this.resolveField(Notification, \"errorNotifications\", true, \"specific\");\n let passNotif = await this.resolveField(Notification, \"passNotifications\", true, \"specific\");\n }\n async saveA(env){\n if(lib.isLocalEnv(env)) return;\n return await this.createIfNotExist(env);\n }\n async saveB(env){\n if(!this.isGeneric){\n await this.resolve();\n }\n this.cleanup();\n if(lib.isLocalEnv(env)){\n log(chalk`Saving rule {green ${this.name}} to {blue ${lib.envName(env)}}.`)\n writeFileSync(this.localpath, JSON.stringify(this.data, null, 4));\n }else{\n await this.acclimatize(env);\n await this.uploadRemote(env);\n }\n }\n get immutable(){\n return false;\n }\n async createIfNotExist(env){\n write(chalk`First pass rule {green ${this.name}} to {green ${env}}: `);\n\n if(this.immutable){\n log(chalk`{magenta IMMUTABLE}. Nothing to do.`);\n return;\n }\n\n //First query the api to see if this already exists.\n let remote = await Rule.getByName(env, this.name);\n\n this.idMap = this.idMap || {};\n\n if(remote){\n this.idMap[env] = remote.id;\n log(chalk`exists ${remote.chalkPrint(false)}`);\n return;\n }\n\n //If it exists we can replace it\n write(\"create, \");\n let res = await lib.makeAPIRequest({\n env, path: `/workflowRules`, method: \"POST\",\n payload: {data: {attributes: {name: this.name}, type: \"workflowRules\"}},\n });\n this.idMap = this.idMap || {};\n this.idMap[env] = res.data.id;\n write(\"id \");\n log(this.idMap[env]);\n }\n\n async patchStrip(){\n delete this.data.attributes.createdAt;\n delete this.data.attributes.starred;\n delete this.data.attributes.updatedAt;\n\n // TEMP FIX FOR BUG IN SDVI\n if(this.relationships.passMetadata && this.relationships.passMetadata[0]){\n log(\"HAS PASS\");\n log(this.name);\n log(\"HAS PASS\");\n }\n delete this.relationships.passMetadata;\n\n if(this.relationships.errorMetadata && this.relationships.errorMetadata[0]){\n log(\"HAS PASS\");\n log(this.name);\n log(\"HAS PASS\");\n }\n delete this.relationships.errorMetadata;\n\n // This is commented out because it was fixed.\n //for(let key in this.relationships){\n //let relationship = this.relationships[key];\n //if(!relationship.data || relationship.data instanceof Array && !relationship.data[0]){\n //delete this.relationships[key];\n //}\n //}\n }\n\n async uploadRemote(env){\n write(chalk`Uploading rule {green ${this.name}} to {green ${env}}: `);\n\n if(this.immutable){\n log(chalk`{magenta IMMUTABLE}. Nothing to do.`);\n return;\n }\n\n if(this.idMap[env]){\n this.remote = env;\n\n await this.patchStrip();\n this.data.id = this.idMap[env];\n //If it exists we can replace it\n write(\"replace, \");\n let res = await lib.makeAPIRequest({\n env, path: `/workflowRules/${this.idMap[env]}`, method: \"PATCH\",\n payload: {data: this.data}, fullResponse: true,\n });\n\n log(chalk`response {yellow ${res.statusCode}}`);\n if(res.statusCode !== 200){\n log(res.body)\n log(JSON.stringify(this.data, null, 4));\n }\n }else{\n throw Error(\"Bad idmap!\");\n }\n }\n\n get localpath(){\n return join(configObject.repodir, this.subproject || \"\", \"silo-rules\", this.name + \".json\");\n }\n\n async resolve(){\n let preset = await this.resolveField(Preset, \"preset\", false);\n //log(preset);\n let pNext = await this.resolveField(Rule, \"passNext\", false);\n let eNext = await this.resolveField(Rule, \"errorNext\", false);\n let proType = await this.resolveField(Provider, \"providerType\", false);\n\n //log(\"Dynamic nexts\")\n let dynamicNexts = await this.resolveField(Rule, \"dynamicNexts\", true);\n //log(dynamicNexts);\n\n let enterNotif = await this.resolveField(Notification, \"enterNotifications\", true);\n let errorNotif = await this.resolveField(Notification, \"errorNotifications\", true);\n let passNotif = await this.resolveField(Notification, \"passNotifications\", true);\n\n //TODO Unsupported\n delete this.relationships[\"enterMetadata\"]\n delete this.relationships[\"errorMetadata\"]\n\n this.isGeneric = true;\n\n return {\n preset, proType,\n pNext, eNext,\n dynamicNexts,\n errorNotif, enterNotif, passNotif,\n };\n }\n\n chalkPrint(pad=true){\n let id = String(\"R-\" + (this.remote && this.remote + \"-\" + this.id || \"LOCAL\"))\n let sub = \"\";\n if(this.subproject){\n sub = chalk`{yellow ${this.subproject}}`;\n }\n if(pad) id = id.padStart(10);\n try{\n return chalk`{green ${id}}: ${sub}{blue ${this.name}}`;\n }catch(e){\n return this.data;\n }\n }\n}\n\ndefineAssoc(Rule, \"name\", \"data.attributes.name\");\ndefineAssoc(Rule, \"description\", \"data.attributes.description\");\ndefineAssoc(Rule, \"id\", \"data.id\");\ndefineAssoc(Rule, \"relationships\", \"data.relationships\");\ndefineAssoc(Rule, \"isGeneric\", \"meta.isGeneric\");\ndefineAssoc(Rule, \"remote\", \"meta.remote\");\ndefineAssoc(Rule, \"subproject\", \"meta.project\");\ndefineAssoc(Rule, \"idMap\", \"meta.idMap\");\nRule.endpoint = \"workflowRules\";\n\nexport default Rule;\n","import Rule from \"./rule.js\";\nimport Preset from \"./preset.js\";\nimport Provider from \"./providers.js\";\nimport Notification from \"./notification.js\";\nimport {Collection, lib} from \"./rally-tools.js\";\nimport {configObject} from \"./config.js\";\n\n\n//TODO\n//Move project into silo metadata\n//move autotest into silo metadata\n//\n\nexport default class SupplyChain{\n constructor(startingRule, stopRule){\n if(startingRule){\n this.startingRule = startingRule;\n this.stopRule = stopRule\n this.remote = startingRule.remote;\n }\n }\n async downloadPresetCode(objs = this.allPresets){\n log(\"Downloading code... \");\n await lib.keepalive(objs.arr.map(x => () => x.downloadCode()));\n }\n async calculate(){\n log(\"Getting rules... \");\n this.allRules = await Rule.getAll(this.remote);\n log(this.allRules.length);\n\n log(\"Getting presets... \");\n this.allPresets = await Preset.getAll(this.remote);\n log(this.allPresets.length);\n\n log(\"Getting providers... \");\n this.allProviders = await Provider.getAll(this.remote);\n log(this.allProviders.length);\n\n log(\"Getting notifications... \");\n this.allNotifications = await Notification.getAll(this.remote);\n log(this.allNotifications.length);\n\n if(!this.startingRule){\n this.rules = this.allRules;\n this.presets = this.allPresets;\n this.notifications = new Collection([]);\n\n await this.downloadPresetCode();\n return\n }else{\n await this.downloadPresetCode();\n }\n\n log(\"Done!\");\n\n //Now we have everything we need to find a whole supply chain\n\n write(\"Calculating Supply chain... \");\n log(this.startingRule.chalkPrint());\n\n let allRuleNames = this.allRules.arr.map(x => x.name).filter(x => x.length >= 4);\n let allPresetNames = this.allPresets.arr.map(x => x.name).filter(x => x.length >= 4);\n let allNotifNames = this.allNotifications.arr.map(x => x.name).filter(x => x.length >= 4);\n let requiredNotifications = new Set();\n\n let ruleQueue = [this.startingRule];\n let presetQueue = [];\n for(let currentRule of ruleQueue){\n if(currentRule === this.stopRule) continue;\n let {\n eNext, pNext, preset,\n passNotif, errorNotif, enterNotif\n } = await currentRule.resolve();\n\n\n passNotif .forEach(n => requiredNotifications.add(n));\n enterNotif.forEach(n => requiredNotifications.add(n));\n errorNotif.forEach(n => requiredNotifications.add(n));\n\n if(eNext && !ruleQueue.includes(eNext)) ruleQueue.push(eNext);\n if(pNext && !ruleQueue.includes(eNext)) ruleQueue.push(pNext);\n\n let neededPresets = preset.findStringsInCode(allPresetNames);\n neededPresets = neededPresets.map(x => this.allPresets.findByName(x));\n\n let neededRules = preset.findStringsInCode(allRuleNames);\n neededRules = neededRules.map(x => this.allRules.findByName(x));\n\n preset\n .findStringsInCode(allNotifNames)\n .map(str => this.allNotifications.findByName(str))\n .forEach(notif => requiredNotifications.add(notif));\n\n neededPresets.push(preset);\n\n for(let p of neededPresets) if(!presetQueue.includes(p)) presetQueue.push(p);\n for(let p of neededRules) if(!ruleQueue .includes(p)) ruleQueue .push(p);\n\n if(configObject.verbose){\n write(currentRule.chalkPrint(false));\n log(\":\");\n write(\" \");\n write(preset.chalkPrint(false));\n log(\":\");\n write(\" Pass Next: \"); if(pNext) write(pNext.chalkPrint(false)); else write(\"None\");\n log(\"\");\n write(\" Err Next: \"); if(eNext) write(eNext.chalkPrint(false)); else write(\"None\");\n log(\"\");\n log(\" Rules:\");\n\n for(let p of neededRules) log(\" \" + p.chalkPrint(true));\n\n log(\" Presets:\");\n for(let p of neededPresets) log(\" \" + p.chalkPrint(true));\n\n log(\"\\n\");\n }\n }\n\n log(\"Done!\")\n\n this.rules = new Collection(ruleQueue);\n this.presets = new Collection(presetQueue);\n requiredNotifications.delete(undefined);\n this.notifications = new Collection([...requiredNotifications]);\n }\n async log(){\n if(this.notifications.arr.length > 0){\n log(\"Required notifications: \");\n this.notifications.log();\n }\n\n if(this.rules.arr.length > 0){\n write(\"Required rules: \");\n log(this.rules.arr.length);\n this.rules.log();\n }\n\n if(this.presets.arr.length > 0){\n write(\"Required presets: \");\n log(this.presets.arr.length);\n this.presets.log();\n }\n\n if(configObject.rawOutput){\n return {presets: this.presets.arr, rules: this.rules.arr, notifications: this.notifications.arr};\n }\n }\n async deleteTo(env){\n for(let preset of this.presets){\n try{\n await preset.deleteRemoteVersion(env);\n }catch(e){log(e);}\n }\n }\n async syncTo(env){\n for(let preset of this.presets){\n try{\n await preset.save(env);\n }catch(e){log(e);}\n }\n if(this.rules.arr[0]){\n log(\"Starting create phase for rules\")\n for(let rule of this.rules){\n try{\n await rule.saveA(env);\n }catch(e){log(e);}\n }\n\n log(\"OK\")\n log(\"Starting link phase for rules\");\n Rule.removeCache(env);\n\n for(let rule of this.rules){\n try{\n await rule.saveB(env);\n }catch(e){log(e);}\n }\n }\n }\n}\n","import {cached, defineAssoc} from \"./decorators.js\";\nimport {lib, Collection, RallyBase} from \"./rally-tools.js\";\n\nclass User extends RallyBase{\n constructor({data, remote}){\n super();\n this.data = data;\n this.meta = {};\n this.remote = remote;\n }\n chalkPrint(pad=false){\n let id = String(\"U-\" + this.id)\n if(pad) id = id.padStart(7);\n return chalk`{green ${id}}: {blue ${this.name}}`;\n }\n}\n\ndefineAssoc(User, \"id\", \"data.id\");\ndefineAssoc(User, \"name\", \"data.attributes.name\");\ndefineAssoc(User, \"email\", \"data.attributes.email\");\ndefineAssoc(User, \"remote\", \"meta.remote\");\nUser.endpoint = \"users\"\n\nexport default User;\n","import {RallyBase, lib, AbortError, Collection} from \"./rally-tools.js\";\nimport {cached, defineAssoc} from \"./decorators.js\";\n\nclass Tag extends RallyBase{\n constructor({data, remote} = {}){\n super();\n\n this.meta = {};\n this.remote = remote\n this.data = data;\n\n //this.data.attributes.rallyConfiguration = undefined;\n //this.data.attributes.systemManaged = undefined;\n }\n chalkPrint(pad=true){\n let id = String(\"T-\" + this.remote + \"-\" + this.id)\n if(pad) id = id.padStart(10);\n\n let prefix = this.curated ? \"blue +\" : \"red -\";\n\n return chalk`{green ${id}}: {${prefix}${this.name}}`;\n }\n static async create(env, name, {notCurated} = {}){\n return new Tag({data: await lib.makeAPIRequest({\n env, path: `/${this.endpoint}`, method: \"POST\",\n payload: {\n data: {\n attributes: {\n name,\n curated: notCurated ? false : true,\n },\n type: \"tagNames\",\n }\n }\n }), remote: env});\n }\n}\n\ndefineAssoc(Tag, \"id\", \"data.id\");\ndefineAssoc(Tag, \"attributes\", \"data.attributes\");\ndefineAssoc(Tag, \"relationships\", \"data.relationships\");\ndefineAssoc(Tag, \"name\", \"data.attributes.name\");\ndefineAssoc(Tag, \"curated\", \"data.attributes.curated\");\ndefineAssoc(Tag, \"remote\", \"meta.remote\");\nTag.endpoint = \"tagNames\";\n\nexport default Tag;\n","import {cached, defineAssoc} from \"./decorators.js\";\nimport {lib, Collection, RallyBase} from \"./rally-tools.js\";\n\nexport async function findLineInFile(renderedPreset, lineNumber){\n let trueFileLine = lineNumber;\n\n let linedRenderedPreset = renderedPreset.split(\"\\n\").slice(2,-2);\n renderedPreset = renderedPreset.split(\"\\n\").slice(2,-2).join(\"\\n\");\n let includeLocation = renderedPreset.split(\"\\n\").filter(x => x.includes(\"@include\"));\n\n let endIncludeNumber = -1, addTabDepth = 2;\n let lineBeforeIncludeStatement = '';\n let withinInclude = true;\n\n if (lineNumber > linedRenderedPreset.indexOf(includeLocation[includeLocation.length -1])){\n addTabDepth = 0;\n withinInclude = false;\n }\n\n for (let index = includeLocation.length - 1; index >= 0; index--){\n let currIncludeIndex = linedRenderedPreset.indexOf(includeLocation[index]);\n let tabDepth = includeLocation[index].split(\" \").length;\n if (lineNumber > currIncludeIndex) {\n if (includeLocation[index].split(\" \").filter(Boolean)[1] != \"ERROR:\"){\n if (lineBeforeIncludeStatement.split(\" \").length == tabDepth && withinInclude){\n trueFileLine = trueFileLine - currIncludeIndex;\n break;\n } else if ((lineBeforeIncludeStatement.split(\" \").length + addTabDepth) == tabDepth && endIncludeNumber == -1){\n endIncludeNumber = currIncludeIndex;\n } else if ((lineBeforeIncludeStatement.split(\" \").length + addTabDepth) == tabDepth){\n trueFileLine = trueFileLine - (endIncludeNumber - currIncludeIndex);\n endIncludeNumber = -1;\n }\n }\n } else {\n lineBeforeIncludeStatement = includeLocation[index];\n }\n }\n\n let funcLine = \"\"\n for(let line of linedRenderedPreset.slice(0, lineNumber).reverse()){\n let match = /def (\\w+)/.exec(line);\n if(match){\n funcLine = match[1];\n break;\n }\n }\n\n let includeFilename;\n\n if(lineBeforeIncludeStatement != \"\"){\n includeFilename = lineBeforeIncludeStatement.slice(1).trim().slice(14, -1)\n }else{\n includeFilename = null;\n }\n\n if(includeLocation.length !== 0){\n trueFileLine -= 1;\n lineNumber -= 1;\n }\n\n return {\n lineNumber: trueFileLine,\n includeFilename,\n line: linedRenderedPreset[lineNumber],\n funcLine,\n };\n\n}\n\nexport function printOutLine(eLine){\n return log(chalk`{blue ${eLine.includeFilename || \"Main\"}}:{green ${eLine.lineNumber}} in ${eLine.funcLine}\n${eLine.line}`)\n}\n\nexport async function getInfo(env, jobid){\n log(env, jobid);\n let trace = lib.makeAPIRequest({\n env, path: `/jobs/${jobid}/artifacts/trace`,\n }).catch(x => null);\n\n let renderedPreset = lib.makeAPIRequest({\n env, path: `/jobs/${jobid}/artifacts/preset`,\n }).catch(x => null);\n\n let result = lib.makeAPIRequest({\n env, path: `/jobs/${jobid}/artifacts/result`,\n }).catch(x => null);\n\n let error = lib.makeAPIRequest({\n env, path: `/jobs/${jobid}/artifacts/error`,\n }).catch(x => null);\n\n let output = lib.makeAPIRequest({\n env, path: `/jobs/${jobid}/artifacts/output`,\n }).catch(x => null);\n\n [trace, renderedPreset, result, output, error] = await Promise.all([trace, renderedPreset, result, output, error]);\n\n return {trace, renderedPreset, result, output, error}\n}\n\nexport async function parseTrace(env, jobid){\n\n let {trace, renderedPreset} = await getInfo(env, jobid);\n\n let fileName = '';\n let lineNumber = -1;\n\n let errorLines = []\n let shouldBreak = 0;\n for(let tr of trace.split(\"\\n\\n\").reverse()){\n errorLines.push(tr);\n shouldBreak--;\n if(tr.includes(\"Exception\")) shouldBreak = 1;\n if(tr.includes(\"raised\")) shouldBreak = 1;\n if(!shouldBreak) break;\n }\n\n let errorList = [];\n for(let errLine of errorLines){\n\n lineNumber = /^[\\w ]+:(\\d+):/g.exec(errLine);\n if(lineNumber && lineNumber[1]){\n errorList.push(await findLineInFile(renderedPreset, lineNumber[1]));\n }else{\n errorList.push(errLine);\n }\n }\n\n return errorList;\n}\n\nconst Trace = {parseTrace, printOutLine, getInfo, findLineInFile};\nexport default Trace;\n","require(\"source-map-support\").install();\n\nimport {lib} from \"./rally-tools.js\";\nimport {cached} from \"./decorators.js\";\n\nexport {default as SupplyChain} from \"./supply-chain.js\";\nexport {default as Preset} from \"./preset.js\";\nexport {default as Rule} from \"./rule.js\";\nexport {default as Provider} from \"./providers.js\";\nexport {default as Notification} from \"./notification.js\";\nexport {default as Asset} from \"./asset.js\";\nexport {default as User} from \"./user.js\";\nexport {default as Tag} from \"./tag.js\";\n//TODO fix export from index\nexport {default as Trace} from \"./trace.js\";\n\nexport * from \"./config.js\";\n\nexport * from \"./rally-tools.js\";\n\nexport const rallyFunctions = {\n async bestPagintation(){\n global.silentAPI = true;\n for(let i = 10; i <= 30; i+=5){\n console.time(\"test with \" + i);\n let dl = await lib.indexPathFast(\"DEV\", `/workflowRules?page=1p${i}`);\n console.timeEnd(\"test with \" + i);\n }\n },\n async uploadPresets(env, presets, createFunc = ()=>false){\n for(let preset of presets){\n await preset.uploadCodeToEnv(env, createFunc);\n }\n },\n //Dummy test access\n async testAccess(env){\n if(lib.isLocalEnv(env)){\n //TODO\n return true;\n }\n let result = await lib.makeAPIRequest({env, path: \"/providers?page=1p1\", fullResponse: true, timeout: 1000});\n return result.statusCode;\n },\n}\n","export default {\n SdviContentMover:`{\n \"tasks\": [\n {\n \"operation\": \"copy\" | \"move\" | \"delete\",\n\n \"source\": {\n \"optional\": true | false,\n\n # must specify either inventory OR externalStorage\n \"inventory\": {\n \"labels\": [\"<label>\" | \"*\", ],\n \"tags\": [\"<tag>\", ],\n \"storageSet\": [\"<storage location name>\" | \"*\", ], # only valid for move & delete tasks\n \"expandCollections\": true | false\n },\n \"externalStorage\": {\n \"uri\": \"<protocol>://<host>/<path>/<file>\",\n \"credentials\": {\n \"key\": \"<parameter store key>\",\n \"roleArn\": \"<role to assume to access the parameter store>\",\n \"roleId\": \"<external ID to be used in role assumption>\",\n \"region\": \"<AWS region of the parameter store>\"\n }\n }\n },\n\n \"destination\": {\n \"name\": \"<path within the storage location>/<filename>\",\n \"overwrite\": \"never\" | \"notInAnyAsset\" | \"notInOtherAsset\" | \"always\",\n \"storageMetadata\": {\"<key>\": \"<value>\",...} | \"<sourceStorageMetadata>\",\n\n # must specify either inventory OR externalStorage\n \"inventory\": {\n \"storage\": \"<storage location name>\",\n \"newLabel\": \"<fileLabel>\",\n \"newTags\": [\"<tag>\", \"<tag>\"],\n },\n \"externalStorage\": {\n \"uri\": \"<protocol>://<host>\",\n \"credentials\": {\n \"key\": \"<parameter store key>\",\n \"roleArn\": \"<role to assume to access the parameter store>\",\n \"roleId\": \"<external ID to be used in role assumption>\",\n \"region\": \"<AWS region of the parameter store>\"\n }\n }\n }\n },\n\n {\n <another task>\n },\n\n {\n <another task>\n },\n\n ...\n\n ]\n}`, SdviEvaluate: `'''\nname: {name}\n'''\n\n# code here`, SdviEvalPro: `'''\nname: {name}\n'''\n\nimport rally\n\ndef evalMain(context):\n # code here`,\n};\n","require(\"source-map-support\").install();\n\nimport argparse from \"minimist\";\nimport * as allIndexBundle from \"./index.js\"\nimport {\n rallyFunctions as funcs,\n Preset, Rule, SupplyChain, Provider, Asset, User, Tag,\n AbortError, UnconfiguredEnvError, Collection, APIError,\n} from \"./index.js\";\n\nimport {version as packageVersion} from \"../package.json\";\nimport {configFile, configObject, loadConfig, loadConfigFromArgs} from \"./config.js\";\nimport {readFileSync, writeFileSync} from \"fs\";\n\nimport {printOutLine, parseTrace, findLineInFile, getInfo as getTraceInfo} from \"./trace.js\";\n\nimport {helpText, arg, param, usage, helpEntries, spawn} from \"./decorators.js\";\n\nimport baseCode from \"./baseCode.js\";\nimport {sep as pathSeperator} from \"path\";\n\nimport moment from \"moment\";\n\nimport * as configHelpers from \"./config-create.js\";\nconst False = false; const True = true; const None = null;\n\nlet argv = argparse(process.argv.slice(2), {\n string: [\"file\", \"env\"],\n //boolean: [\"no-protect\"],\n boolean: [\"anon\"],\n default: {protect: true},\n alias: {\n f: \"file\", e: \"env\",\n }\n});\n\n//help menu helper\nfunction printHelp(help, short){\n let helpText = chalk`\n{white ${help.name}}: ${help.text}\n Usage: ${help.usage || \"<unknown>\"}\n`\n //Trim newlines\n helpText = helpText.substring(1, helpText.length-1);\n\n if(!short){\n for(let param of help.params || []){\n helpText += chalk`\\n {blue ${param.param}}: ${param.desc}`\n }\n for(let arg of help.args || []){\n helpText += chalk`\\n {blue ${arg.short}}, {blue ${arg.long}}: ${arg.desc}`\n }\n }\n\n return helpText;\n}\n\nasync function getFilesFromArgs(args){\n let lastArg = args._.shift()\n if(args.file){\n let files = args.file;\n if(typeof files === \"string\") files = [files];\n return files;\n }\n\n if(lastArg == \"-\"){\n log(\"Reading from stdin\");\n let getStdin = require(\"get-stdin\");\n let stdin = await getStdin();\n let files = stdin.split(\"\\n\");\n if(files[files.length - 1] === \"\") files.pop();\n return files;\n }else{\n args._.push(lastArg);\n }\n}\n\nlet presetsub = {\n async before(args){\n this.env = args.env;\n if(!this.env) throw new AbortError(\"No env supplied\");\n\n this.files = await getFilesFromArgs(args);\n },\n async $grab(args){\n if(!this.files){\n throw new AbortError(\"No files provided to grab (use --file argument)\");\n }\n\n log(chalk`Grabbing {green ${this.files.length}} preset(s) metadata from {green ${this.env}}.`);\n\n let presets = this.files.map(path => new Preset({path, remote: false}));\n for(let preset of presets){\n //TODO small refactor\n await preset.grabMetadata(this.env);\n await preset.saveLocalMetadata();\n\n if(args.full){\n let remo = await Preset.getByName(this.env, preset.name);\n await remo.resolve();\n await remo.downloadCode();\n await remo.saveLocalFile();\n }\n }\n },\n async $create(args){\n let provider, name, ext;\n if(args.provider){\n provider = {name: args.provider};\n ext = args.ext\n }else{\n provider = await configHelpers.selectProvider(await Provider.getAll(this.env));\n ext = (await provider.getEditorConfig()).fileExt;\n }\n if(args.name){\n name = args.name;\n }else{\n name = await configHelpers.askInput(\"Preset Name\", \"What is the preset name?\");\n }\n\n let preset = new Preset({subProject: configObject.project});\n\n preset.providerType = {name: provider.name};\n preset.isGeneric = true;\n preset.name = name;\n preset.ext = ext;\n if(baseCode[provider.name]){\n preset._code = baseCode[provider.name].replace(\"{name}\", name);\n }else{\n preset._code = \" \";\n }\n\n preset.saveLocalMetadata();\n if(!args[\"only-metadata\"]) preset.saveLocalFile();\n },\n async $list(args){\n log(\"Loading...\");\n let presets = await Preset.getAll(this.env);\n if(args.resolve){\n Provider.getAll(this.env);\n for(let preset of presets){\n let resolve = await preset.resolve(this.env);\n if(args.attach){\n let {proType} = resolve;\n proType.editorConfig.helpText = \"\";\n preset.meta = {\n ...preset.meta, proType\n };\n }\n }\n }\n if(configObject.rawOutput) return presets;\n log(chalk`{yellow ${presets.length}} presets on {green ${this.env}}.`);\n presets.arr.sort((a, b) => {\n return Number(a.attributes.updatedAt) - Number(b.attributes.updatedAt)\n });\n for(let preset of presets){\n log(preset.chalkPrint());\n }\n },\n async $upload(args){\n if(!this.files){\n throw new AbortError(\"No files provided to upload (use --file argument)\");\n }\n\n log(chalk`Uploading {green ${this.files.length}} preset(s) to {green ${this.env}}.`);\n\n let presets = this.files.map(path => new Preset({path, remote: false}));\n await funcs.uploadPresets(this.env, presets);\n },\n async $deleteRemote(args){\n let file = this.files[0];\n if(!this.files){\n throw new AbortError(\"No files provided to diff (use --file argument)\");\n }\n\n let preset = new Preset({path: file, remote: false});\n if(!preset.name){\n throw new AbortError(chalk`No preset header found. Cannot get name.`);\n }\n\n let preset2 = await Preset.getByName(this.env, preset.name);\n if(!preset2){\n throw new AbortError(chalk`No preset found with name {red ${preset.name}} on {blue ${this.env}}`);\n }\n\n log(chalk`Deleting ${preset2.chalkPrint(true)}.`);\n\n log(await preset2.delete());\n },\n async $diff(args){\n let file = this.files[0];\n if(!this.files){\n throw new AbortError(\"No files provided to diff (use --file argument)\");\n }\n\n let preset = new Preset({path: file, remote: false});\n if(!preset.name){\n throw new AbortError(chalk`No preset header found. Cannot get name.`);\n }\n let preset2 = await Preset.getByName(this.env, preset.name);\n if(!preset2){\n throw new AbortError(chalk`No preset found with name {red ${preset.name}} on {blue ${this.env}}`);\n }\n await preset2.downloadCode();\n\n let tempfile = require(\"tempy\").file;\n let temp = tempfile({extension: `${this.env}.${preset.ext}`});\n writeFileSync(temp, preset2.code);\n\n let ptr = `${file},${temp}`;\n\n\n //raw output returns \"file1\" \"file2\"\n if(configObject.rawOutput){\n if(args[\"only-new\"]) return temp;\n else return ptr;\n }\n\n //standard diff\n argv.command = argv.command || \"diff\";\n await spawn(argv.command, [file, temp], {stdio: \"inherit\"});\n },\n async $info(args){\n if(!this.files){\n throw new AbortError(\"No files provided to diff (use --file argument)\");\n }\n\n let file = this.files[0];\n let preset = new Preset({path: file, remote: false});\n if(!preset.name){\n throw new AbortError(chalk`No preset header found. Cannot get name.`);\n }\n\n await preset.getInfo(args.env);\n },\n async unknown(arg, args){\n log(chalk`Unknown action {red ${arg}} try '{white rally help preset}'`);\n },\n}\n\nlet rulesub = {\n async before(args){\n this.env = args.env;\n if(!this.env) throw new AbortError(\"No env supplied\");\n },\n async $list(args){\n log(\"Loading...\");\n let rules = await Rule.getAll(this.env);\n if(configObject.rawOutput) return rules;\n\n log(chalk`{yellow ${rules.length}} rules on {green ${this.env}}.`);\n rules.arr.sort((a, b) => {\n return Number(a.data.attributes.updatedAt) - Number(b.data.attributes.updatedAt)\n });\n for(let rule of rules) log(rule.chalkPrint());\n },\n async $create(args){\n let preset = await configHelpers.selectPreset({canSelectNone: false});\n let passNext = await configHelpers.selectRule({purpose: \"'On Exit OK'\"});\n let errorNext = await configHelpers.selectRule({purpose: \"'On Exit Error'\"});\n let name = await configHelpers.askInput(\"Rule Name\", \"What is the rule name?\");\n name = name.replace(\"@\", preset.name);\n let desc = await configHelpers.askInput(\"Description\", \"Enter a description.\");\n\n let dynamicNexts = [];\n let next;\n while(next = await configHelpers.selectRule({purpose: \"dynamic next\"})){\n let name = await configHelpers.askInput(\"Key\", \"Key name for dynamic next\");\n dynamicNexts.push({\n meta: {\n transition: name,\n },\n type: \"workflowRules\",\n name: next.name,\n });\n }\n\n let rule = new Rule({subProject: configObject.project});\n rule.name = name;\n rule.description = desc;\n rule.relationships.preset = {data: {name: preset.name, type: \"presets\"}}\n if(errorNext) rule.relationships.errorNext = {data: {name: errorNext.name, type: \"workflowRules\"}}\n if(passNext) rule.relationships.passNext = {data: {name: passNext.name, type: \"workflowRules\"}}\n if(dynamicNexts[0]){\n rule.relationships.dynamicNexts = {\n data: dynamicNexts\n };\n }\n\n rule.saveB()\n },\n async unknown(arg, args){\n log(chalk`Unknown action {red ${arg}} try '{white rally help rule}'`);\n },\n}\n\nlet jupytersub = {\n async before(args){\n this.input = args._.shift() || \"main.ipynb\";\n this.output = args._.shift() || \"main.py\";\n },\n async $build(args){\n let cmd = `jupyter nbconvert --to python ${this.input} --TagRemovePreprocessor.remove_cell_tags={\\\"remove_cell\\\"} --output ${this.output} --TemplateExporter.exclude_markdown=True --TemplateExporter.exclude_input_prompt=True --TemplateExporter.exclude_output_prompt=True`.split(\" \");\n log(chalk`Compiling GCR file {green ${this.input}} into {green ${this.output}} using jupyter...`);\n\n try{\n let {timestr} = await spawn(cmd[0], cmd.slice(1));\n log(chalk`Complete in ~{green.bold ${timestr}}.`);\n }catch(e){\n if(e.code !== \"ENOENT\") throw e;\n log(chalk`Cannot run the build command. Make sure that you have jupyter notebook installed.\\n{green pip install jupyter}`);\n return;\n }\n },\n}\n\nasync function categorizeString(str, defaultSubproject=undefined){\n str = str.trim();\n if(str.startsWith('\"')){\n str = str.slice(1, -1);\n }\n let match\n if(match = /^(\\w)-(\\w{1,10})-(\\d{1,10}):/.exec(str)){\n if(match[1] === \"P\"){\n let ret = await Preset.getById(match[2], match[3]);\n //TODO modify for subproject a bit\n return ret;\n }else if(match[1] === \"R\"){\n return await Rule.getById(match[2], match[3]);\n }else{\n return null;\n }\n }else if(match = /^([\\w \\/\\\\\\-_]*)[\\/\\\\]?silo\\-(\\w+)[\\/\\\\]/.exec(str)){\n try{\n switch(match[2]){\n case \"presets\": return new Preset({path: str, subProject: match[1]});\n case \"rules\": return new Rule({path: str, subProject: match[1]});\n case \"metadata\": return await Preset.fromMetadata(str, match[1]);\n }\n }catch(e){\n log(e);\n }\n }else{\n return null;\n }\n}\n\nlet tagsub = {\n async before(args){\n this.env = args.env;\n if(!this.env) throw new AbortError(\"No env supplied\");\n },\n async $list(args){\n log(\"Loading...\");\n let tags = await Tag.getAll(this.env);\n if(configObject.rawOutput) return tags;\n\n log(chalk`{yellow ${tags.length}} tags on {green ${this.env}}.`);\n tags.arr.sort((a, b) => {\n return Number(a.data.attributes.updatedAt) - Number(b.data.attributes.updatedAt)\n });\n for(let tag of tags) log(tag.chalkPrint());\n },\n async $create(args){\n return Tag.create(this.env, args._.shift());\n }\n};\n\nlet supplysub = {\n async before(args){\n this.env = args.env;\n if(!this.env) throw new AbortError(\"No env supplied\");\n this.files = await getFilesFromArgs(args);\n },\n\n //Calculate a supply chain based on a starting rule at the top of the stack\n async $calc(args){\n let name = args._.shift();\n let stopName = args._.shift();\n if(!name){\n throw new AbortError(\"No starting rule or @ supplied\");\n }\n\n if(name === \"@\"){\n log(chalk`Silo clone started`);\n this.chain = new SupplyChain();\n this.chain.remote = args.env;\n }else{\n let rules = await Rule.getAll(this.env);\n let stop, start;\n start = rules.findByNameContains(name);\n if(stopName) stop = rules.findByNameContains(stopName);\n\n if(!start){\n throw new AbortError(chalk`No starting rule found by name {blue ${name}}`);\n }\n log(chalk`Analzying supply chain: ${start.chalkPrint(false)} - ${stop ? stop.chalkPrint(false) : \"(open)\"}`);\n this.chain = new SupplyChain(start, stop);\n }\n\n await this.chain.calculate();\n return await this.postAction(args);\n },\n async postAction(args){\n //Now that we ahve a supply chain object, do something with it\n if(args[\"to\"]){\n this.chain.log();\n if(this.chain.presets.arr[0]){\n await this.chain.downloadPresetCode(this.chain.presets);\n log(\"Done\");\n }\n\n if(Array.isArray(args[\"to\"])){\n for(let to of args[\"to\"]){\n await this.chain.syncTo(to);\n }\n }else{\n await this.chain.syncTo(args[\"to\"]);\n }\n\n }else if(args[\"delete\"]){\n if(Array.isArray(args[\"delete\"])){\n for(let to of args[\"delete\"]){\n await this.chain.deleteTo(to);\n }\n }else{\n await this.chain.deleteTo(args[\"delete\"]);\n }\n }else if(args[\"diff\"]){\n //Very basic diff\n let env = args[\"diff\"];\n await Promise.all(this.chain.presets.arr.map(obj => obj.downloadCode()));\n await Promise.all(this.chain.presets.arr.map(obj => obj.resolve()));\n\n let otherPresets = await Promise.all(this.chain.presets.arr.map(obj => Preset.getByName(env, obj.name)));\n otherPresets = new Collection(otherPresets.filter(x => x));\n await Promise.all(otherPresets.arr.map(obj => obj.downloadCode()));\n await Promise.all(otherPresets.arr.map(obj => obj.resolve()));\n\n const printPresets = (preset, otherPreset) => {\n log(preset.chalkPrint(true));\n if(otherPreset.name){\n log(otherPreset.chalkPrint(true));\n }else{\n log(chalk`{red (None)}`);\n }\n }\n\n for(let preset of this.chain.presets){\n let otherPreset = otherPresets.arr.find(x => x.name === preset.name) || {};\n\n preset.code = preset.code.replace(/[\\r\\n ]/, \"\");\n otherPreset.code = (otherPreset.code || \"\").replace(/[\\r\\n ]/, \"\");\n\n if(preset.code === otherPreset.code){\n if(!args[\"ignore-same\"]){\n printPresets(preset, otherPreset);\n log(\"Code Same\");\n }\n }else{\n printPresets(preset, otherPreset);\n if(args[\"ignore-same\"]){\n log(\"-------\");\n }else{\n log(\"Code Different\");\n }\n }\n }\n\n }else{\n return await this.chain.log();\n }\n\n },\n async $make(args){\n let set = new Set();\n let hints = args.hint ? (Array.isArray(args.hint) ? args.hint : [args.hint]) : []\n //TODO modify for better hinting, and add this elsewhere\n for(let hint of hints){\n if(hint === \"presets-uat\"){\n log(\"got hint\");\n await Preset.getAll(\"UAT\");\n }\n }\n\n for(let file of this.files){\n set.add(await categorizeString(file));\n }\n let files = [...set];\n files = files.filter(f => f && !f.missing);\n this.chain = new SupplyChain();\n\n this.chain.rules = new Collection(files.filter(f => f instanceof Rule));\n this.chain.presets = new Collection(files.filter(f => f instanceof Preset));\n this.chain.notifications = new Collection([]);\n\n return await this.postAction(args);\n },\n async unknown(arg, args){\n log(chalk`Unknown action {red ${arg}} try '{white rally help supply}'`);\n },\n}\n\nfunction subCommand(object){\n object = {\n before(){}, after(){}, unknown(){},\n ...object\n };\n return async function(args){\n //Grab the next arg on the stack, find a function tied to it, and run\n let arg = args._.shift();\n let key = \"$\" + arg;\n let ret;\n if(object[key]){\n await object.before(args);\n ret = await object[key](args);\n await object.after(args);\n }else{\n if(arg === undefined) arg = \"(None)\";\n object.unknown(arg, args);\n }\n return ret;\n }\n}\n\nlet cli = {\n @helpText(`Display the help menu`)\n @usage(`rally help [subhelp]`)\n @param(\"subhelp\", \"The name of the command to see help for\")\n async help(args){\n let arg = args._.shift();\n if(arg){\n let help = helpEntries[arg];\n if(!help){\n log(chalk`No help found for '{red ${arg}}'`);\n }else{\n log(printHelp(helpEntries[arg]));\n }\n }else{\n for(let helpArg in helpEntries){\n log(printHelp(helpEntries[helpArg], true));\n }\n }\n },\n\n @helpText(\"Rally tools jupyter interface. Requires jupyter to be installed.\")\n @usage(\"rally jupyter build [in] [out]\")\n @param(\"in/out\", \"input and output file for jupyter. By default main.ipyrb and main.py\")\n async jupyter(args){\n return subCommand(jupytersub)(args);\n },\n\n //@helpText(`Print input args, for debugging`)\n async printArgs(args){\n log(args);\n },\n\n @helpText(`Preset related actions`)\n @usage(`rally preset [action] --env <enviornment> --file [file1] --file [file2] ...`)\n @param(\"action\", \"The action to perform. Can be upload, diff, list, deleteRemote\")\n @arg(\"-e\", \"--env\", \"The enviornment you wish to perform the action on\")\n @arg(\"-f\", \"--file\", \"A file to act on\")\n @arg(\"~\", \"--command\", \"If the action is diff, this is the command to run instead of diff\")\n async preset(args){\n return subCommand(presetsub)(args);\n },\n\n @helpText(`Rule related actions`)\n @usage(`rally rule [action] --env [enviornment]`)\n @param(\"action\", \"The action to perform. Only list is supported right now\")\n @arg(\"-e\", \"--env\", \"The enviornment you wish to perform the action on\")\n async rule(args){\n return subCommand(rulesub)(args);\n },\n\n @helpText(`supply chain related actions`)\n @usage(`rally supply [action] [identifier] --env [enviornment] [post actions]`)\n @param(\"action\", \"The action to perform. Can be calc or make.\")\n @param(\"identifier\", \"If the action is calc, then this identifier should be the first rule in the chain. If this is make, then supply '-' to read from stdin\")\n @param(\"post actions\", \"The action to perform on the created supply chain. See commands below\")\n @arg(\"-e\", \"--env\", \"(calc only) environment to do the calculation on\")\n @arg(\"~\", \"--diff\", \"(post action) Use as `--diff [env]`. List all files with differences on the given env.\")\n @arg(\"~\", \"--to\", \"(post action) Use as `--to [env]`. Upload all objects.\")\n @arg(\"~\", \"--delete\", \"(post action) Use as `--delete [env]`. The reverse of uploading. Only presets are supported right now.\")\n async supply(args){\n return subCommand(supplysub)(args);\n },\n\n @helpText(`tags stuff`)\n @usage(`rally tags [action]`)\n @param(\"action\", \"The action to perform. Can be list or create.\")\n @arg(\"-e\", \"--env\", \"The enviornment you wish to perform the action on\")\n async tag(args){\n return subCommand(tagsub)(args);\n },\n\n @helpText(`print out some trace info`)\n @usage(`rally trace -e [env] [jobid]`)\n @param(\"jobid\", \"a job id like b86d7d90-f0a5-4622-8754-486ca8e9ecbd\")\n @arg(\"-e\", \"--env\", \"The enviornment you wish to perform the action on\")\n async trace(args){\n let jobId = args._.shift();\n if(!jobId) throw new AbortError(\"No job id\");\n if(!args.env) throw new AbortError(\"no env\");\n let ln = args._.shift();\n if(!ln){\n log(\"is trace\");\n let traceInfo = await parseTrace(args.env, jobId);\n\n for(let line of traceInfo){\n if(typeof(line) == \"string\"){\n log(chalk.red(line));\n }else{\n printOutLine(line);\n }\n }\n }else{\n log(\"is ln\");\n let {renderedPreset} = await getTraceInfo(args.env, jobId);\n return findLineInFile(renderedPreset, Number(ln));\n }\n },\n\n @helpText(`List all available providers, or find one by name/id`)\n @usage(`rally providers [identifier] --env [env] --raw`)\n @param(\"identifier\", \"Either the name or id of the provider\")\n @arg(\"-e\", \"--env\", \"The enviornment you wish to perform the action on\")\n @arg(\"~\", \"--raw\", \"Raw output of command. If [identifier] is given, then print editorConfig too\")\n async providers(args){\n let env = args.env;\n if(!env) return errorLog(\"No env supplied.\");\n let ident = args._.shift();\n\n let providers = await Provider.getAll(env);\n\n if(ident){\n let pro = providers.arr.find(x => x.id == ident || x.name.includes(ident));\n if(!pro){\n log(chalk`Couldn't find provider by {green ${ident}}`);\n }else{\n log(pro.chalkPrint(false));\n let econfig = await pro.getEditorConfig();\n if(args.raw){\n return pro;\n }else{\n if(econfig.helpText.length > 100){\n econfig.helpText = \"<too long to display>\";\n }\n if(econfig.completions.length > 5){\n econfig.completions = \"<too long to display>\";\n }\n log(econfig);\n }\n }\n }else{\n if(args.raw) return providers;\n for(let pro of providers) log(pro.chalkPrint());\n }\n },\n\n @helpText(`Change config for rally tools`)\n @usage(\"rally config [key] --set [value] --raw\")\n @param(\"key\", chalk`Key you want to edit. For example, {green chalk} or {green api.DEV}`)\n @arg(\"~\", \"--set\", \"If this value is given, no interactive prompt will launch and the config option will change.\")\n @arg(\"~\", \"--raw\", \"Raw output of json config\")\n async config(args){\n let prop = args._.shift();\n let propArray = prop && prop.split(\".\");\n\n //if(!await configHelpers.askQuestion(`Would you like to create a new config file in ${configFile}`)) return;\n let newConfigObject;\n\n if(!prop){\n if(configObject.rawOutput) return configObject;\n log(\"Creating new config\");\n newConfigObject = {\n ...configObject,\n };\n for(let helperName in configHelpers){\n if(helperName.startsWith(\"$\")){\n newConfigObject = {\n ...newConfigObject,\n ...(await configHelpers[helperName](false))\n }\n }\n }\n }else{\n log(chalk`Editing option {green ${prop}}`);\n if(args.set){\n newConfigObject = {\n ...configObject,\n [prop]: args.set,\n };\n }else{\n let ident = \"$\" + propArray[0];\n\n if(configHelpers[ident]){\n newConfigObject = {\n ...configObject,\n ...(await configHelpers[ident](propArray))\n };\n }else{\n log(chalk`No helper for {red ${ident}}`);\n return;\n }\n }\n }\n\n newConfigObject.hasConfig = true;\n\n //Create readable json and make sure the user is ok with it\n let newConfig = JSON.stringify(newConfigObject, null, 4);\n log(newConfig);\n\n //-y or --set will make this not prompt\n if(!args.y && !args.set && !await configHelpers.askQuestion(\"Write this config to disk?\")) return;\n writeFileSync(configFile, newConfig, {mode: 0o600});\n log(chalk`Created file {green ${configFile}}.`);\n },\n\n @helpText(`create/modify asset`)\n @usage(\"rally asset [action] [action...]\")\n @param(\"action\", chalk`Options are create, delete, launch, addfile, metadata, show, patchMetadata, and launchEvalute. You can supply multiple actions to chain them`)\n @arg(`-i`, `--id`, chalk`MOVIE_ID of asset to select`)\n @arg(`-n`, `--name`, chalk`MOVIE_NAME of asset. with {white create}, '{white #}' will be replaced with a uuid. Default is '{white TEST_#}'`)\n @arg(`~`, `--anon`, chalk`Supply this if no asset is needed (used to lauch anonymous workflows)`)\n @arg(`-j`, `--job-name`, chalk`Job name to start (used with launch and launchEvalute)`)\n @arg(`~`, `--init-data`, chalk`Init data to use when launching job. can be string, or {white @path/to/file} for a file`)\n @arg(`~`, `--file-label`, chalk`File label (used with addfile)`)\n @arg(`~`, `--file-uri`, chalk`File s3 uri. Can use multiple uri's for the same label (used with addfile)`)\n @arg(`~`, `--metadata`, chalk`Metadata to use with patchMetadata. Can be string, or {white @path/to/file} for a file. Data must contain a top level key Metadata, or Workflow. Metadata will be pached into METADATA. Workflow will be patched into WORKFLOW_METADATA(not currently available)`)\n @arg(`~`, `--priority`, chalk`set the priority of all launched jobs`)\n @arg(`~`, `--new-name`, chalk`set the new name`)\n async asset(args){\n function uuid(args){\n const digits = 16;\n return String(Math.floor(Math.random() * Math.pow(10, digits))).padStart(digits, \"0\");\n }\n\n let name = args.name || `TEST_#`;\n let env = args.env;\n\n let asset;\n let arg = args._.shift()\n if(!arg){\n throw new AbortError(chalk`Missing arguments: see {white 'rally help asset'}`);\n }\n\n if(args.anon){\n args._.unshift(arg);\n }else if(arg == \"create\"){\n name = name.replace(\"#\", uuid());\n asset = await Asset.createNew(name, env);\n }else{\n args._.unshift(arg);\n if(args.id){\n asset = Asset.lite(args.id, env);\n }else{\n asset = await Asset.getByName(env, args.name);\n }\n }\n\n if(!asset && !args.anon){\n throw new AbortError(\"No asset found/created\");\n }\n let launchArg = 0;\n let fileArg = 0;\n\n let arrayify = (obj, i) => Array.isArray(obj) ? obj[i] : (i == 0 ? obj : undefined);\n\n while(arg = args._.shift()){\n\n if(arg === \"launch\"){\n let initData = arrayify(args[\"init-data\"], launchArg);\n if(initData && initData.startsWith(\"@\")){\n log(chalk`Reading init data from {white ${initData.slice(1)}}`);\n initData = readFileSync(initData.slice(1), \"utf-8\");\n }\n\n let jobName = arrayify(args[\"job-name\"], launchArg);\n let p = await Rule.getByName(env, jobName);\n if(!p){\n throw new AbortError(`Cannot launch job ${jobName}, does not exist (?)`);\n }else{\n log(chalk`Launching ${p.chalkPrint(false)} on ${asset ? asset.chalkPrint(false) : \"(None)\"}`);\n }\n\n if(asset){\n await asset.startWorkflow(jobName, {initData, priority: args.priority})\n }else{\n await Asset.startAnonWorkflow(env, jobName, {initData, priority: args.priority})\n }\n launchArg++;\n }else if(arg === \"launchEvaluate\"){\n let initData = arrayify(args[\"init-data\"], launchArg);\n if(initData && initData.startsWith(\"@\")){\n log(chalk`Reading init data from {white ${initData.slice(1)}}`);\n initData = readFileSync(initData.slice(1), \"utf-8\");\n }\n\n let jobName = arrayify(args[\"job-name\"], launchArg);\n let jobData;\n let ephemeralEval = false;\n let p;\n if(jobName.startsWith(\"@\")){\n ephemeralEval = true;\n jobData = readFileSync(jobName.slice(1));\n }else{\n p = await Preset.getByName(env, jobName);\n if(!p){\n throw new AbortError(`Cannot launch preset ${jobName}, does not exist (?)`);\n }else{\n log(chalk`Launching ${p.chalkPrint(false)} on ${asset ? asset.chalkPrint(false) : \"(None)\"}`);\n }\n }\n\n\n if(ephemeralEval){\n await Asset.startEphemeralEvaluateIdeal(env, p.id, initData)\n }else{\n await asset.startEvaluate(p.id, initData)\n }\n launchArg++;\n }else if(arg === \"addfile\"){\n let label = arrayify(args[\"file-label\"], fileArg)\n let uri = arrayify(args[\"file-uri\"], fileArg)\n if(label === undefined || !uri){\n throw new AbortError(\"Number of file-label and file-uri does not match\");\n }\n await asset.addFile(label, uri);\n log(chalk`Added file ${label}`);\n fileArg++;\n }else if(arg === \"delete\"){\n await asset.delete();\n }else if(arg === \"create\"){\n throw new AbortError(`Cannot have more than 1 create/get per asset call`);\n }else if(arg === \"show\" || arg == \"load\"){\n if(asset.lite) asset = await Asset.getById(env, asset.id);\n if(arg == \"show\") log(asset);\n }else if(arg === \"metadata\" || arg === \"md\"){\n log(await asset.getMetadata());\n }else if(arg === \"patchMetadata\"){\n let initData = arrayify(args[\"metadata\"], launchArg);\n if(initData && initData.startsWith(\"@\")){\n log(chalk`Reading data from {white ${initData.slice(1)}}`);\n initData = readFileSync(initData.slice(1), \"utf-8\");\n }\n\n initData = JSON.parse(initData);\n\n await asset.patchMetadata(initData);\n }else if(arg === \"rename\"){\n let newName = args[\"new-name\"];\n let oldName = asset.name;\n await asset.rename(newName);\n log(chalk`Rename: {green ${oldName}} -> {green ${newName}}`);\n }\n }\n if(configObject.rawOutput) return asset;\n },\n\n async checkSegments(args){\n let asset = args._.shift()\n let res = await allIndexBundle.lib.makeAPIRequest({\n env: args.env, path: `/movies/${asset}/metadata/Metadata`,\n });\n let segments = res.data.attributes.metadata.userMetaData.segments.segments;\n\n let r = segments.reduce((lastSegment, val, ind) => {\n let curSegment = val.startTime;\n if(curSegment < lastSegment){\n log(\"bad segment \" + (ind + 1))\n }\n return val.endTime\n }, \"00:00:00:00\");\n },\n\n async getJobs(args){\n let req = await allIndexBundle.lib.indexPathFast({\n env: args.env, path: \"/jobs\",\n qs: {\n filter: \"presetName=DCTC Add Element US Checkin\",\n },\n });\n\n log(req.map(x => x.relationships.asset.data.id).join(\"\\n\"))\n },\n\n async listAssets(args, tag){\n let req = await allIndexBundle.lib.indexPathFast({\n env: args.env, path: \"/assets\",\n qs: {\n noRelationships: true,\n sort: \"id\",\n },\n chunksize: 30,\n });\n for(let asset of req){\n log(asset.id);\n }\n\n return req;\n },\n\n async listSegments(args){\n let f = JSON.parse(readFileSync(args.file, \"utf-8\"));\n\n for(let asset of f){\n let r = await allIndexBundle.lib.makeAPIRequest({\n env: args.env, path: `/movies/${asset.id}/metadata/Metadata`,\n });\n\n let segs = r.data.attributes.metadata.userMetaData?.segments?.segments;\n if(segs && segs.length > 1){\n log(asset.id);\n log(asset.name);\n }\n }\n },\n async test4(args){\n let things = await allIndexBundle.lib.indexPathFast({\n env: args.env, path: \"/assets\",\n qs: {\n filter: `createdBefore=${Date.now() - 1000 * 160 * 24 * 60 * 60},createdSince=${Date.now() - 1000 * 170 * 24 * 60 * 60}`\n }\n });\n\n log(JSON.stringify(things, null, 4));\n },\n\n async test5(args){\n let things = await allIndexBundle.lib.indexPathFast({\n env: args.env, path: \"/jobs\",\n qs: {\n filter: `state=Queued,presetName=E2 P4101 - DNE Compliance Edit - US Output Deal - Edit WorkOrder`\n }\n });\n\n log(JSON.stringify(things, null, 4));\n },\n async test2(args){\n let wfr = await allIndexBundle.lib.indexPath({\n env: args.env, path: \"/workflowRuleMetadata\",\n });\n log(wfr);\n\n for(let wfrm of wfr){\n try{\n wfrm.id = undefined;\n wfrm.links = undefined;\n log(wfrm);\n let req = await allIndexBundle.lib.makeAPIRequest({\n env: \"DEV\", path: \"/workflowRuleMetadata\",\n method: \"POST\",\n payload: {data: wfrm},\n })\n }catch(e){\n log(\"caught\");\n }\n //break;\n }\n },\n\n async test3(args){\n let wfr = await allIndexBundle.lib.indexPath({\n env: args.env, path: \"/workflowRuleMetadata\",\n });\n log(wfr);\n\n for(let wfrm of wfr){\n try{\n wfrm.id = undefined;\n wfrm.links = undefined;\n log(wfrm);\n let req = await allIndexBundle.lib.makeAPIRequest({\n env: \"DEV\", path: \"/workflowRuleMetadata\",\n method: \"POST\",\n payload: {data: wfrm},\n })\n }catch(e){\n log(\"caught\");\n }\n //break;\n }\n },\n\n async deleteOmneons(args){\n let id = args._.shift();\n\n let asset;\n if(Number(id)) {\n asset = await Asset.getById(\"PROD\", Number(id));\n }else{\n asset = await Asset.getByName(\"PROD\", id);\n }\n\n log(asset);\n let f = await asset.getFiles();\n\n for(let file of f){\n if(file.label.includes(\"Omneon\")){\n log(`removing ${file.label}`);\n await file.delete();\n }\n }\n },\n\n async audit(args){\n let supportedAudits = [\"presets\", \"rule\", \"other\"];\n await configHelpers.addAutoCompletePrompt();\n let q = await configHelpers.inquirer.prompt([{\n type: \"autocomplete\", name: \"obj\",\n message: `What audit do you want?`,\n source: async (sofar, input) => {\n return supportedAudits.filter(x => input ? x.includes(input.toLowerCase()) : true);\n },\n }]);\n let choice = q.obj;\n let resourceId = undefined\n let filterFunc = _=>_;\n if(choice === \"presets\"){\n let preset = await configHelpers.selectPreset({canSelectNone: false});\n let remote = await Preset.getByName(args.env, preset.name);\n if(!remote) throw new AbortError(\"Could not find this item on remote env\");\n filterFunc = ev => ev.resource == \"Preset\";\n resourceId = remote.id;\n }else if(choice === \"rule\"){\n let preset = await configHelpers.selectRule({canSelectNone: false});\n let remote = await Rule.getByName(args.env, preset.name);\n if(!remote) throw new AbortError(\"Could not find this item on remote env\");\n filterFunc = ev => ev.resource == \"Rule\";\n resourceId = remote.id;\n }else{\n resourceId = await configHelpers.askInput(null, \"What resourceID?\");\n }\n\n log(chalk`Resource ID on {blue ${args.env}} is {yellow ${resourceId}}`);\n log(`Loading audits (this might take a while)`);\n const numRows = 100;\n let r = await allIndexBundle.lib.makeAPIRequest({\n env: args.env,\n path: `/v1.0/audit?perPage=${numRows}&count=${numRows}&filter=%7B%22resourceId%22%3A%22${resourceId}%22%7D&autoload=false&pageNum=1&include=`,\n timeout: 180000,\n });\n r.data = r.data.filter(filterFunc);\n\n log(\"Data recieved, parsing users\");\n\n for(let event of r.data){\n let uid = event?.correlation?.userId;\n if(!uid) continue;\n try{\n event.user = await User.getById(args.env, uid);\n }catch(e){\n event.user = {name: \"????\"};\n }\n }\n\n if(args.raw) return r.data;\n let evCounter = 0;\n for(let event of r.data){\n let evtime = moment(event.createdAt);\n let date = evtime.format(\"ddd YYYY/MM/DD hh:mm:ssa\");\n let timedist = evtime.fromNow();\n log(chalk`${date} {yellow ${timedist}} {green ${event.user?.name}} ${event.event}`);\n\n if(++evCounter >= 30) break;\n }\n },\n\n async audit2(args){\n const numRows = 1000\n let r = await allIndexBundle.lib.makeAPIRequest({\n env: args.env,\n //path: `/v1.0/audit?perPage=${numRows}&count=${numRows}&autoload=false&pageNum=1&include=`,\n path: `/v1.0/audit?perPage=${numRows}&count=${numRows}&filter=%7B%22correlation.userId%22%3A%5B%22164%22%5D%7D&autoload=false&pageNum=1&include=`,\n timeout: 60000,\n });\n for(let event of r.data){\n log(event.event);\n }\n },\n\n async findIDs(args){\n let files = await getFilesFromArgs(args);\n for(let file of files){\n let preset = await Preset.getByName(args.env, file);\n await preset.resolve();\n log(`silo-presets/${file}.${preset.ext}`);\n }\n },\n\n async getAssets(env, name){\n if(!this.callid) this.callid = 0;\n this.callid++;\n let callid = this.callid;\n\n await allIndexBundle.sleep(500);\n\n if(callid != this.callid) return this.lastResult || [];\n\n let req = await allIndexBundle.lib.makeAPIRequest({\n env, path: `/assets`,\n qs: name ? {filter: `nameContains=${name}`} : undefined,\n })\n this.lastCall = Date.now();\n\n return this.lastResult = req.data;\n },\n\n async content(args){\n configHelpers.addAutoCompletePrompt();\n let q = await configHelpers.inquirer.prompt([{\n type: \"autocomplete\",\n name: \"what\",\n message: `What asset do you want?`,\n source: async (sofar, input) => {\n let assets = await this.getAssets(args.env, input);\n assets = assets.map(x => new Asset({data: x, remote: args.env}));\n return assets.map(x => ({\n name: x.chalkPrint(true) + \": \" + x.data.links.self.replace(\"/api/v2/assets/\", \"/content/\"),\n value: x,\n }));\n },\n }]);\n },\n\n async [\"@\"](args){\n args._.unshift(\"-\");\n args._.unshift(\"make\");\n return this.supply(args);\n },\n\n async test(args){\n let asset = await Asset.getByName(\"UAT\", args.name);\n log(asset);\n },\n\n //Used to test startup and teardown speed.\n noop(){\n return true;\n },\n};\nasync function unknownCommand(cmd){\n log(chalk`Unknown command {red ${cmd}}.`);\n}\n\nasync function noCommand(){\n write(chalk`\nRally Tools {yellow v${packageVersion} (alpha)} CLI\nby John Schmidt <John_Schmidt@discovery.com>\n`);\n\n //Prompt users to setup one time config.\n if(!configObject.hasConfig){\n write(chalk`\nIt looks like you haven't setup the config yet. Please run '{green rally config}'.\n`);\n return;\n }\n\n let envs = new Set([\"LOCAL\", \"UAT\", \"DEV\", \"PROD\", \"QA\", ...Object.keys(configObject.api)]);\n\n let proms = [];\n for(let env of envs){\n proms.push({env, prom: funcs.testAccess(env)});\n }\n\n //API Access tests\n for(let {env, prom} of proms){\n //Test access. Returns HTTP response code\n let resultStr;\n try{\n\n let result = await prom;\n\n //Create a colored display and response\n resultStr = chalk`{yellow ${result} <unknown>}`;\n if(result === 200) resultStr = chalk`{green 200 OK}`;\n else if(result === 401) resultStr = chalk`{red 401 No Access}`;\n else if(result >= 500) resultStr = chalk`{yellow ${result} API Down?}`;\n else if(result === true) resultStr = chalk`{green OK}`;\n else if(result === false) resultStr = chalk`{red BAD}`;\n }catch(e){\n if(e instanceof UnconfiguredEnvError){\n resultStr = chalk`{yellow Unconfigured}`;\n }else if(e instanceof APIError){\n if(!e.response.body){\n resultStr = chalk`{red Timeout (?)}`;\n }\n }else if(e.name == \"RequestError\"){\n resultStr = chalk`{red Low level error (check internet): ${e.error.errno}}`;\n }else{\n throw e;\n }\n }\n\n log(chalk` ${env}: ${resultStr}`);\n }\n}\n\nasync function $main(){\n //Supply --config to load a different config file\n if(typeof(argv.config) === \"string\"){\n loadConfig(argv.config);\n }else if(typeof(argv.config) === \"object\") {\n loadConfigFromArgs(argv);\n }else{\n loadConfig();\n }\n\n // First we need to decide if the user wants color or not. If they do want\n // color, we need to make sure we use the right mode\n chalk.enabled = configObject.hasConfig ? configObject.chalk : true;\n if(chalk.level === 0 || !chalk.enabled){\n let force = argv[\"force-color\"];\n if(force){\n chalk.enabled = true;\n if(force === true && chalk.level === 0){\n chalk.level = 1;\n }else if(Number(force)){\n chalk.level = Number(force);\n }\n }\n }\n\n //This flag being true allows you to modify UAT and PROD\n if(!argv[\"protect\"]){\n configObject.dangerModify = true;\n }\n\n //This enables raw output for some functions\n if(argv[\"raw\"]){\n configObject.rawOutput = true;\n global.log = ()=>{};\n global.errorLog = ()=>{};\n global.write = ()=>{};\n }\n\n if(argv[\"ignore-missing\"]){\n configObject.ignoreMissing = true;\n }\n\n if(argv[\"update-immutable\"]){\n configObject.updateImmutable = true;\n }\n\n if(argv[\"skip-header\"]){\n configObject.skipHeader = true;\n }\n\n configObject.globalProgress = !argv[\"hide-progress\"];\n\n //Default enviornment should normally be from config, but it can be\n //overridden by the -e/--env flag\n if(configObject.defaultEnv){\n argv.env = argv.env || configObject.defaultEnv;\n }\n\n //Enable verbose logging in some places.\n if(argv[\"vverbose\"]){\n configObject.verbose = argv[\"vverbose\"];\n configObject.vverbose = true;\n }else if(argv[\"verbose\"]){\n configObject.verbose = argv[\"verbose\"]\n }else if(argv[\"vvverbose\"]){\n configObject.verbose = true;\n configObject.vverbose = true;\n configObject.vvverbose = true;\n }\n\n //copy argument array to new object to allow modification\n argv._old = argv._.slice();\n\n //Take first argument after `node bundle.js`\n //If there is no argument, display the default version info and API access.\n let func = argv._.shift();\n if(func){\n if(!cli[func]) return await unknownCommand(func);\n try{\n //Call the cli function\n let ret = await cli[func](argv);\n if(ret){\n write(chalk.white(\"CLI returned: \"));\n if(ret instanceof Collection) ret = ret.arr;\n\n //Directly use console.log so that --raw works as intended.\n if(typeof ret === \"object\"){\n console.log(JSON.stringify(ret, null, 4));\n }else{\n console.log(ret);\n }\n }\n }catch(e){\n if(e instanceof AbortError){\n log(chalk`{red CLI Aborted}: ${e.message}`);\n }else{\n throw e;\n }\n }\n }else{\n await noCommand();\n }\n}\n\nasync function main(...args){\n //Catch all for errors to avoid ugly default node promise catcher\n try{\n await $main(...args);\n }catch(e){\n errorLog(e.stack);\n }\n}\n\n// If this is an imported module, then we should exec the cli interface.\n// Oterwise just export everything.\nif(require.main === module){\n main();\n}else{\n loadConfig();\n module.exports = allIndexBundle;\n}\n"],"names":["configFile","homedir","configObject","loadConfig","file","hasConfig","json","readFileSync","JSON","parse","e","code","loadConfigFromArgs","args","tempConfig","config","setConfig","obj","helpEntries","helpEntry","name","helpText","text","func","arg","long","short","desc","unshift","param","params","usage","replace","chalk","deepAccess","path","o","key","defineAssoc","classname","shortname","split","lastKey","pop","Object","defineProperty","prototype","get","set","val","spawn","options","Promise","resolve","reject","start","performance","now","stdout","stderr","cp","cp_spawn","write","global","noecho","on","chunk","end","time","timestr","exitCode","log","console","process","elog","ewrite","errorLog","map","red","lib","makeAPIRequest","env","path_full","fullPath","payload","body","method","qs","headers","fullResponse","timeout","api","UnconfiguredEnvError","dangerModify","restrictUAT","ProtectedEnvError","rally_api_key","rally_api","url","startsWith","stringify","fullHeaders","Accept","appName","vvverbose","requestOptions","uri","auth","bearer","simple","resolveWithFullResponse","response","rp","vverbose","request","href","cause","APIError","includes","statusCode","contentType","isJSONResponse","trim","AbortError","indexPath","all","opts","numPages","pageSize","links","last","data","next","observe","str","exec","slice","arrayChunk","array","chunkSize","newArr","i","length","push","doPromises","promises","result","cb","promise","res","clearProgress","size","globalProgress","repeat","drawProgress","max","columns","pct","Number","numFilled","Math","floor","numEmpty","keepalive","inputData","chunksize","_","progress","total","createPromise","ret","values","finished","threads","range","whichThread","currentPromise","undefined","indexPathFast","initOpts","page","baselink","first","linkToPage","allResults","limit","item","isLocalEnv","envName","Error","constructor","message","captureStackTrace","FileTooLargeError","parentAsset","sizeGB","Collection","arr","Symbol","iterator","findById","id","find","x","findByName","findByNameContains","d","chalkPrint","RallyBase","handleCaching","cache","isLoaded","hasLoadedAll","getById","remote","metastring","endpoint","included","getByName","filter","getAllPreCollect","getAll","datas","sort","removeCache","resolveApply","type","dataObj","direction","resolveField","isArray","field","relationships","cleanup","entries","organization","sleep","setTimeout","inquirer","importLazy","readdir","hasAutoCompletePrompt","addAutoCompletePrompt","registerPrompt","require","$api","propArray","q","prompt","default","company","defaults","DEV","UAT","QA","PROD","envs","choices","keys","checked","questions","defaultKey","concat","$chalk","askQuestion","$restrictUAT","$repodir","$appName","defaultAppName","USERNAME","LOGNAME","project","askInput","$project","$defaultEnv","selectProvider","providers","autoDefault","defaultProvider","value","source","sofar","input","toLowerCase","provider","loadLocals","Class","basePath","repodir","f","objs","selectLocal","typeName","canSelectNone","objsMap","none","selectPreset","purpose","Preset","selectRule","Rule","question","def","ok","Provider","meta","getEditorConfig","editorConfig","fileExt","getFileExtension","a","b","attributes","category","localeCompare","python","getmap","lang","pad","String","padStart","File","parent","canBeDownloaded","getContent","force","contentLink","delete","remove","selfLink","instances","round","Asset","lite","metadata","normalizeMetadata","newMetadata","md","getMetadata","forceRefresh","req","patchMetadata","Workflow","Metadata","createNew","getFiles","addFile","label","fileuris","Array","startWorkflow","jobName","initData","priority","startAnonWorkflow","startEphemeralEvaluateIdeal","preset","dynamicPresetData","evalInfo","providerTypeName","rallyConfiguration","providerData","Buffer","from","toString","movie","self","state","startEvaluate","presetid","rename","newName","home","colon","siloLike","pathTransform","invertedPath","fs","writeFileSync","dircreated","directory","dirname","statSync","nodir","mkdirSync","exists","subProject","pathResolve","subproject","pathspl","ext","getLocalCode","ignoreMissing","missing","parseFilenameForName","parseCodeForName","getLocalMetadata","isGeneric","localmetadatapath","newShell","systemManaged","fromMetadata","providerType","realpath","getLocalPath","acclimatize","ptype","test","regex","match","matches","runTest","asset","proType","saveLocal","saveLocalMetadata","saveLocalFile","localpath","uploadRemote","uploadCodeToEnv","save","saved","downloadCode","headerRegex","hasHeader","header","substring","_code","v","sub","endsWith","basename","name_regex","findStringsInCode","strings","RegExp","join","_path","_nameOuter","_nameInner","immutable","updateImmutable","uploadPresetData","providerName","skipHeader","headerText","moment","Date","format","grabMetadata","deleteRemoteVersion","includeMetadata","shouldTest","tagNames","parseHeaderInfo","abs","built","author","build","version","branch","commit","local","tryFormats","isUTC","date","utc","isValid","offset","fromNow","printRemoteInfo","getInfo","printDepends","indent","locals","seen","includeRegex","include","Notification","notifications","pNext","eNext","dynamicNexts","enterNotif","errorNotif","passNotif","saveA","createIfNotExist","saveB","idMap","patchStrip","createdAt","starred","updatedAt","passMetadata","errorMetadata","SupplyChain","startingRule","stopRule","downloadPresetCode","allPresets","calculate","allRules","allProviders","allNotifications","rules","presets","allRuleNames","allPresetNames","allNotifNames","requiredNotifications","Set","ruleQueue","presetQueue","currentRule","forEach","n","add","neededPresets","neededRules","notif","p","verbose","rawOutput","deleteTo","syncTo","rule","User","Tag","prefix","curated","create","notCurated","findLineInFile","renderedPreset","lineNumber","trueFileLine","linedRenderedPreset","includeLocation","endIncludeNumber","addTabDepth","lineBeforeIncludeStatement","withinInclude","indexOf","index","currIncludeIndex","tabDepth","Boolean","funcLine","line","reverse","includeFilename","printOutLine","eLine","jobid","trace","catch","error","output","parseTrace","errorLines","shouldBreak","tr","errorList","errLine","Trace","install","rallyFunctions","bestPagintation","silentAPI","dl","timeEnd","uploadPresets","createFunc","testAccess","SdviContentMover","SdviEvaluate","SdviEvalPro","argv","argparse","string","boolean","protect","alias","printHelp","help","getFilesFromArgs","lastArg","shift","files","getStdin","stdin","presetsub","before","$grab","full","remo","$create","configHelpers","baseCode","$list","attach","$upload","funcs","$deleteRemote","preset2","$diff","tempfile","temp","extension","ptr","command","stdio","$info","unknown","rulesub","passNext","errorNext","transition","description","jupytersub","$build","cmd","categorizeString","defaultSubproject","tagsub","tags","tag","supplysub","$calc","stopName","chain","stop","postAction","to","otherPresets","printPresets","otherPreset","$make","hints","hint","subCommand","object","after","cli","helpArg","jupyter","printArgs","supply","jobId","ln","traceInfo","getTraceInfo","ident","pro","econfig","raw","completions","prop","newConfigObject","helperName","newConfig","y","mode","uuid","digits","random","pow","anon","launchArg","fileArg","arrayify","jobData","ephemeralEval","oldName","checkSegments","allIndexBundle","segments","userMetaData","r","reduce","lastSegment","ind","curSegment","startTime","endTime","getJobs","listAssets","noRelationships","listSegments","segs","test4","things","test5","test2","wfr","wfrm","test3","deleteOmneons","audit","supportedAudits","choice","resourceId","filterFunc","ev","resource","numRows","event","uid","correlation","userId","user","evCounter","evtime","timedist","audit2","findIDs","getAssets","callid","lastResult","lastCall","content","assets","noop","unknownCommand","noCommand","packageVersion","proms","prom","resultStr","errno","$main","enabled","level","defaultEnv","_old","white","main","stack","module","exports"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,IAAIA,UAAU,GAAG,IAAjB;;AAEP,IAAGC,UAAH,EAAW;AACPD,EAAAA,UAAU,GAAGC,UAAO,KAAK,eAAzB;AACH;;AAED,IAAIC,YAAJ;AACO,SAASC,UAAT,CAAoBC,IAApB,EAAyB;AAC5B,MAAGA,IAAH,EAASJ,UAAU,GAAGI,IAAb;AACT,MAAG,CAACJ,UAAJ,EAAgB;AAEhBE,EAAAA,YAAY,GAAG;AAACG,IAAAA,SAAS,EAAE;AAAZ,GAAf;;AACA,MAAG;AACC,QAAIC,IAAI,GAAGC,eAAY,CAACP,UAAD,CAAvB;AACAE,IAAAA,YAAY,GAAGM,IAAI,CAACC,KAAL,CAAWH,IAAX,CAAf;AACAJ,IAAAA,YAAY,CAACG,SAAb,GAAyB,IAAzB;AACH,GAJD,CAIC,OAAMK,CAAN,EAAQ;AACL,QAAGA,CAAC,CAACC,IAAF,IAAU,QAAb,EAAsB;AAClBT,MAAAA,YAAY,CAACG,SAAb,GAAyB,KAAzB,CADkB;AAGrB,KAHD,MAGK;AACD,YAAMK,CAAN;AACH;AACJ;AACJ;AAEM,SAASE,kBAAT,CAA4BC,IAA5B,EAAiC;AACpC,MAAIC,UAAU,GAAG;AACbT,IAAAA,SAAS,EAAE,IADE;AAEb,OAAGQ,IAAI,CAACE;AAFK,GAAjB;AAKAb,EAAAA,YAAY,GAAGY,UAAf;AACH;AAEM,SAASE,SAAT,CAAmBC,GAAnB,EAAuB;AAC1Bf,EAAAA,YAAY,GAAGe,GAAf;AACH;;ACvCD;AACO,IAAIC,WAAW,GAAG,EAAlB;;AACP,IAAIC,SAAS,GAAGC,IAAI,IAAIF,WAAW,CAACE,IAAD,CAAX,GAAoBF,WAAW,CAACE,IAAD,CAA/B,GAAyCF,WAAW,CAACE,IAAD,CAAX,GAAoB;AAACA,EAAAA;AAAD,CAArF;;;AAGO,SAASC,QAAT,CAAkBC,IAAlB,EAAuB;AAC1B,SAAO,UAASC,IAAT,EAAeH,IAAf,EAAoB;AACvBD,IAAAA,SAAS,CAACC,IAAD,CAAT,CAAgBE,IAAhB,GAAuBA,IAAvB;AACA,WAAOC,IAAP;AACH,GAHD;AAIH;;AAGM,SAASC,GAAT,CAAaC,IAAb,EAAmBC,KAAnB,EAA0BC,IAA1B,EAA+B;AAClC,SAAO,UAASJ,IAAT,EAAeH,IAAf,EAAoB;AACvB,QAAIP,IAAI,GAAGM,SAAS,CAACC,IAAD,CAAT,CAAgBP,IAAhB,GAAuBM,SAAS,CAACC,IAAD,CAAT,CAAgBP,IAAhB,IAAwB,EAA1D;AACAA,IAAAA,IAAI,CAACe,OAAL,CAAa;AAACH,MAAAA,IAAD;AAAOC,MAAAA,KAAP;AAAcC,MAAAA;AAAd,KAAb;AACA,WAAOJ,IAAP;AACH,GAJD;AAKH;;AAGM,SAASM,KAAT,CAAeA,KAAf,EAAsBF,IAAtB,EAA2B;AAC9B,SAAO,UAASJ,IAAT,EAAeH,IAAf,EAAoB;AACvB,QAAIU,MAAM,GAAGX,SAAS,CAACC,IAAD,CAAT,CAAgBU,MAAhB,GAAyBX,SAAS,CAACC,IAAD,CAAT,CAAgBU,MAAhB,IAA0B,EAAhE;AACAA,IAAAA,MAAM,CAACF,OAAP,CAAe;AAACC,MAAAA,KAAD;AAAQF,MAAAA;AAAR,KAAf;AACA,WAAOJ,IAAP;AACH,GAJD;AAKH;;AAGM,SAASQ,KAAT,CAAeA,KAAf,EAAqB;AACxB,SAAO,UAASR,IAAT,EAAeH,IAAf,EAAoB;AACvBW,IAAAA,KAAK,GAAGA,KAAK,CAACC,OAAN,CAAc,kBAAd,EAAkCC,KAAM,aAAxC,CAAR;AACAd,IAAAA,SAAS,CAACC,IAAD,CAAT,CAAgBW,KAAhB,GAAwBA,KAAxB;AACA,WAAOR,IAAP;AACH,GAJD;AAKH;AA8DD;;AACA,SAASW,UAAT,CAAoBjB,GAApB,EAAyBkB,IAAzB,EAA8B;AAC1B,MAAIC,CAAC,GAAGnB,GAAR;;AACA,OAAI,IAAIoB,GAAR,IAAeF,IAAf,EAAoB;AAChB,QAAG,CAACC,CAAJ,EAAO,OAAO,EAAP;AACPA,IAAAA,CAAC,GAAGA,CAAC,CAACC,GAAD,CAAL;AACH;;AACD,SAAOD,CAAP;AACH;AAGD;;;AACO,SAASE,WAAT,CAAqBC,SAArB,EAAgCC,SAAhC,EAA2CL,IAA3C,EAAgD;AACnDA,EAAAA,IAAI,GAAGA,IAAI,CAACM,KAAL,CAAW,GAAX,CAAP;AACA,MAAIC,OAAO,GAAGP,IAAI,CAACQ,GAAL,EAAd;AAEAC,EAAAA,MAAM,CAACC,cAAP,CAAsBN,SAAS,CAACO,SAAhC,EAA2CN,SAA3C,EAAsD;AAClDO,IAAAA,GAAG,GAAE;AACD,aAAOb,UAAU,CAAC,IAAD,EAAOC,IAAP,CAAV,CAAuBO,OAAvB,CAAP;AACH,KAHiD;;AAIlDM,IAAAA,GAAG,CAACC,GAAD,EAAK;AACJf,MAAAA,UAAU,CAAC,IAAD,EAAOC,IAAP,CAAV,CAAuBO,OAAvB,IAAkCO,GAAlC;AACH;;AANiD,GAAtD;AAQH;;AAMM,SAASC,KAAT,CAAeC,OAAf,EAAwB,GAAGtC,IAA3B,EAAgC;AACnC,MAAG,OAAOsC,OAAP,KAAmB,QAAtB,EAA+B;AAC3BtC,IAAAA,IAAI,CAACe,OAAL,CAAauB,OAAb;AACAA,IAAAA,OAAO,GAAG,EAAV;AACH,GAJkC;;;AAMnC,SAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACpC,QAAIC,KAAK,GAAGC,sBAAW,CAACC,GAAZ,EAAZ;AAEA,QAAIC,MAAM,GAAG,EAAb;AACA,QAAIC,MAAM,GAAG,EAAb;AACA,QAAIC,EAAE,GAAGC,mBAAQ,CAAC,GAAGhD,IAAJ,CAAjB;AAEA,QAAIiD,KAAK,GAAGC,MAAM,CAACD,KAAnB;;AACA,QAAGX,OAAO,CAACa,MAAX,EAAkB;AACdF,MAAAA,KAAK,GAAG,MAAM,EAAd;AACH;;AACD,QAAGF,EAAE,CAACF,MAAN,EAAcE,EAAE,CAACF,MAAH,CAAUO,EAAV,CAAa,MAAb,EAAqBC,KAAK,IAAI;AAACR,MAAAA,MAAM,IAAIQ,KAAV;AAAiBJ,MAAAA,KAAK,CAACI,KAAD,CAAL;AAAa,KAA7D;AACd,QAAGN,EAAE,CAACD,MAAN,EAAcC,EAAE,CAACD,MAAH,CAAUM,EAAV,CAAa,MAAb,EAAqBC,KAAK,IAAI;AAACP,MAAAA,MAAM,IAAIO,KAAV;AAAiBJ,MAAAA,KAAK,CAACI,KAAD,CAAL;AAAa,KAA7D;AAEdN,IAAAA,EAAE,CAACK,EAAH,CAAM,OAAN,EAAeX,MAAf;AACAM,IAAAA,EAAE,CAACK,EAAH,CAAM,OAAN,EAAetD,IAAI,IAAI;AACnB,UAAIwD,GAAG,GAAGX,sBAAW,CAACC,GAAZ,EAAV;AACA,UAAIW,IAAI,GAAGD,GAAG,GAAGZ,KAAjB;AACA,UAAIc,OAAO,GAAGD,IAAI,GAAG,IAAP,GAAc,CAACA,IAAI,GAAC,GAAL,GAAS,CAAV,IAAa,EAAb,GAAkB,GAAhC,GAAsC,CAACA,IAAI,GAAC,CAAN,IAAW,IAA/D;AACAf,MAAAA,OAAO,CAAC;AAACK,QAAAA,MAAD;AAASC,QAAAA,MAAT;AAAiBW,QAAAA,QAAQ,EAAE3D,IAA3B;AAAiCyD,QAAAA,IAAjC;AAAuCC,QAAAA;AAAvC,OAAD,CAAP;AACH,KALD;AAMH,GArBM,CAAP;AAsBH;;ACzJDN,MAAM,CAAC9B,KAAP,GAAeA,OAAf;;AACA8B,MAAM,CAACQ,GAAP,GAAkB,CAAC,GAAGjD,IAAJ,KAAakD,OAAO,CAACD,GAAR,CAAY,GAAGjD,IAAf,CAA/B;;AACAyC,MAAM,CAACD,KAAP,GAAkB,CAAC,GAAGxC,IAAJ,KAAamD,OAAO,CAACf,MAAR,CAAeI,KAAf,CAAqB,GAAGxC,IAAxB,CAA/B;;AACAyC,MAAM,CAACW,IAAP,GAAkB,CAAC,GAAGpD,IAAJ,KAAakD,OAAO,CAACD,GAAR,CAAY,GAAGjD,IAAf,CAA/B;;AACAyC,MAAM,CAACY,MAAP,GAAkB,CAAC,GAAGrD,IAAJ,KAAamD,OAAO,CAACd,MAAR,CAAeG,KAAf,CAAqB,GAAGxC,IAAxB,CAA/B;;AACAyC,MAAM,CAACa,QAAP,GAAkB,CAAC,GAAGtD,IAAJ,KAAaiD,GAAG,CAAC,GAAGjD,IAAI,CAACuD,GAAL,CAAS5C,OAAK,CAAC6C,GAAf,CAAJ,CAAlC;;AAEO,MAAMC,GAAN,CAAS;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAaC,cAAb,CAA4B;AACxBC,IAAAA,GADwB;AACnB9C,IAAAA,IADmB;AACb+C,IAAAA,SADa;AACFC,IAAAA,QADE;AAExBC,IAAAA,OAFwB;AAEfC,IAAAA,IAFe;AAETC,IAAAA,MAAM,GAAG,KAFA;AAGxBC,IAAAA,EAHwB;AAGpBC,IAAAA,OAAO,GAAG,EAHU;AAIxBC,IAAAA,YAAY,GAAG,KAJS;AAIFC,IAAAA,OAAO,GAAGxF,YAAY,CAACwF,OAAb,IAAwB;AAJhC,GAA5B,EAKE;AAAA;;AACE;AACA,QAAGP,QAAH,EAAaD,SAAS,GAAGC,QAAZ,CAFf;;AAIE,QAAIpE,MAAM,GAAGb,YAAH,aAAGA,YAAH,4CAAGA,YAAY,CAAEyF,GAAjB,sDAAG,kBAAoBV,GAApB,CAAb;;AACA,QAAG,CAAClE,MAAJ,EAAY;AACR,YAAM,IAAI6E,oBAAJ,CAAyBX,GAAzB,CAAN;AACH;;AAED,QAAGK,MAAM,KAAK,KAAX,IAAoB,CAACpF,YAAY,CAAC2F,YAArC,EAAkD;AAC9C,UAAGZ,GAAG,KAAK,KAAR,IAAiB/E,YAAY,CAAC4F,WAA9B,IAA6Cb,GAAG,KAAK,MAAxD,EAA+D;AAC3D,cAAM,IAAIc,iBAAJ,CAAsBd,GAAtB,CAAN;AACH;AACJ;;AAED,QAAIe,aAAa,GAAGjF,MAAM,CAACsB,GAA3B;AACA,QAAI4D,SAAS,GAAGlF,MAAM,CAACmF,GAAvB;;AACA,QAAG/D,IAAI,IAAIA,IAAI,CAACgE,UAAL,CAAgB,QAAhB,CAAX,EAAqC;AACjCF,MAAAA,SAAS,GAAGA,SAAS,CAACjE,OAAV,CAAkB,SAAlB,EAA6B,MAA7B,CAAZ;AACH;;AAEDG,IAAAA,IAAI,GAAG+C,SAAS,IAAIe,SAAS,GAAG9D,IAAhC;;AACA,QAAGiD,OAAH,EAAW;AACPC,MAAAA,IAAI,GAAG7E,IAAI,CAAC4F,SAAL,CAAehB,OAAf,EAAwB,IAAxB,EAA8B,CAA9B,CAAP;AACH;;AAED,QAAGA,OAAH,EAAW;AACPI,MAAAA,OAAO,CAAC,cAAD,CAAP,GAA0B,0BAA1B;AACH;;AAED,QAAIa,WAAW,GAAG;AACd;AACAC,MAAAA,MAAM,EAAE,0BAFM;AAGd,mCAA6B,sBAAsBpG,YAAY,CAACqG,OAAb,IAAwB,aAA9C,CAHf;AAId,SAAGf;AAJW,KAAlB;;AAOA,QAAGtF,YAAY,CAACsG,SAAhB,EAA0B;AACtBjC,MAAAA,GAAG,CAAE,GAAEe,MAAO,MAAKnD,IAAK,EAArB,CAAH;AACAoC,MAAAA,GAAG,CAAC/D,IAAI,CAAC4F,SAAL,CAAeC,WAAf,EAA4B,IAA5B,EAAkC,CAAlC,CAAD,CAAH;;AAEA,UAAGhB,IAAH,EAAQ;AACJd,QAAAA,GAAG,CAACc,IAAD,CAAH;AACH,OAFD,MAEK;AACDd,QAAAA,GAAG,CAAC,UAAD,CAAH;AACH;AACJ;;AAED,QAAIkC,cAAc,GAAG;AACjBnB,MAAAA,MADiB;AACTD,MAAAA,IADS;AACHE,MAAAA,EADG;AACCmB,MAAAA,GAAG,EAAEvE,IADN;AAEjBuD,MAAAA,OAFiB;AAGjBiB,MAAAA,IAAI,EAAE;AAACC,QAAAA,MAAM,EAAEZ;AAAT,OAHW;AAIjBR,MAAAA,OAAO,EAAEa,WAJQ;AAKjBQ,MAAAA,MAAM,EAAE,KALS;AAKFC,MAAAA,uBAAuB,EAAE;AALvB,KAArB;AAQA,QAAIC,QAAJ;;AACA,QAAG;AACCA,MAAAA,QAAQ,GAAG,MAAMC,EAAE,CAACP,cAAD,CAAnB;;AACA,UAAGvG,YAAY,CAAC+G,QAAb,IAAyB/G,YAAY,CAACsG,SAAzC,EAAmD;AAC/CjC,QAAAA,GAAG,CAACtC,OAAM,GAAEqD,MAAO,MAAKyB,QAAQ,CAACG,OAAT,CAAiBR,GAAjB,CAAqBS,IAAK,EAA/C,CAAH;AACH;AACJ,KALD,CAKC,OAAMzG,CAAN,EAAQ;AACL,UAAG,CAAAA,CAAC,SAAD,IAAAA,CAAC,WAAD,YAAAA,CAAC,CAAE0G,KAAH,CAASzG,IAAT,MAAkB,iBAArB,EAAuC;AACnC,cAAM,IAAI0G,QAAJ,CAAaN,QAAQ,IAAI,EAAzB,EAA6BN,cAA7B,EAA6CpB,IAA7C,CAAN;AACH,OAFD,MAEK;AACD,cAAM3E,CAAN;AACH;AACJ,KApEH;;;AAuEE,QAAG,CAAC+E,YAAD,IAAiB,CAAC,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B6B,QAA1B,CAAmCP,QAAQ,CAACQ,UAA5C,CAArB,EAA6E;AACzE,YAAM,IAAIF,QAAJ,CAAaN,QAAb,EAAuBN,cAAvB,EAAuCpB,IAAvC,CAAN;AACH;;AACD,QAAImC,WAAW,GAAGT,QAAQ,CAACvB,OAAT,CAAiB,cAAjB,CAAlB;AACA,QAAIiC,cAAc,GAAGD,WAAW,KAAK,0BAAhB,IAA8CA,WAAW,KAAK,kBAAnF;;AAEA,QAAGtH,YAAY,CAACsG,SAAhB,EAA0B;AACtBjC,MAAAA,GAAG,CAACwC,QAAQ,CAAC1B,IAAV,CAAH;AACH;;AAED,QAAGI,YAAH,EAAgB;AACZ,aAAOsB,QAAP;AACH,KAFD,MAEM,IAAGU,cAAH,EAAkB;AAAA;;AACpB,UAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0BH,QAA1B,CAAmCP,QAAQ,CAACQ,UAA5C,KAA2D,eAACR,QAAD,gEAAC,UAAU1B,IAAX,mDAAC,eAAgBqC,IAAhB,EAAD,CAA9D,EAAuF,OAAO,EAAP;;AACvF,UAAG;AACC,eAAOlH,IAAI,CAACC,KAAL,CAAWsG,QAAQ,CAAC1B,IAApB,CAAP;AACH,OAFD,CAEC,OAAM3E,CAAN,EAAQ;AACL6D,QAAAA,GAAG,CAACwC,QAAQ,CAAC1B,IAAV,CAAH;AACA,cAAM,IAAIsC,UAAJ,CAAe,0BAAf,CAAN;AACH;AACJ,KARK,MAQD;AACD,aAAOZ,QAAQ,CAAC1B,IAAhB;AACH;AACJ,GAtHW;AAyHZ;AACA;AACA;AACA;;;AACA,eAAauC,SAAb,CAAuB3C,GAAvB,EAA4B9C,IAA5B,EAAiC;AAC7B,QAAI0F,GAAG,GAAG,EAAV;AAEA,QAAIC,IAAI,GAAG,OAAO7C,GAAP,KAAe,QAAf,GAA0B;AAACA,MAAAA,GAAD;AAAM9C,MAAAA;AAAN,KAA1B,GAAwC8C,GAAnD;AACA,QAAI3E,IAAI,GAAG,MAAM,KAAK0E,cAAL,CAAoB8C,IAApB,CAAjB;AAEA,QAAI,CAACC,QAAD,EAAWC,QAAX,IAAuB,KAAKD,QAAL,CAAczH,IAAI,CAAC2H,KAAL,CAAWC,IAAzB,CAA3B,CAN6B;;AAS7BL,IAAAA,GAAG,GAAG,CAAC,GAAGvH,IAAI,CAAC6H,IAAT,CAAN;;AACA,WAAM7H,IAAI,CAAC2H,KAAL,CAAWG,IAAjB,EAAsB;AAClB9H,MAAAA,IAAI,GAAG,MAAM,KAAK0E,cAAL,CAAoB,EAAC,GAAG8C,IAAJ;AAAU5C,QAAAA,SAAS,EAAE5E,IAAI,CAAC2H,KAAL,CAAWG;AAAhC,OAApB,CAAb;AACA,UAAGN,IAAI,CAACO,OAAR,EAAiB,MAAMP,IAAI,CAACO,OAAL,CAAa/H,IAAI,CAAC6H,IAAlB,CAAN;AACjBN,MAAAA,GAAG,GAAG,CAAC,GAAGA,GAAJ,EAAS,GAAGvH,IAAI,CAAC6H,IAAjB,CAAN;AACH;;AAED,WAAON,GAAP;AACH,GA9IW;;;AAiJZ,SAAOE,QAAP,CAAgBO,GAAhB,EAAoB;AAChB,WAAO,mBAAmBC,IAAnB,CAAwBD,GAAxB,EAA6BE,KAA7B,CAAmC,CAAnC,CAAP;AACH;;AAED,SAAOC,UAAP,CAAkBC,KAAlB,EAAyBC,SAAzB,EAAmC;AAC/B,QAAIC,MAAM,GAAG,EAAb;;AACA,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,KAAK,CAACI,MAA1B,EAAkCD,CAAC,IAAIF,SAAvC,EAAiD;AAC7CC,MAAAA,MAAM,CAACG,IAAP,CAAYL,KAAK,CAACF,KAAN,CAAYK,CAAZ,EAAeA,CAAC,GAAGF,SAAnB,CAAZ;AACH;;AACD,WAAOC,MAAP;AACH;;AAED,eAAaI,UAAb,CAAwBC,QAAxB,EAAkCC,MAAM,GAAG,EAA3C,EAA+CC,EAA/C,EAAkD;AAC9C,SAAI,IAAIC,OAAR,IAAmBH,QAAnB,EAA4B;AACxB,UAAII,GAAG,GAAG,MAAMD,OAAhB;AACAF,MAAAA,MAAM,CAACH,IAAP,CAAYM,GAAZ;;AACA,UAAGF,EAAH,EAAM;AACFA,QAAAA,EAAE,CAACE,GAAG,CAAClB,IAAL,CAAF;AACH;AACJ;;AACD,WAAOe,MAAP;AACH;;AAED,SAAOI,aAAP,CAAqBC,IAAI,GAAG,EAA5B,EAA+B;AAC3B,QAAG,CAACrJ,YAAY,CAACsJ,cAAjB,EAAiC;AACjC/E,IAAAA,OAAO,CAACd,MAAR,CAAeG,KAAf,CAAsB,KAAI,IAAI2F,MAAJ,CAAWF,IAAI,GAAG,EAAlB,CAAsB,IAAhD;AACH;;AAED,eAAaG,YAAb,CAA0Bb,CAA1B,EAA6Bc,GAA7B,EAAkCJ,IAAI,GAAG9E,OAAO,CAACf,MAAR,CAAekG,OAAf,GAAyB,EAAzB,IAA+B,EAAxE,EAA2E;AACvE,QAAG,CAAC1J,YAAY,CAACsJ,cAAjB,EAAiC;AACjC,QAAGD,IAAI,GAAG,EAAV,EAAcA,IAAI,GAAG,EAAP;AACd,QAAIM,GAAG,GAAGC,MAAM,CAACjB,CAAD,CAAN,GAAYiB,MAAM,CAACH,GAAD,CAA5B,CAHuE;;AAKvEE,IAAAA,GAAG,GAAGA,GAAG,GAAG,CAAN,GAAU,CAAV,GAAcA,GAAG,GAAG,CAAN,GAAU,CAAV,GAAcA,GAAlC;AACA,QAAIE,SAAS,GAAGC,IAAI,CAACC,KAAL,CAAWJ,GAAG,GAAGN,IAAjB,CAAhB;AACA,QAAIW,QAAQ,GAAGX,IAAI,GAAGQ,SAAtB;AAEA,SAAKT,aAAL,CAAmBC,IAAnB;AACA9E,IAAAA,OAAO,CAACd,MAAR,CAAeG,KAAf,CAAsB,IAAG,IAAI2F,MAAJ,CAAWM,SAAX,CAAsB,GAAE,IAAIN,MAAJ,CAAWS,QAAX,CAAqB,KAAIrB,CAAE,MAAKc,GAAI,EAArF;AACH;;AAGD,eAAaQ,SAAb,CAAuB5I,IAAvB,EAA6B6I,SAA7B,EAAwC;AAACC,IAAAA,SAAS,GAAG,EAAb;AAAiBhC,IAAAA,OAAO,GAAG,MAAMiC,CAAN,IAASA,CAApC;AAAuCC,IAAAA,QAAQ,GAAGrK,YAAY,CAACsJ;AAA/D,MAAiF,EAAzH,EAA4H;AACxH,QAAIgB,KAAK,GAAGJ,SAAS,GAAGA,SAAS,CAACtB,MAAb,GAAsBvH,IAAI,CAACuH,MAAhD;AACA,QAAID,CAAC,GAAG,CAAR;;AACA,QAAI4B,aAAa,GAAG,MAAM;AACtB,UAAIC,GAAJ;AACA,UAAG7B,CAAC,IAAI2B,KAAR,EAAe,OAAO,EAAP;;AACf,UAAGJ,SAAH,EAAa;AACTM,QAAAA,GAAG,GAAG,CAAC7B,CAAD,EAAItH,IAAI,CAAC6I,SAAS,CAACvB,CAAD,CAAV,CAAR,CAAN;AACH,OAFD,MAEK;AACD6B,QAAAA,GAAG,GAAG,CAAC7B,CAAD,EAAItH,IAAI,CAACsH,CAAD,CAAJ,EAAJ,CAAN;AACH;;AAEDA,MAAAA,CAAC;AACD,aAAO6B,GAAP;AACH,KAXD;;AAaA,QAAIC,MAAM,GAAG,EAAb;AACA,QAAIC,QAAQ,GAAG,CAAf;AACA,QAAGL,QAAH,EAAa9F,OAAO,CAACd,MAAR,CAAeG,KAAf,CAAqB,IAArB;AACb,QAAI+G,OAAO,GAAG,CAAC,GAAG,KAAKC,KAAL,CAAWT,SAAX,CAAJ,EAA2BxF,GAA3B,CAA+B,MAAMkG,WAAN,IAAqB;AAC9D,aAAM,IAAN,EAAW;AACP,YAAI,CAAClC,CAAD,EAAImC,cAAJ,IAAsBP,aAAa,EAAvC;AACA,YAAG5B,CAAC,IAAIoC,SAAR,EAAmB;AACnBN,QAAAA,MAAM,CAAC9B,CAAD,CAAN,GAAY,MAAMR,OAAO,EAAC,MAAM2C,cAAP,EAAzB;AACA,YAAGT,QAAH,EAAa,KAAKb,YAAL,CAAkB,EAAEkB,QAApB,EAA8BJ,KAA9B;AAChB;AACJ,KAPa,CAAd;AAQA,UAAMpH,OAAO,CAACyE,GAAR,CAAYgD,OAAZ,CAAN;AACA,QAAGN,QAAH,EAAa9F,OAAO,CAACd,MAAR,CAAeG,KAAf,CAAqB,IAArB;AAGb,WAAO6G,MAAP;AACH;;AAED,UAAQG,KAAR,CAAcvH,KAAd,EAAqBY,GAArB,EAAyB;AACrB,QAAGA,GAAG,KAAK8G,SAAX,EAAqB;AACjB9G,MAAAA,GAAG,GAAGZ,KAAN;AACAA,MAAAA,KAAK,GAAG,CAAR;AACH;;AACD,WAAMA,KAAK,GAAGY,GAAd,EAAmB,MAAMZ,KAAK,EAAX;AACtB,GAnOW;AAsOZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAAa2H,aAAb,CAA2BjG,GAA3B,EAAgC9C,IAAhC,EAAqC;AACjC,QAAI2F,IAAI,GAAG,OAAO7C,GAAP,KAAe,QAAf,GAA0B;AAACA,MAAAA,GAAD;AAAM9C,MAAAA;AAAN,KAA1B,GAAwC8C,GAAnD,CADiC;;AAGjC,QAAI1B,KAAK,GAAGuE,IAAI,CAACvE,KAAL,IAAc,CAA1B;AACA,QAAI4H,QAAQ,GAAG,EAAC,GAAGrD;AAAJ,KAAf;;AACA,QAAGA,IAAI,CAACE,QAAR,EAAiB;AACbmD,MAAAA,QAAQ,CAAC5F,EAAT,GAAc,EAAC,GAAGuC,IAAI,CAACvC;AAAT,OAAd;AACA4F,MAAAA,QAAQ,CAAC5F,EAAT,CAAY6F,IAAZ,GAAoB,GAAE7H,KAAM,IAAGuE,IAAI,CAACE,QAAS,EAA7C;AACH;;AAED,QAAI1H,IAAI,GAAG,MAAM,KAAK0E,cAAL,CAAoBmG,QAApB,CAAjB;AAEA,QAAGrD,IAAI,CAACO,OAAL,IAAgBP,IAAI,CAACvE,KAAL,KAAe,CAAlC,EAAqCjD,IAAI,GAAG,MAAMwH,IAAI,CAACO,OAAL,CAAa/H,IAAb,CAAb;AAErC,QAAI+K,QAAQ,GAAG/K,IAAI,CAAC2H,KAAL,CAAWqD,KAA1B;;AACA,UAAMC,UAAU,GAAGH,IAAI,IAAIC,QAAQ,CAACrJ,OAAT,CAAkB,SAAlB,EAA6B,QAAOoJ,IAAK,GAAzC,CAA3B;;AAEA,QAAI,CAACrD,QAAD,EAAWC,QAAX,IAAuB,KAAKD,QAAL,CAAczH,IAAI,CAAC2H,KAAL,CAAWC,IAAzB,CAA3B,CAjBiC;AAoBjC;;AACA,QAAIsD,UAAU,GAAG,MAAM,KAAKrB,SAAL,CACnB,KAAKnF,cADc,EAEnB,CAAC,GAAG,KAAK8F,KAAL,CAAWvH,KAAK,GAAC,CAAjB,EAAoBuG,MAAM,CAAC/B,QAAD,CAAN,GAAmB,CAAnB,IAAwBD,IAAI,CAAC2D,KAAL,GAAa,CAAzD,CAAJ,EACK5G,GADL,CACSgE,CAAC,KAAK,EAAC,GAAGf,IAAJ;AAAU5C,MAAAA,SAAS,EAAEqG,UAAU,CAAC1C,CAAD;AAA/B,KAAL,CADV,CAFmB,EAInB;AAACwB,MAAAA,SAAS,EAAEvC,IAAI,CAACuC,SAAjB;AAA4BhC,MAAAA,OAAO,EAAEP,IAAI,CAACO;AAA1C,KAJmB,CAAvB;;AAMA,QAAG9E,KAAK,IAAI,CAAZ,EAAc;AACViI,MAAAA,UAAU,CAAC5J,OAAX,CAAmBtB,IAAnB;AACH;;AACD,SAAKgJ,aAAL;AAEA,QAAIzB,GAAG,GAAG,EAAV;;AACA,SAAI,IAAIqB,MAAR,IAAkBsC,UAAlB,EAA6B;AACzB,WAAI,IAAIE,IAAR,IAAgBxC,MAAM,CAACf,IAAvB,EAA4B;AACxBN,QAAAA,GAAG,CAACkB,IAAJ,CAAS2C,IAAT;AACH;AACJ;;AAED,WAAO7D,GAAP;AACH;;AACD,SAAO8D,UAAP,CAAkB1G,GAAlB,EAAsB;AAClB,WAAO,CAACA,GAAD,IAAQA,GAAG,KAAK,OAAhB,IAA2BA,GAAG,KAAK,KAA1C;AACH;;AACD,SAAO2G,OAAP,CAAe3G,GAAf,EAAmB;AACf,QAAG,KAAK0G,UAAL,CAAgB1G,GAAhB,CAAH,EAAyB,OAAO,OAAP;AACzB,WAAOA,GAAP;AACH;;AA/RW;AAkST,MAAM0C,UAAN,SAAyBkE,KAAzB,CAA8B;AACjCC,EAAAA,WAAW,CAACC,OAAD,EAAS;AAChB,UAAMA,OAAN;AACAF,IAAAA,KAAK,CAACG,iBAAN,CAAwB,IAAxB,EAA8B,KAAKF,WAAnC;AACA,SAAK1K,IAAL,GAAY,YAAZ;AACH;;AALgC;AAQ9B,MAAMiG,QAAN,SAAuBwE,KAAvB,CAA4B;AAC/BC,EAAAA,WAAW,CAAC/E,QAAD,EAAWe,IAAX,EAAiBzC,IAAjB,EAAsB;AAC7B,UAAMpD,OAAM;mCACe8E,QADhB,aACgBA,QADhB,uBACgBA,QAAQ,CAAEQ,UAAW;SAC/C/G,IAAI,CAAC4F,SAAL,CAAe0B,IAAf,EAAqB,IAArB,EAA2B,CAA3B,CAA8B;SAC9BzC,IAAK;SACL0B,QAAQ,CAAC1B,IAAK;;OAEhB0B,QAAQ,CAAC1B,IAAT,GAAgB,mBAAhB,GAAsC,uBAAwB;;SAN7D;AASA,SAAK0B,QAAL,GAAgBA,QAAhB;AACA,SAAKe,IAAL,GAAYA,IAAZ;AACA,SAAKzC,IAAL,GAAYA,IAAZ;AAEAwG,IAAAA,KAAK,CAACG,iBAAN,CAAwB,IAAxB,EAA8B,KAAKF,WAAnC;AACA,SAAK1K,IAAL,GAAY,UAAZ;AACH;;AAjB8B;AAoB5B,MAAMwE,oBAAN,SAAmC+B,UAAnC,CAA6C;AAChDmE,EAAAA,WAAW,CAAC7G,GAAD,EAAK;AACZ,UAAM,+BAA+BA,GAArC;AACA,SAAK7D,IAAL,GAAY,wBAAZ;AACH;;AAJ+C;AAO7C,MAAM2E,iBAAN,SAAgC4B,UAAhC,CAA0C;AAC7CmE,EAAAA,WAAW,CAAC7G,GAAD,EAAK;AACZ,UAAM,4BAA4BA,GAAlC;AACA,SAAK7D,IAAL,GAAY,qBAAZ;AACH;;AAJ4C;AAO1C,MAAM6K,iBAAN,SAAgCJ,KAAhC,CAAqC;AACxCC,EAAAA,WAAW,CAAC1L,IAAD,EAAM;AACb,UAAO,QAAOA,IAAI,CAAC8L,WAAL,GAAmB9L,IAAI,CAAC8L,WAAL,CAAiB9K,IAApC,GAA2C,WAAY,IAAGhB,IAAI,CAACgB,IAAK,aAAYhB,IAAI,CAAC+L,MAAO,YAA1G;AACA,SAAK/K,IAAL,GAAY,sBAAZ;AACH;;AAJuC;AAOrC,MAAMgL,UAAN,CAAgB;AACnBN,EAAAA,WAAW,CAACO,GAAD,EAAK;AACZ,SAAKA,GAAL,GAAWA,GAAX;AACH;;AACD,GAACC,MAAM,CAACC,QAAR,IAAmB;AACf,WAAO,KAAKF,GAAL,CAASC,MAAM,CAACC,QAAhB,GAAP;AACH;;AACDC,EAAAA,QAAQ,CAACC,EAAD,EAAI;AACR,WAAO,KAAKJ,GAAL,CAASK,IAAT,CAAcC,CAAC,IAAIA,CAAC,CAACF,EAAF,IAAQA,EAA3B,CAAP;AACH;;AACDG,EAAAA,UAAU,CAACxL,IAAD,EAAM;AACZ,WAAO,KAAKiL,GAAL,CAASK,IAAT,CAAcC,CAAC,IAAIA,CAAC,CAACvL,IAAF,IAAUA,IAA7B,CAAP;AACH;;AACDyL,EAAAA,kBAAkB,CAACzL,IAAD,EAAM;AACpB,WAAO,KAAKiL,GAAL,CAASK,IAAT,CAAcC,CAAC,IAAIA,CAAC,CAACvL,IAAF,CAAOkG,QAAP,CAAgBlG,IAAhB,CAAnB,CAAP;AACH;;AACDmD,EAAAA,GAAG,GAAE;AACD,SAAI,IAAIuI,CAAR,IAAa,IAAb,EAAkB;AACd,UAAGA,CAAH,EAAK;AACDvI,QAAAA,GAAG,CAACuI,CAAC,CAACC,UAAF,CAAa,IAAb,CAAD,CAAH;AACH,OAFD,MAEK;AACDxI,QAAAA,GAAG,CAACtC,OAAM,cAAP,CAAH;AACH;AACJ;AACJ;;AACD,MAAI6G,MAAJ,GAAY;AAAC,WAAO,KAAKuD,GAAL,CAASvD,MAAhB;AAAwB;;AAzBlB;AA4BhB,MAAMkE,SAAN,CAAe;AAClB,SAAOC,aAAP,GAAsB;AAClB,QAAG,CAAC,KAAKC,KAAT,EAAgB,KAAKA,KAAL,GAAa,EAAb;AACnB;;AACD,SAAOC,QAAP,CAAgBlI,GAAhB,EAAoB;AAChB,QAAG,CAAC,KAAKmI,YAAT,EAAuB;AACvB,WAAO,KAAKA,YAAL,CAAkBnI,GAAlB,CAAP;AACH;;AACD,eAAaoI,OAAb,CAAqBpI,GAArB,EAA0BwH,EAA1B,EAA8BlH,EAA9B,EAAiC;AAC7B,SAAK0H,aAAL;;AACA,SAAI,IAAIvB,IAAR,IAAgB,KAAKwB,KAArB,EAA2B;AACvB,UAAGxB,IAAI,CAACe,EAAL,IAAWA,EAAX,IAAiBf,IAAI,CAAC4B,MAAL,KAAgBrI,GAAjC,IAAyC,GAAEA,GAAI,IAAGwH,EAAG,EAAb,KAAmBf,IAAI,CAAC6B,UAAnE,EAA+E,OAAO7B,IAAP;AAClF;;AAED,QAAIvD,IAAI,GAAG,MAAMpD,GAAG,CAACC,cAAJ,CAAmB;AAChCC,MAAAA,GADgC;AAC3B9C,MAAAA,IAAI,EAAG,IAAG,KAAKqL,QAAS,IAAGf,EAAG,EADH;AAEhClH,MAAAA;AAFgC,KAAnB,CAAjB;;AAIA,QAAG4C,IAAI,CAACA,IAAR,EAAa;AACT,UAAI/F,CAAC,GAAG,IAAI,IAAJ,CAAS;AAAC+F,QAAAA,IAAI,EAAEA,IAAI,CAACA,IAAZ;AAAkBmF,QAAAA,MAAM,EAAErI,GAA1B;AAA+BwI,QAAAA,QAAQ,EAAEtF,IAAI,CAACsF;AAA9C,OAAT,CAAR;AACA,WAAKP,KAAL,CAAWnE,IAAX,CAAgB3G,CAAhB;AACA,aAAOA,CAAP;AACH;AACJ;;AAED,eAAasL,SAAb,CAAuBzI,GAAvB,EAA4B7D,IAA5B,EAAkCmE,EAAlC,EAAqC;AACjC,SAAK0H,aAAL;;AACA,SAAI,IAAIvB,IAAR,IAAgB,KAAKwB,KAArB,EAA2B;AACvB,UAAGxB,IAAI,CAACtK,IAAL,KAAcA,IAAd,IAAsBsK,IAAI,CAAC4B,MAAL,KAAgBrI,GAAzC,EAA8C,OAAOyG,IAAP;AACjD;;AAED,QAAIvD,IAAI,GAAG,MAAMpD,GAAG,CAACC,cAAJ,CAAmB;AAChCC,MAAAA,GADgC;AAC3B9C,MAAAA,IAAI,EAAG,IAAG,KAAKqL,QAAS,EADG;AAEhCjI,MAAAA,EAAE,EAAE,EAAC,GAAGA,EAAJ;AAAQoI,QAAAA,MAAM,EAAG,QAAOvM,IAAK,EAAb,IAAkBmE,EAAE,GAAGA,EAAE,CAACoI,MAAN,GAAe,EAAnC;AAAhB;AAF4B,KAAnB,CAAjB,CANiC;;AAWjC,QAAGxF,IAAI,CAACA,IAAL,CAAU,CAAV,CAAH,EAAgB;AACZ,UAAI/F,CAAC,GAAG,IAAI,IAAJ,CAAS;AAAC+F,QAAAA,IAAI,EAAEA,IAAI,CAACA,IAAL,CAAU,CAAV,CAAP;AAAqBmF,QAAAA,MAAM,EAAErI,GAA7B;AAAkCwI,QAAAA,QAAQ,EAAEtF,IAAI,CAACsF;AAAjD,OAAT,CAAR;AACA,WAAKP,KAAL,CAAWnE,IAAX,CAAgB3G,CAAhB;AACA,aAAOA,CAAP;AACH;AACJ;;AAED,eAAawL,gBAAb,CAA8Bd,CAA9B,EAAgC;AAAC,WAAOA,CAAP;AAAU;;AAC3C,eAAae,MAAb,CAAoB5I,GAApB,EAAwB;AACpB,SAAKgI,aAAL;AACA,QAAIa,KAAK,GAAG,MAAM/I,GAAG,CAACmG,aAAJ,CAAkB;AAChCjG,MAAAA,GADgC;AAC3B9C,MAAAA,IAAI,EAAG,IAAG,KAAKqL,QAAS,EADG;AAEhCxF,MAAAA,QAAQ,EAAE,IAFsB;AAGhCzC,MAAAA,EAAE,EAAE;AAACwI,QAAAA,IAAI,EAAE;AAAP;AAH4B,KAAlB,CAAlB;AAKAD,IAAAA,KAAK,GAAG,MAAM,KAAKF,gBAAL,CAAsBE,KAAtB,CAAd;AACA,QAAIjG,GAAG,GAAG,IAAIuE,UAAJ,CAAe0B,KAAK,CAACjJ,GAAN,CAAUsD,IAAI,IAAI,IAAI,IAAJ,CAAS;AAACA,MAAAA,IAAD;AAAOmF,MAAAA,MAAM,EAAErI;AAAf,KAAT,CAAlB,CAAf,CAAV;AACA,SAAKiI,KAAL,GAAa,CAAC,GAAG,KAAKA,KAAT,EAAgB,GAAGrF,GAAG,CAACwE,GAAvB,CAAb;AACA,WAAOxE,GAAP;AACH;;AACD,eAAamG,WAAb,CAAyB/I,GAAzB,EAA6B;AACzB,SAAKgI,aAAL;AACA,SAAKC,KAAL,GAAa,KAAKA,KAAL,CAAWS,MAAX,CAAkBhB,CAAC,IAAIA,CAAC,CAACW,MAAF,KAAarI,GAApC,CAAb;AACH,GA3DiB;AA8DlB;;;AACA,QAAMgJ,YAAN,CAAmBC,IAAnB,EAAyBC,OAAzB,EAAkCC,SAAlC,EAA4C;AACxC,QAAInN,GAAJ;;AACA,QAAGmN,SAAS,IAAI,SAAhB,EAA0B;AACtBnN,MAAAA,GAAG,GAAG,MAAMiN,IAAI,CAACb,OAAL,CAAa,KAAKC,MAAlB,EAA0Ba,OAAO,CAAC1B,EAAlC,CAAZ;;AACA,UAAGxL,GAAH,EAAO;AACHkN,QAAAA,OAAO,CAAC/M,IAAR,GAAeH,GAAG,CAACG,IAAnB;AACH;AACJ,KALD,MAKM,IAAGgN,SAAS,IAAI,UAAhB,EAA2B;AAC7BnN,MAAAA,GAAG,GAAG,MAAMiN,IAAI,CAACR,SAAL,CAAe,KAAKJ,MAApB,EAA4Ba,OAAO,CAAC/M,IAApC,CAAZ;;AACA,UAAGH,GAAH,EAAO;AACHkN,QAAAA,OAAO,CAAC1B,EAAR,GAAaxL,GAAG,CAACwL,EAAjB;AACH;AACJ;;AACD,WAAOxL,GAAP;AACH,GA7EiB;AAgFlB;AACA;AACA;;;AACA,QAAMoN,YAAN,CAAmBH,IAAnB,EAAyB9M,IAAzB,EAA+BkN,OAAO,GAAC,KAAvC,EAA8CF,SAAS,GAAC,SAAxD,EAAkE;AAC9D;AACA,QAAIG,KAAK,GAAG,KAAKC,aAAL,CAAmBpN,IAAnB,CAAZ;AACA,QAAG,EAACmN,KAAD,aAACA,KAAD,uBAACA,KAAK,CAAEpG,IAAR,CAAH,EAAiB;;AAEjB,QAAGmG,OAAH,EAAW;AACP,aAAO,MAAMlL,OAAO,CAACyE,GAAR,CAAY0G,KAAK,CAACpG,IAAN,CAAWtD,GAAX,CAAezC,CAAC,IAAI,KAAK6L,YAAL,CAAkBC,IAAlB,EAAwB9L,CAAxB,EAA2BgM,SAA3B,CAApB,CAAZ,CAAb;AACH,KAFD,MAEK;AACD,aAAO,MAAM,KAAKH,YAAL,CAAkBC,IAAlB,EAAwBK,KAAK,CAACpG,IAA9B,EAAoCiG,SAApC,CAAb;AACH;AACJ;;AAEDK,EAAAA,OAAO,GAAE;AACL,SAAI,IAAI,CAACpM,GAAD,EAAMY,GAAN,CAAR,IAAsBL,MAAM,CAAC8L,OAAP,CAAe,KAAKF,aAApB,CAAtB,EAAyD;AACrD;AACA,UAAGvL,GAAG,CAACkF,IAAP,EAAY;AACR,YAAGlF,GAAG,CAACkF,IAAJ,CAASsE,EAAZ,EAAe;AACX,iBAAOxJ,GAAG,CAACkF,IAAJ,CAASsE,EAAhB;AACH,SAFD,MAEM,IAAGxJ,GAAG,CAACkF,IAAJ,CAAS,CAAT,CAAH,EAAe;AACjB,eAAI,IAAIwE,CAAR,IAAa1J,GAAG,CAACkF,IAAjB,EAAuB,OAAOwE,CAAC,CAACF,EAAT;AAC1B;AACJ;;AACD,aAAOxJ,GAAG,CAACgF,KAAX;AACH,KAXI;;;AAaL,WAAO,KAAKuG,aAAL,CAAmBG,YAA1B,CAbK;AAeL;;AACA,SAAKpB,UAAL,GAAkB,KAAKD,MAAL,GAAc,GAAd,GAAoB,KAAKnF,IAAL,CAAUsE,EAAhD;AACA,WAAO,KAAKtE,IAAL,CAAUsE,EAAjB,CAjBK;;AAmBL,WAAO,KAAKtE,IAAL,CAAUF,KAAjB;AACH;;AAnHiB;AAsHf,SAAS2G,KAAT,CAAexK,IAAI,GAAG,IAAtB,EAA2B;AAC9B,SAAO,IAAIhB,OAAJ,CAAYC,OAAO,IAAIwL,UAAU,CAACxL,OAAD,EAAUe,IAAV,CAAjC,CAAP;AACH;;AC/eM,MAAM0K,QAAQ,GAAGC,UAAU,CAAC,UAAD,CAA3B;AACP,MAAMC,OAAO,GAAGD,UAAU,CAAC,mBAAD,CAA1B;AAEA,IAAIE,qBAAqB,GAAG,KAA5B;AACO,SAASC,qBAAT,GAAgC;AACnC,MAAGD,qBAAH,EAA0B;AAC1BA,EAAAA,qBAAqB,GAAG,IAAxB;AACAH,EAAAA,QAAQ,CAACK,cAAT,CAAwB,cAAxB,EAAwCC,OAAO,CAAC,8BAAD,CAA/C;AACH;AAEM,eAAeC,IAAf,CAAoBC,SAApB,EAA8B;AACjC,MAAIC,CAAJ;AACAA,EAAAA,CAAC,GAAG,MAAMT,QAAQ,CAACU,MAAT,CAAgB,CAAC;AACvBtB,IAAAA,IAAI,EAAE,OADiB;AAEvB9M,IAAAA,IAAI,EAAE,SAFiB;AAGvB2K,IAAAA,OAAO,EAAG,uBAHa;AAIvB0D,IAAAA,OAAO,EAAG;AAJa,GAAD,CAAhB,CAAV;AAOA,MAAIC,OAAO,GAAGH,CAAC,CAACG,OAAhB;AAEA,QAAMC,QAAQ,GAAG;AACbC,IAAAA,GAAG,EAAI,WAAUF,OAAQ,sBADZ;AAEbG,IAAAA,GAAG,EAAI,WAAUH,OAAQ,sBAFZ;AAGbI,IAAAA,EAAE,EAAI,WAAUJ,OAAQ,qBAHX;AAIbK,IAAAA,IAAI,EAAG,WAAUL,OAAQ;AAJZ,GAAjB;;AAOA,MAAGJ,SAAS,IAAIA,SAAS,CAAC,CAAD,CAAzB,EAA6B;AACzBC,IAAAA,CAAC,GAAG;AAACS,MAAAA,IAAI,EAAE,CAACV,SAAS,CAAC,CAAD,CAAV;AAAP,KAAJ;AACH,GAFD,MAEK;AACD;AACAC,IAAAA,CAAC,GAAG,MAAMT,QAAQ,CAACU,MAAT,CAAgB,CAAC;AACvBtB,MAAAA,IAAI,EAAE,UADiB;AAEvB9M,MAAAA,IAAI,EAAE,MAFiB;AAGvB2K,MAAAA,OAAO,EAAG,gDAHa;AAIvBkE,MAAAA,OAAO,EAAErN,MAAM,CAACsN,IAAP,CAAYP,QAAZ,EAAsB9K,GAAtB,CAA0BzD,IAAI,KAAK;AAACA,QAAAA,IAAD;AAAO+O,QAAAA,OAAO,EAAC;AAAf,OAAL,CAA9B;AAJc,KAAD,CAAhB,CAAV;AAMH,GA5BgC;;;AA+BjC,MAAIC,SAAS,GAAGb,CAAC,CAACS,IAAF,CAAOnL,GAAP,CAAWI,GAAG,IAAI;AAC9B,QAAIoL,UAAU,GAAG5L,OAAO,CAACQ,GAAR,CAAa,iBAAgBA,GAAI,EAAjC,CAAjB;;AACA,QAAG/E,YAAY,IAAIA,YAAY,CAACyF,GAA7B,IAAoCzF,YAAY,CAACyF,GAAb,CAAiBV,GAAjB,CAAvC,EAA6D;AACzDoL,MAAAA,UAAU,GAAGnQ,YAAY,CAACyF,GAAb,CAAiBV,GAAjB,EAAsB5C,GAAnC;AACH;;AAED,WAAO,CAAC;AACJ6L,MAAAA,IAAI,EAAE,OADF;AAEJ9M,MAAAA,IAAI,EAAG,OAAM6D,GAAI,MAFb;AAGJ8G,MAAAA,OAAO,EAAG,gCAA+B9G,GAAI,GAHzC;AAIJwK,MAAAA,OAAO,EAAEE,QAAQ,CAAC1K,GAAD;AAJb,KAAD,EAKJ;AACCiJ,MAAAA,IAAI,EAAE,OADP;AAEC9M,MAAAA,IAAI,EAAG,OAAM6D,GAAI,MAFlB;AAGC8G,MAAAA,OAAO,EAAG,4BAA2B9G,GAAI,GAH1C;AAICwK,MAAAA,OAAO,EAAEY;AAJV,KALI,CAAP;AAWH,GAjBe,CAAhB,CA/BiC;;AAmDjCD,EAAAA,SAAS,GAAG,GAAGE,MAAH,CAAU,GAAGF,SAAb,CAAZ;AACAb,EAAAA,CAAC,GAAG,MAAMT,QAAQ,CAACU,MAAT,CAAgBY,SAAhB,CAAV;;AACA,MAAGd,SAAH,EAAa;AACTC,IAAAA,CAAC,CAAC5J,GAAF,GAAQ,EAAC,GAAGzF,YAAY,CAACyF,GAAjB;AAAsB,SAAG4J,CAAC,CAAC5J;AAA3B,KAAR;AACH;;AACD,SAAO4J,CAAP;AACH;AACM,eAAegB,MAAf,CAAsBjB,SAAtB,EAAgC;AACnC,SAAO;AAACrN,IAAAA,KAAK,EAAE,MAAMuO,WAAW,CAAC,+CAAD;AAAzB,GAAP;AACH;AACM,eAAeC,YAAf,CAA4BnB,SAA5B,EAAsC;AACzC,SAAO;AAACxJ,IAAAA,WAAW,EAAE,MAAM0K,WAAW,CAAC,gCAAD;AAA/B,GAAP;AACH;AACM,eAAeE,QAAf,CAAwBpB,SAAxB,EAAkC;AACrC,SAAO,MAAMR,QAAQ,CAACU,MAAT,CAAgB,CAAC;AAC1BtB,IAAAA,IAAI,EAAE,OADoB;AAE1B9M,IAAAA,IAAI,EAAG,SAFmB;AAG1B2K,IAAAA,OAAO,EAAG,iCAHgB;AAI1B0D,IAAAA,OAAO,EAAEhL,OAAO,CAACQ,GAAR,CAAY,iBAAZ;AAJiB,GAAD,CAAhB,CAAb;AAMH;AAEM,eAAe0L,QAAf,CAAwBrB,SAAxB,EAAkC;AACrC,MAAIsB,cAAc,GAAG,cAAcnM,OAAO,CAACQ,GAAR,CAAY4L,QAAZ,IAAwBpM,OAAO,CAACQ,GAAR,CAAY6L,OAAlD,CAArB;AACA,MAAIC,OAAO,GAAG,MAAMC,QAAQ,CAAC,mBAAD,EAAsBJ,cAAtB,CAA5B;;AACA,MAAGG,OAAO,KAAK,MAAZ,IAAsBA,OAAO,KAAK,GAAlC,IAAyCA,OAAO,KAAK,EAArD,IAA2D,CAACA,OAA/D,EAAuE;AACnEA,IAAAA,OAAO,GAAG,IAAV;AACH;;AACD,SAAO;AAACxK,IAAAA,OAAO,EAAEwK;AAAV,GAAP;AACH;AAEM,eAAeE,QAAf,CAAwB3B,SAAxB,EAAkC;AACrC,MAAIyB,OAAO,GAAG,MAAMC,QAAQ,CAAC,uBAAD,CAA5B;;AACA,MAAGD,OAAO,KAAK,MAAZ,IAAsBA,OAAO,KAAK,GAAlC,IAAyCA,OAAO,KAAK,EAArD,IAA2D,CAACA,OAA/D,EAAuE;AACnEA,IAAAA,OAAO,GAAG,IAAV;AACH;;AACD,SAAO;AAACA,IAAAA;AAAD,GAAP;AACH;AAEM,eAAeG,WAAf,CAA2B5B,SAA3B,EAAqC;AACxC,SAAO,MAAMR,QAAQ,CAACU,MAAT,CAAgB,CAAC;AAC1BtB,IAAAA,IAAI,EAAE,OADoB;AAE1B9M,IAAAA,IAAI,EAAG,YAFmB;AAG1B2K,IAAAA,OAAO,EAAG,sBAHgB;AAI1B0D,IAAAA,OAAO,EAAE;AAJiB,GAAD,CAAhB,CAAb;AAMH;;AAGM,eAAe0B,cAAf,CAA8BC,SAA9B,EAAyCC,WAAW,GAAG,KAAvD,EAA6D;AAChEnC,EAAAA,qBAAqB;AACrB,MAAIoC,eAAe,GAAGF,SAAS,CAACxE,UAAV,CAAqB,cAArB,CAAtB;;AACA,MAAGyE,WAAH,EAAe;AACX,WAAOC,eAAP;AACH,GAFD,MAEK;AACD,QAAIrB,OAAO,GAAGmB,SAAS,CAAC/E,GAAV,CAAcxH,GAAd,CAAkB8H,CAAC,KAAK;AAClCvL,MAAAA,IAAI,EAAEuL,CAAC,CAACI,UAAF,CAAa,IAAb,CAD4B;AAElCwE,MAAAA,KAAK,EAAE5E;AAF2B,KAAL,CAAnB,CAAd;AAIA,QAAI4C,CAAC,GAAG,MAAMT,QAAQ,CAACU,MAAT,CAAgB,CAAC;AAC3BtB,MAAAA,IAAI,EAAE,cADqB;AAE3B9M,MAAAA,IAAI,EAAE,UAFqB;AAG3BqO,MAAAA,OAAO,EAAE6B,eAHkB;AAI3BE,MAAAA,MAAM,EAAE,OAAOC,KAAP,EAAcC,KAAd,KAAwB;AAC5B,eAAOzB,OAAO,CAACtC,MAAR,CAAehB,CAAC,IAAI+E,KAAK,GAAG/E,CAAC,CAAC4E,KAAF,CAAQnQ,IAAR,CAAauQ,WAAb,GAA2BrK,QAA3B,CAAoCoK,KAAK,CAACC,WAAN,EAApC,CAAH,GAA8D,IAAvF,CAAP;AACH;AAN0B,KAAD,CAAhB,CAAd;AAQA,WAAOpC,CAAC,CAACqC,QAAT;AACH;AACJ;AAEM,eAAeC,UAAf,CAA0B1P,IAA1B,EAAgC2P,KAAhC,EAAsC;AACzC,MAAIC,QAAQ,GAAG7R,YAAY,CAAC8R,OAA5B;AACA,MAAIC,CAAC,GAAG,MAAMjD,OAAO,CAAC+C,QAAD,CAArB;AACA,MAAIG,IAAI,GAAGD,CAAC,CAACtE,MAAF,CAASvM,IAAI,IAAIA,IAAI,CAACkG,QAAL,CAAcnF,IAAd,CAAjB,EAAsC0C,GAAtC,CAA0CzD,IAAI,IAAI,IAAI0Q,KAAJ,CAAU;AAAC3P,IAAAA,IAAI,EAAEf;AAAP,GAAV,CAAlD,CAAX;AACA,SAAO8Q,IAAP;AACH;AAEM,eAAeC,WAAf,CAA2BhQ,IAA3B,EAAiCiQ,QAAjC,EAA2CN,KAA3C,EAAkDO,aAAa,GAAG,IAAlE,EAAuE;AAC1EnD,EAAAA,qBAAqB;AACrB,MAAIgD,IAAI,GAAGL,UAAU,CAAC1P,IAAD,EAAO2P,KAAP,CAArB;AACA,MAAIQ,OAAO,GAAGJ,IAAI,CAACrN,GAAL,CAAS8H,CAAC,KAAK;AACzBvL,IAAAA,IAAI,EAAEuL,CAAC,CAACI,UAAF,CAAa,IAAb,CADmB;AAEzBwE,IAAAA,KAAK,EAAE5E;AAFkB,GAAL,CAAV,CAAd;AAIA,MAAI4F,IAAI,GAAG;AACPnR,IAAAA,IAAI,EAAGa,KAAM,8BADN;AAEPsP,IAAAA,KAAK,EAAE;AAFA,GAAX;AAKA,MAAGc,aAAH,EAAkBC,OAAO,CAAC1Q,OAAR,CAAgB2Q,IAAhB;AAElB,MAAIhD,CAAC,GAAG,MAAMT,QAAQ,CAACU,MAAT,CAAgB,CAAC;AAC3BtB,IAAAA,IAAI,EAAE,cADqB;AAE3B9M,IAAAA,IAAI,EAAE,KAFqB;AAG3B2K,IAAAA,OAAO,EAAG,QAAOqG,QAAS,eAHC;AAI3BZ,IAAAA,MAAM,EAAE,OAAOC,KAAP,EAAcC,KAAd,KAAwB;AAC5B,aAAOY,OAAO,CAAC3E,MAAR,CAAehB,CAAC,IAAI+E,KAAK,GAAG/E,CAAC,CAACvL,IAAF,CAAOuQ,WAAP,GAAqBrK,QAArB,CAA8BoK,KAAK,CAACC,WAAN,EAA9B,CAAH,GAAwD,IAAjF,CAAP;AACH;AAN0B,GAAD,CAAhB,CAAd;AAQA,SAAOpC,CAAC,CAACtO,GAAT;AACH;AAEM,eAAeuR,YAAf,CAA4B;AAACC,EAAAA,OAAO,GAAG,QAAX;AAAqBJ,EAAAA;AAArB,CAA5B,EAAgE;AACnE,SAAOF,WAAW,CAAC,cAAD,EAAiBM,OAAjB,EAA0BC,MAA1B,EAAkCL,aAAlC,CAAlB;AACH;AACM,eAAeM,UAAf,CAA0B;AAACF,EAAAA,OAAO,GAAG,MAAX;AAAmBJ,EAAAA;AAAnB,CAA1B,EAA4D;AAC/D,SAAOF,WAAW,CAAC,YAAD,EAAeM,OAAf,EAAwBG,IAAxB,EAA8BP,aAA9B,CAAlB;AACH;AAEM,eAAerB,QAAf,CAAwB6B,QAAxB,EAAkCC,GAAlC,EAAsC;AACzC,SAAO,CAAC,MAAMhE,QAAQ,CAACU,MAAT,CAAgB,CAAC;AAC3BtB,IAAAA,IAAI,EAAE,OADqB;AAE3B9M,IAAAA,IAAI,EAAE,IAFqB;AAG3B2K,IAAAA,OAAO,EAAE8G,QAHkB;AAI3BpD,IAAAA,OAAO,EAAEqD;AAJkB,GAAD,CAAhB,CAAP,EAKFC,EALL;AAMH;AAEM,eAAevC,WAAf,CAA2BqC,QAA3B,EAAoC;AACvC,SAAO,CAAC,MAAM/D,QAAQ,CAACU,MAAT,CAAgB,CAAC;AAC3BtB,IAAAA,IAAI,EAAE,SADqB;AAE3B9M,IAAAA,IAAI,EAAE,IAFqB;AAG3B2K,IAAAA,OAAO,EAAE8G;AAHkB,GAAD,CAAhB,CAAP,EAIFE,EAJL;AAKH;;;;;;;;;;;;;;;;;;;;;;AC3LD,MAAMC,QAAN,SAAuBhG,SAAvB,CAAgC;AAC5BlB,EAAAA,WAAW,CAAC;AAAC3D,IAAAA,IAAD;AAAOmF,IAAAA;AAAP,GAAD,EAAgB;AACvB;AACA,SAAKnF,IAAL,GAAYA,IAAZ;AACA,SAAK8K,IAAL,GAAY,EAAZ;AACA,SAAK3F,MAAL,GAAcA,MAAd;AACH,GAN2B;;;AAQ5B,QAAM4F,eAAN,GAAuB;AACnB,QAAG,KAAKC,YAAR,EAAsB,OAAO,KAAKA,YAAZ;AAEtB,SAAKA,YAAL,GAAoB,MAAMpO,GAAG,CAACC,cAAJ,CAAmB;AACzCC,MAAAA,GAAG,EAAE,KAAKqI,MAD+B;AAEzCpI,MAAAA,SAAS,EAAE,KAAKiD,IAAL,CAAUF,KAAV,CAAgBkL;AAFc,KAAnB,CAA1B;AAIA,SAAKA,YAAL,CAAkBC,OAAlB,GAA4B,MAAM,KAAKC,gBAAL,EAAlC;AACA,WAAO,KAAKF,YAAZ;AACH;;AACD,eAAavF,gBAAb,CAA8BwD,SAA9B,EAAwC;AACpC,WAAOA,SAAS,CAACrD,IAAV,CAAe,CAACuF,CAAD,EAAIC,CAAJ,KAAU;AAC5B,aAAOD,CAAC,CAACE,UAAF,CAAaC,QAAb,CAAsBC,aAAtB,CAAoCH,CAAC,CAACC,UAAF,CAAaC,QAAjD,KACAH,CAAC,CAACE,UAAF,CAAapS,IAAb,CAAsBsS,aAAtB,CAAoCH,CAAC,CAACC,UAAF,CAAapS,IAAjD,CADP;AAEH,KAHM,CAAP;AAIH;;AAED,QAAMiS,gBAAN,GAAwB;AACpB,QAAItS,MAAM,GAAG,MAAM,KAAKmS,eAAL,EAAnB;AACA,QAAIrO,GAAG,GAAG;AACN8O,MAAAA,MAAM,EAAE,IADF;AAENrS,MAAAA,IAAI,EAAE,KAFA;;AAGNsS,MAAAA,MAAM,CAACvR,GAAD,EAAK;AACP,YAAG,KAAKjB,IAAL,KAAc,QAAjB,EAA2B,OAAO,KAAP;AAC3B,YAAG,KAAKiB,GAAL,CAAH,EAAc,OAAO,KAAKA,GAAL,CAAP;AACd,eAAOA,GAAP;AACH;;AAPK,KAAV;AASA,WAAOwC,GAAG,CAAC+O,MAAJ,CAAW7S,MAAM,CAAC8S,IAAlB,CAAP;AACH;;AAED9G,EAAAA,UAAU,CAAC+G,GAAG,GAAC,IAAL,EAAU;AAChB,QAAIrH,EAAE,GAAGsH,MAAM,CAAC,KAAKtH,EAAN,CAAf;AACA,QAAGqH,GAAH,EAAQrH,EAAE,GAAGA,EAAE,CAACuH,QAAH,CAAY,CAAZ,CAAL;AACR,WAAO/R,KAAM,UAASwK,EAAG,YAAW,KAAKgH,QAAS,cAAa,KAAKrS,IAAK,GAAzE;AACH;;AA3C2B;;AA8ChCkB,WAAW,CAAC0Q,QAAD,EAAW,IAAX,EAAiB,SAAjB,CAAX;AACA1Q,WAAW,CAAC0Q,QAAD,EAAW,MAAX,EAAmB,sBAAnB,CAAX;AACA1Q,WAAW,CAAC0Q,QAAD,EAAW,UAAX,EAAuB,0BAAvB,CAAX;AACA1Q,WAAW,CAAC0Q,QAAD,EAAW,QAAX,EAAqB,aAArB,CAAX;AACA1Q,WAAW,CAAC0Q,QAAD,EAAW,cAAX,EAA2B,mBAA3B,CAAX;AACAA,QAAQ,CAACxF,QAAT,GAAoB,eAApB;;ACnDA,MAAMyG,IAAN,SAAmBjH,SAAnB,CAA4B;AACxBlB,EAAAA,WAAW,CAAC;AAAC3D,IAAAA,IAAD;AAAOmF,IAAAA,MAAP;AAAeG,IAAAA,QAAf;AAAyByG,IAAAA;AAAzB,GAAD,EAAkC;AACzC;AACA,SAAK/L,IAAL,GAAYA,IAAZ;AACA,SAAK8K,IAAL,GAAY,EAAZ;AACA,SAAK3F,MAAL,GAAcA,MAAd;AACA,SAAKpB,WAAL,GAAmBgI,MAAnB;AACH;;AAEDnH,EAAAA,UAAU,CAAC+G,GAAG,GAAC,KAAL,EAAW;AACjB,QAAIrH,EAAE,GAAGsH,MAAM,CAAC,QAAQ,KAAKzG,MAAL,IAAe,KAAKA,MAAL,GAAc,GAAd,GAAoB,KAAKb,EAAxC,IAA8C,OAAtD,CAAD,CAAf;AACA,QAAGqH,GAAH,EAAQrH,EAAE,GAAGA,EAAE,CAACuH,QAAH,CAAY,EAAZ,CAAL;AACR,WAAO/R,KAAM,UAASwK,EAAG,YAAW,KAAKtE,IAAL,CAAUqL,UAAV,GAAuB,KAAKpS,IAA5B,GAAmC,cAAe,GAAtF;AACH;;AAED+S,EAAAA,eAAe,GAAE;AACb,WAAO,KAAKhI,MAAL,IAAe,EAAtB;AACH;;AAED,QAAMiI,UAAN,CAAiBC,KAAK,GAAG,KAAzB,EAA+B;AAC3B,QAAG,CAAC,KAAKF,eAAL,EAAD,IAA2B,CAACE,KAA/B,EAAqC;AACjC,YAAM,IAAIpI,iBAAJ,CAAsB,IAAtB,CAAN;AACH;;AAED,WAAOlH,GAAG,CAACC,cAAJ,CAAmB;AACtBC,MAAAA,GAAG,EAAE,KAAKqI,MADY;AACJnI,MAAAA,QAAQ,EAAE,KAAKmP;AADX,KAAnB,CAAP;AAGH;;AACD,QAAMC,MAAN,CAAaC,MAAM,GAAG,IAAtB,EAA2B;AACvB,WAAOzP,GAAG,CAACC,cAAJ,CAAmB;AACtBC,MAAAA,GAAG,EAAE,KAAKqI,MADY;AACJnI,MAAAA,QAAQ,EAAE,KAAKsP,QADX;AAEtBnP,MAAAA,MAAM,EAAE;AAFc,KAAnB,CAAP;AAIH;;AACD,MAAIiE,IAAJ,GAAU;AACN,WAAO3G,MAAM,CAAC+H,MAAP,CAAc,KAAKxC,IAAL,CAAUqL,UAAV,CAAqBkB,SAAnC,EAA8C,CAA9C,EAAiDnL,IAAxD;AACH;;AAED,MAAI4C,MAAJ,GAAY;AACR,WAAOnC,IAAI,CAAC2K,KAAL,CAAW,KAAKpL,IAAL,GAAY,IAAZ,GAAmB,IAAnB,GAA0B,IAA1B,GAAiC,EAA5C,IAAkD,EAAzD;AACH;;AAxCuB;;AA2C5BjH,WAAW,CAAC2R,IAAD,EAAO,IAAP,EAAa,SAAb,CAAX;AACA3R,WAAW,CAAC2R,IAAD,EAAO,MAAP,EAAe,uBAAf,CAAX;AACA3R,WAAW,CAAC2R,IAAD,EAAO,aAAP,EAAsB,oBAAtB,CAAX;AACA3R,WAAW,CAAC2R,IAAD,EAAO,UAAP,EAAmB,iBAAnB,CAAX;AACA3R,WAAW,CAAC2R,IAAD,EAAO,OAAP,EAAgB,uBAAhB,CAAX;AACA3R,WAAW,CAAC2R,IAAD,EAAO,KAAP,EAAc,qBAAd,CAAX;AACA3R,WAAW,CAAC2R,IAAD,EAAO,QAAP,EAAiB,wBAAjB,CAAX;AACA3R,WAAW,CAAC2R,IAAD,EAAO,MAAP,EAAe,yBAAf,CAAX;AACA3R,WAAW,CAAC2R,IAAD,EAAO,WAAP,EAAoB,2BAApB,CAAX;AACAA,IAAI,CAACzG,QAAL,GAAgB,IAAhB;;AClDA,MAAMoH,KAAN,SAAoB5H,SAApB,CAA6B;AACzBlB,EAAAA,WAAW,CAAC;AAAC3D,IAAAA,IAAD;AAAOmF,IAAAA,MAAP;AAAeG,IAAAA,QAAf;AAAyBoH,IAAAA;AAAzB,GAAD,EAAgC;AACvC;AACA,SAAK1M,IAAL,GAAYA,IAAZ;AACA,SAAK8K,IAAL,GAAY,EAAZ;AACA,SAAK3F,MAAL,GAAcA,MAAd;;AACA,QAAGG,QAAH,EAAY;AACR,WAAKwF,IAAL,CAAU6B,QAAV,GAAqBF,KAAK,CAACG,iBAAN,CAAwBtH,QAAxB,CAArB;AACH;;AACD,SAAKoH,IAAL,GAAY,CAAC,CAACA,IAAd;AACH;;AACD,SAAOE,iBAAP,CAAyB3P,OAAzB,EAAiC;AAC7B,QAAI4P,WAAW,GAAG,EAAlB;;AACA,SAAI,IAAIC,EAAR,IAAc7P,OAAd,EAAsB;AAClB,UAAG6P,EAAE,CAAC/G,IAAH,KAAY,UAAf,EAA2B;AAC3B8G,MAAAA,WAAW,CAACC,EAAE,CAACzB,UAAH,CAAczR,KAAf,CAAX,GAAmCkT,EAAE,CAACzB,UAAH,CAAcsB,QAAjD;AACH;;AACD,WAAOE,WAAP;AACH;;AAED,QAAME,WAAN,CAAkBC,YAAY,GAAG,KAAjC,EAAuC;AACnC,QAAG,KAAKlC,IAAL,CAAU6B,QAAV,IAAsB,CAACK,YAA1B,EAAwC,OAAO,KAAKlC,IAAL,CAAU6B,QAAjB;AACxC,QAAIM,GAAG,GAAG,MAAMrQ,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,MAAAA,GAAG,EAAE,KAAKqI,MADqB;AACbnL,MAAAA,IAAI,EAAG,WAAU,KAAKsK,EAAG;AADZ,KAAnB,CAAhB;AAIA,WAAO,KAAKwG,IAAL,CAAU6B,QAAV,GAAqBF,KAAK,CAACG,iBAAN,CAAwBK,GAAG,CAACjN,IAA5B,CAA5B;AACH;;AAED,QAAMkN,aAAN,CAAoBP,QAApB,EAA6B;AACzB,QAAGA,QAAQ,CAACQ,QAAT,IAAqB,KAAxB,EAA8B;AAC1B,UAAIF,GAAG,GAAG,MAAMrQ,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,QAAAA,GAAG,EAAE,KAAKqI,MADqB;AACbnL,QAAAA,IAAI,EAAG,WAAU,KAAKsK,EAAG,oBADZ;AAE/BnH,QAAAA,MAAM,EAAE,OAFuB;AAG/BF,QAAAA,OAAO,EAAE;AACL,kBAAQ;AACJ,oBAAQ,UADJ;AAEJ,0BAAc;AACV,0BAAY0P,QAAQ,CAACQ;AADX;AAFV;AADH;AAHsB,OAAnB,CAAhB;AAYH;;AACD,QAAGR,QAAQ,CAACS,QAAZ,EAAqB;AACjB,UAAIH,GAAG,GAAG,MAAMrQ,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,QAAAA,GAAG,EAAE,KAAKqI,MADqB;AACbnL,QAAAA,IAAI,EAAG,WAAU,KAAKsK,EAAG,oBADZ;AAE/BnH,QAAAA,MAAM,EAAE,OAFuB;AAG/BF,QAAAA,OAAO,EAAE;AACL,kBAAQ;AACJ,oBAAQ,UADJ;AAEJ,0BAAc;AACV,0BAAY0P,QAAQ,CAACS;AADX;AAFV;AADH;AAHsB,OAAnB,CAAhB;AAYH;AACJ;;AAED,SAAOV,IAAP,CAAYpI,EAAZ,EAAgBa,MAAhB,EAAuB;AACnB,WAAO,IAAI,IAAJ,CAAS;AAACnF,MAAAA,IAAI,EAAE;AAACsE,QAAAA;AAAD,OAAP;AAAaa,MAAAA,MAAb;AAAqBuH,MAAAA,IAAI,EAAE;AAA3B,KAAT,CAAP;AACH;;AAED9H,EAAAA,UAAU,CAAC+G,GAAG,GAAC,KAAL,EAAW;AACjB,QAAIrH,EAAE,GAAGsH,MAAM,CAAC,QAAQ,KAAKzG,MAAL,IAAe,KAAKA,MAAL,GAAc,GAAd,GAAoB,KAAKb,EAAxC,IAA8C,OAAtD,CAAD,CAAf;AACA,QAAGqH,GAAH,EAAQrH,EAAE,GAAGA,EAAE,CAACuH,QAAH,CAAY,EAAZ,CAAL;AACR,WAAO/R,KAAM,UAASwK,EAAG,YAAW,KAAKtE,IAAL,CAAUqL,UAAV,GAAuB,KAAKpS,IAA5B,GAAmC,cAAe,GAAtF;AACH;;AAED,eAAaoU,SAAb,CAAuBpU,IAAvB,EAA6B6D,GAA7B,EAAiC;AAC7B,QAAImQ,GAAG,GAAG,MAAMrQ,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,MAAAA,GAD+B;AAC1B9C,MAAAA,IAAI,EAAE,SADoB;AAE/BmD,MAAAA,MAAM,EAAE,MAFuB;AAG/BF,MAAAA,OAAO,EAAE;AACL+C,QAAAA,IAAI,EAAE;AACFqL,UAAAA,UAAU,EAAE;AAACpS,YAAAA;AAAD,WADV;AAEF8M,UAAAA,IAAI,EAAE;AAFJ;AADD;AAHsB,KAAnB,CAAhB;AAUA,WAAO,IAAI,IAAJ,CAAS;AAAC/F,MAAAA,IAAI,EAAEiN,GAAG,CAACjN,IAAX;AAAiBmF,MAAAA,MAAM,EAAErI;AAAzB,KAAT,CAAP;AACH;;AAED,QAAMsP,MAAN,GAAc;AACV,QAAIa,GAAG,GAAG,MAAMrQ,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,MAAAA,GAAG,EAAE,KAAKqI,MADqB;AACbnL,MAAAA,IAAI,EAAE,aAAa,KAAKsK,EADX;AAE/BnH,MAAAA,MAAM,EAAE;AAFuB,KAAnB,CAAhB;AAIH;;AAED,QAAMmQ,QAAN,GAAgB;AACZ,QAAIL,GAAG,GAAG,MAAMrQ,GAAG,CAACmG,aAAJ,CAAkB;AAC9BjG,MAAAA,GAAG,EAAE,KAAKqI,MADoB;AACZnL,MAAAA,IAAI,EAAG,WAAU,KAAKsK,EAAG,QADb;AAE9BnH,MAAAA,MAAM,EAAE;AAFsB,KAAlB,CAAhB,CADY;;AAOZ,WAAO,IAAI8G,UAAJ,CAAegJ,GAAG,CAACvQ,GAAJ,CAAQ8H,CAAC,IAAI,IAAIsH,IAAJ,CAAS;AAAC9L,MAAAA,IAAI,EAAEwE,CAAP;AAAUW,MAAAA,MAAM,EAAE,KAAKA,MAAvB;AAA+B4G,MAAAA,MAAM,EAAE;AAAvC,KAAT,CAAb,CAAf,CAAP;AACH;;AAED,QAAMwB,OAAN,CAAcC,KAAd,EAAqBC,QAArB,EAA8B;AAC1B,QAAG,CAACC,KAAK,CAACvH,OAAN,CAAcsH,QAAd,CAAJ,EAA6BA,QAAQ,GAAG,CAACA,QAAD,CAAX;AAE7B,QAAIlB,SAAS,GAAG,EAAhB;;AACA,SAAI,IAAI7L,CAAC,GAAG,CAAZ,EAAeA,CAAC,GAAG+M,QAAQ,CAAC9M,MAA5B,EAAoCD,CAAC,EAArC,EAAwC;AACpC6L,MAAAA,SAAS,CAACX,MAAM,CAAClL,CAAC,GAAG,CAAL,CAAP,CAAT,GAA2B;AAACnC,QAAAA,GAAG,EAAEkP,QAAQ,CAAC/M,CAAD;AAAd,OAA3B;AACH;;AAED,QAAIuM,GAAG,GAAG,MAAMrQ,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,MAAAA,GAAG,EAAE,KAAKqI,MADqB;AACbnL,MAAAA,IAAI,EAAE,QADO;AAE/BmD,MAAAA,MAAM,EAAE,MAFuB;AAG/BF,MAAAA,OAAO,EAAE;AACL,gBAAQ;AACJ,wBAAc;AACVuQ,YAAAA,KADU;AACHjB,YAAAA;AADG,WADV;AAIJ,2BAAiB;AACb,qBAAS;AACL,sBAAQ;AACJjI,gBAAAA,EAAE,EAAE,KAAKA,EADL;AAEJ,wBAAQ;AAFJ;AADH;AADI,WAJb;AAYJ,kBAAQ;AAZJ;AADH;AAHsB,KAAnB,CAAhB;AAqBA,WAAO2I,GAAP;AACH;;AACD,QAAMU,aAAN,CAAoBC,OAApB,EAA6B;AAACC,IAAAA,QAAD;AAAWC,IAAAA;AAAX,MAAuB,EAApD,EAAuD;AACnD,QAAIzC,UAAU,GAAG,EAAjB;;AACA,QAAGwC,QAAH,EAAY;AACR;AACAA,MAAAA,QAAQ,GAAG,OAAOA,QAAP,KAAoB,QAApB,GAA+BA,QAA/B,GAA0CxV,IAAI,CAAC4F,SAAL,CAAe4P,QAAf,CAArD;AACAxC,MAAAA,UAAU,CAACwC,QAAX,GAAsBA,QAAtB;AACH;;AACD,QAAGC,QAAH,EAAY;AACRzC,MAAAA,UAAU,CAACyC,QAAX,GAAsBA,QAAtB;AACH;;AAED,QAAIb,GAAG,GAAG,MAAMrQ,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,MAAAA,GAAG,EAAE,KAAKqI,MADqB;AACbnL,MAAAA,IAAI,EAAE,YADO;AAE/BmD,MAAAA,MAAM,EAAE,MAFuB;AAG/BF,MAAAA,OAAO,EAAE;AACL,gBAAQ;AACJ,kBAAQ,WADJ;AAEJoO,UAAAA,UAFI;AAGJ,2BAAiB;AACb,qBAAS;AACL,sBAAQ;AACJ/G,gBAAAA,EAAE,EAAE,KAAKA,EADL;AAEJ,wBAAQ;AAFJ;AADH,aADI;AAMV,oBAAQ;AACP,sBAAQ;AACJ,8BAAc;AACV,0BAAQsJ;AADE,iBADV;AAIJ,wBAAQ;AAJJ;AADD;AANE;AAHb;AADH;AAHsB,KAAnB,CAAhB;AAyBA,WAAOX,GAAP;AACH;;AACD,eAAac,iBAAb,CAA+BjR,GAA/B,EAAoC8Q,OAApC,EAA6C;AAACC,IAAAA,QAAD;AAAWC,IAAAA;AAAX,MAAuB,EAApE,EAAuE;AACnE,QAAIzC,UAAU,GAAG,EAAjB;;AACA,QAAGwC,QAAH,EAAY;AACR;AACAA,MAAAA,QAAQ,GAAG,OAAOA,QAAP,KAAoB,QAApB,GAA+BA,QAA/B,GAA0CxV,IAAI,CAAC4F,SAAL,CAAe4P,QAAf,CAArD;AACAxC,MAAAA,UAAU,CAACwC,QAAX,GAAsBA,QAAtB;AACH;;AACD,QAAGC,QAAH,EAAY;AACRzC,MAAAA,UAAU,CAACyC,QAAX,GAAsBA,QAAtB;AACH;;AAED,QAAIb,GAAG,GAAG,MAAMrQ,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,MAAAA,GAD+B;AAC1B9C,MAAAA,IAAI,EAAE,YADoB;AAE/BmD,MAAAA,MAAM,EAAE,MAFuB;AAG/BF,MAAAA,OAAO,EAAE;AACL,gBAAQ;AACJ,kBAAQ,WADJ;AAEJoO,UAAAA,UAFI;AAGJ,2BAAiB;AACb,oBAAQ;AACJ,sBAAQ;AACJ,8BAAc;AACV,0BAAQuC;AADE,iBADV;AAIJ,wBAAQ;AAJJ;AADJ;AADK;AAHb;AADH;AAHsB,KAAnB,CAAhB;AAoBA,WAAOX,GAAP;AAEH;;AAED,QAAMe,2BAAN,CAAkCC,MAAlC,EAA0CC,iBAA1C,EAA4D;AACxD,QAAIhN,GAAJ;AACA,UAAMpE,GAAG,GAAG,KAAKqI,MAAjB;AACA,QAAIsE,QAAQ,GAAG,MAAMoB,QAAQ,CAACtF,SAAT,CAAmB,KAAKJ,MAAxB,EAAgC,cAAhC,CAArB;AAEAxJ,IAAAA,KAAK,CAAC7B,KAAM,kCAAiC,KAAK8K,UAAL,CAAgB,KAAhB,CAAuB,KAA/D,CAAL,CALwD;;AAQxD,QAAIuJ,QAAQ,GAAG,MAAMvR,GAAG,CAACC,cAAJ,CAAmB;AACpCC,MAAAA,GAAG,EAAE,KAAKqI,MAD0B;AAClBnL,MAAAA,IAAI,EAAE,OADY;AACHmD,MAAAA,MAAM,EAAE,MADL;AAEpCF,MAAAA,OAAO,EAAE;AACL+C,QAAAA,IAAI,EAAE;AACFqL,UAAAA,UAAU,EAAE;AACRC,YAAAA,QAAQ,EAAE7B,QAAQ,CAAC6B,QADX;AAER8C,YAAAA,gBAAgB,EAAE3E,QAAQ,CAACxQ,IAFnB;AAGRoV,YAAAA,kBAAkB,EAAE,EAHZ;AAIRC,YAAAA,YAAY,EAAEC,MAAM,CAACC,IAAP,CAAYP,MAAM,CAACzV,IAAnB,EAAyB,QAAzB,EAAmCiW,QAAnC,CAA4C,QAA5C,CAJN;AAKRP,YAAAA;AALQ,WADV;AAQFnI,UAAAA,IAAI,EAAE,MARJ;AASFM,UAAAA,aAAa,EAAE;AACXqI,YAAAA,KAAK,EAAE;AACH1O,cAAAA,IAAI,EAAE;AACFsE,gBAAAA,EAAE,EAAE,KAAKA,EADP;AAEFyB,gBAAAA,IAAI,EAAE;AAFJ;AADH;AADI;AATb;AADD;AAF2B,KAAnB,CAArB;AAwBApK,IAAAA,KAAK,CAAC,wBAAD,CAAL;;AACA,aAAO;AACHuF,MAAAA,GAAG,GAAG,MAAMtE,GAAG,CAACC,cAAJ,CAAmB;AAC3BC,QAAAA,GAD2B;AACtBC,QAAAA,SAAS,EAAEoR,QAAQ,CAACnO,IAAT,CAAcF,KAAd,CAAoB6O;AADT,OAAnB,CAAZ;AAGAhT,MAAAA,KAAK,CAAC,GAAD,CAAL;;AACA,UAAGuF,GAAG,CAAClB,IAAJ,CAASqL,UAAT,CAAoBuD,KAApB,IAA6B,UAAhC,EAA2C;AACvCjT,QAAAA,KAAK,CAAC7B,KAAM,oBAAP,CAAL;AACA;AACH;;AACD,YAAM2M,KAAK,CAAC,GAAD,CAAX;AACH;;AAED;AACH;;AAED,QAAMoI,aAAN,CAAoBC,QAApB,EAA8BZ,iBAA9B,EAAgD;AAC5C;AACA,QAAIlO,IAAI,GAAG,MAAMpD,GAAG,CAACC,cAAJ,CAAmB;AAChCC,MAAAA,GAAG,EAAE,KAAKqI,MADsB;AACdnL,MAAAA,IAAI,EAAE,OADQ;AACCmD,MAAAA,MAAM,EAAE,MADT;AAEhCF,MAAAA,OAAO,EAAE;AACL+C,QAAAA,IAAI,EAAE;AACF+F,UAAAA,IAAI,EAAE,MADJ;AAEFsF,UAAAA,UAAU,EAAE;AACR6C,YAAAA;AADQ,WAFV;AAKF7H,UAAAA,aAAa,EAAE;AACXqI,YAAAA,KAAK,EAAE;AACH1O,cAAAA,IAAI,EAAE;AACFsE,gBAAAA,EAAE,EAAE,KAAKA,EADP;AAEFyB,gBAAAA,IAAI,EAAE;AAFJ;AADH,aADI;AAMRkI,YAAAA,MAAM,EAAE;AACPjO,cAAAA,IAAI,EAAE;AACFsE,gBAAAA,EAAE,EAAEwK,QADF;AAEF/I,gBAAAA,IAAI,EAAE;AAFJ;AADC;AANA;AALb;AADD;AAFuB,KAAnB,CAAjB;AAwBA,WAAO/F,IAAP;AACH;;AACD,QAAM+O,MAAN,CAAaC,OAAb,EAAqB;AACjB,QAAI/B,GAAG,GAAG,MAAMrQ,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,MAAAA,GAAG,EAAE,KAAKqI,MADqB;AACbnL,MAAAA,IAAI,EAAG,WAAU,KAAKsK,EAAG,EADZ;AAE/BnH,MAAAA,MAAM,EAAE,OAFuB;AAG/BF,MAAAA,OAAO,EAAE;AACL+C,QAAAA,IAAI,EAAE;AACFqL,UAAAA,UAAU,EAAE;AACRpS,YAAAA,IAAI,EAAE+V;AADE,WADV;AAIFjJ,UAAAA,IAAI,EAAE;AAJJ;AADD;AAHsB,KAAnB,CAAhB;AAaA,SAAK9M,IAAL,GAAY+V,OAAZ;AAEA,WAAO/B,GAAP;AACH;;AA1SwB;;AA6S7B9S,WAAW,CAACsS,KAAD,EAAQ,IAAR,EAAc,SAAd,CAAX;AACAtS,WAAW,CAACsS,KAAD,EAAQ,MAAR,EAAgB,sBAAhB,CAAX;AACAtS,WAAW,CAACsS,KAAD,EAAQ,QAAR,EAAkB,aAAlB,CAAX;AACAtS,WAAW,CAACsS,KAAD,EAAQ,IAAR,EAAc,eAAd,CAAX;AACAtS,WAAW,CAACsS,KAAD,EAAQ,MAAR,EAAgB,WAAhB,CAAX;AACAA,KAAK,CAACpH,QAAN,GAAiB,QAAjB;;AChTA,IAAI4J,IAAJ;;AACA,IAAGnX,UAAH,EAAW;AACPmX,EAAAA,IAAI,GAAGnX,UAAO,EAAd;AACH;;AACD,MAAMoX,KAAK,GAAG,IAAd;AACA,MAAMC,QAAQ,GAAG,+CAAjB;AACO,SAASC,aAAT,CAAuBpV,IAAvB,EAA4B;AAC/B,MAAGA,IAAI,CAACmF,QAAL,CAAc,GAAd,CAAH,EAAsB;AAClB;AACAnF,IAAAA,IAAI,GAAGA,IAAI,CAACqG,KAAL,CAAW,CAAX,EAAc,CAAd,IAAmBrG,IAAI,CAACqG,KAAL,CAAW,CAAX,EAAcxG,OAAd,CAAsBqV,KAAtB,EAA6B,IAA7B,CAA1B;AACH;;AACD,MAAGnX,YAAY,CAACsX,YAAhB,EAA6B;AACzBrV,IAAAA,IAAI,GAAGA,IAAI,CAACH,OAAL,CAAasV,QAAb,EAAuB,UAAvB,CAAP;AACH;;AACD,MAAGnV,IAAI,CAACmF,QAAL,CAAc,iBAAd,CAAH,EAAoC;AAChCnF,IAAAA,IAAI,GAAGA,IAAI,CAACH,OAAL,CAAa,iBAAb,EAAgC,GAAhC,CAAP;AACH;;AACD,SAAOG,IAAP;AACH;AAEM,SAAS5B,YAAT,CAAsB4B,IAAtB,EAA4BgB,OAA5B,EAAoC;AACvC,SAAOsU,WAAE,CAAClX,YAAH,CAAgBgX,aAAa,CAACpV,IAAD,CAA7B,EAAqCgB,OAArC,CAAP;AACH;;AAEM,SAASuU,aAAT,CAAuBvV,MAAvB,EAA6BgG,IAA7B,EAAmChF,OAAnC,EAA4CwU,UAAU,GAAG,KAAzD,EAA+D;AAClExV,EAAAA,MAAI,GAAGoV,aAAa,CAACpV,MAAD,CAApB;;AACA,MAAG;AACC,WAAOsV,WAAE,CAACC,aAAH,CAAiBvV,MAAjB,EAAuBgG,IAAvB,EAA6BhF,OAA7B,CAAP;AACH,GAFD,CAEC,OAAMzC,CAAN,EAAQ;AACL,QAAGiX,UAAH,EAAe,MAAMjX,CAAN;AACf,QAAIkX,SAAS,GAAGC,YAAO,CAAC1V,MAAD,CAAvB;;AACA,QAAG;AACCsV,MAAAA,WAAE,CAACK,QAAH,CAAYF,SAAZ;AACA,YAAMlX,CAAN;AACH,KAHD,CAGC,OAAMqX,KAAN,EAAY;AACTN,MAAAA,WAAE,CAACO,SAAH,CAAaJ,SAAb;AACA,aAAOF,aAAa,CAACvV,MAAD,EAAOgG,IAAP,EAAahF,OAAb,EAAsB,IAAtB,CAApB;AACH;AACJ;AACJ;;ACjCD,IAAI8U,MAAM,GAAG,EAAb;;AAEA,MAAMvF,MAAN,SAAqB1F,SAArB,CAA8B;AAC1BlB,EAAAA,WAAW,CAAC;AAAC3J,UAAAA,MAAD;AAAOmL,IAAAA,MAAP;AAAenF,IAAAA,IAAf;AAAqB+P,IAAAA;AAArB,MAAmC,EAApC,EAAuC;AAC9C;AACA,QAAG/V,MAAH,EAAQ;AACJA,MAAAA,MAAI,GAAGgW,YAAW,CAAChW,MAAD,CAAlB;;AACA,UAAG0V,YAAO,CAAC1V,MAAD,CAAP,CAAcmF,QAAd,CAAuB,eAAvB,CAAH,EAA2C;AACvC,cAAM,IAAIK,UAAJ,CAAe,wCAAf,CAAN;AACH;AACJ;;AAED,YAT8C;;AAa9C,QAAGxF,MAAH,EAAQ;AACJ,UAAG8V,MAAM,CAACV,aAAa,CAACpV,MAAD,CAAd,CAAT,EAAgC,OAAO8V,MAAM,CAACV,aAAa,CAACpV,MAAD,CAAd,CAAb;AAChC8V,MAAAA,MAAM,CAACV,aAAa,CAACpV,MAAD,CAAd,CAAN,GAA8B,IAA9B;AACH;;AAED,SAAK8Q,IAAL,GAAY,EAAZ;AACA,SAAKmF,UAAL,GAAkBF,UAAlB;AACA,SAAK5K,MAAL,GAAcA,MAAd;;AACA,QAAGvI,GAAG,CAAC4G,UAAJ,CAAe,KAAK2B,MAApB,CAAH,EAA+B;AAC3B,UAAGnL,MAAH,EAAQ;AACJ,aAAKA,IAAL,GAAYA,MAAZ;AACA,YAAIkW,OAAO,GAAG,KAAKlW,IAAL,CAAUM,KAAV,CAAgB,GAAhB,CAAd;AACA,aAAK6V,GAAL,GAAWD,OAAO,CAACA,OAAO,CAACvP,MAAR,GAAe,CAAhB,CAAlB;;AACA,YAAG;AACC,eAAKnI,IAAL,GAAY,KAAK4X,YAAL,EAAZ;AACH,SAFD,CAEC,OAAM7X,CAAN,EAAQ;AACL,cAAGA,CAAC,CAACC,IAAF,KAAW,QAAX,IAAuBT,YAAY,CAACsY,aAAvC,EAAqD;AACjD,iBAAKC,OAAL,GAAe,IAAf;AACA,mBAAOxN,SAAP;AACH,WAHD,MAGK;AACD1G,YAAAA,GAAG,CAACtC,KAAM,oBAAmBvB,CAAC,CAACqL,OAAQ,EAApC,CAAH;AACA,kBAAM,IAAIpE,UAAJ,CAAe,mCAAf,CAAN;AACH;AACJ;;AACD,YAAIvG,IAAI,GAAG,KAAKsX,oBAAL,MAA+B,KAAKC,gBAAL,EAA1C;;AACA,YAAG;AACC,eAAKxQ,IAAL,GAAY,KAAKyQ,gBAAL,EAAZ;AACA,eAAKC,SAAL,GAAiB,IAAjB;AACAzX,UAAAA,IAAI,GAAG,KAAKA,IAAZ;AACH,SAJD,CAIC,OAAMV,CAAN,EAAQ;AACL6D,UAAAA,GAAG,CAACtC,KAAM,qBAAoBE,MAAK,wDAAuD,KAAK2W,iBAAkB,EAA9G,CAAH;AACA,eAAK3Q,IAAL,GAAYuK,MAAM,CAACqG,QAAP,CAAgB3X,IAAhB,CAAZ;AACA,eAAKyX,SAAL,GAAiB,KAAjB;AACH;;AACD,aAAKzX,IAAL,GAAYA,IAAZ;AACH,OA1BD,MA0BK;AACD,aAAK+G,IAAL,GAAYuK,MAAM,CAACqG,QAAP,EAAZ;AACH;AACJ,KA9BD,MA8BK;AACD,WAAK5Q,IAAL,GAAYA,IAAZ,CADC;AAGD;;AACA,WAAK0Q,SAAL,GAAiB,KAAjB;AACH;;AACD,SAAK1Q,IAAL,CAAUqL,UAAV,CAAqBgD,kBAArB,GAA0CvL,SAA1C;AACA,SAAK9C,IAAL,CAAUqL,UAAV,CAAqBwF,aAArB,GAAqC/N,SAArC;AACH,GA5DyB;;;AA8D1B,eAAagO,YAAb,CAA0B9W,IAA1B,EAAgCiW,UAAhC,EAA2C;AACvC,QAAIjQ,IAAJ;;AACA,QAAG;AACCA,MAAAA,IAAI,GAAG3H,IAAI,CAACC,KAAL,CAAWF,YAAY,CAAC4B,IAAD,CAAvB,CAAP;AACH,KAFD,CAEC,OAAMzB,CAAN,EAAQ;AACL,UAAGA,CAAC,CAACC,IAAF,KAAW,QAAX,IAAuBT,YAAY,CAACsY,aAAvC,EAAqD;AACjD,eAAO,IAAP;AACH,OAFD,MAEK;AACD,cAAM9X,CAAN;AACH;AACJ;;AACD,QAAIwY,YAAY,GAAG/Q,IAAI,CAACqG,aAAL,CAAmB0K,YAAnB,CAAgC/Q,IAAhC,CAAqC/G,IAAxD;AACA,QAAIwQ,QAAQ,GAAG,MAAMoB,QAAQ,CAACtF,SAAT,CAAmB,KAAnB,EAA0BwL,YAA1B,CAArB;;AAEA,QAAG,CAACtH,QAAJ,EAAa;AACTrN,MAAAA,GAAG,CAACtC,KAAM,iCAAgCiX,YAAa,mBAApD,CAAH;AACA3U,MAAAA,GAAG,CAACtC,KAAM,wBAAuBE,IAAK,KAAnC,CAAH;AACA,aAAO,IAAP;AACH;;AAED,QAAImW,GAAG,GAAG,MAAM1G,QAAQ,CAACyB,gBAAT,EAAhB;AACA,QAAIjS,IAAI,GAAG+G,IAAI,CAACqL,UAAL,CAAgBpS,IAA3B;AAEA,QAAI+X,QAAQ,GAAGzG,MAAM,CAAC0G,YAAP,CAAoBhY,IAApB,EAA0BkX,GAA1B,EAA+BF,UAA/B,CAAf;AACA,WAAO,IAAI1F,MAAJ,CAAW;AAACvQ,MAAAA,IAAI,EAAEgX,QAAP;AAAiBjB,MAAAA,UAAU,EAAEE;AAA7B,KAAX,CAAP;AACH;;AAED,SAAOW,QAAP,CAAgB3X,IAAI,GAAG6J,SAAvB,EAAiC;AAC7B,WAAO;AACH,oBAAc;AACV,4BAAoB;AAChB,wBAAc7J;AADE;AADV,OADX;AAMH,uBAAiB,EANd;AAOH,cAAQ;AAPL,KAAP;AASH;;AACDqN,EAAAA,OAAO,GAAE;AACL,UAAMA,OAAN;AACA,WAAO,KAAK+E,UAAL,CAAgB,WAAhB,CAAP;AACA,WAAO,KAAKA,UAAL,CAAgB,WAAhB,CAAP;AACH;;AACD,QAAM6F,WAAN,CAAkBpU,GAAlB,EAAsB;AAClB,QAAG,CAAC,KAAK4T,SAAT,EAAoB,MAAM,IAAIlR,UAAJ,CAAe,2CAAf,CAAN;AACpB,QAAIyJ,SAAS,GAAG,MAAM4B,QAAQ,CAACnF,MAAT,CAAgB5I,GAAhB,CAAtB;AACA,QAAIqU,KAAK,GAAG,KAAK9K,aAAL,CAAmB,cAAnB,CAAZ;AACI8K,IAAAA,KAAK,GAAGA,KAAK,CAACnR,IAAd;AAEJ,QAAIyJ,QAAQ,GAAGR,SAAS,CAACxE,UAAV,CAAqB0M,KAAK,CAAClY,IAA3B,CAAf;AACAkY,IAAAA,KAAK,CAAC7M,EAAN,GAAWmF,QAAQ,CAACnF,EAApB;AACH;;AACD,MAAI8M,IAAJ,GAAU;AACN,QAAG,CAAC,KAAK5Y,IAAT,EAAe,OAAO,EAAP;AAEf,UAAM6Y,KAAK,GAAG,8CAAd;AACA,QAAIC,KAAJ;AACA,QAAIC,OAAO,GAAG,EAAd;;AACA,WAAMD,KAAK,GAAGD,KAAK,CAACjR,IAAN,CAAW,KAAK5H,IAAhB,CAAd,EAAoC;AAChC+Y,MAAAA,OAAO,CAAC3Q,IAAR,CAAa0Q,KAAK,CAAC,CAAD,CAAlB;AACH;;AACD,WAAOC,OAAP;AACH;;AACD,QAAMC,OAAN,CAAc1U,GAAd,EAAkB;AACd,QAAIqI,MAAM,GAAG,MAAMoF,MAAM,CAAChF,SAAP,CAAiBzI,GAAjB,EAAsB,KAAK7D,IAA3B,CAAnB;;AACA,SAAI,IAAImY,IAAR,IAAgB,KAAKA,IAArB,EAA0B;AACtBhV,MAAAA,GAAG,CAAC,UAAD,CAAH;AACA,UAAIqV,KAAJ;;AAEA,UAAGL,IAAI,CAACpT,UAAL,CAAgB,IAAhB,CAAH,EAAyB;AACrB,YAAIsT,KAAK,GAAG,eAAelR,IAAf,CAAoBgR,IAApB,CAAZ;;AACA,YAAG,CAACE,KAAJ,EAAU;AACNlV,UAAAA,GAAG,CAACtC,KAAM,kCAAiCsX,IAAK,GAA7C,CAAH;AACA,gBAAM,IAAI5R,UAAJ,CAAe,4CAAf,CAAN;AACH;;AACDiS,QAAAA,KAAK,GAAG,MAAMhF,KAAK,CAACvH,OAAN,CAAcpI,GAAd,EAAmBwU,KAAK,CAAC,CAAD,CAAxB,CAAd;AACH,OAPD,MAOK;AACDG,QAAAA,KAAK,GAAG,MAAMhF,KAAK,CAAClH,SAAN,CAAgBzI,GAAhB,EAAqBsU,IAArB,CAAd;AACH;;AAED,UAAG,CAACK,KAAJ,EAAU;AACNrV,QAAAA,GAAG,CAACtC,KAAM,yCAAP,CAAH;AACA;AACH;;AAEDsC,MAAAA,GAAG,CAACtC,KAAM,uBAAsB,KAAKb,IAAK,QAAOwY,KAAK,CAAC7M,UAAN,CAAiB,KAAjB,CAAwB,MAAtE,CAAH;AACA,YAAM6M,KAAK,CAAC5C,aAAN,CAAoB1J,MAAM,CAACb,EAA3B,CAAN;AACH;AACJ;;AACD,QAAMpJ,OAAN,GAAe;AACX,QAAG,KAAKwV,SAAR,EAAmB;AAEnB,QAAIgB,OAAO,GAAG,MAAM,KAAKxL,YAAL,CAAkB2E,QAAlB,EAA4B,cAA5B,CAApB;AAEA,SAAKsF,GAAL,GAAW,MAAMuB,OAAO,CAACxG,gBAAR,EAAjB;AAEA,SAAKwF,SAAL,GAAiB,IAAjB;AAEA,WAAO;AAACgB,MAAAA;AAAD,KAAP;AACH;;AACD,QAAMC,SAAN,GAAiB;AACb,UAAM,KAAKC,iBAAL,EAAN;AACA,UAAM,KAAKC,aAAL,EAAN;AACH;;AACD,QAAMD,iBAAN,GAAyB;AACrB,QAAG,CAAC,KAAKlB,SAAT,EAAmB;AACf,YAAM,KAAKxV,OAAL,EAAN;AACA,WAAKoL,OAAL;AACH;;AACDiJ,IAAAA,aAAa,CAAC,KAAKoB,iBAAN,EAAyBtY,IAAI,CAAC4F,SAAL,CAAe,KAAK+B,IAApB,EAA0B,IAA1B,EAAgC,CAAhC,CAAzB,CAAb;AACH;;AACD,QAAM6R,aAAN,GAAqB;AACjBtC,IAAAA,aAAa,CAAC,KAAKuC,SAAN,EAAiB,KAAKtZ,IAAtB,CAAb;AACH;;AACD,QAAMuZ,YAAN,CAAmBjV,GAAnB,EAAuB;AACnB,UAAM,KAAKkV,eAAL,CAAqBlV,GAArB,EAA0B,IAA1B,CAAN;AACH;;AACD,QAAMmV,IAAN,CAAWnV,GAAX,EAAe;AACX,SAAKoV,KAAL,GAAa,IAAb;;AACA,QAAG,CAAC,KAAKxB,SAAT,EAAmB;AACf,YAAM,KAAKxV,OAAL,EAAN;AACH;;AAED,SAAKoL,OAAL;;AACA,QAAG1J,GAAG,CAAC4G,UAAJ,CAAe1G,GAAf,CAAH,EAAuB;AACnBV,MAAAA,GAAG,CAACtC,KAAM,wBAAuB,KAAKb,IAAK,cAAa2D,GAAG,CAAC6G,OAAJ,CAAY3G,GAAZ,CAAiB,IAAtE,CAAH;AACA,YAAM,KAAK6U,SAAL,EAAN;AACH,KAHD,MAGK;AACD,YAAM,KAAKI,YAAL,CAAkBjV,GAAlB,CAAN;AACH;AACJ;;AAED,QAAMqV,YAAN,GAAoB;AAChB,QAAG,CAAC,KAAKhN,MAAN,IAAgB,KAAK3M,IAAxB,EAA8B,OAAO,KAAKA,IAAZ;AAC9B,QAAIA,IAAI,GAAG,MAAMoE,GAAG,CAACC,cAAJ,CAAmB;AAChCC,MAAAA,GAAG,EAAE,KAAKqI,MADsB;AAEhCpI,MAAAA,SAAS,EAAE,KAAKiD,IAAL,CAAUF,KAAV,CAAgBwO,YAFK;AAGhCnW,MAAAA,IAAI,EAAE;AAH0B,KAAnB,CAAjB,CAFgB;AAShB;AACA;AACA;AACA;;AACA,QAAIia,WAAW,GAAG,6BAAlB;AACA,QAAIC,SAAS,GAAGD,WAAW,CAAChS,IAAZ,CAAiB5H,IAAjB,CAAhB;;AAEA,QAAG6Z,SAAH,EAAa;AACT,WAAKC,MAAL,GAAc9Z,IAAI,CAAC+Z,SAAL,CAAe,CAAf,EAAkBF,SAAS,CAAC,CAAD,CAAT,CAAa1R,MAAb,GAAsB,CAAxC,CAAd;AACAnI,MAAAA,IAAI,GAAGA,IAAI,CAAC+Z,SAAL,CAAeF,SAAS,CAAC,CAAD,CAAT,CAAa1R,MAA5B,CAAP;AACH;;AAED,WAAO,KAAKnI,IAAL,GAAYA,IAAnB;AACH;;AAED,MAAIA,IAAJ,GAAU;AACN,QAAG,KAAKga,KAAR,EAAe,OAAO,KAAKA,KAAZ;AAClB;;AACD,MAAIha,IAAJ,CAASia,CAAT,EAAW;AAAC,SAAKD,KAAL,GAAaC,CAAb;AAAgB;;AAE5B7N,EAAAA,UAAU,CAAC+G,GAAG,GAAC,IAAL,EAAU;AAChB,QAAIrH,EAAE,GAAGsH,MAAM,CAAC,QAAQ,KAAKzG,MAAL,IAAe,KAAKA,MAAL,GAAc,GAAd,GAAoB,KAAKb,EAAxC,IAA8C,OAAtD,CAAD,CAAf;AACA,QAAIoO,GAAG,GAAG,EAAV;;AACA,QAAG,KAAKzC,UAAR,EAAmB;AACfyC,MAAAA,GAAG,GAAG5Y,KAAM,WAAU,KAAKmW,UAAW,GAAtC;AACH;;AACD,QAAGtE,GAAH,EAAQrH,EAAE,GAAGA,EAAE,CAACuH,QAAH,CAAY,EAAZ,CAAL;;AACR,QAAG,KAAK5S,IAAL,IAAa6J,SAAhB,EAA0B;AACtB,aAAOhJ,KAAM,UAASwK,EAAG,MAAKoO,GAAI,QAAO,KAAK1Y,IAAK,GAAnD;AACH,KAFD,MAEM,IAAG,KAAK8Q,IAAL,CAAU4G,OAAb,EAAqB;AACvB,aAAO5X,KAAM,UAASwK,EAAG,MAAKoO,GAAI,QAAO,KAAK5H,IAAL,CAAU4G,OAAV,CAAkBzY,IAAK,WAAU,KAAKA,IAAK,GAApF;AACH,KAFK,MAED;AACD,aAAOa,KAAM,UAASwK,EAAG,MAAKoO,GAAI,SAAQ,KAAKzZ,IAAK,GAApD;AACH;AACJ;;AACDsX,EAAAA,oBAAoB,GAAE;AAClB,QAAG,KAAKvW,IAAL,CAAU2Y,QAAV,CAAmB,QAAnB,KAAgC,KAAK3Y,IAAL,CAAU2Y,QAAV,CAAmB,OAAnB,CAAnC,EAA+D;AAC3D,aAAOC,aAAQ,CAAC,KAAK5Y,IAAN,CAAR,CACFH,OADE,CACM,GADN,EACW,GADX,EAEFA,OAFE,CAEM,GAFN,EAEW,GAFX,EAGFA,OAHE,CAGM,OAHN,EAGe,EAHf,EAIFA,OAJE,CAIM,QAJN,EAIgB,EAJhB,CAAP;AAKH;AACJ;;AAED2W,EAAAA,gBAAgB,GAAE;AACd,UAAMqC,UAAU,GAAG,mCAAnB;AACA,UAAMvB,KAAK,GAAGuB,UAAU,CAACzS,IAAX,CAAgB,KAAK5H,IAArB,CAAd;AACA,QAAG8Y,KAAH,EAAU,OAAOA,KAAK,CAAC,CAAD,CAAZ;AACb;;AAEDwB,EAAAA,iBAAiB,CAACC,OAAD,EAAS;AACtB,QAAG,CAAC,KAAKva,IAAT,EAAe,OAAO,EAAP;AAEf,WAAOua,OAAO,CAACvN,MAAR,CAAerF,GAAG,IAAI;AACzB,UAAIkR,KAAK,GAAG,IAAI2B,MAAJ,CAAW7S,GAAX,CAAZ;AACA,aAAO,CAAC,CAAC,KAAK3H,IAAL,CAAU8Y,KAAV,CAAgBD,KAAhB,CAAT;AACH,KAHM,CAAP;AAIH;;AACD,SAAOJ,YAAP,CAAoBhY,IAApB,EAA0BkX,GAA1B,EAA+BF,UAA/B,EAA0C;AACtC,WAAOjW,aAAI,CAACiZ,IAAL,CAAUlb,YAAY,CAAC8R,OAAvB,EAAgCoG,UAAU,IAAI,EAA9C,EAAkD,cAAlD,EAAkEhX,IAAI,GAAG,GAAP,GAAakX,GAA/E,CAAP;AACH;;AACD,MAAI2B,SAAJ,GAAe;AAAC,WAAOvH,MAAM,CAAC0G,YAAP,CAAoB,KAAKhY,IAAzB,EAA+B,KAAKkX,GAApC,EAAyC,KAAKF,UAA9C,CAAP;AAAiE;;AAEjF,MAAIjW,IAAJ,GAAU;AACN,QAAG,KAAKkZ,KAAR,EAAe,OAAO,KAAKA,KAAZ;AAClB;;AACD,MAAIlZ,IAAJ,CAASc,GAAT,EAAa;AACT,SAAKoY,KAAL,GAAapY,GAAb;AACH;;AACD,MAAI7B,IAAJ,GAAU;AACN,WAAO,KAAKka,UAAZ;AACH;;AACD,MAAIla,IAAJ,CAAS6B,GAAT,EAAa;AACT,QAAG,CAAC,KAAKsY,UAAT,EAAqB,KAAKA,UAAL,GAAkBtY,GAAlB;AACrB,SAAKqY,UAAL,GAAkBrY,GAAlB;AACH;;AACD,MAAIiW,YAAJ,CAAiB3H,KAAjB,EAAuB;AACnB,SAAK/C,aAAL,CAAmB,cAAnB,IAAqC;AACjCrG,MAAAA,IAAI,EAAE,EACF,GAAGoJ,KADD;AAEFrD,QAAAA,IAAI,EAAE;AAFJ;AAD2B,KAArC;AAMH;;AACD,MAAI4K,iBAAJ,GAAuB;AACnB,QAAG,KAAK3W,IAAR,EAAa;AACT,aAAO,KAAKA,IAAL,CAAUH,OAAV,CAAkB,cAAlB,EAAkC,eAAlC,EAAmDA,OAAnD,CAA2D,IAAImZ,MAAJ,CAAW,KAAK7C,GAAL,GAAW,GAAtB,CAA3D,EAAuF,MAAvF,CAAP;AACH;;AACD,WAAOnW,aAAI,CAACiZ,IAAL,CAAUlb,YAAY,CAAC8R,OAAvB,EAAgC,KAAKoG,UAAL,IAAmB,EAAnD,EAAwD,eAAxD,EAAyE,KAAKhX,IAAL,GAAY,OAArF,CAAP;AACH;;AACD,MAAIoa,SAAJ,GAAe;AACX,WAAO,KAAKpa,IAAL,CAAUkG,QAAV,CAAmB,UAAnB,KAAkC,CAACpH,YAAY,CAACub,eAAvD;AACH;;AACD,QAAMC,gBAAN,CAAuBzW,GAAvB,EAA4BwH,EAA5B,EAA+B;AAAA;;AAC3B,QAAG,KAAK9L,IAAL,CAAU+G,IAAV,OAAqB,UAAxB,EAAmC;AAC/B5D,MAAAA,KAAK,CAAC7B,KAAM,4BAAP,CAAL;AACA;AACH;;AAED,QAAItB,IAAI,GAAG,KAAKA,IAAhB;AACA,QAAI6E,OAAO,GAAG,EAAd;AAEA,QAAImW,YAAY,0BAAG,KAAKnN,aAAR,iFAAG,oBAAoB0K,YAAvB,oFAAG,sBAAkC/Q,IAArC,2DAAG,uBAAwC/G,IAA3D;;AACA,QAAG,CAAClB,YAAY,CAAC0b,UAAd,KAA6BD,YAAY,KAAK,cAAjB,IAAmCA,YAAY,KAAK,aAAjF,CAAH,EAAmG;AAC/F7X,MAAAA,KAAK,CAAC7B,KAAM,mBAAP,CAAL;AACA,UAAI+P,OAAO,GAAG9R,YAAY,CAAC8R,OAA3B;AACA,UAAIiI,SAAS,GAAG,KAAK9X,IAAL,CAAUH,OAAV,CAAkBgQ,OAAlB,EAA2B,EAA3B,CAAhB;AACA,UAAGiI,SAAS,CAAC9T,UAAV,CAAqB,GAArB,CAAH,EAA8B8T,SAAS,GAAGA,SAAS,CAACS,SAAV,CAAoB,CAApB,CAAZ;;AAE9B,UAAG;AACC,YAAI;AAAChX,UAAAA,MAAM,EAAEmY;AAAT,YAAuB,MAAM3Y,KAAK,CAClC;AAACc,UAAAA,MAAM,EAAE;AAAT,SADkC,EAElC,IAFkC,EAGlC,CACI7B,aAAI,CAACiZ,IAAL,CAAUlb,YAAY,CAAC8R,OAAvB,EAAiC,eAAjC,CADJ,EAEI8J,MAAM,CAACC,IAAI,CAACtY,GAAL,EAAD,CAAN,CAAmBuY,MAAnB,CAA0B,0BAA1B,CAFJ,EAGI/B,SAHJ,CAHkC,CAAtC;AASAtZ,QAAAA,IAAI,GAAGkb,UAAU,GAAGlb,IAApB;AACAmD,QAAAA,KAAK,CAAC7B,KAAM,aAAP,CAAL;AACH,OAZD,CAYC,OAAMvB,CAAN,EAAQ;AACLoD,QAAAA,KAAK,CAAC7B,KAAM,gBAAP,CAAL;AACH;AACJ,KA/B0B;;;AAkC3B,QAAG0Z,YAAY,IAAI,SAAnB,EAA6B;AACzBhb,MAAAA,IAAI,GAAGA,IAAI,CAACiW,QAAL,CAAc,QAAd,CAAP;AACApR,MAAAA,OAAO,CAAC,2BAAD,CAAP,GAAuC,QAAvC;AACH;;AAED,QAAI6D,GAAG,GAAG,MAAMtE,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,MAAAA,GAD+B;AAC1B9C,MAAAA,IAAI,EAAG,YAAWsK,EAAG,eADK;AAE/BpH,MAAAA,IAAI,EAAE1E,IAFyB;AAEnB2E,MAAAA,MAAM,EAAE,KAFW;AAEJG,MAAAA,YAAY,EAAE,IAFV;AAEgBC,MAAAA,OAAO,EAAE,KAFzB;AAG/BF,MAAAA;AAH+B,KAAnB,CAAhB;AAKA1B,IAAAA,KAAK,CAAC7B,KAAM,mBAAkBoH,GAAG,CAAC9B,UAAW,KAAxC,CAAL;AACH;;AACD,QAAM0U,YAAN,CAAmBhX,GAAnB,EAAuB;AACnB,QAAIqI,MAAM,GAAG,MAAMoF,MAAM,CAAChF,SAAP,CAAiBzI,GAAjB,EAAsB,KAAK7D,IAA3B,CAAnB;AACA,SAAKyX,SAAL,GAAiB,KAAjB;;AACA,QAAG,CAACvL,MAAJ,EAAW;AACP,YAAM,IAAI3F,UAAJ,CAAgB,2BAA0B1C,GAAI,cAAa,KAAK7D,IAAK,EAArE,CAAN;AACH;;AACD,SAAK+G,IAAL,GAAYmF,MAAM,CAACnF,IAAnB;AACA,SAAKmF,MAAL,GAAcrI,GAAd;AACH;;AAED,QAAMiX,mBAAN,CAA0BjX,GAA1B,EAA+BwH,EAAE,GAAC,IAAlC,EAAuC;AACnC,QAAG1H,GAAG,CAAC4G,UAAJ,CAAe1G,GAAf,CAAH,EAAwB,OAAO,KAAP;;AACxB,QAAG,CAACwH,EAAJ,EAAO;AACH,UAAIa,MAAM,GAAG,MAAMoF,MAAM,CAAChF,SAAP,CAAiBzI,GAAjB,EAAsB,KAAK7D,IAA3B,CAAnB;AACAqL,MAAAA,EAAE,GAAGa,MAAM,CAACb,EAAZ;AACH;;AAED,WAAO,MAAM1H,GAAG,CAACC,cAAJ,CAAmB;AAC5BC,MAAAA,GAD4B;AACvB9C,MAAAA,IAAI,EAAG,YAAWsK,EAAG,EADE;AAE5BnH,MAAAA,MAAM,EAAE;AAFoB,KAAnB,CAAb;AAIH;;AAED,QAAMiP,MAAN,GAAc;AACV,QAAGxP,GAAG,CAAC4G,UAAJ,CAAe,KAAK2B,MAApB,CAAH,EAAgC,OAAO,KAAP;AAEhC,WAAO,MAAM,KAAK4O,mBAAL,CAAyB,KAAK5O,MAA9B,EAAsC,KAAKb,EAA3C,CAAb;AACH;;AAED,QAAM0N,eAAN,CAAsBlV,GAAtB,EAA2BkX,eAA3B,EAA4CC,UAAU,GAAG,IAAzD,EAA8D;AAC1D,QAAG,CAAC,KAAKhb,IAAT,EAAc;AACV,UAAIqY,KAAJ;;AACA,UAAGA,KAAK,GAAG,2BAA2BlR,IAA3B,CAAgC,KAAK5H,IAAL,CAAU+G,IAAV,EAAhC,CAAX,EAA6D;AACzD,YAAI4L,CAAC,GAAG,MAAMsB,KAAK,CAACvH,OAAN,CAAcpI,GAAd,EAAmB6E,MAAM,CAAC2P,KAAK,CAAC,CAAD,CAAN,CAAzB,CAAd;AACA,eAAOnG,CAAC,CAAC6C,2BAAF,CAA8B,IAA9B,CAAP;AACH,OAHD,MAGK;AACD5R,QAAAA,GAAG,CAACtC,KAAM,yBAAwB,KAAKE,IAAK,mBAAzC,CAAH;AACA;AACH;AACJ;;AAED2B,IAAAA,KAAK,CAAC7B,KAAM,2BAA0B,KAAKb,IAAK,eAAc6D,GAAI,KAA7D,CAAL;;AAEA,QAAG,KAAKuW,SAAR,EAAkB;AACdjX,MAAAA,GAAG,CAACtC,KAAM,qCAAP,CAAH;AACA;AACH,KAjByD;;;AAoB1D,QAAIqL,MAAM,GAAG,MAAMoF,MAAM,CAAChF,SAAP,CAAiBzI,GAAjB,EAAsB,KAAK7D,IAA3B,CAAnB;;AAEA,QAAGkM,MAAH,EAAU;AACN;AACAxJ,MAAAA,KAAK,CAAC,WAAD,CAAL;;AACA,UAAGqY,eAAH,EAAmB;AACf,YAAI/W,OAAO,GAAG;AAAC+C,UAAAA,IAAI,EAAE;AAACqL,YAAAA,UAAU,EAAE,KAAKrL,IAAL,CAAUqL,UAAvB;AAAmCtF,YAAAA,IAAI,EAAE;AAAzC;AAAP,SAAd;;AACA,YAAG,KAAKM,aAAL,CAAmB6N,QAAtB,EAA+B;AAC3BjX,UAAAA,OAAO,CAACoJ,aAAR,GAAwB;AAAC6N,YAAAA,QAAQ,EAAE,KAAK7N,aAAL,CAAmB6N;AAA9B,WAAxB;AACH;;AACD,YAAIhT,GAAG,GAAG,MAAMtE,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,UAAAA,GAD+B;AAC1B9C,UAAAA,IAAI,EAAG,YAAWmL,MAAM,CAACb,EAAG,EADF;AACKnH,UAAAA,MAAM,EAAE,OADb;AAE/BF,UAAAA,OAF+B;AAG/BK,UAAAA,YAAY,EAAE;AAHiB,SAAnB,CAAhB;AAKA3B,QAAAA,KAAK,CAAC7B,KAAM,oBAAmBoH,GAAG,CAAC9B,UAAW,KAAzC,CAAL;;AACA,YAAG8B,GAAG,CAAC9B,UAAJ,IAAkB,GAArB,EAAyB;AACrBhD,UAAAA,GAAG,CAACtC,KAAM,4DAAP,CAAH;AACA;AACH;AACJ;;AAED,YAAM,KAAKyZ,gBAAL,CAAsBzW,GAAtB,EAA2BqI,MAAM,CAACb,EAAlC,CAAN;AACH,KArBD,MAqBK;AACD3I,MAAAA,KAAK,CAAC,UAAD,CAAL;AACA,UAAIgR,QAAQ,GAAG;AAAC3M,QAAAA,IAAI,EAAE,KAAKA;AAAZ,OAAf;;AACA,UAAG,CAAC,KAAKqG,aAAL,CAAmB,cAAnB,CAAJ,EAAuC;AACnC,cAAM,IAAI7G,UAAJ,CAAe,wEAAf,CAAN;AACH;;AAED,YAAM,KAAK0R,WAAL,CAAiBpU,GAAjB,CAAN;AACAnB,MAAAA,KAAK,CAAC,8BAAD,CAAL;AACA,UAAIuF,GAAG,GAAG,MAAMtE,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,QAAAA,GAD+B;AAC1B9C,QAAAA,IAAI,EAAG,UADmB;AACRmD,QAAAA,MAAM,EAAE,MADA;AAE/BF,QAAAA,OAAO,EAAE0P,QAFsB;AAEZpP,QAAAA,OAAO,EAAE;AAFG,OAAnB,CAAhB;AAIA,UAAI+G,EAAE,GAAGpD,GAAG,CAAClB,IAAJ,CAASsE,EAAlB;AACA3I,MAAAA,KAAK,CAAC7B,KAAM,qBAAoBwK,EAAG,yBAA9B,CAAL;AACA,YAAM,KAAKiP,gBAAL,CAAsBzW,GAAtB,EAA2BwH,EAA3B,CAAN;AACH;;AACD,QAAG,KAAK8M,IAAL,CAAU,CAAV,KAAgB6C,UAAnB,EAA8B;AAC1B,YAAM,KAAKzC,OAAL,CAAa1U,GAAb,CAAN;AACH,KAFD,MAEK;AACDV,MAAAA,GAAG,CAAC,iBAAD,CAAH;AACH;AACJ;;AAEDqU,EAAAA,gBAAgB,GAAE;AACd,WAAOpY,IAAI,CAACC,KAAL,CAAWF,YAAY,CAAC,KAAKuY,iBAAN,EAAyB,OAAzB,CAAvB,CAAP;AACH;;AACDP,EAAAA,YAAY,GAAE;AACV;AACA,WAAOhY,YAAY,CAAC,KAAK4B,IAAN,EAAY,OAAZ,CAAnB;AACH;;AAEDma,EAAAA,eAAe,GAAE;AAAA;;AACb,QAAG,CAAC,KAAK7B,MAAT,EAAiB,OAAO,IAAP;AACjB,QAAI8B,GAAG,GAAG;AACNC,MAAAA,KAAK,aAAI,gBAAgBjU,IAAhB,CAAqB,KAAKkS,MAA1B,EAAkC,CAAlC,CAAJ,4CAAI,QAAsC/S,IAAtC,EADH;AAEN+U,MAAAA,MAAM,cAAG,cAAclU,IAAd,CAAmB,KAAKkS,MAAxB,EAAgC,CAAhC,CAAH,6CAAG,SAAoC/S,IAApC,EAFH;AAGNgV,MAAAA,KAAK,cAAI,aAAanU,IAAb,CAAkB,KAAKkS,MAAvB,EAA+B,CAA/B,CAAJ,6CAAI,SAAmC/S,IAAnC,EAHH;AAINiV,MAAAA,OAAO,cAAE,eAAepU,IAAf,CAAoB,KAAKkS,MAAzB,EAAiC,CAAjC,CAAF,6CAAE,SAAqC/S,IAArC,EAJH;AAKNkV,MAAAA,MAAM,cAAG,cAAcrU,IAAd,CAAmB,KAAKkS,MAAxB,EAAgC,CAAhC,CAAH,6CAAG,SAAoC/S,IAApC,EALH;AAMNmV,MAAAA,MAAM,cAAG,cAActU,IAAd,CAAmB,KAAKkS,MAAxB,EAAgC,CAAhC,CAAH,6CAAG,SAAoC/S,IAApC,EANH;AAONoV,MAAAA,KAAK,cAAI,kBAAkBvU,IAAlB,CAAuB,KAAKkS,MAA5B,EAAoC,CAApC,CAAJ,6CAAI,SAAwC/S,IAAxC;AAPH,KAAV;AAUA,QAAIqV,UAAU,GAAG,CACb,CAAC,IAAD,EAAQ,0BAAR,CADa,EAEb,CAAC,KAAD,EAAQ,oBAAR,CAFa,CAAjB;;AAKA,SAAI,IAAI,CAACC,KAAD,EAAQhB,MAAR,CAAR,IAA2Be,UAA3B,EAAsC;AAClC,UAAIE,IAAJ;;AACA,UAAGD,KAAH,EAAS;AACLC,QAAAA,IAAI,GAAGnB,MAAM,CAACoB,GAAP,CAAWX,GAAG,CAACC,KAAf,EAAsBR,MAAtB,CAAP;AACH,OAFD,MAEK;AACDiB,QAAAA,IAAI,GAAGnB,MAAM,CAACS,GAAG,CAACC,KAAL,EAAYR,MAAZ,CAAb;AACH;;AAED,UAAG,CAACiB,IAAI,CAACE,OAAL,EAAJ,EAAoB;AAEpBZ,MAAAA,GAAG,CAACa,MAAJ,GAAaH,IAAI,CAACI,OAAL,EAAb;AAEA;AACH;;AAED,WAAOd,GAAP;AACH;;AAED,QAAMe,eAAN,CAAsBrY,GAAtB,EAA0B;AACtB,QAAIqI,MAAM,GAAG,MAAMoF,MAAM,CAAChF,SAAP,CAAiBzI,GAAjB,EAAsB,KAAK7D,IAA3B,CAAnB;AACA,UAAMkM,MAAM,CAACgN,YAAP,EAAN;AACA,QAAIzR,CAAC,GAAGyE,MAAM,CAACgP,eAAP,EAAR;;AAEA,QAAGzT,CAAH,EAAK;AACDtE,MAAAA,GAAG,CAACtC,KAAM;4BACMgD,GAAI,uBAAsB4D,CAAC,CAACuU,MAAO;iCAC9BvU,CAAC,CAAC2T,KAAM,eAAc3T,CAAC,CAAC4T,MAAO;uBACzC5T,CAAC,CAAC6T,KAAF,IAAW,WAAY,OAAM7T,CAAC,CAAC+T,MAAO,aAAY/T,CAAC,CAACgU,MAAO;aAHlE,CAIF7a,OAJE,CAIM,YAJN,EAIoB,EAJpB,EAIwB0F,IAJxB,EAAD,CAAH;AAKH,KAND,MAMK;AACDnD,MAAAA,GAAG,CAACtC,KAAM,qBAAoBgD,GAAI,GAA/B,CAAH;AACH;AACJ;;AAED,QAAMsY,OAAN,CAAcvN,IAAd,EAAmB;AACf,UAAM,KAAKwN,YAAL,EAAN;;AACA,SAAI,IAAIvY,GAAR,IAAe+K,IAAI,CAACvN,KAAL,CAAW,GAAX,CAAf,EAA+B;AAC3B,YAAM,KAAK6a,eAAL,CAAqBrY,GAArB,CAAN;AACH;AACJ;;AAED,QAAMuY,YAAN,CAAmBC,MAAM,GAAC,CAA1B,EAA6BC,MAAM,GAAC,IAApC,EAA0CC,IAAI,GAAC,EAA/C,EAAkD;AAC9C,QAAIC,YAAY,GAAG,oBAAnB;AACA,QAAItW,QAAQ,GAAG,KAAK3G,IAAL,CACV8B,KADU,CACJ,IADI,EAEVoC,GAFU,CAEN8H,CAAC,IAAIiR,YAAY,CAACrV,IAAb,CAAkBoE,CAAlB,CAFC,EAGVgB,MAHU,CAGHhB,CAAC,IAAIA,CAHF,EAIV9H,GAJU,CAIN8H,CAAC,IAAIA,CAAC,CAAC,CAAD,CAJA,CAAf;;AAMA,QAAG,CAAC+Q,MAAJ,EAAW;AACPA,MAAAA,MAAM,GAAG,IAAItR,UAAJ,EAAe,MAAMyF,UAAU,CAAC,cAAD,EAAiBa,MAAjB,CAA/B,EAAT;AACH;;AAEDnO,IAAAA,GAAG,CAACsR,KAAK,CAAC4H,MAAM,GAAG,CAAV,CAAL,CAAkBrC,IAAlB,CAAuB,GAAvB,IAA8B,IAA9B,GAAqC,KAAKha,IAA3C,CAAH;;AAEA,SAAI,IAAIyc,OAAR,IAAmBvW,QAAnB,EAA4B;AACxB,UAAGqW,IAAI,CAACE,OAAD,CAAP,EAAiB;AACbtZ,QAAAA,GAAG,CAACsR,KAAK,CAAC4H,MAAM,GAAG,CAAV,CAAL,CAAkBrC,IAAlB,CAAuB,GAAvB,IAA8B,aAA9B,GAA8CyC,OAA/C,CAAH;AACH,OAFD,MAEK;AACDF,QAAAA,IAAI,CAACE,OAAD,CAAJ,GAAgB,IAAhB;AACA,cAAMH,MAAM,CAAC9Q,UAAP,CAAkBiR,OAAlB,EAA2BL,YAA3B,CAAwCC,MAAM,GAAG,CAAjD,EAAoDC,MAApD,EAA4DC,IAA5D,CAAN;AACH;AACJ;AACJ;;AA/gByB;;AAkhB9Brb,WAAW,CAACoQ,MAAD,EAAS,YAAT,EAAuB,6CAAvB,CAAX;AACApQ,WAAW,CAACoQ,MAAD,EAAS,YAAT,EAAuB,sBAAvB,CAAX;AACApQ,WAAW,CAACoQ,MAAD,EAAS,IAAT,EAAe,SAAf,CAAX;AACApQ,WAAW,CAACoQ,MAAD,EAAS,YAAT,EAAuB,iBAAvB,CAAX;AACApQ,WAAW,CAACoQ,MAAD,EAAS,eAAT,EAA0B,oBAA1B,CAAX;AACApQ,WAAW,CAACoQ,MAAD,EAAS,QAAT,EAAmB,aAAnB,CAAX;AACApQ,WAAW,CAACoQ,MAAD,EAAS,OAAT,EAAkB,WAAlB,CAAX;AACApQ,WAAW,CAACoQ,MAAD,EAAS,OAAT,EAAkB,WAAlB,CAAX;AACApQ,WAAW,CAACoQ,MAAD,EAAS,WAAT,EAAsB,gBAAtB,CAAX;AACApQ,WAAW,CAACoQ,MAAD,EAAS,KAAT,EAAgB,UAAhB,CAAX;AACApQ,WAAW,CAACoQ,MAAD,EAAS,YAAT,EAAuB,cAAvB,CAAX;AACApQ,WAAW,CAACoQ,MAAD,EAAS,YAAT,EAAuB,iBAAvB,CAAX;AACAA,MAAM,CAAClF,QAAP,GAAkB,SAAlB;;AC1iBA,MAAMsQ,YAAN,SAA2B9Q,SAA3B,CAAoC;AAChClB,EAAAA,WAAW,CAAC;AAAC3D,IAAAA,IAAD;AAAOmF,IAAAA;AAAP,GAAD,EAAgB;AACvB;AACA,SAAKnF,IAAL,GAAYA,IAAZ;AACA,SAAK8K,IAAL,GAAY,EAAZ;AACA,SAAK3F,MAAL,GAAcA,MAAd;AACH;;AAED,eAAaM,gBAAb,CAA8BmQ,aAA9B,EAA4C;AACxC,WAAOA,aAAa,CAAChQ,IAAd,CAAmB,CAACuF,CAAD,EAAIC,CAAJ,KAAU;AAChC,aAAOD,CAAC,CAACE,UAAF,CAAatF,IAAb,CAAkBwF,aAAlB,CAAgCH,CAAC,CAACC,UAAF,CAAatF,IAA7C,KACAoF,CAAC,CAACE,UAAF,CAAapS,IAAb,CAAkBsS,aAAlB,CAAgCH,CAAC,CAACC,UAAF,CAAapS,IAA7C,CADP;AAEH,KAHM,CAAP;AAIH;;AAED2L,EAAAA,UAAU,CAAC+G,GAAG,GAAC,KAAL,EAAW;AACjB,QAAIrH,EAAE,GAAGsH,MAAM,CAAC,OAAO,KAAKtH,EAAb,CAAf;AACA,QAAGqH,GAAH,EAAQrH,EAAE,GAAGA,EAAE,CAACuH,QAAH,CAAY,CAAZ,CAAL;AACR,WAAO/R,KAAM,UAASwK,EAAG,YAAW,KAAKyB,IAAK,cAAa,KAAK9M,IAAK,GAArE;AACH;;AAnB+B;;AAsBpCkB,WAAW,CAACwb,YAAD,EAAe,IAAf,EAAqB,SAArB,CAAX;AACAxb,WAAW,CAACwb,YAAD,EAAe,MAAf,EAAuB,sBAAvB,CAAX;AACAxb,WAAW,CAACwb,YAAD,EAAe,SAAf,EAA0B,yBAA1B,CAAX;AACAxb,WAAW,CAACwb,YAAD,EAAe,MAAf,EAAuB,sBAAvB,CAAX;AACAxb,WAAW,CAACwb,YAAD,EAAe,QAAf,EAAyB,aAAzB,CAAX;AACAA,YAAY,CAACtQ,QAAb,GAAwB,qBAAxB;;ACpBA,MAAMoF,IAAN,SAAmB5F,SAAnB,CAA4B;AACxBlB,EAAAA,WAAW,CAAC;AAAC3J,UAAAA,MAAD;AAAOgG,IAAAA,IAAP;AAAamF,IAAAA,MAAb;AAAqB4K,IAAAA;AAArB,MAAmC,EAApC,EAAuC;AAC9C;;AACA,QAAG/V,MAAH,EAAQ;AACJA,MAAAA,MAAI,GAAGgW,YAAW,CAAChW,MAAD,CAAlB;;AACA,UAAG;AACC,YAAI8P,CAAC,GAAG1R,YAAY,CAAC4B,MAAD,EAAO,OAAP,CAApB;AACAgG,QAAAA,IAAI,GAAG3H,IAAI,CAACC,KAAL,CAAWF,YAAY,CAAC4B,MAAD,EAAO,OAAP,CAAvB,CAAP;AACH,OAHD,CAGC,OAAMzB,CAAN,EAAQ;AACL,YAAGA,CAAC,CAACC,IAAF,KAAW,QAAd,EAAuB;AACnB,cAAGT,YAAY,CAACsY,aAAhB,EAA8B;AAC1B,iBAAKC,OAAL,GAAe,IAAf;AACA,mBAAOxN,SAAP;AACH,WAHD,MAGK;AACD,kBAAM,IAAItD,UAAJ,CAAe,mCAAf,CAAN;AACH;AACJ,SAPD,MAOK;AACD,gBAAM,IAAIA,UAAJ,CAAgB,sBAAqBxF,MAAK,KAAIzB,CAAE,EAAhD,CAAN;AACH;AACJ;AACJ;;AACD,SAAKuS,IAAL,GAAY,EAAZ;AACA,SAAKmF,UAAL,GAAkBF,UAAlB;;AACA,QAAG,CAAC/P,IAAJ,EAAS;AACLA,MAAAA,IAAI,GAAGyK,IAAI,CAACmG,QAAL,EAAP;AACH;;AACD,SAAK5Q,IAAL,GAAYA,IAAZ;AACA,SAAKmF,MAAL,GAAcA,MAAd;AACA,SAAKuL,SAAL,GAAiB,CAAC,KAAKvL,MAAvB;AACH;;AAED,SAAOyL,QAAP,GAAiB;AACb,WAAO;AACH,oBAAc;AACV,uBAAe,GADL;AAEV,oBAAY,cAFF;AAGV,mBAAW;AAHD,OADX;AAMH,uBAAiB,EANd;AAOH,cAAQ;AAPL,KAAP;AASH;;AAED,QAAMM,WAAN,CAAkBpU,GAAlB,EAAsB;AAClB,SAAKqI,MAAL,GAAcrI,GAAd;AAEA,QAAImR,MAAM,GAAI,MAAM,KAAK/H,YAAL,CAAkBqE,MAAlB,EAA0B,QAA1B,EAAoC,KAApC,EAA2C,UAA3C,CAApB;AACA,QAAIsL,KAAK,GAAK,MAAM,KAAK3P,YAAL,CAAkBuE,IAAlB,EAAwB,UAAxB,EAAoC,KAApC,EAA2C,UAA3C,CAApB;AACA,QAAIqL,KAAK,GAAK,MAAM,KAAK5P,YAAL,CAAkBuE,IAAlB,EAAwB,WAAxB,EAAqC,KAArC,EAA4C,UAA5C,CAApB;AACA,QAAIiH,OAAO,GAAG,MAAM,KAAKxL,YAAL,CAAkB2E,QAAlB,EAA4B,cAA5B,EAA4C,KAA5C,EAAmD,UAAnD,CAApB;AAEA,QAAIkL,YAAY,GAAG,MAAM,KAAK7P,YAAL,CAAkBuE,IAAlB,EAAwB,cAAxB,EAAwC,IAAxC,EAA8C,UAA9C,CAAzB;AAEA,QAAIuL,UAAU,GAAG,MAAM,KAAK9P,YAAL,CAAkByP,YAAlB,EAAgC,oBAAhC,EAAsD,IAAtD,EAA4D,UAA5D,CAAvB;AACA,QAAIM,UAAU,GAAG,MAAM,KAAK/P,YAAL,CAAkByP,YAAlB,EAAgC,oBAAhC,EAAsD,IAAtD,EAA4D,UAA5D,CAAvB;AACA,QAAIO,SAAS,GAAI,MAAM,KAAKhQ,YAAL,CAAkByP,YAAlB,EAAgC,mBAAhC,EAAqD,IAArD,EAA2D,UAA3D,CAAvB;AACH;;AACD,QAAMQ,KAAN,CAAYrZ,GAAZ,EAAgB;AACZ,QAAGF,GAAG,CAAC4G,UAAJ,CAAe1G,GAAf,CAAH,EAAwB;AACxB,WAAO,MAAM,KAAKsZ,gBAAL,CAAsBtZ,GAAtB,CAAb;AACH;;AACD,QAAMuZ,KAAN,CAAYvZ,GAAZ,EAAgB;AACZ,QAAG,CAAC,KAAK4T,SAAT,EAAmB;AACf,YAAM,KAAKxV,OAAL,EAAN;AACH;;AACD,SAAKoL,OAAL;;AACA,QAAG1J,GAAG,CAAC4G,UAAJ,CAAe1G,GAAf,CAAH,EAAuB;AACnBV,MAAAA,GAAG,CAACtC,KAAM,sBAAqB,KAAKb,IAAK,cAAa2D,GAAG,CAAC6G,OAAJ,CAAY3G,GAAZ,CAAiB,IAApE,CAAH;AACAyS,MAAAA,aAAa,CAAC,KAAKuC,SAAN,EAAiBzZ,IAAI,CAAC4F,SAAL,CAAe,KAAK+B,IAApB,EAA0B,IAA1B,EAAgC,CAAhC,CAAjB,CAAb;AACH,KAHD,MAGK;AACD,YAAM,KAAKkR,WAAL,CAAiBpU,GAAjB,CAAN;AACA,YAAM,KAAKiV,YAAL,CAAkBjV,GAAlB,CAAN;AACH;AACJ;;AACD,MAAIuW,SAAJ,GAAe;AACX,WAAO,KAAP;AACH;;AACD,QAAM+C,gBAAN,CAAuBtZ,GAAvB,EAA2B;AACvBnB,IAAAA,KAAK,CAAC7B,KAAM,0BAAyB,KAAKb,IAAK,eAAc6D,GAAI,KAA5D,CAAL;;AAEA,QAAG,KAAKuW,SAAR,EAAkB;AACdjX,MAAAA,GAAG,CAACtC,KAAM,qCAAP,CAAH;AACA;AACH,KANsB;;;AASvB,QAAIqL,MAAM,GAAG,MAAMsF,IAAI,CAAClF,SAAL,CAAezI,GAAf,EAAoB,KAAK7D,IAAzB,CAAnB;AAEA,SAAKqd,KAAL,GAAa,KAAKA,KAAL,IAAc,EAA3B;;AAEA,QAAGnR,MAAH,EAAU;AACN,WAAKmR,KAAL,CAAWxZ,GAAX,IAAkBqI,MAAM,CAACb,EAAzB;AACAlI,MAAAA,GAAG,CAACtC,KAAM,UAASqL,MAAM,CAACP,UAAP,CAAkB,KAAlB,CAAyB,EAAzC,CAAH;AACA;AACH,KAjBsB;;;AAoBvBjJ,IAAAA,KAAK,CAAC,UAAD,CAAL;AACA,QAAIuF,GAAG,GAAG,MAAMtE,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,MAAAA,GAD+B;AAC1B9C,MAAAA,IAAI,EAAG,gBADmB;AACFmD,MAAAA,MAAM,EAAE,MADN;AAE/BF,MAAAA,OAAO,EAAE;AAAC+C,QAAAA,IAAI,EAAE;AAACqL,UAAAA,UAAU,EAAE;AAACpS,YAAAA,IAAI,EAAE,KAAKA;AAAZ,WAAb;AAAgC8M,UAAAA,IAAI,EAAE;AAAtC;AAAP;AAFsB,KAAnB,CAAhB;AAIA,SAAKuQ,KAAL,GAAa,KAAKA,KAAL,IAAc,EAA3B;AACA,SAAKA,KAAL,CAAWxZ,GAAX,IAAkBoE,GAAG,CAAClB,IAAJ,CAASsE,EAA3B;AACA3I,IAAAA,KAAK,CAAC,KAAD,CAAL;AACAS,IAAAA,GAAG,CAAC,KAAKka,KAAL,CAAWxZ,GAAX,CAAD,CAAH;AACH;;AAED,QAAMyZ,UAAN,GAAkB;AACd,WAAO,KAAKvW,IAAL,CAAUqL,UAAV,CAAqBmL,SAA5B;AACA,WAAO,KAAKxW,IAAL,CAAUqL,UAAV,CAAqBoL,OAA5B;AACA,WAAO,KAAKzW,IAAL,CAAUqL,UAAV,CAAqBqL,SAA5B,CAHc;;AAMd,QAAG,KAAKrQ,aAAL,CAAmBsQ,YAAnB,IAAmC,KAAKtQ,aAAL,CAAmBsQ,YAAnB,CAAgC,CAAhC,CAAtC,EAAyE;AACrEva,MAAAA,GAAG,CAAC,UAAD,CAAH;AACAA,MAAAA,GAAG,CAAC,KAAKnD,IAAN,CAAH;AACAmD,MAAAA,GAAG,CAAC,UAAD,CAAH;AACH;;AACD,WAAO,KAAKiK,aAAL,CAAmBsQ,YAA1B;;AAEA,QAAG,KAAKtQ,aAAL,CAAmBuQ,aAAnB,IAAoC,KAAKvQ,aAAL,CAAmBuQ,aAAnB,CAAiC,CAAjC,CAAvC,EAA2E;AACvExa,MAAAA,GAAG,CAAC,UAAD,CAAH;AACAA,MAAAA,GAAG,CAAC,KAAKnD,IAAN,CAAH;AACAmD,MAAAA,GAAG,CAAC,UAAD,CAAH;AACH;;AACD,WAAO,KAAKiK,aAAL,CAAmBuQ,aAA1B,CAlBc;AAqBd;AACI;AACA;AACI;AACJ;AACJ;AACH;;AAED,QAAM7E,YAAN,CAAmBjV,GAAnB,EAAuB;AACnBnB,IAAAA,KAAK,CAAC7B,KAAM,yBAAwB,KAAKb,IAAK,eAAc6D,GAAI,KAA3D,CAAL;;AAEA,QAAG,KAAKuW,SAAR,EAAkB;AACdjX,MAAAA,GAAG,CAACtC,KAAM,qCAAP,CAAH;AACA;AACH;;AAED,QAAG,KAAKwc,KAAL,CAAWxZ,GAAX,CAAH,EAAmB;AACf,WAAKqI,MAAL,GAAcrI,GAAd;AAEA,YAAM,KAAKyZ,UAAL,EAAN;AACA,WAAKvW,IAAL,CAAUsE,EAAV,GAAe,KAAKgS,KAAL,CAAWxZ,GAAX,CAAf,CAJe;;AAMfnB,MAAAA,KAAK,CAAC,WAAD,CAAL;AACA,UAAIuF,GAAG,GAAG,MAAMtE,GAAG,CAACC,cAAJ,CAAmB;AAC/BC,QAAAA,GAD+B;AAC1B9C,QAAAA,IAAI,EAAG,kBAAiB,KAAKsc,KAAL,CAAWxZ,GAAX,CAAgB,EADd;AACiBK,QAAAA,MAAM,EAAE,OADzB;AAE/BF,QAAAA,OAAO,EAAE;AAAC+C,UAAAA,IAAI,EAAE,KAAKA;AAAZ,SAFsB;AAEH1C,QAAAA,YAAY,EAAE;AAFX,OAAnB,CAAhB;AAKAlB,MAAAA,GAAG,CAACtC,KAAM,oBAAmBoH,GAAG,CAAC9B,UAAW,GAAzC,CAAH;;AACA,UAAG8B,GAAG,CAAC9B,UAAJ,KAAmB,GAAtB,EAA0B;AACtBhD,QAAAA,GAAG,CAAC8E,GAAG,CAAChE,IAAL,CAAH;AACAd,QAAAA,GAAG,CAAC/D,IAAI,CAAC4F,SAAL,CAAe,KAAK+B,IAApB,EAA0B,IAA1B,EAAgC,CAAhC,CAAD,CAAH;AACH;AACJ,KAjBD,MAiBK;AACD,YAAM0D,KAAK,CAAC,YAAD,CAAX;AACH;AACJ;;AAED,MAAIoO,SAAJ,GAAe;AACX,WAAOmB,SAAI,CAAClb,YAAY,CAAC8R,OAAd,EAAuB,KAAKoG,UAAL,IAAmB,EAA1C,EAA8C,YAA9C,EAA4D,KAAKhX,IAAL,GAAY,OAAxE,CAAX;AACH;;AAED,QAAMiC,OAAN,GAAe;AACX,QAAI+S,MAAM,GAAI,MAAM,KAAK/H,YAAL,CAAkBqE,MAAlB,EAA0B,QAA1B,EAAoC,KAApC,CAApB,CADW;;AAGX,QAAIsL,KAAK,GAAK,MAAM,KAAK3P,YAAL,CAAkBuE,IAAlB,EAAwB,UAAxB,EAAoC,KAApC,CAApB;AACA,QAAIqL,KAAK,GAAK,MAAM,KAAK5P,YAAL,CAAkBuE,IAAlB,EAAwB,WAAxB,EAAqC,KAArC,CAApB;AACA,QAAIiH,OAAO,GAAG,MAAM,KAAKxL,YAAL,CAAkB2E,QAAlB,EAA4B,cAA5B,EAA4C,KAA5C,CAApB,CALW;;AAQX,QAAIkL,YAAY,GAAG,MAAM,KAAK7P,YAAL,CAAkBuE,IAAlB,EAAwB,cAAxB,EAAwC,IAAxC,CAAzB,CARW;;AAWX,QAAIuL,UAAU,GAAG,MAAM,KAAK9P,YAAL,CAAkByP,YAAlB,EAAgC,oBAAhC,EAAsD,IAAtD,CAAvB;AACA,QAAIM,UAAU,GAAG,MAAM,KAAK/P,YAAL,CAAkByP,YAAlB,EAAgC,oBAAhC,EAAsD,IAAtD,CAAvB;AACA,QAAIO,SAAS,GAAI,MAAM,KAAKhQ,YAAL,CAAkByP,YAAlB,EAAgC,mBAAhC,EAAqD,IAArD,CAAvB,CAbW;;AAgBX,WAAO,KAAKtP,aAAL,CAAmB,eAAnB,CAAP;AACA,WAAO,KAAKA,aAAL,CAAmB,eAAnB,CAAP;AAEA,SAAKqK,SAAL,GAAiB,IAAjB;AAEA,WAAO;AACHzC,MAAAA,MADG;AACKyD,MAAAA,OADL;AAEHmE,MAAAA,KAFG;AAEIC,MAAAA,KAFJ;AAGHC,MAAAA,YAHG;AAIHE,MAAAA,UAJG;AAISD,MAAAA,UAJT;AAIqBE,MAAAA;AAJrB,KAAP;AAMH;;AAEDtR,EAAAA,UAAU,CAAC+G,GAAG,GAAC,IAAL,EAAU;AAChB,QAAIrH,EAAE,GAAGsH,MAAM,CAAC,QAAQ,KAAKzG,MAAL,IAAe,KAAKA,MAAL,GAAc,GAAd,GAAoB,KAAKb,EAAxC,IAA8C,OAAtD,CAAD,CAAf;AACA,QAAIoO,GAAG,GAAG,EAAV;;AACA,QAAG,KAAKzC,UAAR,EAAmB;AACfyC,MAAAA,GAAG,GAAG5Y,KAAM,WAAU,KAAKmW,UAAW,GAAtC;AACH;;AACD,QAAGtE,GAAH,EAAQrH,EAAE,GAAGA,EAAE,CAACuH,QAAH,CAAY,EAAZ,CAAL;;AACR,QAAG;AACC,aAAO/R,KAAM,UAASwK,EAAG,MAAKoO,GAAI,SAAQ,KAAKzZ,IAAK,GAApD;AACH,KAFD,CAEC,OAAMV,CAAN,EAAQ;AACL,aAAO,KAAKyH,IAAZ;AACH;AACJ;;AApNuB;;AAuN5B7F,WAAW,CAACsQ,IAAD,EAAO,MAAP,EAAe,sBAAf,CAAX;AACAtQ,WAAW,CAACsQ,IAAD,EAAO,aAAP,EAAsB,6BAAtB,CAAX;AACAtQ,WAAW,CAACsQ,IAAD,EAAO,IAAP,EAAa,SAAb,CAAX;AACAtQ,WAAW,CAACsQ,IAAD,EAAO,eAAP,EAAwB,oBAAxB,CAAX;AACAtQ,WAAW,CAACsQ,IAAD,EAAO,WAAP,EAAoB,gBAApB,CAAX;AACAtQ,WAAW,CAACsQ,IAAD,EAAO,QAAP,EAAiB,aAAjB,CAAX;AACAtQ,WAAW,CAACsQ,IAAD,EAAO,YAAP,EAAqB,cAArB,CAAX;AACAtQ,WAAW,CAACsQ,IAAD,EAAO,OAAP,EAAgB,YAAhB,CAAX;AACAA,IAAI,CAACpF,QAAL,GAAgB,eAAhB;;AChOA;AACA;AACA;;AAEe,MAAMwR,WAAN,CAAiB;AAC5BlT,EAAAA,WAAW,CAACmT,YAAD,EAAeC,QAAf,EAAwB;AAC/B,QAAGD,YAAH,EAAgB;AACZ,WAAKA,YAAL,GAAoBA,YAApB;AACA,WAAKC,QAAL,GAAgBA,QAAhB;AACA,WAAK5R,MAAL,GAAc2R,YAAY,CAAC3R,MAA3B;AACH;AACJ;;AACD,QAAM6R,kBAAN,CAAyBjN,IAAI,GAAG,KAAKkN,UAArC,EAAgD;AAC5C7a,IAAAA,GAAG,CAAC,sBAAD,CAAH;AACA,UAAMQ,GAAG,CAACoF,SAAJ,CAAc+H,IAAI,CAAC7F,GAAL,CAASxH,GAAT,CAAa8H,CAAC,IAAI,MAAMA,CAAC,CAAC2N,YAAF,EAAxB,CAAd,CAAN;AACH;;AACD,QAAM+E,SAAN,GAAiB;AACb9a,IAAAA,GAAG,CAAC,mBAAD,CAAH;AACA,SAAK+a,QAAL,GAAgB,MAAM1M,IAAI,CAAC/E,MAAL,CAAY,KAAKP,MAAjB,CAAtB;AACA/I,IAAAA,GAAG,CAAC,KAAK+a,QAAL,CAAcxW,MAAf,CAAH;AAEAvE,IAAAA,GAAG,CAAC,qBAAD,CAAH;AACA,SAAK6a,UAAL,GAAkB,MAAM1M,MAAM,CAAC7E,MAAP,CAAc,KAAKP,MAAnB,CAAxB;AACA/I,IAAAA,GAAG,CAAC,KAAK6a,UAAL,CAAgBtW,MAAjB,CAAH;AAEAvE,IAAAA,GAAG,CAAC,uBAAD,CAAH;AACA,SAAKgb,YAAL,GAAoB,MAAMvM,QAAQ,CAACnF,MAAT,CAAgB,KAAKP,MAArB,CAA1B;AACA/I,IAAAA,GAAG,CAAC,KAAKgb,YAAL,CAAkBzW,MAAnB,CAAH;AAEAvE,IAAAA,GAAG,CAAC,2BAAD,CAAH;AACA,SAAKib,gBAAL,GAAwB,MAAM1B,YAAY,CAACjQ,MAAb,CAAoB,KAAKP,MAAzB,CAA9B;AACA/I,IAAAA,GAAG,CAAC,KAAKib,gBAAL,CAAsB1W,MAAvB,CAAH;;AAEA,QAAG,CAAC,KAAKmW,YAAT,EAAsB;AAClB,WAAKQ,KAAL,GAAa,KAAKH,QAAlB;AACA,WAAKI,OAAL,GAAe,KAAKN,UAApB;AACA,WAAKrB,aAAL,GAAqB,IAAI3R,UAAJ,CAAe,EAAf,CAArB;AAEA,YAAM,KAAK+S,kBAAL,EAAN;AACA;AACH,KAPD,MAOK;AACD,YAAM,KAAKA,kBAAL,EAAN;AACH;;AAED5a,IAAAA,GAAG,CAAC,OAAD,CAAH,CA5Ba;;AAgCbT,IAAAA,KAAK,CAAC,8BAAD,CAAL;AACAS,IAAAA,GAAG,CAAC,KAAK0a,YAAL,CAAkBlS,UAAlB,EAAD,CAAH;AAEA,QAAI4S,YAAY,GAAG,KAAKL,QAAL,CAAcjT,GAAd,CAAkBxH,GAAlB,CAAsB8H,CAAC,IAAIA,CAAC,CAACvL,IAA7B,EAAmCuM,MAAnC,CAA0ChB,CAAC,IAAIA,CAAC,CAAC7D,MAAF,IAAY,CAA3D,CAAnB;AACA,QAAI8W,cAAc,GAAG,KAAKR,UAAL,CAAgB/S,GAAhB,CAAoBxH,GAApB,CAAwB8H,CAAC,IAAIA,CAAC,CAACvL,IAA/B,EAAqCuM,MAArC,CAA4ChB,CAAC,IAAIA,CAAC,CAAC7D,MAAF,IAAY,CAA7D,CAArB;AACA,QAAI+W,aAAa,GAAG,KAAKL,gBAAL,CAAsBnT,GAAtB,CAA0BxH,GAA1B,CAA8B8H,CAAC,IAAIA,CAAC,CAACvL,IAArC,EAA2CuM,MAA3C,CAAkDhB,CAAC,IAAIA,CAAC,CAAC7D,MAAF,IAAY,CAAnE,CAApB;AACA,QAAIgX,qBAAqB,GAAG,IAAIC,GAAJ,EAA5B;AAEA,QAAIC,SAAS,GAAG,CAAC,KAAKf,YAAN,CAAhB;AACA,QAAIgB,WAAW,GAAG,EAAlB;;AACA,SAAI,IAAIC,WAAR,IAAuBF,SAAvB,EAAiC;AAC7B,UAAGE,WAAW,KAAK,KAAKhB,QAAxB,EAAkC;AAClC,UAAI;AACAjB,QAAAA,KADA;AACOD,QAAAA,KADP;AACc5H,QAAAA,MADd;AAEAiI,QAAAA,SAFA;AAEWD,QAAAA,UAFX;AAEuBD,QAAAA;AAFvB,UAGA,MAAM+B,WAAW,CAAC7c,OAAZ,EAHV;AAMAgb,MAAAA,SAAS,CAAE8B,OAAX,CAAmBC,CAAC,IAAIN,qBAAqB,CAACO,GAAtB,CAA0BD,CAA1B,CAAxB;AACAjC,MAAAA,UAAU,CAACgC,OAAX,CAAmBC,CAAC,IAAIN,qBAAqB,CAACO,GAAtB,CAA0BD,CAA1B,CAAxB;AACAhC,MAAAA,UAAU,CAAC+B,OAAX,CAAmBC,CAAC,IAAIN,qBAAqB,CAACO,GAAtB,CAA0BD,CAA1B,CAAxB;AAEA,UAAGnC,KAAK,IAAI,CAAC+B,SAAS,CAAC1Y,QAAV,CAAmB2W,KAAnB,CAAb,EAAwC+B,SAAS,CAACjX,IAAV,CAAekV,KAAf;AACxC,UAAGD,KAAK,IAAI,CAACgC,SAAS,CAAC1Y,QAAV,CAAmB2W,KAAnB,CAAb,EAAwC+B,SAAS,CAACjX,IAAV,CAAeiV,KAAf;AAExC,UAAIsC,aAAa,GAAGlK,MAAM,CAAC6E,iBAAP,CAAyB2E,cAAzB,CAApB;AACAU,MAAAA,aAAa,GAAGA,aAAa,CAACzb,GAAd,CAAkB8H,CAAC,IAAI,KAAKyS,UAAL,CAAgBxS,UAAhB,CAA2BD,CAA3B,CAAvB,CAAhB;AAEA,UAAI4T,WAAW,GAAGnK,MAAM,CAAC6E,iBAAP,CAAyB0E,YAAzB,CAAlB;AACAY,MAAAA,WAAW,GAAGA,WAAW,CAAC1b,GAAZ,CAAgB8H,CAAC,IAAI,KAAK2S,QAAL,CAAc1S,UAAd,CAAyBD,CAAzB,CAArB,CAAd;AAEAyJ,MAAAA,MAAM,CACD6E,iBADL,CACuB4E,aADvB,EAEKhb,GAFL,CAESyD,GAAG,IAAI,KAAKkX,gBAAL,CAAsB5S,UAAtB,CAAiCtE,GAAjC,CAFhB,EAGK6X,OAHL,CAGaK,KAAK,IAAIV,qBAAqB,CAACO,GAAtB,CAA0BG,KAA1B,CAHtB;AAKAF,MAAAA,aAAa,CAACvX,IAAd,CAAmBqN,MAAnB;;AAEA,WAAI,IAAIqK,CAAR,IAAaH,aAAb,EAA4B,IAAG,CAACL,WAAW,CAAC3Y,QAAZ,CAAqBmZ,CAArB,CAAJ,EAA6BR,WAAW,CAAClX,IAAZ,CAAiB0X,CAAjB;;AACzD,WAAI,IAAIA,CAAR,IAAaF,WAAb,EAA4B,IAAG,CAACP,SAAS,CAAG1Y,QAAZ,CAAqBmZ,CAArB,CAAJ,EAA6BT,SAAS,CAAGjX,IAAZ,CAAiB0X,CAAjB;;AAEzD,UAAGvgB,YAAY,CAACwgB,OAAhB,EAAwB;AACpB5c,QAAAA,KAAK,CAACoc,WAAW,CAACnT,UAAZ,CAAuB,KAAvB,CAAD,CAAL;AACAxI,QAAAA,GAAG,CAAC,GAAD,CAAH;AACAT,QAAAA,KAAK,CAAC,IAAD,CAAL;AACAA,QAAAA,KAAK,CAACsS,MAAM,CAACrJ,UAAP,CAAkB,KAAlB,CAAD,CAAL;AACAxI,QAAAA,GAAG,CAAC,GAAD,CAAH;AACAT,QAAAA,KAAK,CAAC,eAAD,CAAL;AAAwB,YAAGka,KAAH,EAAUla,KAAK,CAACka,KAAK,CAACjR,UAAN,CAAiB,KAAjB,CAAD,CAAL,CAAV,KAA+CjJ,KAAK,CAAC,MAAD,CAAL;AACvES,QAAAA,GAAG,CAAC,EAAD,CAAH;AACAT,QAAAA,KAAK,CAAC,eAAD,CAAL;AAAwB,YAAGma,KAAH,EAAUna,KAAK,CAACma,KAAK,CAAClR,UAAN,CAAiB,KAAjB,CAAD,CAAL,CAAV,KAA+CjJ,KAAK,CAAC,MAAD,CAAL;AACvES,QAAAA,GAAG,CAAC,EAAD,CAAH;AACAA,QAAAA,GAAG,CAAC,UAAD,CAAH;;AAEA,aAAI,IAAIkc,CAAR,IAAaF,WAAb,EAA0Bhc,GAAG,CAAC,SAASkc,CAAC,CAAC1T,UAAF,CAAa,IAAb,CAAV,CAAH;;AAE1BxI,QAAAA,GAAG,CAAC,YAAD,CAAH;;AACA,aAAI,IAAIkc,CAAR,IAAaH,aAAb,EAA4B/b,GAAG,CAAC,SAASkc,CAAC,CAAC1T,UAAF,CAAa,IAAb,CAAV,CAAH;;AAE5BxI,QAAAA,GAAG,CAAC,IAAD,CAAH;AACH;AACJ;;AAEDA,IAAAA,GAAG,CAAC,OAAD,CAAH;AAEA,SAAKkb,KAAL,GAAa,IAAIrT,UAAJ,CAAe4T,SAAf,CAAb;AACA,SAAKN,OAAL,GAAe,IAAItT,UAAJ,CAAe6T,WAAf,CAAf;AACAH,IAAAA,qBAAqB,CAACvL,MAAtB,CAA6BtJ,SAA7B;AACA,SAAK8S,aAAL,GAAqB,IAAI3R,UAAJ,CAAe,CAAC,GAAG0T,qBAAJ,CAAf,CAArB;AACH;;AACD,QAAMvb,GAAN,GAAW;AACP,QAAG,KAAKwZ,aAAL,CAAmB1R,GAAnB,CAAuBvD,MAAvB,GAAgC,CAAnC,EAAqC;AACjCvE,MAAAA,GAAG,CAAC,0BAAD,CAAH;AACA,WAAKwZ,aAAL,CAAmBxZ,GAAnB;AACH;;AAED,QAAG,KAAKkb,KAAL,CAAWpT,GAAX,CAAevD,MAAf,GAAwB,CAA3B,EAA6B;AACzBhF,MAAAA,KAAK,CAAC,kBAAD,CAAL;AACAS,MAAAA,GAAG,CAAC,KAAKkb,KAAL,CAAWpT,GAAX,CAAevD,MAAhB,CAAH;AACA,WAAK2W,KAAL,CAAWlb,GAAX;AACH;;AAED,QAAG,KAAKmb,OAAL,CAAarT,GAAb,CAAiBvD,MAAjB,GAA0B,CAA7B,EAA+B;AAC3BhF,MAAAA,KAAK,CAAC,oBAAD,CAAL;AACAS,MAAAA,GAAG,CAAC,KAAKmb,OAAL,CAAarT,GAAb,CAAiBvD,MAAlB,CAAH;AACA,WAAK4W,OAAL,CAAanb,GAAb;AACH;;AAED,QAAGrE,YAAY,CAACygB,SAAhB,EAA0B;AACtB,aAAO;AAACjB,QAAAA,OAAO,EAAE,KAAKA,OAAL,CAAarT,GAAvB;AAA4BoT,QAAAA,KAAK,EAAE,KAAKA,KAAL,CAAWpT,GAA9C;AAAmD0R,QAAAA,aAAa,EAAE,KAAKA,aAAL,CAAmB1R;AAArF,OAAP;AACH;AACJ;;AACD,QAAMuU,QAAN,CAAe3b,GAAf,EAAmB;AACd,SAAI,IAAImR,MAAR,IAAkB,KAAKsJ,OAAvB,EAA+B;AAC5B,UAAG;AACC,cAAMtJ,MAAM,CAAC8F,mBAAP,CAA2BjX,GAA3B,CAAN;AACH,OAFD,CAEC,OAAMvE,CAAN,EAAQ;AAAC6D,QAAAA,GAAG,CAAC7D,CAAD,CAAH;AAAQ;AACpB;AACL;;AACD,QAAMmgB,MAAN,CAAa5b,GAAb,EAAiB;AACb,SAAI,IAAImR,MAAR,IAAkB,KAAKsJ,OAAvB,EAA+B;AAC3B,UAAG;AACC,cAAMtJ,MAAM,CAACgE,IAAP,CAAYnV,GAAZ,CAAN;AACH,OAFD,CAEC,OAAMvE,CAAN,EAAQ;AAAC6D,QAAAA,GAAG,CAAC7D,CAAD,CAAH;AAAQ;AACrB;;AACD,QAAG,KAAK+e,KAAL,CAAWpT,GAAX,CAAe,CAAf,CAAH,EAAqB;AACjB9H,MAAAA,GAAG,CAAC,iCAAD,CAAH;;AACA,WAAI,IAAIuc,IAAR,IAAgB,KAAKrB,KAArB,EAA2B;AACvB,YAAG;AACC,gBAAMqB,IAAI,CAACxC,KAAL,CAAWrZ,GAAX,CAAN;AACH,SAFD,CAEC,OAAMvE,CAAN,EAAQ;AAAC6D,UAAAA,GAAG,CAAC7D,CAAD,CAAH;AAAQ;AACrB;;AAED6D,MAAAA,GAAG,CAAC,IAAD,CAAH;AACAA,MAAAA,GAAG,CAAC,+BAAD,CAAH;AACAqO,MAAAA,IAAI,CAAC5E,WAAL,CAAiB/I,GAAjB;;AAEA,WAAI,IAAI6b,IAAR,IAAgB,KAAKrB,KAArB,EAA2B;AACvB,YAAG;AACC,gBAAMqB,IAAI,CAACtC,KAAL,CAAWvZ,GAAX,CAAN;AACH,SAFD,CAEC,OAAMvE,CAAN,EAAQ;AAAC6D,UAAAA,GAAG,CAAC7D,CAAD,CAAH;AAAQ;AACrB;AACJ;AACJ;;AAtK2B;;ACVhC,MAAMqgB,IAAN,SAAmB/T,SAAnB,CAA4B;AACxBlB,EAAAA,WAAW,CAAC;AAAC3D,IAAAA,IAAD;AAAOmF,IAAAA;AAAP,GAAD,EAAgB;AACvB;AACA,SAAKnF,IAAL,GAAYA,IAAZ;AACA,SAAK8K,IAAL,GAAY,EAAZ;AACA,SAAK3F,MAAL,GAAcA,MAAd;AACH;;AACDP,EAAAA,UAAU,CAAC+G,GAAG,GAAC,KAAL,EAAW;AACjB,QAAIrH,EAAE,GAAGsH,MAAM,CAAC,OAAO,KAAKtH,EAAb,CAAf;AACA,QAAGqH,GAAH,EAAQrH,EAAE,GAAGA,EAAE,CAACuH,QAAH,CAAY,CAAZ,CAAL;AACR,WAAO/R,KAAM,UAASwK,EAAG,YAAW,KAAKrL,IAAK,GAA9C;AACH;;AAXuB;;AAc5BkB,WAAW,CAACye,IAAD,EAAO,IAAP,EAAa,SAAb,CAAX;AACAze,WAAW,CAACye,IAAD,EAAO,MAAP,EAAe,sBAAf,CAAX;AACAze,WAAW,CAACye,IAAD,EAAO,OAAP,EAAgB,uBAAhB,CAAX;AACAze,WAAW,CAACye,IAAD,EAAO,QAAP,EAAiB,aAAjB,CAAX;AACAA,IAAI,CAACvT,QAAL,GAAgB,OAAhB;;AClBA,MAAMwT,GAAN,SAAkBhU,SAAlB,CAA2B;AACvBlB,EAAAA,WAAW,CAAC;AAAC3D,IAAAA,IAAD;AAAOmF,IAAAA;AAAP,MAAiB,EAAlB,EAAqB;AAC5B;AAEA,SAAK2F,IAAL,GAAY,EAAZ;AACA,SAAK3F,MAAL,GAAcA,MAAd;AACA,SAAKnF,IAAL,GAAYA,IAAZ,CAL4B;AAQ5B;AACH;;AACD4E,EAAAA,UAAU,CAAC+G,GAAG,GAAC,IAAL,EAAU;AAChB,QAAIrH,EAAE,GAAGsH,MAAM,CAAC,OAAO,KAAKzG,MAAZ,GAAqB,GAArB,GAA2B,KAAKb,EAAjC,CAAf;AACA,QAAGqH,GAAH,EAAQrH,EAAE,GAAGA,EAAE,CAACuH,QAAH,CAAY,EAAZ,CAAL;AAER,QAAIiN,MAAM,GAAG,KAAKC,OAAL,GAAe,QAAf,GAA0B,OAAvC;AAEA,WAAOjf,KAAM,UAASwK,EAAG,OAAMwU,MAAO,GAAE,KAAK7f,IAAK,GAAlD;AACH;;AACD,eAAa+f,MAAb,CAAoBlc,GAApB,EAAyB7D,IAAzB,EAA+B;AAACggB,IAAAA;AAAD,MAAe,EAA9C,EAAiD;AAC7C,WAAO,IAAIJ,GAAJ,CAAQ;AAAC7Y,MAAAA,IAAI,EAAE,MAAMpD,GAAG,CAACC,cAAJ,CAAmB;AAC3CC,QAAAA,GAD2C;AACtC9C,QAAAA,IAAI,EAAG,IAAG,KAAKqL,QAAS,EADc;AACXlI,QAAAA,MAAM,EAAE,MADG;AAE3CF,QAAAA,OAAO,EAAE;AACL+C,UAAAA,IAAI,EAAE;AACFqL,YAAAA,UAAU,EAAE;AACRpS,cAAAA,IADQ;AAER8f,cAAAA,OAAO,EAAEE,UAAU,GAAG,KAAH,GAAW;AAFtB,aADV;AAKFlT,YAAAA,IAAI,EAAE;AALJ;AADD;AAFkC,OAAnB,CAAb;AAWXZ,MAAAA,MAAM,EAAErI;AAXG,KAAR,CAAP;AAYH;;AAhCsB;;AAmC3B3C,WAAW,CAAC0e,GAAD,EAAM,IAAN,EAAY,SAAZ,CAAX;AACA1e,WAAW,CAAC0e,GAAD,EAAM,YAAN,EAAoB,iBAApB,CAAX;AACA1e,WAAW,CAAC0e,GAAD,EAAM,eAAN,EAAuB,oBAAvB,CAAX;AACA1e,WAAW,CAAC0e,GAAD,EAAM,MAAN,EAAc,sBAAd,CAAX;AACA1e,WAAW,CAAC0e,GAAD,EAAM,SAAN,EAAiB,yBAAjB,CAAX;AACA1e,WAAW,CAAC0e,GAAD,EAAM,QAAN,EAAgB,aAAhB,CAAX;AACAA,GAAG,CAACxT,QAAJ,GAAe,UAAf;;ACzCO,eAAe6T,cAAf,CAA8BC,cAA9B,EAA8CC,UAA9C,EAAyD;AAC5D,MAAIC,YAAY,GAAGD,UAAnB;AAEA,MAAIE,mBAAmB,GAAGH,cAAc,CAAC7e,KAAf,CAAqB,IAArB,EAA2B+F,KAA3B,CAAiC,CAAjC,EAAmC,CAAC,CAApC,CAA1B;AACA8Y,EAAAA,cAAc,GAAGA,cAAc,CAAC7e,KAAf,CAAqB,IAArB,EAA2B+F,KAA3B,CAAiC,CAAjC,EAAmC,CAAC,CAApC,EAAuC4S,IAAvC,CAA4C,IAA5C,CAAjB;AACA,MAAIsG,eAAe,GAAGJ,cAAc,CAAC7e,KAAf,CAAqB,IAArB,EAA2BkL,MAA3B,CAAkChB,CAAC,IAAIA,CAAC,CAACrF,QAAF,CAAW,UAAX,CAAvC,CAAtB;AAEA,MAAIqa,gBAAgB,GAAG,CAAC,CAAxB;AAAA,MAA2BC,WAAW,GAAG,CAAzC;AACA,MAAIC,0BAA0B,GAAG,EAAjC;AACA,MAAIC,aAAa,GAAG,IAApB;;AAEA,MAAIP,UAAU,GAAGE,mBAAmB,CAACM,OAApB,CAA4BL,eAAe,CAACA,eAAe,CAAC5Y,MAAhB,GAAwB,CAAzB,CAA3C,CAAjB,EAAyF;AACrF8Y,IAAAA,WAAW,GAAG,CAAd;AACAE,IAAAA,aAAa,GAAG,KAAhB;AACH;;AAED,OAAK,IAAIE,KAAK,GAAGN,eAAe,CAAC5Y,MAAhB,GAAyB,CAA1C,EAA6CkZ,KAAK,IAAI,CAAtD,EAAyDA,KAAK,EAA9D,EAAiE;AAC7D,QAAIC,gBAAgB,GAAGR,mBAAmB,CAACM,OAApB,CAA4BL,eAAe,CAACM,KAAD,CAA3C,CAAvB;AACA,QAAIE,QAAQ,GAAGR,eAAe,CAACM,KAAD,CAAf,CAAuBvf,KAAvB,CAA6B,IAA7B,EAAmCqG,MAAlD;;AACA,QAAIyY,UAAU,GAAGU,gBAAjB,EAAmC;AAC/B,UAAIP,eAAe,CAACM,KAAD,CAAf,CAAuBvf,KAAvB,CAA6B,GAA7B,EAAkCkL,MAAlC,CAAyCwU,OAAzC,EAAkD,CAAlD,KAAwD,QAA5D,EAAqE;AACjE,YAAIN,0BAA0B,CAACpf,KAA3B,CAAiC,IAAjC,EAAuCqG,MAAvC,IAAiDoZ,QAAjD,IAA6DJ,aAAjE,EAA+E;AAC3EN,UAAAA,YAAY,GAAGA,YAAY,GAAGS,gBAA9B;AACA;AACH,SAHD,MAGO,IAAKJ,0BAA0B,CAACpf,KAA3B,CAAiC,IAAjC,EAAuCqG,MAAvC,GAAgD8Y,WAAjD,IAAiEM,QAAjE,IAA6EP,gBAAgB,IAAI,CAAC,CAAtG,EAAwG;AAC3GA,UAAAA,gBAAgB,GAAGM,gBAAnB;AACH,SAFM,MAEA,IAAKJ,0BAA0B,CAACpf,KAA3B,CAAiC,IAAjC,EAAuCqG,MAAvC,GAAgD8Y,WAAjD,IAAiEM,QAArE,EAA8E;AACjFV,UAAAA,YAAY,GAAGA,YAAY,IAAIG,gBAAgB,GAAGM,gBAAvB,CAA3B;AACAN,UAAAA,gBAAgB,GAAG,CAAC,CAApB;AACH;AACJ;AACJ,KAZD,MAYO;AACHE,MAAAA,0BAA0B,GAAGH,eAAe,CAACM,KAAD,CAA5C;AACH;AACJ;;AAED,MAAII,QAAQ,GAAG,EAAf;;AACA,OAAI,IAAIC,IAAR,IAAgBZ,mBAAmB,CAACjZ,KAApB,CAA0B,CAA1B,EAA6B+Y,UAA7B,EAAyCe,OAAzC,EAAhB,EAAmE;AAC/D,QAAI7I,KAAK,GAAG,YAAYlR,IAAZ,CAAiB8Z,IAAjB,CAAZ;;AACA,QAAG5I,KAAH,EAAS;AACL2I,MAAAA,QAAQ,GAAG3I,KAAK,CAAC,CAAD,CAAhB;AACA;AACH;AACJ;;AAED,MAAI8I,eAAJ;;AAEA,MAAGV,0BAA0B,IAAI,EAAjC,EAAoC;AAChCU,IAAAA,eAAe,GAAGV,0BAA0B,CAACrZ,KAA3B,CAAiC,CAAjC,EAAoCd,IAApC,GAA2Cc,KAA3C,CAAiD,EAAjD,EAAqD,CAAC,CAAtD,CAAlB;AACH,GAFD,MAEK;AACD+Z,IAAAA,eAAe,GAAG,IAAlB;AACH;;AAED,MAAGb,eAAe,CAAC5Y,MAAhB,KAA2B,CAA9B,EAAgC;AAC5B0Y,IAAAA,YAAY,IAAI,CAAhB;AACAD,IAAAA,UAAU,IAAI,CAAd;AACH;;AAED,SAAO;AACHA,IAAAA,UAAU,EAAEC,YADT;AAEHe,IAAAA,eAFG;AAGHF,IAAAA,IAAI,EAAEZ,mBAAmB,CAACF,UAAD,CAHtB;AAIHa,IAAAA;AAJG,GAAP;AAOH;AAEM,SAASI,YAAT,CAAsBC,KAAtB,EAA4B;AAC/B,SAAOle,GAAG,CAACtC,KAAM,SAAQwgB,KAAK,CAACF,eAAN,IAAyB,MAAO,YAAWE,KAAK,CAAClB,UAAW,QAAOkB,KAAK,CAACL,QAAS;EAC7GK,KAAK,CAACJ,IAAK,EADC,CAAV;AAEH;AAEM,eAAe9E,OAAf,CAAuBtY,GAAvB,EAA4Byd,KAA5B,EAAkC;AACrCne,EAAAA,GAAG,CAACU,GAAD,EAAMyd,KAAN,CAAH;AACA,MAAIC,KAAK,GAAG5d,GAAG,CAACC,cAAJ,CAAmB;AAC3BC,IAAAA,GAD2B;AACtB9C,IAAAA,IAAI,EAAG,SAAQugB,KAAM;AADC,GAAnB,EAETE,KAFS,CAEHjW,CAAC,IAAI,IAFF,CAAZ;AAIA,MAAI2U,cAAc,GAAGvc,GAAG,CAACC,cAAJ,CAAmB;AACpCC,IAAAA,GADoC;AAC/B9C,IAAAA,IAAI,EAAG,SAAQugB,KAAM;AADU,GAAnB,EAElBE,KAFkB,CAEZjW,CAAC,IAAI,IAFO,CAArB;AAIA,MAAIzD,MAAM,GAAGnE,GAAG,CAACC,cAAJ,CAAmB;AAC5BC,IAAAA,GAD4B;AACvB9C,IAAAA,IAAI,EAAG,SAAQugB,KAAM;AADE,GAAnB,EAEVE,KAFU,CAEJjW,CAAC,IAAI,IAFD,CAAb;AAIA,MAAIkW,KAAK,GAAG9d,GAAG,CAACC,cAAJ,CAAmB;AAC3BC,IAAAA,GAD2B;AACtB9C,IAAAA,IAAI,EAAG,SAAQugB,KAAM;AADC,GAAnB,EAETE,KAFS,CAEHjW,CAAC,IAAI,IAFF,CAAZ;AAIA,MAAImW,MAAM,GAAG/d,GAAG,CAACC,cAAJ,CAAmB;AAC5BC,IAAAA,GAD4B;AACvB9C,IAAAA,IAAI,EAAG,SAAQugB,KAAM;AADE,GAAnB,EAEVE,KAFU,CAEJjW,CAAC,IAAI,IAFD,CAAb;AAIA,GAACgW,KAAD,EAAQrB,cAAR,EAAwBpY,MAAxB,EAAgC4Z,MAAhC,EAAwCD,KAAxC,IAAiD,MAAMzf,OAAO,CAACyE,GAAR,CAAY,CAAC8a,KAAD,EAAQrB,cAAR,EAAwBpY,MAAxB,EAAgC4Z,MAAhC,EAAwCD,KAAxC,CAAZ,CAAvD;AAEA,SAAO;AAACF,IAAAA,KAAD;AAAQrB,IAAAA,cAAR;AAAwBpY,IAAAA,MAAxB;AAAgC4Z,IAAAA,MAAhC;AAAwCD,IAAAA;AAAxC,GAAP;AACH;AAEM,eAAeE,UAAf,CAA0B9d,GAA1B,EAA+Byd,KAA/B,EAAqC;AAExC,MAAI;AAACC,IAAAA,KAAD;AAAQrB,IAAAA;AAAR,MAA0B,MAAM/D,OAAO,CAACtY,GAAD,EAAMyd,KAAN,CAA3C;AAGA,MAAInB,UAAU,GAAG,CAAC,CAAlB;AAEA,MAAIyB,UAAU,GAAG,EAAjB;AACA,MAAIC,WAAW,GAAG,CAAlB;;AACA,OAAI,IAAIC,EAAR,IAAcP,KAAK,CAAClgB,KAAN,CAAY,MAAZ,EAAoB6f,OAApB,EAAd,EAA4C;AACxCU,IAAAA,UAAU,CAACja,IAAX,CAAgBma,EAAhB;AACAD,IAAAA,WAAW;AACX,QAAGC,EAAE,CAAC5b,QAAH,CAAY,WAAZ,CAAH,EAA6B2b,WAAW,GAAG,CAAd;AAC7B,QAAGC,EAAE,CAAC5b,QAAH,CAAY,QAAZ,CAAH,EAA0B2b,WAAW,GAAG,CAAd;AAC1B,QAAG,CAACA,WAAJ,EAAiB;AACpB;;AAED,MAAIE,SAAS,GAAG,EAAhB;;AACA,OAAI,IAAIC,OAAR,IAAmBJ,UAAnB,EAA8B;AAE1BzB,IAAAA,UAAU,GAAG,kBAAkBhZ,IAAlB,CAAuB6a,OAAvB,CAAb;;AACA,QAAG7B,UAAU,IAAIA,UAAU,CAAC,CAAD,CAA3B,EAA+B;AAC3B4B,MAAAA,SAAS,CAACpa,IAAV,EAAe,MAAMsY,cAAc,CAACC,cAAD,EAAiBC,UAAU,CAAC,CAAD,CAA3B,CAAnC;AACH,KAFD,MAEK;AACD4B,MAAAA,SAAS,CAACpa,IAAV,CAAeqa,OAAf;AACH;AACJ;;AAED,SAAOD,SAAP;AACH;AAED,MAAME,KAAK,GAAG;AAACN,EAAAA,UAAD;AAAaP,EAAAA,YAAb;AAA2BjF,EAAAA,OAA3B;AAAoC8D,EAAAA;AAApC,CAAd;;ACrIAjS,OAAO,CAAC,oBAAD,CAAP,CAA8BkU,OAA9B;AAoBO,MAAMC,cAAc,GAAG;AAC1B,QAAMC,eAAN,GAAuB;AACnBzf,IAAAA,MAAM,CAAC0f,SAAP,GAAmB,IAAnB;;AACA,SAAI,IAAI5a,CAAC,GAAG,EAAZ,EAAgBA,CAAC,IAAI,EAArB,EAAyBA,CAAC,IAAE,CAA5B,EAA8B;AAC1BrE,MAAAA,OAAO,CAACJ,IAAR,CAAa,eAAeyE,CAA5B;AACA,UAAI6a,EAAE,GAAG,MAAM3e,GAAG,CAACmG,aAAJ,CAAkB,KAAlB,EAA0B,yBAAwBrC,CAAE,EAApD,CAAf;AACArE,MAAAA,OAAO,CAACmf,OAAR,CAAgB,eAAe9a,CAA/B;AACH;AACJ,GARyB;;AAS1B,QAAM+a,aAAN,CAAoB3e,GAApB,EAAyBya,OAAzB,EAAkCmE,UAAU,GAAG,MAAI,KAAnD,EAAyD;AACrD,SAAI,IAAIzN,MAAR,IAAkBsJ,OAAlB,EAA0B;AACtB,YAAMtJ,MAAM,CAAC+D,eAAP,CAAuBlV,GAAvB,EAA4B4e,UAA5B,CAAN;AACH;AACJ,GAbyB;;AAc1B;AACA,QAAMC,UAAN,CAAiB7e,GAAjB,EAAqB;AACjB,QAAGF,GAAG,CAAC4G,UAAJ,CAAe1G,GAAf,CAAH,EAAuB;AACnB;AACA,aAAO,IAAP;AACH;;AACD,QAAIiE,MAAM,GAAG,MAAMnE,GAAG,CAACC,cAAJ,CAAmB;AAACC,MAAAA,GAAD;AAAM9C,MAAAA,IAAI,EAAE,qBAAZ;AAAmCsD,MAAAA,YAAY,EAAE,IAAjD;AAAuDC,MAAAA,OAAO,EAAE;AAAhE,KAAnB,CAAnB;AACA,WAAOwD,MAAM,CAAC3B,UAAd;AACH;;AAtByB,CAAvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBP,eAAe;AACXwc,EAAAA,gBAAgB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EADP;AA6DXC,EAAAA,YAAY,EAAG;;;;YA7DJ;AAiEDC,EAAAA,WAAW,EAAG;;;;;;;;AAjEb,CAAf;;;;ACAA7U,OAAO,CAAC,oBAAD,CAAP,CAA8BkU,OAA9B;AA0BA,IAAIY,IAAI,GAAGC,QAAQ,CAAC1f,OAAO,CAACyf,IAAR,CAAa1b,KAAb,CAAmB,CAAnB,CAAD,EAAwB;AACvC4b,EAAAA,MAAM,EAAE,CAAC,MAAD,EAAS,KAAT,CAD+B;AAEvC;AACAC,EAAAA,OAAO,EAAE,CAAC,MAAD,CAH8B;AAIvC5U,EAAAA,OAAO,EAAE;AAAC6U,IAAAA,OAAO,EAAE;AAAV,GAJ8B;AAKvCC,EAAAA,KAAK,EAAE;AACHtS,IAAAA,CAAC,EAAE,MADA;AACQvR,IAAAA,CAAC,EAAE;AADX;AALgC,CAAxB,CAAnB;;AAWA,SAAS8jB,SAAT,CAAmBC,IAAnB,EAAyB/iB,KAAzB,EAA+B;AAC3B,MAAIL,QAAQ,GAAGY,KAAM;SAChBwiB,IAAI,CAACrjB,IAAK,MAAKqjB,IAAI,CAACnjB,IAAK;aACrBmjB,IAAI,CAAC1iB,KAAL,IAAc,WAAY;CAFnC,CAD2B;;AAM3BV,EAAAA,QAAQ,GAAGA,QAAQ,CAACqZ,SAAT,CAAmB,CAAnB,EAAsBrZ,QAAQ,CAACyH,MAAT,GAAgB,CAAtC,CAAX;;AAEA,MAAG,CAACpH,KAAJ,EAAU;AACN,SAAI,IAAIG,KAAR,IAAiB4iB,IAAI,CAAC3iB,MAAL,IAAe,EAAhC,EAAmC;AAC/BT,MAAAA,QAAQ,IAAIY,KAAM,eAAcJ,KAAK,CAACA,KAAM,MAAKA,KAAK,CAACF,IAAK,EAA5D;AACH;;AACD,SAAI,IAAIH,GAAR,IAAeijB,IAAI,CAAC5jB,IAAL,IAAa,EAA5B,EAA+B;AAC3BQ,MAAAA,QAAQ,IAAIY,KAAM,eAAcT,GAAG,CAACE,KAAM,YAAWF,GAAG,CAACC,IAAK,MAAKD,GAAG,CAACG,IAAK,EAA5E;AACH;AACJ;;AAED,SAAON,QAAP;AACH;;AAED,eAAeqjB,gBAAf,CAAgC7jB,IAAhC,EAAqC;AACjC,MAAI8jB,OAAO,GAAG9jB,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAAd;;AACA,MAAG/jB,IAAI,CAACT,IAAR,EAAa;AACT,QAAIykB,KAAK,GAAGhkB,IAAI,CAACT,IAAjB;AACA,QAAG,OAAOykB,KAAP,KAAiB,QAApB,EAA8BA,KAAK,GAAG,CAACA,KAAD,CAAR;AAC9B,WAAOA,KAAP;AACH;;AAED,MAAGF,OAAO,IAAI,GAAd,EAAkB;AACdpgB,IAAAA,GAAG,CAAC,oBAAD,CAAH;;AACA,QAAIugB,QAAQ,GAAG1V,OAAO,CAAC,WAAD,CAAtB;;AACA,QAAI2V,KAAK,GAAG,MAAMD,QAAQ,EAA1B;AACA,QAAID,KAAK,GAAIE,KAAK,CAACtiB,KAAN,CAAY,IAAZ,CAAb;AACA,QAAGoiB,KAAK,CAACA,KAAK,CAAC/b,MAAN,GAAe,CAAhB,CAAL,KAA4B,EAA/B,EAAmC+b,KAAK,CAACliB,GAAN;AACnC,WAAOkiB,KAAP;AACH,GAPD,MAOK;AACDhkB,IAAAA,IAAI,CAACyJ,CAAL,CAAOvB,IAAP,CAAY4b,OAAZ;AACH;AACJ;;AAED,IAAIK,SAAS,GAAG;AACZ,QAAMC,MAAN,CAAapkB,IAAb,EAAkB;AACd,SAAKoE,GAAL,GAAWpE,IAAI,CAACoE,GAAhB;AACA,QAAG,CAAC,KAAKA,GAAT,EAAc,MAAM,IAAI0C,UAAJ,CAAe,iBAAf,CAAN;AAEd,SAAKkd,KAAL,GAAa,MAAMH,gBAAgB,CAAC7jB,IAAD,CAAnC;AACH,GANW;;AAOZ,QAAMqkB,KAAN,CAAYrkB,IAAZ,EAAiB;AACb,QAAG,CAAC,KAAKgkB,KAAT,EAAe;AACX,YAAM,IAAIld,UAAJ,CAAe,iDAAf,CAAN;AACH;;AAEDpD,IAAAA,GAAG,CAACtC,KAAM,mBAAkB,KAAK4iB,KAAL,CAAW/b,MAAO,oCAAmC,KAAK7D,GAAI,IAAvF,CAAH;AAEA,QAAIya,OAAO,GAAG,KAAKmF,KAAL,CAAWhgB,GAAX,CAAe1C,IAAI,IAAI,IAAIuQ,MAAJ,CAAW;AAACvQ,MAAAA,IAAD;AAAOmL,MAAAA,MAAM,EAAE;AAAf,KAAX,CAAvB,CAAd;;AACA,SAAI,IAAI8I,MAAR,IAAkBsJ,OAAlB,EAA0B;AACtB;AACA,YAAMtJ,MAAM,CAAC6F,YAAP,CAAoB,KAAKhX,GAAzB,CAAN;AACA,YAAMmR,MAAM,CAAC2D,iBAAP,EAAN;;AAEA,UAAGlZ,IAAI,CAACskB,IAAR,EAAa;AACT,YAAIC,IAAI,GAAG,MAAM1S,MAAM,CAAChF,SAAP,CAAiB,KAAKzI,GAAtB,EAA2BmR,MAAM,CAAChV,IAAlC,CAAjB;AACA,cAAMgkB,IAAI,CAAC/hB,OAAL,EAAN;AACA,cAAM+hB,IAAI,CAAC9K,YAAL,EAAN;AACA,cAAM8K,IAAI,CAACpL,aAAL,EAAN;AACH;AACJ;AACJ,GA3BW;;AA4BZ,QAAMqL,OAAN,CAAcxkB,IAAd,EAAmB;AACf,QAAI+Q,QAAJ,EAAcxQ,IAAd,EAAoBkX,GAApB;;AACA,QAAGzX,IAAI,CAAC+Q,QAAR,EAAiB;AACbA,MAAAA,QAAQ,GAAG;AAACxQ,QAAAA,IAAI,EAAEP,IAAI,CAAC+Q;AAAZ,OAAX;AACA0G,MAAAA,GAAG,GAAGzX,IAAI,CAACyX,GAAX;AACH,KAHD,MAGK;AACD1G,MAAAA,QAAQ,GAAG,MAAM0T,cAAA,EAA6B,MAAMtS,QAAQ,CAACnF,MAAT,CAAgB,KAAK5I,GAArB,CAAnC,EAAjB;AACAqT,MAAAA,GAAG,GAAG,CAAC,MAAM1G,QAAQ,CAACsB,eAAT,EAAP,EAAmCE,OAAzC;AACH;;AACD,QAAGvS,IAAI,CAACO,IAAR,EAAa;AACTA,MAAAA,IAAI,GAAGP,IAAI,CAACO,IAAZ;AACH,KAFD,MAEK;AACDA,MAAAA,IAAI,GAAG,MAAMkkB,QAAA,CAAuB,aAAvB,EAAsC,0BAAtC,CAAb;AACH;;AAED,QAAIlP,MAAM,GAAG,IAAI1D,MAAJ,CAAW;AAACwF,MAAAA,UAAU,EAAEhY,YAAY,CAAC6Q;AAA1B,KAAX,CAAb;AAEAqF,IAAAA,MAAM,CAAC8C,YAAP,GAAsB;AAAC9X,MAAAA,IAAI,EAAEwQ,QAAQ,CAACxQ;AAAhB,KAAtB;AACAgV,IAAAA,MAAM,CAACyC,SAAP,GAAmB,IAAnB;AACAzC,IAAAA,MAAM,CAAChV,IAAP,GAAcA,IAAd;AACAgV,IAAAA,MAAM,CAACkC,GAAP,GAAaA,GAAb;;AACA,QAAGiN,QAAQ,CAAC3T,QAAQ,CAACxQ,IAAV,CAAX,EAA2B;AACvBgV,MAAAA,MAAM,CAACuE,KAAP,GAAe4K,QAAQ,CAAC3T,QAAQ,CAACxQ,IAAV,CAAR,CAAwBY,OAAxB,CAAgC,QAAhC,EAA0CZ,IAA1C,CAAf;AACH,KAFD,MAEK;AACDgV,MAAAA,MAAM,CAACuE,KAAP,GAAe,GAAf;AACH;;AAEDvE,IAAAA,MAAM,CAAC2D,iBAAP;AACA,QAAG,CAAClZ,IAAI,CAAC,eAAD,CAAR,EAA2BuV,MAAM,CAAC4D,aAAP;AAC9B,GAzDW;;AA0DZ,QAAMwL,KAAN,CAAY3kB,IAAZ,EAAiB;AACb0D,IAAAA,GAAG,CAAC,YAAD,CAAH;AACA,QAAImb,OAAO,GAAG,MAAMhN,MAAM,CAAC7E,MAAP,CAAc,KAAK5I,GAAnB,CAApB;;AACA,QAAGpE,IAAI,CAACwC,OAAR,EAAgB;AACZ2P,MAAAA,QAAQ,CAACnF,MAAT,CAAgB,KAAK5I,GAArB;;AACA,WAAI,IAAImR,MAAR,IAAkBsJ,OAAlB,EAA0B;AACtB,YAAIrc,OAAO,GAAG,MAAM+S,MAAM,CAAC/S,OAAP,CAAe,KAAK4B,GAApB,CAApB;;AACA,YAAGpE,IAAI,CAAC4kB,MAAR,EAAe;AACX,cAAI;AAAC5L,YAAAA;AAAD,cAAYxW,OAAhB;AACAwW,UAAAA,OAAO,CAAC1G,YAAR,CAAqB9R,QAArB,GAAgC,EAAhC;AACA+U,UAAAA,MAAM,CAACnD,IAAP,GAAc,EACV,GAAGmD,MAAM,CAACnD,IADA;AACM4G,YAAAA;AADN,WAAd;AAGH;AACJ;AACJ;;AACD,QAAG3Z,YAAY,CAACygB,SAAhB,EAA2B,OAAOjB,OAAP;AAC3Bnb,IAAAA,GAAG,CAACtC,KAAM,WAAUyd,OAAO,CAAC5W,MAAO,uBAAsB,KAAK7D,GAAI,IAA/D,CAAH;AACAya,IAAAA,OAAO,CAACrT,GAAR,CAAY0B,IAAZ,CAAiB,CAACuF,CAAD,EAAIC,CAAJ,KAAU;AACvB,aAAOzJ,MAAM,CAACwJ,CAAC,CAACE,UAAF,CAAaqL,SAAd,CAAN,GAAiC/U,MAAM,CAACyJ,CAAC,CAACC,UAAF,CAAaqL,SAAd,CAA9C;AACH,KAFD;;AAGA,SAAI,IAAIzI,MAAR,IAAkBsJ,OAAlB,EAA0B;AACtBnb,MAAAA,GAAG,CAAC6R,MAAM,CAACrJ,UAAP,EAAD,CAAH;AACH;AACJ,GAlFW;;AAmFZ,QAAM2Y,OAAN,CAAc7kB,IAAd,EAAmB;AACf,QAAG,CAAC,KAAKgkB,KAAT,EAAe;AACX,YAAM,IAAIld,UAAJ,CAAe,mDAAf,CAAN;AACH;;AAEDpD,IAAAA,GAAG,CAACtC,KAAM,oBAAmB,KAAK4iB,KAAL,CAAW/b,MAAO,yBAAwB,KAAK7D,GAAI,IAA7E,CAAH;AAEA,QAAIya,OAAO,GAAG,KAAKmF,KAAL,CAAWhgB,GAAX,CAAe1C,IAAI,IAAI,IAAIuQ,MAAJ,CAAW;AAACvQ,MAAAA,IAAD;AAAOmL,MAAAA,MAAM,EAAE;AAAf,KAAX,CAAvB,CAAd;AACA,UAAMqY,cAAK,CAAC/B,aAAN,CAAoB,KAAK3e,GAAzB,EAA8Bya,OAA9B,CAAN;AACH,GA5FW;;AA6FZ,QAAMkG,aAAN,CAAoB/kB,IAApB,EAAyB;AACrB,QAAIT,IAAI,GAAG,KAAKykB,KAAL,CAAW,CAAX,CAAX;;AACA,QAAG,CAAC,KAAKA,KAAT,EAAe;AACX,YAAM,IAAIld,UAAJ,CAAe,iDAAf,CAAN;AACH;;AAED,QAAIyO,MAAM,GAAG,IAAI1D,MAAJ,CAAW;AAACvQ,MAAAA,IAAI,EAAE/B,IAAP;AAAakN,MAAAA,MAAM,EAAE;AAArB,KAAX,CAAb;;AACA,QAAG,CAAC8I,MAAM,CAAChV,IAAX,EAAgB;AACZ,YAAM,IAAIuG,UAAJ,CAAe1F,KAAM,0CAArB,CAAN;AACH;;AAED,QAAI4jB,OAAO,GAAG,MAAMnT,MAAM,CAAChF,SAAP,CAAiB,KAAKzI,GAAtB,EAA2BmR,MAAM,CAAChV,IAAlC,CAApB;;AACA,QAAG,CAACykB,OAAJ,EAAY;AACR,YAAM,IAAIle,UAAJ,CAAe1F,KAAM,kCAAiCmU,MAAM,CAAChV,IAAK,cAAa,KAAK6D,GAAI,GAAxF,CAAN;AACH;;AAEDV,IAAAA,GAAG,CAACtC,KAAM,YAAW4jB,OAAO,CAAC9Y,UAAR,CAAmB,IAAnB,CAAyB,GAA3C,CAAH;AAEAxI,IAAAA,GAAG,EAAC,MAAMshB,OAAO,CAACtR,MAAR,EAAP,EAAH;AACH,GAhHW;;AAiHZ,QAAMuR,KAAN,CAAYjlB,IAAZ,EAAiB;AACb,QAAIT,IAAI,GAAG,KAAKykB,KAAL,CAAW,CAAX,CAAX;;AACA,QAAG,CAAC,KAAKA,KAAT,EAAe;AACX,YAAM,IAAIld,UAAJ,CAAe,iDAAf,CAAN;AACH;;AAED,QAAIyO,MAAM,GAAG,IAAI1D,MAAJ,CAAW;AAACvQ,MAAAA,IAAI,EAAE/B,IAAP;AAAakN,MAAAA,MAAM,EAAE;AAArB,KAAX,CAAb;;AACA,QAAG,CAAC8I,MAAM,CAAChV,IAAX,EAAgB;AACZ,YAAM,IAAIuG,UAAJ,CAAe1F,KAAM,0CAArB,CAAN;AACH;;AACD,QAAI4jB,OAAO,GAAG,MAAMnT,MAAM,CAAChF,SAAP,CAAiB,KAAKzI,GAAtB,EAA2BmR,MAAM,CAAChV,IAAlC,CAApB;;AACA,QAAG,CAACykB,OAAJ,EAAY;AACR,YAAM,IAAIle,UAAJ,CAAe1F,KAAM,kCAAiCmU,MAAM,CAAChV,IAAK,cAAa,KAAK6D,GAAI,GAAxF,CAAN;AACH;;AACD,UAAM4gB,OAAO,CAACvL,YAAR,EAAN;;AAEA,QAAIyL,QAAQ,GAAG3W,OAAO,CAAC,OAAD,CAAP,CAAiBhP,IAAhC;;AACA,QAAI4lB,IAAI,GAAGD,QAAQ,CAAC;AAACE,MAAAA,SAAS,EAAG,GAAE,KAAKhhB,GAAI,IAAGmR,MAAM,CAACkC,GAAI;AAAtC,KAAD,CAAnB;AACAZ,IAAAA,gBAAa,CAACsO,IAAD,EAAOH,OAAO,CAACllB,IAAf,CAAb;AAEA,QAAIulB,GAAG,GAAI,GAAE9lB,IAAK,IAAG4lB,IAAK,EAA1B,CApBa;;AAwBb,QAAG9lB,YAAY,CAACygB,SAAhB,EAA0B;AACtB,UAAG9f,IAAI,CAAC,UAAD,CAAP,EAAqB,OAAOmlB,IAAP,CAArB,KACK,OAAOE,GAAP;AACR,KA3BY;;;AA8BbhC,IAAAA,IAAI,CAACiC,OAAL,GAAejC,IAAI,CAACiC,OAAL,IAAgB,MAA/B;AACA,UAAMjjB,KAAK,CAACghB,IAAI,CAACiC,OAAN,EAAe,CAAC/lB,IAAD,EAAO4lB,IAAP,CAAf,EAA6B;AAACI,MAAAA,KAAK,EAAE;AAAR,KAA7B,CAAX;AACH,GAjJW;;AAkJZ,QAAMC,KAAN,CAAYxlB,IAAZ,EAAiB;AACb,QAAG,CAAC,KAAKgkB,KAAT,EAAe;AACX,YAAM,IAAIld,UAAJ,CAAe,iDAAf,CAAN;AACH;;AAED,QAAIvH,IAAI,GAAG,KAAKykB,KAAL,CAAW,CAAX,CAAX;AACA,QAAIzO,MAAM,GAAG,IAAI1D,MAAJ,CAAW;AAACvQ,MAAAA,IAAI,EAAE/B,IAAP;AAAakN,MAAAA,MAAM,EAAE;AAArB,KAAX,CAAb;;AACA,QAAG,CAAC8I,MAAM,CAAChV,IAAX,EAAgB;AACZ,YAAM,IAAIuG,UAAJ,CAAe1F,KAAM,0CAArB,CAAN;AACH;;AAED,UAAMmU,MAAM,CAACmH,OAAP,CAAe1c,IAAI,CAACoE,GAApB,CAAN;AACH,GA9JW;;AA+JZ,QAAMqhB,OAAN,CAAc9kB,GAAd,EAAmBX,IAAnB,EAAwB;AACpB0D,IAAAA,GAAG,CAACtC,KAAM,uBAAsBT,GAAI,mCAAjC,CAAH;AACH;;AAjKW,CAAhB;AAoKA,IAAI+kB,OAAO,GAAG;AACV,QAAMtB,MAAN,CAAapkB,IAAb,EAAkB;AACd,SAAKoE,GAAL,GAAWpE,IAAI,CAACoE,GAAhB;AACA,QAAG,CAAC,KAAKA,GAAT,EAAc,MAAM,IAAI0C,UAAJ,CAAe,iBAAf,CAAN;AACjB,GAJS;;AAKV,QAAM6d,KAAN,CAAY3kB,IAAZ,EAAiB;AACb0D,IAAAA,GAAG,CAAC,YAAD,CAAH;AACA,QAAIkb,KAAK,GAAG,MAAM7M,IAAI,CAAC/E,MAAL,CAAY,KAAK5I,GAAjB,CAAlB;AACA,QAAG/E,YAAY,CAACygB,SAAhB,EAA2B,OAAOlB,KAAP;AAE3Blb,IAAAA,GAAG,CAACtC,KAAM,WAAUwd,KAAK,CAAC3W,MAAO,qBAAoB,KAAK7D,GAAI,IAA3D,CAAH;AACAwa,IAAAA,KAAK,CAACpT,GAAN,CAAU0B,IAAV,CAAe,CAACuF,CAAD,EAAIC,CAAJ,KAAU;AACrB,aAAOzJ,MAAM,CAACwJ,CAAC,CAACnL,IAAF,CAAOqL,UAAP,CAAkBqL,SAAnB,CAAN,GAAsC/U,MAAM,CAACyJ,CAAC,CAACpL,IAAF,CAAOqL,UAAP,CAAkBqL,SAAnB,CAAnD;AACH,KAFD;;AAGA,SAAI,IAAIiC,IAAR,IAAgBrB,KAAhB,EAAuBlb,GAAG,CAACuc,IAAI,CAAC/T,UAAL,EAAD,CAAH;AAC1B,GAfS;;AAgBV,QAAMsY,OAAN,CAAcxkB,IAAd,EAAmB;AACf,QAAIuV,MAAM,GAAG,MAAMkP,YAAA,CAA2B;AAACjT,MAAAA,aAAa,EAAE;AAAhB,KAA3B,CAAnB;AACA,QAAImU,QAAQ,GAAG,MAAMlB,UAAA,CAAyB;AAAC7S,MAAAA,OAAO,EAAE;AAAV,KAAzB,CAArB;AACA,QAAIgU,SAAS,GAAG,MAAMnB,UAAA,CAAyB;AAAC7S,MAAAA,OAAO,EAAE;AAAV,KAAzB,CAAtB;AACA,QAAIrR,IAAI,GAAG,MAAMkkB,QAAA,CAAuB,WAAvB,EAAoC,wBAApC,CAAjB;AACAlkB,IAAAA,IAAI,GAAGA,IAAI,CAACY,OAAL,CAAa,GAAb,EAAkBoU,MAAM,CAAChV,IAAzB,CAAP;AACA,QAAIO,IAAI,GAAG,MAAM2jB,QAAA,CAAuB,aAAvB,EAAsC,sBAAtC,CAAjB;AAEA,QAAIpH,YAAY,GAAG,EAAnB;AACA,QAAI9V,IAAJ;;AACA,WAAMA,IAAI,GAAG,MAAMkd,UAAA,CAAyB;AAAC7S,MAAAA,OAAO,EAAE;AAAV,KAAzB,CAAnB,EAAuE;AACnE,UAAIrR,IAAI,GAAG,MAAMkkB,QAAA,CAAuB,KAAvB,EAA8B,2BAA9B,CAAjB;AACApH,MAAAA,YAAY,CAACnV,IAAb,CAAkB;AACdkK,QAAAA,IAAI,EAAE;AACFyT,UAAAA,UAAU,EAAEtlB;AADV,SADQ;AAId8M,QAAAA,IAAI,EAAE,eAJQ;AAKd9M,QAAAA,IAAI,EAAEgH,IAAI,CAAChH;AALG,OAAlB;AAOH;;AAED,QAAI0f,IAAI,GAAG,IAAIlO,IAAJ,CAAS;AAACsF,MAAAA,UAAU,EAAEhY,YAAY,CAAC6Q;AAA1B,KAAT,CAAX;AACA+P,IAAAA,IAAI,CAAC1f,IAAL,GAAYA,IAAZ;AACA0f,IAAAA,IAAI,CAAC6F,WAAL,GAAmBhlB,IAAnB;AACAmf,IAAAA,IAAI,CAACtS,aAAL,CAAmB4H,MAAnB,GAA4B;AAACjO,MAAAA,IAAI,EAAE;AAAC/G,QAAAA,IAAI,EAAEgV,MAAM,CAAChV,IAAd;AAAoB8M,QAAAA,IAAI,EAAE;AAA1B;AAAP,KAA5B;AACA,QAAGuY,SAAH,EAAc3F,IAAI,CAACtS,aAAL,CAAmBiY,SAAnB,GAA+B;AAACte,MAAAA,IAAI,EAAE;AAAC/G,QAAAA,IAAI,EAAEqlB,SAAS,CAACrlB,IAAjB;AAAuB8M,QAAAA,IAAI,EAAE;AAA7B;AAAP,KAA/B;AACd,QAAGsY,QAAH,EAAa1F,IAAI,CAACtS,aAAL,CAAmBgY,QAAnB,GAA8B;AAACre,MAAAA,IAAI,EAAE;AAAC/G,QAAAA,IAAI,EAAEolB,QAAQ,CAACplB,IAAhB;AAAsB8M,QAAAA,IAAI,EAAE;AAA5B;AAAP,KAA9B;;AACb,QAAGgQ,YAAY,CAAC,CAAD,CAAf,EAAmB;AACf4C,MAAAA,IAAI,CAACtS,aAAL,CAAmB0P,YAAnB,GAAkC;AAC9B/V,QAAAA,IAAI,EAAE+V;AADwB,OAAlC;AAGH;;AAED4C,IAAAA,IAAI,CAACtC,KAAL;AACH,GAlDS;;AAmDV,QAAM8H,OAAN,CAAc9kB,GAAd,EAAmBX,IAAnB,EAAwB;AACpB0D,IAAAA,GAAG,CAACtC,KAAM,uBAAsBT,GAAI,iCAAjC,CAAH;AACH;;AArDS,CAAd;AAwDA,IAAIolB,UAAU,GAAG;AACb,QAAM3B,MAAN,CAAapkB,IAAb,EAAkB;AACd,SAAK6Q,KAAL,GAAa7Q,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,MAAkB,YAA/B;AACA,SAAK9B,MAAL,GAAcjiB,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,MAAkB,SAAhC;AACH,GAJY;;AAKb,QAAMiC,MAAN,CAAahmB,IAAb,EAAkB;AACd,QAAIimB,GAAG,GAAI,iCAAgC,KAAKpV,KAAM,wEAAuE,KAAKoR,MAAO,sIAA/H,CAAqQrgB,KAArQ,CAA2Q,GAA3Q,CAAV;AACA8B,IAAAA,GAAG,CAACtC,KAAM,6BAA4B,KAAKyP,KAAM,iBAAgB,KAAKoR,MAAO,oBAA1E,CAAH;;AAEA,QAAG;AACC,UAAI;AAACze,QAAAA;AAAD,UAAY,MAAMnB,KAAK,CAAC4jB,GAAG,CAAC,CAAD,CAAJ,EAASA,GAAG,CAACte,KAAJ,CAAU,CAAV,CAAT,CAA3B;AACAjE,MAAAA,GAAG,CAACtC,KAAM,4BAA2BoC,OAAQ,IAA1C,CAAH;AACH,KAHD,CAGC,OAAM3D,CAAN,EAAQ;AACL,UAAGA,CAAC,CAACC,IAAF,KAAW,QAAd,EAAwB,MAAMD,CAAN;AACxB6D,MAAAA,GAAG,CAACtC,KAAM,gHAAP,CAAH;AACA;AACH;AACJ;;AAjBY,CAAjB;;AAoBA,eAAe8kB,gBAAf,CAAgCze,GAAhC,EAAqC0e,iBAAiB,GAAC/b,SAAvD,EAAiE;AAC7D3C,EAAAA,GAAG,GAAGA,GAAG,CAACZ,IAAJ,EAAN;;AACA,MAAGY,GAAG,CAACnC,UAAJ,CAAe,GAAf,CAAH,EAAuB;AACnBmC,IAAAA,GAAG,GAAGA,GAAG,CAACE,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,CAAN;AACH;;AACD,MAAIiR,KAAJ;;AACA,MAAGA,KAAK,GAAG,+BAA+BlR,IAA/B,CAAoCD,GAApC,CAAX,EAAoD;AAChD,QAAGmR,KAAK,CAAC,CAAD,CAAL,KAAa,GAAhB,EAAoB;AAChB,UAAI/O,GAAG,GAAG,MAAMgI,MAAM,CAACrF,OAAP,CAAeoM,KAAK,CAAC,CAAD,CAApB,EAAyBA,KAAK,CAAC,CAAD,CAA9B,CAAhB,CADgB;;AAGhB,aAAO/O,GAAP;AACH,KAJD,MAIM,IAAG+O,KAAK,CAAC,CAAD,CAAL,KAAa,GAAhB,EAAoB;AACtB,aAAO,MAAM7G,IAAI,CAACvF,OAAL,CAAaoM,KAAK,CAAC,CAAD,CAAlB,EAAuBA,KAAK,CAAC,CAAD,CAA5B,CAAb;AACH,KAFK,MAED;AACD,aAAO,IAAP;AACH;AACJ,GAVD,MAUM,IAAGA,KAAK,GAAG,2CAA2ClR,IAA3C,CAAgDD,GAAhD,CAAX,EAAgE;AAClE,QAAG;AACC,cAAOmR,KAAK,CAAC,CAAD,CAAZ;AACI,aAAK,SAAL;AAAgB,iBAAO,IAAI/G,MAAJ,CAAW;AAACvQ,YAAAA,IAAI,EAAEmG,GAAP;AAAY4P,YAAAA,UAAU,EAAEuB,KAAK,CAAC,CAAD;AAA7B,WAAX,CAAP;;AAChB,aAAK,OAAL;AAAc,iBAAO,IAAI7G,IAAJ,CAAS;AAACzQ,YAAAA,IAAI,EAAEmG,GAAP;AAAY4P,YAAAA,UAAU,EAAEuB,KAAK,CAAC,CAAD;AAA7B,WAAT,CAAP;;AACd,aAAK,UAAL;AAAiB,iBAAO,MAAM/G,MAAM,CAACuG,YAAP,CAAoB3Q,GAApB,EAAyBmR,KAAK,CAAC,CAAD,CAA9B,CAAb;AAHrB;AAKH,KAND,CAMC,OAAM/Y,CAAN,EAAQ;AACL6D,MAAAA,GAAG,CAAC7D,CAAD,CAAH;AACH;AACJ,GAVK,MAUD;AACD,WAAO,IAAP;AACH;AACJ;;AAED,IAAIumB,MAAM,GAAG;AACT,QAAMhC,MAAN,CAAapkB,IAAb,EAAkB;AACd,SAAKoE,GAAL,GAAWpE,IAAI,CAACoE,GAAhB;AACA,QAAG,CAAC,KAAKA,GAAT,EAAc,MAAM,IAAI0C,UAAJ,CAAe,iBAAf,CAAN;AACjB,GAJQ;;AAKT,QAAM6d,KAAN,CAAY3kB,IAAZ,EAAiB;AACb0D,IAAAA,GAAG,CAAC,YAAD,CAAH;AACA,QAAI2iB,IAAI,GAAG,MAAMlG,GAAG,CAACnT,MAAJ,CAAW,KAAK5I,GAAhB,CAAjB;AACA,QAAG/E,YAAY,CAACygB,SAAhB,EAA2B,OAAOuG,IAAP;AAE3B3iB,IAAAA,GAAG,CAACtC,KAAM,WAAUilB,IAAI,CAACpe,MAAO,oBAAmB,KAAK7D,GAAI,IAAzD,CAAH;AACAiiB,IAAAA,IAAI,CAAC7a,GAAL,CAAS0B,IAAT,CAAc,CAACuF,CAAD,EAAIC,CAAJ,KAAU;AACpB,aAAOzJ,MAAM,CAACwJ,CAAC,CAACnL,IAAF,CAAOqL,UAAP,CAAkBqL,SAAnB,CAAN,GAAsC/U,MAAM,CAACyJ,CAAC,CAACpL,IAAF,CAAOqL,UAAP,CAAkBqL,SAAnB,CAAnD;AACH,KAFD;;AAGA,SAAI,IAAIsI,GAAR,IAAeD,IAAf,EAAqB3iB,GAAG,CAAC4iB,GAAG,CAACpa,UAAJ,EAAD,CAAH;AACxB,GAfQ;;AAgBT,QAAMsY,OAAN,CAAcxkB,IAAd,EAAmB;AACf,WAAOmgB,GAAG,CAACG,MAAJ,CAAW,KAAKlc,GAAhB,EAAqBpE,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAArB,CAAP;AACH;;AAlBQ,CAAb;AAqBA,IAAIwC,SAAS,GAAG;AACZ,QAAMnC,MAAN,CAAapkB,IAAb,EAAkB;AACd,SAAKoE,GAAL,GAAWpE,IAAI,CAACoE,GAAhB;AACA,QAAG,CAAC,KAAKA,GAAT,EAAc,MAAM,IAAI0C,UAAJ,CAAe,iBAAf,CAAN;AACd,SAAKkd,KAAL,GAAa,MAAMH,gBAAgB,CAAC7jB,IAAD,CAAnC;AACH,GALW;;AAOZ;AACA,QAAMwmB,KAAN,CAAYxmB,IAAZ,EAAiB;AACb,QAAIO,IAAI,GAAGP,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAAX;;AACA,QAAI0C,QAAQ,GAAGzmB,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAAf;;AACA,QAAG,CAACxjB,IAAJ,EAAS;AACL,YAAM,IAAIuG,UAAJ,CAAe,gCAAf,CAAN;AACH;;AAED,QAAGvG,IAAI,KAAK,GAAZ,EAAgB;AACZmD,MAAAA,GAAG,CAACtC,KAAM,oBAAP,CAAH;AACA,WAAKslB,KAAL,GAAa,IAAIvI,WAAJ,EAAb;AACA,WAAKuI,KAAL,CAAWja,MAAX,GAAoBzM,IAAI,CAACoE,GAAzB;AACH,KAJD,MAIK;AACD,UAAIwa,KAAK,GAAG,MAAM7M,IAAI,CAAC/E,MAAL,CAAY,KAAK5I,GAAjB,CAAlB;AACA,UAAIuiB,IAAJ,EAAUjkB,KAAV;AACAA,MAAAA,KAAK,GAAGkc,KAAK,CAAC5S,kBAAN,CAAyBzL,IAAzB,CAAR;AACA,UAAGkmB,QAAH,EAAaE,IAAI,GAAG/H,KAAK,CAAC5S,kBAAN,CAAyBya,QAAzB,CAAP;;AAEb,UAAG,CAAC/jB,KAAJ,EAAU;AACN,cAAM,IAAIoE,UAAJ,CAAe1F,KAAM,wCAAuCb,IAAK,GAAjE,CAAN;AACH;;AACDmD,MAAAA,GAAG,CAACtC,KAAM,2BAA0BsB,KAAK,CAACwJ,UAAN,CAAiB,KAAjB,CAAwB,MAAKya,IAAI,GAAGA,IAAI,CAACza,UAAL,CAAgB,KAAhB,CAAH,GAA4B,QAAS,EAAvG,CAAH;AACA,WAAKwa,KAAL,GAAa,IAAIvI,WAAJ,CAAgBzb,KAAhB,EAAuBikB,IAAvB,CAAb;AACH;;AAED,UAAM,KAAKD,KAAL,CAAWlI,SAAX,EAAN;AACA,WAAO,MAAM,KAAKoI,UAAL,CAAgB5mB,IAAhB,CAAb;AACH,GAlCW;;AAmCZ,QAAM4mB,UAAN,CAAiB5mB,IAAjB,EAAsB;AAClB;AACA,QAAGA,IAAI,CAAC,IAAD,CAAP,EAAc;AACV,WAAK0mB,KAAL,CAAWhjB,GAAX;;AACA,UAAG,KAAKgjB,KAAL,CAAW7H,OAAX,CAAmBrT,GAAnB,CAAuB,CAAvB,CAAH,EAA6B;AACzB,cAAM,KAAKkb,KAAL,CAAWpI,kBAAX,CAA8B,KAAKoI,KAAL,CAAW7H,OAAzC,CAAN;AACAnb,QAAAA,GAAG,CAAC,MAAD,CAAH;AACH;;AAED,UAAGsR,KAAK,CAACvH,OAAN,CAAczN,IAAI,CAAC,IAAD,CAAlB,CAAH,EAA6B;AACzB,aAAI,IAAI6mB,EAAR,IAAc7mB,IAAI,CAAC,IAAD,CAAlB,EAAyB;AACrB,gBAAM,KAAK0mB,KAAL,CAAW1G,MAAX,CAAkB6G,EAAlB,CAAN;AACH;AACJ,OAJD,MAIK;AACD,cAAM,KAAKH,KAAL,CAAW1G,MAAX,CAAkBhgB,IAAI,CAAC,IAAD,CAAtB,CAAN;AACH;AAEJ,KAfD,MAeM,IAAGA,IAAI,CAAC,QAAD,CAAP,EAAkB;AACpB,UAAGgV,KAAK,CAACvH,OAAN,CAAczN,IAAI,CAAC,QAAD,CAAlB,CAAH,EAAiC;AAC7B,aAAI,IAAI6mB,EAAR,IAAc7mB,IAAI,CAAC,QAAD,CAAlB,EAA6B;AACzB,gBAAM,KAAK0mB,KAAL,CAAW3G,QAAX,CAAoB8G,EAApB,CAAN;AACH;AACJ,OAJD,MAIK;AACD,cAAM,KAAKH,KAAL,CAAW3G,QAAX,CAAoB/f,IAAI,CAAC,QAAD,CAAxB,CAAN;AACH;AACJ,KARK,MAQA,IAAGA,IAAI,CAAC,MAAD,CAAP,EAAgB;AAClB;AACA,UAAIoE,GAAG,GAAGpE,IAAI,CAAC,MAAD,CAAd;AACA,YAAMuC,OAAO,CAACyE,GAAR,CAAY,KAAK0f,KAAL,CAAW7H,OAAX,CAAmBrT,GAAnB,CAAuBxH,GAAvB,CAA2B5D,GAAG,IAAIA,GAAG,CAACqZ,YAAJ,EAAlC,CAAZ,CAAN;AACA,YAAMlX,OAAO,CAACyE,GAAR,CAAY,KAAK0f,KAAL,CAAW7H,OAAX,CAAmBrT,GAAnB,CAAuBxH,GAAvB,CAA2B5D,GAAG,IAAIA,GAAG,CAACoC,OAAJ,EAAlC,CAAZ,CAAN;AAEA,UAAIskB,YAAY,GAAG,MAAMvkB,OAAO,CAACyE,GAAR,CAAY,KAAK0f,KAAL,CAAW7H,OAAX,CAAmBrT,GAAnB,CAAuBxH,GAAvB,CAA2B5D,GAAG,IAAIyR,MAAM,CAAChF,SAAP,CAAiBzI,GAAjB,EAAsBhE,GAAG,CAACG,IAA1B,CAAlC,CAAZ,CAAzB;AACAumB,MAAAA,YAAY,GAAG,IAAIvb,UAAJ,CAAeub,YAAY,CAACha,MAAb,CAAoBhB,CAAC,IAAIA,CAAzB,CAAf,CAAf;AACA,YAAMvJ,OAAO,CAACyE,GAAR,CAAY8f,YAAY,CAACtb,GAAb,CAAiBxH,GAAjB,CAAqB5D,GAAG,IAAIA,GAAG,CAACqZ,YAAJ,EAA5B,CAAZ,CAAN;AACA,YAAMlX,OAAO,CAACyE,GAAR,CAAY8f,YAAY,CAACtb,GAAb,CAAiBxH,GAAjB,CAAqB5D,GAAG,IAAIA,GAAG,CAACoC,OAAJ,EAA5B,CAAZ,CAAN;;AAEA,YAAMukB,YAAY,GAAG,CAACxR,MAAD,EAASyR,WAAT,KAAyB;AAC1CtjB,QAAAA,GAAG,CAAC6R,MAAM,CAACrJ,UAAP,CAAkB,IAAlB,CAAD,CAAH;;AACA,YAAG8a,WAAW,CAACzmB,IAAf,EAAoB;AAChBmD,UAAAA,GAAG,CAACsjB,WAAW,CAAC9a,UAAZ,CAAuB,IAAvB,CAAD,CAAH;AACH,SAFD,MAEK;AACDxI,UAAAA,GAAG,CAACtC,KAAM,cAAP,CAAH;AACH;AACJ,OAPD;;AASA,WAAI,IAAImU,MAAR,IAAkB,KAAKmR,KAAL,CAAW7H,OAA7B,EAAqC;AACjC,YAAImI,WAAW,GAAGF,YAAY,CAACtb,GAAb,CAAiBK,IAAjB,CAAsBC,CAAC,IAAIA,CAAC,CAACvL,IAAF,KAAWgV,MAAM,CAAChV,IAA7C,KAAsD,EAAxE;AAEAgV,QAAAA,MAAM,CAACzV,IAAP,GAAmByV,MAAM,CAACzV,IAAP,CAAYqB,OAAZ,CAAoB,SAApB,EAA+B,EAA/B,CAAnB;AACA6lB,QAAAA,WAAW,CAAClnB,IAAZ,GAAmB,CAACknB,WAAW,CAAClnB,IAAZ,IAAoB,EAArB,EAAyBqB,OAAzB,CAAiC,SAAjC,EAA4C,EAA5C,CAAnB;;AAEA,YAAGoU,MAAM,CAACzV,IAAP,KAAgBknB,WAAW,CAAClnB,IAA/B,EAAoC;AAChC,cAAG,CAACE,IAAI,CAAC,aAAD,CAAR,EAAwB;AACpB+mB,YAAAA,YAAY,CAACxR,MAAD,EAASyR,WAAT,CAAZ;AACAtjB,YAAAA,GAAG,CAAC,WAAD,CAAH;AACH;AACJ,SALD,MAKK;AACDqjB,UAAAA,YAAY,CAACxR,MAAD,EAASyR,WAAT,CAAZ;;AACA,cAAGhnB,IAAI,CAAC,aAAD,CAAP,EAAuB;AACnB0D,YAAAA,GAAG,CAAC,SAAD,CAAH;AACH,WAFD,MAEK;AACDA,YAAAA,GAAG,CAAC,gBAAD,CAAH;AACH;AACJ;AACJ;AAEJ,KAzCK,MAyCD;AACD,aAAO,MAAM,KAAKgjB,KAAL,CAAWhjB,GAAX,EAAb;AACH;AAEJ,GAzGW;;AA0GZ,QAAMujB,KAAN,CAAYjnB,IAAZ,EAAiB;AACb,QAAImC,GAAG,GAAG,IAAI+c,GAAJ,EAAV;AACA,QAAIgI,KAAK,GAAGlnB,IAAI,CAACmnB,IAAL,GAAanS,KAAK,CAACvH,OAAN,CAAczN,IAAI,CAACmnB,IAAnB,IAA2BnnB,IAAI,CAACmnB,IAAhC,GAAuC,CAACnnB,IAAI,CAACmnB,IAAN,CAApD,GAAmE,EAA/E,CAFa;;AAIb,SAAI,IAAIA,IAAR,IAAgBD,KAAhB,EAAsB;AAClB,UAAGC,IAAI,KAAK,aAAZ,EAA0B;AACtBzjB,QAAAA,GAAG,CAAC,UAAD,CAAH;AACA,cAAMmO,MAAM,CAAC7E,MAAP,CAAc,KAAd,CAAN;AACH;AACJ;;AAED,SAAI,IAAIzN,IAAR,IAAgB,KAAKykB,KAArB,EAA2B;AACvB7hB,MAAAA,GAAG,CAACqd,GAAJ,EAAQ,MAAM0G,gBAAgB,CAAC3mB,IAAD,CAA9B;AACH;;AACD,QAAIykB,KAAK,GAAG,CAAC,GAAG7hB,GAAJ,CAAZ;AACA6hB,IAAAA,KAAK,GAAGA,KAAK,CAAClX,MAAN,CAAasE,CAAC,IAAIA,CAAC,IAAI,CAACA,CAAC,CAACwG,OAA1B,CAAR;AACA,SAAK8O,KAAL,GAAa,IAAIvI,WAAJ,EAAb;AAEA,SAAKuI,KAAL,CAAW9H,KAAX,GAAmB,IAAIrT,UAAJ,CAAeyY,KAAK,CAAClX,MAAN,CAAasE,CAAC,IAAIA,CAAC,YAAYW,IAA/B,CAAf,CAAnB;AACA,SAAK2U,KAAL,CAAW7H,OAAX,GAAqB,IAAItT,UAAJ,CAAeyY,KAAK,CAAClX,MAAN,CAAasE,CAAC,IAAIA,CAAC,YAAYS,MAA/B,CAAf,CAArB;AACA,SAAK6U,KAAL,CAAWxJ,aAAX,GAA2B,IAAI3R,UAAJ,CAAe,EAAf,CAA3B;AAEA,WAAO,MAAM,KAAKqb,UAAL,CAAgB5mB,IAAhB,CAAb;AACH,GAjIW;;AAkIZ,QAAMylB,OAAN,CAAc9kB,GAAd,EAAmBX,IAAnB,EAAwB;AACpB0D,IAAAA,GAAG,CAACtC,KAAM,uBAAsBT,GAAI,mCAAjC,CAAH;AACH;;AApIW,CAAhB;;AAuIA,SAASymB,UAAT,CAAoBC,MAApB,EAA2B;AACvBA,EAAAA,MAAM,GAAG;AACLjD,IAAAA,MAAM,GAAE,EADH;;AACOkD,IAAAA,KAAK,GAAE,EADd;;AACkB7B,IAAAA,OAAO,GAAE,EAD3B;;AAEL,OAAG4B;AAFE,GAAT;AAIA,SAAO,gBAAernB,IAAf,EAAoB;AACvB;AACA,QAAIW,GAAG,GAAGX,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAAV;;AACA,QAAIviB,GAAG,GAAG,MAAMb,GAAhB;AACA,QAAIkJ,GAAJ;;AACA,QAAGwd,MAAM,CAAC7lB,GAAD,CAAT,EAAe;AACX,YAAM6lB,MAAM,CAACjD,MAAP,CAAcpkB,IAAd,CAAN;AACA6J,MAAAA,GAAG,GAAG,MAAMwd,MAAM,CAAC7lB,GAAD,CAAN,CAAYxB,IAAZ,CAAZ;AACA,YAAMqnB,MAAM,CAACC,KAAP,CAAatnB,IAAb,CAAN;AACH,KAJD,MAIK;AACD,UAAGW,GAAG,KAAKyJ,SAAX,EAAsBzJ,GAAG,GAAG,QAAN;AACtB0mB,MAAAA,MAAM,CAAC5B,OAAP,CAAe9kB,GAAf,EAAoBX,IAApB;AACH;;AACD,WAAO6J,GAAP;AACH,GAdD;AAeH;;AAED,IAAI0d,GAAG,WACF/mB,QAAQ,CAAE,uBAAF,CADN,UAEFU,KAAK,CAAE,sBAAF,CAFH,UAGFF,KAAK,CAAC,SAAD,EAAY,yCAAZ,CAHH,UAoBFR,QAAQ,CAAC,kEAAD,CApBN,UAqBFU,KAAK,CAAC,gCAAD,CArBH,UAsBFF,KAAK,CAAC,QAAD,EAAW,sEAAX,CAtBH,UAgCFR,QAAQ,CAAE,wBAAF,CAhCN,UAiCFU,KAAK,CAAE,6EAAF,CAjCH,UAkCFF,KAAK,CAAC,QAAD,EAAW,gEAAX,CAlCH,WAmCFL,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,mDAAhB,CAnCD,WAoCFA,GAAG,CAAC,IAAD,EAAO,QAAP,EAAiB,kBAAjB,CApCD,WAqCFA,GAAG,CAAC,GAAD,EAAM,WAAN,EAAmB,mEAAnB,CArCD,WA0CFH,QAAQ,CAAE,sBAAF,CA1CN,WA2CFU,KAAK,CAAE,yCAAF,CA3CH,WA4CFF,KAAK,CAAC,QAAD,EAAW,yDAAX,CA5CH,WA6CFL,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,mDAAhB,CA7CD,WAkDFH,QAAQ,CAAE,8BAAF,CAlDN,WAmDFU,KAAK,CAAE,uEAAF,CAnDH,WAoDFF,KAAK,CAAC,QAAD,EAAW,6CAAX,CApDH,WAqDFA,KAAK,CAAC,YAAD,EAAe,wIAAf,CArDH,WAsDFA,KAAK,CAAC,cAAD,EAAiB,uEAAjB,CAtDH,WAuDFL,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,kDAAhB,CAvDD,WAwDFA,GAAG,CAAC,GAAD,EAAM,QAAN,EAAgB,wFAAhB,CAxDD,WAyDFA,GAAG,CAAC,GAAD,EAAM,MAAN,EAAc,wDAAd,CAzDD,WA0DFA,GAAG,CAAC,GAAD,EAAM,UAAN,EAAkB,wGAAlB,CA1DD,WA+DFH,QAAQ,CAAE,YAAF,CA/DN,WAgEFU,KAAK,CAAE,qBAAF,CAhEH,WAiEFF,KAAK,CAAC,QAAD,EAAW,+CAAX,CAjEH,WAkEFL,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,mDAAhB,CAlED,WAuEFH,QAAQ,CAAE,2BAAF,CAvEN,WAwEFU,KAAK,CAAE,8BAAF,CAxEH,WAyEFF,KAAK,CAAC,OAAD,EAAU,oDAAV,CAzEH,WA0EFL,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,mDAAhB,CA1ED,WAkGFH,QAAQ,CAAE,sDAAF,CAlGN,WAmGFU,KAAK,CAAE,gDAAF,CAnGH,WAoGFF,KAAK,CAAC,YAAD,EAAe,uCAAf,CApGH,WAqGFL,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,mDAAhB,CArGD,WAsGFA,GAAG,CAAC,GAAD,EAAM,OAAN,EAAe,8EAAf,CAtGD,WAuIFH,QAAQ,CAAE,+BAAF,CAvIN,WAwIFU,KAAK,CAAC,wCAAD,CAxIH,WAyIFF,KAAK,CAAC,KAAD,EAAQI,KAAM,qEAAd,CAzIH,WA0IFT,GAAG,CAAC,GAAD,EAAM,OAAN,EAAe,8FAAf,CA1ID,WA2IFA,GAAG,CAAC,GAAD,EAAM,OAAN,EAAe,2BAAf,CA3ID,WAmMFH,QAAQ,CAAE,qBAAF,CAnMN,WAoMFU,KAAK,CAAC,kCAAD,CApMH,WAqMFF,KAAK,CAAC,QAAD,EAAWI,KAAM,8IAAjB,CArMH,WAsMFT,GAAG,CAAE,IAAF,EAAQ,MAAR,EAAuBS,KAAM,6BAA7B,CAtMD,WAuMFT,GAAG,CAAE,IAAF,EAAQ,QAAR,EAAuBS,KAAM,iHAA7B,CAvMD,WAwMFT,GAAG,CAAE,GAAF,EAAQ,QAAR,EAAuBS,KAAM,uEAA7B,CAxMD,WAyMFT,GAAG,CAAE,IAAF,EAAQ,YAAR,EAAuBS,KAAM,wDAA7B,CAzMD,WA0MFT,GAAG,CAAE,GAAF,EAAQ,aAAR,EAAuBS,KAAM,yFAA7B,CA1MD,WA2MFT,GAAG,CAAE,GAAF,EAAQ,cAAR,EAAuBS,KAAM,gCAA7B,CA3MD,WA4MFT,GAAG,CAAE,GAAF,EAAQ,YAAR,EAAuBS,KAAM,4EAA7B,CA5MD,WA6MFT,GAAG,CAAE,GAAF,EAAQ,YAAR,EAAuBS,KAAM,kQAA7B,CA7MD,WA8MFT,GAAG,CAAE,GAAF,EAAQ,YAAR,EAAuBS,KAAM,uCAA7B,CA9MD,WA+MFT,GAAG,CAAE,GAAF,EAAQ,YAAR,EAAwBS,KAAM,kBAA9B,CA/MD,UAAG;AAIN,QAAMwiB,IAAN,CAAW5jB,IAAX,EAAgB;AACZ,QAAIW,GAAG,GAAGX,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAAV;;AACA,QAAGpjB,GAAH,EAAO;AACH,UAAIijB,IAAI,GAAGvjB,WAAW,CAACM,GAAD,CAAtB;;AACA,UAAG,CAACijB,IAAJ,EAAS;AACLlgB,QAAAA,GAAG,CAACtC,KAAM,2BAA0BT,GAAI,IAArC,CAAH;AACH,OAFD,MAEK;AACD+C,QAAAA,GAAG,CAACigB,SAAS,CAACtjB,WAAW,CAACM,GAAD,CAAZ,CAAV,CAAH;AACH;AACJ,KAPD,MAOK;AACD,WAAI,IAAI6mB,OAAR,IAAmBnnB,WAAnB,EAA+B;AAC3BqD,QAAAA,GAAG,CAACigB,SAAS,CAACtjB,WAAW,CAACmnB,OAAD,CAAZ,EAAuB,IAAvB,CAAV,CAAH;AACH;AACJ;AACJ,GAlBK;;AAuBN,QAAMC,OAAN,CAAcznB,IAAd,EAAmB;AACf,WAAOonB,UAAU,CAACrB,UAAD,CAAV,CAAuB/lB,IAAvB,CAAP;AACH,GAzBK;;AA2BN;AACA,QAAM0nB,SAAN,CAAgB1nB,IAAhB,EAAqB;AACjB0D,IAAAA,GAAG,CAAC1D,IAAD,CAAH;AACH,GA9BK;;AAsCN,QAAMuV,MAAN,CAAavV,IAAb,EAAkB;AACd,WAAOonB,UAAU,CAACjD,SAAD,CAAV,CAAsBnkB,IAAtB,CAAP;AACH,GAxCK;;AA8CN,QAAMigB,IAAN,CAAWjgB,IAAX,EAAgB;AACZ,WAAOonB,UAAU,CAAC1B,OAAD,CAAV,CAAoB1lB,IAApB,CAAP;AACH,GAhDK;;AA2DN,QAAM2nB,MAAN,CAAa3nB,IAAb,EAAkB;AACd,WAAOonB,UAAU,CAACb,SAAD,CAAV,CAAsBvmB,IAAtB,CAAP;AACH,GA7DK;;AAmEN,QAAMsmB,GAAN,CAAUtmB,IAAV,EAAe;AACX,WAAOonB,UAAU,CAAChB,MAAD,CAAV,CAAmBpmB,IAAnB,CAAP;AACH,GArEK;;AA2EN,QAAM8hB,KAAN,CAAY9hB,IAAZ,EAAiB;AACb,QAAI4nB,KAAK,GAAG5nB,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAAZ;;AACA,QAAG,CAAC6D,KAAJ,EAAW,MAAM,IAAI9gB,UAAJ,CAAe,WAAf,CAAN;AACX,QAAG,CAAC9G,IAAI,CAACoE,GAAT,EAAc,MAAM,IAAI0C,UAAJ,CAAe,QAAf,CAAN;;AACd,QAAI+gB,EAAE,GAAG7nB,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAAT;;AACA,QAAG,CAAC8D,EAAJ,EAAO;AACHnkB,MAAAA,GAAG,CAAC,UAAD,CAAH;AACA,UAAIokB,SAAS,GAAG,MAAM5F,UAAU,CAACliB,IAAI,CAACoE,GAAN,EAAWwjB,KAAX,CAAhC;;AAEA,WAAI,IAAIpG,IAAR,IAAgBsG,SAAhB,EAA0B;AACtB,YAAG,OAAOtG,IAAP,IAAgB,QAAnB,EAA4B;AACxB9d,UAAAA,GAAG,CAACtC,KAAK,CAAC6C,GAAN,CAAUud,IAAV,CAAD,CAAH;AACH,SAFD,MAEK;AACDG,UAAAA,YAAY,CAACH,IAAD,CAAZ;AACH;AACJ;AACJ,KAXD,MAWK;AACD9d,MAAAA,GAAG,CAAC,OAAD,CAAH;AACA,UAAI;AAAC+c,QAAAA;AAAD,UAAmB,MAAMsH,OAAY,CAAC/nB,IAAI,CAACoE,GAAN,EAAWwjB,KAAX,CAAzC;AACA,aAAOpH,cAAc,CAACC,cAAD,EAAiBxX,MAAM,CAAC4e,EAAD,CAAvB,CAArB;AACH;AACJ,GAhGK;;AAuGN,QAAMtX,SAAN,CAAgBvQ,IAAhB,EAAqB;AACjB,QAAIoE,GAAG,GAAGpE,IAAI,CAACoE,GAAf;AACA,QAAG,CAACA,GAAJ,EAAS,OAAOL,QAAQ,CAAC,kBAAD,CAAf;;AACT,QAAIikB,KAAK,GAAGhoB,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAAZ;;AAEA,QAAIxT,SAAS,GAAG,MAAM4B,QAAQ,CAACnF,MAAT,CAAgB5I,GAAhB,CAAtB;;AAEA,QAAG4jB,KAAH,EAAS;AACL,UAAIC,GAAG,GAAG1X,SAAS,CAAC/E,GAAV,CAAcK,IAAd,CAAmBC,CAAC,IAAIA,CAAC,CAACF,EAAF,IAAQoc,KAAR,IAAiBlc,CAAC,CAACvL,IAAF,CAAOkG,QAAP,CAAgBuhB,KAAhB,CAAzC,CAAV;;AACA,UAAG,CAACC,GAAJ,EAAQ;AACJvkB,QAAAA,GAAG,CAACtC,KAAM,oCAAmC4mB,KAAM,GAAhD,CAAH;AACH,OAFD,MAEK;AACDtkB,QAAAA,GAAG,CAACukB,GAAG,CAAC/b,UAAJ,CAAe,KAAf,CAAD,CAAH;AACA,YAAIgc,OAAO,GAAG,MAAMD,GAAG,CAAC5V,eAAJ,EAApB;;AACA,YAAGrS,IAAI,CAACmoB,GAAR,EAAY;AACR,iBAAOF,GAAP;AACH,SAFD,MAEK;AACD,cAAGC,OAAO,CAAC1nB,QAAR,CAAiByH,MAAjB,GAA0B,GAA7B,EAAiC;AAC7BigB,YAAAA,OAAO,CAAC1nB,QAAR,GAAmB,uBAAnB;AACH;;AACD,cAAG0nB,OAAO,CAACE,WAAR,CAAoBngB,MAApB,GAA6B,CAAhC,EAAkC;AAC9BigB,YAAAA,OAAO,CAACE,WAAR,GAAsB,uBAAtB;AACH;;AACD1kB,UAAAA,GAAG,CAACwkB,OAAD,CAAH;AACH;AACJ;AACJ,KAnBD,MAmBK;AACD,UAAGloB,IAAI,CAACmoB,GAAR,EAAa,OAAO5X,SAAP;;AACb,WAAI,IAAI0X,GAAR,IAAe1X,SAAf,EAA0B7M,GAAG,CAACukB,GAAG,CAAC/b,UAAJ,EAAD,CAAH;AAC7B;AACJ,GArIK;;AA4IN,QAAMhM,MAAN,CAAaF,IAAb,EAAkB;AACd,QAAIqoB,IAAI,GAAGroB,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAAX;;AACA,QAAItV,SAAS,GAAG4Z,IAAI,IAAIA,IAAI,CAACzmB,KAAL,CAAW,GAAX,CAAxB,CAFc;;AAKd,QAAI0mB,eAAJ;;AAEA,QAAG,CAACD,IAAJ,EAAS;AACL,UAAGhpB,YAAY,CAACygB,SAAhB,EAA2B,OAAOzgB,YAAP;AAC3BqE,MAAAA,GAAG,CAAC,qBAAD,CAAH;AACA4kB,MAAAA,eAAe,GAAG,EACd,GAAGjpB;AADW,OAAlB;;AAGA,WAAI,IAAIkpB,UAAR,IAAsB9D,aAAtB,EAAoC;AAChC,YAAG8D,UAAU,CAACjjB,UAAX,CAAsB,GAAtB,CAAH,EAA8B;AAC1BgjB,UAAAA,eAAe,GAAG,EACd,GAAGA,eADW;AAEd,gBAAI,MAAM7D,aAAa,CAAC8D,UAAD,CAAb,CAA0B,KAA1B,CAAV;AAFc,WAAlB;AAIH;AACJ;AACJ,KAdD,MAcK;AACD7kB,MAAAA,GAAG,CAACtC,KAAM,yBAAwBinB,IAAK,GAApC,CAAH;;AACA,UAAGroB,IAAI,CAACmC,GAAR,EAAY;AACRmmB,QAAAA,eAAe,GAAG,EACd,GAAGjpB,YADW;AAEd,WAACgpB,IAAD,GAAQroB,IAAI,CAACmC;AAFC,SAAlB;AAIH,OALD,MAKK;AACD,YAAI6lB,KAAK,GAAG,MAAMvZ,SAAS,CAAC,CAAD,CAA3B;;AAEA,YAAGgW,aAAa,CAACuD,KAAD,CAAhB,EAAwB;AACpBM,UAAAA,eAAe,GAAG,EACd,GAAGjpB,YADW;AAEd,gBAAI,MAAMolB,aAAa,CAACuD,KAAD,CAAb,CAAqBvZ,SAArB,CAAV;AAFc,WAAlB;AAIH,SALD,MAKK;AACD/K,UAAAA,GAAG,CAACtC,KAAM,sBAAqB4mB,KAAM,GAAlC,CAAH;AACA;AACH;AACJ;AACJ;;AAEDM,IAAAA,eAAe,CAAC9oB,SAAhB,GAA4B,IAA5B,CA3Cc;;AA8Cd,QAAIgpB,SAAS,GAAG7oB,IAAI,CAAC4F,SAAL,CAAe+iB,eAAf,EAAgC,IAAhC,EAAsC,CAAtC,CAAhB;AACA5kB,IAAAA,GAAG,CAAC8kB,SAAD,CAAH,CA/Cc;;AAkDd,QAAG,CAACxoB,IAAI,CAACyoB,CAAN,IAAW,CAACzoB,IAAI,CAACmC,GAAjB,IAAwB,EAAC,MAAMsiB,WAAA,CAA0B,4BAA1B,CAAP,CAA3B,EAA2F;AAC3F5N,IAAAA,gBAAa,CAAC1X,UAAD,EAAaqpB,SAAb,EAAwB;AAACE,MAAAA,IAAI,EAAE;AAAP,KAAxB,CAAb;AACAhlB,IAAAA,GAAG,CAACtC,KAAM,uBAAsBjC,UAAW,IAAxC,CAAH;AACH,GAjMK;;AAgNN,QAAM4Z,KAAN,CAAY/Y,IAAZ,EAAiB;AACb,aAAS2oB,IAAT,CAAc3oB,IAAd,EAAmB;AACf,YAAM4oB,MAAM,GAAG,EAAf;AACA,aAAO1V,MAAM,CAAC/J,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC0f,MAAL,KAAgB1f,IAAI,CAAC2f,GAAL,CAAS,EAAT,EAAaF,MAAb,CAA3B,CAAD,CAAN,CAAyDzV,QAAzD,CAAkEyV,MAAlE,EAA0E,GAA1E,CAAP;AACH;;AAED,QAAIroB,IAAI,GAAGP,IAAI,CAACO,IAAL,IAAc,QAAzB;AACA,QAAI6D,GAAG,GAAGpE,IAAI,CAACoE,GAAf;AAEA,QAAI2U,KAAJ;;AACA,QAAIpY,GAAG,GAAGX,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAAV;;AACA,QAAG,CAACpjB,GAAJ,EAAQ;AACJ,YAAM,IAAImG,UAAJ,CAAe1F,KAAM,mDAArB,CAAN;AACH;;AAED,QAAGpB,IAAI,CAAC+oB,IAAR,EAAa;AACT/oB,MAAAA,IAAI,CAACyJ,CAAL,CAAO1I,OAAP,CAAeJ,GAAf;AACH,KAFD,MAEM,IAAGA,GAAG,IAAI,QAAV,EAAmB;AACrBJ,MAAAA,IAAI,GAAGA,IAAI,CAACY,OAAL,CAAa,GAAb,EAAkBwnB,IAAI,EAAtB,CAAP;AACA5P,MAAAA,KAAK,GAAG,MAAMhF,KAAK,CAACY,SAAN,CAAgBpU,IAAhB,EAAsB6D,GAAtB,CAAd;AACH,KAHK,MAGD;AACDpE,MAAAA,IAAI,CAACyJ,CAAL,CAAO1I,OAAP,CAAeJ,GAAf;;AACA,UAAGX,IAAI,CAAC4L,EAAR,EAAW;AACPmN,QAAAA,KAAK,GAAGhF,KAAK,CAACC,IAAN,CAAWhU,IAAI,CAAC4L,EAAhB,EAAoBxH,GAApB,CAAR;AACH,OAFD,MAEK;AACD2U,QAAAA,KAAK,GAAG,MAAMhF,KAAK,CAAClH,SAAN,CAAgBzI,GAAhB,EAAqBpE,IAAI,CAACO,IAA1B,CAAd;AACH;AACJ;;AAED,QAAG,CAACwY,KAAD,IAAU,CAAC/Y,IAAI,CAAC+oB,IAAnB,EAAwB;AACpB,YAAM,IAAIjiB,UAAJ,CAAe,wBAAf,CAAN;AACH;;AACD,QAAIkiB,SAAS,GAAG,CAAhB;AACA,QAAIC,OAAO,GAAG,CAAd;;AAEA,QAAIC,QAAQ,GAAG,CAAC9oB,GAAD,EAAM4H,CAAN,KAAYgN,KAAK,CAACvH,OAAN,CAAcrN,GAAd,IAAqBA,GAAG,CAAC4H,CAAD,CAAxB,GAA+BA,CAAC,IAAI,CAAL,GAAS5H,GAAT,GAAegK,SAAzE;;AAEA,WAAMzJ,GAAG,GAAGX,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAAZ,EAA2B;AAEvB,UAAGpjB,GAAG,KAAK,QAAX,EAAoB;AAChB,YAAIwU,QAAQ,GAAG+T,QAAQ,CAAClpB,IAAI,CAAC,WAAD,CAAL,EAAoBgpB,SAApB,CAAvB;;AACA,YAAG7T,QAAQ,IAAIA,QAAQ,CAAC7P,UAAT,CAAoB,GAApB,CAAf,EAAwC;AACpC5B,UAAAA,GAAG,CAACtC,KAAM,iCAAgC+T,QAAQ,CAACxN,KAAT,CAAe,CAAf,CAAkB,GAAzD,CAAH;AACAwN,UAAAA,QAAQ,GAAGzV,eAAY,CAACyV,QAAQ,CAACxN,KAAT,CAAe,CAAf,CAAD,EAAoB,OAApB,CAAvB;AACH;;AAED,YAAIuN,OAAO,GAAGgU,QAAQ,CAAClpB,IAAI,CAAC,UAAD,CAAL,EAAmBgpB,SAAnB,CAAtB;AACA,YAAIpJ,CAAC,GAAG,MAAM7N,IAAI,CAAClF,SAAL,CAAezI,GAAf,EAAoB8Q,OAApB,CAAd;;AACA,YAAG,CAAC0K,CAAJ,EAAM;AACF,gBAAM,IAAI9Y,UAAJ,CAAgB,qBAAoBoO,OAAQ,sBAA5C,CAAN;AACH,SAFD,MAEK;AACDxR,UAAAA,GAAG,CAACtC,KAAM,aAAYwe,CAAC,CAAC1T,UAAF,CAAa,KAAb,CAAoB,OAAM6M,KAAK,GAAGA,KAAK,CAAC7M,UAAN,CAAiB,KAAjB,CAAH,GAA6B,QAAS,EAAxF,CAAH;AACH;;AAED,YAAG6M,KAAH,EAAS;AACL,gBAAMA,KAAK,CAAC9D,aAAN,CAAoBC,OAApB,EAA6B;AAACC,YAAAA,QAAD;AAAWC,YAAAA,QAAQ,EAAEpV,IAAI,CAACoV;AAA1B,WAA7B,CAAN;AACH,SAFD,MAEK;AACD,gBAAMrB,KAAK,CAACsB,iBAAN,CAAwBjR,GAAxB,EAA6B8Q,OAA7B,EAAsC;AAACC,YAAAA,QAAD;AAAWC,YAAAA,QAAQ,EAAEpV,IAAI,CAACoV;AAA1B,WAAtC,CAAN;AACH;;AACD4T,QAAAA,SAAS;AACZ,OArBD,MAqBM,IAAGroB,GAAG,KAAK,gBAAX,EAA4B;AAC9B,YAAIwU,QAAQ,GAAG+T,QAAQ,CAAClpB,IAAI,CAAC,WAAD,CAAL,EAAoBgpB,SAApB,CAAvB;;AACA,YAAG7T,QAAQ,IAAIA,QAAQ,CAAC7P,UAAT,CAAoB,GAApB,CAAf,EAAwC;AACpC5B,UAAAA,GAAG,CAACtC,KAAM,iCAAgC+T,QAAQ,CAACxN,KAAT,CAAe,CAAf,CAAkB,GAAzD,CAAH;AACAwN,UAAAA,QAAQ,GAAGzV,eAAY,CAACyV,QAAQ,CAACxN,KAAT,CAAe,CAAf,CAAD,EAAoB,OAApB,CAAvB;AACH;;AAED,YAAIuN,OAAO,GAAGgU,QAAQ,CAAClpB,IAAI,CAAC,UAAD,CAAL,EAAmBgpB,SAAnB,CAAtB;AACA,YAAIG,OAAJ;AACA,YAAIC,aAAa,GAAG,KAApB;AACA,YAAIxJ,CAAJ;;AACA,YAAG1K,OAAO,CAAC5P,UAAR,CAAmB,GAAnB,CAAH,EAA2B;AACvB8jB,UAAAA,aAAa,GAAG,IAAhB;AACAD,UAAAA,OAAO,GAAGzpB,eAAY,CAACwV,OAAO,CAACvN,KAAR,CAAc,CAAd,CAAD,CAAtB;AACH,SAHD,MAGK;AACDiY,UAAAA,CAAC,GAAG,MAAM/N,MAAM,CAAChF,SAAP,CAAiBzI,GAAjB,EAAsB8Q,OAAtB,CAAV;;AACA,cAAG,CAAC0K,CAAJ,EAAM;AACF,kBAAM,IAAI9Y,UAAJ,CAAgB,wBAAuBoO,OAAQ,sBAA/C,CAAN;AACH,WAFD,MAEK;AACDxR,YAAAA,GAAG,CAACtC,KAAM,aAAYwe,CAAC,CAAC1T,UAAF,CAAa,KAAb,CAAoB,OAAM6M,KAAK,GAAGA,KAAK,CAAC7M,UAAN,CAAiB,KAAjB,CAAH,GAA6B,QAAS,EAAxF,CAAH;AACH;AACJ;;AAGD,YAAGkd,aAAH,EAAiB;AACb,gBAAMrV,KAAK,CAACuB,2BAAN,CAAkClR,GAAlC,EAAuCwb,CAAC,CAAChU,EAAzC,EAA6CuJ,QAA7C,CAAN;AACH,SAFD,MAEK;AACD,gBAAM4D,KAAK,CAAC5C,aAAN,CAAoByJ,CAAC,CAAChU,EAAtB,EAA0BuJ,QAA1B,CAAN;AACH;;AACD6T,QAAAA,SAAS;AACZ,OA9BK,MA8BA,IAAGroB,GAAG,KAAK,SAAX,EAAqB;AACvB,YAAImU,KAAK,GAAGoU,QAAQ,CAAClpB,IAAI,CAAC,YAAD,CAAL,EAAqBipB,OAArB,CAApB;AACA,YAAIpjB,GAAG,GAAKqjB,QAAQ,CAAClpB,IAAI,CAAC,UAAD,CAAL,EAAmBipB,OAAnB,CAApB;;AACA,YAAGnU,KAAK,KAAK1K,SAAV,IAAuB,CAACvE,GAA3B,EAA+B;AAC3B,gBAAM,IAAIiB,UAAJ,CAAe,kDAAf,CAAN;AACH;;AACD,cAAMiS,KAAK,CAAClE,OAAN,CAAcC,KAAd,EAAqBjP,GAArB,CAAN;AACAnC,QAAAA,GAAG,CAACtC,KAAM,cAAa0T,KAAM,EAA1B,CAAH;AACAmU,QAAAA,OAAO;AACV,OATK,MASA,IAAGtoB,GAAG,KAAK,QAAX,EAAoB;AACtB,cAAMoY,KAAK,CAACrF,MAAN,EAAN;AACH,OAFK,MAEA,IAAG/S,GAAG,KAAK,QAAX,EAAoB;AACtB,cAAM,IAAImG,UAAJ,CAAgB,mDAAhB,CAAN;AACH,OAFK,MAEA,IAAGnG,GAAG,KAAK,MAAR,IAAkBA,GAAG,IAAI,MAA5B,EAAmC;AACrC,YAAGoY,KAAK,CAAC/E,IAAT,EAAe+E,KAAK,GAAG,MAAMhF,KAAK,CAACvH,OAAN,CAAcpI,GAAd,EAAmB2U,KAAK,CAACnN,EAAzB,CAAd;AACf,YAAGjL,GAAG,IAAI,MAAV,EAAkB+C,GAAG,CAACqV,KAAD,CAAH;AACrB,OAHK,MAGA,IAAGpY,GAAG,KAAK,UAAR,IAAsBA,GAAG,KAAK,IAAjC,EAAsC;AACxC+C,QAAAA,GAAG,EAAC,MAAMqV,KAAK,CAAC1E,WAAN,EAAP,EAAH;AACH,OAFK,MAEA,IAAG1T,GAAG,KAAK,eAAX,EAA2B;AAC7B,YAAIwU,QAAQ,GAAG+T,QAAQ,CAAClpB,IAAI,CAAC,UAAD,CAAL,EAAmBgpB,SAAnB,CAAvB;;AACA,YAAG7T,QAAQ,IAAIA,QAAQ,CAAC7P,UAAT,CAAoB,GAApB,CAAf,EAAwC;AACpC5B,UAAAA,GAAG,CAACtC,KAAM,4BAA2B+T,QAAQ,CAACxN,KAAT,CAAe,CAAf,CAAkB,GAApD,CAAH;AACAwN,UAAAA,QAAQ,GAAGzV,eAAY,CAACyV,QAAQ,CAACxN,KAAT,CAAe,CAAf,CAAD,EAAoB,OAApB,CAAvB;AACH;;AAEDwN,QAAAA,QAAQ,GAAGxV,IAAI,CAACC,KAAL,CAAWuV,QAAX,CAAX;AAEA,cAAM4D,KAAK,CAACvE,aAAN,CAAoBW,QAApB,CAAN;AACH,OAVK,MAUA,IAAGxU,GAAG,KAAK,QAAX,EAAoB;AACtB,YAAI2V,OAAO,GAAGtW,IAAI,CAAC,UAAD,CAAlB;AACA,YAAIqpB,OAAO,GAAGtQ,KAAK,CAACxY,IAApB;AACA,cAAMwY,KAAK,CAAC1C,MAAN,CAAaC,OAAb,CAAN;AACA5S,QAAAA,GAAG,CAACtC,KAAM,kBAAiBioB,OAAQ,eAAc/S,OAAQ,GAAtD,CAAH;AACH;AACJ;;AACD,QAAGjX,YAAY,CAACygB,SAAhB,EAA2B,OAAO/G,KAAP;AAC9B,GA9UK;;AAgVN,QAAMuQ,aAAN,CAAoBtpB,IAApB,EAAyB;AACrB,QAAI+Y,KAAK,GAAG/Y,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAAZ;;AACA,QAAIvb,GAAG,GAAG,MAAM+gB,GAAA,CAAmBplB,cAAnB,CAAkC;AAC9CC,MAAAA,GAAG,EAAEpE,IAAI,CAACoE,GADoC;AAC/B9C,MAAAA,IAAI,EAAG,WAAUyX,KAAM;AADQ,KAAlC,CAAhB;AAGA,QAAIyQ,QAAQ,GAAGhhB,GAAG,CAAClB,IAAJ,CAASqL,UAAT,CAAoBsB,QAApB,CAA6BwV,YAA7B,CAA0CD,QAA1C,CAAmDA,QAAlE;AAEA,QAAIE,CAAC,GAAGF,QAAQ,CAACG,MAAT,CAAgB,CAACC,WAAD,EAAcxnB,GAAd,EAAmBynB,GAAnB,KAA2B;AAC/C,UAAIC,UAAU,GAAG1nB,GAAG,CAAC2nB,SAArB;;AACA,UAAGD,UAAU,GAAGF,WAAhB,EAA4B;AACxBlmB,QAAAA,GAAG,CAAC,kBAAkBmmB,GAAG,GAAG,CAAxB,CAAD,CAAH;AACH;;AACD,aAAOznB,GAAG,CAAC4nB,OAAX;AACF,KANM,EAMJ,aANI,CAAR;AAOH,GA9VK;;AAgWN,QAAMC,OAAN,CAAcjqB,IAAd,EAAmB;AACf,QAAIuU,GAAG,GAAG,MAAMgV,GAAA,CAAmBlf,aAAnB,CAAiC;AAC7CjG,MAAAA,GAAG,EAAEpE,IAAI,CAACoE,GADmC;AAC9B9C,MAAAA,IAAI,EAAE,OADwB;AAE7CoD,MAAAA,EAAE,EAAE;AACAoI,QAAAA,MAAM,EAAE;AADR;AAFyC,KAAjC,CAAhB;AAOApJ,IAAAA,GAAG,CAAC6Q,GAAG,CAACvQ,GAAJ,CAAQ8H,CAAC,IAAIA,CAAC,CAAC6B,aAAF,CAAgBoL,KAAhB,CAAsBzR,IAAtB,CAA2BsE,EAAxC,EAA4C2O,IAA5C,CAAiD,IAAjD,CAAD,CAAH;AACH,GAzWK;;AA2WN,QAAM2P,UAAN,CAAiBlqB,IAAjB,EAAuBsmB,GAAvB,EAA2B;AACvB,QAAI/R,GAAG,GAAG,MAAMgV,GAAA,CAAmBlf,aAAnB,CAAiC;AAC7CjG,MAAAA,GAAG,EAAEpE,IAAI,CAACoE,GADmC;AAC9B9C,MAAAA,IAAI,EAAE,SADwB;AAE7CoD,MAAAA,EAAE,EAAE;AACAylB,QAAAA,eAAe,EAAE,IADjB;AAEAjd,QAAAA,IAAI,EAAE;AAFN,OAFyC;AAM7C1D,MAAAA,SAAS,EAAE;AANkC,KAAjC,CAAhB;;AAQA,SAAI,IAAIuP,KAAR,IAAiBxE,GAAjB,EAAqB;AACjB7Q,MAAAA,GAAG,CAACqV,KAAK,CAACnN,EAAP,CAAH;AACH;;AAED,WAAO2I,GAAP;AACH,GAzXK;;AA2XN,QAAM6V,YAAN,CAAmBpqB,IAAnB,EAAwB;AACpB,QAAIoR,CAAC,GAAGzR,IAAI,CAACC,KAAL,CAAWF,eAAY,CAACM,IAAI,CAACT,IAAN,EAAY,OAAZ,CAAvB,CAAR;;AAEA,SAAI,IAAIwZ,KAAR,IAAiB3H,CAAjB,EAAmB;AAAA;;AACf,UAAIsY,CAAC,GAAG,MAAMH,GAAA,CAAmBplB,cAAnB,CAAkC;AAC5CC,QAAAA,GAAG,EAAEpE,IAAI,CAACoE,GADkC;AAC7B9C,QAAAA,IAAI,EAAG,WAAUyX,KAAK,CAACnN,EAAG;AADG,OAAlC,CAAd;AAIA,UAAIye,IAAI,4BAAGX,CAAC,CAACpiB,IAAF,CAAOqL,UAAP,CAAkBsB,QAAlB,CAA2BwV,YAA9B,oFAAG,sBAAyCD,QAA5C,2DAAG,uBAAmDA,QAA9D;;AACA,UAAGa,IAAI,IAAIA,IAAI,CAACpiB,MAAL,GAAc,CAAzB,EAA2B;AACvBvE,QAAAA,GAAG,CAACqV,KAAK,CAACnN,EAAP,CAAH;AACAlI,QAAAA,GAAG,CAACqV,KAAK,CAACxY,IAAP,CAAH;AACH;AACJ;AACJ,GAzYK;;AA0YN,QAAM+pB,KAAN,CAAYtqB,IAAZ,EAAiB;AACb,QAAIuqB,MAAM,GAAG,MAAMhB,GAAA,CAAmBlf,aAAnB,CAAiC;AAChDjG,MAAAA,GAAG,EAAEpE,IAAI,CAACoE,GADsC;AACjC9C,MAAAA,IAAI,EAAE,SAD2B;AAEhDoD,MAAAA,EAAE,EAAE;AACAoI,QAAAA,MAAM,EAAG,iBAAgBoO,IAAI,CAACtY,GAAL,KAAa,OAAO,GAAP,GAAa,EAAb,GAAkB,EAAlB,GAAuB,EAAG,iBAAgBsY,IAAI,CAACtY,GAAL,KAAa,OAAO,GAAP,GAAa,EAAb,GAAkB,EAAlB,GAAuB,EAAG;AADvH;AAF4C,KAAjC,CAAnB;AAOAc,IAAAA,GAAG,CAAC/D,IAAI,CAAC4F,SAAL,CAAeglB,MAAf,EAAuB,IAAvB,EAA6B,CAA7B,CAAD,CAAH;AACH,GAnZK;;AAqZN,QAAMC,KAAN,CAAYxqB,IAAZ,EAAiB;AACb,QAAIuqB,MAAM,GAAG,MAAMhB,GAAA,CAAmBlf,aAAnB,CAAiC;AAChDjG,MAAAA,GAAG,EAAEpE,IAAI,CAACoE,GADsC;AACjC9C,MAAAA,IAAI,EAAE,OAD2B;AAEhDoD,MAAAA,EAAE,EAAE;AACAoI,QAAAA,MAAM,EAAG;AADT;AAF4C,KAAjC,CAAnB;AAOApJ,IAAAA,GAAG,CAAC/D,IAAI,CAAC4F,SAAL,CAAeglB,MAAf,EAAuB,IAAvB,EAA6B,CAA7B,CAAD,CAAH;AACH,GA9ZK;;AA+ZN,QAAME,KAAN,CAAYzqB,IAAZ,EAAiB;AACb,QAAI0qB,GAAG,GAAG,MAAMnB,GAAA,CAAmBxiB,SAAnB,CAA6B;AACzC3C,MAAAA,GAAG,EAAEpE,IAAI,CAACoE,GAD+B;AAC1B9C,MAAAA,IAAI,EAAE;AADoB,KAA7B,CAAhB;AAGAoC,IAAAA,GAAG,CAACgnB,GAAD,CAAH;;AAEA,SAAI,IAAIC,IAAR,IAAgBD,GAAhB,EAAoB;AAChB,UAAG;AACCC,QAAAA,IAAI,CAAC/e,EAAL,GAAUxB,SAAV;AACAugB,QAAAA,IAAI,CAACvjB,KAAL,GAAagD,SAAb;AACA1G,QAAAA,GAAG,CAACinB,IAAD,CAAH;AACA,YAAIpW,GAAG,GAAG,MAAMgV,GAAA,CAAmBplB,cAAnB,CAAkC;AAC9CC,UAAAA,GAAG,EAAE,KADyC;AAClC9C,UAAAA,IAAI,EAAE,uBAD4B;AAE9CmD,UAAAA,MAAM,EAAE,MAFsC;AAG9CF,UAAAA,OAAO,EAAE;AAAC+C,YAAAA,IAAI,EAAEqjB;AAAP;AAHqC,SAAlC,CAAhB;AAKH,OATD,CASC,OAAM9qB,CAAN,EAAQ;AACL6D,QAAAA,GAAG,CAAC,QAAD,CAAH;AACH,OAZe;;AAcnB;AACJ,GApbK;;AAsbN,QAAMknB,KAAN,CAAY5qB,IAAZ,EAAiB;AACb,QAAI0qB,GAAG,GAAG,MAAMnB,GAAA,CAAmBxiB,SAAnB,CAA6B;AACzC3C,MAAAA,GAAG,EAAEpE,IAAI,CAACoE,GAD+B;AAC1B9C,MAAAA,IAAI,EAAE;AADoB,KAA7B,CAAhB;AAGAoC,IAAAA,GAAG,CAACgnB,GAAD,CAAH;;AAEA,SAAI,IAAIC,IAAR,IAAgBD,GAAhB,EAAoB;AAChB,UAAG;AACCC,QAAAA,IAAI,CAAC/e,EAAL,GAAUxB,SAAV;AACAugB,QAAAA,IAAI,CAACvjB,KAAL,GAAagD,SAAb;AACA1G,QAAAA,GAAG,CAACinB,IAAD,CAAH;AACA,YAAIpW,GAAG,GAAG,MAAMgV,GAAA,CAAmBplB,cAAnB,CAAkC;AAC9CC,UAAAA,GAAG,EAAE,KADyC;AAClC9C,UAAAA,IAAI,EAAE,uBAD4B;AAE9CmD,UAAAA,MAAM,EAAE,MAFsC;AAG9CF,UAAAA,OAAO,EAAE;AAAC+C,YAAAA,IAAI,EAAEqjB;AAAP;AAHqC,SAAlC,CAAhB;AAKH,OATD,CASC,OAAM9qB,CAAN,EAAQ;AACL6D,QAAAA,GAAG,CAAC,QAAD,CAAH;AACH,OAZe;;AAcnB;AACJ,GA3cK;;AA6cN,QAAMmnB,aAAN,CAAoB7qB,IAApB,EAAyB;AACrB,QAAI4L,EAAE,GAAG5L,IAAI,CAACyJ,CAAL,CAAOsa,KAAP,EAAT;;AAEA,QAAIhL,KAAJ;;AACA,QAAG9P,MAAM,CAAC2C,EAAD,CAAT,EAAe;AACXmN,MAAAA,KAAK,GAAG,MAAMhF,KAAK,CAACvH,OAAN,CAAc,MAAd,EAAsBvD,MAAM,CAAC2C,EAAD,CAA5B,CAAd;AACH,KAFD,MAEK;AACDmN,MAAAA,KAAK,GAAG,MAAMhF,KAAK,CAAClH,SAAN,CAAgB,MAAhB,EAAwBjB,EAAxB,CAAd;AACH;;AAEDlI,IAAAA,GAAG,CAACqV,KAAD,CAAH;AACA,QAAI3H,CAAC,GAAG,MAAM2H,KAAK,CAACnE,QAAN,EAAd;;AAEA,SAAI,IAAIrV,IAAR,IAAgB6R,CAAhB,EAAkB;AACd,UAAG7R,IAAI,CAACuV,KAAL,CAAWrO,QAAX,CAAoB,QAApB,CAAH,EAAiC;AAC7B/C,QAAAA,GAAG,CAAE,YAAWnE,IAAI,CAACuV,KAAM,EAAxB,CAAH;AACA,cAAMvV,IAAI,CAACmU,MAAL,EAAN;AACH;AACJ;AACJ,GAheK;;AAkeN,QAAMoX,KAAN,CAAY9qB,IAAZ,EAAiB;AACb,QAAI+qB,eAAe,GAAG,CAAC,SAAD,EAAY,MAAZ,EAAoB,OAApB,CAAtB;AACA,UAAMtG,qBAAA,EAAN;AACA,QAAI/V,CAAC,GAAG,MAAM+V,QAAA,CAAuB9V,MAAvB,CAA8B,CAAC;AACzCtB,MAAAA,IAAI,EAAE,cADmC;AACnB9M,MAAAA,IAAI,EAAE,KADa;AAEzC2K,MAAAA,OAAO,EAAG,yBAF+B;AAGzCyF,MAAAA,MAAM,EAAE,OAAOC,KAAP,EAAcC,KAAd,KAAwB;AAC5B,eAAOka,eAAe,CAACje,MAAhB,CAAuBhB,CAAC,IAAI+E,KAAK,GAAG/E,CAAC,CAACrF,QAAF,CAAWoK,KAAK,CAACC,WAAN,EAAX,CAAH,GAAqC,IAAtE,CAAP;AACH;AALwC,KAAD,CAA9B,CAAd;AAOA,QAAIka,MAAM,GAAGtc,CAAC,CAACtO,GAAf;AACA,QAAI6qB,UAAU,GAAG7gB,SAAjB;;AACA,QAAI8gB,UAAU,GAAGzhB,CAAC,IAAEA,CAApB;;AACA,QAAGuhB,MAAM,KAAK,SAAd,EAAwB;AACpB,UAAIzV,MAAM,GAAG,MAAMkP,YAAA,CAA2B;AAACjT,QAAAA,aAAa,EAAE;AAAhB,OAA3B,CAAnB;AACA,UAAI/E,MAAM,GAAG,MAAMoF,MAAM,CAAChF,SAAP,CAAiB7M,IAAI,CAACoE,GAAtB,EAA2BmR,MAAM,CAAChV,IAAlC,CAAnB;AACA,UAAG,CAACkM,MAAJ,EAAY,MAAM,IAAI3F,UAAJ,CAAe,wCAAf,CAAN;;AACZokB,MAAAA,UAAU,GAAGC,EAAE,IAAIA,EAAE,CAACC,QAAH,IAAe,QAAlC;;AACAH,MAAAA,UAAU,GAAGxe,MAAM,CAACb,EAApB;AACH,KAND,MAMM,IAAGof,MAAM,KAAK,MAAd,EAAqB;AACvB,UAAIzV,MAAM,GAAG,MAAMkP,UAAA,CAAyB;AAACjT,QAAAA,aAAa,EAAE;AAAhB,OAAzB,CAAnB;AACA,UAAI/E,MAAM,GAAG,MAAMsF,IAAI,CAAClF,SAAL,CAAe7M,IAAI,CAACoE,GAApB,EAAyBmR,MAAM,CAAChV,IAAhC,CAAnB;AACA,UAAG,CAACkM,MAAJ,EAAY,MAAM,IAAI3F,UAAJ,CAAe,wCAAf,CAAN;;AACZokB,MAAAA,UAAU,GAAGC,EAAE,IAAIA,EAAE,CAACC,QAAH,IAAe,MAAlC;;AACAH,MAAAA,UAAU,GAAGxe,MAAM,CAACb,EAApB;AACH,KANK,MAMD;AACDqf,MAAAA,UAAU,GAAG,MAAMxG,QAAA,CAAuB,IAAvB,EAA6B,kBAA7B,CAAnB;AACH;;AAED/gB,IAAAA,GAAG,CAACtC,KAAM,wBAAuBpB,IAAI,CAACoE,GAAI,gBAAe6mB,UAAW,GAAjE,CAAH;AACAvnB,IAAAA,GAAG,CAAE,0CAAF,CAAH;AACA,UAAM2nB,OAAO,GAAG,GAAhB;AACA,QAAI3B,CAAC,GAAG,MAAMH,GAAA,CAAmBplB,cAAnB,CAAkC;AAC5CC,MAAAA,GAAG,EAAEpE,IAAI,CAACoE,GADkC;AAE5C9C,MAAAA,IAAI,EAAG,uBAAsB+pB,OAAQ,UAASA,OAAQ,oCAAmCJ,UAAW,0CAFxD;AAG5CpmB,MAAAA,OAAO,EAAE;AAHmC,KAAlC,CAAd;AAKA6kB,IAAAA,CAAC,CAACpiB,IAAF,GAASoiB,CAAC,CAACpiB,IAAF,CAAOwF,MAAP,CAAcoe,UAAd,CAAT;AAEAxnB,IAAAA,GAAG,CAAC,8BAAD,CAAH;;AAEA,SAAI,IAAI4nB,KAAR,IAAiB5B,CAAC,CAACpiB,IAAnB,EAAwB;AAAA;;AACpB,UAAIikB,GAAG,GAAGD,KAAH,aAAGA,KAAH,6CAAGA,KAAK,CAAEE,WAAV,uDAAG,mBAAoBC,MAA9B;AACA,UAAG,CAACF,GAAJ,EAAS;;AACT,UAAG;AACCD,QAAAA,KAAK,CAACI,IAAN,GAAa,MAAMxL,IAAI,CAAC1T,OAAL,CAAaxM,IAAI,CAACoE,GAAlB,EAAuBmnB,GAAvB,CAAnB;AACH,OAFD,CAEC,OAAM1rB,CAAN,EAAQ;AACLyrB,QAAAA,KAAK,CAACI,IAAN,GAAa;AAACnrB,UAAAA,IAAI,EAAE;AAAP,SAAb;AACH;AACJ;;AAED,QAAGP,IAAI,CAACmoB,GAAR,EAAa,OAAOuB,CAAC,CAACpiB,IAAT;AACb,QAAIqkB,SAAS,GAAG,CAAhB;;AACA,SAAI,IAAIL,KAAR,IAAiB5B,CAAC,CAACpiB,IAAnB,EAAwB;AAAA;;AACpB,UAAIskB,MAAM,GAAG3Q,MAAM,CAACqQ,KAAK,CAACxN,SAAP,CAAnB;AACA,UAAI1B,IAAI,GAAGwP,MAAM,CAACzQ,MAAP,CAAc,0BAAd,CAAX;AACA,UAAI0Q,QAAQ,GAAGD,MAAM,CAACpP,OAAP,EAAf;AACA9Y,MAAAA,GAAG,CAACtC,KAAM,GAAEgb,IAAK,YAAWyP,QAAS,YAA5B,eAAuCP,KAAK,CAACI,IAA7C,gDAAuC,YAAYnrB,IAAK,KAAI+qB,KAAK,CAACA,KAAM,EAA9E,CAAH;AAEA,UAAG,EAAEK,SAAF,IAAe,EAAlB,EAAsB;AACzB;AACJ,GA/hBK;;AAiiBN,QAAMG,MAAN,CAAa9rB,IAAb,EAAkB;AACd,UAAMqrB,OAAO,GAAG,IAAhB;AACA,QAAI3B,CAAC,GAAG,MAAMH,GAAA,CAAmBplB,cAAnB,CAAkC;AAC5CC,MAAAA,GAAG,EAAEpE,IAAI,CAACoE,GADkC;AAE5C;AACA9C,MAAAA,IAAI,EAAG,uBAAsB+pB,OAAQ,UAASA,OAAQ,4FAHV;AAI5CxmB,MAAAA,OAAO,EAAE;AAJmC,KAAlC,CAAd;;AAMA,SAAI,IAAIymB,KAAR,IAAiB5B,CAAC,CAACpiB,IAAnB,EAAwB;AACpB5D,MAAAA,GAAG,CAAC4nB,KAAK,CAACA,KAAP,CAAH;AACH;AACJ,GA5iBK;;AA8iBN,QAAMS,OAAN,CAAc/rB,IAAd,EAAmB;AACf,QAAIgkB,KAAK,GAAG,MAAMH,gBAAgB,CAAC7jB,IAAD,CAAlC;;AACA,SAAI,IAAIT,IAAR,IAAgBykB,KAAhB,EAAsB;AAClB,UAAIzO,MAAM,GAAG,MAAM1D,MAAM,CAAChF,SAAP,CAAiB7M,IAAI,CAACoE,GAAtB,EAA2B7E,IAA3B,CAAnB;AACA,YAAMgW,MAAM,CAAC/S,OAAP,EAAN;AACAkB,MAAAA,GAAG,CAAE,gBAAenE,IAAK,IAAGgW,MAAM,CAACkC,GAAI,EAApC,CAAH;AACH;AACJ,GArjBK;;AAujBN,QAAMuU,SAAN,CAAgB5nB,GAAhB,EAAqB7D,IAArB,EAA0B;AACtB,QAAG,CAAC,KAAK0rB,MAAT,EAAiB,KAAKA,MAAL,GAAc,CAAd;AACjB,SAAKA,MAAL;AACA,QAAIA,MAAM,GAAG,KAAKA,MAAlB;AAEA,UAAM1C,KAAA,CAAqB,GAArB,CAAN;AAEA,QAAG0C,MAAM,IAAI,KAAKA,MAAlB,EAA0B,OAAO,KAAKC,UAAL,IAAmB,EAA1B;AAE1B,QAAI3X,GAAG,GAAG,MAAMgV,GAAA,CAAmBplB,cAAnB,CAAkC;AAC9CC,MAAAA,GAD8C;AACzC9C,MAAAA,IAAI,EAAG,SADkC;AAE9CoD,MAAAA,EAAE,EAAEnE,IAAI,GAAG;AAACuM,QAAAA,MAAM,EAAG,gBAAevM,IAAK;AAA9B,OAAH,GAAsC6J;AAFA,KAAlC,CAAhB;AAIA,SAAK+hB,QAAL,GAAgBjR,IAAI,CAACtY,GAAL,EAAhB;AAEA,WAAO,KAAKspB,UAAL,GAAkB3X,GAAG,CAACjN,IAA7B;AACH,GAvkBK;;AAykBN,QAAM8kB,OAAN,CAAcpsB,IAAd,EAAmB;AACfykB,IAAAA,qBAAA;AACA,QAAI/V,CAAC,GAAG,MAAM+V,QAAA,CAAuB9V,MAAvB,CAA8B,CAAC;AACzCtB,MAAAA,IAAI,EAAE,cADmC;AAEzC9M,MAAAA,IAAI,EAAE,MAFmC;AAGzC2K,MAAAA,OAAO,EAAG,yBAH+B;AAIzCyF,MAAAA,MAAM,EAAE,OAAOC,KAAP,EAAcC,KAAd,KAAwB;AAC5B,YAAIwb,MAAM,GAAG,MAAM,KAAKL,SAAL,CAAehsB,IAAI,CAACoE,GAApB,EAAyByM,KAAzB,CAAnB;AACAwb,QAAAA,MAAM,GAAGA,MAAM,CAACroB,GAAP,CAAW8H,CAAC,IAAI,IAAIiI,KAAJ,CAAU;AAACzM,UAAAA,IAAI,EAAEwE,CAAP;AAAUW,UAAAA,MAAM,EAAEzM,IAAI,CAACoE;AAAvB,SAAV,CAAhB,CAAT;AACA,eAAOioB,MAAM,CAACroB,GAAP,CAAW8H,CAAC,KAAK;AACpBvL,UAAAA,IAAI,EAAEuL,CAAC,CAACI,UAAF,CAAa,IAAb,IAAqB,IAArB,GAA4BJ,CAAC,CAACxE,IAAF,CAAOF,KAAP,CAAa6O,IAAb,CAAkB9U,OAAlB,CAA0B,iBAA1B,EAA6C,WAA7C,CADd;AAEpBuP,UAAAA,KAAK,EAAE5E;AAFa,SAAL,CAAZ,CAAP;AAIH;AAXwC,KAAD,CAA9B,CAAd;AAaH,GAxlBK;;AA0lBN,SAAO,GAAP,EAAY9L,IAAZ,EAAiB;AACbA,IAAAA,IAAI,CAACyJ,CAAL,CAAO1I,OAAP,CAAe,GAAf;;AACAf,IAAAA,IAAI,CAACyJ,CAAL,CAAO1I,OAAP,CAAe,MAAf;;AACA,WAAO,KAAK4mB,MAAL,CAAY3nB,IAAZ,CAAP;AACH,GA9lBK;;AAgmBN,QAAM0Y,IAAN,CAAW1Y,IAAX,EAAgB;AACZ,QAAI+Y,KAAK,GAAG,MAAMhF,KAAK,CAAClH,SAAN,CAAgB,KAAhB,EAAuB7M,IAAI,CAACO,IAA5B,CAAlB;AACAmD,IAAAA,GAAG,CAACqV,KAAD,CAAH;AACH,GAnmBK;;AAqmBN;AACAuT,EAAAA,IAAI,GAAE;AACF,WAAO,IAAP;AACH;;AAxmBK,CAAH,85CAAP;;AA0mBA,eAAeC,cAAf,CAA8BtG,GAA9B,EAAkC;AAC9BviB,EAAAA,GAAG,CAACtC,KAAM,wBAAuB6kB,GAAI,IAAlC,CAAH;AACH;;AAED,eAAeuG,SAAf,GAA0B;AACtBvpB,EAAAA,KAAK,CAAC7B,KAAM;uBACOqrB,OAAe;;CAD7B,CAAL,CADsB;;AAOtB,MAAG,CAACptB,YAAY,CAACG,SAAjB,EAA2B;AACvByD,IAAAA,KAAK,CAAC7B,KAAM;;CAAP,CAAL;AAGA;AACH;;AAED,MAAI+N,IAAI,GAAG,IAAI+P,GAAJ,CAAQ,CAAC,OAAD,EAAU,KAAV,EAAiB,KAAjB,EAAwB,MAAxB,EAAgC,IAAhC,EAAsC,GAAGnd,MAAM,CAACsN,IAAP,CAAYhQ,YAAY,CAACyF,GAAzB,CAAzC,CAAR,CAAX;AAEA,MAAI4nB,KAAK,GAAG,EAAZ;;AACA,OAAI,IAAItoB,GAAR,IAAe+K,IAAf,EAAoB;AAChBud,IAAAA,KAAK,CAACxkB,IAAN,CAAW;AAAC9D,MAAAA,GAAD;AAAMuoB,MAAAA,IAAI,EAAE7H,cAAK,CAAC7B,UAAN,CAAiB7e,GAAjB;AAAZ,KAAX;AACH,GAnBqB;;;AAsBtB,OAAI,IAAI;AAACA,IAAAA,GAAD;AAAMuoB,IAAAA;AAAN,GAAR,IAAuBD,KAAvB,EAA6B;AACzB;AACA,QAAIE,SAAJ;;AACA,QAAG;AAEC,UAAIvkB,MAAM,GAAG,MAAMskB,IAAnB,CAFD;;AAKCC,MAAAA,SAAS,GAAGxrB,KAAM,WAAUiH,MAAO,aAAnC;AACA,UAAGA,MAAM,KAAK,GAAd,EAAmBukB,SAAS,GAAGxrB,KAAM,gBAAlB,CAAnB,KACK,IAAGiH,MAAM,KAAK,GAAd,EAAmBukB,SAAS,GAAGxrB,KAAM,qBAAlB,CAAnB,KACA,IAAGiH,MAAM,IAAI,GAAb,EAAmBukB,SAAS,GAAGxrB,KAAM,WAAUiH,MAAO,aAAnC,CAAnB,KACA,IAAGA,MAAM,KAAK,IAAd,EAAoBukB,SAAS,GAAGxrB,KAAM,YAAlB,CAApB,KACA,IAAGiH,MAAM,KAAK,KAAd,EAAqBukB,SAAS,GAAGxrB,KAAM,WAAlB;AAC7B,KAXD,CAWC,OAAMvB,CAAN,EAAQ;AACL,UAAGA,CAAC,YAAYkF,oBAAhB,EAAqC;AACjC6nB,QAAAA,SAAS,GAAGxrB,KAAM,uBAAlB;AACH,OAFD,MAEM,IAAGvB,CAAC,YAAY2G,QAAhB,EAAyB;AAC3B,YAAG,CAAC3G,CAAC,CAACqG,QAAF,CAAW1B,IAAf,EAAoB;AAChBooB,UAAAA,SAAS,GAAGxrB,KAAM,mBAAlB;AACH;AACJ,OAJK,MAIA,IAAGvB,CAAC,CAACU,IAAF,IAAU,cAAb,EAA4B;AAC9BqsB,QAAAA,SAAS,GAAGxrB,KAAM,0CAAyCvB,CAAC,CAACmiB,KAAF,CAAQ6K,KAAM,GAAzE;AACH,OAFK,MAED;AACD,cAAMhtB,CAAN;AACH;AACJ;;AAED6D,IAAAA,GAAG,CAACtC,KAAM,MAAKgD,GAAI,KAAIwoB,SAAU,EAA9B,CAAH;AACH;AACJ;;AAED,eAAeE,KAAf,GAAsB;AAClB;AACA,MAAG,OAAOzJ,IAAI,CAACnjB,MAAZ,KAAwB,QAA3B,EAAoC;AAChCZ,IAAAA,UAAU,CAAC+jB,IAAI,CAACnjB,MAAN,CAAV;AACH,GAFD,MAEM,IAAG,OAAOmjB,IAAI,CAACnjB,MAAZ,KAAwB,QAA3B,EAAqC;AACvCH,IAAAA,kBAAkB,CAACsjB,IAAD,CAAlB;AACH,GAFK,MAED;AACD/jB,IAAAA,UAAU;AACb,GARiB;AAWlB;;;AACA8B,EAAAA,KAAK,CAAC2rB,OAAN,GAAgB1tB,YAAY,CAACG,SAAb,GAAyBH,YAAY,CAAC+B,KAAtC,GAA8C,IAA9D;;AACA,MAAGA,KAAK,CAAC4rB,KAAN,KAAgB,CAAhB,IAAqB,CAAC5rB,KAAK,CAAC2rB,OAA/B,EAAuC;AACnC,QAAIvZ,KAAK,GAAG6P,IAAI,CAAC,aAAD,CAAhB;;AACA,QAAG7P,KAAH,EAAS;AACLpS,MAAAA,KAAK,CAAC2rB,OAAN,GAAgB,IAAhB;;AACA,UAAGvZ,KAAK,KAAK,IAAV,IAAkBpS,KAAK,CAAC4rB,KAAN,KAAgB,CAArC,EAAuC;AACnC5rB,QAAAA,KAAK,CAAC4rB,KAAN,GAAc,CAAd;AACH,OAFD,MAEM,IAAG/jB,MAAM,CAACuK,KAAD,CAAT,EAAiB;AACnBpS,QAAAA,KAAK,CAAC4rB,KAAN,GAAc/jB,MAAM,CAACuK,KAAD,CAApB;AACH;AACJ;AACJ,GAvBiB;;;AA0BlB,MAAG,CAAC6P,IAAI,CAAC,SAAD,CAAR,EAAoB;AAChBhkB,IAAAA,YAAY,CAAC2F,YAAb,GAA4B,IAA5B;AACH,GA5BiB;;;AA+BlB,MAAGqe,IAAI,CAAC,KAAD,CAAP,EAAe;AACXhkB,IAAAA,YAAY,CAACygB,SAAb,GAAyB,IAAzB;;AACA5c,IAAAA,MAAM,CAACQ,GAAP,GAAa,MAAI,EAAjB;;AACAR,IAAAA,MAAM,CAACa,QAAP,GAAkB,MAAI,EAAtB;;AACAb,IAAAA,MAAM,CAACD,KAAP,GAAe,MAAI,EAAnB;AACH;;AAED,MAAGogB,IAAI,CAAC,gBAAD,CAAP,EAA0B;AACtBhkB,IAAAA,YAAY,CAACsY,aAAb,GAA6B,IAA7B;AACH;;AAED,MAAG0L,IAAI,CAAC,kBAAD,CAAP,EAA4B;AACxBhkB,IAAAA,YAAY,CAACub,eAAb,GAA+B,IAA/B;AACH;;AAED,MAAGyI,IAAI,CAAC,aAAD,CAAP,EAAuB;AACnBhkB,IAAAA,YAAY,CAAC0b,UAAb,GAA0B,IAA1B;AACH;;AAED1b,EAAAA,YAAY,CAACsJ,cAAb,GAA8B,CAAC0a,IAAI,CAAC,eAAD,CAAnC,CAlDkB;AAqDlB;;AACA,MAAGhkB,YAAY,CAAC4tB,UAAhB,EAA2B;AACvB5J,IAAAA,IAAI,CAACjf,GAAL,GAAWif,IAAI,CAACjf,GAAL,IAAY/E,YAAY,CAAC4tB,UAApC;AACH,GAxDiB;;;AA2DlB,MAAG5J,IAAI,CAAC,UAAD,CAAP,EAAoB;AAChBhkB,IAAAA,YAAY,CAACwgB,OAAb,GAAuBwD,IAAI,CAAC,UAAD,CAA3B;AACAhkB,IAAAA,YAAY,CAAC+G,QAAb,GAAwB,IAAxB;AACH,GAHD,MAGM,IAAGid,IAAI,CAAC,SAAD,CAAP,EAAmB;AACrBhkB,IAAAA,YAAY,CAACwgB,OAAb,GAAuBwD,IAAI,CAAC,SAAD,CAA3B;AACH,GAFK,MAEA,IAAGA,IAAI,CAAC,WAAD,CAAP,EAAqB;AACvBhkB,IAAAA,YAAY,CAACwgB,OAAb,GAAuB,IAAvB;AACAxgB,IAAAA,YAAY,CAAC+G,QAAb,GAAwB,IAAxB;AACA/G,IAAAA,YAAY,CAACsG,SAAb,GAAyB,IAAzB;AACH,GApEiB;;;AAuElB0d,EAAAA,IAAI,CAAC6J,IAAL,GAAY7J,IAAI,CAAC5Z,CAAL,CAAO9B,KAAP,EAAZ,CAvEkB;AA0ElB;;AACA,MAAIjH,IAAI,GAAG2iB,IAAI,CAAC5Z,CAAL,CAAOsa,KAAP,EAAX;;AACA,MAAGrjB,IAAH,EAAQ;AACJ,QAAG,CAAC6mB,GAAG,CAAC7mB,IAAD,CAAP,EAAe,OAAO,MAAM6rB,cAAc,CAAC7rB,IAAD,CAA3B;;AACf,QAAG;AACC;AACA,UAAImJ,GAAG,GAAG,MAAM0d,GAAG,CAAC7mB,IAAD,CAAH,CAAU2iB,IAAV,CAAhB;;AACA,UAAGxZ,GAAH,EAAO;AACH5G,QAAAA,KAAK,CAAC7B,KAAK,CAAC+rB,KAAN,CAAY,gBAAZ,CAAD,CAAL;AACA,YAAGtjB,GAAG,YAAY0B,UAAlB,EAA8B1B,GAAG,GAAGA,GAAG,CAAC2B,GAAV,CAF3B;;AAKH,YAAG,OAAO3B,GAAP,KAAe,QAAlB,EAA2B;AACvBlG,UAAAA,OAAO,CAACD,GAAR,CAAY/D,IAAI,CAAC4F,SAAL,CAAesE,GAAf,EAAoB,IAApB,EAA0B,CAA1B,CAAZ;AACH,SAFD,MAEK;AACDlG,UAAAA,OAAO,CAACD,GAAR,CAAYmG,GAAZ;AACH;AACJ;AACJ,KAdD,CAcC,OAAMhK,CAAN,EAAQ;AACL,UAAGA,CAAC,YAAYiH,UAAhB,EAA2B;AACvBpD,QAAAA,GAAG,CAACtC,KAAM,sBAAqBvB,CAAC,CAACqL,OAAQ,EAAtC,CAAH;AACH,OAFD,MAEK;AACD,cAAMrL,CAAN;AACH;AACJ;AACJ,GAvBD,MAuBK;AACD,UAAM2sB,SAAS,EAAf;AACH;AACJ;;AAED,eAAeY,IAAf,CAAoB,GAAGptB,IAAvB,EAA4B;AACxB;AACA,MAAG;AACC,UAAM8sB,KAAK,CAAC,GAAG9sB,IAAJ,CAAX;AACH,GAFD,CAEC,OAAMH,CAAN,EAAQ;AACLkE,IAAAA,QAAQ,CAAClE,CAAC,CAACwtB,KAAH,CAAR;AACH;AACJ;AAGD;;;AACA,IAAG9e,OAAO,CAAC6e,IAAR,KAAiBE,MAApB,EAA2B;AACvBF,EAAAA,IAAI;AACP,CAFD,MAEK;AACD9tB,EAAAA,UAAU;AACVguB,EAAAA,MAAM,CAACC,OAAP,GAAiBhE,cAAjB;AACH"}
\No newline at end of file