ng2-rest 19.0.4 → 19.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +135 -135
- package/browser/README.md +24 -24
- package/browser/fesm2022/ng2-rest.mjs +156 -26
- package/browser/fesm2022/ng2-rest.mjs.map +1 -1
- package/browser/package.json +1 -1
- package/client/README.md +24 -24
- package/client/fesm2022/ng2-rest.mjs +156 -26
- package/client/fesm2022/ng2-rest.mjs.map +1 -1
- package/client/package.json +1 -1
- package/index.js.map +1 -1
- package/lib/build-info._auto-generated_.d.ts +2 -1
- package/lib/build-info._auto-generated_.js +3 -2
- package/lib/build-info._auto-generated_.js.map +1 -1
- package/lib/content-type.js.map +1 -1
- package/lib/cookie.js.map +1 -1
- package/lib/helpers.d.ts +1 -1
- package/lib/helpers.js +4 -4
- package/lib/helpers.js.map +1 -1
- package/lib/index._auto-generated_.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/mapping.d.ts +1 -1
- package/lib/mapping.js +60 -60
- package/lib/mapping.js.map +1 -1
- package/lib/models.d.ts +1 -1
- package/lib/models.js +15 -15
- package/lib/models.js.map +1 -1
- package/lib/other/simple-resource.js.map +1 -1
- package/lib/params.js +6 -6
- package/lib/params.js.map +1 -1
- package/lib/request-cache.js +4 -4
- package/lib/request-cache.js.map +1 -1
- package/lib/resource-service.d.ts +1 -1
- package/lib/resource-service.js +4 -4
- package/lib/resource-service.js.map +1 -1
- package/lib/rest-headers.js.map +1 -1
- package/lib/rest-request.js +12 -12
- package/lib/rest-request.js.map +1 -1
- package/lib/rest.class.js +2 -2
- package/lib/rest.class.js.map +1 -1
- package/migrations/index.js.map +1 -1
- package/migrations/migrations_index._auto-generated_.js.map +1 -1
- package/package.json +1 -1
- package/tmp-environment.json +4 -4
- package/websql/README.md +24 -24
- package/websql/fesm2022/ng2-rest.mjs +156 -26
- package/websql/fesm2022/ng2-rest.mjs.map +1 -1
- package/websql/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng2-rest.mjs","sources":["../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/mapping.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/helpers.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/params.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/rest-headers.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/content-type.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/rest.class.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/cookie.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/request-cache.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/models.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/rest-request.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/resource-service.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/other/simple-resource.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/index.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/ng2-rest.ts"],"sourcesContent":["\n\nimport { _ } from 'tnp-core/websql';\nimport { Helpers } from 'tnp-core/websql';\nimport { Circ, JSON10 } from 'json10/websql';\nimport { walk } from 'lodash-walk-object/websql';\nimport { CLASS, SYMBOL } from 'typescript-class-helpers/websql';\nimport { Helpers as HelpersLog } from 'tnp-core/websql';\n\nexport namespace Mapping {\n\n export function decode(json: Object, autodetect = false): Mapping {\n\n\n if (_.isUndefined(json)) {\n return void 0;\n }\n\n let mapping = decodeFromDecorator(_.isArray(json) ? _.first(json) : json, !autodetect)\n\n if (autodetect) {\n mapping = _.merge(getMappingNaive(json), mapping);\n }\n\n return mapping;\n }\n\n export function encode<T = Function>(json: Object, mapping: Mapping, circular: Circ[] = []): T {\n if (_.isString(json) || _.isBoolean(json) || _.isNumber(json)) {\n return json as any;\n }\n\n if (mapping['']) {\n const decoratorMapping = getModelsMapping(CLASS.getBy(mapping['']));\n mapping = _.merge(mapping, decoratorMapping)\n }\n\n let res: any;\n if (_.isArray(circular) && circular.length > 0) {\n res = setMappingCirc(json, mapping, circular);\n } else {\n res = setMapping(json, mapping);\n }\n return res;\n }\n\n\n function decodeFromDecorator(json: Object, production = false): Mapping {\n const entityClass = CLASS.getFromObject(json);\n const mappings = getModelsMapping(entityClass);\n return mappings as any;\n }\n\n export function getModelsMapping(entity: Function) {\n\n if (!_.isFunction(entity) || entity === Object) {\n return {};\n }\n const className = CLASS.getName(entity)\n\n let enityOWnMapping: any[] = _.isArray(entity[SYMBOL.MODELS_MAPPING]) ?\n entity[SYMBOL.MODELS_MAPPING] : [{ '': className }];\n\n let res = {};\n let parents = enityOWnMapping\n .filter(m => !_.isUndefined(m['']) && m[''] !== className)\n .map(m => m['']);\n\n enityOWnMapping.reverse().forEach(m => {\n m = _.cloneDeep(m);\n\n Object.keys(m).forEach(key => {\n const v = m[key]\n const isArr = _.isArray(v)\n const model = isArr ? _.first(v) : v;\n if (parents.includes(model)) {\n m[key] = isArr ? [className] : className;\n }\n })\n res = _.merge(res, m)\n })\n res[''] = className;\n\n return res;\n }\n\n\n export type Mapping<T = {}> = {\n [P in keyof T]?: string | string[];\n };\n\n function add(o: Object, path: string, mapping: Mapping = {}) {\n if (!o || Array.isArray(o) || typeof o !== 'object') return;\n const objectClassName = CLASS.getName(Object.getPrototypeOf(o).constructor);\n const resolveClass = CLASS.getBy(objectClassName);\n if (!resolveClass) {\n if (objectClassName !== 'Object') {\n if (Helpers.isBrowser) {\n console.error(`Cannot resolve class \"${objectClassName}\" while mapping.`)\n }\n }\n return;\n }\n if (!mapping[path]) mapping[path] = CLASS.getName(resolveClass) as any;;\n }\n\n /**\n * USE ONLY IN DEVELOPMENT\n * @param c\n * @param path\n * @param mapping\n * @param level\n */\n function getMappingNaive(c: Object, path = '', mapping: Mapping = {}, level = 0) {\n if (Array.isArray(c)) {\n c.forEach(c => getMappingNaive(c, path, mapping, level))\n return mapping;\n }\n if (++level === 16) return;\n add(c, path, mapping);\n for (var p in c) {\n if (c.hasOwnProperty(p)) {\n const v = c[p];\n if (Array.isArray(v) && v.length > 0) { // reducer as impovement\n v.forEach((elem, i) => {\n\n const currentPaht = [path, p].filter(c => c.trim() != '').join('.');\n getMappingNaive(elem, currentPaht, mapping, level);\n })\n } else if (typeof v === 'object') {\n const currentPaht = [path, p].filter(c => c.trim() != '').join('.');\n add(v, currentPaht, mapping);\n getMappingNaive(v, currentPaht, mapping, level);\n }\n }\n }\n return mapping;\n }\n\n function getMappingPathFrom(pathLodhas: string) {\n if (!_.isString(pathLodhas)) {\n return void 0;\n }\n const regex = /\\[([0-9a-zA-Z]|\\'|\\\")*\\]/g;\n pathLodhas = pathLodhas\n .replace(regex, '')\n .replace('..', '.');\n if (pathLodhas.startsWith('.')) {\n pathLodhas = pathLodhas.slice(1)\n }\n return pathLodhas;\n }\n\n function setMappingCirc(json: Object, mapping: Mapping = {}, circular: Circ[] = []) {\n\n const mainClassFn = !_.isArray(json) && CLASS.getBy(mapping['']);\n\n walk.Object(json, (v, lodashPath, changeValue) => {\n if (!_.isUndefined(v) && !_.isNull(v)) {\n const mappingPath = getMappingPathFrom(lodashPath)\n if (!_.isUndefined(mapping[mappingPath])) {\n const isArray = _.isArray(mapping[mappingPath]);\n if (!isArray) {\n const className = isArray ? _.first(mapping[mappingPath]) : mapping[mappingPath];\n const classFN = CLASS.getBy(className)\n if (_.isFunction(classFN)) {\n\n changeValue(_.merge(new (classFN as any)(), v))\n }\n }\n }\n }\n })\n\n circular.forEach(c => {\n const ref = _.get(json, c.circuralTargetPath)\n _.set(json, c.pathToObj, ref)\n })\n\n if (_.isFunction(mainClassFn)) {\n json = _.merge(new (mainClassFn as any)(), json)\n }\n\n return json;\n }\n\n\n\n function setMapping(json: Object, mapping: Mapping = {}) {\n\n\n if (Array.isArray(json)) {\n return json.map(j => {\n return setMapping(j, mapping)\n })\n }\n\n const mainClassFn = CLASS.getBy(mapping['']);\n\n for (const key in json) {\n if (json.hasOwnProperty(key)) {\n\n\n\n if (_.isArray(json[key])) {\n json[key] = json[key].map(arrObj => {\n const objMapping = getModelsMapping(CLASS.getBy(mapping[key]))\n return setMapping(arrObj, objMapping)\n })\n } else if (_.isObject(json[key])) {\n const objMapping = getModelsMapping(CLASS.getBy(mapping[key]))\n json[key] = setMapping(json[key], objMapping)\n }\n }\n\n\n\n\n\n }\n\n Object\n .keys(mapping)\n .filter(key => key !== '' && key.split('.').length >= 2)\n .forEach(lodasPath => {\n\n const objMapping = getModelsMapping(CLASS.getBy(mapping[lodasPath]))\n const input = _.get(json, lodasPath)\n if (!_.isUndefined(input)) {\n const res = setMapping(input, objMapping)\n _.set(json, lodasPath, res)\n }\n })\n\n if (!mainClassFn) {\n return json;\n }\n return _.merge(new (mainClassFn as any)(), json)\n }\n\n\n\n\n export type ModelValue<T> = {\n /**\n * Inside models types\n */\n [propName in keyof T]?: T[propName];\n };\n\n\n export function DefaultModelWithMapping<T = Object>(\n defaultModelValues?: ModelValue<T>,\n mapping?: Mapping<T>\n ) {\n return function (target: Function) {\n\n if (!_.isArray(target[SYMBOL.MODELS_MAPPING])) {\n target[SYMBOL.MODELS_MAPPING] = [];\n }\n\n (target[SYMBOL.MODELS_MAPPING] as any[]).push({ '': CLASS.getName(target) });\n if (_.isObject(mapping)) {\n target[SYMBOL.MODELS_MAPPING] = (target[SYMBOL.MODELS_MAPPING] as any[]).concat(mapping)\n Object.keys(mapping)\n .forEach(key => {\n const v = mapping;\n if (_.isUndefined(v) || _.isFunction(v)) {\n throw `\n\n\n Class: '${target.name}'\n[ng2rest] Bad mapping value for path: ${key} , please use type: <string> or [<string>]\n`;\n\n }\n });\n }\n\n\n if (_.isObject(defaultModelValues)) {\n const toMerge = {};\n const describedTarget = CLASS\n .describeProperites(target)\n .filter(prop => /^([a-zA-Z0-9]|\\_|\\#)+$/.test(prop))\n\n describedTarget.forEach(propDefInConstr => {\n if (defaultModelValues[propDefInConstr]) {\n console.warn(`\n\n CONFLICT: default value for property: \"${propDefInConstr}\"\n in class \"${target.name}\" already defined as typescript\n default class proprty value.\n\n `)\n } else {\n toMerge[propDefInConstr] = null; // TODO from toString I can't know that\n }\n });\n\n\n\n target[SYMBOL.DEFAULT_MODEL] = _.merge(toMerge, defaultModelValues);\n\n const propsToOmmit = Object\n .keys(target[SYMBOL.DEFAULT_MODEL])\n .filter(key => {\n const descriptor = Object\n .getOwnPropertyDescriptor(target.prototype, key);\n return !!descriptor;\n });\n _.merge(target.prototype, _.omit(target[SYMBOL.DEFAULT_MODEL], propsToOmmit));\n\n\n }\n }\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=ng2-rest lib/mapping.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport { CoreHelpers } from 'tnp-core/websql';\nimport { Mapping } from './mapping';\nimport { JSON10 } from 'json10/websql';\n\n// @ts-ignore\nexport class Helpers extends CoreHelpers {\n\n static JSON = JSON10;\n\n static get Mapping() {\n return {\n encode<T = Function>(json: Object, mapping: Mapping.Mapping): T {\n return Mapping.encode(json, mapping);\n },\n decode(json: Object, autodetect = false ): Mapping.Mapping {\n return Mapping.decode(json, autodetect)\n }\n }\n }\n\n static checkValidUrl(url: string): boolean {\n let regex = /(http|https):\\/\\/(\\w+:{0,1}\\w*)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%!\\-\\/]))?/;\n return regex.test(url);\n }\n\n\n\n}\n\n ;({}); // @--end-of-file-for-module=ng2-rest lib/helpers.ts","\n\nimport { diffChars } from 'diff';\nimport { _ } from 'tnp-core/websql';\nimport { Log, Level } from 'ng2-logger/websql';\nimport { Models } from './models';\nimport { Helpers } from './helpers';\n\nconst log = Log.create('[ng2-rest] params', Level.__NOTHING)\n\n\n\n/** check if string is a valid pattern */\nexport function isValid(pattern: string) {\n return (new RegExp('\\/:[a-zA-Z]*', 'g')).test(pattern.replace('://', ''));\n}\n\nexport function check(url: string, pattern: string): boolean {\n if (!Helpers.checkValidUrl(url)) {\n log.error(`Incorrect url: ${url}`);\n return false;\n }\n if (url.charAt(url.length - 1) === '/') url = url.slice(0, url.length - 2);\n if (pattern.charAt(pattern.length - 1) === '/') pattern = pattern.slice(0, url.length - 2);\n pattern = pattern.replace(/\\//g, '\\/');\n pattern = pattern.replace(new RegExp('\\/:[a-zA-Z]*', 'g'), '.+');\n let reg = new RegExp(pattern, 'g');\n return reg.test(url);\n}\n\nexport function getModels(pattern: string): string[] {\n let m = pattern.match(new RegExp('[a-z-A-Z]*\\/:', 'g'));\n return m.map(p => p.replace('/:', ''));\n}\n\nexport function getRestPramsNames(pattern: string): string[] {\n if (pattern.charAt(pattern.length - 1) !== '/') pattern = `${pattern}/`;\n let m = pattern.match(new RegExp(':[a-zA-Z]*\\/', 'g'));\n let res = m.map(p => p.replace(':', '').replace('/', ''));\n return res.filter(p => p.trim() !== '');\n}\n\nexport function containsModels(url: string, models: string[]): boolean {\n if (url.charAt(0) !== '/') url = '/' + url;\n\n let res = models.filter(m => {\n let word = '/' + m;\n\n let iii = url.indexOf(word);\n\n if (iii + word.length < url.length && url.charAt(iii + word.length) !== '/') {\n return false;\n }\n if (iii !== -1) {\n url = url.replace(new RegExp('\\/' + m, 'g'), '');\n return true;\n }\n return false;\n }).length;\n\n return res === models.length;\n}\n\nexport function stars(n: number): string {\n let res = '';\n for (let i = 0; i < n; i++) res += '*';\n return res;\n}\n\nexport function getRestParams(url: string, pattern: string): Object {\n let res = {};\n let models = getRestPramsNames(pattern);\n\n models.forEach(m => {\n pattern = pattern.replace(`:${m}`, stars(m.length));\n })\n\n let currentModel: string = void 0;\n diffChars(pattern, url).forEach(d => {\n\n if (d.added) {\n if (!isNaN(Number(d.value))) res[currentModel] = Number(d.value);\n else if (d.value.trim() === 'true') res[currentModel] = true;\n else if (d.value.trim() === 'false') res[currentModel] = false;\n else res[currentModel] = decodeURIComponent(d.value);\n currentModel = void 0;\n }\n let m = d.value.replace(':', \"\");\n\n if (d.removed) {\n currentModel = models.shift();\n }\n });\n return res;\n}\n\nexport const regexisPath = /[^\\..]+(\\.[^\\..]+)+/g;\n\n/**\n * Models like books/:id\n */\nfunction cutUrlModel(params: Object, models: string[], output: string[]) {\n if (models.length === 0) return output.join('\\/');\n let m = models.pop();\n\n let param = m.match(/:[a-zA-Z0-9\\.]+/)[0].replace(':', '');\n const paramIsPath = regexisPath.test(param)\n\n let model = m.match(/[a-zA-Z0-9]+\\//)[0].replace('\\/', '');\n if (params === void 0 ||\n (paramIsPath ? _.get(params, param) === void 0 : params[param] === void 0) ||\n param === 'undefined') {\n output.length = 0;\n output.unshift(model)\n return cutUrlModel(params, models, output);\n } else {\n if (paramIsPath) {\n\n let mrep = m.replace(new RegExp(`:${param}`, 'g'), `${_.get(params, param)}`)\n output.unshift(mrep)\n return cutUrlModel(params, models, output);\n } else {\n\n let mrep = m.replace(new RegExp(`:${param}`, 'g'), `${params[param]}`)\n output.unshift(mrep)\n return cutUrlModel(params, models, output);\n }\n\n }\n}\n\n\nexport function interpolateParamsToUrl(params: Object, url: string): string {\n\n const regexInt = /\\[\\[([^\\..]+\\.[^\\..]+)+\\]\\]/g;\n\n url = url.split('/').map(p => {\n\n let isParam = p.startsWith(':')\n if (isParam) {\n let part = p.slice(1);\n\n if (regexInt.test(part)) {\n\n part = part.replace('[[', '')\n part = part.replace(']]', '')\n }\n return `:${part}`\n }\n return p;\n }).join('/');\n\n\n\n\n\n let slash = {\n start: url.charAt(0) === '\\/',\n end: url.charAt(url.length - 1) === '\\/'\n }\n\n let morePramsOnEnd = url.match(/(\\/:[a-zA-Z0-9\\.]+){2,10}/g);\n if (morePramsOnEnd && (Array.isArray(morePramsOnEnd) && morePramsOnEnd.length === 1)) {\n\n let m = morePramsOnEnd[0];\n let match = m.match(/\\/:[a-zA-Z0-9\\.]+/g);\n\n match.forEach(e => {\n let c = e.replace('\\/:', '');\n\n if (regexisPath.test(c)) {\n url = url.replace(e, `/${_.get(params, c)}`)\n } else {\n url = url.replace(e, `/${params[c]}`)\n }\n\n\n\n })\n return url;\n }\n\n let nestedParams = url.match(/[a-zA-Z0-9]+\\/:[a-zA-Z0-9\\.]+/g);\n if (!nestedParams || (Array.isArray(nestedParams) && nestedParams.length === 0)) return url;\n\n\n if (!slash.end) url = `${url}/`;\n let addUndefinedForAlone = (!/:[a-zA-Z0-9\\.]+\\/$/g.test(url) && /[a-zA-Z0-9]+\\/$/g.test(url));\n\n let replace = (nestedParams.length > 1 ? nestedParams.join('\\/') : nestedParams[0]) +\n (addUndefinedForAlone ? '\\/' + url.match(/[a-zA-Z0-9]+\\/$/g)[0] : '\\/');\n let beginHref = url.replace(replace, '')\n\n if (addUndefinedForAlone) {\n url = url.replace(/\\/$/g, '/:undefined')\n nestedParams = url.match(/[a-zA-Z0-9]+\\/:[a-zA-Z0-9\\.]+/g);\n url = cutUrlModel(params, nestedParams, [])\n } else {\n url = cutUrlModel(params, nestedParams, [])\n }\n url = beginHref + url;\n\n if (url.charAt(url.length - 1) !== '/' && slash.end) url = `${url}/`;\n if (url.charAt(0) !== '\\/' && slash.start) url = `/${url}`;\n\n return url;\n}\n\n/**\n * Get query params from url, like 'ex' in /api/books?ex=value\n*/\nexport function decodeUrl(url: string): Object {\n let regex = /[?&]([^=#]+)=([^&#]*)/g,\n params = {},\n match;\n while (match = regex.exec(url)) {\n params[decodeURIComponent(match[1])] = decodeURIComponent(match[2]);\n }\n let paramsObject = <Object>params;\n for (let p in paramsObject) {\n if (paramsObject[p] === void 0) {\n delete paramsObject[p];\n continue;\n }\n if (paramsObject.hasOwnProperty(p)) {\n\n let n = Number(params[p]);\n if (!isNaN(n)) {\n params[p] = n;\n continue;\n }\n if (typeof params[p] === 'string') {\n\n\n let json;\n try {\n json = JSON.parse(params[p]);\n } catch (error) { }\n if (json !== void 0) {\n params[p] = json;\n continue;\n }\n\n\n\n\n\n\n\n }\n }\n }\n return params;\n}\n\n/**\n * Create query params string for url\n *\n * @export\n * @param {UrlParams[]} params\n * @returns {string}\n */\nexport function getParamsUrl(params: Models.UrlParams[], doNotSerialize: boolean = false): string {\n let urlparts: string[] = [];\n if (!params) return '';\n if (!(params instanceof Array)) return '';\n if (params.length === 0) return '';\n\n params.forEach(urlparam => {\n if (JSON.stringify(urlparam) !== '{}') {\n\n let parameters: string[] = [];\n let paramObject = <Object>urlparam;\n\n\n for (let p in paramObject) {\n if (paramObject[p] === void 0) delete paramObject[p];\n if (paramObject.hasOwnProperty(p) && typeof p === 'string' && p !== 'regex' && !(paramObject[p] instanceof RegExp)) {\n if (p.length > 0 && p[0] === '/') {\n let newName = p.slice(1, p.length - 1);\n urlparam[newName] = urlparam[p];\n urlparam[p] = void 0;\n p = newName;\n }\n if (p.length > 0 && p[p.length - 1] === '/') {\n let newName = p.slice(0, p.length - 2);\n urlparam[newName] = urlparam[p];\n urlparam[p] = void 0;\n p = newName;\n }\n let v: any = urlparam[p];\n if (v instanceof Object) {\n urlparam[p] = JSON.stringify(urlparam[p]);\n }\n urlparam[p] = doNotSerialize ? <string>urlparam[p] : encodeURIComponent(<string>urlparam[p]);\n if (urlparam.regex !== void 0 && urlparam.regex instanceof RegExp) {\n\n if (!urlparam.regex.test(<string>urlparam[p])) {\n console.warn(`Data: ${urlparam[p]} incostistent with regex ${urlparam.regex.source}`);\n }\n }\n parameters.push(`${p}=${urlparam[p]}`);\n }\n\n }\n\n urlparts.push(parameters.join('&'));\n\n\n }\n\n\n });\n let join = urlparts.join().trim();\n if (join.trim() === '') return '';\n return `?${urlparts.join('&')}`;\n}\n\n\nfunction transform(o) {\n if (typeof o === 'object') {\n return encodeURIComponent(JSON.stringify(o));\n }\n return o;\n}\n\n\nexport function prepareUrlOldWay(params?: TemplateStringsArray): string {\n if (!params) return this.endpoint;\n if (typeof params === 'object') {\n params = transform(params);\n }\n return this.endpoint + '/' + params;\n}\n\n\n ;({}); // @--end-of-file-for-module=ng2-rest lib/params.ts","\n\n/**\n * Based on Headers from https://github.com/angular/angular/blob/master/packages/http/src/headers.ts\n */\nexport type RestHeadersOptions = RestHeaders | { [name: string]: (string | string[]) }\n\nexport class RestHeaders {\n /** @internal header names are lower case */\n _headers: Map<string, string[]> = new Map();\n /** @internal map lower case names to actual names */\n _normalizedNames: Map<string, string> = new Map();\n\n\n public static from(headers?: RestHeadersOptions) {\n if (!headers) {\n return void 0;\n }\n return new RestHeaders(headers);\n }\n\n private constructor(headers?: RestHeaders | { [name: string]: (string | string[]) }) {\n if (headers instanceof RestHeaders) {\n headers.forEach((values: string[], name: string) => {\n values.forEach(value => this.set(name, value));\n });\n } else {\n Object.keys(headers).forEach((name: string) => {\n const values: string[] = (Array.isArray(headers[name]) ? headers[name] : [headers[name]]) as any;\n this.delete(name);\n values.forEach(value => this.set(name, value));\n });\n }\n }\n\n /**\n * Returns a new RestHeaders instance from the given DOMString of Response RestHeaders\n */\n static fromResponseHeaderString(headersString: string): RestHeaders {\n const headers = new RestHeaders();\n\n\n\n headersString.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const value = line.slice(index + 1).trim();\n headers.set(name, value);\n }\n });\n\n return headers;\n }\n\n /**\n * Appends a header to existing list of header values for a given header name.\n */\n append(name: string, value: string): void {\n const values = this.getAll(name);\n\n if (values === null) {\n this.set(name, value);\n } else {\n values.push(value);\n }\n }\n\n /**\n * Deletes all header values for the given name.\n */\n delete(name: string): void {\n const lcName = name.toLowerCase();\n this._normalizedNames.delete(lcName);\n this._headers.delete(lcName);\n }\n\n forEach(fn: (values: string[], name: string, headers: Map<string, string[]>) => void): void {\n this._headers.forEach(\n (values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));\n }\n\n /**\n * Returns first header that matches given name.\n */\n get(name: string): string {\n const values = this.getAll(name);\n\n if (values === null) {\n return null;\n }\n\n return values.length > 0 ? values[0] : null;\n }\n\n /**\n * Checks for existence of header by given name.\n */\n has(name: string): boolean { return this._headers.has(name.toLowerCase()); }\n\n /**\n * Returns the names of the headers\n */\n keys(): string[] { return Array.from(this._normalizedNames.values()); }\n\n /**\n * Sets or overrides header value for given name.\n */\n set(name: string, value: string | string[]): void {\n if (Array.isArray(value)) {\n if (value.length) {\n this._headers.set(name.toLowerCase(), [value.join(',')]);\n }\n } else {\n this._headers.set(name.toLowerCase(), [value]);\n }\n this.mayBeSetNormalizedName(name);\n }\n\n /**\n * Returns values of all headers.\n */\n values(): string[][] { return Array.from(this._headers.values()); }\n\n /**\n * Returns string of all headers.\n */\n\n toJSON(): { [name: string]: any } {\n const serialized: { [name: string]: string[] } = {};\n if (!this._headers) {\n\n\n }\n\n this._headers.forEach((values: string[], name: string) => {\n const split: string[] = [];\n values.forEach(v => split.push(...v.split(',')));\n\n\n\n\n serialized[this._normalizedNames.get(name)] = split;\n });\n\n return serialized;\n }\n\n /**\n * Returns list of header values for a given name.\n */\n getAll(name: string): string[] {\n return this.has(name) ? this._headers.get(name.toLowerCase()) : null;\n }\n\n private mayBeSetNormalizedName(name: string): void {\n const lcName = name.toLowerCase();\n\n if (!this._normalizedNames.has(lcName)) {\n this._normalizedNames.set(lcName, name);\n }\n }\n}\n\n\n ;({}); // @--end-of-file-for-module=ng2-rest lib/rest-headers.ts","\n\nimport { RestHeaders } from \"./rest-headers\";\n\n\nexport const CONTENT_TYPE = {\n APPLICATION_JSON: RestHeaders.from({\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n }),\n APPLICATINO_VND_API_JSON: RestHeaders.from({\n 'Content-Type': 'application/vnd.api+json',\n 'Accept': 'application/vnd.api+json'\n }),\n}\n\n ;({}); // @--end-of-file-for-module=ng2-rest lib/content-type.ts","\n\n\nimport { Log, Level } from 'ng2-logger/websql';\n\n\nimport { Models } from './models';\nimport { getRestParams, getParamsUrl } from './params';\nimport { RestRequest } from './rest-request';\nimport { RestHeaders } from './rest-headers';\nimport { CONTENT_TYPE } from './content-type';\nimport { CLASS } from 'typescript-class-helpers/websql';\n\n\nexport class Rest<T, TA = T[]> implements Models.FnMethodsHttpWithMock<T, TA> {\n\n private mockHttp: Models.MockHttp;\n mock(mock: Models.MockHttp): Models.FnMethodsHttp<T, TA> {\n if ((typeof mock === 'function') || (typeof mock === 'object')) {\n this.mockHttp = mock;\n } else {\n throw `[ng2-rest]\n .model(...)\n .mock( < BAD MOCK DATA > )\n ...\n `\n }\n return this;\n }\n\n\n\n\n private __meta_endpoint: string;\n private _endpointRest: string;\n private get endpoint() {\n let e = this.__meta_endpoint;\n if (this.restQueryParams !== void 0 && this._endpointRest !== void 0\n && typeof this._endpointRest === 'string' && this._endpointRest.trim() !== '') e = this._endpointRest;\n return e;\n }\n private restQueryParams: Object;\n public set __rest_endpoint(endpoint) {\n this._endpointRest = endpoint;\n if (endpoint === void 0) {\n this.restQueryParams = void 0;\n } else {\n this.restQueryParams = getRestParams(endpoint, this.__meta_endpoint);\n }\n\n }\n\n private creatUrl(params: any, doNotSerializeParams: boolean = false) {\n return `${this.endpoint}${getParamsUrl(params, doNotSerializeParams)}`;\n }\n\n\n\n\n private _headers = RestHeaders.from(CONTENT_TYPE.APPLICATION_JSON);\n get headers() {\n return this._headers;\n }\n constructor(\n endpoint: string,\n private request: RestRequest,\n private meta: Models.MetaRequest,\n private customContentType: RestHeaders,\n ) {\n this.__meta_endpoint = endpoint;\n\n }\n\n\n\n\n private req(method: Models.HttpMethod,\n requestBody: T,\n params?: Models.UrlParams[],\n doNotSerializeParams: boolean = false,\n isArray: boolean = false\n ) {\n\n const modelUrl = this.creatUrl(params, doNotSerializeParams);\n const body = (CLASS.getNameFromObject(requestBody) === 'FormData')\n ? requestBody\n : (requestBody ? JSON.stringify(requestBody) : void 0);\n\n\n if (this.customContentType) {\n const customHeaderKeys = this.customContentType.keys();\n const currentHeaderKeys = this._headers.keys();\n currentHeaderKeys\n .filter(key => !customHeaderKeys.includes(key))\n .forEach(key => {\n this.customContentType.set(key, this._headers.get(key));\n });\n this._headers = this.customContentType;\n } else {\n this._headers = RestHeaders.from(CONTENT_TYPE.APPLICATION_JSON);\n }\n\n\n\n const result = this.request[method.toLowerCase()](\n modelUrl,\n body,\n this.headers,\n this.meta,\n isArray,\n this.mockHttp\n );\n\n this.mockHttp = void 0;\n return result;\n }\n\n\n\n\n\n replay(method: Models.HttpMethod) {\n this.request.replay(method, this.meta);\n }\n\n\n array = {\n get: (params: Models.UrlParams[] = void 0, doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('get', void 0, params, doNotSerializeParams, true) as any\n },\n head: (params: Models.UrlParams[] = void 0, doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('head', void 0, params, doNotSerializeParams, true) as any\n },\n post: (item: TA, params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('post', item as any, params, doNotSerializeParams, true) as any;\n },\n put: (item: TA, params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('put', item as any, params, doNotSerializeParams, true) as any;\n },\n patch: (item: TA, params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('patch', item as any, params, doNotSerializeParams, true) as any;\n },\n delete: (params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('delete', void 0, params, doNotSerializeParams, true) as any;\n },\n jsonp: (params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('jsonp', void 0, params, doNotSerializeParams, true) as any;\n }\n }\n\n get(params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('get', void 0, params, doNotSerializeParams) as any;\n }\n\n head(params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('head', void 0, params, doNotSerializeParams) as any;\n }\n\n post(item: T, params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('post', item, params, doNotSerializeParams);\n }\n\n put(item: T, params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('put', item, params, doNotSerializeParams);\n }\n\n patch(item: T, params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('patch', item, params, doNotSerializeParams);\n }\n\n delete(params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('delete', void 0, params, doNotSerializeParams);\n }\n\n jsonp(params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('jsonp', void 0, params, doNotSerializeParams);\n }\n\n\n}\n\n ;({}); // @--end-of-file-for-module=ng2-rest lib/rest.class.ts","\n\nexport class Cookie {\n\n public static get Instance(): Cookie {\n if (!Cookie.__instance) {\n Cookie.__instance = new Cookie();\n }\n return Cookie.__instance as any;\n }\n private static __instance;\n\n private constructor() {\n }\n\n read(name: string) {\n var result = new RegExp('(?:^|; )' + encodeURIComponent(name) + '=([^;]*)').exec(document.cookie);\n return result ? result[1] : null;\n }\n\n write(name: string, value: string, days?: number) {\n if (!days) {\n days = 365 * 20;\n }\n\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n\n var expires = \"; expires=\" + date.toUTCString();\n\n document.cookie = name + \"=\" + value + expires + \"; path=/\";\n }\n\n remove(name: string) {\n this.write(name, \"\", -1);\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=ng2-rest lib/cookie.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport { Models } from './models';\nimport { Log, Level } from 'ng2-logger/websql';\nimport { Helpers } from 'tnp-core/websql';\nimport { RestHeaders } from './rest-headers';\nconst log = Log.create('request-cache', Level.__NOTHING)\n\n/**\n * @deprecated\n * there is Cache API for that\n */\nexport class RequestCache {\n\n static readonly LOCAL_STORAGE_KEY = 'ng2restrequestcache';\n\n private static cached: RequestCache[] = [];\n private static isRestoredFromLocalStorage = false;\n\n private static restoreFromLocalStorage() {\n if (Helpers.isNode) {\n return;\n }\n if (!RequestCache.isRestoredFromLocalStorage) {\n RequestCache.isRestoredFromLocalStorage = true;\n const data = localStorage.getItem(RequestCache.LOCAL_STORAGE_KEY);\n let requests: RequestCache[] = [];\n if (data) {\n try {\n requests = JSON.parse(data) as RequestCache[];\n } catch (error) {\n\n }\n const restored = requests.map(r => {\n let { sourceRequest, responseText, body, headers, circular,\n entity, isArray, cookies, statusCode } = r.response;\n r.response = new Models.HttpResponse(\n sourceRequest,\n responseText,\n RestHeaders.from(headers),\n statusCode,\n entity,\n circular,\n -1, // jobid from local storage TODO\n isArray,\n );\n r = new RequestCache(r.response);\n r.response.rq = r;\n\n return r;\n });\n log.i('RESTORED FROM LOCAL STORAGE', restored);\n RequestCache.cached = restored;\n }\n\n }\n }\n\n public static findBy(sourceRequest: Models.HandleResultSourceRequestOptions) {\n log.i('findby', sourceRequest)\n log.i('RequestCache.cached', RequestCache.cached)\n RequestCache.restoreFromLocalStorage();\n return RequestCache.cached.find(c => {\n const a = c.response.sourceRequest;\n const b = sourceRequest;\n return (\n a.isArray === b.isArray &&\n a.url === b.url &&\n a.method === b.method &&\n a.body === b.body\n )\n });\n }\n\n\n\n\n constructor(\n public response: Models.HttpResponse<any>\n ) {\n\n }\n\n get containsCache() {\n RequestCache.restoreFromLocalStorage();\n return RequestCache.cached.includes(this);\n }\n\n private persistsInLocalStorage() {\n localStorage.setItem(RequestCache.LOCAL_STORAGE_KEY,\n JSON.stringify(RequestCache.cached.map(r => {\n return {\n response: {\n sourceRequest: r.response.sourceRequest,\n responseText: r.response.responseText,\n headers: r.response.headers,\n statusCode: r.response.statusCode,\n entity: r.response.entity,\n circular: r.response.circular,\n isArray: r.response.isArray,\n } as Models.HttpResponse<any>\n };\n })));\n }\n\n store() {\n RequestCache.restoreFromLocalStorage();\n if (!this.containsCache) {\n RequestCache.cached.push(this);\n this.persistsInLocalStorage();\n } else {\n console.log('already stored');\n }\n return this;\n }\n\n remove() {\n RequestCache.restoreFromLocalStorage();\n const index = RequestCache.cached.indexOf(this);\n if (index !== -1) {\n RequestCache.cached.splice(index, 1);\n this.persistsInLocalStorage();\n } else {\n console.log('already removed');\n }\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=ng2-rest lib/request-cache.ts","\n\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { Log, Level } from 'ng2-logger/websql';\nimport { RestHeaders } from './rest-headers';\nimport { Rest } from './rest.class';\nimport { Cookie } from './cookie';\nimport { Mapping } from './mapping';\nimport { AxiosResponse } from 'axios';\nimport { Models as HelpersModels } from 'typescript-class-helpers/websql';\nimport { JSON10, Circ } from 'json10/websql';\nimport { RequestCache } from './request-cache';\nimport { _ } from 'tnp-core/websql';\nimport { CoreModels } from 'tnp-core/websql';\nimport { Helpers } from 'tnp-core/websql';\n/* */\n/* */\n \n\n\nexport namespace Models {\n export import HttpMethod = CoreModels.HttpMethod;\n export import ParamType = CoreModels.ParamType;\n\n export import MethodConfig = HelpersModels.MethodConfig;\n export import ClassConfig = HelpersModels.ClassConfig;\n export import ParamConfig = HelpersModels.ParamConfig;\n\n export interface HandleResultOptions {\n res: Models.MockResponse;\n method: Models.HttpMethod;\n jobid?: number;\n isArray?: boolean;\n }\n\n export interface HandleResultSourceRequestOptions {\n url: string;\n method: Models.HttpMethod;\n\n body: any;\n isArray: boolean;\n }\n\n export type BackendError = {\n msg?: string;\n stack?: string[];\n data: any;\n };\n\n export type MetaRequest = {\n path: string;\n endpoint: string;\n entity: Mapping.Mapping;\n circular: Circ[];\n };\n export type HttpCode = 200 | 400 | 401 | 404 | 500;\n\n export type PromiseObservableMix<T> = Promise<T> & {\n cache?: RequestCache;\n observable: Observable<T>;\n };\n\n export type MethodWithoutBody<E, T, R = PromiseObservableMix<E>> = (\n params?: UrlParams[],\n doNotSerializeParams?: boolean,\n ) => R;\n export type MethodWithBody<E, T, R = PromiseObservableMix<E>> = (\n item?: T,\n params?: UrlParams[],\n doNotSerializeParams?: boolean,\n ) => R;\n export type ReplayData = {\n subject: Subject<any>;\n data: { url: string; body: string; headers: RestHeaders; isArray: boolean };\n /**\n * jobid\n */\n id: number;\n };\n export type ReqParams = {\n url: string;\n method: CoreModels.HttpMethod;\n headers?: RestHeaders;\n body?: any;\n jobid: number;\n isArray: boolean;\n };\n\n export interface ResourceModel<A, TA> {\n model: (pathModels?: Object, responseObjectType?: Function) => Rest<A, TA>;\n replay: (method: CoreModels.HttpMethod) => void;\n headers: RestHeaders;\n }\n\n export interface Ng2RestMethods<E, T> {\n get: MethodWithoutBody<E, T>;\n post: MethodWithBody<E, T>;\n put: MethodWithBody<E, T>;\n patch: MethodWithBody<E, T>;\n head: MethodWithoutBody<E, T>;\n delete: MethodWithoutBody<E, T>;\n jsonp: MethodWithoutBody<E, T>;\n }\n\n export type MockController = (\n url: string,\n method: CoreModels.HttpMethod,\n headers?: RestHeaders,\n body?: any,\n ) => MockResponse;\n\n export type MockHttp = MockResponse | MockController;\n\n export interface FnMethodsHttp<T, TA>\n extends Ng2RestMethods<HttpResponse<T>, T> {\n array: Ng2RestMethods<HttpResponse<TA>, TA>;\n }\n\n export interface FnMethodsHttpWithMock<T, TA>\n extends Ng2RestMethods<HttpResponse<T>, T> {\n array: Ng2RestMethods<HttpResponse<TA>, TA>;\n mock(mock: MockHttp, code: HttpCode): FnMethodsHttp<T, TA>;\n }\n\n export interface NestedParams {\n [params: string]: string;\n }\n\n export interface UrlParams {\n [urlModelName: string]: string | number | boolean | RegExp | Object;\n regex?: RegExp;\n }\n [];\n\n export abstract class BaseBody {\n protected toJSON(data, isJSONArray = false) {\n let r = isJSONArray ? [] : {};\n if (typeof data === 'string') {\n try {\n r = JSON.parse(data);\n } catch (e) {}\n } else if (typeof data === 'object') {\n return data;\n }\n return r as any;\n }\n }\n\n export class HttpBody<T> extends BaseBody {\n constructor(\n private responseText: string | Blob,\n private isArray = false,\n private entity: Mapping.Mapping,\n private circular: Circ[],\n ) {\n super();\n }\n\n public get blob(): Blob {\n return this.responseText as Blob;\n }\n\n public get booleanValue(): boolean | undefined {\n if (!Helpers.isBlob(this.responseText)) {\n return ['ok', 'true'].includes((this.responseText as string).trim());\n }\n }\n\n public get numericValue(): number | undefined {\n if (!Helpers.isBlob(this.responseText)) {\n return Number(this.responseText?.trim());\n }\n }\n\n public get rawJson(): Partial<T> {\n if (!Helpers.isBlob(this.responseText)) {\n let res = this.toJSON(this.responseText, this.isArray);\n if (this.circular && Array.isArray(this.circular)) {\n res = JSON10.parse(JSON.stringify(res), this.circular);\n }\n\n return res;\n }\n }\n\n public get json(): T {\n\n const isBlob = Helpers.isBlob(this.responseText);\n if (isBlob) {\n return void 0;\n }\n if (this.entity && typeof this.entity === 'function') {\n return this.entity(); // @LAST\n }\n if (this.entity && typeof this.entity === 'object') {\n const json = this.toJSON(this.responseText, this.isArray);\n return Mapping.encode(json, this.entity, this.circular) as any;\n }\n let res = this.toJSON(this.responseText, this.isArray);\n if (this.circular && Array.isArray(this.circular)) {\n res = JSON10.parse(JSON.stringify(res), this.circular);\n }\n return res;\n }\n\n /**\n * undefined when blob\n */\n public get text(): string | undefined {\n if (!Helpers.isBlob(this.responseText)) {\n return (this.responseText as string)\n .replace(/^\\\"/, '')\n .replace(/\\\"$/, '');\n }\n }\n }\n\n export class ErrorBody extends BaseBody {\n constructor(private data) {\n super();\n }\n\n public get json(): Object {\n return this.toJSON(this.data);\n }\n public get text() {\n return this.data;\n }\n }\n\n export abstract class BaseResponse<T> {\n protected static readonly cookies = Cookie.Instance;\n\n public get cookies() {\n return BaseResponse.cookies;\n }\n constructor(\n public responseText?: string | Blob,\n public readonly headers?: RestHeaders,\n public readonly statusCode?: HttpCode | number,\n public isArray = false,\n ) {}\n }\n\n export class HttpResponse<T> extends BaseResponse<T> {\n public body: HttpBody<T>;\n\n\n\n\n rq: RequestCache;\n constructor(\n public sourceRequest: Models.HandleResultSourceRequestOptions,\n public responseText?: string | Blob,\n public headers?: RestHeaders,\n public statusCode?: HttpCode | number,\n public entity?: Mapping.Mapping | Function,\n public circular?: Circ[],\n public jobid?: number,\n public isArray = false,\n ) {\n\n\n\n super(responseText, headers, statusCode, isArray);\n\n this.init();\n }\n\n public init() {\n if (typeof this.entity === 'string') {\n\n let entityJSON = this.headers?.getAll(this.entity);\n if (!!entityJSON) {\n this.entity = JSON.parse(entityJSON.join());\n }\n }\n if (typeof this.circular === 'string') {\n\n let circuralJSON = this.headers?.getAll(this.circular);\n if (!!circuralJSON) {\n this.circular = JSON.parse(circuralJSON.join());\n }\n }\n this.body = new HttpBody(\n this.responseText,\n this.isArray,\n this.entity,\n this.circular,\n ) as any;\n }\n\n get cache() {\n if (_.isUndefined(this.rq)) {\n this.rq = new RequestCache(this);\n }\n return new RequestCache(this);\n }\n }\n\n export class HttpResponseError extends BaseResponse<any> {\n private body: ErrorBody;\n\n\n\n constructor(\n public message: string,\n responseText?: string,\n headers?: RestHeaders,\n statusCode?: HttpCode | number,\n public jobid?: number,\n ) {\n super(responseText, headers, statusCode);\n this.body = new ErrorBody(responseText);\n }\n }\n\n export interface MockResponse {\n data?: any;\n code?: HttpCode;\n error?: string;\n headers?: RestHeaders;\n jobid?: number;\n isArray: boolean;\n }\n\n export type ResponseTypeAxios =\n | 'blob'\n | 'text'\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n}\n\n ;({}); // @--end-of-file-for-module=ng2-rest lib/models.ts","\n\nimport { firstValueFrom, Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { _ } from 'tnp-core/websql';\n\nimport { Models } from './models';\nimport { RestHeaders } from './rest-headers';\n\nimport { Helpers } from 'tnp-core/websql';\nimport { Level } from 'ng2-logger/websql';\nimport axios, { AxiosResponse } from 'axios';\nimport { Resource } from './resource-service';\nimport { Log, Logger } from 'ng2-logger/websql';\n\nimport { RequestCache } from './request-cache';\nconst log = Log.create('[ng2-rest] rest-request'\n , Level.__NOTHING\n)\n\n/**\n * TODO refactor this (remove jobid)\n */\nconst jobIDkey = 'jobID';\nconst customObs = 'customObs';\nconst cancelFn = 'cancelFn';\nconst isCanceled = 'isCanceled';\n\n\n\n\nexport class RestRequest {\n\n public static zone;\n private static jobId = 0;\n private subjectInuUse: { [id: number]: Subject<any> } = {};\n private meta: { [id: number]: Models.MetaRequest } = {};\n\n\n private handlerResult(options: Models.HandleResultOptions,\n sourceRequest: Models.HandleResultSourceRequestOptions) {\n if (_.isUndefined(options)) {\n options = {} as any;\n }\n\n const { res, jobid, isArray, method } = options;\n\n if (typeof res !== 'object') {\n throw new Error('No resposnse for request. ');\n }\n\n if (Helpers.isBrowser) {\n res.headers = RestHeaders.from(res.headers);\n }\n\n\n if (res.error) {\n this.subjectInuUse[jobid].error(new Models.HttpResponseError(res.error, res.data, res.headers, res.code, jobid));\n return;\n }\n const entity = this.meta[jobid].entity;\n const circular = this.meta[jobid].circular;\n\n const success = (Resource['_listenSuccess'] as Subject<Models.HttpResponse<any>>)\n\n const reqResp = new Models.HttpResponse(sourceRequest, res.data, res.headers, res.code, entity, circular, jobid, isArray);\n success.next(reqResp);\n\n this.subjectInuUse[jobid].next(reqResp);\n this.meta[jobid] = void 0;\n this.subjectInuUse[jobid].complete();\n }\n checkCache(sourceRequest: Models.HandleResultSourceRequestOptions, jobid: number) {\n const existedInCache = RequestCache.findBy(sourceRequest);\n if (existedInCache) {\n\n const success = (Resource['_listenSuccess'] as Subject<Models.HttpResponse<any>>);\n success.next(existedInCache.response);\n this.subjectInuUse[jobid].next(existedInCache);\n this.subjectInuUse[jobid].complete();\n return true;\n }\n\n return false;\n }\n\n private async req(\n url: string,\n method: Models.HttpMethod,\n headers?: RestHeaders,\n body?: any,\n jobid?: number,\n isArray = false,\n mockHttp?: Models.MockHttp\n ) {\n if (this.checkCache({\n url,\n body,\n isArray,\n method\n }, jobid)) {\n return;\n }\n\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n this.subjectInuUse[jobid][cancelFn] = source.cancel;\n\n var response: AxiosResponse<any>;\n if (mockHttp) {\n\n if (typeof mockHttp === 'object') {\n response = {\n data: mockHttp.data,\n status: mockHttp.code,\n headers: mockHttp.headers as any,\n statusText: mockHttp.error,\n config: {} as any\n }\n } else if (typeof mockHttp === 'function') {\n const r = mockHttp(url, method, headers, body);\n response = {\n data: r.data,\n status: r.code,\n headers: r.headers as any,\n statusText: r.error,\n config: {} as any\n }\n }\n }\n\n\n const headersJson = headers.toJSON();\n const responseType = headersJson.responsetypeaxios ? headersJson.responsetypeaxios : 'text';\n\n try {\n if (!response) {\n\n\n\n\n response = await axios({\n url,\n method,\n data: body,\n responseType,\n headers: headersJson,\n cancelToken: source.token,\n\n });\n\n }\n\n\n\n if (this.subjectInuUse[jobid][isCanceled]) {\n return;\n }\n\n this.handlerResult({\n res: {\n code: response.status as any,\n data: response.data,\n isArray,\n jobid,\n headers: RestHeaders.from(response.headers as any)\n },\n method,\n jobid,\n isArray\n }, {\n url,\n body,\n method,\n isArray,\n });\n } catch (catchedError) {\n if (this.subjectInuUse[jobid][isCanceled]) {\n return;\n }\n\n\n if (typeof catchedError === 'object' && catchedError.response && catchedError.response.data) {\n const err = catchedError.response.data;\n const msg: string = catchedError.response.data.message || '';\n\n\n\n let stack: string[] = (err.stack || '').split('\\n');\n\n const errObs = (Resource['_listenErrors'] as Subject<Models.BackendError>);\n errObs.next({\n msg,\n stack,\n data: catchedError.response.data\n });\n }\n const error = (catchedError && catchedError.response) ? `[${catchedError.response.statusText}]: ` : '';\n this.handlerResult({\n res: {\n code: (catchedError && catchedError.response) ? catchedError.response.status as any : void 0,\n error: `${error}${catchedError.message}`,\n data: (catchedError && catchedError.response) ? JSON.stringify(catchedError.response.data) : void 0,\n isArray,\n jobid,\n headers: RestHeaders.from(catchedError && catchedError.response && catchedError.response.headers)\n },\n method,\n jobid,\n isArray\n }, {\n url,\n body,\n isArray,\n method\n });\n }\n }\n\n private getReplay(method: Models.HttpMethod, meta: Models.MetaRequest, onlyGetLastReplayForMethod: boolean): Models.ReplayData {\n let replay: Models.ReplayData;\n\n\n if (_.isUndefined(this.replaySubjects[meta.endpoint])) {\n\n this.replaySubjects[meta.endpoint] = {};\n }\n if (_.isUndefined(this.replaySubjects[meta.endpoint][meta.path])) {\n\n this.replaySubjects[meta.endpoint][meta.path] = {};\n }\n if (_.isUndefined(this.replaySubjects[meta.endpoint][meta.path][method])) {\n\n this.replaySubjects[meta.endpoint][meta.path][method] = {};\n }\n\n\n const objectIDToCreateOrLast = (Object.keys(this.replaySubjects[meta.endpoint][meta.path][method] as Object).length) +\n (onlyGetLastReplayForMethod ? 0 : 1);\n if (onlyGetLastReplayForMethod && (objectIDToCreateOrLast === 0)) {\n return replay;\n }\n\n if (_.isUndefined(this.replaySubjects[meta.endpoint][meta.path][method][objectIDToCreateOrLast])) {\n\n this.replaySubjects[meta.endpoint][meta.path][method][objectIDToCreateOrLast] = <Models.ReplayData>{\n subject: new Subject(),\n data: void 0,\n };\n }\n\n replay = this.replaySubjects[meta.endpoint][meta.path][method][objectIDToCreateOrLast];\n\n if (!_.isNumber(replay.id)) {\n if (RestRequest.jobId === Number.MAX_SAFE_INTEGER) {\n RestRequest.jobId = 0;\n }\n\n const jobid: number = RestRequest.jobId++;\n replay.id = jobid;\n const subject: Subject<any> = replay.subject;\n subject[jobIDkey] = jobid; // modify internal rxjs subject obj\n\n this.meta[jobid] = meta;\n this.subjectInuUse[jobid] = subject;\n\n this.subjectInuUse[jobid][customObs] = new Observable((observer) => {\n\n\n\n observer.add(() => {\n\n if (!this.subjectInuUse[jobid][isCanceled]) {\n this.subjectInuUse[jobid][isCanceled] = true;\n if (typeof this.subjectInuUse[jobid][cancelFn] === 'function') {\n this.subjectInuUse[jobid][cancelFn]('[ng2-rest] on purpose canceled http request');\n }\n } else {\n\n }\n })\n const sub = subject.subscribe({\n next: a => observer.next(a),\n error: a => observer.error(a),\n complete: () => {\n sub.unsubscribe();\n observer.complete()\n },\n });\n });\n\n\n\n\n\n\n\n\n\n\n\n\n\n }\n\n return replay;\n }\n\n\n\n\n private generalReq(\n method: Models.HttpMethod,\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp): Models.PromiseObservableMix<any> {\n\n const replay: Models.ReplayData = this.getReplay(method, meta, false);\n replay.data = { url, body, headers, isArray };\n\n ((pthis, purl, pmethod, pheaders, pbody, pid, pisArray, pmockHttp) => {\n\n setTimeout(() => pthis.req(purl, pmethod, pheaders, pbody, pid, pisArray, pmockHttp));\n })(this, url, method, headers, body, replay.id, isArray, mockHttp)\n\n const resp: Models.PromiseObservableMix<any> = firstValueFrom(replay.subject[customObs]) as any;\n resp.observable = replay.subject[customObs];\n resp.cache = RequestCache.findBy({\n body,\n isArray,\n method,\n url\n });\n return resp;\n }\n\n get(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean, mockHttp: Models.MockHttp\n ): Models.PromiseObservableMix<any> {\n return this.generalReq('get', url, body, headers, meta, isArray, mockHttp);\n }\n\n head(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean, mockHttp: Models.MockHttp\n ): Models.PromiseObservableMix<any> {\n return this.generalReq('head', url, body, headers, meta, isArray, mockHttp);\n }\n\n delete(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp): Models.PromiseObservableMix<any> {\n return this.generalReq('delete', url, body, headers, meta, isArray, mockHttp);\n }\n\n post(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp\n ): Models.PromiseObservableMix<any> {\n return this.generalReq('post', url, body, headers, meta, isArray, mockHttp);\n }\n\n put(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp\n ): Models.PromiseObservableMix<any> {\n return this.generalReq('put', url, body, headers, meta, isArray, mockHttp);\n }\n\n patch(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp\n ): Models.PromiseObservableMix<any> {\n return this.generalReq('patch', url, body, headers, meta, isArray, mockHttp);\n }\n\n jsonp(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp\n ): Models.PromiseObservableMix<any> {\n\n const replay: Models.ReplayData = this.getReplay('jsonp', meta, false);\n const jobid = replay.id;\n const method = 'jsonp'\n setTimeout(() => {\n if (url.endsWith('/')) url = url.slice(0, url.length - 1)\n let num = Math.round(10000 * Math.random());\n let callbackMethodName = \"cb_\" + num;\n window[callbackMethodName] = (data) => {\n if (this.checkCache({\n url,\n body,\n isArray,\n method\n }, jobid)) {\n return;\n }\n this.handlerResult({\n res: {\n data, isArray\n },\n method,\n jobid,\n isArray\n }, {\n url,\n body,\n isArray,\n method,\n })\n }\n let sc = document.createElement('script');\n sc.src = `${url}?callback=${callbackMethodName}`;\n document.body.appendChild(sc);\n document.body.removeChild(sc);\n })\n\n const resp: Models.PromiseObservableMix<any> = firstValueFrom(replay.subject[customObs]) as any;\n resp.observable = replay.subject[customObs];\n console.log('assiging custom observable')\n resp.cache = RequestCache.findBy({\n body,\n isArray,\n method,\n url\n })\n return resp;\n }\n\n private replaySubjects = {};\n public replay(method: Models.HttpMethod, meta: Models.MetaRequest) {\n const replay: Models.ReplayData = this.getReplay(method, meta, true);\n if (!replay || !replay.data) {\n console.warn(`Canno replay first ${method} request from ${meta.endpoint}/${meta.path}`);\n return;\n };\n if (replay && replay.subject && Array.isArray(replay.subject.observers) &&\n replay.subject.observers.length === 0) {\n console.warn(`No observators for ${method} request from ${meta.endpoint}/${meta.path}`);\n return;\n }\n const url = replay.data.url;\n const headers = replay.data.headers;\n const body = replay.data.body;\n const isArray = replay.data.isArray;\n setTimeout(() => this.req(url, method, headers, body, replay.id, isArray))\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=ng2-rest lib/rest-request.ts","\n\n\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { Log, Level } from 'ng2-logger/websql';\nconst log = Log.create('resouce-service',\n Level.__NOTHING\n)\n\nimport { Rest } from './rest.class';\nimport { RestRequest } from './rest-request';\nimport { RestHeaders } from './rest-headers';\nimport { Cookie } from './cookie';\nimport { Mapping } from './mapping';\nimport { Models } from './models';\nimport { interpolateParamsToUrl, isValid, containsModels, getModels } from './params';\nimport { Circ } from 'json10/websql';\nimport { Helpers } from 'tnp-core/websql'\n\n\ndeclare const global: any;\n\n\nexport class Resource<E, T, TA> {\n protected static _listenErrors = new Subject<Models.BackendError>();\n protected static _listenSuccess = new Subject<Models.HttpResponse<any>>();\n public static get listenErrors() {\n return this._listenErrors.asObservable();\n }\n\n public static get listenSuccessOperations() {\n return this._listenSuccess.asObservable();\n }\n public static enableWarnings: boolean = true;\n\n\n private getZone() {\n const isNode = (typeof window === 'undefined')\n if (isNode) { return };\n const ng = window['ng'];\n const getAllAngularRootElements = window['getAllAngularRootElements'];\n if (!ng || !getAllAngularRootElements) { return; }\n const probe = ng.probe;\n const coreTokens = ng.coreTokens;\n if (!coreTokens || !coreTokens.NgZone) { return; }\n const zoneClass = coreTokens.NgZone;\n if (!probe || typeof probe !== 'function' || !getAllAngularRootElements) { return; }\n const angularElements: any[] = getAllAngularRootElements();\n if (!Array.isArray(angularElements) || angularElements.length === 0) { return; }\n const rootElement = ng.probe(angularElements[0]);\n if (!rootElement) { return; }\n const injector = rootElement.injector;\n if (!injector || !injector.get || typeof injector.get !== 'function') { return; }\n const zone = injector.get(zoneClass)\n return zone;\n }\n\n\n public static initAngularNgZone(zone) {\n RestRequest.zone = zone;\n }\n\n private checkNestedModels(model: string, allModels: Object) {\n\n for (let p in allModels) {\n if (allModels.hasOwnProperty(p)) {\n let m = allModels[p];\n if (isValid(p)) {\n let urlModels = getModels(p);\n if (containsModels(model, urlModels)) {\n model = p;\n break;\n }\n }\n }\n }\n\n return model;\n }\n\n private static instance = new Resource<string, any, any>();\n private static endpoints = {};\n public static getModel(endpoint: string, model: string): Rest<any> {\n model = Resource.prepareModel(model);\n const e = Resource.endpoints[endpoint];\n if (!e) { return void 0; }\n const r = Resource.endpoints[endpoint].models[model];\n return Resource.endpoints[endpoint].models[model];\n }\n private static request: RestRequest = new RestRequest();\n\n\n\n\n public static create<A, TA = A[]>(\n e: string,\n model?: string,\n entityMapping?: Mapping.Mapping,\n circular?: Circ[],\n customContentType?: RestHeaders,\n ): Models.ResourceModel<A, TA> {\n const badRestRegEX = new RegExp('((\\/:)[a-z]+)+', 'g');\n const matchArr = model.match(badRestRegEX) || [];\n const badModelsNextToEachOther = matchArr.join();\n const atleas2DoubleDots = ((badModelsNextToEachOther.match(new RegExp(':', 'g')) || []).length >= 2);\n if (atleas2DoubleDots && model.search(badModelsNextToEachOther) !== -1) {\n throw new Error(`\n\nBad rest model: ${model}\n\nDo not create rest models like this: /book/author/:bookid/:authorid\nInstead use nested approach: /book/:bookid/author/:authorid\n `)\n };\n Resource.map(e, e);\n Resource.instance.add(e, model ? model : '', entityMapping, circular, customContentType);\n\n return {\n model: (params?: Object) => Resource.instance.api(\n e,\n interpolateParamsToUrl(params, model)\n ),\n replay: (method: Models.HttpMethod) => {\n Resource.getModel(e, model).replay(method);\n },\n get headers() {\n return Resource.getModel(e, model).headers;\n }\n }\n }\n\n\n\n public static reset() {\n Resource.endpoints = {};\n }\n\n\n\n private constructor() {\n setTimeout(() => {\n const zone = this.getZone();\n if (!RestRequest.zone) { RestRequest.zone = zone };\n })\n }\n\n\n public static Cookies = Cookie.Instance;\n\n\n private static map(endpoint: string, url: string): boolean {\n\n log.i('url', url)\n let regex = /(http|https):\\/\\/(\\w+:{0,1}\\w*)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%!\\-\\/]))?/;\n let e = endpoint;\n if (!regex.test(url)) {\n throw `Url address is not correct: ${url}`;\n }\n if (url.charAt(url.length - 1) === '/') url = url.slice(0, url.length - 1);\n log.i('url after', url)\n if (Resource.endpoints[e] !== void 0) {\n Helpers.log('Cannot use map function at the same API endpoint again ('\n + Resource.endpoints[e].url + ')');\n return false;\n }\n Resource.endpoints[e] = {\n url: url,\n models: {},\n entity: null\n };\n log.i('enpoints', Resource.endpoints)\n return true;\n }\n\n\n private static prepareModel(model) {\n if (model.charAt(model.length - 1) === '/') model = model.slice(0, model.length - 1);\n if (model.charAt(0) === '/') model = model.slice(1, model.length);\n return model;\n }\n\n\n\n /**\n * And enipoint to application\n *\n * @param {E} endpoint\n * @param {string} model\n * @returns {boolean}\n */\n private add(endpoint: E, model: string, entity: Mapping.Mapping, circular?: Circ[], customContentType?: RestHeaders) {\n log.i(`I am maping ${model} on ${<any>endpoint}`);\n model = Resource.prepareModel(model);\n\n let e: string;\n e = <string>(endpoint).toString();\n\n if (Resource.endpoints[e] === void 0) {\n console.error('Endpoint is not mapped ! Cannot add model ' + model);\n return;\n }\n if (Resource.endpoints[e].models[model] !== void 0) {\n if (Resource.enableWarnings) console.warn(`Model '${model}' is already defined in endpoint: `\n + Resource.endpoints[e].url);\n return;\n }\n Resource.endpoints[e].models[model] =\n new Rest<T, TA>(Resource.endpoints[e].url\n + '/' + model, Resource.request, {\n endpoint: e,\n path: model,\n entity,\n circular,\n }, customContentType); // TODO put custom content type in meta ?\n return;\n }\n\n\n\n /**\n * Access api throught endpoint\n *\n * @param {E} endpoint\n * @param {string} model\n * @returns {Rest<T, TA>}\n */\n private api(endpoint: E, model: string): Rest<T, TA> {\n\n\n\n\n\n\n if (model.charAt(0) === '/') model = model.slice(1, model.length);\n let e = <string>(endpoint).toString();\n if (Resource.endpoints[e] === void 0) {\n throw `Endpoint: ${<any>endpoint} is not mapped ! Cannot add model: ${model}`;\n }\n let allModels: Object = Resource.endpoints[e].models;\n let orgModel = model;\n model = this.checkNestedModels(model, allModels);\n\n if (Resource.endpoints[e].models[model] === void 0) {\n\n throw `Model '${model}' is undefined in endpoint: ${Resource.endpoints[e].url} `;\n }\n\n let res: Rest<T, TA> = Resource.endpoints[<string>(endpoint).toString()].models[model];\n\n\n\n\n\n\n if (orgModel !== model) {\n let baseUrl = Resource.endpoints[<string>(endpoint).toString()].url;\n\n\n\n res.__rest_endpoint = `${baseUrl}/${orgModel}`;\n } else {\n res.__rest_endpoint = void 0;\n };\n\n\n return res;\n }\n\n\n}\n\n\n\n\n\n\n\n\n\n\n\n\n ;({}); // @--end-of-file-for-module=ng2-rest lib/resource-service.ts","\n\nimport { Observable } from 'rxjs';\nimport { Subscription } from 'rxjs';\nimport { Observer } from 'rxjs';\n\nimport { Models } from '../models';\nimport { Resource } from '../resource-service';\n\n\n\nexport interface RestPromises<A, TA, QP extends Models.UrlParams> {\n get: (queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n head: (queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n query: (queryParams?: QP) => Observable<Models.HttpResponse<TA>>;\n put: (item?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n patch: (item?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n post: (item?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n delete: (queryParams?: QP) => Observable<Models.HttpResponse<A> | any>;\n}\n\nexport interface Model<A, TA, RP extends Object, QP extends Models.UrlParams> {\n (restParams?: RP): RestPromises<A, TA, QP>;\n}\n\n\n\n\n/**\n *\n * @export\n * @abstract\n * @class SimpleResource\n * @extends {Resource<T, A, TA>}\n * @template E Endpoint type\n * @template A Single modle type\n * @template TA Array Model Type\n * @template RP rest url parameters type\n * @template QP query parameter type\n */\nclass ExtendedResource<E, A, TA, RP extends Object, QP extends Models.UrlParams> {\n public static doNotSerializeQueryParams = false;\n public static handlers: Subscription[] = [];\n\n rest: Models.ResourceModel<A, TA>;\n\n /**\n * Get model by rest params\n */\n model: Model<A, TA, RP, QP> = (restParams?: RP) => {\n\n return {\n\n get: (queryPrams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams)\n .get([queryPrams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n },\n\n patch: (item: A, queryParams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams)\n .put(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n\n },\n\n head: (queryPrams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams)\n .head([queryPrams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n },\n\n query: (queryPrams?: QP) => {\n return Observable.create((observer: Observer<TA>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams).\n array\n .get([queryPrams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n },\n\n\n post: (item: A, queryParams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams)\n .post(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n\n },\n\n\n put: (item: A, queryParams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams)\n .put(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n\n },\n\n\n delete: (queryPrams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams)\n .delete([queryPrams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n }\n\n\n }\n }\n\n\n\n\n public constructor(private endpoint: E | string, private path_model: string) {\n this.rest = <any>Resource.create<A, TA>(<any>endpoint, path_model);\n\n }\n\n}\n\n\n\n/**\n *\n * @export\n * @class SimpleResource\n * @template A single model type\n * @template TA array model type\n * @template RP rest parameters type\n * @template QP query parameters type\n */\nexport class SimpleResource<A, TA> {\n model: Model<A, TA, Object, Models.UrlParams>;\n\n\n private static _isSetQueryParamsSerialization = false;\n public static set doNotSerializeQueryParams(value) {\n if (!SimpleResource._isSetQueryParamsSerialization) {\n SimpleResource._isSetQueryParamsSerialization = true;\n ExtendedResource.doNotSerializeQueryParams = value\n return;\n }\n console.warn(`Query params serialization already set as\n ${ExtendedResource.doNotSerializeQueryParams},`);\n }\n\n public static __destroy() {\n ExtendedResource.handlers.forEach(h => h.unsubscribe());\n }\n\n constructor(endpoint: string, model: string) {\n let rest = new ExtendedResource<string, A, TA, Object, Models.UrlParams>(endpoint, model);\n this.model = rest.model;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=ng2-rest lib/other/simple-resource.ts","\n\nexport * from './resource-service';\nexport * from './models';\nexport * from './mapping';\nexport * from './rest.class';\nexport * from './rest-headers';\nexport * from './helpers';\nexport * from './request-cache';\nexport * from './content-type';\nexport { SimpleResource } from './other/simple-resource';\nexport { interpolateParamsToUrl } from './params';\n\n ;({}); // @--end-of-file-for-module=ng2-rest lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Helpers","log","HelpersModels"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng2-rest.mjs","sources":["../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/mapping.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/helpers.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/params.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/rest-headers.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/content-type.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/rest.class.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/cookie.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/request-cache.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/models.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/rest-request.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/resource-service.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/other/simple-resource.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/ng2-rest.ts"],"sourcesContent":["import { _ } from 'tnp-core/websql';\nimport { Helpers } from 'tnp-core/websql';\nimport { Circ, JSON10 } from 'json10/websql';\nimport { walk } from 'lodash-walk-object/websql';\nimport { CLASS, SYMBOL } from 'typescript-class-helpers/websql';\nimport { Helpers as HelpersLog } from 'tnp-core/websql';\n\nexport namespace Mapping {\n\n export function decode(json: Object, autodetect = false): Mapping {\n\n // console.log('DECODE isBrowser', HelpersLog.isBrowser)\n if (_.isUndefined(json)) {\n return void 0;\n }\n\n let mapping = decodeFromDecorator(_.isArray(json) ? _.first(json) : json, !autodetect)\n\n if (autodetect) {\n mapping = _.merge(getMappingNaive(json), mapping);\n }\n\n return mapping;\n }\n\n export function encode<T = Function>(json: Object, mapping: Mapping, circular: Circ[] = []): T {\n if (_.isString(json) || _.isBoolean(json) || _.isNumber(json)) {\n return json as any;\n }\n\n if (mapping['']) {\n const decoratorMapping = getModelsMapping(CLASS.getBy(mapping['']));\n mapping = _.merge(mapping, decoratorMapping)\n }\n\n let res: any;\n if (_.isArray(circular) && circular.length > 0) {\n res = setMappingCirc(json, mapping, circular);\n } else {\n res = setMapping(json, mapping);\n }\n return res;\n }\n\n\n function decodeFromDecorator(json: Object, production = false): Mapping {\n const entityClass = CLASS.getFromObject(json);\n const mappings = getModelsMapping(entityClass);\n return mappings as any;\n }\n\n export function getModelsMapping(entity: Function) {\n\n if (!_.isFunction(entity) || entity === Object) {\n return {};\n }\n const className = CLASS.getName(entity)\n // console.log(`getMaping for: '${className}' `)\n let enityOWnMapping: any[] = _.isArray(entity[SYMBOL.MODELS_MAPPING]) ?\n entity[SYMBOL.MODELS_MAPPING] : [{ '': className }];\n\n let res = {};\n let parents = enityOWnMapping\n .filter(m => !_.isUndefined(m['']) && m[''] !== className)\n .map(m => m['']);\n\n enityOWnMapping.reverse().forEach(m => {\n m = _.cloneDeep(m);\n // console.log(`'${className}' m:`, m)\n Object.keys(m).forEach(key => {\n const v = m[key]\n const isArr = _.isArray(v)\n const model = isArr ? _.first(v) : v;\n if (parents.includes(model)) {\n m[key] = isArr ? [className] : className;\n }\n })\n res = _.merge(res, m)\n })\n res[''] = className;\n // console.log(`mapping for ${className} : ${JSON.stringify(res)}`)\n return res;\n }\n\n\n export type Mapping<T = {}> = {\n [P in keyof T]?: string | string[];\n };\n\n function add(o: Object, path: string, mapping: Mapping = {}) {\n if (!o || Array.isArray(o) || typeof o !== 'object') return;\n const objectClassName = CLASS.getName(Object.getPrototypeOf(o).constructor);\n const resolveClass = CLASS.getBy(objectClassName);\n if (!resolveClass) {\n if (objectClassName !== 'Object') {\n if (Helpers.isBrowser) {\n console.error(`Cannot resolve class \"${objectClassName}\" while mapping.`)\n }\n }\n return;\n }\n if (!mapping[path]) mapping[path] = CLASS.getName(resolveClass) as any;;\n }\n\n /**\n * USE ONLY IN DEVELOPMENT\n * @param c\n * @param path\n * @param mapping\n * @param level\n */\n function getMappingNaive(c: Object, path = '', mapping: Mapping = {}, level = 0) {\n if (Array.isArray(c)) {\n c.forEach(c => getMappingNaive(c, path, mapping, level))\n return mapping;\n }\n if (++level === 16) return;\n add(c, path, mapping);\n for (var p in c) {\n if (c.hasOwnProperty(p)) {\n const v = c[p];\n if (Array.isArray(v) && v.length > 0) { // reducer as impovement\n v.forEach((elem, i) => {\n // const currentPaht = [`path[${i}]`, p].filter(c => c.trim() != '').join('.');\n const currentPaht = [path, p].filter(c => c.trim() != '').join('.');\n getMappingNaive(elem, currentPaht, mapping, level);\n })\n } else if (typeof v === 'object') {\n const currentPaht = [path, p].filter(c => c.trim() != '').join('.');\n add(v, currentPaht, mapping);\n getMappingNaive(v, currentPaht, mapping, level);\n }\n }\n }\n return mapping;\n }\n\n function getMappingPathFrom(pathLodhas: string) {\n if (!_.isString(pathLodhas)) {\n return void 0;\n }\n const regex = /\\[([0-9a-zA-Z]|\\'|\\\")*\\]/g;\n pathLodhas = pathLodhas\n .replace(regex, '')\n .replace('..', '.');\n if (pathLodhas.startsWith('.')) {\n pathLodhas = pathLodhas.slice(1)\n }\n return pathLodhas;\n }\n\n function setMappingCirc(json: Object, mapping: Mapping = {}, circular: Circ[] = []) {\n\n const mainClassFn = !_.isArray(json) && CLASS.getBy(mapping['']);\n // console.log(mapping)\n walk.Object(json, (v, lodashPath, changeValue) => {\n if (!_.isUndefined(v) && !_.isNull(v)) {\n const mappingPath = getMappingPathFrom(lodashPath)\n if (!_.isUndefined(mapping[mappingPath])) {\n const isArray = _.isArray(mapping[mappingPath]);\n if (!isArray) {\n const className = isArray ? _.first(mapping[mappingPath]) : mapping[mappingPath];\n const classFN = CLASS.getBy(className)\n if (_.isFunction(classFN)) {\n // console.log(`mapping: '${mappingPath}', lp: '${lodashPath}' class: '${className}' , set `, v.location)\n changeValue(_.merge(new (classFN as any)(), v))\n }\n }\n }\n }\n })\n\n circular.forEach(c => {\n const ref = _.get(json, c.circuralTargetPath)\n _.set(json, c.pathToObj, ref)\n })\n\n if (_.isFunction(mainClassFn)) {\n json = _.merge(new (mainClassFn as any)(), json)\n }\n\n return json;\n }\n\n\n\n function setMapping(json: Object, mapping: Mapping = {}) {\n\n // console.log('mapping', mapping)\n if (Array.isArray(json)) {\n return json.map(j => {\n return setMapping(j, mapping)\n })\n }\n\n const mainClassFn = CLASS.getBy(mapping['']);\n\n for (const key in json) {\n if (json.hasOwnProperty(key)) {\n // if (mainClassFn && mainClassFn.name === 'Project') {\n // // console.log(`OWn property: \"${key}\"`)\n // }\n if (_.isArray(json[key])) {\n json[key] = json[key].map(arrObj => {\n const objMapping = getModelsMapping(CLASS.getBy(mapping[key]))\n return setMapping(arrObj, objMapping)\n })\n } else if (_.isObject(json[key])) {\n const objMapping = getModelsMapping(CLASS.getBy(mapping[key]))\n json[key] = setMapping(json[key], objMapping)\n }\n }\n // else {\n // if (mainClassFn && mainClassFn.name === 'Project') {\n // // console.log(`Not own property: \"${key}\"`)\n // }\n // }\n }\n\n Object\n .keys(mapping)\n .filter(key => key !== '' && key.split('.').length >= 2)\n .forEach(lodasPath => {\n // console.log(`Loadsh path: ${lodasPath}`)\n const objMapping = getModelsMapping(CLASS.getBy(mapping[lodasPath]))\n const input = _.get(json, lodasPath)\n if (!_.isUndefined(input)) {\n const res = setMapping(input, objMapping)\n _.set(json, lodasPath, res)\n }\n })\n\n if (!mainClassFn) {\n return json;\n }\n return _.merge(new (mainClassFn as any)(), json)\n }\n\n\n\n\n export type ModelValue<T> = {\n /**\n * Inside models types\n */\n [propName in keyof T]?: T[propName];\n };\n\n\n export function DefaultModelWithMapping<T = Object>(\n defaultModelValues?: ModelValue<T>,\n mapping?: Mapping<T>\n ) {\n return function (target: Function) {\n\n if (!_.isArray(target[SYMBOL.MODELS_MAPPING])) {\n target[SYMBOL.MODELS_MAPPING] = [];\n }\n\n (target[SYMBOL.MODELS_MAPPING] as any[]).push({ '': CLASS.getName(target) });\n if (_.isObject(mapping)) {\n target[SYMBOL.MODELS_MAPPING] = (target[SYMBOL.MODELS_MAPPING] as any[]).concat(mapping)\n Object.keys(mapping)\n .forEach(key => {\n const v = mapping;\n if (_.isUndefined(v) || _.isFunction(v)) {\n throw `\n\n\n Class: '${target.name}'\n[ng2rest] Bad mapping value for path: ${key} , please use type: <string> or [<string>]\n`;\n\n }\n });\n }\n\n\n if (_.isObject(defaultModelValues)) {\n const toMerge = {};\n const describedTarget = CLASS\n .describeProperites(target)\n .filter(prop => /^([a-zA-Z0-9]|\\_|\\#)+$/.test(prop))\n // console.log(`describedTarget: ${describedTarget} for ${target.name}`)\n describedTarget.forEach(propDefInConstr => {\n if (defaultModelValues[propDefInConstr]) {\n console.warn(`\n\n CONFLICT: default value for property: \"${propDefInConstr}\"\n in class \"${target.name}\" already defined as typescript\n default class proprty value.\n\n `)\n } else {\n toMerge[propDefInConstr] = null; // TODO from toString I can't know that\n }\n });\n\n // console.log(`merge \"${JSON.stringify(target.prototype)}\" with \"${JSON.stringify(defaultModelValues)}\"`)\n\n target[SYMBOL.DEFAULT_MODEL] = _.merge(toMerge, defaultModelValues);\n\n const propsToOmmit = Object\n .keys(target[SYMBOL.DEFAULT_MODEL])\n .filter(key => {\n const descriptor = Object\n .getOwnPropertyDescriptor(target.prototype, key);\n return !!descriptor;\n });\n _.merge(target.prototype, _.omit(target[SYMBOL.DEFAULT_MODEL], propsToOmmit));\n\n // console.log(`DEFAULT VALUE MERGE for ${target.name}`)\n }\n }\n }\n\n}\n","import { _ } from 'tnp-core/websql';\nimport { CoreHelpers } from 'tnp-core/websql';\nimport { Mapping } from './mapping';\nimport { JSON10 } from 'json10/websql';\n\n// @ts-ignore\nexport class Helpers extends CoreHelpers {\n\n static JSON = JSON10;\n\n static get Mapping() {\n return {\n encode<T = Function>(json: Object, mapping: Mapping.Mapping): T {\n return Mapping.encode(json, mapping);\n },\n decode(json: Object, autodetect = false ): Mapping.Mapping {\n return Mapping.decode(json, autodetect)\n }\n }\n }\n\n static checkValidUrl(url: string): boolean {\n let regex = /(http|https):\\/\\/(\\w+:{0,1}\\w*)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%!\\-\\/]))?/;\n return regex.test(url);\n }\n\n\n\n}\n","import { diffChars } from 'diff';\nimport { _ } from 'tnp-core/websql';\nimport { Log, Level } from 'ng2-logger/websql';\nimport { Models } from './models';\nimport { Helpers } from './helpers';\n\nconst log = Log.create('[ng2-rest] params', Level.__NOTHING)\n\n\n\n/** check if string is a valid pattern */\nexport function isValid(pattern: string) {\n return (new RegExp('\\/:[a-zA-Z]*', 'g')).test(pattern.replace('://', ''));\n}\n\nexport function check(url: string, pattern: string): boolean {\n if (!Helpers.checkValidUrl(url)) {\n log.error(`Incorrect url: ${url}`);\n return false;\n }\n if (url.charAt(url.length - 1) === '/') url = url.slice(0, url.length - 2);\n if (pattern.charAt(pattern.length - 1) === '/') pattern = pattern.slice(0, url.length - 2);\n pattern = pattern.replace(/\\//g, '\\/');\n pattern = pattern.replace(new RegExp('\\/:[a-zA-Z]*', 'g'), '.+');\n let reg = new RegExp(pattern, 'g');\n return reg.test(url);\n}\n\nexport function getModels(pattern: string): string[] {\n let m = pattern.match(new RegExp('[a-z-A-Z]*\\/:', 'g'));\n return m.map(p => p.replace('/:', ''));\n}\n\nexport function getRestPramsNames(pattern: string): string[] {\n if (pattern.charAt(pattern.length - 1) !== '/') pattern = `${pattern}/`;\n let m = pattern.match(new RegExp(':[a-zA-Z]*\\/', 'g'));\n let res = m.map(p => p.replace(':', '').replace('/', ''));\n return res.filter(p => p.trim() !== '');\n}\n\nexport function containsModels(url: string, models: string[]): boolean {\n if (url.charAt(0) !== '/') url = '/' + url;\n // url = url.replace(new RegExp('\\/', 'g'), '');\n let res = models.filter(m => {\n let word = '/' + m;\n // log.d('word', word)\n let iii = url.indexOf(word);\n // log.d('iii', iii)\n if (iii + word.length < url.length && url.charAt(iii + word.length) !== '/') {\n return false;\n }\n if (iii !== -1) {\n url = url.replace(new RegExp('\\/' + m, 'g'), '');\n return true;\n }\n return false;\n }).length;\n // log.d('containsModels', res);\n return res === models.length;\n}\n\nexport function stars(n: number): string {\n let res = '';\n for (let i = 0; i < n; i++) res += '*';\n return res;\n}\n\nexport function getRestParams(url: string, pattern: string): Object {\n let res = {};\n let models = getRestPramsNames(pattern);\n // log.d('models', models);\n models.forEach(m => {\n pattern = pattern.replace(`:${m}`, stars(m.length));\n })\n\n let currentModel: string = void 0;\n diffChars(pattern, url).forEach(d => {\n // log.d('d', d);\n if (d.added) {\n if (!isNaN(Number(d.value))) res[currentModel] = Number(d.value);\n else if (d.value.trim() === 'true') res[currentModel] = true;\n else if (d.value.trim() === 'false') res[currentModel] = false;\n else res[currentModel] = decodeURIComponent(d.value);\n currentModel = void 0;\n }\n let m = d.value.replace(':', \"\");\n // log.d('model m', m)\n if (d.removed) {\n currentModel = models.shift();\n }\n });\n return res;\n}\n\nexport const regexisPath = /[^\\..]+(\\.[^\\..]+)+/g;\n\n/**\n * Models like books/:id\n */\nfunction cutUrlModel(params: Object, models: string[], output: string[]) {\n if (models.length === 0) return output.join('\\/');\n let m = models.pop();\n\n let param = m.match(/:[a-zA-Z0-9\\.]+/)[0].replace(':', '');\n const paramIsPath = regexisPath.test(param)\n // log.i('cut param', param)\n let model = m.match(/[a-zA-Z0-9]+\\//)[0].replace('\\/', '');\n if (params === void 0 ||\n (paramIsPath ? _.get(params, param) === void 0 : params[param] === void 0) ||\n param === 'undefined') {\n output.length = 0;\n output.unshift(model)\n return cutUrlModel(params, models, output);\n } else {\n if (paramIsPath) {\n // log.i('param is path', param)\n let mrep = m.replace(new RegExp(`:${param}`, 'g'), `${_.get(params, param)}`)\n output.unshift(mrep)\n return cutUrlModel(params, models, output);\n } else {\n // log.i('param is normal', param)\n let mrep = m.replace(new RegExp(`:${param}`, 'g'), `${params[param]}`)\n output.unshift(mrep)\n return cutUrlModel(params, models, output);\n }\n\n }\n}\n\n\nexport function interpolateParamsToUrl(params: Object, url: string): string {\n\n const regexInt = /\\[\\[([^\\..]+\\.[^\\..]+)+\\]\\]/g;\n\n url = url.split('/').map(p => {\n // log.d('url parts', p)\n let isParam = p.startsWith(':')\n if (isParam) {\n let part = p.slice(1);\n // log.d('url param part', p)\n if (regexInt.test(part)) {\n // let level = (url.split('.').length - 1)\n part = part.replace('[[', '')\n part = part.replace(']]', '')\n }\n return `:${part}`\n }\n return p;\n }).join('/');\n\n // log.i('URL TO EXPOSE', url)\n\n // log.i('params', params)\n\n let slash = {\n start: url.charAt(0) === '\\/',\n end: url.charAt(url.length - 1) === '\\/'\n }\n\n let morePramsOnEnd = url.match(/(\\/:[a-zA-Z0-9\\.]+){2,10}/g);\n if (morePramsOnEnd && (Array.isArray(morePramsOnEnd) && morePramsOnEnd.length === 1)) {\n // log.i('morePramsOnEnd', morePramsOnEnd)\n let m = morePramsOnEnd[0];\n let match = m.match(/\\/:[a-zA-Z0-9\\.]+/g);\n // log.i('match', match)\n match.forEach(e => {\n let c = e.replace('\\/:', '');\n // log.i('c', c)\n if (regexisPath.test(c)) {\n url = url.replace(e, `/${_.get(params, c)}`)\n } else {\n url = url.replace(e, `/${params[c]}`)\n }\n\n\n // log.i('prog url', url)\n })\n return url;\n }\n\n let nestedParams = url.match(/[a-zA-Z0-9]+\\/:[a-zA-Z0-9\\.]+/g);\n if (!nestedParams || (Array.isArray(nestedParams) && nestedParams.length === 0)) return url;\n\n // check alone params\n if (!slash.end) url = `${url}/`;\n let addUndefinedForAlone = (!/:[a-zA-Z0-9\\.]+\\/$/g.test(url) && /[a-zA-Z0-9]+\\/$/g.test(url));\n\n let replace = (nestedParams.length > 1 ? nestedParams.join('\\/') : nestedParams[0]) +\n (addUndefinedForAlone ? '\\/' + url.match(/[a-zA-Z0-9]+\\/$/g)[0] : '\\/');\n let beginHref = url.replace(replace, '')\n\n if (addUndefinedForAlone) {\n url = url.replace(/\\/$/g, '/:undefined')\n nestedParams = url.match(/[a-zA-Z0-9]+\\/:[a-zA-Z0-9\\.]+/g);\n url = cutUrlModel(params, nestedParams, [])\n } else {\n url = cutUrlModel(params, nestedParams, [])\n }\n url = beginHref + url;\n\n if (url.charAt(url.length - 1) !== '/' && slash.end) url = `${url}/`;\n if (url.charAt(0) !== '\\/' && slash.start) url = `/${url}`;\n\n return url;\n}\n\n/**\n * Get query params from url, like 'ex' in /api/books?ex=value\n*/\nexport function decodeUrl(url: string): Object {\n let regex = /[?&]([^=#]+)=([^&#]*)/g,\n params = {},\n match;\n while (match = regex.exec(url)) {\n params[decodeURIComponent(match[1])] = decodeURIComponent(match[2]);\n }\n let paramsObject = <Object>params;\n for (let p in paramsObject) {\n if (paramsObject[p] === void 0) {\n delete paramsObject[p];\n continue;\n }\n if (paramsObject.hasOwnProperty(p)) {\n // chcek if property is number\n let n = Number(params[p]);\n if (!isNaN(n)) {\n params[p] = n;\n continue;\n }\n if (typeof params[p] === 'string') {\n\n // check if property is object\n let json;\n try {\n json = JSON.parse(params[p]);\n } catch (error) { }\n if (json !== void 0) {\n params[p] = json;\n continue;\n }\n\n // chcek if property value is like regular rexpression\n // let regexExpression;\n // try {\n // regexExpression = new RegExp(params[p]);\n // } catch (e) { }\n // if (regexExpression !== undefined) params[p] = regexExpression;\n }\n }\n }\n return params;\n}\n\n/**\n * Create query params string for url\n *\n * @export\n * @param {UrlParams[]} params\n * @returns {string}\n */\nexport function getParamsUrl(params: Models.UrlParams[], doNotSerialize: boolean = false): string {\n let urlparts: string[] = [];\n if (!params) return '';\n if (!(params instanceof Array)) return '';\n if (params.length === 0) return '';\n\n params.forEach(urlparam => {\n if (JSON.stringify(urlparam) !== '{}') {\n\n let parameters: string[] = [];\n let paramObject = <Object>urlparam;\n\n\n for (let p in paramObject) {\n if (paramObject[p] === void 0) delete paramObject[p];\n if (paramObject.hasOwnProperty(p) && typeof p === 'string' && p !== 'regex' && !(paramObject[p] instanceof RegExp)) {\n if (p.length > 0 && p[0] === '/') {\n let newName = p.slice(1, p.length - 1);\n urlparam[newName] = urlparam[p];\n urlparam[p] = void 0;\n p = newName;\n }\n if (p.length > 0 && p[p.length - 1] === '/') {\n let newName = p.slice(0, p.length - 2);\n urlparam[newName] = urlparam[p];\n urlparam[p] = void 0;\n p = newName;\n }\n let v: any = urlparam[p];\n if (v instanceof Object) {\n urlparam[p] = JSON.stringify(urlparam[p]);\n }\n urlparam[p] = doNotSerialize ? <string>urlparam[p] : encodeURIComponent(<string>urlparam[p]);\n if (urlparam.regex !== void 0 && urlparam.regex instanceof RegExp) {\n\n if (!urlparam.regex.test(<string>urlparam[p])) {\n console.warn(`Data: ${urlparam[p]} incostistent with regex ${urlparam.regex.source}`);\n }\n }\n parameters.push(`${p}=${urlparam[p]}`);\n }\n\n }\n\n urlparts.push(parameters.join('&'));\n\n\n }\n\n\n });\n let join = urlparts.join().trim();\n if (join.trim() === '') return '';\n return `?${urlparts.join('&')}`;\n}\n\n\nfunction transform(o) {\n if (typeof o === 'object') {\n return encodeURIComponent(JSON.stringify(o));\n }\n return o;\n}\n\n\nexport function prepareUrlOldWay(params?: TemplateStringsArray): string {\n if (!params) return this.endpoint;\n if (typeof params === 'object') {\n params = transform(params);\n }\n return this.endpoint + '/' + params;\n}\n\n","/**\n * Based on Headers from https://github.com/angular/angular/blob/master/packages/http/src/headers.ts\n */\nexport type RestHeadersOptions = RestHeaders | { [name: string]: (string | string[]) }\n\nexport class RestHeaders {\n /** @internal header names are lower case */\n _headers: Map<string, string[]> = new Map();\n /** @internal map lower case names to actual names */\n _normalizedNames: Map<string, string> = new Map();\n\n\n public static from(headers?: RestHeadersOptions) {\n if (!headers) {\n return void 0;\n }\n return new RestHeaders(headers);\n }\n\n private constructor(headers?: RestHeaders | { [name: string]: (string | string[]) }) {\n if (headers instanceof RestHeaders) {\n headers.forEach((values: string[], name: string) => {\n values.forEach(value => this.set(name, value));\n });\n } else {\n Object.keys(headers).forEach((name: string) => {\n const values: string[] = (Array.isArray(headers[name]) ? headers[name] : [headers[name]]) as any;\n this.delete(name);\n values.forEach(value => this.set(name, value));\n });\n }\n }\n\n /**\n * Returns a new RestHeaders instance from the given DOMString of Response RestHeaders\n */\n static fromResponseHeaderString(headersString: string): RestHeaders {\n const headers = new RestHeaders();\n // console.log({\n // headersString\n // })\n headersString.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const value = line.slice(index + 1).trim();\n headers.set(name, value);\n }\n });\n\n return headers;\n }\n\n /**\n * Appends a header to existing list of header values for a given header name.\n */\n append(name: string, value: string): void {\n const values = this.getAll(name);\n\n if (values === null) {\n this.set(name, value);\n } else {\n values.push(value);\n }\n }\n\n /**\n * Deletes all header values for the given name.\n */\n delete(name: string): void {\n const lcName = name.toLowerCase();\n this._normalizedNames.delete(lcName);\n this._headers.delete(lcName);\n }\n\n forEach(fn: (values: string[], name: string, headers: Map<string, string[]>) => void): void {\n this._headers.forEach(\n (values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));\n }\n\n /**\n * Returns first header that matches given name.\n */\n get(name: string): string {\n const values = this.getAll(name);\n\n if (values === null) {\n return null;\n }\n\n return values.length > 0 ? values[0] : null;\n }\n\n /**\n * Checks for existence of header by given name.\n */\n has(name: string): boolean { return this._headers.has(name.toLowerCase()); }\n\n /**\n * Returns the names of the headers\n */\n keys(): string[] { return Array.from(this._normalizedNames.values()); }\n\n /**\n * Sets or overrides header value for given name.\n */\n set(name: string, value: string | string[]): void {\n if (Array.isArray(value)) {\n if (value.length) {\n this._headers.set(name.toLowerCase(), [value.join(',')]);\n }\n } else {\n this._headers.set(name.toLowerCase(), [value]);\n }\n this.mayBeSetNormalizedName(name);\n }\n\n /**\n * Returns values of all headers.\n */\n values(): string[][] { return Array.from(this._headers.values()); }\n\n /**\n * Returns string of all headers.\n */\n // TODO(vicb): returns {[name: string]: string[]}\n toJSON(): { [name: string]: any } {\n const serialized: { [name: string]: string[] } = {};\n if (!this._headers) {\n // debugger\n\n }\n // console.log('serializing headers',this._headers)\n this._headers.forEach((values: string[], name: string) => {\n const split: string[] = [];\n values.forEach(v => split.push(...v.split(',')));\n // console.log({\n // values\n // })\n // values.forEach(v => split.push(...(v ? v : '').split(',')));\n serialized[this._normalizedNames.get(name)] = split;\n });\n\n return serialized;\n }\n\n /**\n * Returns list of header values for a given name.\n */\n getAll(name: string): string[] {\n return this.has(name) ? this._headers.get(name.toLowerCase()) : null;\n }\n\n private mayBeSetNormalizedName(name: string): void {\n const lcName = name.toLowerCase();\n\n if (!this._normalizedNames.has(lcName)) {\n this._normalizedNames.set(lcName, name);\n }\n }\n}\n\n","import { RestHeaders } from \"./rest-headers\";\n\n\nexport const CONTENT_TYPE = {\n APPLICATION_JSON: RestHeaders.from({\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n }),\n APPLICATINO_VND_API_JSON: RestHeaders.from({\n 'Content-Type': 'application/vnd.api+json',\n 'Accept': 'application/vnd.api+json'\n }),\n}\n","//#region import\nimport { Log, Level } from 'ng2-logger/websql';\n// const log = Log.create('rest.class', Level.__NOTHING)\n// local\nimport { Models } from './models';\nimport { getRestParams, getParamsUrl } from './params';\nimport { RestRequest } from './rest-request';\nimport { RestHeaders } from './rest-headers';\nimport { CONTENT_TYPE } from './content-type';\nimport { CLASS } from 'typescript-class-helpers/websql';\n//#endregion\n\nexport class Rest<T, TA = T[]> implements Models.FnMethodsHttpWithMock<T, TA> {\n\n private mockHttp: Models.MockHttp;\n mock(mock: Models.MockHttp): Models.FnMethodsHttp<T, TA> {\n if ((typeof mock === 'function') || (typeof mock === 'object')) {\n this.mockHttp = mock;\n } else {\n throw `[ng2-rest]\n .model(...)\n .mock( < BAD MOCK DATA > )\n ...\n `\n }\n return this;\n }\n\n\n\n //#region private fields\n private __meta_endpoint: string;\n private _endpointRest: string;\n private get endpoint() {\n let e = this.__meta_endpoint;\n if (this.restQueryParams !== void 0 && this._endpointRest !== void 0\n && typeof this._endpointRest === 'string' && this._endpointRest.trim() !== '') e = this._endpointRest;\n return e;\n }\n private restQueryParams: Object;\n public set __rest_endpoint(endpoint) {\n this._endpointRest = endpoint;\n if (endpoint === void 0) {\n this.restQueryParams = void 0;\n } else {\n this.restQueryParams = getRestParams(endpoint, this.__meta_endpoint);\n }\n\n }\n\n private creatUrl(params: any, doNotSerializeParams: boolean = false) {\n return `${this.endpoint}${getParamsUrl(params, doNotSerializeParams)}`;\n }\n\n //#endregion\n\n //#region constructor\n private _headers = RestHeaders.from(CONTENT_TYPE.APPLICATION_JSON);\n get headers() {\n return this._headers;\n }\n constructor(\n endpoint: string,\n private request: RestRequest,\n private meta: Models.MetaRequest,\n private customContentType: RestHeaders,\n ) {\n this.__meta_endpoint = endpoint;\n\n }\n //#endregion\n\n //#region req\n\n private req(method: Models.HttpMethod,\n requestBody: T,\n params?: Models.UrlParams[],\n doNotSerializeParams: boolean = false,\n isArray: boolean = false\n ) {\n\n const modelUrl = this.creatUrl(params, doNotSerializeParams);\n const body = (CLASS.getNameFromObject(requestBody) === 'FormData')\n ? requestBody\n : (requestBody ? JSON.stringify(requestBody) : void 0);\n\n // console.log('this.customContentType', this.customContentType)\n if (this.customContentType) {\n const customHeaderKeys = this.customContentType.keys();\n const currentHeaderKeys = this._headers.keys();\n currentHeaderKeys\n .filter(key => !customHeaderKeys.includes(key))\n .forEach(key => {\n this.customContentType.set(key, this._headers.get(key));\n });\n this._headers = this.customContentType;\n } else {\n this._headers = RestHeaders.from(CONTENT_TYPE.APPLICATION_JSON);\n }\n\n // console.log(\"_headers\", this.headers)\n\n const result = this.request[method.toLowerCase()](\n modelUrl,\n body,\n this.headers,\n this.meta,\n isArray,\n this.mockHttp\n );\n\n this.mockHttp = void 0;\n return result;\n }\n //#endregion\n\n //#region http methods\n\n //#region replay\n replay(method: Models.HttpMethod) {\n this.request.replay(method, this.meta);\n }\n //#endregion\n\n array = {\n get: (params: Models.UrlParams[] = void 0, doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('get', void 0, params, doNotSerializeParams, true) as any\n },\n head: (params: Models.UrlParams[] = void 0, doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('head', void 0, params, doNotSerializeParams, true) as any\n },\n post: (item: TA, params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('post', item as any, params, doNotSerializeParams, true) as any;\n },\n put: (item: TA, params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('put', item as any, params, doNotSerializeParams, true) as any;\n },\n patch: (item: TA, params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('patch', item as any, params, doNotSerializeParams, true) as any;\n },\n delete: (params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('delete', void 0, params, doNotSerializeParams, true) as any;\n },\n jsonp: (params?: Models.UrlParams[], doNotSerializeParams?: boolean): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('jsonp', void 0, params, doNotSerializeParams, true) as any;\n }\n }\n\n get(params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('get', void 0, params, doNotSerializeParams) as any;\n }\n\n head(params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('head', void 0, params, doNotSerializeParams) as any;\n }\n\n post(item: T, params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('post', item, params, doNotSerializeParams);\n }\n\n put(item: T, params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('put', item, params, doNotSerializeParams);\n }\n\n patch(item: T, params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('patch', item, params, doNotSerializeParams);\n }\n\n delete(params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('delete', void 0, params, doNotSerializeParams);\n }\n\n jsonp(params?: Models.UrlParams[], doNotSerializeParams: boolean = false): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('jsonp', void 0, params, doNotSerializeParams);\n }\n //#endregion\n\n}\n","export class Cookie {\n\n public static get Instance(): Cookie {\n if (!Cookie.__instance) {\n Cookie.__instance = new Cookie();\n }\n return Cookie.__instance as any;\n }\n private static __instance;\n\n private constructor() {\n }\n\n read(name: string) {\n var result = new RegExp('(?:^|; )' + encodeURIComponent(name) + '=([^;]*)').exec(document.cookie);\n return result ? result[1] : null;\n }\n\n write(name: string, value: string, days?: number) {\n if (!days) {\n days = 365 * 20;\n }\n\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n\n var expires = \"; expires=\" + date.toUTCString();\n\n document.cookie = name + \"=\" + value + expires + \"; path=/\";\n }\n\n remove(name: string) {\n this.write(name, \"\", -1);\n }\n\n}\n","import { _ } from 'tnp-core/websql';\nimport { Models } from './models';\nimport { Log, Level } from 'ng2-logger/websql';\nimport { Helpers } from 'tnp-core/websql';\nimport { RestHeaders } from './rest-headers';\nconst log = Log.create('request-cache', Level.__NOTHING)\n\n/**\n * @deprecated\n * there is Cache API for that\n */\nexport class RequestCache {\n\n static readonly LOCAL_STORAGE_KEY = 'ng2restrequestcache';\n\n private static cached: RequestCache[] = [];\n private static isRestoredFromLocalStorage = false;\n\n private static restoreFromLocalStorage() {\n if (Helpers.isNode) {\n return;\n }\n if (!RequestCache.isRestoredFromLocalStorage) {\n RequestCache.isRestoredFromLocalStorage = true;\n const data = localStorage.getItem(RequestCache.LOCAL_STORAGE_KEY);\n let requests: RequestCache[] = [];\n if (data) {\n try {\n requests = JSON.parse(data) as RequestCache[];\n } catch (error) {\n\n }\n const restored = requests.map(r => {\n let { sourceRequest, responseText, body, headers, circular,\n entity, isArray, cookies, statusCode } = r.response;\n r.response = new Models.HttpResponse(\n sourceRequest,\n responseText,\n RestHeaders.from(headers),\n statusCode,\n entity,\n circular,\n -1, // jobid from local storage TODO\n isArray,\n );\n r = new RequestCache(r.response);\n r.response.rq = r;\n\n return r;\n });\n log.i('RESTORED FROM LOCAL STORAGE', restored);\n RequestCache.cached = restored;\n }\n\n }\n }\n\n public static findBy(sourceRequest: Models.HandleResultSourceRequestOptions) {\n log.i('findby', sourceRequest)\n log.i('RequestCache.cached', RequestCache.cached)\n RequestCache.restoreFromLocalStorage();\n return RequestCache.cached.find(c => {\n const a = c.response.sourceRequest;\n const b = sourceRequest;\n return (\n a.isArray === b.isArray &&\n a.url === b.url &&\n a.method === b.method &&\n a.body === b.body\n )\n });\n }\n\n\n\n\n constructor(\n public response: Models.HttpResponse<any>\n ) {\n\n }\n\n get containsCache() {\n RequestCache.restoreFromLocalStorage();\n return RequestCache.cached.includes(this);\n }\n\n private persistsInLocalStorage() {\n localStorage.setItem(RequestCache.LOCAL_STORAGE_KEY,\n JSON.stringify(RequestCache.cached.map(r => {\n return {\n response: {\n sourceRequest: r.response.sourceRequest,\n responseText: r.response.responseText,\n headers: r.response.headers,\n statusCode: r.response.statusCode,\n entity: r.response.entity,\n circular: r.response.circular,\n isArray: r.response.isArray,\n } as Models.HttpResponse<any>\n };\n })));\n }\n\n store() {\n RequestCache.restoreFromLocalStorage();\n if (!this.containsCache) {\n RequestCache.cached.push(this);\n this.persistsInLocalStorage();\n } else {\n console.log('already stored');\n }\n return this;\n }\n\n remove() {\n RequestCache.restoreFromLocalStorage();\n const index = RequestCache.cached.indexOf(this);\n if (index !== -1) {\n RequestCache.cached.splice(index, 1);\n this.persistsInLocalStorage();\n } else {\n console.log('already removed');\n }\n }\n\n}\n","import { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { Log, Level } from 'ng2-logger/websql';\nimport { RestHeaders } from './rest-headers';\nimport { Rest } from './rest.class';\nimport { Cookie } from './cookie';\nimport { Mapping } from './mapping';\nimport { AxiosResponse } from 'axios';\nimport { Models as HelpersModels } from 'typescript-class-helpers/websql';\nimport { JSON10, Circ } from 'json10/websql';\nimport { RequestCache } from './request-cache';\nimport { _ } from 'tnp-core/websql';\nimport { CoreModels } from 'tnp-core/websql';\nimport { Helpers } from 'tnp-core/websql';\n/* */\n/* */\n \n// const log = Log.create('rest namespace', Level.__NOTHING)\n\nexport namespace Models {\n export import HttpMethod = CoreModels.HttpMethod;\n export import ParamType = CoreModels.ParamType;\n\n export import MethodConfig = HelpersModels.MethodConfig;\n export import ClassConfig = HelpersModels.ClassConfig;\n export import ParamConfig = HelpersModels.ParamConfig;\n\n export interface HandleResultOptions {\n res: Models.MockResponse;\n method: Models.HttpMethod;\n jobid?: number;\n isArray?: boolean;\n }\n\n export interface HandleResultSourceRequestOptions {\n url: string;\n method: Models.HttpMethod;\n // headers?: RestHeaders,\n body: any;\n isArray: boolean;\n }\n\n export type BackendError = {\n msg?: string;\n stack?: string[];\n data: any;\n };\n\n export type MetaRequest = {\n path: string;\n endpoint: string;\n entity: Mapping.Mapping;\n circular: Circ[];\n };\n export type HttpCode = 200 | 400 | 401 | 404 | 500;\n\n export type PromiseObservableMix<T> = Promise<T> & {\n cache?: RequestCache;\n observable: Observable<T>;\n };\n\n export type MethodWithoutBody<E, T, R = PromiseObservableMix<E>> = (\n params?: UrlParams[],\n doNotSerializeParams?: boolean,\n ) => R;\n export type MethodWithBody<E, T, R = PromiseObservableMix<E>> = (\n item?: T,\n params?: UrlParams[],\n doNotSerializeParams?: boolean,\n ) => R;\n export type ReplayData = {\n subject: Subject<any>;\n data: { url: string; body: string; headers: RestHeaders; isArray: boolean };\n /**\n * jobid\n */\n id: number;\n };\n export type ReqParams = {\n url: string;\n method: CoreModels.HttpMethod;\n headers?: RestHeaders;\n body?: any;\n jobid: number;\n isArray: boolean;\n };\n\n export interface ResourceModel<A, TA> {\n model: (pathModels?: Object, responseObjectType?: Function) => Rest<A, TA>;\n replay: (method: CoreModels.HttpMethod) => void;\n headers: RestHeaders;\n }\n\n export interface Ng2RestMethods<E, T> {\n get: MethodWithoutBody<E, T>;\n post: MethodWithBody<E, T>;\n put: MethodWithBody<E, T>;\n patch: MethodWithBody<E, T>;\n head: MethodWithoutBody<E, T>;\n delete: MethodWithoutBody<E, T>;\n jsonp: MethodWithoutBody<E, T>;\n }\n\n export type MockController = (\n url: string,\n method: CoreModels.HttpMethod,\n headers?: RestHeaders,\n body?: any,\n ) => MockResponse;\n\n export type MockHttp = MockResponse | MockController;\n\n export interface FnMethodsHttp<T, TA>\n extends Ng2RestMethods<HttpResponse<T>, T> {\n array: Ng2RestMethods<HttpResponse<TA>, TA>;\n }\n\n export interface FnMethodsHttpWithMock<T, TA>\n extends Ng2RestMethods<HttpResponse<T>, T> {\n array: Ng2RestMethods<HttpResponse<TA>, TA>;\n mock(mock: MockHttp, code: HttpCode): FnMethodsHttp<T, TA>;\n }\n\n export interface NestedParams {\n [params: string]: string;\n }\n\n export interface UrlParams {\n [urlModelName: string]: string | number | boolean | RegExp | Object;\n regex?: RegExp;\n }\n [];\n\n export abstract class BaseBody {\n protected toJSON(data, isJSONArray = false) {\n let r = isJSONArray ? [] : {};\n if (typeof data === 'string') {\n try {\n r = JSON.parse(data);\n } catch (e) {}\n } else if (typeof data === 'object') {\n return data;\n }\n return r as any;\n }\n }\n\n export class HttpBody<T> extends BaseBody {\n constructor(\n private responseText: string | Blob,\n private isArray = false,\n private entity: Mapping.Mapping,\n private circular: Circ[],\n ) {\n super();\n }\n\n public get blob(): Blob {\n return this.responseText as Blob;\n }\n\n public get booleanValue(): boolean | undefined {\n if (!Helpers.isBlob(this.responseText)) {\n return ['ok', 'true'].includes((this.responseText as string).trim());\n }\n }\n\n public get numericValue(): number | undefined {\n if (!Helpers.isBlob(this.responseText)) {\n return Number(this.responseText?.trim());\n }\n }\n\n public get rawJson(): Partial<T> {\n if (!Helpers.isBlob(this.responseText)) {\n let res = this.toJSON(this.responseText, this.isArray);\n if (this.circular && Array.isArray(this.circular)) {\n res = JSON10.parse(JSON.stringify(res), this.circular);\n }\n\n return res;\n }\n }\n\n public get json(): T {\n\n const isBlob = Helpers.isBlob(this.responseText);\n if (isBlob) {\n return void 0;\n }\n if (this.entity && typeof this.entity === 'function') {\n return this.entity(); // @LAST\n }\n if (this.entity && typeof this.entity === 'object') {\n const json = this.toJSON(this.responseText, this.isArray);\n return Mapping.encode(json, this.entity, this.circular) as any;\n }\n let res = this.toJSON(this.responseText, this.isArray);\n if (this.circular && Array.isArray(this.circular)) {\n res = JSON10.parse(JSON.stringify(res), this.circular);\n }\n return res;\n }\n\n /**\n * undefined when blob\n */\n public get text(): string | undefined {\n if (!Helpers.isBlob(this.responseText)) {\n return (this.responseText as string)\n .replace(/^\\\"/, '')\n .replace(/\\\"$/, '');\n }\n }\n }\n\n export class ErrorBody extends BaseBody {\n constructor(private data) {\n super();\n }\n\n public get json(): Object {\n return this.toJSON(this.data);\n }\n public get text() {\n return this.data;\n }\n }\n\n export abstract class BaseResponse<T> {\n protected static readonly cookies = Cookie.Instance;\n\n public get cookies() {\n return BaseResponse.cookies;\n }\n constructor(\n public responseText?: string | Blob,\n public readonly headers?: RestHeaders,\n public readonly statusCode?: HttpCode | number,\n public isArray = false,\n ) {}\n }\n\n export class HttpResponse<T> extends BaseResponse<T> {\n public body: HttpBody<T>;\n // public readonly TOTAL_COUNT_HEADER = 'X-Total-Count'.toLowerCase();\n // public get totalElements(): number {\n // return Number(this.headers.get(this.TOTAL_COUNT_HEADER));\n // }\n rq: RequestCache;\n constructor(\n public sourceRequest: Models.HandleResultSourceRequestOptions,\n public responseText?: string | Blob,\n public headers?: RestHeaders,\n public statusCode?: HttpCode | number,\n public entity?: Mapping.Mapping | Function,\n public circular?: Circ[],\n public jobid?: number,\n public isArray = false,\n ) {\n // console.log({\n // sourceRequest, responseText, headers, statusCode, entity, circular, jobid, isArray\n // })\n super(responseText, headers, statusCode, isArray);\n\n this.init();\n }\n\n public init() {\n if (typeof this.entity === 'string') {\n // const headerWithMapping = headers.get(entity);\n let entityJSON = this.headers?.getAll(this.entity);\n if (!!entityJSON) {\n this.entity = JSON.parse(entityJSON.join());\n }\n }\n if (typeof this.circular === 'string') {\n // const headerWithMapping = headers.get(circular);\n let circuralJSON = this.headers?.getAll(this.circular);\n if (!!circuralJSON) {\n this.circular = JSON.parse(circuralJSON.join());\n }\n }\n this.body = new HttpBody(\n this.responseText,\n this.isArray,\n this.entity,\n this.circular,\n ) as any;\n }\n\n get cache() {\n if (_.isUndefined(this.rq)) {\n this.rq = new RequestCache(this);\n }\n return new RequestCache(this);\n }\n }\n\n export class HttpResponseError extends BaseResponse<any> {\n private body: ErrorBody;\n // public tryRecconect() {\n\n // }\n constructor(\n public message: string,\n responseText?: string,\n headers?: RestHeaders,\n statusCode?: HttpCode | number,\n public jobid?: number,\n ) {\n super(responseText, headers, statusCode);\n this.body = new ErrorBody(responseText);\n }\n }\n\n export interface MockResponse {\n data?: any;\n code?: HttpCode;\n error?: string;\n headers?: RestHeaders;\n jobid?: number;\n isArray: boolean;\n }\n\n export type ResponseTypeAxios =\n | 'blob'\n | 'text'\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n}\n","import { firstValueFrom, Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { _ } from 'tnp-core/websql';\n\nimport { Models } from './models';\nimport { RestHeaders } from './rest-headers';\n\nimport { Helpers } from 'tnp-core/websql';\nimport { Level } from 'ng2-logger/websql';\nimport axios, { AxiosResponse } from 'axios';\nimport { Resource } from './resource-service';\nimport { Log, Logger } from 'ng2-logger/websql';\n\nimport { RequestCache } from './request-cache';\nconst log = Log.create('[ng2-rest] rest-request'\n , Level.__NOTHING\n)\n\n/**\n * TODO refactor this (remove jobid)\n */\nconst jobIDkey = 'jobID';\nconst customObs = 'customObs';\nconst cancelFn = 'cancelFn';\nconst isCanceled = 'isCanceled';\n\n//#region mock request\n//#endregion\n\nexport class RestRequest {\n\n public static zone;\n private static jobId = 0;\n private subjectInuUse: { [id: number]: Subject<any> } = {};\n private meta: { [id: number]: Models.MetaRequest } = {};\n\n\n private handlerResult(options: Models.HandleResultOptions,\n sourceRequest: Models.HandleResultSourceRequestOptions) {\n if (_.isUndefined(options)) {\n options = {} as any;\n }\n // log.d(`HANDLE RESULT (jobid:${options.jobid}) ${sourceRequest.url}`);\n const { res, jobid, isArray, method } = options;\n\n if (typeof res !== 'object') {\n throw new Error('No resposnse for request. ');\n }\n\n if (Helpers.isBrowser) {\n res.headers = RestHeaders.from(res.headers);\n }\n\n // error no internet\n if (res.error) {\n this.subjectInuUse[jobid].error(new Models.HttpResponseError(res.error, res.data, res.headers, res.code, jobid));\n return;\n }\n const entity = this.meta[jobid].entity;\n const circular = this.meta[jobid].circular;\n\n const success = (Resource['_listenSuccess'] as Subject<Models.HttpResponse<any>>)\n\n const reqResp = new Models.HttpResponse(sourceRequest, res.data, res.headers, res.code, entity, circular, jobid, isArray);\n success.next(reqResp);\n\n this.subjectInuUse[jobid].next(reqResp);\n this.meta[jobid] = void 0;\n this.subjectInuUse[jobid].complete();\n }\n checkCache(sourceRequest: Models.HandleResultSourceRequestOptions, jobid: number) {\n const existedInCache = RequestCache.findBy(sourceRequest);\n if (existedInCache) {\n // log.i('cache exists', existedInCache)\n const success = (Resource['_listenSuccess'] as Subject<Models.HttpResponse<any>>);\n success.next(existedInCache.response);\n this.subjectInuUse[jobid].next(existedInCache);\n this.subjectInuUse[jobid].complete();\n return true;\n }\n // log.i(`cache not exists for jobid ${jobid}`)\n return false;\n }\n\n private async req(\n url: string,\n method: Models.HttpMethod,\n headers?: RestHeaders,\n body?: any,\n jobid?: number,\n isArray = false,\n mockHttp?: Models.MockHttp\n ) {\n if (this.checkCache({\n url,\n body,\n isArray,\n method\n }, jobid)) {\n return;\n }\n\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n this.subjectInuUse[jobid][cancelFn] = source.cancel;\n\n var response: AxiosResponse<any>;\n if (mockHttp) {\n\n if (typeof mockHttp === 'object') {\n response = {\n data: mockHttp.data,\n status: mockHttp.code,\n headers: mockHttp.headers as any,\n statusText: mockHttp.error,\n config: {} as any\n }\n } else if (typeof mockHttp === 'function') {\n const r = mockHttp(url, method, headers, body);\n response = {\n data: r.data,\n status: r.code,\n headers: r.headers as any,\n statusText: r.error,\n config: {} as any\n }\n }\n }\n\n\n const headersJson = headers.toJSON();\n const responseType = headersJson.responsetypeaxios ? headersJson.responsetypeaxios : 'text';\n\n try {\n if (!response) {\n // console.log(`[${method}] (jobid=${jobid}) request to: ${url}`);\n\n // console.log('headers axios:', headers.toJSON())\n // console.log({ responseType, headersJson, body, method, url })\n response = await axios({\n url,\n method,\n data: body,\n responseType,\n headers: headersJson,\n cancelToken: source.token,\n // withCredentials: true, // this can be done manually\n });\n // log.d(`after response of jobid: ${jobid}`);\n }\n\n // console.log('AXIOS RESPONES', response)\n\n if (this.subjectInuUse[jobid][isCanceled]) {\n return;\n }\n\n this.handlerResult({\n res: {\n code: response.status as any,\n data: response.data,\n isArray,\n jobid,\n headers: RestHeaders.from(response.headers as any)\n },\n method,\n jobid,\n isArray\n }, {\n url,\n body,\n method,\n isArray,\n });\n } catch (catchedError) {\n if (this.subjectInuUse[jobid][isCanceled]) {\n return;\n }\n // console.log('ERROR RESPONESE catchedError typeof ', typeof catchedError)\n // console.log('ERROR RESPONESE catchedError', catchedError)\n if (typeof catchedError === 'object' && catchedError.response && catchedError.response.data) {\n const err = catchedError.response.data;\n const msg: string = catchedError.response.data.message || '';\n // console.log({\n // 'err.stack': err?.stack\n // })\n let stack: string[] = (err.stack || '').split('\\n');\n\n const errObs = (Resource['_listenErrors'] as Subject<Models.BackendError>);\n errObs.next({\n msg,\n stack,\n data: catchedError.response.data\n });\n }\n const error = (catchedError && catchedError.response) ? `[${catchedError.response.statusText}]: ` : '';\n this.handlerResult({\n res: {\n code: (catchedError && catchedError.response) ? catchedError.response.status as any : void 0,\n error: `${error}${catchedError.message}`,\n data: (catchedError && catchedError.response) ? JSON.stringify(catchedError.response.data) : void 0,\n isArray,\n jobid,\n headers: RestHeaders.from(catchedError && catchedError.response && catchedError.response.headers)\n },\n method,\n jobid,\n isArray\n }, {\n url,\n body,\n isArray,\n method\n });\n }\n }\n\n private getReplay(method: Models.HttpMethod, meta: Models.MetaRequest, onlyGetLastReplayForMethod: boolean): Models.ReplayData {\n let replay: Models.ReplayData;\n\n //#region prevent empty tree\n if (_.isUndefined(this.replaySubjects[meta.endpoint])) {\n // log.i(`(${meta.endpoint}) `);\n this.replaySubjects[meta.endpoint] = {};\n }\n if (_.isUndefined(this.replaySubjects[meta.endpoint][meta.path])) {\n // log.i(`(${meta.endpoint})(${meta.path}) `);\n this.replaySubjects[meta.endpoint][meta.path] = {};\n }\n if (_.isUndefined(this.replaySubjects[meta.endpoint][meta.path][method])) {\n // log.i(`(${meta.endpoint})(${meta.path}) `);\n this.replaySubjects[meta.endpoint][meta.path][method] = {};\n }\n //#endregion\n\n const objectIDToCreateOrLast = (Object.keys(this.replaySubjects[meta.endpoint][meta.path][method] as Object).length) +\n (onlyGetLastReplayForMethod ? 0 : 1);\n if (onlyGetLastReplayForMethod && (objectIDToCreateOrLast === 0)) {\n return replay;\n }\n\n if (_.isUndefined(this.replaySubjects[meta.endpoint][meta.path][method][objectIDToCreateOrLast])) {\n // log.i(`(${meta.endpoint})(${meta.path})(${method}) `);\n this.replaySubjects[meta.endpoint][meta.path][method][objectIDToCreateOrLast] = <Models.ReplayData>{\n subject: new Subject(),\n data: void 0,\n };\n }\n\n replay = this.replaySubjects[meta.endpoint][meta.path][method][objectIDToCreateOrLast];\n\n if (!_.isNumber(replay.id)) {\n if (RestRequest.jobId === Number.MAX_SAFE_INTEGER) {\n RestRequest.jobId = 0;\n }\n\n const jobid: number = RestRequest.jobId++;\n replay.id = jobid;\n const subject: Subject<any> = replay.subject;\n subject[jobIDkey] = jobid; // modify internal rxjs subject obj\n\n this.meta[jobid] = meta;\n this.subjectInuUse[jobid] = subject;\n\n this.subjectInuUse[jobid][customObs] = new Observable((observer) => {\n // observer.remove(() => {\n\n // });\n observer.add(() => {\n // console.log(`cancel observable job${jobid}`)\n if (!this.subjectInuUse[jobid][isCanceled]) {\n this.subjectInuUse[jobid][isCanceled] = true;\n if (typeof this.subjectInuUse[jobid][cancelFn] === 'function') {\n this.subjectInuUse[jobid][cancelFn]('[ng2-rest] on purpose canceled http request');\n }\n } else {\n // console.log(`somehow second time cancel ${jobid}`)\n }\n })\n const sub = subject.subscribe({\n next: a => observer.next(a),\n error: a => observer.error(a),\n complete: () => {\n sub.unsubscribe();\n observer.complete()\n },\n });\n });\n\n\n //#region DISPOSE @UNCOMMENT AFTER TESTS\n // if (objectIDToCreateOrLast > 2) {\n // const oldReq: Models.ReplayData = this.replaySubjects[meta.endpoint][meta.path][method][(objectIDToCreateOrLast - 2)];\n // if (_.isUndefined(this.meta[oldReq.id])) {\n // // cant delete this - for counter purpose\n // this.replaySubjects[meta.endpoint][meta.path][method][(objectIDToCreateOrLast - 2)] = {};\n // delete this.subjectInuUse[oldReq.id];\n // delete this.meta[oldReq.id];\n // }\n // }\n //#endregion\n }\n\n return replay;\n }\n\n\n //#region http methods\n\n private generalReq(\n method: Models.HttpMethod,\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp): Models.PromiseObservableMix<any> {\n\n const replay: Models.ReplayData = this.getReplay(method, meta, false);\n replay.data = { url, body, headers, isArray };\n\n ((pthis, purl, pmethod, pheaders, pbody, pid, pisArray, pmockHttp) => {\n // log.d(`for ${purl} jobid ${pid}`);\n setTimeout(() => pthis.req(purl, pmethod, pheaders, pbody, pid, pisArray, pmockHttp));\n })(this, url, method, headers, body, replay.id, isArray, mockHttp)\n\n const resp: Models.PromiseObservableMix<any> = firstValueFrom(replay.subject[customObs]) as any;\n resp.observable = replay.subject[customObs];\n resp.cache = RequestCache.findBy({\n body,\n isArray,\n method,\n url\n });\n return resp;\n }\n\n get(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean, mockHttp: Models.MockHttp\n ): Models.PromiseObservableMix<any> {\n return this.generalReq('get', url, body, headers, meta, isArray, mockHttp);\n }\n\n head(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean, mockHttp: Models.MockHttp\n ): Models.PromiseObservableMix<any> {\n return this.generalReq('head', url, body, headers, meta, isArray, mockHttp);\n }\n\n delete(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp): Models.PromiseObservableMix<any> {\n return this.generalReq('delete', url, body, headers, meta, isArray, mockHttp);\n }\n\n post(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp\n ): Models.PromiseObservableMix<any> {\n return this.generalReq('post', url, body, headers, meta, isArray, mockHttp);\n }\n\n put(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp\n ): Models.PromiseObservableMix<any> {\n return this.generalReq('put', url, body, headers, meta, isArray, mockHttp);\n }\n\n patch(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp\n ): Models.PromiseObservableMix<any> {\n return this.generalReq('patch', url, body, headers, meta, isArray, mockHttp);\n }\n\n jsonp(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp\n ): Models.PromiseObservableMix<any> {\n\n const replay: Models.ReplayData = this.getReplay('jsonp', meta, false);\n const jobid = replay.id;\n const method = 'jsonp'\n setTimeout(() => {\n if (url.endsWith('/')) url = url.slice(0, url.length - 1)\n let num = Math.round(10000 * Math.random());\n let callbackMethodName = \"cb_\" + num;\n window[callbackMethodName] = (data) => {\n if (this.checkCache({\n url,\n body,\n isArray,\n method\n }, jobid)) {\n return;\n }\n this.handlerResult({\n res: {\n data, isArray\n },\n method,\n jobid,\n isArray\n }, {\n url,\n body,\n isArray,\n method,\n })\n }\n let sc = document.createElement('script');\n sc.src = `${url}?callback=${callbackMethodName}`;\n document.body.appendChild(sc);\n document.body.removeChild(sc);\n })\n\n const resp: Models.PromiseObservableMix<any> = firstValueFrom(replay.subject[customObs]) as any;\n resp.observable = replay.subject[customObs];\n console.log('assiging custom observable')\n resp.cache = RequestCache.findBy({\n body,\n isArray,\n method,\n url\n })\n return resp;\n }\n //#endregion\n private replaySubjects = {};\n public replay(method: Models.HttpMethod, meta: Models.MetaRequest) {\n const replay: Models.ReplayData = this.getReplay(method, meta, true);\n if (!replay || !replay.data) {\n console.warn(`Canno replay first ${method} request from ${meta.endpoint}/${meta.path}`);\n return;\n };\n if (replay && replay.subject && Array.isArray(replay.subject.observers) &&\n replay.subject.observers.length === 0) {\n console.warn(`No observators for ${method} request from ${meta.endpoint}/${meta.path}`);\n return;\n }\n const url = replay.data.url;\n const headers = replay.data.headers;\n const body = replay.data.body;\n const isArray = replay.data.isArray;\n setTimeout(() => this.req(url, method, headers, body, replay.id, isArray))\n }\n\n}\n","//#region imports\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { Log, Level } from 'ng2-logger/websql';\nconst log = Log.create('resouce-service',\n Level.__NOTHING\n)\n\nimport { Rest } from './rest.class';\nimport { RestRequest } from './rest-request';\nimport { RestHeaders } from './rest-headers';\nimport { Cookie } from './cookie';\nimport { Mapping } from './mapping';\nimport { Models } from './models';\nimport { interpolateParamsToUrl, isValid, containsModels, getModels } from './params';\nimport { Circ } from 'json10/websql';\nimport { Helpers } from 'tnp-core/websql'\n//#endregion\n\ndeclare const global: any;\n\n\nexport class Resource<E, T, TA> {\n protected static _listenErrors = new Subject<Models.BackendError>();\n protected static _listenSuccess = new Subject<Models.HttpResponse<any>>();\n public static get listenErrors() {\n return this._listenErrors.asObservable();\n }\n\n public static get listenSuccessOperations() {\n return this._listenSuccess.asObservable();\n }\n public static enableWarnings: boolean = true;\n\n //#region private mthods and fields\n private getZone() {\n const isNode = (typeof window === 'undefined')\n if (isNode) { return };\n const ng = window['ng'];\n const getAllAngularRootElements = window['getAllAngularRootElements'];\n if (!ng || !getAllAngularRootElements) { return; }\n const probe = ng.probe;\n const coreTokens = ng.coreTokens;\n if (!coreTokens || !coreTokens.NgZone) { return; }\n const zoneClass = coreTokens.NgZone;\n if (!probe || typeof probe !== 'function' || !getAllAngularRootElements) { return; }\n const angularElements: any[] = getAllAngularRootElements();\n if (!Array.isArray(angularElements) || angularElements.length === 0) { return; }\n const rootElement = ng.probe(angularElements[0]);\n if (!rootElement) { return; }\n const injector = rootElement.injector;\n if (!injector || !injector.get || typeof injector.get !== 'function') { return; }\n const zone = injector.get(zoneClass)\n return zone;\n }\n\n\n public static initAngularNgZone(zone) {\n RestRequest.zone = zone;\n }\n\n private checkNestedModels(model: string, allModels: Object) {\n // if (model.indexOf('/') !== -1) { //TODO make this better, becouse now I unecesary checking shit\n for (let p in allModels) {\n if (allModels.hasOwnProperty(p)) {\n let m = allModels[p];\n if (isValid(p)) {\n let urlModels = getModels(p);\n if (containsModels(model, urlModels)) {\n model = p;\n break;\n }\n }\n }\n }\n // }\n return model;\n }\n\n private static instance = new Resource<string, any, any>();\n private static endpoints = {};\n public static getModel(endpoint: string, model: string): Rest<any> {\n model = Resource.prepareModel(model);\n const e = Resource.endpoints[endpoint];\n if (!e) { return void 0; }\n const r = Resource.endpoints[endpoint].models[model];\n return Resource.endpoints[endpoint].models[model];\n }\n private static request: RestRequest = new RestRequest();\n //#endregion\n\n\n //#region create\n public static create<A, TA = A[]>(\n e: string,\n model?: string,\n entityMapping?: Mapping.Mapping,\n circular?: Circ[],\n customContentType?: RestHeaders,\n ): Models.ResourceModel<A, TA> {\n const badRestRegEX = new RegExp('((\\/:)[a-z]+)+', 'g');\n const matchArr = model.match(badRestRegEX) || [];\n const badModelsNextToEachOther = matchArr.join();\n const atleas2DoubleDots = ((badModelsNextToEachOther.match(new RegExp(':', 'g')) || []).length >= 2);\n if (atleas2DoubleDots && model.search(badModelsNextToEachOther) !== -1) {\n throw new Error(`\n\nBad rest model: ${model}\n\nDo not create rest models like this: /book/author/:bookid/:authorid\nInstead use nested approach: /book/:bookid/author/:authorid\n `)\n };\n Resource.map(e, e);\n Resource.instance.add(e, model ? model : '', entityMapping, circular, customContentType);\n // if (model.charAt(model.length - 1) !== '/') model = `${model}/`;\n return {\n model: (params?: Object) => Resource.instance.api(\n e,\n interpolateParamsToUrl(params, model)\n ),\n replay: (method: Models.HttpMethod) => {\n Resource.getModel(e, model).replay(method);\n },\n get headers() {\n return Resource.getModel(e, model).headers;\n }\n }\n }\n //#endregion\n\n //#region reset\n public static reset() {\n Resource.endpoints = {};\n }\n //#endregion\n\n //#region constructor\n private constructor() {\n setTimeout(() => {\n const zone = this.getZone();\n if (!RestRequest.zone) { RestRequest.zone = zone };\n })\n }\n //#endregion\n\n public static Cookies = Cookie.Instance;\n\n //#region map\n private static map(endpoint: string, url: string): boolean {\n\n log.i('url', url)\n let regex = /(http|https):\\/\\/(\\w+:{0,1}\\w*)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%!\\-\\/]))?/;\n let e = endpoint;\n if (!regex.test(url)) {\n throw `Url address is not correct: ${url}`;\n }\n if (url.charAt(url.length - 1) === '/') url = url.slice(0, url.length - 1);\n log.i('url after', url)\n if (Resource.endpoints[e] !== void 0) {\n Helpers.log('Cannot use map function at the same API endpoint again ('\n + Resource.endpoints[e].url + ')');\n return false;\n }\n Resource.endpoints[e] = {\n url: url,\n models: {},\n entity: null\n };\n log.i('enpoints', Resource.endpoints)\n return true;\n }\n //#endregion\n\n private static prepareModel(model) {\n if (model.charAt(model.length - 1) === '/') model = model.slice(0, model.length - 1);\n if (model.charAt(0) === '/') model = model.slice(1, model.length);\n return model;\n }\n\n\n //#region add\n /**\n * And enipoint to application\n *\n * @param {E} endpoint\n * @param {string} model\n * @returns {boolean}\n */\n private add(endpoint: E, model: string, entity: Mapping.Mapping, circular?: Circ[], customContentType?: RestHeaders) {\n log.i(`I am maping ${model} on ${<any>endpoint}`);\n model = Resource.prepareModel(model);\n\n let e: string;\n e = <string>(endpoint).toString();\n\n if (Resource.endpoints[e] === void 0) {\n console.error('Endpoint is not mapped ! Cannot add model ' + model);\n return;\n }\n if (Resource.endpoints[e].models[model] !== void 0) {\n if (Resource.enableWarnings) console.warn(`Model '${model}' is already defined in endpoint: `\n + Resource.endpoints[e].url);\n return;\n }\n Resource.endpoints[e].models[model] =\n new Rest<T, TA>(Resource.endpoints[e].url\n + '/' + model, Resource.request, {\n endpoint: e,\n path: model,\n entity,\n circular,\n }, customContentType); // TODO put custom content type in meta ?\n return;\n }\n //#endregion\n\n //#region api\n /**\n * Access api throught endpoint\n *\n * @param {E} endpoint\n * @param {string} model\n * @returns {Rest<T, TA>}\n */\n private api(endpoint: E, model: string): Rest<T, TA> {\n // log.i(`[api]\n\n // creating for endpoint: \"${endpoint}\"\n // model: \"${model}\"\n\n // `)\n if (model.charAt(0) === '/') model = model.slice(1, model.length);\n let e = <string>(endpoint).toString();\n if (Resource.endpoints[e] === void 0) {\n throw `Endpoint: ${<any>endpoint} is not mapped ! Cannot add model: ${model}`;\n }\n let allModels: Object = Resource.endpoints[e].models;\n let orgModel = model;\n model = this.checkNestedModels(model, allModels);\n\n if (Resource.endpoints[e].models[model] === void 0) {\n // log.d('Resource.endpoints', Resource.endpoints);\n throw `Model '${model}' is undefined in endpoint: ${Resource.endpoints[e].url} `;\n }\n\n let res: Rest<T, TA> = Resource.endpoints[<string>(endpoint).toString()].models[model];\n\n // log.d(`\n // orgModel: ${orgModel}\n // model: ${model}\n\n // `)\n if (orgModel !== model) {\n let baseUrl = Resource.endpoints[<string>(endpoint).toString()].url;\n // log.d('base', Resource.endpoints[<string>(endpoint).toString()])\n // log.d('baseUrl', baseUrl)\n // log.d('orgModel', orgModel)\n res.__rest_endpoint = `${baseUrl}/${orgModel}`;\n } else {\n res.__rest_endpoint = void 0;\n };\n\n // log.i(`Resource.endpoints`, Resource.endpoints)\n return res;\n }\n //#endregion\n\n}\n\n\n\n// const res = Resource.create('')\n// res.model()\n// .mock({\n// code: 500,\n// data: {},\n// isArray: true\n// })\n// .array.\n","import { Observable } from 'rxjs';\nimport { Subscription } from 'rxjs';\nimport { Observer } from 'rxjs';\n\nimport { Models } from '../models';\nimport { Resource } from '../resource-service';\n\n\n\nexport interface RestPromises<A, TA, QP extends Models.UrlParams> {\n get: (queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n head: (queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n query: (queryParams?: QP) => Observable<Models.HttpResponse<TA>>;\n put: (item?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n patch: (item?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n post: (item?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n delete: (queryParams?: QP) => Observable<Models.HttpResponse<A> | any>;\n}\n\nexport interface Model<A, TA, RP extends Object, QP extends Models.UrlParams> {\n (restParams?: RP): RestPromises<A, TA, QP>;\n}\n\n\n\n\n/**\n *\n * @export\n * @abstract\n * @class SimpleResource\n * @extends {Resource<T, A, TA>}\n * @template E Endpoint type\n * @template A Single modle type\n * @template TA Array Model Type\n * @template RP rest url parameters type\n * @template QP query parameter type\n */\nclass ExtendedResource<E, A, TA, RP extends Object, QP extends Models.UrlParams> {\n public static doNotSerializeQueryParams = false;\n public static handlers: Subscription[] = [];\n\n rest: Models.ResourceModel<A, TA>;\n\n /**\n * Get model by rest params\n */\n model: Model<A, TA, RP, QP> = (restParams?: RP) => {\n\n return {\n\n get: (queryPrams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams)\n .get([queryPrams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n },\n\n patch: (item: A, queryParams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams)\n .put(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n\n },\n\n head: (queryPrams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams)\n .head([queryPrams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n },\n\n query: (queryPrams?: QP) => {\n return Observable.create((observer: Observer<TA>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams).\n array\n .get([queryPrams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n },\n\n\n post: (item: A, queryParams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams)\n .post(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n\n },\n\n\n put: (item: A, queryParams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams)\n .put(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n\n },\n\n\n delete: (queryPrams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(this.rest.model(restParams)\n .delete([queryPrams], ExtendedResource.doNotSerializeQueryParams)\n .observable\n .subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete()))\n })\n }\n\n\n }\n }\n\n\n // add(endpoint: E, model: string, group?: string, name?: string, description?: string) { }\n\n public constructor(private endpoint: E | string, private path_model: string) {\n this.rest = <any>Resource.create<A, TA>(<any>endpoint, path_model);\n\n }\n\n}\n\n\n\n/**\n *\n * @export\n * @class SimpleResource\n * @template A single model type\n * @template TA array model type\n * @template RP rest parameters type\n * @template QP query parameters type\n */\nexport class SimpleResource<A, TA> {\n model: Model<A, TA, Object, Models.UrlParams>;\n\n\n private static _isSetQueryParamsSerialization = false;\n public static set doNotSerializeQueryParams(value) {\n if (!SimpleResource._isSetQueryParamsSerialization) {\n SimpleResource._isSetQueryParamsSerialization = true;\n ExtendedResource.doNotSerializeQueryParams = value\n return;\n }\n console.warn(`Query params serialization already set as\n ${ExtendedResource.doNotSerializeQueryParams},`);\n }\n\n public static __destroy() {\n ExtendedResource.handlers.forEach(h => h.unsubscribe());\n }\n\n constructor(endpoint: string, model: string) {\n let rest = new ExtendedResource<string, A, TA, Object, Models.UrlParams>(endpoint, model);\n this.model = rest.model;\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Helpers","log","HelpersModels"],"mappings":";;;;;;;;;AAOM,IAAW;AAAjB,CAAA,UAAiB,OAAO,EAAA;AAEtB,IAAA,SAAgB,MAAM,CAAC,IAAY,EAAE,UAAU,GAAG,KAAK,EAAA;;AAGrD,QAAA,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACvB,OAAO,KAAK,CAAC;;QAGf,IAAI,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,UAAU,CAAC;QAEtF,IAAI,UAAU,EAAE;AACd,YAAA,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;;AAGnD,QAAA,OAAO,OAAO;;AAbA,IAAA,OAAA,CAAA,MAAM,SAcrB;AAED,IAAA,SAAgB,MAAM,CAAe,IAAY,EAAE,OAAgB,EAAE,WAAmB,EAAE,EAAA;QACxF,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC7D,YAAA,OAAO,IAAW;;AAGpB,QAAA,IAAI,OAAO,CAAC,EAAE,CAAC,EAAE;AACf,YAAA,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC;;AAG9C,QAAA,IAAI,GAAQ;AACZ,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9C,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;;aACxC;AACL,YAAA,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;;AAEjC,QAAA,OAAO,GAAG;;AAhBI,IAAA,OAAA,CAAA,MAAM,SAiBrB;AAGD,IAAA,SAAS,mBAAmB,CAAC,IAAY,EAAE,UAAU,GAAG,KAAK,EAAA;QAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;AAC7C,QAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC;AAC9C,QAAA,OAAO,QAAe;;IAGxB,SAAgB,gBAAgB,CAAC,MAAgB,EAAA;AAE/C,QAAA,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,MAAM,EAAE;AAC9C,YAAA,OAAO,EAAE;;QAEX,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;;AAEvC,QAAA,IAAI,eAAe,GAAU,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACnE,YAAA,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;QAErD,IAAI,GAAG,GAAG,EAAE;QACZ,IAAI,OAAO,GAAG;aACX,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;aACxD,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QAElB,eAAe,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAG;AACpC,YAAA,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;;YAElB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AAC3B,gBAAA,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;gBAChB,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1B,gBAAA,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AACpC,gBAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC3B,oBAAA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,SAAS;;AAE5C,aAAC,CAAC;YACF,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AACvB,SAAC,CAAC;AACF,QAAA,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS;;AAEnB,QAAA,OAAO,GAAG;;AA9BI,IAAA,OAAA,CAAA,gBAAgB,mBA+B/B;AAOD,IAAA,SAAS,GAAG,CAAC,CAAS,EAAE,IAAY,EAAE,UAAmB,EAAE,EAAA;AACzD,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE;AACrD,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC3E,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;QACjD,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,IAAI,eAAe,KAAK,QAAQ,EAAE;AAChC,gBAAA,IAAIA,SAAO,CAAC,SAAS,EAAE;AACrB,oBAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,eAAe,CAAA,gBAAA,CAAkB,CAAC;;;YAG7E;;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAQ;QAAC;;AAGzE;;;;;;AAMG;AACH,IAAA,SAAS,eAAe,CAAC,CAAS,EAAE,IAAI,GAAG,EAAE,EAAE,OAAmB,GAAA,EAAE,EAAE,KAAK,GAAG,CAAC,EAAA;AAC7E,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACpB,YAAA,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACxD,YAAA,OAAO,OAAO;;QAEhB,IAAI,EAAE,KAAK,KAAK,EAAE;YAAE;AACpB,QAAA,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC;AACrB,QAAA,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;AACf,YAAA,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;AACvB,gBAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACd,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;;wBAEpB,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;wBACnE,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC;AACpD,qBAAC,CAAC;;AACG,qBAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;oBAChC,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACnE,oBAAA,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC;oBAC5B,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC;;;;AAIrD,QAAA,OAAO,OAAO;;IAGhB,SAAS,kBAAkB,CAAC,UAAkB,EAAA;QAC5C,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC3B,OAAO,KAAK,CAAC;;QAEf,MAAM,KAAK,GAAG,2BAA2B;AACzC,QAAA,UAAU,GAAG;AACV,aAAA,OAAO,CAAC,KAAK,EAAE,EAAE;AACjB,aAAA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AACrB,QAAA,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC9B,YAAA,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;;AAElC,QAAA,OAAO,UAAU;;IAGnB,SAAS,cAAc,CAAC,IAAY,EAAE,UAAmB,EAAE,EAAE,WAAmB,EAAE,EAAA;AAEhF,QAAA,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;;AAEhE,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,KAAI;AAC/C,YAAA,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACrC,gBAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC;gBAClD,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE;oBACxC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oBAC/C,IAAI,CAAC,OAAO,EAAE;wBACZ,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;wBAChF,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;AACtC,wBAAA,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;;AAEzB,4BAAA,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAK,OAAe,EAAE,EAAE,CAAC,CAAC,CAAC;;;;;AAKzD,SAAC,CAAC;AAEF,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;AACnB,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,kBAAkB,CAAC;YAC7C,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC;AAC/B,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YAC7B,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAK,WAAmB,EAAE,EAAE,IAAI,CAAC;;AAGlD,QAAA,OAAO,IAAI;;AAKb,IAAA,SAAS,UAAU,CAAC,IAAY,EAAE,UAAmB,EAAE,EAAA;;AAGrD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;AAClB,gBAAA,OAAO,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC;AAC/B,aAAC,CAAC;;QAGJ,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAE5C,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;;;;gBAI5B,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AACxB,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,IAAG;AACjC,wBAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,wBAAA,OAAO,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC;AACvC,qBAAC,CAAC;;qBACG,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AAChC,oBAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;;;;;;;;;QAUnD;aACG,IAAI,CAAC,OAAO;AACZ,aAAA,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC;aACtD,OAAO,CAAC,SAAS,IAAG;;AAEnB,YAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YACpE,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;YACpC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;gBACzB,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC;gBACzC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC;;AAE/B,SAAC,CAAC;QAEJ,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,IAAI;;QAEb,OAAO,CAAC,CAAC,KAAK,CAAC,IAAK,WAAmB,EAAE,EAAE,IAAI,CAAC;;AAclD,IAAA,SAAgB,uBAAuB,CACrC,kBAAkC,EAClC,OAAoB,EAAA;AAEpB,QAAA,OAAO,UAAU,MAAgB,EAAA;AAE/B,YAAA,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE;AAC7C,gBAAA,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE;;AAGnC,YAAA,MAAM,CAAC,MAAM,CAAC,cAAc,CAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5E,YAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACvB,gBAAA,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,GAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAW,CAAC,MAAM,CAAC,OAAO,CAAC;AACxF,gBAAA,MAAM,CAAC,IAAI,CAAC,OAAO;qBAChB,OAAO,CAAC,GAAG,IAAG;oBACb,MAAM,CAAC,GAAG,OAAO;AACjB,oBAAA,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;wBACvC,MAAM;;;AAGE,oBAAA,EAAA,MAAM,CAAC,IAAI,CAAA;wCACO,GAAG,CAAA;CAC1C;;AAGS,iBAAC,CAAC;;AAIN,YAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;gBAClC,MAAM,OAAO,GAAG,EAAE;gBAClB,MAAM,eAAe,GAAG;qBACrB,kBAAkB,CAAC,MAAM;AACzB,qBAAA,MAAM,CAAC,IAAI,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAEtD,gBAAA,eAAe,CAAC,OAAO,CAAC,eAAe,IAAG;AACxC,oBAAA,IAAI,kBAAkB,CAAC,eAAe,CAAC,EAAE;wBACvC,OAAO,CAAC,IAAI,CAAC;;qDAE4B,eAAe,CAAA;AAC5C,sBAAA,EAAA,MAAM,CAAC,IAAI,CAAA;;;AAGtB,YAAA,CAAA,CAAC;;yBACG;AACL,wBAAA,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;;AAEpC,iBAAC,CAAC;;AAIF,gBAAA,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAEnE,MAAM,YAAY,GAAG;AAClB,qBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;qBACjC,MAAM,CAAC,GAAG,IAAG;oBACZ,MAAM,UAAU,GAAG;AAChB,yBAAA,wBAAwB,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC;oBAClD,OAAO,CAAC,CAAC,UAAU;AACrB,iBAAC,CAAC;gBACJ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,CAAC;;;AAIjF,SAAC;;AAhEa,IAAA,OAAA,CAAA,uBAAuB,0BAiEtC;AAEH,CAAC,EArTgB,OAAO,KAAP,OAAO,GAqTvB,EAAA,CAAA,CAAA;;ACvTD;AACM,MAAO,OAAQ,SAAQ,WAAW,CAAA;aAE/B,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC;AAErB,IAAA,WAAW,OAAO,GAAA;QAChB,OAAO;YACL,MAAM,CAAe,IAAY,EAAE,OAAwB,EAAA;gBACzD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;aACrC;AACD,YAAA,MAAM,CAAC,IAAY,EAAE,UAAU,GAAG,KAAK,EAAA;gBACrC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;;SAE1C;;IAGH,OAAO,aAAa,CAAC,GAAW,EAAA;QAC9B,IAAI,KAAK,GAAG,6EAA6E;AACzF,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;;;ACjB1B,MAAMC,KAAG,GAAG,GAAG,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,SAAS,CAAC;AAI5D;AACM,SAAU,OAAO,CAAC,OAAe,EAAA;IACrC,OAAO,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3E;AAEgB,SAAA,KAAK,CAAC,GAAW,EAAE,OAAe,EAAA;IAChD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;AAC/B,QAAAA,KAAG,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAA,CAAE,CAAC;AAClC,QAAA,OAAO,KAAK;;IAEd,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;AAAE,QAAA,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1E,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;AAAE,QAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1F,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;AACtC,IAAA,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;IAChE,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC;AAClC,IAAA,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AACtB;AAEM,SAAU,SAAS,CAAC,OAAe,EAAA;AACvC,IAAA,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AACvD,IAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACxC;AAEM,SAAU,iBAAiB,CAAC,OAAe,EAAA;IAC/C,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;AAAE,QAAA,OAAO,GAAG,CAAA,EAAG,OAAO,CAAA,CAAA,CAAG;AACvE,IAAA,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACtD,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACzD,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACzC;AAEgB,SAAA,cAAc,CAAC,GAAW,EAAE,MAAgB,EAAA;AAC1D,IAAA,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;AAAE,QAAA,GAAG,GAAG,GAAG,GAAG,GAAG;;IAE1C,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAG;AAC1B,QAAA,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;;QAElB,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;;QAE3B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;AAC3E,YAAA,OAAO,KAAK;;AAEd,QAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;AACd,YAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AAChD,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,KAAK;KACb,CAAC,CAAC,MAAM;;AAET,IAAA,OAAO,GAAG,KAAK,MAAM,CAAC,MAAM;AAC9B;AAEM,SAAU,KAAK,CAAC,CAAS,EAAA;IAC7B,IAAI,GAAG,GAAG,EAAE;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,GAAG,IAAI,GAAG;AACtC,IAAA,OAAO,GAAG;AACZ;AAEgB,SAAA,aAAa,CAAC,GAAW,EAAE,OAAe,EAAA;IACxD,IAAI,GAAG,GAAG,EAAE;AACZ,IAAA,IAAI,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC;;AAEvC,IAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAG;AACjB,QAAA,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,CAAE,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACrD,KAAC,CAAC;AAEF,IAAA,IAAI,YAAY,GAAW,KAAK,CAAC;IACjC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;;AAElC,QAAA,IAAI,CAAC,CAAC,KAAK,EAAE;YACX,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3D,iBAAA,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,MAAM;AAAE,gBAAA,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI;AACvD,iBAAA,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,OAAO;AAAE,gBAAA,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK;;gBACzD,GAAG,CAAC,YAAY,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC;YACpD,YAAY,GAAG,KAAK,CAAC;;AAEvB,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;;AAEhC,QAAA,IAAI,CAAC,CAAC,OAAO,EAAE;AACb,YAAA,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE;;AAEjC,KAAC,CAAC;AACF,IAAA,OAAO,GAAG;AACZ;AAEO,MAAM,WAAW,GAAG,sBAAsB;AAEjD;;AAEG;AACH,SAAS,WAAW,CAAC,MAAc,EAAE,MAAgB,EAAE,MAAgB,EAAA;AACrE,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACjD,IAAA,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;AAEpB,IAAA,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;IAC1D,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE3C,IAAA,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1D,IAAI,MAAM,KAAK,KAAK,CAAC;SAClB,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;QAC1E,KAAK,KAAK,WAAW,EAAE;AACvB,QAAA,MAAM,CAAC,MAAM,GAAG,CAAC;AACjB,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;SACrC;QACL,IAAI,WAAW,EAAE;;YAEf,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA,EAAE,GAAG,CAAC,EAAE,CAAA,EAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAE,CAAA,CAAC;AAC7E,YAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YACpB,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;aACrC;;YAEL,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAI,CAAA,EAAA,KAAK,EAAE,EAAE,GAAG,CAAC,EAAE,CAAG,EAAA,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC;AACtE,YAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YACpB,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;;AAIhD;AAGgB,SAAA,sBAAsB,CAAC,MAAc,EAAE,GAAW,EAAA;IAEhE,MAAM,QAAQ,GAAG,8BAA8B;AAE/C,IAAA,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAG;;QAE3B,IAAI,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAC/B,IAAI,OAAO,EAAE;YACX,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;;AAErB,YAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;gBAEvB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC7B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;;YAE/B,OAAO,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;;AAEnB,QAAA,OAAO,CAAC;AACV,KAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;;AAMZ,IAAA,IAAI,KAAK,GAAG;QACV,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;AAC7B,QAAA,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK;KACrC;IAED,IAAI,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC;AAC5D,IAAA,IAAI,cAAc,KAAK,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;;AAEpF,QAAA,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;QACzB,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;;AAEzC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;YAChB,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;;AAE5B,YAAA,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACvB,gBAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAI,CAAA,EAAA,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA,CAAE,CAAC;;iBACvC;AACL,gBAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAI,CAAA,EAAA,MAAM,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;;;AAKzC,SAAC,CAAC;AACF,QAAA,OAAO,GAAG;;IAGZ,IAAI,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC;AAC9D,IAAA,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC;AAAE,QAAA,OAAO,GAAG;;IAG3F,IAAI,CAAC,KAAK,CAAC,GAAG;AAAE,QAAA,GAAG,GAAG,CAAA,EAAG,GAAG,CAAA,CAAA,CAAG;AAC/B,IAAA,IAAI,oBAAoB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7F,IAAI,OAAO,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;SAC/E,oBAAoB,GAAG,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACzE,IAAI,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IAExC,IAAI,oBAAoB,EAAE;QACxB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC;AACxC,QAAA,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC;QAC1D,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;;SACtC;QACL,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;;AAE7C,IAAA,GAAG,GAAG,SAAS,GAAG,GAAG;AAErB,IAAA,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG;AAAE,QAAA,GAAG,GAAG,CAAA,EAAG,GAAG,CAAA,CAAA,CAAG;IACpE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK;AAAE,QAAA,GAAG,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE;AAE1D,IAAA,OAAO,GAAG;AACZ;AAEA;;AAEE;AACI,SAAU,SAAS,CAAC,GAAW,EAAA;IACnC,IAAI,KAAK,GAAG,wBAAwB,EAClC,MAAM,GAAG,EAAE,EACX,KAAK;IACP,OAAO,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC9B,QAAA,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;IAErE,IAAI,YAAY,GAAW,MAAM;AACjC,IAAA,KAAK,IAAI,CAAC,IAAI,YAAY,EAAE;QAC1B,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;AAC9B,YAAA,OAAO,YAAY,CAAC,CAAC,CAAC;YACtB;;AAEF,QAAA,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;;YAElC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACb,gBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;gBACb;;YAEF,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;;AAGjC,gBAAA,IAAI,IAAI;AACR,gBAAA,IAAI;oBACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;AAC5B,gBAAA,OAAO,KAAK,EAAE;AAChB,gBAAA,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AACnB,oBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI;oBAChB;;;;;;;;;;;AAYR,IAAA,OAAO,MAAM;AACf;AAEA;;;;;;AAMG;SACa,YAAY,CAAC,MAA0B,EAAE,iBAA0B,KAAK,EAAA;IACtF,IAAI,QAAQ,GAAa,EAAE;AAC3B,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,EAAE;AACtB,IAAA,IAAI,EAAE,MAAM,YAAY,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE;AACzC,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE;AAElC,IAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAG;QACxB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAErC,IAAI,UAAU,GAAa,EAAE;YAC7B,IAAI,WAAW,GAAW,QAAQ;AAGlC,YAAA,KAAK,IAAI,CAAC,IAAI,WAAW,EAAE;AACzB,gBAAA,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;AAAE,oBAAA,OAAO,WAAW,CAAC,CAAC,CAAC;gBACpD,IAAI,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,OAAO,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,EAAE;AAClH,oBAAA,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAChC,wBAAA,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;wBACtC,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC/B,wBAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;wBACpB,CAAC,GAAG,OAAO;;AAEb,oBAAA,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAC3C,wBAAA,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;wBACtC,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC/B,wBAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;wBACpB,CAAC,GAAG,OAAO;;AAEb,oBAAA,IAAI,CAAC,GAAQ,QAAQ,CAAC,CAAC,CAAC;AACxB,oBAAA,IAAI,CAAC,YAAY,MAAM,EAAE;AACvB,wBAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;oBAE3C,QAAQ,CAAC,CAAC,CAAC,GAAG,cAAc,GAAW,QAAQ,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAS,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5F,oBAAA,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,YAAY,MAAM,EAAE;AAEjE,wBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7C,4BAAA,OAAO,CAAC,IAAI,CAAC,CAAS,MAAA,EAAA,QAAQ,CAAC,CAAC,CAAC,CAA4B,yBAAA,EAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAA,CAAE,CAAC;;;AAGzF,oBAAA,UAAU,CAAC,IAAI,CAAC,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC;;;YAK1C,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;AAMvC,KAAC,CAAC;IACF,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;AACjC,IAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AAAE,QAAA,OAAO,EAAE;IACjC,OAAO,CAAA,CAAA,EAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACjC;AAGA,SAAS,SAAS,CAAC,CAAC,EAAA;AAClB,IAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;QACzB,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAE9C,IAAA,OAAO,CAAC;AACV;AAGM,SAAU,gBAAgB,CAAC,MAA6B,EAAA;AAC5D,IAAA,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,QAAQ;AACjC,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,QAAA,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;;AAE5B,IAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,MAAM;AACrC;;MCtUa,WAAW,CAAA;IAOf,OAAO,IAAI,CAAC,OAA4B,EAAA;QAC7C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,KAAK,CAAC;;AAEf,QAAA,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;;AAGjC,IAAA,WAAA,CAAoB,OAA+D,EAAA;;AAZnF,QAAA,IAAA,CAAA,QAAQ,GAA0B,IAAI,GAAG,EAAE;;AAE3C,QAAA,IAAA,CAAA,gBAAgB,GAAwB,IAAI,GAAG,EAAE;AAW/C,QAAA,IAAI,OAAO,YAAY,WAAW,EAAE;YAClC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAgB,EAAE,IAAY,KAAI;AACjD,gBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChD,aAAC,CAAC;;aACG;YACL,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAY,KAAI;AAC5C,gBAAA,MAAM,MAAM,IAAc,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAQ;AAChG,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACjB,gBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChD,aAAC,CAAC;;;AAIN;;AAEG;IACH,OAAO,wBAAwB,CAAC,aAAqB,EAAA;AACnD,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;;;;QAIjC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAC/B,YAAA,IAAI,KAAK,GAAG,CAAC,EAAE;gBACb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;AACjC,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1C,gBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;;AAE5B,SAAC,CAAC;AAEF,QAAA,OAAO,OAAO;;AAGhB;;AAEG;IACH,MAAM,CAAC,IAAY,EAAE,KAAa,EAAA;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAEhC,QAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;;aAChB;AACL,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAItB;;AAEG;AACH,IAAA,MAAM,CAAC,IAAY,EAAA;AACjB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;;AAG9B,IAAA,OAAO,CAAC,EAA4E,EAAA;AAClF,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CACnB,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;;AAGrF;;AAEG;AACH,IAAA,GAAG,CAAC,IAAY,EAAA;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAEhC,QAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,YAAA,OAAO,IAAI;;AAGb,QAAA,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI;;AAG7C;;AAEG;AACH,IAAA,GAAG,CAAC,IAAY,EAAA,EAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAE1E;;AAEG;AACH,IAAA,IAAI,GAAe,EAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;AAErE;;AAEG;IACH,GAAG,CAAC,IAAY,EAAE,KAAwB,EAAA;AACxC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;;aAErD;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;;AAEhD,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;;AAGnC;;AAEG;AACH,IAAA,MAAM,GAAiB,EAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAEjE;;AAEG;;IAEH,MAAM,GAAA;QACJ,MAAM,UAAU,GAAiC,EAAE;AACnD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;;;QAKpB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAgB,EAAE,IAAY,KAAI;YACvD,MAAM,KAAK,GAAa,EAAE;YAC1B,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;;;;;AAKhD,YAAA,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;AACrD,SAAC,CAAC;AAEF,QAAA,OAAO,UAAU;;AAGnB;;AAEG;AACH,IAAA,MAAM,CAAC,IAAY,EAAA;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI;;AAG9D,IAAA,sBAAsB,CAAC,IAAY,EAAA;AACzC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;QAEjC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACtC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;;;AAG5C;;AC7JY,MAAA,YAAY,GAAG;AAC1B,IAAA,gBAAgB,EAAE,WAAW,CAAC,IAAI,CAAC;AACjC,QAAA,cAAc,EAAE,kBAAkB;AAClC,QAAA,QAAQ,EAAE;KACX,CAAC;AACF,IAAA,wBAAwB,EAAE,WAAW,CAAC,IAAI,CAAC;AACzC,QAAA,cAAc,EAAE,0BAA0B;AAC1C,QAAA,QAAQ,EAAE;KACX,CAAC;;;ACDJ;MAEa,IAAI,CAAA;AAGf,IAAA,IAAI,CAAC,IAAqB,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,IAAI,KAAK,UAAU,MAAM,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE;AAC9D,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;aACf;YACL,MAAM,CAAA;;;;OAIL;;AAEH,QAAA,OAAO,IAAI;;AAQb,IAAA,IAAY,QAAQ,GAAA;AAClB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe;AAC5B,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK;AAC9D,eAAA,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE;AAAE,YAAA,CAAC,GAAG,IAAI,CAAC,aAAa;AACvG,QAAA,OAAO,CAAC;;IAGV,IAAW,eAAe,CAAC,QAAQ,EAAA;AACjC,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ;AAC7B,QAAA,IAAI,QAAQ,KAAK,KAAK,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;;aACxB;YACL,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC;;;AAKhE,IAAA,QAAQ,CAAC,MAAW,EAAE,oBAAA,GAAgC,KAAK,EAAA;AACjE,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAG,EAAA,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA,CAAE;;AAOxE,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;AAEtB,IAAA,WAAA,CACE,QAAgB,EACR,OAAoB,EACpB,IAAwB,EACxB,iBAA8B,EAAA;QAF9B,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;;;QARnB,IAAQ,CAAA,QAAA,GAAG,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC;;AAmElE,QAAA,IAAA,CAAA,KAAK,GAAG;YACN,GAAG,EAAE,CAAC,MAA6B,GAAA,KAAK,CAAC,EAAE,oBAA8B,KAA0D;AACjI,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAQ;aAC1E;YACD,IAAI,EAAE,CAAC,MAA6B,GAAA,KAAK,CAAC,EAAE,oBAA8B,KAA0D;AAClI,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAQ;aAC3E;YACD,IAAI,EAAE,CAAC,IAAQ,EAAE,MAA2B,EAAE,oBAA8B,KAA0D;AACpI,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAW,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAQ;aAChF;YACD,GAAG,EAAE,CAAC,IAAQ,EAAE,MAA2B,EAAE,oBAA8B,KAA0D;AACnI,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAW,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAQ;aAC/E;YACD,KAAK,EAAE,CAAC,IAAQ,EAAE,MAA2B,EAAE,oBAA8B,KAA0D;AACrI,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAW,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAQ;aACjF;AACD,YAAA,MAAM,EAAE,CAAC,MAA2B,EAAE,oBAA8B,KAA0D;AAC5H,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAQ;aAC7E;AACD,YAAA,KAAK,EAAE,CAAC,MAA2B,EAAE,oBAA8B,KAA0D;AAC3H,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAQ;;SAE9E;AA/EC,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ;;;;IAOzB,GAAG,CAAC,MAAyB,EACnC,WAAc,EACd,MAA2B,EAC3B,oBAAgC,GAAA,KAAK,EACrC,OAAA,GAAmB,KAAK,EAAA;QAGxB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;QAC5D,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,UAAU;AAC/D,cAAE;AACF,eAAG,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC;;AAGxD,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;YACtD,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAC9C;AACG,iBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;iBAC7C,OAAO,CAAC,GAAG,IAAG;AACb,gBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzD,aAAC,CAAC;AACJ,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB;;aACjC;YACL,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC;;;AAKjE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAC/C,QAAQ,EACR,IAAI,EACJ,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,IAAI,EACT,OAAO,EACP,IAAI,CAAC,QAAQ,CACd;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,OAAO,MAAM;;;;;AAOf,IAAA,MAAM,CAAC,MAAyB,EAAA;QAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;;AA4BxC,IAAA,GAAG,CAAC,MAA2B,EAAE,oBAAA,GAAgC,KAAK,EAAA;AACpE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAQ;;AAGrE,IAAA,IAAI,CAAC,MAA2B,EAAE,oBAAA,GAAgC,KAAK,EAAA;AACrE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAQ;;AAGtE,IAAA,IAAI,CAAC,IAAO,EAAE,MAA2B,EAAE,uBAAgC,KAAK,EAAA;AAC9E,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC;;AAG7D,IAAA,GAAG,CAAC,IAAO,EAAE,MAA2B,EAAE,uBAAgC,KAAK,EAAA;AAC7E,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC;;AAG5D,IAAA,KAAK,CAAC,IAAO,EAAE,MAA2B,EAAE,uBAAgC,KAAK,EAAA;AAC/E,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC;;AAG9D,IAAA,MAAM,CAAC,MAA2B,EAAE,oBAAA,GAAgC,KAAK,EAAA;AACvE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAC;;AAGjE,IAAA,KAAK,CAAC,MAA2B,EAAE,oBAAA,GAAgC,KAAK,EAAA;AACtE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAC;;AAIjE;;MCjLY,MAAM,CAAA;AAER,IAAA,WAAW,QAAQ,GAAA;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACpB,YAAA,MAAM,CAAC,UAAU,GAAG,IAAI,MAAM,EAAE;;QAEpC,OAAO,MAAM,CAAC,UAAiB;;AAInC,IAAA,WAAA,GAAA;;AAGA,IAAA,IAAI,CAAC,IAAY,EAAA;QACb,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACjG,QAAA,OAAO,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI;;AAGpC,IAAA,KAAK,CAAC,IAAY,EAAE,KAAa,EAAE,IAAa,EAAA;QAC5C,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,IAAI,GAAG,GAAG,GAAG,EAAE;;AAGnB,QAAA,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAE3D,IAAI,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE;AAE/C,QAAA,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU;;AAG/D,IAAA,MAAM,CAAC,IAAY,EAAA;QACf,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;;AAG/B;;AC9BD,MAAMA,KAAG,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC;AAExD;;;AAGG;MACU,YAAY,CAAA;aAEP,IAAiB,CAAA,iBAAA,GAAG,qBAAqB,CAAC;aAE3C,IAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;aAC5B,IAA0B,CAAA,0BAAA,GAAG,KAAK,CAAC;AAE1C,IAAA,OAAO,uBAAuB,GAAA;AACpC,QAAA,IAAID,SAAO,CAAC,MAAM,EAAE;YAClB;;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,0BAA0B,EAAE;AAC5C,YAAA,YAAY,CAAC,0BAA0B,GAAG,IAAI;YAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC;YACjE,IAAI,QAAQ,GAAmB,EAAE;YACjC,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI;AACF,oBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB;;gBAC7C,OAAO,KAAK,EAAE;;gBAGhB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAG;oBAChC,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EACxD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,QAAQ;AACrD,oBAAA,CAAC,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,YAAY,CAClC,aAAa,EACb,YAAY,EACZ,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EACzB,UAAU,EACV,MAAM,EACN,QAAQ,EACR,CAAC,CAAC;AACF,oBAAA,OAAO,CACR;oBACD,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChC,oBAAA,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;AAEjB,oBAAA,OAAO,CAAC;AACV,iBAAC,CAAC;AACF,gBAAAC,KAAG,CAAC,CAAC,CAAC,6BAA6B,EAAE,QAAQ,CAAC;AAC9C,gBAAA,YAAY,CAAC,MAAM,GAAG,QAAQ;;;;IAM7B,OAAO,MAAM,CAAC,aAAsD,EAAA;AACzE,QAAAA,KAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC;QAC9BA,KAAG,CAAC,CAAC,CAAC,qBAAqB,EAAE,YAAY,CAAC,MAAM,CAAC;QACjD,YAAY,CAAC,uBAAuB,EAAE;QACtC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAG;AAClC,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa;YAClC,MAAM,CAAC,GAAG,aAAa;AACvB,YAAA,QACE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;AACvB,gBAAA,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;AACf,gBAAA,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AACrB,gBAAA,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;AAErB,SAAC,CAAC;;AAMJ,IAAA,WAAA,CACS,QAAkC,EAAA;QAAlC,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAKjB,IAAA,IAAI,aAAa,GAAA;QACf,YAAY,CAAC,uBAAuB,EAAE;QACtC,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;;IAGnC,sBAAsB,GAAA;AAC5B,QAAA,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,EACjD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAG;YACzC,OAAO;AACL,gBAAA,QAAQ,EAAE;AACR,oBAAA,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa;AACvC,oBAAA,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY;AACrC,oBAAA,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO;AAC3B,oBAAA,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU;AACjC,oBAAA,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;AACzB,oBAAA,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ;AAC7B,oBAAA,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO;AACA;aAC9B;SACF,CAAC,CAAC,CAAC;;IAGR,KAAK,GAAA;QACH,YAAY,CAAC,uBAAuB,EAAE;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,sBAAsB,EAAE;;aACxB;AACL,YAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;;AAE/B,QAAA,OAAO,IAAI;;IAGb,MAAM,GAAA;QACJ,YAAY,CAAC,uBAAuB,EAAE;QACtC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/C,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACpC,IAAI,CAAC,sBAAsB,EAAE;;aACxB;AACL,YAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;;;;;AC5GpC;AACA;AAEA;AAEM,IAAW;AAAjB,CAAA,UAAiB,MAAM,EAAA;AAIP,IAAA,MAAA,CAAA,YAAY,GAAGC,QAAa,CAAC,YAAY;AACzC,IAAA,MAAA,CAAA,WAAW,GAAGA,QAAa,CAAC,WAAW;AACvC,IAAA,MAAA,CAAA,WAAW,GAAGA,QAAa,CAAC,WAAW;AA0GrD,IAAA,EAAE;AAEF,IAAA,MAAsB,QAAQ,CAAA;AAClB,QAAA,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,KAAK,EAAA;YACxC,IAAI,CAAC,GAAG,WAAW,GAAG,EAAE,GAAG,EAAE;AAC7B,YAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,gBAAA,IAAI;AACF,oBAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;AACpB,gBAAA,OAAO,CAAC,EAAE;;AACP,iBAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACnC,gBAAA,OAAO,IAAI;;AAEb,YAAA,OAAO,CAAQ;;AAElB;AAZqB,IAAA,MAAA,CAAA,QAAQ,WAY7B;IAED,MAAa,QAAY,SAAQ,QAAQ,CAAA;AACvC,QAAA,WAAA,CACU,YAA2B,EAC3B,OAAA,GAAU,KAAK,EACf,MAAuB,EACvB,QAAgB,EAAA;AAExB,YAAA,KAAK,EAAE;YALC,IAAY,CAAA,YAAA,GAAZ,YAAY;YACZ,IAAO,CAAA,OAAA,GAAP,OAAO;YACP,IAAM,CAAA,MAAA,GAAN,MAAM;YACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAKlB,QAAA,IAAW,IAAI,GAAA;YACb,OAAO,IAAI,CAAC,YAAoB;;AAGlC,QAAA,IAAW,YAAY,GAAA;YACrB,IAAI,CAACF,SAAO,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AACtC,gBAAA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAE,IAAI,CAAC,YAAuB,CAAC,IAAI,EAAE,CAAC;;;AAIxE,QAAA,IAAW,YAAY,GAAA;YACrB,IAAI,CAACA,SAAO,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;gBACtC,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;;;AAI5C,QAAA,IAAW,OAAO,GAAA;YAChB,IAAI,CAACA,SAAO,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AACtC,gBAAA,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC;AACtD,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACjD,oBAAA,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAGxD,gBAAA,OAAO,GAAG;;;AAId,QAAA,IAAW,IAAI,GAAA;YAEb,MAAM,MAAM,GAAGA,SAAO,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;YAChD,IAAI,MAAM,EAAE;gBACV,OAAO,KAAK,CAAC;;YAEf,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;AACpD,gBAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;;YAEvB,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;AAClD,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC;AACzD,gBAAA,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAQ;;AAEhE,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC;AACtD,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACjD,gBAAA,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAExD,YAAA,OAAO,GAAG;;AAGZ;;AAEG;AACH,QAAA,IAAW,IAAI,GAAA;YACb,IAAI,CAACA,SAAO,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;gBACtC,OAAQ,IAAI,CAAC;AACV,qBAAA,OAAO,CAAC,KAAK,EAAE,EAAE;AACjB,qBAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;;;AAG1B;AAnEY,IAAA,MAAA,CAAA,QAAQ,WAmEpB;IAED,MAAa,SAAU,SAAQ,QAAQ,CAAA;AACrC,QAAA,WAAA,CAAoB,IAAI,EAAA;AACtB,YAAA,KAAK,EAAE;YADW,IAAI,CAAA,IAAA,GAAJ,IAAI;;AAIxB,QAAA,IAAW,IAAI,GAAA;YACb,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE/B,QAAA,IAAW,IAAI,GAAA;YACb,OAAO,IAAI,CAAC,IAAI;;AAEnB;AAXY,IAAA,MAAA,CAAA,SAAS,YAWrB;AAED,IAAA,MAAsB,YAAY,CAAA;AACN,QAAA,SAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEpD,QAAA,IAAW,OAAO,GAAA;YAChB,OAAO,YAAY,CAAC,OAAO;;AAE7B,QAAA,WAAA,CACS,YAA4B,EACnB,OAAqB,EACrB,UAA8B,EACvC,UAAU,KAAK,EAAA;YAHf,IAAY,CAAA,YAAA,GAAZ,YAAY;YACH,IAAO,CAAA,OAAA,GAAP,OAAO;YACP,IAAU,CAAA,UAAA,GAAV,UAAU;YACnB,IAAO,CAAA,OAAA,GAAP,OAAO;;;AAVI,IAAA,MAAA,CAAA,YAAY,eAYjC;IAED,MAAa,YAAgB,SAAQ,YAAe,CAAA;AAOlD,QAAA,WAAA,CACS,aAAsD,EACtD,YAA4B,EAC5B,OAAqB,EACrB,UAA8B,EAC9B,MAAmC,EACnC,QAAiB,EACjB,KAAc,EACd,UAAU,KAAK,EAAA;;;;YAKtB,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC;YAZ1C,IAAa,CAAA,aAAA,GAAb,aAAa;YACb,IAAY,CAAA,YAAA,GAAZ,YAAY;YACZ,IAAO,CAAA,OAAA,GAAP,OAAO;YACP,IAAU,CAAA,UAAA,GAAV,UAAU;YACV,IAAM,CAAA,MAAA,GAAN,MAAM;YACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;YACR,IAAK,CAAA,KAAA,GAAL,KAAK;YACL,IAAO,CAAA,OAAA,GAAP,OAAO;YAOd,IAAI,CAAC,IAAI,EAAE;;QAGN,IAAI,GAAA;AACT,YAAA,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;;AAEnC,gBAAA,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAClD,gBAAA,IAAI,CAAC,CAAC,UAAU,EAAE;AAChB,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;;;AAG/C,YAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;;AAErC,gBAAA,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtD,gBAAA,IAAI,CAAC,CAAC,YAAY,EAAE;AAClB,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;;;YAGnD,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CACtB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,CACP;;AAGV,QAAA,IAAI,KAAK,GAAA;YACP,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAC1B,IAAI,CAAC,EAAE,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;;AAElC,YAAA,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC;;AAEhC;AAtDY,IAAA,MAAA,CAAA,YAAY,eAsDxB;IAED,MAAa,iBAAkB,SAAQ,YAAiB,CAAA;;;QAKtD,WACS,CAAA,OAAe,EACtB,YAAqB,EACrB,OAAqB,EACrB,UAA8B,EACvB,KAAc,EAAA;AAErB,YAAA,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC;YANjC,IAAO,CAAA,OAAA,GAAP,OAAO;YAIP,IAAK,CAAA,KAAA,GAAL,KAAK;YAGZ,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC;;AAE1C;AAfY,IAAA,MAAA,CAAA,iBAAiB,oBAe7B;;;;;;;AAqBH,CAAC,EA5TgB,MAAM,KAAN,MAAM,GA4TtB,EAAA,CAAA,CAAA;;AChUD,MAAMC,KAAG,GAAG,GAAG,CAAC,MAAM,CAAC,yBAAyB,EAC5C,KAAK,CAAC,SAAS,CAClB;AAED;;AAEG;AACH,MAAM,QAAQ,GAAG,OAAO;AACxB,MAAM,SAAS,GAAG,WAAW;AAC7B,MAAM,QAAQ,GAAG,UAAU;AAC3B,MAAM,UAAU,GAAG,YAAY;AAE/B;AACA;MAEa,WAAW,CAAA;AAAxB,IAAA,WAAA,GAAA;QAIU,IAAa,CAAA,aAAA,GAAmC,EAAE;QAClD,IAAI,CAAA,IAAA,GAAyC,EAAE;;QAua/C,IAAc,CAAA,cAAA,GAAG,EAAE;;aAzaZ,IAAK,CAAA,KAAA,GAAG,CAAH,CAAK;IAKjB,aAAa,CAAC,OAAmC,EACvD,aAAsD,EAAA;AACtD,QAAA,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;YAC1B,OAAO,GAAG,EAAS;;;QAGrB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO;AAE/C,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;;AAG/C,QAAA,IAAID,SAAO,CAAC,SAAS,EAAE;YACrB,GAAG,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;;;AAI7C,QAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACb,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChH;;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ;AAE1C,QAAA,MAAM,OAAO,GAAI,QAAQ,CAAC,gBAAgB,CAAuC;AAEjF,QAAA,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC;AACzH,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAErB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;;IAEtC,UAAU,CAAC,aAAsD,EAAE,KAAa,EAAA;QAC9E,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC;QACzD,IAAI,cAAc,EAAE;;AAElB,YAAA,MAAM,OAAO,GAAI,QAAQ,CAAC,gBAAgB,CAAuC;AACjF,YAAA,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AACpC,YAAA,OAAO,IAAI;;;AAGb,QAAA,OAAO,KAAK;;AAGN,IAAA,MAAM,GAAG,CACf,GAAW,EACX,MAAyB,EACzB,OAAqB,EACrB,IAAU,EACV,KAAc,EACd,OAAO,GAAG,KAAK,EACf,QAA0B,EAAA;QAE1B,IAAI,IAAI,CAAC,UAAU,CAAC;YAClB,GAAG;YACH,IAAI;YACJ,OAAO;YACP;SACD,EAAE,KAAK,CAAC,EAAE;YACT;;AAGF,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW;AACrC,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM;AAEnD,QAAA,IAAI,QAA4B;QAChC,IAAI,QAAQ,EAAE;AAEZ,YAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,gBAAA,QAAQ,GAAG;oBACT,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,MAAM,EAAE,QAAQ,CAAC,IAAI;oBACrB,OAAO,EAAE,QAAQ,CAAC,OAAc;oBAChC,UAAU,EAAE,QAAQ,CAAC,KAAK;AAC1B,oBAAA,MAAM,EAAE;iBACT;;AACI,iBAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACzC,gBAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAC9C,gBAAA,QAAQ,GAAG;oBACT,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,MAAM,EAAE,CAAC,CAAC,IAAI;oBACd,OAAO,EAAE,CAAC,CAAC,OAAc;oBACzB,UAAU,EAAE,CAAC,CAAC,KAAK;AACnB,oBAAA,MAAM,EAAE;iBACT;;;AAKL,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE;AACpC,QAAA,MAAM,YAAY,GAAG,WAAW,CAAC,iBAAiB,GAAG,WAAW,CAAC,iBAAiB,GAAG,MAAM;AAE3F,QAAA,IAAI;YACF,IAAI,CAAC,QAAQ,EAAE;;;;gBAKb,QAAQ,GAAG,MAAM,KAAK,CAAC;oBACrB,GAAG;oBACH,MAAM;AACN,oBAAA,IAAI,EAAE,IAAI;oBACV,YAAY;AACZ,oBAAA,OAAO,EAAE,WAAW;oBACpB,WAAW,EAAE,MAAM,CAAC,KAAK;;AAE1B,iBAAA,CAAC;;;;YAMJ,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE;gBACzC;;YAGF,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ,CAAC,MAAa;oBAC5B,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,OAAO;oBACP,KAAK;oBACL,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAc;AAClD,iBAAA;gBACD,MAAM;gBACN,KAAK;gBACL;aACD,EAAE;gBACD,GAAG;gBACH,IAAI;gBACJ,MAAM;gBACN,OAAO;AACR,aAAA,CAAC;;QACF,OAAO,YAAY,EAAE;YACrB,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE;gBACzC;;;;AAIF,YAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC3F,gBAAA,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI;gBACtC,MAAM,GAAG,GAAW,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE;;;;AAI5D,gBAAA,IAAI,KAAK,GAAa,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC;AAEnD,gBAAA,MAAM,MAAM,GAAI,QAAQ,CAAC,eAAe,CAAkC;gBAC1E,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG;oBACH,KAAK;AACL,oBAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;AAC7B,iBAAA,CAAC;;YAEJ,MAAM,KAAK,GAAG,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,IAAI,CAAI,CAAA,EAAA,YAAY,CAAC,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE;YACtG,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,GAAG,EAAE;oBACH,IAAI,EAAE,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAa,GAAG,KAAK,CAAC;AAC5F,oBAAA,KAAK,EAAE,CAAG,EAAA,KAAK,GAAG,YAAY,CAAC,OAAO,CAAE,CAAA;oBACxC,IAAI,EAAE,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBACnG,OAAO;oBACP,KAAK;AACL,oBAAA,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO;AACjG,iBAAA;gBACD,MAAM;gBACN,KAAK;gBACL;aACD,EAAE;gBACD,GAAG;gBACH,IAAI;gBACJ,OAAO;gBACP;AACD,aAAA,CAAC;;;AAIE,IAAA,SAAS,CAAC,MAAyB,EAAE,IAAwB,EAAE,0BAAmC,EAAA;AACxG,QAAA,IAAI,MAAyB;;AAG7B,QAAA,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;;YAErD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;;AAEzC,QAAA,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;;AAEhE,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;;QAEpD,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;;AAExE,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;;;QAI5D,MAAM,sBAAsB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAW,CAAC,CAAC,MAAM;aAChH,0BAA0B,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,0BAA0B,KAAK,sBAAsB,KAAK,CAAC,CAAC,EAAE;AAChE,YAAA,OAAO,MAAM;;QAGf,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,EAAE;;AAEhG,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,GAAsB;gBACjG,OAAO,EAAE,IAAI,OAAO,EAAE;gBACtB,IAAI,EAAE,KAAK,CAAC;aACb;;QAGH,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC;QAEtF,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YAC1B,IAAI,WAAW,CAAC,KAAK,KAAK,MAAM,CAAC,gBAAgB,EAAE;AACjD,gBAAA,WAAW,CAAC,KAAK,GAAG,CAAC;;AAGvB,YAAA,MAAM,KAAK,GAAW,WAAW,CAAC,KAAK,EAAE;AACzC,YAAA,MAAM,CAAC,EAAE,GAAG,KAAK;AACjB,YAAA,MAAM,OAAO,GAAiB,MAAM,CAAC,OAAO;AAC5C,YAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AAE1B,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,OAAO;AAEnC,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;;;AAIjE,gBAAA,QAAQ,CAAC,GAAG,CAAC,MAAK;;oBAEhB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE;wBAC1C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI;AAC5C,wBAAA,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE;4BAC7D,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,6CAA6C,CAAC;;;yBAE/E;;;AAGT,iBAAC,CAAC;AACF,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;oBAC5B,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC3B,KAAK,EAAE,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC7B,QAAQ,EAAE,MAAK;wBACb,GAAG,CAAC,WAAW,EAAE;wBACjB,QAAQ,CAAC,QAAQ,EAAE;qBACpB;AACF,iBAAA,CAAC;AACJ,aAAC,CAAC;;;;;;;;;;;;;AAgBJ,QAAA,OAAO,MAAM;;;AAMP,IAAA,UAAU,CAChB,MAAyB,EACzB,GAAW,EACX,IAAY,EACZ,OAAoB,EACpB,IAAwB,EACxB,OAAgB,EAChB,QAAyB,EAAA;AAEzB,QAAA,MAAM,MAAM,GAAsB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;AACrE,QAAA,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;AAE7C,QAAA,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,KAAI;;YAEnE,UAAU,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;SACtF,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC;QAElE,MAAM,IAAI,GAAqC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAQ;QAC/F,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;YAC/B,IAAI;YACJ,OAAO;YACP,MAAM;YACN;AACD,SAAA,CAAC;AACF,QAAA,OAAO,IAAI;;IAGb,GAAG,CACD,GAAW,EACX,IAAY,EACZ,OAAoB,EACpB,IAAwB,EACxB,OAAgB,EAAE,QAAyB,EAAA;AAE3C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;;IAG5E,IAAI,CACF,GAAW,EACX,IAAY,EACZ,OAAoB,EACpB,IAAwB,EACxB,OAAgB,EAAE,QAAyB,EAAA;AAE3C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;;IAG7E,MAAM,CACJ,GAAW,EACX,IAAY,EACZ,OAAoB,EACpB,IAAwB,EACxB,OAAgB,EAChB,QAAyB,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;;IAG/E,IAAI,CACF,GAAW,EACX,IAAY,EACZ,OAAoB,EACpB,IAAwB,EACxB,OAAgB,EAChB,QAAyB,EAAA;AAEzB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;;IAG7E,GAAG,CACD,GAAW,EACX,IAAY,EACZ,OAAoB,EACpB,IAAwB,EACxB,OAAgB,EAChB,QAAyB,EAAA;AAEzB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;;IAG5E,KAAK,CACH,GAAW,EACX,IAAY,EACZ,OAAoB,EACpB,IAAwB,EACxB,OAAgB,EAChB,QAAyB,EAAA;AAEzB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;;IAG9E,KAAK,CACH,GAAW,EACX,IAAY,EACZ,OAAoB,EACpB,IAAwB,EACxB,OAAgB,EAChB,QAAyB,EAAA;AAGzB,QAAA,MAAM,MAAM,GAAsB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;AACtE,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE;QACvB,MAAM,MAAM,GAAG,OAAO;QACtB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AACzD,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC3C,YAAA,IAAI,kBAAkB,GAAG,KAAK,GAAG,GAAG;AACpC,YAAA,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,KAAI;gBACpC,IAAI,IAAI,CAAC,UAAU,CAAC;oBAClB,GAAG;oBACH,IAAI;oBACJ,OAAO;oBACP;iBACD,EAAE,KAAK,CAAC,EAAE;oBACT;;gBAEF,IAAI,CAAC,aAAa,CAAC;AACjB,oBAAA,GAAG,EAAE;AACH,wBAAA,IAAI,EAAE;AACP,qBAAA;oBACD,MAAM;oBACN,KAAK;oBACL;iBACD,EAAE;oBACD,GAAG;oBACH,IAAI;oBACJ,OAAO;oBACP,MAAM;AACP,iBAAA,CAAC;AACJ,aAAC;YACD,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;YACzC,EAAE,CAAC,GAAG,GAAG,CAAA,EAAG,GAAG,CAAa,UAAA,EAAA,kBAAkB,EAAE;AAChD,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AAC7B,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AAC/B,SAAC,CAAC;QAEF,MAAM,IAAI,GAAqC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAQ;QAC/F,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;AAC3C,QAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;AACzC,QAAA,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;YAC/B,IAAI;YACJ,OAAO;YACP,MAAM;YACN;AACD,SAAA,CAAC;AACF,QAAA,OAAO,IAAI;;IAIN,MAAM,CAAC,MAAyB,EAAE,IAAwB,EAAA;AAC/D,QAAA,MAAM,MAAM,GAAsB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;QACpE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3B,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,mBAAA,EAAsB,MAAM,CAAiB,cAAA,EAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;YACvF;;QACD;AACD,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;YACrE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,mBAAA,EAAsB,MAAM,CAAiB,cAAA,EAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;YACvF;;AAEF,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC3B,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO;AACnC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI;AAC7B,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO;QACnC,UAAU,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;;;;ACtd9E,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,EACtC,KAAK,CAAC,SAAS,CAChB;MAgBY,QAAQ,CAAA;AACF,IAAA,SAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAuB,CAAC;AACnD,IAAA,SAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAA4B,CAAC;AACnE,IAAA,WAAW,YAAY,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;;AAGnC,IAAA,WAAW,uBAAuB,GAAA;AACvC,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;;aAE7B,IAAc,CAAA,cAAA,GAAY,IAAI,CAAC;;IAGrC,OAAO,GAAA;QACb,MAAM,MAAM,IAAI,OAAO,MAAM,KAAK,WAAW,CAAC;QAC9C,IAAI,MAAM,EAAE;YAAE;;QAAQ;AACtB,QAAA,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;AACvB,QAAA,MAAM,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,CAAC;AACrE,QAAA,IAAI,CAAC,EAAE,IAAI,CAAC,yBAAyB,EAAE;YAAE;;AACzC,QAAA,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK;AACtB,QAAA,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU;QAChC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAAE;;AACzC,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM;QACnC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,CAAC,yBAAyB,EAAE;YAAE;;AAC3E,QAAA,MAAM,eAAe,GAAU,yBAAyB,EAAE;AAC1D,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAAE;;QACvE,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,EAAE;YAAE;;AACpB,QAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ;AACrC,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,QAAQ,CAAC,GAAG,KAAK,UAAU,EAAE;YAAE;;QACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;AACpC,QAAA,OAAO,IAAI;;IAIN,OAAO,iBAAiB,CAAC,IAAI,EAAA;AAClC,QAAA,WAAW,CAAC,IAAI,GAAG,IAAI;;IAGjB,iBAAiB,CAAC,KAAa,EAAE,SAAiB,EAAA;;AAExD,QAAA,KAAK,IAAI,CAAC,IAAI,SAAS,EAAE;AACvB,YAAA,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;AAC/B,gBAAA,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AACpB,gBAAA,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;AACd,oBAAA,IAAI,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;AAC5B,oBAAA,IAAI,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;wBACpC,KAAK,GAAG,CAAC;wBACT;;;;;;AAMR,QAAA,OAAO,KAAK;;AAGC,IAAA,SAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,QAAQ,EAAoB,CAAC;aAC5C,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;AACvB,IAAA,OAAO,QAAQ,CAAC,QAAgB,EAAE,KAAa,EAAA;AACpD,QAAA,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;QACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;;AACvB,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACpD,OAAO,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;;AAEpC,IAAA,SAAA,IAAA,CAAA,OAAO,GAAgB,IAAI,WAAW,EAAE,CAAC;;;IAKjD,OAAO,MAAM,CAClB,CAAS,EACT,KAAc,EACd,aAA+B,EAC/B,QAAiB,EACjB,iBAA+B,EAAA;QAE/B,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC;QACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE;AAChD,QAAA,MAAM,wBAAwB,GAAG,QAAQ,CAAC,IAAI,EAAE;QAChD,MAAM,iBAAiB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC,CAAC;AACpG,QAAA,IAAI,iBAAiB,IAAI,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,EAAE;YACtE,MAAM,IAAI,KAAK,CAAC;;kBAEJ,KAAK;;;;AAIV,YAAA,CAAA,CAAC;;QACT;AACD,QAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAClB,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,CAAC;;QAExF,OAAO;YACL,KAAK,EAAE,CAAC,MAAe,KAAK,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAC/C,CAAC,EACD,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CACtC;AACD,YAAA,MAAM,EAAE,CAAC,MAAyB,KAAI;AACpC,gBAAA,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;aAC3C;AACD,YAAA,IAAI,OAAO,GAAA;gBACT,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO;;SAE7C;;;;AAKI,IAAA,OAAO,KAAK,GAAA;AACjB,QAAA,QAAQ,CAAC,SAAS,GAAG,EAAE;;;;AAKzB,IAAA,WAAA,GAAA;QACE,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AAAE,gBAAA,WAAW,CAAC,IAAI,GAAG,IAAI;;YAAE;AACpD,SAAC,CAAC;;;AAIU,IAAA,SAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAGhC,IAAA,OAAO,GAAG,CAAC,QAAgB,EAAE,GAAW,EAAA;AAE9C,QAAA,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC;QACjB,IAAI,KAAK,GAAG,6EAA6E;QACzF,IAAI,CAAC,GAAG,QAAQ;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACpB,MAAM,CAAA,4BAAA,EAA+B,GAAG,CAAA,CAAE;;QAE5C,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;AAAE,YAAA,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1E,QAAA,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC;QACvB,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;YACpCA,SAAO,CAAC,GAAG,CAAC;kBACR,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;AACpC,YAAA,OAAO,KAAK;;AAEd,QAAA,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AACtB,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EAAE;SACT;QACD,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC;AACrC,QAAA,OAAO,IAAI;;;IAIL,OAAO,YAAY,CAAC,KAAK,EAAA;QAC/B,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;AAAE,YAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACpF,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;AACjE,QAAA,OAAO,KAAK;;;AAKd;;;;;;AAMG;IACK,GAAG,CAAC,QAAW,EAAE,KAAa,EAAE,MAAuB,EAAE,QAAiB,EAAE,iBAA+B,EAAA;QACjH,GAAG,CAAC,CAAC,CAAC,CAAA,YAAA,EAAe,KAAK,CAAY,IAAA,EAAA,QAAQ,CAAE,CAAA,CAAC;AACjD,QAAA,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;AAEpC,QAAA,IAAI,CAAS;AACb,QAAA,CAAC,GAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE;QAEjC,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;AACpC,YAAA,OAAO,CAAC,KAAK,CAAC,4CAA4C,GAAG,KAAK,CAAC;YACnE;;AAEF,QAAA,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE;YAClD,IAAI,QAAQ,CAAC,cAAc;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,KAAK,CAAoC,kCAAA;sBACzF,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC9B;;QAEF,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACjC,IAAI,IAAI,CAAQ,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAClC,kBAAA,GAAG,GAAG,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE;AACjC,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,IAAI,EAAE,KAAK;gBACX,MAAM;gBACN,QAAQ;AACT,aAAA,EAAE,iBAAiB,CAAC,CAAC;QACxB;;;;AAKF;;;;;;AAMG;IACK,GAAG,CAAC,QAAW,EAAE,KAAa,EAAA;;;;;AAOpC,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;QACjE,IAAI,CAAC,GAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACrC,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;AACpC,YAAA,MAAM,CAAkB,UAAA,EAAA,QAAQ,CAAsC,mCAAA,EAAA,KAAK,EAAE;;QAE/E,IAAI,SAAS,GAAW,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM;QACpD,IAAI,QAAQ,GAAG,KAAK;QACpB,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC;AAEhD,QAAA,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE;;AAElD,YAAA,MAAM,CAAU,OAAA,EAAA,KAAK,CAA+B,4BAAA,EAAA,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA,CAAA,CAAG;;AAGlF,QAAA,IAAI,GAAG,GAAgB,QAAQ,CAAC,SAAS,CAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;AAOtF,QAAA,IAAI,QAAQ,KAAK,KAAK,EAAE;AACtB,YAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG;;;;YAInE,GAAG,CAAC,eAAe,GAAG,CAAA,EAAG,OAAO,CAAI,CAAA,EAAA,QAAQ,EAAE;;aACzC;AACL,YAAA,GAAG,CAAC,eAAe,GAAG,KAAK,CAAC;;QAC7B;;AAGD,QAAA,OAAO,GAAG;;;AAQd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7PA;;;;;;;;;;;AAWG;AACH,MAAM,gBAAgB,CAAA;aACN,IAAyB,CAAA,yBAAA,GAAG,KAAH,CAAS;aAClC,IAAQ,CAAA,QAAA,GAAmB,EAAnB,CAAsB;;IA6G5C,WAA2B,CAAA,QAAoB,EAAU,UAAkB,EAAA;QAAhD,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAAsB,IAAU,CAAA,UAAA,GAAV,UAAU;AAzGnE;;AAEE;AACF,QAAA,IAAA,CAAA,KAAK,GAAyB,CAAC,UAAe,KAAI;YAEhD,OAAO;AAEL,gBAAA,GAAG,EAAE,CAAC,UAAe,KAAI;AACvB,oBAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,QAAqB,KAAI;AACjD,wBAAA,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;6BACtD,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,yBAAyB;6BAC5D;AACA,6BAAA,SAAS,CACR,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACrC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAC1B,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,qBAAC,CAAC;iBACH;AAED,gBAAA,KAAK,EAAE,CAAC,IAAO,EAAE,WAAgB,KAAI;AACnC,oBAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,QAAqB,KAAI;AACjD,wBAAA,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;6BACtD,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,yBAAyB;6BACnE;AACA,6BAAA,SAAS,CACR,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACrC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAC1B,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,qBAAC,CAAC;iBAEH;AAED,gBAAA,IAAI,EAAE,CAAC,UAAe,KAAI;AACxB,oBAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,QAAqB,KAAI;AACjD,wBAAA,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;6BACtD,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,yBAAyB;6BAC7D;AACA,6BAAA,SAAS,CACR,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACrC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAC1B,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,qBAAC,CAAC;iBACH;AAED,gBAAA,KAAK,EAAE,CAAC,UAAe,KAAI;AACzB,oBAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,QAAsB,KAAI;AAClD,wBAAA,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;4BACxD;6BACC,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,yBAAyB;6BAC5D;AACA,6BAAA,SAAS,CACR,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACrC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAC1B,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,qBAAC,CAAC;iBACH;AAGD,gBAAA,IAAI,EAAE,CAAC,IAAO,EAAE,WAAgB,KAAI;AAClC,oBAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,QAAqB,KAAI;AACjD,wBAAA,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;6BACtD,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,yBAAyB;6BACpE;AACA,6BAAA,SAAS,CACR,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACrC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAC1B,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,qBAAC,CAAC;iBAEH;AAGD,gBAAA,GAAG,EAAE,CAAC,IAAO,EAAE,WAAgB,KAAI;AACjC,oBAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,QAAqB,KAAI;AACjD,wBAAA,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;6BACtD,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,yBAAyB;6BACnE;AACA,6BAAA,SAAS,CACR,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACrC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAC1B,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,qBAAC,CAAC;iBAEH;AAGD,gBAAA,MAAM,EAAE,CAAC,UAAe,KAAI;AAC1B,oBAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,QAAqB,KAAI;AACjD,wBAAA,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;6BACtD,MAAM,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,yBAAyB;6BAC/D;AACA,6BAAA,SAAS,CACR,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACrC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAC1B,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,qBAAC,CAAC;;aAIL;AACH,SAAC;QAMC,IAAI,CAAC,IAAI,GAAQ,QAAQ,CAAC,MAAM,CAAa,QAAQ,EAAE,UAAU,CAAC;;;AAQtE;;;;;;;;AAQG;MACU,cAAc,CAAA;aAIV,IAA8B,CAAA,8BAAA,GAAG,KAAK,CAAC;IAC/C,WAAW,yBAAyB,CAAC,KAAK,EAAA;AAC/C,QAAA,IAAI,CAAC,cAAc,CAAC,8BAA8B,EAAE;AAClD,YAAA,cAAc,CAAC,8BAA8B,GAAG,IAAI;AACpD,YAAA,gBAAgB,CAAC,yBAAyB,GAAG,KAAK;YAClD;;QAEF,OAAO,CAAC,IAAI,CAAC,CAAA;AACP,QAAA,EAAA,gBAAgB,CAAC,yBAAyB,CAAG,CAAA,CAAA,CAAC;;AAG/C,IAAA,OAAO,SAAS,GAAA;AACrB,QAAA,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;;IAGzD,WAAY,CAAA,QAAgB,EAAE,KAAa,EAAA;QACzC,IAAI,IAAI,GAAG,IAAI,gBAAgB,CAA0C,QAAQ,EAAE,KAAK,CAAC;AACzF,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;;;;AC5L3B;;AAEG;;;;"}
|