taon 18.0.12 → 18.0.15
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 +115 -115
- package/assets/shared/shared_folder_info.txt +1 -1
- package/bin/start.js +279 -279
- package/bin/taon +6 -6
- package/bin/taon-debug +5 -5
- package/bin/taon-debug-brk +5 -5
- package/browser/README.md +24 -24
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +4 -4
- package/browser/fesm2022/taon.mjs +3 -3
- package/browser/fesm2022/taon.mjs.map +1 -1
- package/cli.js +1 -1
- package/cli.js.map +1 -1
- package/client/README.md +24 -24
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +4 -4
- package/client/fesm2022/taon.mjs +3 -3
- package/client/fesm2022/taon.mjs.map +1 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/index.js +2 -2
- package/lib/ui/directives/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
- package/lib/ui/taon-github-fork-me-corner/index.js +2 -2
- package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
- package/lib/ui/taon-notifications/taon-notifications.models.js +2 -2
- package/lib/ui/taon-progress-bar/index.js +2 -2
- package/lib/ui/taon-session-passcode/index.js +2 -2
- package/package.json +7 -7
- package/taon.jsonc +47 -47
- package/tmp-environment.json +29 -30
- package/websql/README.md +24 -24
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +4 -4
- package/websql/fesm2022/taon.mjs +3 -3
- package/websql/fesm2022/taon.mjs.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taon.mjs","sources":["../../../tmp-libs-for-dist/taon/projects/taon/src/lib/symbols.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/validators.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/helpers/taon-helpers.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/helpers/class-helpers.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/models.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/http/http-methods-decorators.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/http/http-params-decorators.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/http/http-decorators.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/classes/controller-decorator.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-injector.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-controller.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-crud-controller.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-class.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-entity.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-abstract-entity.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/classes/repository-decorator.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-repository.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-provider.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/dependency-injection/di-container.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/get-response-value.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/env.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-subs-manager.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-client.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-server.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-ipc.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-socket-io.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/index.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-core.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/endpoint-context.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/storage.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/taon-admin.service.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/create-context.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-context.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/classes/subscriber-decorator.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-subscriber.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-subscriber-for-entity.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/classes/entity-decorator.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/classes/provider-decorator.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/inject.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/constants.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/index.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/taon.ts"],"sourcesContent":["\n\nimport { _ } from 'tnp-core/browser';\nimport { OrignalClassKey } from 'taon-typeorm/browser';\nimport { SYMBOL } from 'typescript-class-helpers/browser';\n\nexport namespace Symbols {\n export const ctxInClassOrClassObj = Symbol();\n export const classNameStaticProperty: string = SYMBOL.ClassNameStaticProperty;\n export const fullClassNameStaticProperty: string = `$$fullclassName$$`;\n export const orignalClass: string = OrignalClassKey;\n export const orignalClassClonesObj: string = `$$originalClassClonesObj$$`;\n export const classMethodsNames: string = `$$classMethodsNames$$`;\n\n export const REALTIME = {\n NAMESPACE: (contextName: string) => `${contextName}:taonRealtimeNsp`,\n TABLE_CHANGE(contextName: string, tableName: string) {\n return `${contextName}:listentablename${tableName}`;\n },\n /**\n * for backendSocket.in(ROOM_NAME).emit(EVENT)\n *\n * Room names are uniqe..\n * here I am limiting number of event for clients.\n */\n ROOM_NAME: {\n\n CUSTOM(contextName: string, customEvent: string) {\n return `${contextName}:roomcustomevnet${customEvent}`;\n },\n /**\n * @LAST TODO\n */\n SUBSCRIBER_EVENT(\n contextName: string,\n className: string,\n propertyName: string,\n ) {\n return `${contextName}:room${_.camelCase(className)}${propertyName}`.toLowerCase();\n },\n UPDATE_ENTITY(\n contextName: string,\n className: string,\n entityId: number | string,\n ) {\n return `${contextName}:room${_.camelCase(className)}${entityId}`.toLowerCase();\n },\n UPDATE_ENTITY_PROPERTY(\n contextName: string,\n className: string,\n property: string,\n entityId: number | string,\n ) {\n return `${contextName}:room${_.camelCase(className)}${_.camelCase(property)}${entityId}`.toLowerCase();\n },\n\n SUBSCRIBE: {\n CUSTOM: (contextName:string) => `${contextName}:roomSubscribeCustomRoomEvent`,\n ENTITY_UPDATE_EVENTS:(contextName:string) => `${contextName}:roomSubscribeEntityEvents`,\n ENTITY_PROPERTY_UPDATE_EVENTS:(contextName:string) => `${contextName}:roomSubscribeEntityPropertyEvents`,\n },\n UNSUBSCRIBE: {\n CUSTOM:(contextName:string) => `${contextName}:roomUnsubscribeCustomRoomEvent`,\n ENTITY_UPDATE_EVENTS:(contextName:string) => `${contextName}:roomUnsubscribeEntityEvents`,\n ENTITY_PROPERTY_UPDATE_EVENTS:(contextName:string) => `${contextName}:roomUnsubscribeEntityPropertyEvents`,\n },\n },\n };\n\n export const metadata = {\n className: `class:realname`,\n options: {\n runtimeController: `runtime:controller:options`,\n controller: `controller:options`,\n controllerMethod: `controller:method:options`,\n entity: `entity:options`,\n repository: `repository:options`,\n provider: `provider:options`,\n subscriber: `subscriber:options`,\n },\n };\n\n export const old = {\n HAS_TABLE_IN_DB: Symbol(),\n MDC_KEY: `modeldataconfig`,\n WEBSQL_REST_PROGRESS_FUN: Symbol(),\n WEBSQL_REST_PROGRESS_FUN_START: Symbol(),\n WEBSQL_REST_PROGRESS_FUN_DONE: Symbol(),\n WEBSQL_REST_PROGRESS_TIMEOUT: Symbol(),\n\n X_TOTAL_COUNT: `x-total-count`,\n CIRCURAL_OBJECTS_MAP_BODY: `circuralmapbody`,\n CIRCURAL_OBJECTS_MAP_QUERY_PARAM: `circuralmapbody`,\n MAPPING_CONFIG_HEADER: `mappingheader`,\n MAPPING_CONFIG_HEADER_BODY_PARAMS: `mhbodyparams`,\n MAPPING_CONFIG_HEADER_QUERY_PARAMS: `mhqueryparams`,\n ENDPOINT_META_CONFIG: `ng2_rest_endpoint_config`,\n CLASS_DECORATOR_CONTEXT: `$$ng2_rest_class_context`,\n SOCKET_MSG: `socketmessageng2rest`,\n ANGULAR: {\n INPUT_NAMES: Symbol(),\n },\n ERROR_MESSAGES: {\n CLASS_NAME_MATCH: `Please check if your \"class name\" matches @Controller( className ) or @Entity( className )`,\n },\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/symbols.ts","\n\nimport { _ } from 'tnp-core/browser';\nimport { Models } from './models';\n\nexport namespace Validators {\n\n export const classNameVlidation = (className, target: Function) => {\n setTimeout(() => {\n\n if (_.isUndefined(className)) {\n throw `[Taon]\n Please provide \"className\" property for each Controller and Entity:\n\n @Taon.Controller({ className: 'MyExampleCtrl' })\n class MyExampleCtrl {\n ...\n }\n\n @Taon.Entity({ className: 'MyExampleEntity' })\n class MyExampleEntity {\n ...\n }\n\n Notice that minified javascript code does not preserve\n Functions/Classes names -this is only solution to preserve classes names.\n\n `;\n }\n });\n\n return _.isUndefined(className) ? target.name : className;\n };\n\n\n\n export const checkIfMethodsWithReponseTYpeAlowed = (\n methods: Models.MethodConfig[],\n current: Models.MethodConfig,\n ) => {\n const defaultResponseType = 'text or JSON';\n if (!current.responseType) {\n return;\n }\n for (let index = 0; index < methods.length; index++) {\n const m = methods[index];\n if (m.path === current.path && m.responseType !== current.responseType) {\n throw new Error(`\n [taon] you can have 2 methods with same path but differetn reponseType-s\n\n ${m.methodName}( ... path: ${m.path} ) -> responseType: ${m.responseType || defaultResponseType}\n ${current.methodName}( ... path: ${current.path} ) -> responseType: ${current.responseType}\n\n Please change path name on of the methods.\n\n `);\n }\n }\n };\n\n\n\n\n export const validateClassFunctions = (\n controllers: any[],\n entities: any[],\n proviers: any[],\n repositories: any[],\n ) => {\n if (\n _.isArray(controllers) &&\n controllers.filter(f => !_.isFunction(f)).length > 0\n ) {\n console.error('controllers', controllers);\n throw `\n\n Incorect value for property \"controllers\" inside Taon.Init(...)\n\n `;\n }\n\n if (\n _.isArray(entities) &&\n entities.filter(f => !_.isFunction(f)).length > 0\n ) {\n console.error('entites', entities);\n throw `\n\n Incorect value for property \"entities\" inside Taon.Init(...)\n\n `;\n }\n };\n\n\n export const preventUndefinedModel = (model, id) => {\n if (_.isUndefined(model)) {\n throw `Bad update by id, config, id: ${id}`;\n }\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/validators.ts","\n\nimport { _ } from 'tnp-core/browser';\nimport * as JSON5 from 'json5';\nimport { Models } from '../models';\nimport { ClassHelpers } from './class-helpers';\n\nexport namespace TaonHelpers {\n\n export const fillUpTo = (s: string, nCharacters: number) => {\n return _.times(nCharacters, n => {\n if (s.charAt(n)) {\n return s.charAt(n);\n }\n return ' ';\n }).join('');\n };\n\n\n\n export const isGoodPath = (p: string) => {\n return p && typeof p === 'string' && p.trim() !== '';\n };\n\n\n\n export const tryTransformParam = param => {\n if (typeof param === 'string') {\n let n = Number(param);\n if (!isNaN(n)) return n;\n const bool = param.trim().toLowerCase();\n if (bool === 'true') {\n return true;\n }\n if (bool === 'false') {\n return false;\n }\n try {\n const t = JSON5.parse(param);\n return t;\n } catch (e) {\n return param;\n }\n }\n return param;\n };\n\n\n\n export const getExpressPath = (\n c: Models.RuntimeControllerConfig,\n pathOrClassConfig: Models.MethodConfig,\n ) => {\n if (typeof pathOrClassConfig === 'string')\n return `${c.calculatedPath}${pathOrClassConfig}`.replace(/\\/$/, '');\n return `${c.calculatedPath}${pathOrClassConfig.path}`.replace(/\\/$/, '');\n };\n\n\n\n export const defaultType = value => {\n if (typeof value === 'string') return '';\n if (typeof value === 'boolean') return false;\n if (Array.isArray(value)) return {};\n if (typeof value === 'object') return {};\n };\n\n\n\n export const parseJSONwithStringJSONs = (\n object: Object,\n waring = false,\n ): Object => {\n\n if (!_.isObject(object)) {\n if (waring) {\n console.error(\n `\n parseJSONwithStringJSONs(...)\n Parameter should be a object, but is ${typeof object}\n `,\n object,\n );\n }\n\n return object;\n }\n\n let res = _.cloneDeep(object);\n\n Object.keys(res).forEach(key => {\n let isJson = false;\n try {\n const possibleJSON = JSON.parse(res[key]);\n res[key] = possibleJSON;\n isJson = true;\n } catch (e) {\n isJson = false;\n }\n\n if (isJson) {\n res[key] = parseJSONwithStringJSONs(res[key], false);\n }\n });\n\n return res;\n };\n\n\n\n export const isPlainFileOrFolder = filePath => {\n return /^([a-zA-Z]|\\-|\\_|\\@|\\#|\\$|\\!|\\^|\\&|\\*|\\(|\\))+$/.test(filePath);\n };\n\n\n\n export const ipcKeyNameResponse = (\n target: Function,\n methodConfig: Models.MethodConfig,\n expressPath: string,\n ) => {\n return [\n 'response',\n ClassHelpers.getName(target),\n methodConfig.methodName,\n methodConfig.type,\n expressPath,\n ].join('--');\n };\n\n\n\n export const ipcKeyNameRequest = (\n target: Function,\n methodConfig: Models.MethodConfig,\n expressPath: string,\n ) => {\n return [\n 'request',\n ClassHelpers.getName(target),\n methodConfig.methodName,\n methodConfig.type,\n expressPath,\n ].join('--');\n };\n\n\n\n export const websqlMocks = headers => {\n const response: Express.Response = {\n status(status: any) {\n\n return {\n send(send: any) {\n\n },\n };\n },\n setHeader(key: string, value: any) {\n\n headers[key] = value;\n },\n };\n const request: Express.Request = {};\n return { request, response };\n };\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/helpers/taon-helpers.ts","\n\nimport { Symbols } from '../symbols';\nimport { Validators } from '../validators';\nimport { _ } from 'tnp-core/browser';\nimport { Models } from '../models';\nimport { TaonControllerOptions } from '../decorators/classes/controller-decorator';\nimport { TaonHelpers } from './taon-helpers';\nimport { TaonEntityOptions } from '../decorators/classes/entity-decorator';\nimport { CLASS } from 'typescript-class-helpers/browser';\n/* */\n/* */\n \n\nexport namespace ClassHelpers {\n\n /**\n * TODO - repalce in every place when getting class fn from object\n */\n export const getClassFnFromObject = (json: Object) => {\n if (_.isUndefined(json) || _.isNull(json)) {\n return;\n }\n if (json.constructor) {\n return json.constructor;\n }\n const p = Object.getPrototypeOf(json);\n return p && p.constructor && p.constructor.name !== 'Object'\n ? p.constructor\n : void 0;\n };\n\n\n\n export const getName = (classFnOrObject: any): string => {\n\n if (classFnOrObject instanceof FormData) {\n return 'FormData';\n }\n if (!classFnOrObject) {\n console.error('OBJECT OR CLASS', classFnOrObject);\n throw new Error(`Cannot get name from this object or class.`);\n }\n return (\n (classFnOrObject[Symbols.classNameStaticProperty]\n ? classFnOrObject[Symbols.classNameStaticProperty]\n : classFnOrObject?.constructor[Symbols.classNameStaticProperty]) ||\n CLASS.getName(classFnOrObject)\n );\n };\n\n\n export const getOrginalClass = (classFnOrObject: any): any => {\n const org = classFnOrObject[Symbols.orignalClass];\n if (!org) {\n return classFnOrObject;\n }\n return getOrginalClass(org);\n };\n\n\n export const getFullInternalName = (classFnOrObject: any): string => {\n\n\n if (!classFnOrObject) {\n throw new Error(`Cannot get name from: ${classFnOrObject}`);\n }\n return (\n (classFnOrObject[Symbols.fullClassNameStaticProperty]\n ? classFnOrObject[Symbols.fullClassNameStaticProperty]\n : classFnOrObject?.constructor[Symbols.fullClassNameStaticProperty]) ||\n void 0\n );\n };\n\n\n\n export const getUniquKey = (classFnOrObject: any): string => {\n const classFn = _.isFunction(classFnOrObject)\n ? classFnOrObject\n : classFnOrObject.constructor;\n const config = Reflect.getMetadata(\n Symbols.metadata.options.controller,\n classFn,\n ) as TaonEntityOptions;\n return config.uniqueKeyProp;\n };\n\n\n\n export const isContextClassObject = (obj: any): boolean => {\n if (\n !_.isObject(obj) ||\n _.isArray(obj) ||\n _.isRegExp(obj) ||\n _.isBuffer(obj) ||\n _.isArrayBuffer(obj)\n ) {\n return false;\n }\n if (_.isDate(obj)) {\n return true;\n }\n const className = getName(obj);\n return _.isString(className) && className !== 'Object';\n };\n\n\n\n\n export const setName = (target: Function, className: string): void => {\n\n Validators.classNameVlidation(className, target);\n target[Symbols.classNameStaticProperty] = className;\n };\n\n\n\n export const hasParentClassWithName = (\n target: Function,\n className: string,\n targets = [],\n ): boolean => {\n if (!target) {\n return false;\n }\n targets.push(target);\n let targetProto = Object.getPrototypeOf(target);\n\n if (\n _.isFunction(targetProto) &&\n ClassHelpers.getName(targetProto) === className\n ) {\n\n return true;\n }\n return hasParentClassWithName(targetProto, className, targets);\n };\n\n\n\n export const getControllerConfig = (\n target: Function,\n ): Models.ControllerConfig | undefined => {\n const classMetadataOptions: TaonControllerOptions = Reflect.getMetadata(\n Symbols.metadata.options.controller,\n target,\n );\n const classMetadata: Models.ControllerConfig = _.merge(\n new Models.ControllerConfig(),\n classMetadataOptions,\n );\n\n\n const methodNames = ClassHelpers.getMethodsNames(target); // Object.getOwnPropertyNames(target.prototype);\n\n for (const methodName of methodNames) {\n const methodMetadata: Models.MethodConfig = Reflect.getMetadata(\n Symbols.metadata.options.controllerMethod,\n target,\n methodName,\n );\n\n if (methodMetadata) {\n classMetadata.methods[methodName] = methodMetadata;\n }\n }\n return classMetadata;\n };\n\n\n\n\n\n const notAllowedAsMethodName = [\n 'length',\n 'name',\n 'arguments',\n 'caller',\n 'constructor',\n 'apply',\n 'bind',\n 'call',\n 'toString',\n '__defineGetter__',\n '__defineSetter__',\n 'hasOwnProperty',\n '__lookupGetter__',\n '__lookupSetter__',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'valueOf',\n '__proto__',\n 'toLocaleString',\n ];\n\n\n export const getMethodsNames = (\n classOrClassInstance: any,\n allMethodsNames = [],\n ): string[] => {\n if (!classOrClassInstance) {\n return allMethodsNames;\n }\n\n const isClassFunction = _.isFunction(classOrClassInstance);\n const classFun = isClassFunction\n ? classOrClassInstance\n : Object.getPrototypeOf(classOrClassInstance);\n const objectToCheck = isClassFunction\n ? (classOrClassInstance as Function)?.prototype\n : classOrClassInstance;\n const prototypeObj = Object.getPrototypeOf(objectToCheck || {});\n\n const properties = _.uniq([\n ...Object.getOwnPropertyNames(objectToCheck || {}),\n ...Object.getOwnPropertyNames(prototypeObj || {}),\n ...Object.keys(objectToCheck || {}),\n ...Object.keys(prototypeObj || {}),\n ]).filter(f => !!f && !notAllowedAsMethodName.includes(f));\n\n properties\n .filter(methodName => typeof objectToCheck[methodName] === 'function')\n .forEach(p => allMethodsNames.push(p));\n\n if (\n !classFun ||\n !classFun.constructor ||\n classFun?.constructor?.name === 'Object'\n ) {\n return allMethodsNames;\n }\n return getMethodsNames(Object.getPrototypeOf(classFun), allMethodsNames);\n };\n\n\n\n export const getControllerConfigs = (\n target: Function,\n configs: Models.ControllerConfig[] = [],\n callerTarget?: Function,\n ): Models.RuntimeControllerConfig[] => {\n if (!_.isFunction(target)) {\n throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;\n }\n\n let config: Models.RuntimeControllerConfig;\n const parentClass = Object.getPrototypeOf(target);\n const parentName = parentClass ? ClassHelpers.getName(parentClass) : void 0;\n const isValidParent = _.isFunction(parentClass) && parentName !== '';\n\n config = getControllerConfig(target);\n\n configs.push(config);\n\n return isValidParent\n ? getControllerConfigs(parentClass, configs, target)\n : configs;\n };\n\n\n\n export const getCalculatedPathFor = (target: Function) => {\n const configs = getControllerConfigs(target);\n\n const parentscalculatedPath = _.slice(configs, 1)\n .reverse()\n .map(bc => {\n if (TaonHelpers.isGoodPath(bc.path)) {\n return bc.path;\n }\n return bc.className;\n })\n .join('/');\n\n return `/${parentscalculatedPath}/${ClassHelpers.getName(target)}`;\n };\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/helpers/class-helpers.ts","\n\nimport { CoreModels } from 'tnp-core/browser';\nimport { Response, RequestHandler } from 'express';\nimport { Response as ExpressResponse, Request as ExpressRequest, } from 'express';/* */\n/* */\n/* */\n\nimport { Models as ModelsNg2Rest } from 'ng2-rest/browser';\nimport { ClassHelpers } from './helpers/class-helpers';\nimport type { TaonControllerOptions } from './decorators/classes/controller-decorator';\nimport type { TaonEntityOptions } from './decorators/classes/entity-decorator';\n\nexport namespace Models {\n export type FrameworkMode =\n | 'backend-frontend(tcp+udp)'\n | 'remote-backend(tcp+udp)'\n | 'backend-frontend(ipc-electron)'\n | 'backend-frontend(websql)';\n\n\n export enum ClassType {\n ENTITY = 'ENTITY',\n CONTROLLER = 'CONTROLLER',\n REPOSITORY = 'REPOSITORY',\n PROVIDER = 'PROVIDER',\n SUBSCRIBER = 'SUBSCRIBER',\n }\n\n export const ClassTypeKey = {\n [ClassType.ENTITY]: 'entities',\n [ClassType.CONTROLLER]: 'controllers',\n [ClassType.REPOSITORY]: 'repositories',\n [ClassType.PROVIDER]: 'providers',\n [ClassType.SUBSCRIBER]: 'subscribers',\n } as {\n [key in ClassType]: keyof ContextOptions<any, any, any, any, any, any>;\n };\n\n\n\n\n export type MiddlewareType = [Function, any[]];\n\n\n\n export interface DatabaseConfig {\n /**\n * database name\n */\n database?: string;\n /**\n * only for file base db: sqlite, sqljs\n */\n location?: string;\n synchronize: boolean;\n dropSchema: boolean;\n type?: CoreModels.DatabaseType;\n\n autoSave: boolean; // TODO what is this ?\n /**\n * for websql db mode\n */\n useLocalForage?: boolean;\n logging: boolean;\n\n databasePort?: number;\n databaseHost?: string;\n databaseUsername?: string;\n databasePassword?: string;\n }\n\n\n\n\n export type ISession = {\n secret?: string;\n saveUninitialized?: boolean;\n /**\n * max age of session\n */\n cookieMaxAge?: number;\n secure?: boolean;\n resave?: boolean;\n };\n\n\n\n export type ContectionOptionsLogs = {\n http: boolean;\n realtime: boolean;\n framework: boolean;\n db: boolean;\n };\n export interface ContextOptions<\n CONTEXTS,\n CONTROLLERS,\n ENTITIES,\n REPOSITORIES,\n PROVIDERS,\n SUBSCRIBERS,\n > {\n contextName: string;\n host?: string;\n /**\n * frontend host only needed when we are using\n * withCredentials for axios\n * and session cookie\n */\n frontendHost?: string;\n remoteHost?: string;\n useIpcWhenElectron?: boolean;\n contexts?: CONTEXTS;\n controllers?: CONTROLLERS;\n entities?: ENTITIES;\n repositories?: REPOSITORIES;\n providers?: PROVIDERS;\n subscribers?: SUBSCRIBERS;\n session?: ISession;\n productionMode?: boolean;\n abstract?: boolean;\n logs?: boolean | ContectionOptionsLogs;\n database?: boolean | DatabaseConfig;\n disabledRealtime?: boolean;\n https?: {\n key: string;\n cert: string;\n };\n publicAssets?: { serverPath: string; locationOnDisk: string }[];\n middlewares?: MiddlewareType[];\n /**\n * @deprecated\n * only for debugging purpose\n */\n override?: {\n entities?: Function[];\n controllers?: Function[];\n repositories?: Function[];\n providers?: Function[];\n subscribers?: Function[];\n };\n }\n\n\n\n export class DecoratorAbstractOpt {\n className: string;\n }\n\n\n\n export class ParamConfig {\n paramName: string;\n paramType: CoreModels.ParamType;\n index: number;\n defaultType: any;\n expireInSeconds?: number;\n }\n\n\n\n export class MethodConfig {\n methodName: string;\n /**\n * path is global in express app\n */\n global?: boolean;\n /**\n * override default content type\n */\n contentType?: any;\n /**\n * override default axiso response type\n */\n responseType?: any;\n path: string;\n descriptor: PropertyDescriptor;\n type: CoreModels.HttpMethod;\n/* */\n/* */\n \n parameters: { [paramName: string]: ParamConfig } = {};\n }\n\n\n\n export class ControllerConfig extends DecoratorAbstractOpt {\n realtime?: boolean;\n path: string;\n uniqueKey?: string;\n methods: { [methodName: string]: MethodConfig } = {};\n }\n\n\n\n export class RuntimeControllerConfig extends ControllerConfig {\n calculatedPath?: string;\n browserTransformFn?: (entity: any) => any;\n }\n\n\n\n export namespace Http {\n export import Rest = ModelsNg2Rest;\n\n export type ContextENDPOINT = { target: Function; initFN: Function };\n\n export type FormlyFromType = 'material' | 'bootstrap';\n\n export type ExpressContext<T> = (\n req: ExpressRequest,\n res: ExpressResponse,\n ) => T;\n\n export type SyncResponse<T> = string | T;\n\n export type ResponseFuncOpt<T> = {\n limitSize?: (\n enties: Function | Function[],\n include: string[],\n exclude: string[],\n ) => void;\n };\n\n export type SyncResponseFunc<T> = (\n options?: ResponseFuncOpt<T>,\n ) => SyncResponse<T>;\n export type MixResponse<T> = SyncResponse<T> | ExpressContext<T>;\n\n export interface ClientAction<T> {\n received?: Rest.PromiseObservableMix<Rest.HttpResponse<T>>;\n }\n\n export interface __Response<T> {\n/* */\n/* */\n \n }\n\n export interface AsyncResponse<T> {\n (\n req?: ExpressRequest,\n res?: ExpressResponse,\n ): Promise<SyncResponse<T> | SyncResponseFunc<T>>;\n }\n\n export type Response<T = string> = (__Response<T> | AsyncResponse<T>) &\n ClientAction<T> &\n __Response<T>;\n\n export class Errors {\n public toString = (): string => {\n return this.message;\n };\n\n private constructor(\n public message: string,\n private code: ModelsNg2Rest.HttpCode = 400,\n ) {}\n\n private static create(\n message: string,\n code: ModelsNg2Rest.HttpCode = 400,\n ) {\n return new Errors(message, code);\n }\n\n public static entityNotFound(entity?: Function) {\n return Errors.create(\n `Entity ${ClassHelpers.getName(entity)} not found`,\n );\n }\n\n public static custom(\n message: string,\n code: ModelsNg2Rest.HttpCode = 400,\n ) {\n return Errors.create(message, code);\n }\n }\n\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/models.ts","\n\nimport { CoreModels, _ } from 'tnp-core/browser';\nimport { Models } from '../../models';\nimport { Symbols } from '../../symbols';\nimport { Models as ModelsNg2Rest } from 'ng2-rest/browser';\nconst metaReq = (\n method: Models.Http.Rest.HttpMethod,\n path: string,\n target: Function,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n pathOrOptions: string | TaonHttpDecoratorOptions,\n pathIsGlobal: boolean,\n) => {\n let options: TaonHttpDecoratorOptions;\n if (typeof pathOrOptions === 'object') {\n options = pathOrOptions;\n pathOrOptions = options.path as any;\n pathIsGlobal = !!options.pathIsGlobal;\n path = options.path;\n } else {\n options = { pathOrOptions, pathIsGlobal } as any;\n }\n\n const { overrideContentType, overridResponseType } = options;\n\n let methodConfig: Models.MethodConfig = Reflect.getMetadata(\n Symbols.metadata.options.controllerMethod,\n target.constructor,\n propertyKey,\n );\n if (!methodConfig) {\n methodConfig = new Models.MethodConfig();\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n }\n\n methodConfig.methodName = propertyKey;\n methodConfig.type = method;\n if (!path) {\n let paramsPathConcatedPath = '';\n for (const key in methodConfig.parameters) {\n if (methodConfig.parameters.hasOwnProperty(key)) {\n const element = methodConfig.parameters[key];\n if (\n element.paramType === 'Path' &&\n _.isString(element.paramName) &&\n element.paramName.trim().length > 0\n ) {\n paramsPathConcatedPath += `/${element.paramName}/:${element.paramName}`;\n }\n }\n }\n methodConfig.path = `/${propertyKey}${paramsPathConcatedPath}`;\n } else {\n methodConfig.path = path;\n }\n\n methodConfig.descriptor = descriptor;\n methodConfig.global = pathIsGlobal;\n methodConfig.contentType = overrideContentType;\n methodConfig.responseType = overridResponseType;\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n\n};\n\nexport interface TaonHttpDecoratorOptions {\n path?: string;\n pathIsGlobal?: boolean;\n overrideContentType?: CoreModels.ContentType;\n overridResponseType?: ModelsNg2Rest.ResponseTypeAxios;\n}\n\nexport function GET(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'get',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function HEAD(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'head',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function POST(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'post',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function PUT(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'put',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function PATCH(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'patch',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function DELETE(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'delete',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/http/http-methods-decorators.ts","\n\nimport { Models } from '../../models';\nimport { Symbols } from '../../symbols';\n\nfunction metaParam(\n param: Models.Http.Rest.ParamType,\n name: string,\n expire: number,\n defaultValue = undefined,\n target: Function,\n propertyKey: string | symbol,\n parameterIndex: number,\n) {\n let methodConfig: Models.MethodConfig = Reflect.getMetadata(\n Symbols.metadata.options.controllerMethod,\n target.constructor,\n propertyKey,\n );\n if (!methodConfig) {\n methodConfig = new Models.MethodConfig();\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n }\n\n const nameKey = name ? name : param;\n const p = (methodConfig.parameters[nameKey] = !methodConfig.parameters[\n nameKey\n ]\n ? new Models.ParamConfig()\n : methodConfig.parameters[nameKey]);\n p.index = parameterIndex;\n p.paramName = name;\n p.paramType = param;\n p.defaultType = defaultValue;\n p.expireInSeconds = expire;\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n\n}\n\nexport function Path(name: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam('Path', name, undefined, {}, target, propertyKey, parameterIndex);\n };\n}\n\nexport function Query(name?: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam(\n 'Query',\n name,\n undefined,\n {},\n target,\n propertyKey,\n parameterIndex,\n );\n };\n}\n\nexport function Cookie(name: string, expireInSecond: number = 3600) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam(\n 'Cookie',\n name,\n expireInSecond,\n {},\n target,\n propertyKey,\n parameterIndex,\n );\n };\n}\n\nexport function Header(name?: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam(\n 'Header',\n name,\n undefined,\n {},\n target,\n propertyKey,\n parameterIndex,\n );\n };\n}\n\nexport function Body(name?: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam('Body', name, undefined, {}, target, propertyKey, parameterIndex);\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/http/http-params-decorators.ts","\n\nimport * as methods from './http-methods-decorators';\nimport * as params from './http-params-decorators';\n\nexport namespace Http {\n export import GET = methods.GET;\n export import POST = methods.POST;\n export import PUT = methods.PUT;\n export import DELETE = methods.DELETE;\n export import PATCH = methods.PATCH;\n export import HEAD = methods.HEAD;\n export namespace Param {\n export import Query = params.Query;\n export import Path = params.Path;\n export import Body = params.Body;\n export import Cookie = params.Cookie;\n export import Header = params.Header;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/http/http-decorators.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\n\nexport function TaonController(options?: TaonControllerOptions) {\n return function (constructor: Function) {\n ClassHelpers.setName(constructor, options?.className);\n Reflect.defineMetadata(\n Symbols.metadata.options.controller,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n };\n}\n\nexport class TaonControllerOptions extends Models.DecoratorAbstractOpt {\n /**\n * typeorm realtime subscribtion // TODO disabled for now, does not make sense ?s\n */\n realtime?: boolean;\n /**\n * override default path for controller api\n */\n path?: string;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/controller-decorator.ts","\n\n\nimport { Helpers, _ } from 'tnp-core/browser';\nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseRepository } from './base-repository';\nimport { BaseClass } from './base-class';\n\n\nexport class BaseInjector<CloneT extends BaseClass = any> {\n /**\n * for proxy purposes\n */\n getOriginalPrototype: () => any;\n /**\n * for proxy purposes\n */\n getOriginalConstructor: () => any;\n\n\n /**\n * class initialization hook\n * taon after class instace creation\n */\n async _() {\n const reposToInit = this.__repositories_to_init__;\n for (const repo of reposToInit) {\n await repo.__init(this);\n }\n }\n\n\n\n /**\n * Current endpoint context\n */\n get __endpoint_context__() {\n return this[Symbols.ctxInClassOrClassObj] as EndpointContext;\n }\n\n\n\n\n\n /**\n * inject crud repo for entity\n */\n injectRepo<T>(entityForCrud: new (...args: any[]) => T): BaseRepository<T> {\n const repoProxy = this.__inject(void 0, {\n localInstance: true,\n resolveClassFromContext: 'BaseRepository',\n locaInstanceConstructorArgs: [() => entityForCrud],\n });\n this.__repositories_to_init__.push(repoProxy as any);\n return repoProxy as any;\n }\n\n\n\n injectCustomRepository<T>(\n cutomRepositoryClass: new (...args: any[]) => T,\n ): T {\n const repoProxy = this.__inject<T>(cutomRepositoryClass, {\n localInstance: true,\n locaInstanceConstructorArgs: [\n () => cutomRepositoryClass.prototype.entityClassResolveFn(),\n ],\n });\n this.__repositories_to_init__.push(repoProxy as any);\n return repoProxy;\n }\n\n\n\n /**\n * aliast to .injectRepository()\n */\n injectCustomRepo<T>(cutomRepositoryClass: new (...args: any[]) => T): T {\n const repoProxy = this.injectCustomRepository<T>(cutomRepositoryClass);\n this.__repositories_to_init__.push(repoProxy as any);\n return repoProxy;\n }\n\n\n\n injectController<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n\n\n /**\n * aliast to .injectController()\n */\n injectSubscriber<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n\n /**\n * aliast to .injectController()\n */\n injectCtrl<T>(ctor: new (...args: any[]) => T): T {\n return this.injectController<T>(ctor);\n }\n\n\n\n /**\n * global provider available in every context\n */\n injectGlobalProvider<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n\n /**\n * context scoped provider\n * TODO\n */\n injectContextProvider<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n /**\n * Repositories to init (by controller)\n */\n protected __repositories_to_init__ = [] as BaseRepository<any>[];\n\n\n /**\n * Inject: Controllers, Providers, Repositories, Services, etc.\n * TODO addd nest js injecting\n */\n private __inject<T>(\n ctor: new (...args: any[]) => T,\n options?: {\n /**\n * (repositories are ONLY/ALWAYS local instances)\n * If true, then local instance will be created\n * controllers, providers can be local or global\n */\n localInstance: boolean;\n resolveClassFromContext?: string;\n locaInstanceConstructorArgs?: ConstructorParameters<typeof ctor>;\n },\n ): T {\n if (!options) {\n options = {} as any;\n }\n\n const contextClassInstance = this;\n return new Proxy(\n {},\n {\n get: (__, propName) => {\n const contextFromClass: EndpointContext =\n ctor && ctor[Symbols.ctxInClassOrClassObj];\n\n const resultContext: EndpointContext = contextFromClass\n ? contextFromClass\n : this.__endpoint_context__;\n\n if (options.resolveClassFromContext) {\n const resolvedClass = resultContext.getClassFunByClassName(\n options.resolveClassFromContext,\n );\n ctor = resolvedClass as any;\n }\n\n if (resultContext) {\n var instance: T = resultContext.inject(ctor, {\n ...options,\n contextClassInstance,\n });\n if (!instance) {\n throw new Error(\n `Not able to inject \"${\n ClassHelpers.getName(ctor) || ctor.name\n }\" inside ` +\n `property \"${propName?.toString()}\" on class \"${ClassHelpers.getName(\n this,\n )}\".\n\n Please add \"${\n ClassHelpers.getName(ctor) || ctor.name\n }\" to (entites or contorllers or providers or repositories)\n\n `,\n );\n }\n\n const result =\n typeof instance[propName] === 'function'\n ? instance[propName].bind(instance)\n : instance[propName];\n\n\n return result;\n }\n\n\n\n },\n set: (__, propName, value) => {\n const contextFromClass = ctor && ctor[Symbols.ctxInClassOrClassObj];\n const resultContext: EndpointContext = contextFromClass\n ? contextFromClass\n : this.__endpoint_context__;\n\n if (options.resolveClassFromContext) {\n const resolvedClass = resultContext.getClassFunByClassName(\n options.resolveClassFromContext,\n );\n ctor = resolvedClass as any;\n }\n\n if (resultContext) {\n var instance: T = resultContext.inject(ctor, {\n ...options,\n contextClassInstance,\n });\n if (!instance) {\n const classNameNotResolved =\n ClassHelpers.getName(ctor) || ctor.name;\n throw new Error(\n `Not able to inject \"${classNameNotResolved}\" inside ` +\n `property \"${propName?.toString()}\" on class \"${ClassHelpers.getName(\n this,\n )}\".\n\n Please add \"${\n ClassHelpers.getName(ctor) || ctor.name\n }\" to (entites or contorllers or providers or repositories)\n\n `,\n );\n }\n instance[propName] = value;\n }\n return true;\n },\n },\n ) as T;\n }\n\n\n\n\n\n public clone(override: Partial<CloneT>): CloneT {\n const classFn = ClassHelpers.getClassFnFromObject(this);\n const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));\n\n return result;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-injector.ts","\n\nimport { TaonController } from '../decorators/classes/controller-decorator';\nimport { BaseInjector } from './base-injector';\n\n@TaonController({ className: 'BaseController' })\nexport class BaseController extends BaseInjector {\n /**\n * init example data for db\n */\n initExampleDbData(): Promise<any> {\n return void 0;\n }\n\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-controller.ts","\n\n\nimport { Symbols } from '../symbols';\nimport { BaseController } from './base-controller';\nimport { BaseRepository } from './base-repository';\nimport { GET, PUT, DELETE, POST, HEAD, PATCH, } from '../decorators/http/http-methods-decorators';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Query, Path, Body } from '../decorators/http/http-params-decorators';\nimport { MySqlQuerySource } from 'taon-type-sql/browser';\nimport { Models } from '../models';\nimport { Helpers, _ } from 'tnp-core/browser';\nimport { TaonController, TaonControllerOptions, } from '../decorators/classes/controller-decorator';/* */\n/* */\n/* */\n\nimport { ClassHelpers } from '../helpers/class-helpers';\n\nimport { Validators } from '../validators';\nimport { TaonEntityOptions } from '../decorators/classes/entity-decorator';\n\n\n/**\n * Please override property entityClassFn with entity class.\n */\n@TaonController({ className: 'BaseCrudController' })\nexport abstract class BaseCrudController<Entity> extends BaseController {\n\n protected db?: BaseRepository<Entity>;\n\n /**\n * Please provide entity as class propery entityClassFn:\n * @returns class function\n *\n */\n abstract entityClassResolveFn: () => any;\n\n\n\n async _() {\n if (!_.isFunction(this.entityClassResolveFn)) {\n Helpers.warn(\n `Skipping initing CRUD controller ${ClassHelpers.getName(\n this,\n )} because entityClassResolveFn is not provided.`,\n );\n return;\n }\n\n let entityClassFn = this.entityClassResolveFn();\n this.db = this.injectRepo(entityClassFn);\n\n if (entityClassFn) {\n const configEntity = Reflect.getMetadata(\n Symbols.metadata.options.entity,\n ClassHelpers.getClassFnFromObject(this),\n ) as TaonEntityOptions;\n if (configEntity?.createTable === false) {\n Helpers.warn(\n `Table for entity ${ClassHelpers.getName(\n entityClassFn,\n )} will not be created. Crud will not work properly.`,\n );\n }\n } else {\n Helpers.error(`Entity class not provided for controller ${ClassHelpers.getName(\n this,\n )}.\n\n Please provide entity as class propery entityClassFn:\n\n class ${ClassHelpers.getName(this)} extends BaseCrudController<Entity> {\n\n entityClassResolveFn = ()=> MyEntityClass;\n\n }\n\n `);\n }\n await super._();\n }\n\n\n\n @GET(`/:id/property/:property`)\n bufforedChanges(\n @Path(`id`) id: number | string,\n @Path(`property`) property: string,\n @Query('alreadyLength') alreadyLength?: number,\n ): Models.Http.Response<string | any[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @GET()\n pagination(\n @Query('pageNumber') pageNumber: number = 1,\n @Query('pageSize') pageSize: number = 10,\n @Query('search') search: string = '',\n ): Models.Http.Response<Entity[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @GET()\n getAll(): Models.Http.Response<Entity[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @GET(`/:id`)\n getBy(@Path(`id`) id: number | string): Models.Http.Response<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @PUT(`/:id`)\n updateById(\n @Path(`id`) id: number | string,\n @Body() item: Entity,\n ): Models.Http.Response<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @PATCH(`/:id`)\n patchById(\n @Path(`id`) id: number | string,\n @Body() item: Entity,\n ): Models.Http.Response<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @PUT()\n bulkUpdate(@Body() items: Entity[]): Models.Http.Response<Entity[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @DELETE(`/:id`)\n deleteById(@Path(`id`) id: number): Models.Http.Response<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @DELETE(`/bulkDelete/:ids`)\n bulkDelete(\n @Path(`ids`) ids: (number | string)[],\n ): Models.Http.Response<(number | string | Entity)[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @POST()\n create(@Body() item: Entity): Models.Http.Response<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @POST()\n bulkCreate(@Body() items: Entity): Models.Http.Response<Entity[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-crud-controller.ts","\n\n\nimport { Helpers, _ } from 'tnp-core/browser';\nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseRepository } from './base-repository';\n\nimport { inject } from '@angular/core';\n\n\n\nexport class BaseClass<CloneT extends BaseClass = any> {\n\n /**\n * class initialization hook\n * taon after class instace creation\n */\n async _() {}\n\n\n\n public clone(override: Partial<CloneT>): CloneT {\n const classFn = ClassHelpers.getClassFnFromObject(this);\n const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));\n\n return result;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-class.ts","\n\n/* */\n/* */\n \nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { BaseClass } from './base-class';\n\nlet EntityDecorator = () => {\n return (target: any) => {};\n};\n\n/* */\n/* */\n \n\n@EntityDecorator()\nexport abstract class BaseEntity<\n /**\n * type for cloning\n */\n CloneT extends BaseClass = any,\n> extends BaseClass<CloneT> {}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-entity.ts","\n\n/* */\n/* */\n \nimport { Orm } from '../orm';\nimport { BaseEntity } from './base-entity';\nimport type { BaseClass } from './base-class';\n\n\nlet EntityDecorator = () => {\n return (target: any) => {};\n};\n\n/* */\n/* */\n \n\n@EntityDecorator()\nexport abstract class BaseAbstractEntity<\n CloneT extends BaseClass = any,\n> extends BaseEntity<CloneT> {\n/* */\n/* */\n \n id: string;\n\n/* */\n/* */\n \n version: number;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-abstract-entity.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\nimport { Repository as TypeormRepository, EntityRepository, } from 'taon-typeorm/browser';/* */\n/* */\n/* */\n\nimport { _ } from 'tnp-core/browser';\n\nexport function TaonRepository(options: TaonRepositoryOptions) {\n return function (constructor: Function) {\n Reflect.defineMetadata(\n Symbols.metadata.options.repository,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n ClassHelpers.setName(constructor, options?.className);\n };\n}\n\nexport class TaonRepositoryOptions<\n T = any,\n> extends Models.DecoratorAbstractOpt {}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/repository-decorator.ts","\n\n\nimport type {\n DataSource,\n DeepPartial,\n DeleteResult,\n FindManyOptions,\n FindOneOptions,\n FindOptionsWhere,\n InsertResult,\n\n RemoveOptions,\n Repository,\n SaveOptions,\n UpdateResult,\n} from 'taon-typeorm';\n\nimport type { QueryDeepPartialEntity } from 'taon-typeorm/lib/typeorm/query-builder/QueryPartialEntity';\n\nimport type { UpsertOptions } from 'taon-typeorm/lib/typeorm/repository/UpsertOptions';\n\n\n\nimport type { DataSource as DataSourceType } from 'taon-typeorm/browser';\nimport { EndpointContext } from '../endpoint-context';\nimport { Helpers } from 'tnp-core/browser';\nimport { _ } from 'tnp-core/browser';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport { MySqlQuerySource } from 'taon-type-sql/browser';\nimport { TaonRepository } from '../decorators/classes/repository-decorator';\nimport { BaseInjector } from './base-injector';\n\n\nconst INDEX_KEYS_NO_FOR_UPDATE = ['id'];\n\n@TaonRepository({ className: 'BaseRepository' })\nexport abstract class BaseRepository<\n Entity extends { id?: any },\n> extends BaseInjector {\n\n\n\n\n\n\n abstract entityClassResolveFn: () => any;\n constructor(\n\n private __entityClassResolveFn: () => any,\n ) {\n super();\n // @ts-ignore\n this.entityClassResolveFn = __entityClassResolveFn;\n }\n\n\n\n private __dbQuery: MySqlQuerySource;\n\n public get dbQuery(): MySqlQuerySource {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n public get connection(): DataSourceType {\n/* */\n/* */\n return (void 0);\n }\n\n\n\n/* */\n/* */\n \n protected get repository() {\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * target for repository\n */\n public get target(): Function {\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * alias to repository\n */\n protected get repo() {\n/* */\n/* */\n return (void 0);\n }\n\n public get repositoryExists(): boolean {\n/* */\n/* */\n return (void 0);\n }\n\n\n\n\n\n async __init(context?: any) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n /**\n * Checks if entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n hasId(entity: Entity): boolean {\n return this.repo.hasId(entity);\n }\n\n\n\n /**\n * Gets entity mixed id.\n */\n getId(entity: Entity): any {\n return this.repo.getId(entity);\n }\n\n\n\n /**\n Saves a given entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n async save(\n item: Entity,\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * alias to save\n * -> it will actuall create new entity in db\n * in oposite to typeorm create method\n */\n async create(\n item: Entity,\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity> {\n return this.save(item, options);\n }\n\n async bulkSave(\n items: Entity[],\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n async bulkCreate(\n items: Entity[],\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity[]> {\n return this.bulkSave(items, options);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Saves all given entities in the database.\n * If entities do not exist in the database then inserts, otherwise updates.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Merges multiple entities (or entity-like objects) into a given entity.\n */\n merge(mergeIntoEntity: Entity, ...entityLikes: Entity[]): Entity {\n return this.repo.merge(mergeIntoEntity, ...entityLikes);\n }\n\n\n\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n *\n * Note that given entity-like object must have an entity id / primary key to find entity by.\n * Returns undefined if entity with given id was not found.\n */\n preload(entityLike: Entity): Promise<Entity | undefined> {\n return this.repo.preload(entityLike);\n }\n\n\n\n\n /**\n * Removes a given entities from the database.\n */\n async remove(idOrEntity: number | string | Entity): Promise<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * alias to remove\n */\n async delete(idOrEntity: number | string | Entity): Promise<Entity> {\n return this.remove(idOrEntity);\n }\n\n /**\n * alias to removeById\n */\n async deleteById(id: number | string): Promise<Entity> {\n return this.remove(id);\n }\n async bulkRemove(\n idsOrEntities: (number | string | Entity)[],\n ): Promise<Entity[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n async bulkDelete(ids: (number | string | Entity)[]): Promise<Entity[]> {\n return this.bulkRemove(ids);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Records the delete date of all given entities.\n */\n softRemove<T extends Entity>(\n entities: T[],\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T[]>;\n /**\n * Records the delete date of all given entities.\n */\n softRemove<T extends Entity>(\n entities: T[],\n options?: SaveOptions,\n ): Promise<(T & Entity)[]>;\n /**\n * Records the delete date of a given entity.\n */\n softRemove<T extends Entity>(\n entity: T,\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T>;\n /**\n * Records the delete date of a given entity.\n */\n softRemove<T extends Entity>(\n entity: T,\n options?: SaveOptions,\n ): Promise<T & Entity> {\n return this.repo.softRemove(entity, options);\n }\n\n\n\n /**\n * Recovers all given entities in the database.\n */\n recover<T extends Entity>(\n entities: T[],\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T[]>;\n /**\n * Recovers all given entities in the database.\n */\n recover<T extends Entity>(\n entities: T[],\n options?: SaveOptions,\n ): Promise<(T & Entity)[]>;\n /**\n * Recovers a given entity in the database.\n */\n recover<T extends Entity>(\n entity: T,\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T>;\n /**\n * Recovers a given entity in the database.\n */\n recover<T extends Entity>(\n entity: T,\n options?: SaveOptions,\n ): Promise<T & Entity> {\n return this.repo.recover(entity, options);\n }\n\n\n\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n */\n insert(\n entity: QueryDeepPartialEntity<Entity> | QueryDeepPartialEntity<Entity>[],\n ): Promise<InsertResult> {\n return this.repo.insert(entity);\n }\n\n\n\n async update(item: Entity) {\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n async updateById(id: number | string, item: Entity) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n async bulkUpdate(items: Entity[]) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Inserts a given entity into the database, unless a unique constraint conflicts then updates the entity\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT ... ON CONFLICT DO UPDATE/ON DUPLICATE KEY UPDATE query.\n */\n upsert(\n entityOrEntities:\n | QueryDeepPartialEntity<Entity>\n | QueryDeepPartialEntity<Entity>[],\n conflictPathsOrOptions: string[] | UpsertOptions<Entity>,\n ): Promise<InsertResult> {\n return this.repo.upsert(entityOrEntities, conflictPathsOrOptions);\n }\n\n\n\n /**\n * Records the delete date of entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n softDelete(\n criteria:\n | string\n | string[]\n | number\n | number[]\n | Date\n | Date[]\n\n\n | FindOptionsWhere<Entity>,\n ): Promise<UpdateResult> {\n return this.repo.softDelete(criteria);\n }\n\n\n\n /**\n * Restores entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n restore(\n criteria:\n | string\n | string[]\n | number\n | number[]\n | Date\n | Date[]\n\n\n | FindOptionsWhere<Entity>,\n ): Promise<UpdateResult> {\n return this.repo.restore(criteria);\n }\n\n\n\n /**\n * Counts entities that match given options.\n * Useful for pagination.\n */\n count(options?: FindManyOptions<Entity>): Promise<number> {\n return this.repo.count(options);\n }\n\n\n\n /**\n * Counts entities that match given conditions.\n * Useful for pagination.\n */\n countBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<number> {\n return this.repo.countBy(where);\n }\n\n\n\n /**\n * Finds entities that match given find options.\n */\n find(options?: FindManyOptions<Entity>): Promise<Entity[]> {\n return this.repo.find(options);\n }\n\n\n\n /**\n * Finds entities that match given find options.\n */\n findBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<Entity[]> {\n return this.repo.findBy(where);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n //\n /**\n * Finds entities that match given find options.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCount(options?: FindManyOptions<Entity>): Promise<[Entity[], number]> {\n return this.repo.findAndCount(options);\n }\n\n\n\n /**\n * Finds entities that match given WHERE conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCountBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<[Entity[], number]> {\n return this.repo.findAndCountBy(where);\n }\n\n\n\n /**\n * Finds entities with ids.\n * Optionally find options or conditions can be applied.\n *\n * @deprecated use `findBy` method instead in conjunction with `In` operator, for example:\n *\n * .findBy({\n * id: In([1, 2, 3])\n * })\n */\n findByIds(ids: any[]): Promise<Entity[]> {\n return this.repo.findByIds(ids);\n }\n\n\n\n /**\n * Finds first entity by a given find options.\n * If entity was not found in the database - returns null.\n */\n findOne(options: FindOneOptions<Entity>): Promise<Entity | null> {\n return this.repo.findOne(options);\n }\n\n\n\n /**\n * Finds first entity that matches given where condition.\n * If entity was not found in the database - returns null.\n */\n findOneBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<Entity | null> {\n return this.repo.findOneBy(where);\n }\n\n\n\n /**\n * Finds first entity that matches given id.\n * If entity was not found in the database - returns null.\n *\n * @deprecated use `findOneBy` method instead in conjunction with `In` operator, for example:\n *\n * .findOneBy({\n * id: 1 // where \"id\" is your primary column name\n * })\n */\n findOneById(\n id: number | string | Date,\n\n ): Promise<Entity | null> {\n return this.repo.findOneById(id);\n }\n\n\n\n /**\n * Finds first entity by a given find options.\n * If entity was not found in the database - rejects with error.\n */\n findOneOrFail(options: FindOneOptions<Entity>): Promise<Entity> {\n return this.repo.findOneOrFail(options);\n }\n\n\n\n /**\n * Finds first entity that matches given where condition.\n * If entity was not found in the database - rejects with error.\n */\n findOneByOrFail(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<Entity> {\n return this.repo.findOneByOrFail(where);\n }\n\n\n\n /**\n * Executes a raw SQL query and returns a raw database results.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n */\n query(query: string, parameters?: any[]): Promise<any> {\n return this.repo.query(query, parameters);\n }\n\n\n\n /**\n * Clears all the data from the given table/collection (truncates/drops it).\n *\n * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.\n * @see https://stackoverflow.com/a/5972738/925151\n */\n clear(): Promise<void> {\n return this.repo.clear();\n }\n\n\n\n /**\n * Increments some column by provided value of the entities matched given conditions.\n */\n increment(\n conditions: FindOptionsWhere<Entity>,\n propertyPath: string,\n value: number | string,\n ): Promise<UpdateResult> {\n return this.repo.increment(conditions, propertyPath, value);\n }\n\n\n\n /**\n * Decrements some column by provided value of the entities matched given conditions.\n */\n decrement(\n conditions: FindOptionsWhere<Entity>,\n propertyPath: string,\n value: number | string,\n ): Promise<UpdateResult> {\n return this.repo.decrement(conditions, propertyPath, value);\n }\n\n\n\n /**\n * @deprecated use findAndCount instead\n */\n async getAll() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n async getBy(id: number | string): Promise<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-repository.ts","\n\nimport { BaseInjector } from './base-injector';\n\nexport class BaseProvider extends BaseInjector {}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-provider.ts","\n\nexport class DITaonContainer {\n private static instances = new Map();\n\n static resolve<T>(target: Function): T {\n if (DITaonContainer.instances.has(target)) {\n return DITaonContainer.instances.get(target);\n }\n\n\n const injections = []; // tokens.map(token => Container.inject<any>(token));\n\n const instance = new (target as any)(...injections);\n DITaonContainer.instances.set(target, instance);\n return instance;\n }\n\n static inject<T>(target: new (...args: any[]) => T): T {\n return new Proxy(\n {},\n {\n get: (_, propName) => {\n let instance: T =\n DITaonContainer.instances.get(target) ||\n DITaonContainer.resolve(target);\n return typeof instance[propName] === 'function'\n ? instance[propName].bind(instance)\n : instance[propName];\n },\n set: (_, propName, value) => {\n let instance: T =\n DITaonContainer.instances.get(target) ||\n DITaonContainer.resolve(target);\n instance[propName] = value;\n return true;\n },\n },\n ) as T;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/dependency-injection/di-container.ts","\n\nimport { Models } from './models';\nimport { Response as ExpressResponse, Request as ExpressRequest, } from 'express';/* */\n/* */\n/* */\n\nimport { TaonHelpers } from './helpers/taon-helpers';\nimport { Helpers } from 'tnp-core/browser';\n\nexport const getResponseValue = <T>(\n response: Models.Http.Response<T>,\n options?: { req: ExpressRequest; res: ExpressResponse },\n): Promise<T> => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n};\n\n ;({}); // @--end-of-file-for-module=taon lib/get-response-value.ts","\n\nimport { Helpers } from 'tnp-core/browser';\n\nconst ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];\n\nexport { ENV };\n\n ;({}); // @--end-of-file-for-module=taon lib/env.ts","\n\n\n/* */\n/* */\n \nimport { _ } from 'tnp-core/browser';\nimport { Subscriber } from 'rxjs';\nimport { Symbols } from '../symbols';\nimport { Socket as SocketClient } from 'socket.io-client';\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\nimport { RealtimeModels } from './realtime.models';\n\n\nexport class RealtimeSubsManager {\n private isListening = false;\n private observers: Subscriber<any>[] = [];\n constructor(private options: RealtimeModels.SubsManagerOpt) {}\n\n\n startListenIfNotStarted(\n realtime: SocketClient<DefaultEventsMap, DefaultEventsMap>,\n ) {\n if (this.options.core.ctx.disabledRealtime) {\n console.warn(`[Taon][startListenIfNotStarted] sockets are disabled`);\n return;\n }\n\n if (!realtime) {\n console.warn(\n `[Taon][startListenIfNotStarted] invalid socket connection`,\n );\n return;\n }\n\n if (!this.isListening) {\n const subscribeEvent = Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.CUSTOM(\n this.options.core.ctx.contextName,\n );\n\n this.isListening = true;\n\n if (this.options.customEvent) {\n\n realtime.emit(\n subscribeEvent,\n this.options.roomName,\n );\n } else {\n if (_.isString(this.options.property)) {\n\n realtime.emit(\n Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n ),\n this.options.roomName,\n );\n } else {\n\n realtime.emit(\n Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n ),\n this.options.roomName,\n );\n }\n }\n\n\n realtime.on(this.options.roomName, data => {\n this.update(data);\n });\n }\n }\n\n\n\n add(observer: Subscriber<any>) {\n\n this.observers.push(observer);\n }\n\n\n\n remove(observer: Subscriber<any>) {\n\n this.observers = this.observers.filter(obs => obs !== observer);\n if (this.observers.length === 0) {\n\n this.isListening = false;\n const { core, customEvent, roomName, property } = this.options;\n\n const realtime = core.FE_REALTIME;\n\n if (customEvent) {\n realtime.emit(\n Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.CUSTOM(\n this.options.core.ctx.contextName,\n ),\n roomName,\n );\n } else {\n if (_.isString(property)) {\n realtime.emit(\n Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n ),\n roomName,\n );\n } else {\n realtime.emit(\n Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n ),\n roomName,\n );\n }\n }\n }\n }\n\n\n\n private update(data: any) {\n\n const ngZone = this.options.core.ctx.ngZone;\n\n\n this.observers.forEach(observer => {\n\n if (!observer.closed) {\n if (ngZone) {\n ngZone.run(() => {\n observer.next(data);\n });\n } else {\n observer.next(data);\n }\n }\n });\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-subs-manager.ts","\n\n\nimport { _ } from 'tnp-core/browser';\nimport { RealtimeCore } from './realtime-core';\nimport { Symbols } from '../symbols';\nimport { Observable } from 'rxjs';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport { RealtimeSubsManager } from './realtime-subs-manager';\nimport { RealtimeModels } from './realtime.models';\nimport type { BaseEntity } from '../base-classes/base-entity';\nimport { Helpers } from 'tnp-core/browser';\n\n\nexport class RealtimeClient {\n private subsmanagers: { [path: string]: RealtimeSubsManager } = {};\n constructor(private core: RealtimeCore) {\n this.core = core;\n if (!core.ctx.disabledRealtime) {\n\n this.init();\n\n }\n }\n\n\n private init() {\n\n const nspPath = {\n global: this.core.pathFor(),\n realtime: this.core.pathFor(\n Symbols.REALTIME.NAMESPACE(this.core.ctx.contextName),\n ),\n };\n\n this.core.ctx.logRealtime &&\n console.info(\n '[CLIENT] NAMESPACE GLOBAL ',\n nspPath.global.href + ` host: ${this.core.ctx.host}`,\n );\n\n this.core.ctx.logRealtime &&\n console.info(\n '[CLIENT] NAMESPACE REALTIME',\n nspPath.realtime.href + ` host: ${this.core.ctx.host}`,\n );\n\n\n\n this.core.FE = this.core.strategy.io(nspPath.global.origin, {\n path: nspPath.global.pathname,\n });\n\n if (this.core.FE.on) {\n this.core.FE.on('connect', () => {\n\n\n\n console.info(\n `[CLIENT] conented to GLOBAL namespace ${this.core.FE.id} of host: ${this.core.ctx.host}`,\n );\n });\n }\n\n\n\n\n this.core.FE_REALTIME = this.core.strategy.io(nspPath.realtime.origin, {\n path: nspPath.realtime.pathname,\n });\n\n if (this.core.FE_REALTIME.on) {\n this.core.FE_REALTIME.on('connect', () => {\n\n\n\n console.info(\n `[CLIENT] conented to REALTIME namespace ${this.core.FE_REALTIME.id} host: ${this.core.ctx.host}`,\n );\n });\n }\n\n\n }\n\n\n\n /**\n * Changes trigger on backend needs to be done manually.. example code:\n *\n * ...\n * Context.Realtime.Server.TrigggerEntityChanges(myEntityInstance);\n * ...\n */\n listenChangesEntity(\n entityClassFn: Function,\n idOrUniqValue: any,\n options: RealtimeModels.ChangeOption,\n ) {\n options = options || ({} as any);\n\n\n const { property, customEvent } = options;\n const className = !customEvent && ClassHelpers.getName(entityClassFn);\n\n if (_.isString(property)) {\n if (property.trim() === '') {\n throw new Error(\n `[Taon][listenChangesEntity.. incorect property '' for ${className}`,\n );\n }\n }\n\n\n return new Observable(observer => {\n\n\n if (this.core.ctx.disabledRealtime) {\n console.error(`[Taon][realtime rxjs] remove taon config flag:\n\n ...\n disabledRealtime: true\n ...\n\nto use socket realtime connection;\n `);\n return () => {\n\n };\n }\n\n let roomName: string;\n\n if (customEvent) {\n roomName = Symbols.REALTIME.ROOM_NAME.CUSTOM(\n this.core.ctx.contextName,\n customEvent,\n );\n } else {\n roomName = _.isString(property)\n ? Symbols.REALTIME.ROOM_NAME.UPDATE_ENTITY_PROPERTY(\n this.core.ctx.contextName,\n className,\n property,\n idOrUniqValue,\n )\n : Symbols.REALTIME.ROOM_NAME.UPDATE_ENTITY(\n this.core.ctx.contextName,\n className,\n idOrUniqValue,\n );\n }\n\n const roomSubOptions: RealtimeModels.SubsManagerOpt = {\n core: this.core,\n property,\n roomName,\n customEvent,\n };\n\n\n const subManagerId = this.getRoomIdFrom(roomSubOptions);\n if (!this.subsmanagers[subManagerId]) {\n this.subsmanagers[subManagerId] = new RealtimeSubsManager(\n roomSubOptions,\n );\n }\n const inst = this.subsmanagers[subManagerId];\n inst.add(observer);\n\n inst.startListenIfNotStarted(this.core.FE_REALTIME);\n\n return () => {\n inst.remove(observer);\n };\n });\n }\n\n\n\n\n listenChangesEntityTable(entityClassFn: Function) {\n const className = ClassHelpers.getName(entityClassFn);\n return this.listenChangesEntity(entityClassFn, void 0, {\n customEvent: Symbols.REALTIME.TABLE_CHANGE(\n this.core.ctx.contextName,\n className,\n ),\n });\n }\n\n\n\n\n /**\n * Changes trigger on backend needs to be done manually.. example code:\n *\n * ...\n * Context.Realtime.Server.TrigggerEntityChanges(myEntityInstance);\n * // or\n * Context.Realtime.Server.TrigggerEntityPropertyChanges(myEntityInstance,{ property: 'geolocationX' });\n * ...\n */\n listenChangesEntityObj<T extends BaseEntity>(\n entity: T,\n options?: RealtimeModels.ChangeOption,\n ) {\n const classFn = ClassHelpers.getClassFnFromObject(entity);\n const uniqueKey = ClassHelpers.getUniquKey(classFn);\n return this.listenChangesEntity(classFn, entity[uniqueKey], options);\n }\n\n\n\n listenChangesCustomEvent(customEvent: string) {\n return this.listenChangesEntity(void 0, void 0, {\n customEvent,\n });\n }\n\n\n\n private getRoomIdFrom(options: RealtimeModels.SubsManagerOpt) {\n const url = new URL(options.core.ctx.host);\n return `${this.core.ctx.contextName}:${url.origin}|${options.roomName}|${options.property}|${options.customEvent}`;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-client.ts","\n\n\nimport { Symbols } from '../symbols';\nimport { Helpers, _ } from 'tnp-core/browser';\nimport { RealtimeCore } from './realtime-core';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseEntity } from '../base-classes/base-entity';\n\n\nconst SOCKET_EVENT_DEBOUNCE = 500;\n\nexport class RealtimeServer {\n private jobs = {};\n constructor(private core: RealtimeCore) {\n this.core = core;\n if (!core.ctx.disabledRealtime) {\n/* */\n/* */\n \n }\n }\n\n\n private init() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n\n private triggerChanges(\n entityObjOrClass: Function,\n property?: string,\n valueOfUniquPropery?: number | string,\n customEvent?: string,\n customEventData?: any,\n ) {\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n public trigggerEntityChanges(\n entityObjOrClass: Function,\n idToTrigger?: number | string,\n ) {\n if (this.core.ctx.disabledRealtime) {\n const className = ClassHelpers.getName(entityObjOrClass);\n\n console.warn(\n `[Taon][TrigggerEntityChanges] Entity \"${className}' is not realtime`,\n );\n return;\n }\n this.triggerChanges(entityObjOrClass as any, void 0, idToTrigger);\n }\n\n\n\n public trigggerEntityPropertyChanges<ENTITY extends BaseEntity>(\n entityObjOrClass: new (...args) => ENTITY,\n property: keyof ENTITY | (keyof ENTITY)[],\n idToTrigger?: number | string,\n ) {\n if (this.core.ctx.disabledRealtime) {\n const className = ClassHelpers.getName(entityObjOrClass);\n\n console.warn(\n `[Taon][TrigggerEntityPropertyChanges][property=${\n property as string\n }] Entity \"${className}' is not realtime`,\n );\n return;\n }\n\n if (_.isArray(property)) {\n property.forEach(propertyFromArr => {\n this.triggerChanges(\n entityObjOrClass,\n propertyFromArr as any,\n idToTrigger,\n );\n });\n } else {\n this.triggerChanges(entityObjOrClass, property as any, idToTrigger);\n }\n }\n\n\n\n public triggerCustomEvent(customEvent: string, dataToPush: any) {\n this.triggerChanges(void 0, void 0, void 0, customEvent, dataToPush);\n }\n\n\n\n public trigggerEntityTableChanges(entityClass: Function) {\n const className = ClassHelpers.getName(entityClass);\n if (this.core.ctx.disabledRealtime) {\n console.warn(\n `[Taon][TrigggerEntityTableChanges] Entity \"${className}' is not realtime`,\n );\n return;\n }\n\n this.triggerChanges(\n entityClass as any,\n void 0,\n void 0,\n Symbols.REALTIME.TABLE_CHANGE(this.core.ctx.contextName, className),\n );\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-server.ts","\n\nimport { EndpointContext } from '../../endpoint-context';\nimport type { Server } from 'socket.io';\nimport type { io } from 'socket.io-client';\n\nexport abstract class RealtimeStrategy {\n constructor(protected ctx: EndpointContext) {}\n\n private testTypes() {\n\n }\n\n abstract establishConnection(): void;\n\n abstract readonly io: typeof io;\n abstract readonly Server: typeof Server;\n abstract toString(): string;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy.ts","\n\nimport { ipcRenderer } from 'electron';\n\nimport { RendererEventListeners } from './realtime-strategy-ipc.models';\nimport { Helpers } from 'tnp-core/browser';\n\nexport class IpcRendererNamespace {\n ipcRenderer!: typeof ipcRenderer;\n private listeners: RendererEventListeners = {};\n\n constructor(public name: string) {\n this.ipcRenderer = (window as any).require('electron').ipcRenderer;\n }\n\n on(eventName: string, callback: (event: any, ...args: any[]) => void) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push(callback);\n const listenToEvent = `(${this.name}) \"${eventName}\"`;\n\n this.ipcRenderer.on(listenToEvent, callback);\n if (eventName === 'connect') {\n this.emit('connection');\n } else {\n this.emit(eventName);\n }\n }\n\n off(event: string, callback?: (event: any, ...args: any[]) => void) {\n if (!this.listeners[event]) return;\n\n if (callback) {\n this.listeners[event] = this.listeners[event].filter(\n listener => listener !== callback,\n );\n } else {\n delete this.listeners[event];\n }\n const removeListener = `(${this.name}) \"${event}\"`;\n\n\n\n\n this.ipcRenderer.removeListener(removeListener, callback);\n }\n\n emit(event: string, ...args: any[]) {\n const emitEvent = `(${this.name}) \"${event}\"`;\n\n\n this.ipcRenderer.send(emitEvent, ...args);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.ts","\n\nimport { IpcRendererNamespace } from './realtime-strategy-ipc-renderer-namespace';\n\nexport class IpcRendererWrapper {\n private namespaces: { [namespace: string]: IpcRendererNamespace } = {\n '/': new IpcRendererNamespace('/'),\n };\n private connected = false;\n\n constructor(public contextName: string) {\n\n }\n\n of(namespace: string): IpcRendererNamespace {\n\n\n\n if (!this.namespaces[namespace]) {\n this.namespaces[namespace] = new IpcRendererNamespace(\n namespace\n );\n }\n return this.namespaces[namespace];\n }\n\n on(event: string, callback: (event: any, ...args: any[]) => void) {\n\n\n\n\n\n\n\n\n\n this.namespaces['/'].on(event, callback);\n }\n\n emit(event: string, ...args: any[]) {\n\n\n\n this.namespaces['/'].emit(event, ...args);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.ts","\n\nimport { Server } from 'socket.io';\nimport { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\nimport { ioIpcStrategy as IoIpcStrategy } from './realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper';\nimport { IpcRendererWrapper } from './realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper';\nimport type { io } from 'socket.io-client';\n\n/**\n * Purpose:\n * - backend-browser communication between 2 processes in electron mode\n */\nexport class RealtimeStrategyIpc extends RealtimeStrategy {\n toString(): string {\n return 'ipc';\n }\n establishConnection(): void {\n throw new Error('Method not implemented.');\n }\n constructor(protected ctx: EndpointContext) {\n super(ctx);\n }\n\n contextsServers: { [contextName: string]: Server } = {};\n contextsIO: { [contextName: string]: typeof io } = {};\n\n get io() {\n\n return ((__, { path: namespacePath }) => {\n if (this.contextsIO[namespacePath]) {\n return this.contextsIO[namespacePath];\n }\n const wrap = new IpcRendererWrapper(this.ctx.contextName);\n\n const nsp = wrap.of(namespacePath);\n this.contextsIO[namespacePath] = nsp as any;\n return nsp;\n }) as any;\n\n return void 0;\n }\n get Server() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return void 0;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc.ts","\n\nimport { MockSocket } from \"./realtime-strategy-mock-socket\";\nimport { Rooms } from \"./realtime-strategy-mock.models\";\nexport class MockNamespace {\n private rooms: Rooms = {};\n private sockets: Set<MockSocket> = new Set();\n\n constructor(public name: string, public contextName: string) {}\n\n on(event: string, callback: (socket: MockSocket) => void) {\n if (event === 'connection') {\n this.sockets.forEach(socket => callback(socket));\n }\n }\n\n emit(event: string, data?: any) {\n this.sockets.forEach(socket => socket.emit(event, data));\n }\n\n to(room: string) {\n return {\n emit: (event: string, data?: any) => {\n if (this.rooms[room]) {\n this.rooms[room].forEach(socket => socket.emit(event, data));\n }\n }\n };\n }\n\n joinRoom(socket: MockSocket, room: string) {\n if (!this.rooms[room]) {\n this.rooms[room] = new Set();\n }\n this.rooms[room].add(socket);\n }\n\n leaveRoom(socket: MockSocket, room: string) {\n if (this.rooms[room]) {\n this.rooms[room].delete(socket);\n if (this.rooms[room].size === 0) {\n delete this.rooms[room];\n }\n }\n }\n\n addSocket(socket: MockSocket) {\n this.sockets.add(socket);\n }\n\n removeSocket(socket: MockSocket) {\n this.sockets.delete(socket);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.ts","\n\nimport { MockNamespace } from \"./realtime-strategy-mock-namespaces\";\nimport { EventListeners } from \"./realtime-strategy-mock.models\";\n\n\nexport class MockSocket {\n private listeners: EventListeners = {};\n\n constructor(public id: string, private namespace: MockNamespace) {\n this.namespace.addSocket(this);\n }\n\n on(event: string, callback: (data?: any) => void) {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n this.listeners[event].push(callback);\n }\n\n off(event: string, callback?: (data?: any) => void) {\n if (!this.listeners[event]) return;\n\n if (callback) {\n this.listeners[event] = this.listeners[event].filter(listener => listener !== callback);\n } else {\n delete this.listeners[event];\n }\n }\n\n emit(event: string, data?: any) {\n if (this.listeners[event]) {\n this.listeners[event].forEach(listener => listener(data));\n }\n }\n\n join(room: string) {\n this.namespace.joinRoom(this, room);\n }\n\n leave(room: string) {\n this.namespace.leaveRoom(this, room);\n }\n\n disconnect() {\n this.emit('disconnect');\n this.namespace.removeSocket(this);\n this.listeners = {};\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.ts","\n\nimport { MockNamespace } from \"./realtime-strategy-mock-namespaces\";\nimport { MockSocket } from \"./realtime-strategy-mock-socket\";\nimport { Namespaces } from \"./realtime-strategy-mock.models\";\n\nexport class MockServer {\n private namespaces: Namespaces = {\n '/': new MockNamespace('/', this.contextName)\n };\n\n constructor(public contextName: string) {}\n\n of(namespace: string): MockNamespace {\n if (!this.namespaces[namespace]) {\n this.namespaces[namespace] = new MockNamespace(namespace, this.contextName);\n }\n return this.namespaces[namespace];\n }\n\n on(event: string, callback: (socket: MockSocket) => void) {\n if (event === 'connection') {\n this.namespaces['/'].on('connection', callback);\n }\n }\n\n emit(event: string, data?: any) {\n this.namespaces['/'].emit(event, data);\n }\n\n connect(id: string, namespace: string = '/'): MockSocket {\n const ns = this.of(namespace);\n const socket = new MockSocket(id, ns);\n ns.on('connection', (socket: MockSocket) => {\n socket.emit('connect');\n });\n return socket;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.ts","\n\nimport { MockServer } from \"./realtime-strategy-mock-server\";\nimport { MockSocket } from \"./realtime-strategy-mock-socket\";\nimport { EventListeners } from \"./realtime-strategy-mock.models\";\n\n\nclass MockClientSocket {\n private listeners: EventListeners = {};\n\n constructor(private serverSocket: MockSocket, public contextName: string) {\n serverSocket.on('message', (data) => this.emit('message', data));\n }\n\n on(event: string, callback: (data?: any) => void) {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n this.listeners[event].push(callback);\n }\n\n off(event: string, callback?: (data?: any) => void) {\n if (!this.listeners[event]) return;\n\n if (callback) {\n this.listeners[event] = this.listeners[event].filter(listener => listener !== callback);\n } else {\n delete this.listeners[event];\n }\n }\n\n emit(event: string, data?: any) {\n this.serverSocket.emit(event, data);\n if (this.listeners[event]) {\n this.listeners[event].forEach(listener => listener(data));\n }\n }\n\n disconnect() {\n this.serverSocket.disconnect();\n this.listeners = {};\n }\n\n join(room: string) {\n this.serverSocket.join(room);\n }\n\n leave(room: string) {\n this.serverSocket.leave(room);\n }\n}\n\nexport function mockIo(server: MockServer) {\n return (namespace: string = '/'): MockClientSocket => {\n const socketId = Math.random().toString(36).substring(2);\n const serverSocket = server.connect(socketId, namespace);\n return new MockClientSocket(serverSocket, server.contextName);\n };\n}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.ts","\n\nexport * from './realtime-strategy-mock-server';\nexport * from './realtime-strategy-mock-client';\n\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.ts","\n\nimport { Server } from 'socket.io';\nimport { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\nimport { MockServer, mockIo } from './realtime-strategy-mock-models'\n\n/**\n * Purpose:\n * - browser-browser communication mock (in websql mode)\n */\nexport class RealtimeStrategyMock extends RealtimeStrategy {\n toString(): string {\n return 'mock';\n }\n\n\n constructor(protected ctx: EndpointContext) {\n super(ctx);\n }\n\n get Server() {\n return MockServer as any;\n };\n\n get io() {\n return mockIo as any;\n }\n\n establishConnection(): void {\n throw new Error('Method not implemented.');\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock.ts","\n\nimport { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\n/* */\n/* */\n \nimport { io } from 'socket.io-client';\n\n/**\n * Purpose:\n * - backend-browser communication\n * - backend-backend communication\n */\nexport class RealtimeStrategySocketIO extends RealtimeStrategy {\n toString(): string {\n return 'socket-io';\n }\n constructor(protected ctx: EndpointContext) {\n super(ctx);\n }\n\n get Server() {\n/* */\n/* */\n return (void 0);\n };\n\n get io() {\n return io;\n }\n\n establishConnection(): void {\n throw new Error('Method not implemented.');\n }\n}\n\n\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-socket-io.ts","\n\nexport * from './realtime-strategy';\nexport * from './realtime-strategy-ipc';\nexport * from './realtime-strategy-mock';\nexport * from './realtime-strategy-socket-io';\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/index.ts","\n\n\nimport { Socket as SocketClient } from 'socket.io-client';\nimport type { EndpointContext } from '../endpoint-context';\nimport { RealtimeClient } from './realtime-client';\nimport { RealtimeServer } from './realtime-server';\nimport type { RealtimeStrategy } from './realtime-strategy';\nimport { RealtimeStrategyIpc, RealtimeStrategyMock, RealtimeStrategySocketIO, } from './realtime-strategy';/* */\n/* */\n/* */\n/* */\n\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\nimport { Server } from 'socket.io';\nimport { Helpers } from 'tnp-core/browser';\n\n\n/**\n * Realtime class\n * - mock (when browser-browser)\n * - sockets (from socket io when backend-browser)\n * - ipc (when electron is used or between processes)\n * - webworker (when webworker is used in browser or nodejs)\n */\nexport class RealtimeCore {\n\n readonly allHttpMethods = [\n 'GET',\n 'POST',\n 'PUT',\n 'DELETE',\n 'PATCH',\n 'OPTIONS',\n 'HEAD',\n ];\n public readonly client: RealtimeClient;\n public readonly server: RealtimeServer;\n public readonly strategy: RealtimeStrategy;\n /**\n * global FE socket\n */\n public FE: SocketClient<DefaultEventsMap, DefaultEventsMap>;\n /**\n * socket for namespaces and rooms\n */\n public FE_REALTIME: SocketClient<DefaultEventsMap, DefaultEventsMap>;\n /**\n * global BE socket\n */\n public BE: Server<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any>;\n /**\n * socket for namespaces and rooms\n */\n public BE_REALTIME: Server<\n DefaultEventsMap,\n DefaultEventsMap,\n DefaultEventsMap,\n any\n >;\n\n\n\n constructor(public ctx: EndpointContext) {\n this.strategy = this.resolveStrategy();\n ctx.logFramework &&\n console.log(`[taon] realtime strategy: ${this.strategy}`);\n this.client = new RealtimeClient(this);\n this.server = new RealtimeServer(this);\n }\n\n\n\n private resolveStrategy(): RealtimeStrategy {\n if (this.ctx.mode === 'backend-frontend(websql)') {\n return new RealtimeStrategyMock(this.ctx);\n }\n if (this.ctx.mode === 'backend-frontend(ipc-electron)') {\n return new RealtimeStrategyIpc(this.ctx);\n }\n\n\n\n\n\n\n return new RealtimeStrategySocketIO(this.ctx);\n }\n\n\n\n public pathFor(namespace?: string) {\n const uri = this.ctx.uri;\n let nsp = namespace ? namespace : '';\n nsp = nsp === '/' ? '' : nsp;\n const pathname = uri.pathname !== '/' ? uri.pathname : '';\n let prefix = `taonContext-`;\n if (Helpers.isElectron) {\n prefix = ``;\n }\n const href = `${uri.origin}${pathname}/${prefix}${nsp}`;\n\n return new URL(href) as URL;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-core.ts","\n\n/* eslint-disable @typescript-eslint/typedef */\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\nimport { TaonAdmin } from './ui/taon-admin-mode-configuration/taon-admin.service';\n\nimport { Models } from './models';\nimport { ClassHelpers } from './helpers/class-helpers';\nimport { Symbols } from './symbols';\nimport { _, Helpers } from 'tnp-core/browser';\nimport type { createContext } from './create-context';\nimport { DITaonContainer } from './dependency-injection/di-container';\nimport { TaonControllerOptions } from './decorators/classes/controller-decorator';\nimport { TaonHelpers } from './helpers/taon-helpers';\nimport { Mapping, Models as ModelsNg2Rest, Resource, RestHeaders, } from 'ng2-rest/browser';/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { JSON10 } from 'json10/browser';\nimport { path } from 'tnp-core/browser';\nimport { from, Subject } from 'rxjs';\nimport { EntityProcess } from './entity-process';\nimport { getResponseValue } from './get-response-value';\nimport type { Application } from 'express';\nimport axios from 'axios';\nimport type { NgZone } from '@angular/core';\n\nimport { DataSource, DataSourceOptions, getMetadataArgsStorage, } from 'taon-typeorm/browser';/* */\n/* */\n/* */\n/* */\n\nimport { TaonEntityOptions } from './decorators/classes/entity-decorator';\nimport type { Server } from 'http';\nimport { ENV } from './env';\nimport type { BaseClass } from './base-classes/base-class';\nimport { RealtimeCore } from './realtime/realtime-core';\nimport { TaonSubscriberOptions } from './decorators/classes/subscriber-decorator';\nimport { BaseSubscriberForEntity } from './base-classes/base-subscriber-for-entity';\n\n\nexport class EndpointContext {\n\n\n\n private static ngZone: NgZone;\n\n static initNgZone(ngZone: NgZone) {\n\n this.ngZone = ngZone;\n\n }\n public static findForTraget(classFnOrObject: any): EndpointContext {\n const obj = ClassHelpers.getClassFnFromObject(classFnOrObject) || {};\n return (\n classFnOrObject[Symbols.ctxInClassOrClassObj] ||\n obj[Symbols.ctxInClassOrClassObj]\n );\n }\n\n\n\n\n\n disabledRealtime: boolean = false;\n /**\n * check whether context is inited\n * (with init() function )\n */\n public inited: boolean = false;\n\n\n private readonly localInstaceObjSymbol = Symbol('localInstaceObjSymbol');\n\n\n /**\n * all instances of classes from context\n * key is class name\n */\n public readonly allClassesInstances = {};\n\n\n\n private readonly classInstancesByNameObj = {};\n\n\n\n private readonly objWithClassesInstancesArr = {};\n\n\n\n public readonly activeRoutes: {\n routePath: string;\n method: Models.Http.Rest.HttpMethod;\n }[] = [];\n\n\n\n private injectableTypesfromContexts = [\n Models.ClassType.CONTROLLER,\n Models.ClassType.PROVIDER,\n Models.ClassType.REPOSITORY,\n Models.ClassType.SUBSCRIBER,\n ];\n\n\n private allTypesfromContexts = [\n ...this.injectableTypesfromContexts,\n Models.ClassType.ENTITY,\n ];\n\n\n public expressApp: Application = {} as any;\n\n\n\n public serverTcpUdp: Server;\n\n\n\n databaseConfig?: Models.DatabaseConfig;\n private autoGeneratedConfig?: Models.DatabaseConfig;\n\n\n\n mode: Models.FrameworkMode;\n\n\n\n session?: Models.ISession;\n\n\n\n public connection: DataSource;\n\n\n\n private entitiesTriggers = {};\n\n\n\n private realtime: RealtimeCore;\n get realtimeClient() {\n return this.realtime.client;\n }\n get realtimeServer() {\n return this.realtime.server;\n }\n\n\n\n /**\n * available after init()\n */\n public config: Models.ContextOptions<any, any, any, any, any, any>;\n\n\n\n get logHttp(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ContectionOptionsLogs).http;\n }\n return this.config?.logs === true;\n }\n\n get logRealtime(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ContectionOptionsLogs).realtime;\n }\n return this.config?.logs === true;\n }\n\n get logFramework(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ContectionOptionsLogs).framework;\n }\n return this.config?.logs === true;\n }\n\n get logDb(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ContectionOptionsLogs).db;\n }\n return this.config?.logs === true;\n }\n\n\n\n\n\n constructor(\n private originalConfig: Models.ContextOptions<any, any, any, any, any, any>,\n private configFn: (\n env: any,\n ) => Models.ContextOptions<any, any, any, any, any, any>,\n ) {}\n\n\n\n public async init(options?: { initFromRecrusiveContextResovle?: boolean }) {\n const { initFromRecrusiveContextResovle } = options || {}; // TODO use it ?\n\n this.inited = true;\n this.config = this.configFn(ENV);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n if (this.config.host) {\n this.mode = 'backend-frontend(tcp+udp)';\n/* */\n/* */\n \n }\n if (this.config.remoteHost) {\n if (this.config.host) {\n Helpers.error(\n `[taon] You can't have remoteHost and host at the same time`,\n false,\n true,\n );\n }\n this.mode = 'remote-backend(tcp+udp)';\n }\n\n if (this.config.useIpcWhenElectron && Helpers.isElectron) {\n this.mode = 'backend-frontend(ipc-electron)';\n }\n\n if (!this.mode && !this.config.abstract) {\n Helpers.error(\n `[taon] Context \"${this.contextName}\": You need to provide host or remoteHost or useIpcWhenElectron`,\n false,\n true,\n );\n/* */\n/* */\n \n }\n\n\n\n if (this.config.database === true) {\n this.databaseConfig = this.getAutoGeneratedConfig();\n } else if (_.isObject(this.config.database)) {\n this.databaseConfig = _.cloneDeep(\n this.config.database,\n ) as Models.DatabaseConfig;\n }\n\n\n\n if (this.config.session) {\n this.session = _.cloneDeep(this.config.session);\n const oneHour = 1000 * 60 * 60 * 1; // 24;\n if (!this.session.cookieMaxAge) {\n this.session.cookieMaxAge = oneHour;\n }\n\n axios.defaults.withCredentials = true;\n }\n\n\n\n this.config.contexts = this.config.contexts || {};\n this.config.entities = this.config.entities || {};\n this.config.controllers = this.config.controllers || {};\n this.config.repositories = this.config.repositories || {};\n this.config.providers = this.config.providers || {};\n this.config.subscribers = this.config.subscribers || {};\n\n this.config.entities = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.ENTITY,\n )),\n ...this.config.entities,\n };\n\n this.config.controllers = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.CONTROLLER,\n )),\n ...this.config.controllers,\n };\n\n this.config.providers = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.PROVIDER,\n )),\n ...this.config.providers,\n };\n\n this.config.subscribers = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.SUBSCRIBER,\n )),\n ...this.config.subscribers,\n };\n\n this.config.repositories = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.REPOSITORY,\n )),\n ...this.config.repositories,\n };\n\n\n\n\n\n this.config.controllers = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.controllers,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.CONTROLLER,\n });\n this.config.repositories = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.repositories,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.REPOSITORY,\n });\n this.config.providers = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.providers,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.PROVIDER,\n });\n this.config.subscribers = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.subscribers,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.SUBSCRIBER,\n });\n\n\n\n for (const classTypeName of this.injectableTypesfromContexts) {\n this.classInstancesByNameObj[classTypeName] = {};\n this.objWithClassesInstancesArr[classTypeName] = [];\n }\n\n for (const classTypeName of this.injectableTypesfromContexts) {\n await this.createInstances(\n this.config[Models.ClassTypeKey[classTypeName]],\n classTypeName,\n );\n }\n\n\n\n if (this.mode === 'backend-frontend(tcp+udp)' && !this.config.abstract) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n if (!this.config.abstract) {\n this.disabledRealtime = !!this.config.disabledRealtime;\n/* */\n/* */\n/* */\n/* */\n/* */\n \n this.realtime = new RealtimeCore(this);\n }\n\n\n\n\n if (this.config.abstract) {\n this.logFramework &&\n Helpers.info(\n `[taon] Create abstract context: ${this.config.contextName}`,\n );\n } else {\n if (this.config.remoteHost) {\n this.logFramework &&\n Helpers.info(\n `[taon] Create context for remote host: ${this.config.remoteHost}`,\n );\n } else {\n this.logFramework &&\n Helpers.info(\n `[taon] Create context for host: ${this.config.host}`,\n );\n }\n }\n\n\n\n Object.keys(this.config).forEach(key => {\n this.originalConfig[key] = this.config[key];\n });\n }\n\n\n\n private getAutoGeneratedConfig(): Models.DatabaseConfig {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n get ngZone(): any {\n\n return EndpointContext.ngZone;\n\n return;\n }\n\n\n\n startServer() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n displayRoutes(app) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n get modeAllowsDatabaseCreation() {\n return (\n this.mode === 'backend-frontend(tcp+udp)' ||\n this.mode === 'backend-frontend(websql)' ||\n this.mode === 'backend-frontend(ipc-electron)'\n );\n }\n\n\n\n\n private cloneClassWithNewMetadata = <\n T extends { new (...args: any[]): any },\n >({\n BaseClass,\n className,\n config,\n ctx,\n classType,\n }: {\n BaseClass: T;\n className: string;\n config: Models.ContextOptions<any, any, any, any, any, any>;\n ctx: EndpointContext;\n classType: Models.ClassType;\n }): T => {\n\n const cloneClass = () => {\n if (\n BaseClass[Symbols.fullClassNameStaticProperty] ===\n `${ctx.contextName}.${className}`\n ) {\n return BaseClass;\n }\n return class extends BaseClass {\n\n\n // @ts-ignore\n static [Symbols.orignalClass] = BaseClass;\n\n // @ts-ignore\n static [Symbols.fullClassNameStaticProperty] = `${ctx.contextName}.${className}`;\n\n // @ts-ignore\n static [Symbols.classNameStaticProperty] = className;\n\n static [Symbols.ctxInClassOrClassObj] = ctx;\n\n static __getFullPathForClass__(arr = []) {\n const name = this[Symbols.fullClassNameStaticProperty];\n arr.push(name);\n // @ts-ignore\n if (\n this[Symbols.orignalClass] && // @ts-ignore\n this[Symbols.orignalClass].__getFullPathForClass__\n ) {\n // @ts-ignore\n this[Symbols.orignalClass].__getFullPathForClass__(arr);\n }\n return arr.join('/');\n }\n static get fullPathForClass(): string {\n return this.__getFullPathForClass__();\n }\n [Symbols.ctxInClassOrClassObj] = ctx;\n\n\n };\n };\n\n const cloneClassFunction = cloneClass();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n return cloneClassFunction;\n };\n\n\n\n\n\n private cloneClassesObjWithNewMetadata = ({\n classesInput,\n config,\n ctx,\n classType,\n }: {\n classesInput: any;\n config: Models.ContextOptions<any, any, any, any, any, any>;\n ctx: EndpointContext;\n classType: Models.ClassType;\n }) => {\n const classes = {};\n\n for (const key of Object.keys(classesInput || {})) {\n const BaseClass = classesInput[key];\n\n if (!BaseClass) {\n Helpers.error(`Class ${key} is not defined in context ${ctx.contextName}\n\n Please check if you have correct import in context file\n\n `);\n }\n\n var className = Reflect.getMetadata(\n Symbols.metadata.className,\n BaseClass,\n );\n\n\n\n\n\n className = className || key;\n BaseClass[Symbols.classNameStaticProperty] = className;\n\n const clonedClass = this.cloneClassWithNewMetadata({\n BaseClass,\n className,\n config,\n ctx,\n classType,\n });\n classes[className] = clonedClass;\n }\n return classes;\n };\n\n\n\n private async getRecrusiveClassesfromContextsObj(\n classType: Models.ClassType,\n ) {\n const arr = await this.getRecrusiveClassesfromContexts(classType);\n return arr.reduce((acc, c) => {\n acc[ClassHelpers.getName(c)] = c;\n return acc;\n }, {});\n }\n\n private async getRecrusiveClassesfromContexts(\n classType: Models.ClassType,\n arr = [],\n ) {\n const contexts = Object.values(this.config.contexts || {}) as ReturnType<\n typeof createContext\n >[];\n\n\n\n for (const ctx of contexts) {\n\n const ref = await ctx.__ref();\n\n const classesInput = ref.getClassFunBy(classType);\n\n\n const clonedClasses = Object.values(\n this.cloneClassesObjWithNewMetadata({\n classesInput,\n config: this.config,\n ctx: this,\n classType,\n }),\n );\n\n clonedClasses.forEach(c => arr.push(c));\n\n await ref.getRecrusiveClassesfromContexts(classType, arr);\n }\n return arr as Function[];\n }\n\n\n\n getClassInstanceObjBy(classType: Models.ClassType): any {\n return this.classInstancesByNameObj[classType];\n }\n\n\n\n private getClassesInstancesArrBy(classType: Models.ClassType): any[] {\n return this.objWithClassesInstancesArr[classType];\n }\n\n\n\n inject<T>(\n ctor: new (...args: any[]) => T,\n options?: {\n localInstance?: boolean;\n contextClassInstance?: BaseClass;\n locaInstanceConstructorArgs?: ConstructorParameters<typeof ctor>;\n },\n ): T {\n if (!options) {\n options = {} as any;\n }\n const className = ClassHelpers.getName(ctor);\n\n const locaInstanceConstructorArgs =\n options.locaInstanceConstructorArgs || [];\n\n if (this.isCLassType(Models.ClassType.REPOSITORY, ctor)) {\n options.localInstance = true;\n }\n\n if (options?.localInstance) {\n const ctxClassFn = this.getClassFunByClassName(className);\n let entityName: string = '';\n\n if (className === 'BaseRepository') {\n const entityFn = locaInstanceConstructorArgs[0];\n const entity = entityFn && entityFn();\n entityName = entity && ClassHelpers.getName(entity);\n }\n\n if (!options.contextClassInstance[this.localInstaceObjSymbol]) {\n options.contextClassInstance[this.localInstaceObjSymbol] = {};\n }\n const instanceKey = className + (entityName ? `.${entityName}` : '');\n const existed =\n options.contextClassInstance[this.localInstaceObjSymbol][instanceKey];\n if (existed) {\n\n return existed;\n }\n\n if (!ctxClassFn) {\n throw new Error(`Not able to inject \"${className}\" inside context \"${this.contextName}\"\n\n Make sure they share the same context or import context where \"${className}\" is defined.\n\n `);\n }\n\n const injectedInstance = new (ctxClassFn as any)(\n ...locaInstanceConstructorArgs,\n );\n options.contextClassInstance[this.localInstaceObjSymbol][instanceKey] =\n injectedInstance;\n\n return injectedInstance;\n }\n\n const contextScopeInstance = this.allClassesInstances[className];\n\n\n\n return contextScopeInstance;\n }\n\n /**\n * alias for inject\n */\n getInstanceBy<T>(ctor: new (...args: any[]) => T): T {\n return this.inject(ctor, { localInstance: false });\n }\n\n\n checkIfContextInitialized() {\n if (_.isUndefined(this.config)) {\n throw new Error(`Please check if your context has been initilized.\n\n\n await Context.initialize();\n\n\n\n `);\n }\n }\n\n\n getClassFunBy(classType: Models.ClassType) {\n this.checkIfContextInitialized();\n switch (classType) {\n case Models.ClassType.CONTROLLER:\n return this.config.controllers;\n case Models.ClassType.ENTITY:\n return this.config.entities;\n case Models.ClassType.PROVIDER:\n return this.config.providers;\n case Models.ClassType.REPOSITORY:\n return this.config.repositories;\n case Models.ClassType.SUBSCRIBER:\n return this.config.subscribers;\n }\n }\n\n isCLassType(classType: Models.ClassType, classFn: Function): boolean {\n return !!this.getClassFunBy(classType)[ClassHelpers.getName(classFn)];\n }\n\n /**\n * Only for injectable types\n * Only for classType: CONTROLLER, REPOSITORY, PROVIDER\n */\n getClassFunByClassName(className: string): Function {\n for (const classTypeName of this.allTypesfromContexts) {\n const classesForInjectableType =\n this.config[Models.ClassTypeKey[classTypeName]];\n\n if (classesForInjectableType[className]) {\n return classesForInjectableType[className];\n }\n }\n }\n\n getClassFunByClass(classFunction: Function): Function {\n const className = ClassHelpers.getName(classFunction);\n return this.getClassFunByClassName(className);\n }\n\n getClassFunByArr(classType: Models.ClassType) {\n return Object.values(this.getClassFunBy(classType) || {}) as Function[];\n }\n\n\n\n private async createInstances(classes: any, classType: Models.ClassType) {\n\n\n\n\n\n for (const classFn of [\n\n ...Object.values(classes),\n ]) {\n const instance = DITaonContainer.resolve(classFn as any) as any;\n const classInstancesByNameObj = this.classInstancesByNameObj[classType];\n const className = ClassHelpers.getName(classFn);\n\n classInstancesByNameObj[className] = instance;\n\n this.config[Models.ClassTypeKey[classType]][className] = classFn;\n this.objWithClassesInstancesArr[classType].push(instance);\n this.allClassesInstances[className] = instance;\n }\n }\n\n\n\n async reinitControllers() {\n\n\n\n const controllers = this.getClassesInstancesArrBy(\n Models.ClassType.CONTROLLER,\n );\n\n for (const ctrl of controllers) {\n if (_.isFunction(ctrl.initExampleDbData)) {\n await Helpers.runSyncOrAsync({\n functionFn: ctrl.initExampleDbData,\n context: ctrl,\n });\n }\n }\n\n\n\n }\n async initClasses() {\n for (const classTypeName of [\n Models.ClassType.PROVIDER,\n Models.ClassType.REPOSITORY,\n Models.ClassType.CONTROLLER,\n Models.ClassType.ENTITY,\n ]) {\n\n\n\n\n for (const classFun of this.getClassFunByArr(classTypeName) as any[]) {\n if (_.isFunction(classFun._)) {\n await Helpers.runSyncOrAsync({\n functionFn: classFun._,\n context: classFun,\n });\n\n\n\n\n\n\n }\n }\n\n\n\n\n }\n\n for (const classTypeName of [\n Models.ClassType.PROVIDER,\n Models.ClassType.REPOSITORY,\n Models.ClassType.CONTROLLER,\n ]) {\n\n\n\n\n for (const ctrl of this.getClassesInstancesArrBy(classTypeName)) {\n if (_.isFunction(ctrl._)) {\n await Helpers.runSyncOrAsync({\n functionFn: ctrl._,\n context: ctrl,\n });\n }\n }\n\n\n\n\n }\n }\n\n\n\n isActiveOn(classInstance: object): boolean {\n let contextRef: EndpointContext =\n classInstance[Symbols.ctxInClassOrClassObj];\n return this === contextRef;\n }\n\n\n\n get uri() {\n const url = this.host\n ? new URL(this.host)\n : this.remoteHost\n ? new URL(this.remoteHost)\n : void 0;\n return url;\n }\n\n\n\n get isHttpServer() {\n return this.uri.protocol === 'https:';\n }\n\n\n\n /**\n * ipc/udp needs this\n */\n public get contextName() {\n return this.config.contextName;\n }\n\n\n\n public get publicAssets() {\n return this.config?.publicAssets || [];\n }\n\n\n\n get isProductionMode() {\n return this.config.productionMode;\n }\n\n\n\n get remoteHost() {\n return this.config.remoteHost;\n }\n\n\n\n get host() {\n return this.config.host;\n }\n\n\n\n get orgin() {\n return this.uri?.origin;\n }\n\n\n\n async initSubscribers() {\n return; // TODO\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n async initEntities() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n\n async initDatabaseConnection() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n\n initMetadata() {\n const allControllers = this.getClassFunByArr(Models.ClassType.CONTROLLER);\n\n for (const controllerClassFn of allControllers) {\n controllerClassFn[Symbols.classMethodsNames] =\n ClassHelpers.getMethodsNames(controllerClassFn);\n const configs = ClassHelpers.getControllerConfigs(controllerClassFn);\n\n const classConfig: Models.RuntimeControllerConfig = configs[0];\n\n const parentscalculatedPath = _.slice(configs, 1)\n .reverse()\n .map(bc => {\n if (TaonHelpers.isGoodPath(bc.path)) {\n return bc.path;\n }\n return bc.className;\n })\n .join('/');\n\n if (TaonHelpers.isGoodPath(classConfig.path)) {\n classConfig.calculatedPath = classConfig.path;\n } else {\n classConfig.calculatedPath =\n `${parentscalculatedPath}/${ClassHelpers.getName(controllerClassFn)}`\n .replace(/\\/\\//g, '/')\n .split('/')\n .reduce((acc, bc) => {\n return _.last(acc) === bc ? acc : [...acc, bc];\n }, [])\n .join('/');\n }\n\n _.slice(configs, 1).forEach(bc => {\n const alreadyIs = classConfig.methods;\n const toMerge = _.cloneDeep(bc.methods);\n for (const key in toMerge) {\n if (toMerge.hasOwnProperty(key) && !alreadyIs[key]) {\n const element = toMerge[key];\n alreadyIs[key] = element;\n }\n }\n });\n\n/* */\n/* */\n \n this.logHttp &&\n console.groupCollapsed(\n `[taon][express-server] routes [${classConfig.className}]`,\n );\n/* */\n/* */\n \n\n\n Object.keys(classConfig.methods).forEach(methodName => {\n const methodConfig: Models.MethodConfig =\n classConfig.methods[methodName];\n\n const type: Models.Http.Rest.HttpMethod = methodConfig.type;\n const expressPath = methodConfig.global\n ? `/${methodConfig.path?.replace(/\\//, '')}`\n : TaonHelpers.getExpressPath(classConfig, methodConfig);\n\n\n if (Helpers.isNode || Helpers.isWebSQL) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n const shouldInitClient =\n Helpers.isBrowser || this.remoteHost || Helpers.isWebSQL;\n\n if (shouldInitClient) {\n\n\n\n\n\n\n\n this.initClient(controllerClassFn, type, methodConfig, expressPath);\n }\n });\n\n/* */\n/* */\n \n this.logHttp && console.groupEnd();\n/* */\n/* */\n \n }\n }\n\n\n\n public writeActiveRoutes() {\n const contexts: EndpointContext[] = [this];\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n public get middlewares(): Models.MiddlewareType[] {\n/* */\n/* */\n return (void 0);\n }\n\n\n\n private initMidleware() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n private initServer(\n\n type: Models.Http.Rest.HttpMethod,\n methodConfig: Models.MethodConfig,\n classConfig: Models.RuntimeControllerConfig,\n expressPath: string,\n target: Function,\n\n ): any {\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n const url = this.uri;\n\n\n const getResult = async (resolvedParams, req, res) => {\n const response: Models.Http.Response<any> =\n methodConfig.descriptor.value.apply(\n /**\n * Context for method @GET,@PUT etc.\n */\n this.getInstanceBy(target as any),\n /**\n * Params for metjod @GET, @PUT etc.\n */\n resolvedParams,\n );\n let result = await getResponseValue(response, { req, res });\n return result;\n };\n\n\n url.pathname = url.pathname.replace(/\\/$/, '');\n expressPath = url.pathname.startsWith('/')\n ? `${url.pathname}${expressPath}`\n : expressPath;\n expressPath = expressPath.replace(/\\/\\//g, '/');\n\n\n\n if (Helpers.isElectron) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n if (!this.remoteHost) {\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n return {\n routePath: expressPath,\n method: methodConfig.type,\n };\n }\n\n\n\n /**\n * client can be browser or nodejs (when remote host)\n */\n private initClient(\n\n target: Function,\n type: Models.Http.Rest.HttpMethod,\n methodConfig: Models.Http.Rest.MethodConfig,\n expressPath: string,\n\n ): void {\n const ctx = this;\n\n this.logHttp && console.log(`${type?.toUpperCase()} ${expressPath} `);\n\n\n let storage: any;\n if (Helpers.isBrowser) {\n storage = window;\n }\n/* */\n/* */\n/* */\n/* */\n \n\n\n const orgMethods = target.prototype[methodConfig.methodName];\n\n\n\n if (Helpers.isElectron) {\n target.prototype[methodConfig.methodName] = function (...args) {\n const received = new Promise(async (resolve, reject) => {\n const headers = {};\n const { request, response } = TaonHelpers.websqlMocks(headers);\n\n Helpers.ipcRenderer.once(\n TaonHelpers.ipcKeyNameResponse(\n target,\n methodConfig,\n expressPath,\n ),\n (event, responseData) => {\n let res: any = responseData;\n console.log({ responseData });\n try {\n const body = res;\n res = new ModelsNg2Rest.HttpResponse(\n {\n body: void 0,\n isArray: void 0 as any,\n method: methodConfig.type,\n url: `${ctx.uri.origin}${\n '' // TODO express path\n }${methodConfig.path} `,\n },\n Helpers.isBlob(body) || _.isString(body)\n ? body\n : JSON.stringify(body),\n RestHeaders.from(headers),\n void 0,\n () => body,\n );\n\n resolve(res);\n } catch (error) {\n console.error(error);\n reject(error);\n }\n },\n );\n Helpers.ipcRenderer.send(\n TaonHelpers.ipcKeyNameRequest(target, methodConfig, expressPath),\n args,\n );\n });\n received['observable'] = from(received);\n return {\n received,\n };\n };\n return;\n }\n\n\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n\n\n\n target.prototype[methodConfig.methodName] = function (this: {}, ...args) {\n\n\n\n\n\n if (!storage[Symbols.old.ENDPOINT_META_CONFIG])\n storage[Symbols.old.ENDPOINT_META_CONFIG] = {};\n if (!storage[Symbols.old.ENDPOINT_META_CONFIG][ctx.uri.href])\n storage[Symbols.old.ENDPOINT_META_CONFIG][ctx.uri.href] = {};\n const endpoints = storage[Symbols.old.ENDPOINT_META_CONFIG];\n let rest: ModelsNg2Rest.ResourceModel<any, any>;\n if (!endpoints[ctx.uri.href][expressPath]) {\n let headers = {};\n if (methodConfig.contentType && !methodConfig.responseType) {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n RestHeaders.from({\n 'Content-Type': methodConfig.contentType,\n Accept: methodConfig.contentType,\n }),\n );\n } else if (methodConfig.contentType && methodConfig.responseType) {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n RestHeaders.from({\n 'Content-Type': methodConfig.contentType,\n Accept: methodConfig.contentType,\n responsetypeaxios: methodConfig.responseType,\n }),\n );\n } else if (!methodConfig.contentType && methodConfig.responseType) {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n RestHeaders.from({\n responsetypeaxios: methodConfig.responseType,\n }),\n );\n } else {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n );\n }\n\n endpoints[ctx.uri.href][expressPath] = rest;\n } else {\n rest = endpoints[ctx.uri.href][expressPath] as any;\n }\n\n const method = type.toLowerCase();\n const isWithBody = method === 'put' || method === 'post';\n const pathPrams = {};\n let queryParams = {};\n let bodyObject = {};\n args.forEach((param, i) => {\n let currentParam: Models.Http.Rest.ParamConfig = void 0 as any;\n\n for (let pp in methodConfig.parameters) {\n let v = methodConfig.parameters[pp];\n if (v.index === i) {\n currentParam = v;\n break;\n }\n }\n\n if (currentParam.paramType === 'Path') {\n pathPrams[currentParam.paramName] = param;\n }\n if (currentParam.paramType === 'Query') {\n if (currentParam.paramName) {\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n `${Symbols.old.MAPPING_CONFIG_HEADER_QUERY_PARAMS}${currentParam.paramName} `,\n JSON.stringify(mapping),\n );\n }\n queryParams[currentParam.paramName] = param;\n } else {\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n Symbols.old.MAPPING_CONFIG_HEADER_QUERY_PARAMS,\n JSON.stringify(mapping),\n );\n }\n queryParams = _.cloneDeep(param);\n }\n }\n if (currentParam.paramType === 'Header') {\n if (currentParam.paramName) {\n if (currentParam.paramName === Symbols.old.MDC_KEY) {\n\n rest.headers.set(\n currentParam.paramName,\n encodeURIComponent(JSON.stringify(param)),\n );\n } else {\n rest.headers.set(currentParam.paramName, param);\n }\n } else {\n for (let header in param) {\n rest.headers.set(header, param[header]);\n }\n }\n }\n if (currentParam.paramType === 'Cookie') {\n Resource.Cookies.write(\n currentParam.paramName,\n param,\n currentParam.expireInSeconds,\n );\n }\n if (currentParam.paramType === 'Body') {\n if (currentParam.paramName) {\n if (ClassHelpers.getName(bodyObject) === 'FormData') {\n throw new Error(`[taon - framework] Don use param names when posting / putting FormData.\n Use this:\n\n(@Taon.Http.Param.Body() formData: FormData) ...\n\n\ninstead\n\n (@Taon.Http.Param.Body('${currentParam.paramName}') formData: FormData) ...\n\n`);\n }\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n `${Symbols.old.MAPPING_CONFIG_HEADER_BODY_PARAMS}${currentParam.paramName} `,\n JSON.stringify(mapping),\n );\n }\n bodyObject[currentParam.paramName] = param;\n } else {\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n Symbols.old.MAPPING_CONFIG_HEADER_BODY_PARAMS,\n JSON.stringify(mapping),\n );\n }\n bodyObject = param;\n }\n }\n });\n\n if (\n typeof bodyObject === 'object' &&\n ClassHelpers.getName(bodyObject) !== 'FormData'\n ) {\n let circuralFromItem = [];\n bodyObject = JSON10.parse(\n JSON10.stringify(bodyObject, void 0, void 0, circs => {\n circuralFromItem = circs;\n }),\n );\n rest.headers.set(\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY,\n JSON10.stringify(circuralFromItem),\n );\n }\n\n if (typeof queryParams === 'object') {\n let circuralFromQueryParams = [];\n queryParams = JSON10.parse(\n JSON10.stringify(queryParams, void 0, void 0, circs => {\n circuralFromQueryParams = circs;\n }),\n );\n\n rest.headers.set(\n Symbols.old.CIRCURAL_OBJECTS_MAP_QUERY_PARAM,\n JSON10.stringify(circuralFromQueryParams),\n );\n }\n\n\n const httpResultObj = {\n received: isWithBody\n ? rest.model(pathPrams)[method](bodyObject, [queryParams])\n : rest.model(pathPrams)[method]([queryParams]),\n };\n return httpResultObj;\n };\n\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/endpoint-context.ts","\n\nimport { Helpers } from 'tnp-core/browser';\n\nexport const globalPublicStorage = Helpers.isBrowser ? window : global;\n\n ;({}); // @--end-of-file-for-module=taon lib/storage.ts","\n\n\n\nimport { Stor } from 'taon-storage/browser';\nimport { Helpers, _ } from 'tnp-core/browser';\nimport { Subject, take, takeUntil, tap } from 'rxjs';\nimport type { TaonAdminModeConfigurationComponent } from './taon-admin-mode-configuration.component';\nimport { globalPublicStorage } from '../../storage';\nimport { config } from 'tnp-config/browser';\nimport { Injectable } from '@angular/core';\n\n\nconst ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];\n\n@Injectable({ providedIn: 'root' })\nexport class TaonAdmin {\n public scrollableEnabled = false; // TOOD false by default\n\n\n private constructor() {\n\n this.scrollableEnabled = !!ENV?.useGlobalNgxScrollbar;\n }\n public static get Instance(): TaonAdmin {\n if (!globalPublicStorage[config.frameworkNames.taon]) {\n globalPublicStorage[config.frameworkNames.taon] = new TaonAdmin();\n }\n return globalPublicStorage[config.frameworkNames.taon];\n }\n\n\n\n public cmp: TaonAdminModeConfigurationComponent;\n private onEditMode = new Subject();\n onEditMode$ = this.onEditMode.asObservable();\n\n\n\n // @ts-ignore\n @Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false)\n public adminPanelIsOpen: boolean;\n\n\n\n // @ts-ignore\n @Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false)\n public draggablePopupMode: boolean;\n\n\n\n // @ts-ignore\n @Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false)\n public draggablePopupModeFullScreen: boolean;\n\n\n\n /**\n * Property used in taon\n */ // @ts-ignore\n @Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false)\n public keepWebsqlDbDataAfterReload: boolean;\n\n\n\n setEditMode(value: boolean) {\n this.onEditMode.next(value);\n }\n\n setKeepWebsqlDbDataAfterReload(value: boolean) {\n\n\n\n this.keepWebsqlDbDataAfterReload = value;\n }\n\n enabledTabs = [];\n\n hide() {\n this.draggablePopupMode = false;\n this.adminPanelIsOpen = false;\n }\n\n show() {\n this.draggablePopupMode = false;\n this.adminPanelIsOpen = true;\n }\n\n logout() {}\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin.service.ts","\n\n\nimport { Helpers } from 'tnp-core/browser';\nimport { EndpointContext } from './endpoint-context';\nimport { Models } from './models';\n\nimport { ENV } from './env';\n\nimport { TaonAdmin } from './ui/taon-admin-mode-configuration/taon-admin.service';\n\n\n\n\n\n\nexport const createContext = <\n\n CTX extends Record<string, object>,\n CTRL extends Record<string, new (...args: any[]) => any>,\n ENTITY extends Record<string, new (...args: any[]) => any>,\n REPO extends Record<string, new (...args: any[]) => any>,\n PROVIDER extends Record<string, new (...args: any[]) => any>,\n SUBSCRIBER extends Record<string, new (...args: any[]) => any>,\n\n>(\n configFn: (\n env: any,\n ) => Models.ContextOptions<CTX, CTRL, ENTITY, REPO, PROVIDER, SUBSCRIBER>,\n) => {\n let config = configFn(ENV);\n\n\n\n\n\n const endpointContextRef = new EndpointContext(config, configFn);\n\n\n\n\n\n const res = {\n\n types: {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n get controllers() {\n return config.controllers;\n },\n get repositories() {\n return config.repositories;\n },\n get providers() {\n return config.providers;\n },\n get subscribers() {\n return config.subscribers;\n },\n },\n\n\n get contexts() {\n return config.contexts;\n },\n get contextName() {\n return config.contextName;\n },\n\n\n /**\n * - get reference to internal context\n */\n async __ref() {\n if (!endpointContextRef.inited) {\n await endpointContextRef.init({\n initFromRecrusiveContextResovle: true,\n });\n }\n return endpointContextRef;\n },\n get __refSync() {\n return endpointContextRef;\n },\n getClassInstance<T>(ctor: new (...args: any[]) => T): T {\n return endpointContextRef.getInstanceBy(ctor);\n },\n\n getClass<T>(ctor: new (...args: any[]) => T): new (...args: any[]) => T {\n const classFun = endpointContextRef.getClassFunByClass(ctor);\n return classFun as any;\n\n\n\n\n\n\n\n\n\n\n\n\n\n },\n\n\n /**\n * - create controller instances for context\n * - init database (if enable) + migation scripts\n */\n initialize: async (): Promise<EndpointContext> => {\n return await new Promise(async (resolve, reject) => {\n setTimeout(async () => {\n await endpointContextRef.init();\n if (config.abstract) {\n throw new Error(`Abstract context can not be initialized`);\n }\n await endpointContextRef.initEntities();\n await endpointContextRef.initSubscribers();\n await endpointContextRef.initDatabaseConnection();\n\n\n\n\n\n endpointContextRef.initMetadata();\n endpointContextRef.startServer();\n/* */\n/* */\n \n\n await endpointContextRef.initClasses();\n let keepWebsqlDbDataAfterReload = false;\n\n keepWebsqlDbDataAfterReload =\n TaonAdmin.Instance.keepWebsqlDbDataAfterReload;\n\n if (!Helpers.isNode && keepWebsqlDbDataAfterReload) {\n Helpers.info(`[taon] Keep websql data after reload`);\n } else {\n await endpointContextRef.reinitControllers();\n }\n resolve(endpointContextRef);\n });\n });\n },\n\n };\n return res;\n};\n\n\n ;({}); // @--end-of-file-for-module=taon lib/create-context.ts","\n\nimport { createContext } from '../create-context';\nimport { BaseRepository } from './base-repository';\n\nconst BaseContext = createContext(() => ({\n contextName: 'BaseContext',\n abstract: true,\n repositories: {\n // @ts-ignore\n BaseRepository,\n },\n}));\n\nexport { BaseContext };\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-context.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\nimport { _ } from 'tnp-core/browser';\nimport type { BaseSubscriber } from '../../base-classes/base-subscriber';\n\nexport class TaonSubscriberOptions<\n T = any,\n> extends Models.DecoratorAbstractOpt {\n allowedEvents?: (keyof T)[];\n}\n\nexport function TaonSubscriber(options: TaonSubscriberOptions) {\n return function <T extends { new (...args: any[]): {} }>(constructor: T) {\n Reflect.defineMetadata(\n Symbols.metadata.options.repository,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n ClassHelpers.setName(constructor, options?.className);\n return class extends constructor {\n constructor(...args: any[]) {\n super(...args);\n\n\n const methodNamesAll = ClassHelpers.getMethodsNames(\n constructor.prototype,\n );\n\n const methodNames = methodNamesAll.filter(m => {\n return (\n !['__trigger_event__', 'clone'].includes(m) &&\n !m.startsWith('_') &&\n !m.startsWith('inject')\n );\n });\n\n\n methodNames.forEach(methodName => {\n const originalMethod = (this as any)[methodName];\n\n (this as any)[methodName] = async (...methodArgs: any[]) => {\n const result = originalMethod.apply(this, methodArgs);\n\n\n if (result instanceof Promise) {\n await result;\n }\n\n\n if (\n options.allowedEvents === undefined ||\n options.allowedEvents.includes(methodName)\n ) {\n // @ts-ignore\n (this as BaseSubscriber).__trigger_event__(methodName as any);\n }\n\n return result;\n };\n });\n }\n } as any;\n } as any;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/subscriber-decorator.ts","\n\nimport { EntitySubscriberInterface, RecoverEvent, SoftRemoveEvent, InsertEvent, TransactionStartEvent, TransactionCommitEvent, TransactionRollbackEvent, RemoveEvent, UpdateEvent, } from 'taon-typeorm/browser';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { BaseInjector } from './base-injector';\nimport { TaonSubscriber } from '../decorators/classes/subscriber-decorator';\n\n@TaonSubscriber({\n className: 'BaseSubscriber',\n})\nexport abstract class BaseSubscriber<Entity = any> extends BaseInjector {\n protected __trigger_event__(eventName: keyof Entity) {\n const ctx = this.__endpoint_context__;\n console.log('Trigger event', eventName, ctx);\n\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber.ts","\n\nimport { EntitySubscriberInterface, RecoverEvent, SoftRemoveEvent, InsertEvent, TransactionStartEvent, TransactionCommitEvent, TransactionRollbackEvent, RemoveEvent, UpdateEvent, } from 'taon-typeorm/browser';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { BaseInjector } from './base-injector';\nimport { TaonSubscriber } from '../decorators/classes/subscriber-decorator';\n\n@TaonSubscriber({\n className: 'BaseSubscriberForEntity',\n})\nexport abstract class BaseSubscriberForEntity<Entity = any>\n extends BaseInjector\n implements EntitySubscriberInterface\n{\n abstract listenTo(): new (...args) => Entity;\n\n /**\n * Called after entity is loaded.\n */\n afterLoad(entity: any) {\n console.log(`AFTER ENTITY LOADED: `, entity);\n }\n\n /**\n * Called before query execution.\n */\n beforeQuery(event: any) {\n\n console.log(`BEFORE QUERY: `, event.query);\n }\n\n /**\n * Called after query execution.\n */\n afterQuery(event: any) {\n\n console.log(`AFTER QUERY: `, event.query);\n }\n\n /**\n * Called before entity insertion.\n */\n beforeInsert(event: InsertEvent<any>) {\n console.log(`BEFORE ENTITY INSERTED: `, event.entity);\n }\n\n /**\n * Called after entity insertion.\n */\n afterInsert(event: InsertEvent<any>) {\n console.log(`AFTER ENTITY INSERTED: `, event.entity);\n }\n\n /**\n * Called before entity update.\n */\n beforeUpdate(event: UpdateEvent<any>) {\n console.log(`BEFORE ENTITY UPDATED: `, event.entity);\n }\n\n /**\n * Called after entity update.\n */\n afterUpdate(event: UpdateEvent<any>) {\n console.log(`AFTER ENTITY UPDATED: `, event.entity);\n }\n\n /**\n * Called before entity removal.\n */\n beforeRemove(event: RemoveEvent<any>) {\n console.log(\n `BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called after entity removal.\n */\n afterRemove(event: RemoveEvent<any>) {\n console.log(\n `AFTER ENTITY WITH ID ${event.entityId} REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called before entity removal.\n */\n beforeSoftRemove(event: SoftRemoveEvent<any>) {\n console.log(\n `BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called after entity removal.\n */\n afterSoftRemove(event: SoftRemoveEvent<any>) {\n console.log(\n `AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called before entity recovery.\n */\n beforeRecover(event: RecoverEvent<any>) {\n console.log(\n `BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `,\n event.entity,\n );\n }\n\n /**\n * Called after entity recovery.\n */\n afterRecover(event: RecoverEvent<any>) {\n console.log(\n `AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `,\n event.entity,\n );\n }\n\n /**\n * Called before transaction start.\n */\n beforeTransactionStart(event: TransactionStartEvent) {\n console.log(`BEFORE TRANSACTION STARTED: `, event);\n }\n\n /**\n * Called after transaction start.\n */\n afterTransactionStart(event: TransactionStartEvent) {\n console.log(`AFTER TRANSACTION STARTED: `, event);\n }\n\n /**\n * Called before transaction commit.\n */\n beforeTransactionCommit(event: TransactionCommitEvent) {\n console.log(`BEFORE TRANSACTION COMMITTED: `, event);\n }\n\n /**\n * Called after transaction commit.\n */\n afterTransactionCommit(event: TransactionCommitEvent) {\n console.log(`AFTER TRANSACTION COMMITTED: `, event);\n }\n\n /**\n * Called before transaction rollback.\n */\n beforeTransactionRollback(event: TransactionRollbackEvent) {\n console.log(`BEFORE TRANSACTION ROLLBACK: `, event);\n }\n\n /**\n * Called after transaction rollback.\n */\n afterTransactionRollback(event: TransactionRollbackEvent) {\n console.log(`AFTER TRANSACTION ROLLBACK: `, event);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber-for-entity.ts","\n\nimport * as controller from './base-controller';\nimport * as crudController from './base-crud-controller';\nimport * as entity from './base-entity';\nimport * as abstractEntity from './base-abstract-entity';\nimport * as repository from './base-repository';\nimport * as provider from './base-provider';\nimport * as baseclass from './base-class';\nimport * as baseContext from './base-context';\nimport * as baseSubscriber from './base-subscriber';\nimport * as baseSubscriberEntity from './base-subscriber-for-entity';\nexport namespace Base {\n export import Controller = controller.BaseController;\n export import CrudController = crudController.BaseCrudController;\n export import Entity = entity.BaseEntity;\n export import AbstractEntity = abstractEntity.BaseAbstractEntity;\n export import Provider = provider.BaseProvider;\n export import Class = baseclass.BaseClass;\n export import Repository = repository.BaseRepository;\n export import Subscriber = baseSubscriber.BaseSubscriber;\n export import SubscriberForEntity = baseSubscriberEntity.BaseSubscriberForEntity;\n export const Context = baseContext.BaseContext;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base.ts","\n\nimport { Mapping } from 'ng2-rest/browser';\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { CLASS } from 'typescript-class-helpers/browser';\nimport { Symbols } from '../../symbols';\nimport { _ } from 'tnp-core/browser';\nimport { Models } from '../../models';\n/* */\n/* */\n \n\nexport function TaonEntity<T = any>(options?: TaonEntityOptions<T>) {\n return function (constructor: Function) {\n options = options || ({} as any);\n options.uniqueKeyProp = options.uniqueKeyProp || ('id' as any);\n ClassHelpers.setName(constructor, options?.className);\n\n Mapping.DefaultModelWithMapping<T>(\n options?.defaultModelValues || {},\n _.merge(\n options?.defaultModelMapping || {},\n (options?.defaultModelMappingDeep || {}) as any,\n ),\n )(constructor);\n\n\n Mapping.DefaultModelWithMapping<T>(void 0, {})(constructor);\n\n Reflect.defineMetadata(\n Symbols.metadata.options.entity,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n/* */\n/* */\n \n CLASS.setName(constructor, options?.className); // TODO QUICK_FIX for ng2-rest\n };\n}\n\nexport class TaonEntityOptions<T = any> extends Models.DecoratorAbstractOpt {\n /**\n * default unique property is \"id\"\n * for your entity it may be something else\n */\n uniqueKeyProp?: string;\n createTable?: boolean;\n defaultModelValues?: Mapping.ModelValue<T>;\n defaultModelMapping?: Mapping.Mapping<T>;\n defaultModelMappingDeep?: { [lodashPathes: string]: string | [string] };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/entity-decorator.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\n\nexport function TaonProvider<T = any>(options?: TaonProviderOptions<T>) {\n return function (constructor: Function) {\n Reflect.defineMetadata(\n Symbols.metadata.options.provider,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n ClassHelpers.setName(constructor, options?.className || constructor.name);\n };\n}\n\nexport class TaonProviderOptions<\n T = any,\n> extends Models.DecoratorAbstractOpt {\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/provider-decorator.ts","\n\n\nimport { inject as angularInject } from '@angular/core';\n\nimport { Symbols } from './symbols';\nimport type { EndpointContext } from './endpoint-context';\nimport type { BaseInjector } from './base-classes/base-injector';\nimport { Observable, Subject } from 'rxjs';\nimport type { BaseClass } from './base-classes/base-class';\n\nexport const inject = <T>(entity: () => new (...args: any[]) => T): T => {\n return new Proxy(\n {},\n {\n get: (_, propName) => {\n if (propName === 'hasOwnProperty') {\n return () => false;\n }\n\n const ctor = entity();\n const contextFromClass = ctor[\n Symbols.ctxInClassOrClassObj\n ] as EndpointContext;\n const resultContext = contextFromClass;\n if (resultContext) {\n let instance = resultContext.inject(ctor) as BaseInjector;\n\n\n if (propName === 'getOriginalPrototype') {\n return () => Object.getPrototypeOf(instance);\n }\n if (propName === 'getOriginalConstructor') {\n return () => instance.constructor;\n }\n\n const methods = ctor[Symbols.classMethodsNames] || [];\n const isMethods = methods.includes(propName);\n\n const methodOrProperty = isMethods\n ? instance[propName].bind(instance)\n : instance[propName];\n\n\n\n\n\n return methodOrProperty;\n }\n\n\n return angularInject(ctor)[propName];\n\n },\n },\n ) as T;\n};\n\nexport const injectController = inject;\n\nexport type SubscbtionEvent<T> = {\n name: keyof T;\n data: any;\n};\n\nexport const injectSubscriberEvents = <T>(\n subscriberClassResolveFn: () => new (...args: any[]) => T,\n eventName: keyof T,\n): Observable<SubscbtionEvent<T>> => {\n const eventsSrc = new Subject<SubscbtionEvent<T>>();\n const obs = eventsSrc.asObservable();\n\n let isFirstSubscription = true;\n\n const proxiedObservable = new Proxy(obs, {\n get(target, prop, receiver) {\n if (prop === 'subscribe') {\n return (...args: any[]) => {\n if (isFirstSubscription) {\n isFirstSubscription = false;\n const subscriberClassFN: typeof BaseClass =\n subscriberClassResolveFn() as any;\n const ctx = subscriberClassFN[\n Symbols.ctxInClassOrClassObj\n ] as EndpointContext;\n if (!ctx) {\n throw new Error(\n `You are trying to inject class without context. Use context like this;\n\n Taon.injectSubscriberEvents( ()=> ` +\n `MyContext.getInstance(${subscriberClassFN?.name}), '${eventName as any}' )\n\n\n `,\n );\n }\n const subscriberInstance = ctx.getInstanceBy(subscriberClassFN);\n\n\n console.log('First subscription, you can access arguments here:', {\n subscriberClassFN,\n eventName,\n });\n\n }\n return target.subscribe(...args);\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n\n return proxiedObservable as Observable<SubscbtionEvent<T>>;\n};\n\n ;({}); // @--end-of-file-for-module=taon lib/inject.ts","\n\nexport type TaonEntityKeysToOmit =\n | 'ctrl'\n | 'clone'\n | '__endpoint_context__'\n | 'inject'\n | '_';\n\n ;({}); // @--end-of-file-for-module=taon lib/constants.ts","\n\nimport 'reflect-metadata';\nimport * as http from './decorators/http/http-decorators';\nimport * as base from './base-classes/base';\nimport * as controllerDecorator from './decorators/classes/controller-decorator';\nimport * as entityDecorator from './decorators/classes/entity-decorator';\nimport * as providerDecorator from './decorators/classes/provider-decorator';\nimport * as repositoryDecorator from './decorators/classes/repository-decorator';\nimport * as subscriberDecorator from './decorators/classes/subscriber-decorator';\nimport * as createContextFn from './create-context';\nimport * as orm from './orm';\nimport * as models from './models';\nimport * as coreHelpers from 'tnp-core/browser';\nimport * as injectFn from './inject';\nimport * as endpointContext from './endpoint-context';\nimport * as allSymbols from './symbols';\nimport * as getResponse from './get-response-value';\n\nimport { NgZone } from '@angular/core';\n\n\n\nexport { BaseRepository } from './base-classes/base-repository';\nexport { BaseController } from './base-classes/base-controller';\nexport { BaseProvider } from './base-classes/base-provider';\nexport { BaseSubscriber } from './base-classes/base-subscriber';\nexport { BaseEntity } from './base-classes/base-entity';\nexport { BaseContext } from './base-classes/base-context';\nexport { createContext } from './create-context';\nexport { inject } from './inject';\nexport { Models } from './models';\nexport * from './constants';\nexport { ClassHelpers } from './helpers/class-helpers';\n\n\nexport namespace Taon {\n export import Response = models.Models.Http.Response;\n export import Http = http.Http;\n export import Base = base.Base;\n export import Orm = orm.Orm;\n\n export const getResponseValue = getResponse.getResponseValue;\n\n\n export import Controller = controllerDecorator.TaonController;\n export import Entity = entityDecorator.TaonEntity;\n export import Provider = providerDecorator.TaonProvider;\n export import Repository = repositoryDecorator.TaonRepository;\n export import Subscriber = subscriberDecorator.TaonSubscriber;\n\n\n /**\n * @deprecated\n */\n export const isBrowser = coreHelpers.Helpers.isBrowser;\n /**\n * @deprecated\n */\n export const isNode = coreHelpers.Helpers.isNode;\n /**\n * @deprecated\n */\n export const isWebSQL = coreHelpers.Helpers.isWebSQL;\n /**\n * @deprecated\n */\n export const isElectron = coreHelpers.Helpers.isElectron;\n\n export const createContext = createContextFn.createContext;\n\n export const inject = injectFn.inject;\n\n\n\n\n export const initNgZone = (ngZone: NgZone) => {\n endpointContext.EndpointContext.initNgZone(ngZone);\n };\n\n\n export const symbols = allSymbols.Symbols;\n\n /**\n * @deprecated\n * use createContext instead\n */\n export const init = async (options: {\n host: string;\n entities: Function[];\n controllers: Function[];\n }) => {\n const BaseContext = (await import('./base-classes/base-context'))\n .BaseContext;\n const context = createContext(() => ({\n contextName: 'default',\n host: options.host,\n contexts: { BaseContext },\n database: true,\n entities: Array.from(options.entities) as any,\n controllers: Array.from(options.controllers) as any,\n }));\n\n await context.initialize();\n return context;\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ModelsNg2Rest","methods.GET","methods.POST","methods.PUT","methods.DELETE","methods.PATCH","methods.HEAD","params.Query","params.Path","params.Body","params.Cookie","params.Header","EntityDecorator","ENV","controller.BaseController","crudController.BaseCrudController","entity.BaseEntity","abstractEntity.BaseAbstractEntity","provider.BaseProvider","baseclass.BaseClass","repository.BaseRepository","baseSubscriber.BaseSubscriber","baseSubscriberEntity.BaseSubscriberForEntity","baseContext.BaseContext","angularInject","http.Http","base.Base","getResponse.getResponseValue","controllerDecorator.TaonController","entityDecorator.TaonEntity","providerDecorator.TaonProvider","repositoryDecorator.TaonRepository","subscriberDecorator.TaonSubscriber","createContextFn.createContext","injectFn.inject","endpointContext.EndpointContext","allSymbols.Symbols"],"mappings":";;;;;;;;;;;;;;;;;AAMM,IAAW,OAAO,CAoGvB;AApGD,CAAA,UAAiB,OAAO,EAAA;IACT,OAAoB,CAAA,oBAAA,GAAG,MAAM,EAAE,CAAC;AAChC,IAAA,OAAA,CAAA,uBAAuB,GAAW,MAAM,CAAC,uBAAuB,CAAC;IACjE,OAA2B,CAAA,2BAAA,GAAW,mBAAmB,CAAC;IAC1D,OAAY,CAAA,YAAA,GAAW,eAAe,CAAC;IACvC,OAAqB,CAAA,qBAAA,GAAW,4BAA4B,CAAC;IAC7D,OAAiB,CAAA,iBAAA,GAAW,uBAAuB,CAAC;AAEpD,IAAA,OAAA,CAAA,QAAQ,GAAG;QACtB,SAAS,EAAE,CAAC,WAAmB,KAAK,CAAA,EAAG,WAAW,CAAkB,gBAAA,CAAA;QACpE,YAAY,CAAC,WAAmB,EAAE,SAAiB,EAAA;AACjD,YAAA,OAAO,CAAG,EAAA,WAAW,CAAmB,gBAAA,EAAA,SAAS,EAAE,CAAC;SACrD;AACD;;;;;AAKG;AACH,QAAA,SAAS,EAAE;YAET,MAAM,CAAC,WAAmB,EAAE,WAAmB,EAAA;AAC7C,gBAAA,OAAO,CAAG,EAAA,WAAW,CAAmB,gBAAA,EAAA,WAAW,EAAE,CAAC;aACvD;AACD;;AAEG;AACH,YAAA,gBAAgB,CACd,WAAmB,EACnB,SAAiB,EACjB,YAAoB,EAAA;AAEpB,gBAAA,OAAO,CAAG,EAAA,WAAW,CAAQ,KAAA,EAAA,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,YAAY,CAAA,CAAE,CAAC,WAAW,EAAE,CAAC;aACpF;AACD,YAAA,aAAa,CACX,WAAmB,EACnB,SAAiB,EACjB,QAAyB,EAAA;AAEzB,gBAAA,OAAO,CAAG,EAAA,WAAW,CAAQ,KAAA,EAAA,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAA,CAAE,CAAC,WAAW,EAAE,CAAC;aAChF;AACD,YAAA,sBAAsB,CACpB,WAAmB,EACnB,SAAiB,EACjB,QAAgB,EAChB,QAAyB,EAAA;gBAEzB,OAAO,CAAA,EAAG,WAAW,CAAQ,KAAA,EAAA,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAG,EAAA,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA,EAAG,QAAQ,CAAE,CAAA,CAAC,WAAW,EAAE,CAAC;aACxG;AAED,YAAA,SAAS,EAAE;gBACT,MAAM,EAAE,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAA+B,6BAAA,CAAA;gBAC7E,oBAAoB,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAA4B,0BAAA,CAAA;gBACvF,6BAA6B,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAAoC,kCAAA,CAAA;AACzG,aAAA;AACD,YAAA,WAAW,EAAE;gBACX,MAAM,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAAiC,+BAAA,CAAA;gBAC9E,oBAAoB,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAA8B,4BAAA,CAAA;gBACzF,6BAA6B,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAAsC,oCAAA,CAAA;AAC3G,aAAA;AACF,SAAA;KACF,CAAC;AAEW,IAAA,OAAA,CAAA,QAAQ,GAAG;AACtB,QAAA,SAAS,EAAE,CAAgB,cAAA,CAAA;AAC3B,QAAA,OAAO,EAAE;AACP,YAAA,iBAAiB,EAAE,CAA4B,0BAAA,CAAA;AAC/C,YAAA,UAAU,EAAE,CAAoB,kBAAA,CAAA;AAChC,YAAA,gBAAgB,EAAE,CAA2B,yBAAA,CAAA;AAC7C,YAAA,MAAM,EAAE,CAAgB,cAAA,CAAA;AACxB,YAAA,UAAU,EAAE,CAAoB,kBAAA,CAAA;AAChC,YAAA,QAAQ,EAAE,CAAkB,gBAAA,CAAA;AAC5B,YAAA,UAAU,EAAE,CAAoB,kBAAA,CAAA;AACjC,SAAA;KACF,CAAC;AAEW,IAAA,OAAA,CAAA,GAAG,GAAG;QACjB,eAAe,EAAE,MAAM,EAAE;AACzB,QAAA,OAAO,EAAE,CAAiB,eAAA,CAAA;QAC1B,wBAAwB,EAAE,MAAM,EAAE;QAClC,8BAA8B,EAAE,MAAM,EAAE;QACxC,6BAA6B,EAAE,MAAM,EAAE;QACvC,4BAA4B,EAAE,MAAM,EAAE;AAEtC,QAAA,aAAa,EAAE,CAAe,aAAA,CAAA;AAC9B,QAAA,yBAAyB,EAAE,CAAiB,eAAA,CAAA;AAC5C,QAAA,gCAAgC,EAAE,CAAiB,eAAA,CAAA;AACnD,QAAA,qBAAqB,EAAE,CAAe,aAAA,CAAA;AACtC,QAAA,iCAAiC,EAAE,CAAc,YAAA,CAAA;AACjD,QAAA,kCAAkC,EAAE,CAAe,aAAA,CAAA;AACnD,QAAA,oBAAoB,EAAE,CAA0B,wBAAA,CAAA;AAChD,QAAA,uBAAuB,EAAE,CAA0B,wBAAA,CAAA;AACnD,QAAA,UAAU,EAAE,CAAsB,oBAAA,CAAA;AAClC,QAAA,OAAO,EAAE;YACP,WAAW,EAAE,MAAM,EAAE;AACtB,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,gBAAgB,EAAE,CAA6F,2FAAA,CAAA;AAChH,SAAA;KACF,CAAC;AACJ,CAAC,EApGgB,OAAO,KAAP,OAAO,GAoGvB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACvGD,IAAW,UAAU,CA+F1B;AA/FD,CAAA,UAAiB,UAAU,EAAA;AAEZ,IAAA,UAAA,CAAA,kBAAkB,GAAG,CAAC,SAAS,EAAE,MAAgB,KAAI;QAChE,UAAU,CAAC,MAAK;AAEd,YAAA,IAAI,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;gBAC5B,MAAM,CAAA;;;;;;;;;;;;;;;;SAgBL,CAAC;aACH;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;AAC5D,KAAC,CAAC;AAIW,IAAA,UAAA,CAAA,mCAAmC,GAAG,CACjD,OAA8B,EAC9B,OAA4B,KAC1B;QACF,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACzB,OAAO;SACR;AACD,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACnD,YAAA,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,EAAE;gBACtE,MAAM,IAAI,KAAK,CAAC,CAAA;;;YAGZ,CAAC,CAAC,UAAU,CAAA,YAAA,EAAe,CAAC,CAAC,IAAI,CAAA,qBAAA,EAAwB,CAAC,CAAC,YAAY,IAAI,mBAAmB,CAAA;YAC9F,OAAO,CAAC,UAAU,CAAe,YAAA,EAAA,OAAO,CAAC,IAAI,CAAA,oBAAA,EAAuB,OAAO,CAAC,YAAY,CAAA;;;;AAI3F,QAAA,CAAA,CAAC,CAAC;aACJ;SACF;AACH,KAAC,CAAC;IAKW,UAAsB,CAAA,sBAAA,GAAG,CACpC,WAAkB,EAClB,QAAe,EACf,QAAe,EACf,YAAmB,KACjB;AACF,QAAA,IACE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;YACtB,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EACpD;AACA,YAAA,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC1C,MAAM,CAAA;;;;GAIT,CAAC;SACC;AAED,QAAA,IACE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnB,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EACjD;AACA,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACnC,MAAM,CAAA;;;;GAIT,CAAC;SACC;AACH,KAAC,CAAC;AAGW,IAAA,UAAA,CAAA,qBAAqB,GAAG,CAAC,KAAK,EAAE,EAAE,KAAI;AACjD,QAAA,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,CAAA,8BAAA,EAAiC,EAAE,CAAA,CAAE,CAAC;SAC7C;AACH,KAAC,CAAC;AACJ,CAAC,EA/FgB,UAAU,KAAV,UAAU,GA+F1B,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC/FD,IAAW,WAAW,CAgK3B;AAhKD,CAAA,UAAiB,WAAW,EAAA;AAEb,IAAA,WAAA,CAAA,QAAQ,GAAG,CAAC,CAAS,EAAE,WAAmB,KAAI;QACzD,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAG;AAC9B,YAAA,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACf,gBAAA,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACpB;AACD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,KAAC,CAAC;AAIW,IAAA,WAAA,CAAA,UAAU,GAAG,CAAC,CAAS,KAAI;AACtC,QAAA,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACvD,KAAC,CAAC;IAIW,WAAiB,CAAA,iBAAA,GAAG,KAAK,IAAG;AACvC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAAE,gBAAA,OAAO,CAAC,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACxC,YAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACnB,gBAAA,OAAO,IAAI,CAAC;aACb;AACD,YAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,gBAAA,OAAO,KAAK,CAAC;aACd;AACD,YAAA,IAAI;gBACF,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7B,gBAAA,OAAO,CAAC,CAAC;aACV;YAAC,OAAO,CAAC,EAAE;AACV,gBAAA,OAAO,KAAK,CAAC;aACd;SACF;AACD,QAAA,OAAO,KAAK,CAAC;AACf,KAAC,CAAC;AAIW,IAAA,WAAA,CAAA,cAAc,GAAG,CAC5B,CAAiC,EACjC,iBAAsC,KACpC;QACF,IAAI,OAAO,iBAAiB,KAAK,QAAQ;AACvC,YAAA,OAAO,CAAG,EAAA,CAAC,CAAC,cAAc,GAAG,iBAAiB,CAAA,CAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACtE,QAAA,OAAO,GAAG,CAAC,CAAC,cAAc,CAAA,EAAG,iBAAiB,CAAC,IAAI,CAAE,CAAA,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3E,KAAC,CAAC;IAIW,WAAW,CAAA,WAAA,GAAG,KAAK,IAAG;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,EAAE,CAAC;QACzC,IAAI,OAAO,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,KAAK,CAAC;AAC7C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;QACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,EAAE,CAAC;AAC3C,KAAC,CAAC;IAIW,WAAwB,CAAA,wBAAA,GAAG,CACtC,MAAc,EACd,MAAM,GAAG,KAAK,KACJ;QAEV,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACvB,IAAI,MAAM,EAAE;gBACV,OAAO,CAAC,KAAK,CACX,CAAA;;AAEqC,6CAAA,EAAA,OAAO,MAAM,CAAA;SACnD,EACC,MAAM,CACP,CAAC;aACH;AAED,YAAA,OAAO,MAAM,CAAC;SACf;QAED,IAAI,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YAC7B,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI;gBACF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;gBACxB,MAAM,GAAG,IAAI,CAAC;aACf;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,GAAG,KAAK,CAAC;aAChB;YAED,IAAI,MAAM,EAAE;AACV,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,YAAA,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;aACtD;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,GAAG,CAAC;AACb,KAAC,CAAC;IAIW,WAAmB,CAAA,mBAAA,GAAG,QAAQ,IAAG;AAC5C,QAAA,OAAO,gDAAgD,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzE,KAAC,CAAC;IAIW,WAAkB,CAAA,kBAAA,GAAG,CAChC,MAAgB,EAChB,YAAiC,EACjC,WAAmB,KACjB;QACF,OAAO;YACL,UAAU;AACV,YAAA,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5B,YAAA,YAAY,CAAC,UAAU;AACvB,YAAA,YAAY,CAAC,IAAI;YACjB,WAAW;AACZ,SAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,KAAC,CAAC;IAIW,WAAiB,CAAA,iBAAA,GAAG,CAC/B,MAAgB,EAChB,YAAiC,EACjC,WAAmB,KACjB;QACF,OAAO;YACL,SAAS;AACT,YAAA,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5B,YAAA,YAAY,CAAC,UAAU;AACvB,YAAA,YAAY,CAAC,IAAI;YACjB,WAAW;AACZ,SAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,KAAC,CAAC;IAIW,WAAW,CAAA,WAAA,GAAG,OAAO,IAAG;AACnC,QAAA,MAAM,QAAQ,GAAqB;AACjC,YAAA,MAAM,CAAC,MAAW,EAAA;gBAEhB,OAAO;AACL,oBAAA,IAAI,CAAC,IAAS,EAAA;qBAEb;iBACF,CAAC;aACH;YACD,SAAS,CAAC,GAAW,EAAE,KAAU,EAAA;AAE/B,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACtB;SACF,CAAC;QACF,MAAM,OAAO,GAAoB,EAAE,CAAC;AACpC,QAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,KAAC,CAAC;AAEJ,CAAC,EAhKgB,WAAW,KAAX,WAAW,GAgK3B,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC/JP;AACA;AAGM,IAAW,aAwQhB;AAxQD,CAAA,UAAiB,YAAY,EAAA;AAE3B;;AAEG;AACU,IAAA,YAAA,CAAA,oBAAoB,GAAG,CAAC,IAAY,KAAI;AACnD,QAAA,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACzC,OAAO;SACR;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;QACD,MAAM,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACtC,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ;cACxD,CAAC,CAAC,WAAW;cACb,KAAK,CAAC,CAAC;AACb,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,OAAO,GAAG,CAAC,eAAoB,KAAY;AAEtD,QAAA,IAAI,eAAe,YAAY,QAAQ,EAAE;AACvC,YAAA,OAAO,UAAU,CAAC;SACnB;QACD,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;AAClD,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0CAAA,CAA4C,CAAC,CAAC;SAC/D;AACD,QAAA,QACE,CAAC,eAAe,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAC/C,cAAE,eAAe,CAAC,OAAO,CAAC,uBAAuB,CAAC;cAChD,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,uBAAuB,CAAC;AACjE,YAAA,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAC9B;AACJ,KAAC,CAAC;AAGW,IAAA,YAAA,CAAA,eAAe,GAAG,CAAC,eAAoB,KAAS;QAC3D,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,eAAe,CAAC;SACxB;AACD,QAAA,OAAO,YAAA,CAAA,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAC,CAAC;AAGW,IAAA,YAAA,CAAA,mBAAmB,GAAG,CAAC,eAAoB,KAAY;QAGlE,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,eAAe,CAAA,CAAE,CAAC,CAAC;SAC7D;AACD,QAAA,QACE,CAAC,eAAe,CAAC,OAAO,CAAC,2BAA2B,CAAC;AACnD,cAAE,eAAe,CAAC,OAAO,CAAC,2BAA2B,CAAC;cACpD,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,2BAA2B,CAAC;YACrE,KAAK,CAAC,EACN;AACJ,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,WAAW,GAAG,CAAC,eAAoB,KAAY;AAC1D,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;AAC3C,cAAE,eAAe;AACjB,cAAE,eAAe,CAAC,WAAW,CAAC;AAChC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,OAAO,CACa,CAAC;QACvB,OAAO,MAAM,CAAC,aAAa,CAAC;AAC9B,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,oBAAoB,GAAG,CAAC,GAAQ,KAAa;AACxD,QAAA,IACE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAChB,YAAA,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AACd,YAAA,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACf,YAAA,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACf,YAAA,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,EACpB;AACA,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,MAAM,SAAS,GAAG,YAAA,CAAA,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,QAAQ,CAAC;AACzD,KAAC,CAAC;AAKW,IAAA,YAAA,CAAA,OAAO,GAAG,CAAC,MAAgB,EAAE,SAAiB,KAAU;AAEnE,QAAA,UAAU,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACjD,QAAA,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAC;AACtD,KAAC,CAAC;IAIW,YAAsB,CAAA,sBAAA,GAAG,CACpC,MAAgB,EAChB,SAAiB,EACjB,OAAO,GAAG,EAAE,KACD;QACX,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,IAAI,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAEhD,QAAA,IACE,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;YACzB,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,SAAS,EAC/C;AAEA,YAAA,OAAO,IAAI,CAAC;SACb;QACD,OAAO,YAAA,CAAA,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACjE,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,mBAAmB,GAAG,CACjC,MAAgB,KACuB;AACvC,QAAA,MAAM,oBAAoB,GAA0B,OAAO,CAAC,WAAW,CACrE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,MAAM,CACP,CAAC;AACF,QAAA,MAAM,aAAa,GAA4B,CAAC,CAAC,KAAK,CACpD,IAAI,MAAM,CAAC,gBAAgB,EAAE,EAC7B,oBAAoB,CACrB,CAAC;QAGF,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAEzD,QAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AACpC,YAAA,MAAM,cAAc,GAAwB,OAAO,CAAC,WAAW,CAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,MAAM,EACN,UAAU,CACX,CAAC;YAEF,IAAI,cAAc,EAAE;AAClB,gBAAA,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC;aACpD;SACF;AACD,QAAA,OAAO,aAAa,CAAC;AACvB,KAAC,CAAC;AAMF,IAAA,MAAM,sBAAsB,GAAG;QAC7B,QAAQ;QACR,MAAM;QACN,WAAW;QACX,QAAQ;QACR,aAAa;QACb,OAAO;QACP,MAAM;QACN,MAAM;QACN,UAAU;QACV,kBAAkB;QAClB,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;QAClB,kBAAkB;QAClB,eAAe;QACf,sBAAsB;QACtB,SAAS;QACT,WAAW;QACX,gBAAgB;KACjB,CAAC;IAGW,YAAe,CAAA,eAAA,GAAG,CAC7B,oBAAyB,EACzB,eAAe,GAAG,EAAE,KACR;QACZ,IAAI,CAAC,oBAAoB,EAAE;AACzB,YAAA,OAAO,eAAe,CAAC;SACxB;QAED,MAAM,eAAe,GAAG,CAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,eAAe;AAC9B,cAAE,oBAAoB;AACtB,cAAE,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,eAAe;cAChC,oBAAiC,EAAE,SAAS;cAC7C,oBAAoB,CAAC;QACzB,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;AAEhE,QAAA,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC;AACxB,YAAA,GAAG,MAAM,CAAC,mBAAmB,CAAC,aAAa,IAAI,EAAE,CAAC;AAClD,YAAA,GAAG,MAAM,CAAC,mBAAmB,CAAC,YAAY,IAAI,EAAE,CAAC;AACjD,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;AACnC,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;AACnC,SAAA,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3D,UAAU;AACP,aAAA,MAAM,CAAC,UAAU,IAAI,OAAO,aAAa,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC;AACrE,aAAA,OAAO,CAAC,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzC,QAAA,IACE,CAAC,QAAQ;YACT,CAAC,QAAQ,CAAC,WAAW;AACrB,YAAA,QAAQ,EAAE,WAAW,EAAE,IAAI,KAAK,QAAQ,EACxC;AACA,YAAA,OAAO,eAAe,CAAC;SACxB;AACD,QAAA,OAAO,YAAA,CAAA,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC;AAC3E,KAAC,CAAC;IAIW,YAAoB,CAAA,oBAAA,GAAG,CAClC,MAAgB,EAChB,UAAqC,EAAE,EACvC,YAAuB,KACa;QACpC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACzB,MAAM,CAAA,wEAAA,EAA2E,MAAM,CAAA,CAAE,CAAC;SAC3F;AAED,QAAA,IAAI,MAAsC,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAClD,QAAA,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC;AAC5E,QAAA,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,KAAK,EAAE,CAAC;AAErE,QAAA,MAAM,GAAG,YAAA,CAAA,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAErC,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAErB,QAAA,OAAO,aAAa;cAChB,aAAA,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC;cAClD,OAAO,CAAC;AACd,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,oBAAoB,GAAG,CAAC,MAAgB,KAAI;AACvD,QAAA,MAAM,OAAO,GAAG,YAAA,CAAA,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAE7C,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,aAAA,OAAO,EAAE;aACT,GAAG,CAAC,EAAE,IAAG;YACR,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;gBACnC,OAAO,EAAE,CAAC,IAAI,CAAC;aAChB;YACD,OAAO,EAAE,CAAC,SAAS,CAAC;AACtB,SAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,OAAO,CAAA,CAAA,EAAI,qBAAqB,CAAA,CAAA,EAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC;AACrE,KAAC,CAAC;AAEJ,CAAC,EAxQgB,YAAY,KAAZ,YAAY,GAwQ5B,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACnRP;AACA;AAOM,IAAW,OAoRhB;AApRD,CAAA,UAAiB,MAAM,EAAA;AAQrB,IAAA,IAAY,SAMX,CAAA;AAND,IAAA,CAAA,UAAY,SAAS,EAAA;AACnB,QAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,QAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,QAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,QAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,QAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AAC3B,KAAC,EANW,SAAS,GAAT,MAAS,CAAA,SAAA,KAAT,gBAAS,GAMpB,EAAA,CAAA,CAAA,CAAA;AAEY,IAAA,MAAA,CAAA,YAAY,GAAG;AAC1B,QAAA,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU;AAC9B,QAAA,CAAC,SAAS,CAAC,UAAU,GAAG,aAAa;AACrC,QAAA,CAAC,SAAS,CAAC,UAAU,GAAG,cAAc;AACtC,QAAA,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;AACjC,QAAA,CAAC,SAAS,CAAC,UAAU,GAAG,aAAa;KAGtC,CAAC;AA4GF,IAAA,MAAa,oBAAoB,CAAA;AAEhC,KAAA;AAFY,IAAA,MAAA,CAAA,oBAAoB,uBAEhC,CAAA;AAID,IAAA,MAAa,WAAW,CAAA;AAMvB,KAAA;AANY,IAAA,MAAA,CAAA,WAAW,cAMvB,CAAA;AAID,IAAA,MAAa,YAAY,CAAA;AAAzB,QAAA,WAAA,GAAA;;;YAoBE,IAAU,CAAA,UAAA,GAAyC,EAAE,CAAC;SACvD;AAAA,KAAA;AArBY,IAAA,MAAA,CAAA,YAAY,eAqBxB,CAAA;IAID,MAAa,gBAAiB,SAAQ,oBAAoB,CAAA;AAA1D,QAAA,WAAA,GAAA;;YAIE,IAAO,CAAA,OAAA,GAA2C,EAAE,CAAC;SACtD;AAAA,KAAA;AALY,IAAA,MAAA,CAAA,gBAAgB,mBAK5B,CAAA;IAID,MAAa,uBAAwB,SAAQ,gBAAgB,CAAA;AAG5D,KAAA;AAHY,IAAA,MAAA,CAAA,uBAAuB,0BAGnC,CAAA;AAID,IAAA,IAAiB,IAAI,CAqFpB;AArFD,IAAA,CAAA,UAAiB,IAAI,EAAA;QACL,IAAI,CAAA,IAAA,GAAGA,QAAa,CAAC;AA+CnC,QAAA,MAAa,MAAM,CAAA;YAKjB,WACS,CAAA,OAAe,EACd,IAAA,GAA+B,GAAG,EAAA;gBADnC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;gBACd,IAAI,CAAA,IAAA,GAAJ,IAAI,CAA8B;gBANrC,IAAQ,CAAA,QAAA,GAAG,MAAa;oBAC7B,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,iBAAC,CAAC;aAKE;AAEI,YAAA,OAAO,MAAM,CACnB,OAAe,EACf,OAA+B,GAAG,EAAA;AAElC,gBAAA,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aAClC;YAEM,OAAO,cAAc,CAAC,MAAiB,EAAA;AAC5C,gBAAA,OAAO,MAAM,CAAC,MAAM,CAClB,CAAU,OAAA,EAAA,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA,UAAA,CAAY,CACnD,CAAC;aACH;AAEM,YAAA,OAAO,MAAM,CAClB,OAAe,EACf,OAA+B,GAAG,EAAA;gBAElC,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aACrC;AACF,SAAA;AA7BY,QAAA,IAAA,CAAA,MAAM,SA6BlB,CAAA;;;;;;AAQH,KAAC,EArFgB,IAAI,GAAJ,MAAI,CAAA,IAAA,KAAJ,WAAI,GAqFpB,EAAA,CAAA,CAAA,CAAA;AAEH,CAAC,EApRgB,MAAM,KAAN,MAAM,GAoRtB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC7RP,MAAM,OAAO,GAAG,CACd,MAAmC,EACnC,IAAY,EACZ,MAAgB,EAChB,WAAmB,EACnB,UAA8B,EAC9B,aAAgD,EAChD,YAAqB,KACnB;AACF,IAAA,IAAI,OAAiC,CAAC;AACtC,IAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;QACrC,OAAO,GAAG,aAAa,CAAC;AACxB,QAAA,aAAa,GAAG,OAAO,CAAC,IAAW,CAAC;AACpC,QAAA,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;AACtC,QAAA,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;KACrB;SAAM;AACL,QAAA,OAAO,GAAG,EAAE,aAAa,EAAE,YAAY,EAAS,CAAC;KAClD;AAED,IAAA,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IAE7D,IAAI,YAAY,GAAwB,OAAO,CAAC,WAAW,CACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;IACF,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AACzC,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,YAAY,EACZ,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;KACH;AAED,IAAA,YAAY,CAAC,UAAU,GAAG,WAAW,CAAC;AACtC,IAAA,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE;QACT,IAAI,sBAAsB,GAAG,EAAE,CAAC;AAChC,QAAA,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE;YACzC,IAAI,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7C,gBAAA,IACE,OAAO,CAAC,SAAS,KAAK,MAAM;AAC5B,oBAAA,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;oBAC7B,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EACnC;oBACA,sBAAsB,IAAI,CAAI,CAAA,EAAA,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAA,CAAE,CAAC;iBACzE;aACF;SACF;QACD,YAAY,CAAC,IAAI,GAAG,CAAA,CAAA,EAAI,WAAW,CAAG,EAAA,sBAAsB,EAAE,CAAC;KAChE;SAAM;AACL,QAAA,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;KAC1B;AAED,IAAA,YAAY,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,IAAA,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC;AACnC,IAAA,YAAY,CAAC,WAAW,GAAG,mBAAmB,CAAC;AAC/C,IAAA,YAAY,CAAC,YAAY,GAAG,mBAAmB,CAAC;AAChD,IAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,YAAY,EACZ,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;AAEJ,CAAC,CAAC;SASc,GAAG,CACjB,aAAiD,EACjD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,KAAK,EACL,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,IAAI,CAClB,aAAiD,EACjD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,MAAM,EACN,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,IAAI,CAClB,aAAiD,EACjD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,MAAM,EACN,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,GAAG,CACjB,aAAiD,EACjD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,KAAK,EACL,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,KAAK,CACnB,aAAiD,EACjD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,OAAO,EACP,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,MAAM,CACpB,aAAiD,EACjD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,QAAQ,EACR,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC5MP,SAAS,SAAS,CAChB,KAAiC,EACjC,IAAY,EACZ,MAAc,EACd,YAAY,GAAG,SAAS,EACxB,MAAgB,EAChB,WAA4B,EAC5B,cAAsB,EAAA;IAEtB,IAAI,YAAY,GAAwB,OAAO,CAAC,WAAW,CACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;IACF,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AACzC,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,YAAY,EACZ,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;KACH;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AACpC,IAAA,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CACpE,OAAO,CACR;AACC,UAAE,IAAI,MAAM,CAAC,WAAW,EAAE;UACxB,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,IAAA,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC;AACzB,IAAA,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;AACnB,IAAA,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;AACpB,IAAA,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC;AAC7B,IAAA,CAAC,CAAC,eAAe,GAAG,MAAM,CAAC;AAC3B,IAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,YAAY,EACZ,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;AAEJ,CAAC;AAEK,SAAU,IAAI,CAAC,IAAY,EAAA;AAC/B,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AAC9E,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,KAAK,CAAC,IAAa,EAAA;AACjC,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CACP,OAAO,EACP,IAAI,EACJ,SAAS,EACT,EAAE,EACF,MAAM,EACN,WAAW,EACX,cAAc,CACf,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,MAAM,CAAC,IAAY,EAAE,iBAAyB,IAAI,EAAA;AAChE,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CACP,QAAQ,EACR,IAAI,EACJ,cAAc,EACd,EAAE,EACF,MAAM,EACN,WAAW,EACX,cAAc,CACf,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,MAAM,CAAC,IAAa,EAAA;AAClC,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CACP,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,EAAE,EACF,MAAM,EACN,WAAW,EACX,cAAc,CACf,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,IAAI,CAAC,IAAa,EAAA;AAChC,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AAC9E,KAAC,CAAC;AACJ,CAAC;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACtHD,IAAW,IAAI,CAcpB;AAdD,CAAA,UAAiB,IAAI,EAAA;AACL,IAAA,IAAA,CAAA,GAAG,GAAGC,GAAW,CAAC;AAClB,IAAA,IAAA,CAAA,IAAI,GAAGC,IAAY,CAAC;AACpB,IAAA,IAAA,CAAA,GAAG,GAAGC,GAAW,CAAC;AAClB,IAAA,IAAA,CAAA,MAAM,GAAGC,MAAc,CAAC;AACxB,IAAA,IAAA,CAAA,KAAK,GAAGC,KAAa,CAAC;AACtB,IAAA,IAAA,CAAA,IAAI,GAAGC,IAAY,CAAC;AAClC,IAAA,IAAiB,KAAK,CAMrB;AAND,IAAA,CAAA,UAAiB,KAAK,EAAA;AACN,QAAA,KAAA,CAAA,KAAK,GAAGC,KAAY,CAAC;AACrB,QAAA,KAAA,CAAA,IAAI,GAAGC,IAAW,CAAC;AACnB,QAAA,KAAA,CAAA,IAAI,GAAGC,IAAW,CAAC;AACnB,QAAA,KAAA,CAAA,MAAM,GAAGC,MAAa,CAAC;AACvB,QAAA,KAAA,CAAA,MAAM,GAAGC,MAAa,CAAC;AACvC,KAAC,EANgB,KAAK,GAAL,IAAK,CAAA,KAAA,KAAL,UAAK,GAMrB,EAAA,CAAA,CAAA,CAAA;AACH,CAAC,EAdgB,IAAI,KAAJ,IAAI,GAcpB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACfD,SAAU,cAAc,CAAC,OAA+B,EAAA;AAC5D,IAAA,OAAO,UAAU,WAAqB,EAAA;QACpC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACtD,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;AAEY,MAAA,qBAAsB,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AASrE,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCtBM,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;AAuHE;;AAEG;QACO,IAAwB,CAAA,wBAAA,GAAG,EAA2B,CAAC;KAkIlE;AAjPC;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAA;AACL,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC;AAClD,QAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AAC9B,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACzB;KACF;AAID;;AAEG;AACH,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAoB,CAAC;KAC9D;AAMD;;AAEG;AACH,IAAA,UAAU,CAAI,aAAwC,EAAA;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtC,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,uBAAuB,EAAE,gBAAgB;AACzC,YAAA,2BAA2B,EAAE,CAAC,MAAM,aAAa,CAAC;AACnD,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAgB,CAAC,CAAC;AACrD,QAAA,OAAO,SAAgB,CAAC;KACzB;AAID,IAAA,sBAAsB,CACpB,oBAA+C,EAAA;AAE/C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAI,oBAAoB,EAAE;AACvD,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,2BAA2B,EAAE;AAC3B,gBAAA,MAAM,oBAAoB,CAAC,SAAS,CAAC,oBAAoB,EAAE;AAC5D,aAAA;AACF,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAgB,CAAC,CAAC;AACrD,QAAA,OAAO,SAAS,CAAC;KAClB;AAID;;AAEG;AACH,IAAA,gBAAgB,CAAI,oBAA+C,EAAA;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAI,oBAAoB,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAgB,CAAC,CAAC;AACrD,QAAA,OAAO,SAAS,CAAC;KAClB;AAID,IAAA,gBAAgB,CAAI,IAA+B,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAI,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACzD;AAKD;;AAEG;AACH,IAAA,gBAAgB,CAAI,IAA+B,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAI,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACzD;AAID;;AAEG;AACH,IAAA,UAAU,CAAI,IAA+B,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAI,IAAI,CAAC,CAAC;KACvC;AAID;;AAEG;AACH,IAAA,oBAAoB,CAAI,IAA+B,EAAA;AACrD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAI,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACzD;AAID;;;AAGG;AACH,IAAA,qBAAqB,CAAI,IAA+B,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAI,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACzD;AASD;;;AAGG;IACK,QAAQ,CACd,IAA+B,EAC/B,OASC,EAAA;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,EAAS,CAAC;SACrB;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,QAAA,OAAO,IAAI,KAAK,CACd,EAAE,EACF;AACE,YAAA,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAI;gBACpB,MAAM,gBAAgB,GACpB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;gBAE7C,MAAM,aAAa,GAAoB,gBAAgB;AACrD,sBAAE,gBAAgB;AAClB,sBAAE,IAAI,CAAC,oBAAoB,CAAC;AAE9B,gBAAA,IAAI,OAAO,CAAC,uBAAuB,EAAE;oBACnC,MAAM,aAAa,GAAG,aAAa,CAAC,sBAAsB,CACxD,OAAO,CAAC,uBAAuB,CAChC,CAAC;oBACF,IAAI,GAAG,aAAoB,CAAC;iBAC7B;gBAED,IAAI,aAAa,EAAE;AACjB,oBAAA,IAAI,QAAQ,GAAM,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3C,wBAAA,GAAG,OAAO;wBACV,oBAAoB;AACrB,qBAAA,CAAC,CAAC;oBACH,IAAI,CAAC,QAAQ,EAAE;AACb,wBAAA,MAAM,IAAI,KAAK,CACb,CAAA,oBAAA,EACE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IACrC,CAAW,SAAA,CAAA;4BACT,CAAa,UAAA,EAAA,QAAQ,EAAE,QAAQ,EAAE,CAAA,aAAA,EAAgB,YAAY,CAAC,OAAO,CACnE,IAAI,CACL,CAAA;;4BAGH,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IACrC,CAAA;;AAEC,cAAA,CAAA,CACA,CAAC;qBACH;oBAED,MAAM,MAAM,GACV,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,UAAU;0BACpC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,0BAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAGzB,oBAAA,OAAO,MAAM,CAAC;iBACf;aAIF;YACD,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAI;gBAC3B,MAAM,gBAAgB,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;gBACpE,MAAM,aAAa,GAAoB,gBAAgB;AACrD,sBAAE,gBAAgB;AAClB,sBAAE,IAAI,CAAC,oBAAoB,CAAC;AAE9B,gBAAA,IAAI,OAAO,CAAC,uBAAuB,EAAE;oBACnC,MAAM,aAAa,GAAG,aAAa,CAAC,sBAAsB,CACxD,OAAO,CAAC,uBAAuB,CAChC,CAAC;oBACF,IAAI,GAAG,aAAoB,CAAC;iBAC7B;gBAED,IAAI,aAAa,EAAE;AACjB,oBAAA,IAAI,QAAQ,GAAM,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3C,wBAAA,GAAG,OAAO;wBACV,oBAAoB;AACrB,qBAAA,CAAC,CAAC;oBACH,IAAI,CAAC,QAAQ,EAAE;AACb,wBAAA,MAAM,oBAAoB,GACxB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;AAC1C,wBAAA,MAAM,IAAI,KAAK,CACb,CAAA,oBAAA,EAAuB,oBAAoB,CAAW,SAAA,CAAA;4BACpD,CAAa,UAAA,EAAA,QAAQ,EAAE,QAAQ,EAAE,CAAA,aAAA,EAAgB,YAAY,CAAC,OAAO,CACnE,IAAI,CACL,CAAA;;4BAGH,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IACrC,CAAA;;AAEC,cAAA,CAAA,CACA,CAAC;qBACH;AACD,oBAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;iBAC5B;AACD,gBAAA,OAAO,IAAI,CAAC;aACb;AACF,SAAA,CACG,CAAC;KACR;AAMM,IAAA,KAAK,CAAC,QAAyB,EAAA;QACpC,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE5E,QAAA,OAAO,MAAM,CAAC;KACf;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACnQA,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,YAAY,CAAA;AAC9C;;AAEG;IACH,iBAAiB,GAAA;QACf,OAAO,KAAK,CAAC,CAAC;KACf;EAGF;AATY,cAAc,GAAA,UAAA,CAAA;AAD1B,IAAA,cAAc,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACnC,CAAA,EAAA,cAAc,CAS1B,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACWP;;AAEG;AAEI,IAAe,kBAAkB,GAAjC,MAAe,kBAA2B,SAAQ,cAAc,CAAA;AAarE,IAAA,MAAM,CAAC,GAAA;QACL,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;AAC5C,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,iCAAA,EAAoC,YAAY,CAAC,OAAO,CACtD,IAAI,CACL,CAAgD,8CAAA,CAAA,CAClD,CAAC;YACF,OAAO;SACR;AAED,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAChD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAEzC,IAAI,aAAa,EAAE;YACjB,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAC/B,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,CACnB,CAAC;AACvB,YAAA,IAAI,YAAY,EAAE,WAAW,KAAK,KAAK,EAAE;AACvC,gBAAA,OAAO,CAAC,IAAI,CACV,CAAA,iBAAA,EAAoB,YAAY,CAAC,OAAO,CACtC,aAAa,CACd,CAAoD,kDAAA,CAAA,CACtD,CAAC;aACH;SACF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,CAAA,yCAAA,EAA4C,YAAY,CAAC,OAAO,CAC5E,IAAI,CACL,CAAA;;;;AAIO,YAAA,EAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;;;;;;AAMjC,MAAA,CAAA,CAAC,CAAC;SACJ;AACD,QAAA,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;KACjB;AAKD,IAAA,eAAe,CACD,EAAmB,EACb,QAAgB,EACV,aAAsB,EAAA;;;;;;;;;;;;;;;;AAiB9C,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAKD,UAAU,CACa,aAAqB,CAAC,EACxB,WAAmB,EAAE,EACvB,SAAiB,EAAE,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCpC,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAKD,MAAM,GAAA;;;;;;;;;;AAUJ,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAKD,IAAA,KAAK,CAAa,EAAmB,EAAA;;;;;;AAMnC,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAKD,UAAU,CACI,EAAmB,EACvB,IAAY,EAAA;;;;;;;AAQpB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAKD,SAAS,CACK,EAAmB,EACvB,IAAY,EAAA;;;;;;;AAQpB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAKD,IAAA,UAAU,CAAS,KAAe,EAAA;;;;;;;;;AAShC,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAKD,IAAA,UAAU,CAAa,EAAU,EAAA;;;;;;AAM/B,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAKD,IAAA,UAAU,CACK,GAAwB,EAAA;;;;;;AAOrC,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAKD,IAAA,MAAM,CAAS,IAAY,EAAA;;;;;;AAMzB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAKD,IAAA,UAAU,CAAS,KAAa,EAAA;;;;;;AAM9B,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;CAEF,CAAA;AArMC,UAAA,CAAA;IADC,GAAG,CAAC,yBAAyB,CAAC;AAE5B,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;AACV,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAU,QAAA,CAAA,CAAC,CAAA;AAChB,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,eAAe,CAAC,CAAA;;;;AAkBxB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,GAAG,EAAE;AAEH,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,YAAY,CAAC,CAAA;AACnB,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,UAAU,CAAC,CAAA;AACjB,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,QAAQ,CAAC,CAAA;;;;AAyCjB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,GAAG,EAAE;;;;AAYL,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,GAAG,CAAC,MAAM,CAAC;AACL,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;;;;AAOhB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,GAAG,CAAC,MAAM,CAAC;AAET,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;IACV,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AASR,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,KAAK,CAAC,MAAM,CAAC;AAEX,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;IACV,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AASR,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,GAAG,EAAE;IACM,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AAUjB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,MAAM,CAAC,MAAM,CAAC;AACH,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;;;;AAOrB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,MAAM,CAAC,kBAAkB,CAAC;AAExB,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAK,GAAA,CAAA,CAAC,CAAA;;;;AAQb,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,IAAI,EAAE;IACC,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AAOb,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,IAAI,EAAE;IACK,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AAOjB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AA9PmB,kBAAkB,GAAA,UAAA,CAAA;AADvC,IAAA,cAAc,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;AAC9B,CAAA,EAAA,kBAAkB,CAgQvC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCrRM,SAAS,CAAA;AAEpB;;;AAGG;IACH,MAAM,CAAC,GAAA,GAAK;AAIL,IAAA,KAAK,CAAC,QAAyB,EAAA;QACpC,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE5E,QAAA,OAAO,MAAM,CAAC;KACf;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC9BP;AACA;AAMA,IAAIC,iBAAe,GAAG,MAAK;AACzB,IAAA,OAAO,CAAC,MAAW,KAAI,GAAG,CAAC;AAC7B,CAAC,CAAC;AAEF;AACA;AAIO,IAAe,UAAU,GAAzB,MAAe,UAKpB,SAAQ,SAAiB,CAAA;EAAG;AALR,UAAU,GAAA,UAAA,CAAA;AAD/B,IAAAA,iBAAe,EAAE;AACI,CAAA,EAAA,UAAU,CAKF,CAAA;AAE7B,CAAC;AAAA,CAAC,EAAE,EAAE;;ACvBP;AACA;AAOA,IAAI,eAAe,GAAG,MAAK;AACzB,IAAA,OAAO,CAAC,MAAW,KAAI,GAAG,CAAC;AAC7B,CAAC,CAAC;AAEF;AACA;AAIO,IAAe,kBAAkB,GAAjC,MAAe,kBAEpB,SAAQ,UAAkB,CAAA;CAU3B,CAAA;AAZqB,kBAAkB,GAAA,UAAA,CAAA;AADvC,IAAA,eAAe,EAAE;AACI,CAAA,EAAA,kBAAkB,CAYvC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACtBD,SAAU,cAAc,CAAC,OAA8B,EAAA;AAC3D,IAAA,OAAO,UAAU,WAAqB,EAAA;AACpC,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;QACF,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACxD,KAAC,CAAC;AACJ,CAAC;AAEY,MAAA,qBAEX,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AAAG,CAAA;AAEvC,CAAC;AAAA,CAAC,EAAE,EAAE;;ACGP,MAAM,wBAAwB,GAAG,CAAC,IAAI,CAAC,CAAC;AAGjC,IAAe,cAAc,GAA7B,MAAe,cAEpB,SAAQ,YAAY,CAAA;AAQpB,IAAA,WAAA,CAEU,sBAAiC,EAAA;AAEzC,QAAA,KAAK,EAAE,CAAC;QAFA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAW;;AAIzC,QAAA,IAAI,CAAC,oBAAoB,GAAG,sBAAsB,CAAC;KACpD;AAMD,IAAA,IAAW,OAAO,GAAA;;;;;;;;;;;;;;;;;;;;AAoBhB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAID,IAAA,IAAW,UAAU,GAAA;;;AAGnB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;;;AAOD,IAAA,IAAc,UAAU,GAAA;;;AAGtB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED;;AAEG;AACH,IAAA,IAAW,MAAM,GAAA;;;AAGf,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED;;AAEG;AACH,IAAA,IAAc,IAAI,GAAA;;;AAGhB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED,IAAA,IAAW,gBAAgB,GAAA;;;AAGzB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAMD,MAAM,MAAM,CAAC,OAAa,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqDzB;AAID;;;AAGG;AACH,IAAA,KAAK,CAAC,MAAc,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAChC;AAID;;AAEG;AACH,IAAA,KAAK,CAAC,MAAc,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAChC;AAID;;;AAGG;AACH,IAAA,MAAM,IAAI,CACR,IAAY,EACZ,OAEC,EAAA;;;;;;;;;;;;AAaD,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED;;;;AAIG;AACH,IAAA,MAAM,MAAM,CACV,IAAY,EACZ,OAEC,EAAA;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACjC;AAED,IAAA,MAAM,QAAQ,CACZ,KAAe,EACf,OAEC,EAAA;;;;;;;;;;AAWD,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED,IAAA,MAAM,UAAU,CACd,KAAe,EACf,OAEC,EAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACtC;AAiBD;;;AAGG;AAwCH;;AAEG;AACH,IAAA,KAAK,CAAC,eAAuB,EAAE,GAAG,WAAqB,EAAA;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,WAAW,CAAC,CAAC;KACzD;AAID;;;;;;;;AAQG;AACH,IAAA,OAAO,CAAC,UAAkB,EAAA;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KACtC;AAKD;;AAEG;IACH,MAAM,MAAM,CAAC,UAAoC,EAAA;;;;;;;;;;;;;;AAc/C,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED;;AAEG;IACH,MAAM,MAAM,CAAC,UAAoC,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KAChC;AAED;;AAEG;IACH,MAAM,UAAU,CAAC,EAAmB,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KACxB;IACD,MAAM,UAAU,CACd,aAA2C,EAAA;;;;;;;;;;;;;AAc3C,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAED,MAAM,UAAU,CAAC,GAAiC,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KAC7B;AAgED;;AAEG;IACH,UAAU,CACR,MAAS,EACT,OAAqB,EAAA;QAErB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC9C;AA6BD;;AAEG;IACH,OAAO,CACL,MAAS,EACT,OAAqB,EAAA;QAErB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3C;AAID;;;;;AAKG;AACH,IAAA,MAAM,CACJ,MAAyE,EAAA;QAEzE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACjC;IAID,MAAM,MAAM,CAAC,IAAY,EAAA;;;;AAIvB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED,IAAA,MAAM,UAAU,CAAC,EAAmB,EAAE,IAAY,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2ChD,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IACD,MAAM,UAAU,CAAC,KAAe,EAAA;;;;;;;;;;AAU9B,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AA8BD;;;;AAIG;IACH,MAAM,CACJ,gBAEoC,EACpC,sBAAwD,EAAA;QAExD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;KACnE;AAID;;;;;AAKG;AACH,IAAA,UAAU,CACR,QAS4B,EAAA;QAE5B,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KACvC;AAID;;;;;AAKG;AACH,IAAA,OAAO,CACL,QAS4B,EAAA;QAE5B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACpC;AAID;;;AAGG;AACH,IAAA,KAAK,CAAC,OAAiC,EAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACjC;AAID;;;AAGG;AACH,IAAA,OAAO,CACL,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACjC;AAID;;AAEG;AACH,IAAA,IAAI,CAAC,OAAiC,EAAA;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;AAID;;AAEG;AACH,IAAA,MAAM,CACJ,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAChC;;AAgBD;;;;AAIG;AACH,IAAA,YAAY,CAAC,OAAiC,EAAA;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;KACxC;AAID;;;;AAIG;AACH,IAAA,cAAc,CACZ,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACxC;AAID;;;;;;;;;AASG;AACH,IAAA,SAAS,CAAC,GAAU,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;KACjC;AAID;;;AAGG;AACH,IAAA,OAAO,CAAC,OAA+B,EAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACnC;AAID;;;AAGG;AACH,IAAA,SAAS,CACP,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACnC;AAID;;;;;;;;;AASG;AACH,IAAA,WAAW,CACT,EAA0B,EAAA;QAG1B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KAClC;AAID;;;AAGG;AACH,IAAA,aAAa,CAAC,OAA+B,EAAA;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KACzC;AAID;;;AAGG;AACH,IAAA,eAAe,CACb,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KACzC;AAID;;;AAGG;IACH,KAAK,CAAC,KAAa,EAAE,UAAkB,EAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KAC3C;AAID;;;;;AAKG;IACH,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KAC1B;AAID;;AAEG;AACH,IAAA,SAAS,CACP,UAAoC,EACpC,YAAoB,EACpB,KAAsB,EAAA;AAEtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;KAC7D;AAID;;AAEG;AACH,IAAA,SAAS,CACP,UAAoC,EACpC,YAAoB,EACpB,KAAsB,EAAA;AAEtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;KAC7D;AAID;;AAEG;AACH,IAAA,MAAM,MAAM,GAAA;;;;;;;;;;;;AAYV,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAID,MAAM,KAAK,CAAC,EAAmB,EAAA;;;;;;;AAO7B,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;EAEF;AAv3BqB,cAAc,GAAA,UAAA,CAAA;AADnC,IAAA,cAAc,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;;AAC1B,CAAA,EAAA,cAAc,CAu3BnC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC15BD,MAAO,YAAa,SAAQ,YAAY,CAAA;AAAG,CAAA;AAEhD,CAAC;AAAA,CAAC,EAAE,EAAE;;MCJM,eAAe,CAAA;AACX,IAAA,SAAA,IAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC,EAAA;IAErC,OAAO,OAAO,CAAI,MAAgB,EAAA;QAChC,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACzC,OAAO,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SAC9C;AAGD,QAAA,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,MAAM,QAAQ,GAAG,IAAK,MAAc,CAAC,GAAG,UAAU,CAAC,CAAC;QACpD,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAChD,QAAA,OAAO,QAAQ,CAAC;KACjB;IAED,OAAO,MAAM,CAAI,MAAiC,EAAA;AAChD,QAAA,OAAO,IAAI,KAAK,CACd,EAAE,EACF;AACE,YAAA,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAI;gBACnB,IAAI,QAAQ,GACV,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,oBAAA,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClC,gBAAA,OAAO,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,UAAU;sBAC3C,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,sBAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;aACxB;YACD,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,KAAI;gBAC1B,IAAI,QAAQ,GACV,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,oBAAA,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClC,gBAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AAC3B,gBAAA,OAAO,IAAI,CAAC;aACb;AACF,SAAA,CACG,CAAC;KACR;;AAGF,CAAC;AAAA,CAAC,EAAE,EAAE;;AChCA,MAAM,gBAAgB,GAAG,CAC9B,QAAiC,EACjC,OAAuD,KACzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCd,IAAA,QAAQ,KAAK,CAAC,EAAE;AAClB,CAAC,CAAC;AAED,CAAC;AAAA,CAAC,EAAE,EAAE;;AChDP,MAAMC,KAAG,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAI7D,CAAC;AAAA,CAAC,EAAE,EAAE;;ACLP;AACA;MAUa,mBAAmB,CAAA;AAG9B,IAAA,WAAA,CAAoB,OAAsC,EAAA;QAAtC,IAAO,CAAA,OAAA,GAAP,OAAO,CAA+B;QAFlD,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAS,CAAA,SAAA,GAAsB,EAAE,CAAC;KACoB;AAG9D,IAAA,uBAAuB,CACrB,QAA0D,EAAA;QAE1D,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;AAC1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,oDAAA,CAAsD,CAAC,CAAC;YACrE,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,yDAAA,CAA2D,CAC5D,CAAC;YACF,OAAO;SACR;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAChE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,CAAC;AAEF,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAExB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;gBAE5B,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAC;aACH;iBAAM;gBACL,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAErC,oBAAA,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,6BAA6B,CAChE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAC;iBACH;qBAAM;AAEL,oBAAA,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,CACvD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAC;iBACH;aACF;YAGD,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAG;AACxC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpB,aAAC,CAAC,CAAC;SACJ;KACF;AAID,IAAA,GAAG,CAAC,QAAyB,EAAA;AAE3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC/B;AAID,IAAA,MAAM,CAAC,QAAyB,EAAA;AAE9B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,QAAQ,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAE/B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAE/D,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;YAElC,IAAI,WAAW,EAAE;gBACf,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,QAAQ,CACT,CAAC;aACH;iBAAM;AACL,gBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;oBACxB,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,6BAA6B,CAClE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,QAAQ,CACT,CAAC;iBACH;qBAAM;oBACL,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,oBAAoB,CACzD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,QAAQ,CACT,CAAC;iBACH;aACF;SACF;KACF;AAIO,IAAA,MAAM,CAAC,IAAS,EAAA;QAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAG5C,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAEhC,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACpB,IAAI,MAAM,EAAE;AACV,oBAAA,MAAM,CAAC,GAAG,CAAC,MAAK;AACd,wBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,qBAAC,CAAC,CAAC;iBACJ;qBAAM;AACL,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACrB;aACF;AACH,SAAC,CAAC,CAAC;KACJ;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MClIM,cAAc,CAAA;AAEzB,IAAA,WAAA,CAAoB,IAAkB,EAAA;QAAlB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAc;QAD9B,IAAY,CAAA,YAAA,GAA4C,EAAE,CAAC;AAEjE,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;YAE9B,IAAI,CAAC,IAAI,EAAE,CAAC;SAEb;KACF;IAGO,IAAI,GAAA;AAEV,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC3B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CACtD;SACF,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;YACvB,OAAO,CAAC,IAAI,CACV,4BAA4B,EAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA,CACrD,CAAC;AAEJ,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;YACvB,OAAO,CAAC,IAAI,CACV,6BAA6B,EAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA,CACvD,CAAC;AAIJ,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;AAC1D,YAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;AAC9B,SAAA,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;gBAI9B,OAAO,CAAC,IAAI,CACV,CAAA,sCAAA,EAAyC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAa,UAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA,CAC1F,CAAC;AACJ,aAAC,CAAC,CAAC;SACJ;AAKD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AACrE,YAAA,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;AAChC,SAAA,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;gBAIvC,OAAO,CAAC,IAAI,CACV,CAAA,wCAAA,EAA2C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA,CAClG,CAAC;AACJ,aAAC,CAAC,CAAC;SACJ;KAGF;AAID;;;;;;AAMG;AACH,IAAA,mBAAmB,CACjB,aAAuB,EACvB,aAAkB,EAClB,OAAoC,EAAA;AAEpC,QAAA,OAAO,GAAG,OAAO,IAAK,EAAU,CAAC;AAGjC,QAAA,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAC1C,MAAM,SAAS,GAAG,CAAC,WAAW,IAAI,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAEtE,QAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACxB,YAAA,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC1B,gBAAA,MAAM,IAAI,KAAK,CACb,yDAAyD,SAAS,CAAA,CAAE,CACrE,CAAC;aACH;SACF;AAGD,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;YAG/B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;gBAClC,OAAO,CAAC,KAAK,CAAC,CAAA;;;;;;;AAOb,QAAA,CAAA,CAAC,CAAC;AACH,gBAAA,OAAO,MAAK;AAEZ,iBAAC,CAAC;aACH;AAED,YAAA,IAAI,QAAgB,CAAC;YAErB,IAAI,WAAW,EAAE;AACf,gBAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,WAAW,CACZ,CAAC;aACH;iBAAM;AACL,gBAAA,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;sBAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,sBAAsB,CAC/C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,SAAS,EACT,QAAQ,EACR,aAAa,CACd;sBACD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,SAAS,EACT,aAAa,CACd,CAAC;aACP;AAED,YAAA,MAAM,cAAc,GAAkC;gBACpD,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ;gBACR,QAAQ;gBACR,WAAW;aACZ,CAAC;YAGF,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;gBACpC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,IAAI,mBAAmB,CACvD,cAAc,CACf,CAAC;aACH;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEpD,YAAA,OAAO,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACxB,aAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAKD,IAAA,wBAAwB,CAAC,aAAuB,EAAA;QAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;AACrD,YAAA,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY,CACxC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,SAAS,CACV;AACF,SAAA,CAAC,CAAC;KACJ;AAKD;;;;;;;;AAQG;IACH,sBAAsB,CACpB,MAAS,EACT,OAAqC,EAAA;QAErC,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;KACtE;AAID,IAAA,wBAAwB,CAAC,WAAmB,EAAA;QAC1C,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE;YAC9C,WAAW;AACZ,SAAA,CAAC,CAAC;KACJ;AAIO,IAAA,aAAa,CAAC,OAAsC,EAAA;AAC1D,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAI,CAAA,EAAA,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAA,CAAA,EAAI,OAAO,CAAC,QAAQ,CAAA,CAAA,EAAI,OAAO,CAAC,WAAW,CAAA,CAAE,CAAC;KACpH;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC3NP,MAAM,qBAAqB,GAAG,GAAG,CAAC;MAErB,cAAc,CAAA;AAEzB,IAAA,WAAA,CAAoB,IAAkB,EAAA;QAAlB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAc;QAD9B,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;AAEhB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;;;SAI/B;KACF;IAGO,IAAI,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwJX;IAKO,cAAc,CACpB,gBAA0B,EAC1B,QAAiB,EACjB,mBAAqC,EACrC,WAAoB,EACpB,eAAqB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwEtB;IAIM,qBAAqB,CAC1B,gBAA0B,EAC1B,WAA6B,EAAA;QAE7B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;YAClC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEzD,YAAA,OAAO,CAAC,IAAI,CACV,yCAAyC,SAAS,CAAA,iBAAA,CAAmB,CACtE,CAAC;YACF,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,gBAAuB,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;KACnE;AAIM,IAAA,6BAA6B,CAClC,gBAAyC,EACzC,QAAyC,EACzC,WAA6B,EAAA;QAE7B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;YAClC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAEzD,OAAO,CAAC,IAAI,CACV,CAAA,+CAAA,EACE,QACF,CAAa,UAAA,EAAA,SAAS,CAAmB,iBAAA,CAAA,CAC1C,CAAC;YACF,OAAO;SACR;AAED,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACvB,YAAA,QAAQ,CAAC,OAAO,CAAC,eAAe,IAAG;gBACjC,IAAI,CAAC,cAAc,CACjB,gBAAgB,EAChB,eAAsB,EACtB,WAAW,CACZ,CAAC;AACJ,aAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,QAAe,EAAE,WAAW,CAAC,CAAC;SACrE;KACF;IAIM,kBAAkB,CAAC,WAAmB,EAAE,UAAe,EAAA;AAC5D,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;KACtE;AAIM,IAAA,0BAA0B,CAAC,WAAqB,EAAA;QACrD,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;AAClC,YAAA,OAAO,CAAC,IAAI,CACV,8CAA8C,SAAS,CAAA,iBAAA,CAAmB,CAC3E,CAAC;YACF,OAAO;SACR;AAED,QAAA,IAAI,CAAC,cAAc,CACjB,WAAkB,EAClB,KAAK,CAAC,EACN,KAAK,CAAC,EACN,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CACpE,CAAC;KACH;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCzUe,gBAAgB,CAAA;AACpC,IAAA,WAAA,CAAsB,GAAoB,EAAA;QAApB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;KAAI;IAEtC,SAAS,GAAA;KAEhB;AAOF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCbM,oBAAoB,CAAA;AAI/B,IAAA,WAAA,CAAmB,IAAY,EAAA;QAAZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAFvB,IAAS,CAAA,SAAA,GAA2B,EAAE,CAAC;QAG7C,IAAI,CAAC,WAAW,GAAI,MAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC;KACpE;IAED,EAAE,CAAC,SAAiB,EAAE,QAA8C,EAAA;QAClE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;SAChC;QACD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAA,GAAA,EAAM,SAAS,CAAA,CAAA,CAAG,CAAC;QAEtD,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC7C,QAAA,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACzB;aAAM;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACtB;KACF;IAED,GAAG,CAAC,KAAa,EAAE,QAA+C,EAAA;AAChE,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QAEnC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAClD,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAClC,CAAC;SACH;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9B;QACD,MAAM,cAAc,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG,CAAC;QAKnD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;KAC3D;AAED,IAAA,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW,EAAA;QAChC,MAAM,SAAS,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG,CAAC;QAG9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;KAC3C;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCpDM,kBAAkB,CAAA;AAM7B,IAAA,WAAA,CAAmB,WAAmB,EAAA;QAAnB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;AAL9B,QAAA,IAAA,CAAA,UAAU,GAAkD;AAClE,YAAA,GAAG,EAAE,IAAI,oBAAoB,CAAC,GAAG,CAAC;SACnC,CAAC;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAIzB;AAED,IAAA,EAAE,CAAC,SAAiB,EAAA;QAIlB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,oBAAoB,CACnD,SAAS,CACV,CAAC;SACH;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KACnC;IAED,EAAE,CAAC,KAAa,EAAE,QAA8C,EAAA;AAU9D,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;KAC1C;AAED,IAAA,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW,EAAA;AAIhC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;KAC3C;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACtCP;;;AAGG;AACG,MAAO,mBAAoB,SAAQ,gBAAgB,CAAA;IACvD,QAAQ,GAAA;AACN,QAAA,OAAO,KAAK,CAAC;KACd;IACD,mBAAmB,GAAA;AACjB,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;AACD,IAAA,WAAA,CAAsB,GAAoB,EAAA;QACxC,KAAK,CAAC,GAAG,CAAC,CAAC;QADS,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;QAI1C,IAAe,CAAA,eAAA,GAAsC,EAAE,CAAC;QACxD,IAAU,CAAA,UAAA,GAAyC,EAAE,CAAC;KAHrD;AAKD,IAAA,IAAI,EAAE,GAAA;QAEJ,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AAClC,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aACvC;YACD,MAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAE1D,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,GAAU,CAAC;AAC5C,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,EAAS;QAEV,OAAO,KAAK,CAAC,CAAC;KACf;AACD,IAAA,IAAI,MAAM,GAAA;;;;;;;;;;;;QAaR,OAAO,KAAK,CAAC,CAAC;KACf;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCvDM,aAAa,CAAA;IAIxB,WAAmB,CAAA,IAAY,EAAS,WAAmB,EAAA;QAAxC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAAS,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;QAHnD,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;AAClB,QAAA,IAAA,CAAA,OAAO,GAAoB,IAAI,GAAG,EAAE,CAAC;KAEkB;IAE/D,EAAE,CAAC,KAAa,EAAE,QAAsC,EAAA;AACtD,QAAA,IAAI,KAAK,KAAK,YAAY,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD;KACF;IAED,IAAI,CAAC,KAAa,EAAE,IAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;KAC1D;AAED,IAAA,EAAE,CAAC,IAAY,EAAA;QACb,OAAO;AACL,YAAA,IAAI,EAAE,CAAC,KAAa,EAAE,IAAU,KAAI;AAClC,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;iBAC9D;aACF;SACF,CAAC;KACH;IAED,QAAQ,CAAC,MAAkB,EAAE,IAAY,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;SAC9B;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC9B;IAED,SAAS,CAAC,MAAkB,EAAE,IAAY,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;AAC/B,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACzB;SACF;KACF;AAED,IAAA,SAAS,CAAC,MAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC1B;AAED,IAAA,YAAY,CAAC,MAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC7B;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCjDM,UAAU,CAAA;IAGrB,WAAmB,CAAA,EAAU,EAAU,SAAwB,EAAA;QAA5C,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;QAAU,IAAS,CAAA,SAAA,GAAT,SAAS,CAAe;QAFvD,IAAS,CAAA,SAAA,GAAmB,EAAE,CAAC;AAGrC,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAChC;IAED,EAAE,CAAC,KAAa,EAAE,QAA8B,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SAC5B;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtC;IAED,GAAG,CAAC,KAAa,EAAE,QAA+B,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QAEnC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC,CAAC;SACzF;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9B;KACF;IAED,IAAI,CAAC,KAAa,EAAE,IAAU,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3D;KACF;AAED,IAAA,IAAI,CAAC,IAAY,EAAA;QACf,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACrC;AAED,IAAA,KAAK,CAAC,IAAY,EAAA;QAChB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACtC;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MC7CM,UAAU,CAAA;AAKrB,IAAA,WAAA,CAAmB,WAAmB,EAAA;QAAnB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;AAJ9B,QAAA,IAAA,CAAA,UAAU,GAAe;YAC/B,GAAG,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC;SAC9C,CAAC;KAEwC;AAE1C,IAAA,EAAE,CAAC,SAAiB,EAAA;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SAC7E;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KACnC;IAED,EAAE,CAAC,KAAa,EAAE,QAAsC,EAAA;AACtD,QAAA,IAAI,KAAK,KAAK,YAAY,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;SACjD;KACF;IAED,IAAI,CAAC,KAAa,EAAE,IAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACxC;AAED,IAAA,OAAO,CAAC,EAAU,EAAE,SAAA,GAAoB,GAAG,EAAA;QACzC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAkB,KAAI;AACzC,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACf;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACjCP,MAAM,gBAAgB,CAAA;IAGpB,WAAoB,CAAA,YAAwB,EAAS,WAAmB,EAAA;QAApD,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAY;QAAS,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;QAFhE,IAAS,CAAA,SAAA,GAAmB,EAAE,CAAC;AAGrC,QAAA,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;KAClE;IAED,EAAE,CAAC,KAAa,EAAE,QAA8B,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SAC5B;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtC;IAED,GAAG,CAAC,KAAa,EAAE,QAA+B,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QAEnC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC,CAAC;SACzF;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9B;KACF;IAED,IAAI,CAAC,KAAa,EAAE,IAAU,EAAA;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3D;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,IAAI,CAAC,IAAY,EAAA;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;AAED,IAAA,KAAK,CAAC,IAAY,EAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC/B;AACF,CAAA;AAEK,SAAU,MAAM,CAAC,MAAkB,EAAA;AACvC,IAAA,OAAO,CAAC,SAAA,GAAoB,GAAG,KAAsB;AACnD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACzD,OAAO,IAAI,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAChE,KAAC,CAAC;AACJ,CAAC;AAGA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACvDN,CAAC;AAAA,CAAC,EAAE,EAAE;;ACCP;;;AAGG;AACG,MAAO,oBAAqB,SAAQ,gBAAgB,CAAA;IACxD,QAAQ,GAAA;AACN,QAAA,OAAO,MAAM,CAAC;KACf;AAGD,IAAA,WAAA,CAAsB,GAAoB,EAAA;QACxC,KAAK,CAAC,GAAG,CAAC,CAAC;QADS,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;KAEzC;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,UAAiB,CAAC;KAC1B;;AAED,IAAA,IAAI,EAAE,GAAA;AACJ,QAAA,OAAO,MAAa,CAAC;KACtB;IAED,mBAAmB,GAAA;AACjB,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC1BP;;;;AAIG;AACG,MAAO,wBAAyB,SAAQ,gBAAgB,CAAA;IAC5D,QAAQ,GAAA;AACN,QAAA,OAAO,WAAW,CAAC;KACpB;AACD,IAAA,WAAA,CAAsB,GAAoB,EAAA;QACxC,KAAK,CAAC,GAAG,CAAC,CAAC;QADS,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;KAEzC;AAED,IAAA,IAAI,MAAM,GAAA;;;AAGR,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;;AAED,IAAA,IAAI,EAAE,GAAA;AACJ,QAAA,OAAO,EAAE,CAAC;KACX;IAED,mBAAmB,GAAA;AACjB,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;AACF,CAAA;AAIA,CAAC;AAAA,CAAC,EAAE,EAAE;;AChCN,CAAC;AAAA,CAAC,EAAE,EAAE;;ACWP;;;;;;AAMG;MACU,YAAY,CAAA;AAsCvB,IAAA,WAAA,CAAmB,GAAoB,EAAA;QAApB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;AApC9B,QAAA,IAAA,CAAA,cAAc,GAAG;YACxB,KAAK;YACL,MAAM;YACN,KAAK;YACL,QAAQ;YACR,OAAO;YACP,SAAS;YACT,MAAM;SACP,CAAC;AA6BA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACvC,QAAA,GAAG,CAAC,YAAY;YACd,OAAO,CAAC,GAAG,CAAC,CAAA,0BAAA,EAA6B,IAAI,CAAC,QAAQ,CAAE,CAAA,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;KACxC;IAIO,eAAe,GAAA;QACrB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,0BAA0B,EAAE;AAChD,YAAA,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC3C;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,gCAAgC,EAAE;AACtD,YAAA,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC1C;AAOD,QAAA,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC/C;AAIM,IAAA,OAAO,CAAC,SAAkB,EAAA;AAC/B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,IAAI,GAAG,GAAG,SAAS,GAAG,SAAS,GAAG,EAAE,CAAC;AACrC,QAAA,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAC7B,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,GAAG,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC1D,IAAI,MAAM,GAAG,CAAA,YAAA,CAAc,CAAC;AAC5B,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,MAAM,GAAG,EAAE,CAAC;SACb;AACD,QAAA,MAAM,IAAI,GAAG,CAAG,EAAA,GAAG,CAAC,MAAM,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,MAAM,CAAG,EAAA,GAAG,EAAE,CAAC;AAExD,QAAA,OAAO,IAAI,GAAG,CAAC,IAAI,CAAQ,CAAC;KAC7B;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACzGP;MAoEa,eAAe,CAAA;IAM1B,OAAO,UAAU,CAAC,MAAc,EAAA;AAE9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KAEtB;IACM,OAAO,aAAa,CAAC,eAAoB,EAAA;QAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AACrE,QAAA,QACE,eAAe,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAC7C,YAAA,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,EACjC;KACH;AAoFD,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;KAC7B;AACD,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;KAC7B;AAWD,IAAA,IAAI,OAAO,GAAA;QACT,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACjC,OAAO,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,IAAqC,CAAC,IAAI,CAAC;SAClE;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;KACnC;AAED,IAAA,IAAI,WAAW,GAAA;QACb,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACjC,OAAO,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,IAAqC,CAAC,QAAQ,CAAC;SACtE;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;KACnC;AAED,IAAA,IAAI,YAAY,GAAA;QACd,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACjC,OAAO,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,IAAqC,CAAC,SAAS,CAAC;SACvE;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;KACnC;AAED,IAAA,IAAI,KAAK,GAAA;QACP,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACjC,OAAO,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,IAAqC,CAAC,EAAE,CAAC;SAChE;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;KACnC;IAMD,WACU,CAAA,cAAmE,EACnE,QAEgD,EAAA;QAHhD,IAAc,CAAA,cAAA,GAAd,cAAc,CAAqD;QACnE,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAEwC;QAlI1D,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;AAClC;;;AAGG;QACI,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;AAGd,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAGzE;;;AAGG;QACa,IAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;QAIxB,IAAuB,CAAA,uBAAA,GAAG,EAAE,CAAC;QAI7B,IAA0B,CAAA,0BAAA,GAAG,EAAE,CAAC;QAIjC,IAAY,CAAA,YAAA,GAGtB,EAAE,CAAC;AAID,QAAA,IAAA,CAAA,2BAA2B,GAAG;YACpC,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,QAAQ;YACzB,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,UAAU;SAC5B,CAAC;AAGM,QAAA,IAAA,CAAA,oBAAoB,GAAG;YAC7B,GAAG,IAAI,CAAC,2BAA2B;YACnC,MAAM,CAAC,SAAS,CAAC,MAAM;SACxB,CAAC;QAGK,IAAU,CAAA,UAAA,GAAgB,EAAS,CAAC;QAyBnC,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;AAmdtB,QAAA,IAAA,CAAA,yBAAyB,GAAG,CAElC,EACA,SAAS,EACT,SAAS,EACT,MAAM,EACN,GAAG,EACH,SAAS,GAOV,KAAO;YAEN,MAAM,UAAU,GAAG,MAAK;;AACtB,gBAAA,IACE,SAAS,CAAC,OAAO,CAAC,2BAA2B,CAAC;AAC9C,oBAAA,CAAA,EAAG,GAAG,CAAC,WAAW,IAAI,SAAS,CAAA,CAAE,EACjC;AACA,oBAAA,OAAO,SAAS,CAAC;iBAClB;gBACD,OAAO,cAAc,SAAS,CAAA;AAAvB,oBAAA,WAAA,GAAA;;wBA8BL,IAA8B,CAAA,EAAA,CAAA,GAAG,GAAG,CAAC;qBAGtC;AA7BS,oBAAA,SAAA,EAAA,GAAA,OAAO,CAAC,YAAY,EAAA,EAAA,GAGpB,OAAO,CAAC,2BAA2B,EAGnC,EAAA,GAAA,OAAO,CAAC,uBAAuB,OAE/B,OAAO,CAAC,oBAAoB,EAkBnC,EAAA,GAAA,OAAO,CAAC,oBAAoB,CAAA,EAAA;;6BA1BtB,IAAsB,CAAA,EAAA,CAAA,GAAG,SAAH,CAAa,EAAA;;6BAGnC,IAAqC,CAAA,EAAA,CAAA,GAAG,GAAG,GAAG,CAAC,WAAW,CAAI,CAAA,EAAA,SAAS,CAAE,CAApC,CAAqC,EAAA;;6BAG1E,IAAiC,CAAA,EAAA,CAAA,GAAG,SAAH,CAAa,EAAA;6BAE9C,IAA8B,CAAA,EAAA,CAAA,GAAG,GAAH,CAAO,EAAA;AAE5C,oBAAA,OAAO,uBAAuB,CAAC,GAAG,GAAG,EAAE,EAAA;wBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACvD,wBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAEf,wBAAA,IACE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;4BAC1B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,uBAAuB,EAClD;;4BAEA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;yBACzD;AACD,wBAAA,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBACtB;AACD,oBAAA,WAAW,gBAAgB,GAAA;AACzB,wBAAA,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;qBACvC;iBAIF,CAAC;AACJ,aAAC,CAAC;AAEF,YAAA,MAAM,kBAAkB,GAAG,UAAU,EAAE,CAAC;AAoBxC,YAAA,OAAO,kBAAkB,CAAC;AAC5B,SAAC,CAAC;AAMM,QAAA,IAAA,CAAA,8BAA8B,GAAG,CAAC,EACxC,YAAY,EACZ,MAAM,EACN,GAAG,EACH,SAAS,GAMV,KAAI;YACH,MAAM,OAAO,GAAG,EAAE,CAAC;AAEnB,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE;AACjD,gBAAA,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBAEpC,IAAI,CAAC,SAAS,EAAE;oBACd,OAAO,CAAC,KAAK,CAAC,CAAA,MAAA,EAAS,GAAG,CAA8B,2BAAA,EAAA,GAAG,CAAC,WAAW,CAAA;;;;AAItE,QAAA,CAAA,CAAC,CAAC;iBACJ;AAED,gBAAA,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,CACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,SAAS,CACV,CAAC;AAMF,gBAAA,SAAS,GAAG,SAAS,IAAI,GAAG,CAAC;AAC7B,gBAAA,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAC;AAEvD,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC;oBACjD,SAAS;oBACT,SAAS;oBACT,MAAM;oBACN,GAAG;oBACH,SAAS;AACV,iBAAA,CAAC,CAAC;AACH,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;aAClC;AACD,YAAA,OAAO,OAAO,CAAC;AACjB,SAAC,CAAC;KA7hBE;IAIG,MAAM,IAAI,CAAC,OAAuD,EAAA;QACvE,MAAM,EAAE,+BAA+B,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;AAE1D,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAACA,KAAG,CAAC,CAAC;AA+BjC,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;;;SAIzC;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;gBACpB,OAAO,CAAC,KAAK,CACX,CAAA,0DAAA,CAA4D,EAC5D,KAAK,EACL,IAAI,CACL,CAAC;aACH;AACD,YAAA,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;SACvC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,OAAO,CAAC,UAAU,EAAE;AACxD,YAAA,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;SAC9C;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACvC,YAAA,OAAO,CAAC,KAAK,CACX,CAAA,gBAAA,EAAmB,IAAI,CAAC,WAAW,CAAA,+DAAA,CAAiE,EACpG,KAAK,EACL,IAAI,CACL,CAAC;;;SAIH;QAID,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACrD;aAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,SAAS,CAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CACI,CAAC;SAC5B;AAID,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAC9B,gBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;aACrC;AAED,YAAA,KAAK,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;SACvC;AAID,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;AAC1D,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;AAExD,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG;AACrB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,MAAM,CACxB,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;SACxB,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG;AACxB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,UAAU,CAC5B,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;SAC3B,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG;AACtB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,QAAQ,CAC1B,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;SACzB,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG;AACxB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,UAAU,CAC5B,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;SAC3B,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG;AACzB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,UAAU,CAC5B,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;SAC5B,CAAC;QAMF,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAC5D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;AACvC,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAC7D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YACtC,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;AACvC,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAC1D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ;AACrC,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAC5D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;AACvC,SAAA,CAAC,CAAC;AAIH,QAAA,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,2BAA2B,EAAE;AAC5D,YAAA,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;AACjD,YAAA,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;SACrD;AAED,QAAA,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,2BAA2B,EAAE;AAC5D,YAAA,MAAM,IAAI,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,EAC/C,aAAa,CACd,CAAC;SACH;AAID,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,2BAA2B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;SAqBvE;AAID,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACzB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;;;;;;YAOvD,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;SACxC;AAKD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY;gBACf,OAAO,CAAC,IAAI,CACV,CAAmC,gCAAA,EAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAE,CAAA,CAC7D,CAAC;SACL;aAAM;AACL,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,gBAAA,IAAI,CAAC,YAAY;oBACf,OAAO,CAAC,IAAI,CACV,CAA0C,uCAAA,EAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAE,CAAA,CACnE,CAAC;aACL;iBAAM;AACL,gBAAA,IAAI,CAAC,YAAY;oBACf,OAAO,CAAC,IAAI,CACV,CAAmC,gCAAA,EAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,CAAA,CACtD,CAAC;aACL;SACF;AAID,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AACrC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;KACJ;IAIO,sBAAsB,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkF5B,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAID,IAAA,IAAI,MAAM,GAAA;QAER,OAAO,eAAe,CAAC,MAAM,CAAC;QAE9B,OAAO;KACR;IAID,WAAW,GAAA;;;;;;;;;;;;;;AAcT,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAID,IAAA,aAAa,CAAC,GAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8BhB;AAID,IAAA,IAAI,0BAA0B,GAAA;AAC5B,QAAA,QACE,IAAI,CAAC,IAAI,KAAK,2BAA2B;YACzC,IAAI,CAAC,IAAI,KAAK,0BAA0B;AACxC,YAAA,IAAI,CAAC,IAAI,KAAK,gCAAgC,EAC9C;KACH;IA6IO,MAAM,kCAAkC,CAC9C,SAA2B,EAAA;QAE3B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC;QAClE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;YAC3B,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjC,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACR;AAEO,IAAA,MAAM,+BAA+B,CAC3C,SAA2B,EAC3B,GAAG,GAAG,EAAE,EAAA;AAER,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAEtD,CAAC;AAIJ,QAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;AAE1B,YAAA,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;YAE9B,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAGlD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CACjC,IAAI,CAAC,8BAA8B,CAAC;gBAClC,YAAY;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,gBAAA,GAAG,EAAE,IAAI;gBACT,SAAS;AACV,aAAA,CAAC,CACH,CAAC;AAEF,YAAA,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAExC,MAAM,GAAG,CAAC,+BAA+B,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;SAC3D;AACD,QAAA,OAAO,GAAiB,CAAC;KAC1B;AAID,IAAA,qBAAqB,CAAC,SAA2B,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;KAChD;AAIO,IAAA,wBAAwB,CAAC,SAA2B,EAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;KACnD;IAID,MAAM,CACJ,IAA+B,EAC/B,OAIC,EAAA;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,EAAS,CAAC;SACrB;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7C,QAAA,MAAM,2BAA2B,GAC/B,OAAO,CAAC,2BAA2B,IAAI,EAAE,CAAC;AAE5C,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;AACvD,YAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;SAC9B;AAED,QAAA,IAAI,OAAO,EAAE,aAAa,EAAE;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,UAAU,GAAW,EAAE,CAAC;AAE5B,YAAA,IAAI,SAAS,KAAK,gBAAgB,EAAE;AAClC,gBAAA,MAAM,QAAQ,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAA,MAAM,MAAM,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBACtC,UAAU,GAAG,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aACrD;YAED,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;gBAC7D,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC;aAC/D;AACD,YAAA,MAAM,WAAW,GAAG,SAAS,IAAI,UAAU,GAAG,CAAA,CAAA,EAAI,UAAU,CAAE,CAAA,GAAG,EAAE,CAAC,CAAC;AACrE,YAAA,MAAM,OAAO,GACX,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC,CAAC;YACxE,IAAI,OAAO,EAAE;AAEX,gBAAA,OAAO,OAAO,CAAC;aAChB;YAED,IAAI,CAAC,UAAU,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,SAAS,CAAqB,kBAAA,EAAA,IAAI,CAAC,WAAW,CAAA;;yEAEpB,SAAS,CAAA;;AAEzE,QAAA,CAAA,CAAC,CAAC;aACJ;YAED,MAAM,gBAAgB,GAAG,IAAK,UAAkB,CAC9C,GAAG,2BAA2B,CAC/B,CAAC;YACF,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC;AACnE,gBAAA,gBAAgB,CAAC;AAEnB,YAAA,OAAO,gBAAgB,CAAC;SACzB;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAIjE,QAAA,OAAO,oBAAoB,CAAC;KAC7B;AAED;;AAEG;AACH,IAAA,aAAa,CAAI,IAA+B,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACpD;IAGD,yBAAyB,GAAA;QACvB,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,CAAA;;;;;;;AAOf,MAAA,CAAA,CAAC,CAAC;SACJ;KACF;AAGD,IAAA,aAAa,CAAC,SAA2B,EAAA;QACvC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,QAAQ,SAAS;AACf,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,UAAU;AAC9B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACjC,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,MAAM;AAC1B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9B,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ;AAC5B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAC/B,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,UAAU;AAC9B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAClC,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,UAAU;AAC9B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;SAClC;KACF;IAED,WAAW,CAAC,SAA2B,EAAE,OAAiB,EAAA;AACxD,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;KACvE;AAED;;;AAGG;AACH,IAAA,sBAAsB,CAAC,SAAiB,EAAA;AACtC,QAAA,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACrD,YAAA,MAAM,wBAAwB,GAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;AAElD,YAAA,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE;AACvC,gBAAA,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAC;aAC5C;SACF;KACF;AAED,IAAA,kBAAkB,CAAC,aAAuB,EAAA;QACxC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;KAC/C;AAED,IAAA,gBAAgB,CAAC,SAA2B,EAAA;AAC1C,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,CAAe,CAAC;KACzE;AAIO,IAAA,MAAM,eAAe,CAAC,OAAY,EAAE,SAA2B,EAAA;QAMrE,KAAK,MAAM,OAAO,IAAI;AAEpB,YAAA,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,SAAA,EAAE;YACD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,OAAc,CAAQ,CAAC;YAChE,MAAM,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YACxE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhD,YAAA,uBAAuB,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;AAE9C,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;YACjE,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;SAChD;KACF;AAID,IAAA,MAAM,iBAAiB,GAAA;AAIrB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAC/C,MAAM,CAAC,SAAS,CAAC,UAAU,CAC5B,CAAC;AAEF,QAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;YAC9B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;gBACxC,MAAM,OAAO,CAAC,cAAc,CAAC;oBAC3B,UAAU,EAAE,IAAI,CAAC,iBAAiB;AAClC,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA,CAAC,CAAC;aACJ;SACF;KAIF;AACD,IAAA,MAAM,WAAW,GAAA;QACf,KAAK,MAAM,aAAa,IAAI;YAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ;YACzB,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,MAAM;AACxB,SAAA,EAAE;YAKD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAU,EAAE;gBACpE,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBAC5B,MAAM,OAAO,CAAC,cAAc,CAAC;wBAC3B,UAAU,EAAE,QAAQ,CAAC,CAAC;AACtB,wBAAA,OAAO,EAAE,QAAQ;AAClB,qBAAA,CAAC,CAAC;iBAOJ;aACF;SAKF;QAED,KAAK,MAAM,aAAa,IAAI;YAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ;YACzB,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,UAAU;AAC5B,SAAA,EAAE;YAKD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,EAAE;gBAC/D,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;oBACxB,MAAM,OAAO,CAAC,cAAc,CAAC;wBAC3B,UAAU,EAAE,IAAI,CAAC,CAAC;AAClB,wBAAA,OAAO,EAAE,IAAI;AACd,qBAAA,CAAC,CAAC;iBACJ;aACF;SAKF;KACF;AAID,IAAA,UAAU,CAAC,aAAqB,EAAA;QAC9B,IAAI,UAAU,GACZ,aAAa,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC9C,OAAO,IAAI,KAAK,UAAU,CAAC;KAC5B;AAID,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI;AACnB,cAAE,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;cAClB,IAAI,CAAC,UAAU;AACf,kBAAE,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;kBACxB,KAAK,CAAC,CAAC;AACb,QAAA,OAAO,GAAG,CAAC;KACZ;AAID,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC;KACvC;AAID;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;KAChC;AAID,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,EAAE,CAAC;KACxC;AAID,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;KACnC;AAID,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;KAC/B;AAID,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;KACzB;AAID,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;KACzB;AAID,IAAA,MAAM,eAAe,GAAA;AACnB,QAAA,OAAO;;;;;;;;;;;;;;;;;;;;;AAqBL,QAAA,QAAQ,KAAK,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgInB;AAID,IAAA,MAAM,YAAY,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BjB;AAKD,IAAA,MAAM,sBAAsB,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmF1B,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAKD,YAAY,GAAA;AACV,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAE1E,QAAA,KAAK,MAAM,iBAAiB,IAAI,cAAc,EAAE;AAC9C,YAAA,iBAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC1C,gBAAA,YAAY,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAErE,YAAA,MAAM,WAAW,GAAmC,OAAO,CAAC,CAAC,CAAC,CAAC;YAE/D,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,iBAAA,OAAO,EAAE;iBACT,GAAG,CAAC,EAAE,IAAG;gBACR,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;oBACnC,OAAO,EAAE,CAAC,IAAI,CAAC;iBAChB;gBACD,OAAO,EAAE,CAAC,SAAS,CAAC;AACtB,aAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAC;YAEb,IAAI,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AAC5C,gBAAA,WAAW,CAAC,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC;aAC/C;iBAAM;AACL,gBAAA,WAAW,CAAC,cAAc;oBACxB,CAAG,EAAA,qBAAqB,IAAI,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAE,CAAA;AAClE,yBAAA,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;yBACrB,KAAK,CAAC,GAAG,CAAC;AACV,yBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,KAAI;wBAClB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;qBAChD,EAAE,EAAE,CAAC;yBACL,IAAI,CAAC,GAAG,CAAC,CAAC;aAChB;AAED,YAAA,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAG;AAC/B,gBAAA,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC;gBACtC,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AACxC,gBAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,oBAAA,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AAClD,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7B,wBAAA,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;qBAC1B;iBACF;AACH,aAAC,CAAC,CAAC;;;AAKD,YAAA,IAAI,CAAC,OAAO;gBACV,OAAO,CAAC,cAAc,CACpB,CAAA,+BAAA,EAAkC,WAAW,CAAC,SAAS,CAAG,CAAA,CAAA,CAC3D,CAAC;;;AAMN,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,IAAG;gBACpD,MAAM,YAAY,GAChB,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAElC,gBAAA,MAAM,IAAI,GAAgC,YAAY,CAAC,IAAI,CAAC;AAC5D,gBAAA,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM;AACrC,sBAAE,CAAA,CAAA,EAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAE,CAAA;sBAC1C,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBAG1D,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;iBAgBvC;AAED,gBAAA,MAAM,gBAAgB,GACpB,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC;gBAE3D,IAAI,gBAAgB,EAAE;oBAQpB,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;iBACrE;AACH,aAAC,CAAC,CAAC;;;AAKD,YAAA,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;;;SAItC;KACF;IAIM,iBAAiB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAsB,CAAC,IAAI,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiC5C;AAID,IAAA,IAAW,WAAW,GAAA;;;AAGpB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAIO,aAAa,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwGpB;IAIO,UAAU,CAEhB,IAAiC,EACjC,YAAiC,EACjC,WAA2C,EAC3C,WAAmB,EACnB,MAAgB,EAAA;;;;;;;;;AAchB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAGrB,MAAM,SAAS,GAAG,OAAO,cAAc,EAAE,GAAG,EAAE,GAAG,KAAI;YACnD,MAAM,QAAQ,GACZ,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK;AACjC;;AAEG;AACH,YAAA,IAAI,CAAC,aAAa,CAAC,MAAa,CAAC;AACjC;;AAEG;AACH,YAAA,cAAc,CACf,CAAC;AACJ,YAAA,IAAI,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5D,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAC;AAGF,QAAA,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;AACxC,cAAE,CAAG,EAAA,GAAG,CAAC,QAAQ,CAAA,EAAG,WAAW,CAAE,CAAA;cAC/B,WAAW,CAAC;QAChB,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAIhD,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;;;;;;;;;;;;;;;;;;;;;;SAuBvB;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAkOrB;QAED,OAAO;AACL,YAAA,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,YAAY,CAAC,IAAI;SAC1B,CAAC;KACH;AAID;;AAEG;AACK,IAAA,UAAU,CAEhB,MAAgB,EAChB,IAAiC,EACjC,YAA2C,EAC3C,WAAmB,EAAA;QAGnB,MAAM,GAAG,GAAG,IAAI,CAAC;AAEjB,QAAA,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,EAAE,WAAW,EAAE,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,CAAG,CAAC,CAAC;AAGtE,QAAA,IAAI,OAAY,CAAC;AACjB,QAAA,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,OAAO,GAAG,MAAM,CAAC;SAClB;;;;;QAQD,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAI7D,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,IAAI,EAAA;gBAC3D,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAI;oBACrD,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,oBAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;oBAE/D,OAAO,CAAC,WAAW,CAAC,IAAI,CACtB,WAAW,CAAC,kBAAkB,CAC5B,MAAM,EACN,YAAY,EACZ,WAAW,CACZ,EACD,CAAC,KAAK,EAAE,YAAY,KAAI;wBACtB,IAAI,GAAG,GAAQ,YAAY,CAAC;AAC5B,wBAAA,OAAO,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;AAC9B,wBAAA,IAAI;4BACF,MAAM,IAAI,GAAG,GAAG,CAAC;AACjB,4BAAA,GAAG,GAAG,IAAIb,QAAa,CAAC,YAAY,CAClC;gCACE,IAAI,EAAE,KAAK,CAAC;gCACZ,OAAO,EAAE,KAAK,CAAQ;gCACtB,MAAM,EAAE,YAAY,CAAC,IAAI;gCACzB,GAAG,EAAE,CAAG,EAAA,GAAG,CAAC,GAAG,CAAC,MAAM,CAAA,EACpB,EAAE;iCACD,EAAA,YAAY,CAAC,IAAI,CAAG,CAAA,CAAA;AACxB,6BAAA,EACD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtC,kCAAE,IAAI;kCACJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EACxB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EACzB,KAAK,CAAC,EACN,MAAM,IAAI,CACX,CAAC;4BAEF,OAAO,CAAC,GAAG,CAAC,CAAC;yBACd;wBAAC,OAAO,KAAK,EAAE;AACd,4BAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BACrB,MAAM,CAAC,KAAK,CAAC,CAAC;yBACf;AACH,qBAAC,CACF,CAAC;AACF,oBAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CACtB,WAAW,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,EAChE,IAAI,CACL,CAAC;AACJ,iBAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxC,OAAO;oBACL,QAAQ;iBACT,CAAC;AACJ,aAAC,CAAC;YACF,OAAO;SACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuJD,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,UAAoB,GAAG,IAAI,EAAA;YAMrE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;gBAC5C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC;AACjD,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1D,gBAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC5D,YAAA,IAAI,IAA2C,CAAC;AAChD,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE;gBACzC,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,IAAI,YAAY,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AAC1D,oBAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,CACpB,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,WAAW,EACX,OAAO,CAAC,GAAG,CAAC,qBAA4B,EACxC,OAAO,CAAC,GAAG,CAAC,yBAAgC,EAC5C,WAAW,CAAC,IAAI,CAAC;wBACf,cAAc,EAAE,YAAY,CAAC,WAAW;wBACxC,MAAM,EAAE,YAAY,CAAC,WAAW;AACjC,qBAAA,CAAC,CACH,CAAC;iBACH;qBAAM,IAAI,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,YAAY,EAAE;AAChE,oBAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,CACpB,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,WAAW,EACX,OAAO,CAAC,GAAG,CAAC,qBAA4B,EACxC,OAAO,CAAC,GAAG,CAAC,yBAAgC,EAC5C,WAAW,CAAC,IAAI,CAAC;wBACf,cAAc,EAAE,YAAY,CAAC,WAAW;wBACxC,MAAM,EAAE,YAAY,CAAC,WAAW;wBAChC,iBAAiB,EAAE,YAAY,CAAC,YAAY;AAC7C,qBAAA,CAAC,CACH,CAAC;iBACH;qBAAM,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,YAAY,EAAE;AACjE,oBAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,CACpB,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,WAAW,EACX,OAAO,CAAC,GAAG,CAAC,qBAA4B,EACxC,OAAO,CAAC,GAAG,CAAC,yBAAgC,EAC5C,WAAW,CAAC,IAAI,CAAC;wBACf,iBAAiB,EAAE,YAAY,CAAC,YAAY;AAC7C,qBAAA,CAAC,CACH,CAAC;iBACH;qBAAM;oBACL,IAAI,GAAG,QAAQ,CAAC,MAAM,CACpB,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,WAAW,EACX,OAAO,CAAC,GAAG,CAAC,qBAA4B,EACxC,OAAO,CAAC,GAAG,CAAC,yBAAgC,CAC7C,CAAC;iBACH;AAED,gBAAA,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;aAC7C;iBAAM;AACL,gBAAA,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAQ,CAAC;aACpD;AAED,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC;YACzD,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AACxB,gBAAA,IAAI,YAAY,GAAiC,KAAK,CAAQ,CAAC;AAE/D,gBAAA,KAAK,IAAI,EAAE,IAAI,YAAY,CAAC,UAAU,EAAE;oBACtC,IAAI,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACpC,oBAAA,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;wBACjB,YAAY,GAAG,CAAC,CAAC;wBACjB,MAAM;qBACP;iBACF;AAED,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,MAAM,EAAE;AACrC,oBAAA,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;iBAC3C;AACD,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,OAAO,EAAE;AACtC,oBAAA,IAAI,YAAY,CAAC,SAAS,EAAE;AAC1B,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,OAAO,EAAE;4BACX,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAA,EAAG,YAAY,CAAC,SAAS,CAAG,CAAA,CAAA,EAC7E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;yBACH;AACD,wBAAA,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;qBAC7C;yBAAM;AACL,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,OAAO,EAAE;AACX,4BAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAC9C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;yBACH;AACD,wBAAA,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAClC;iBACF;AACD,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,QAAQ,EAAE;AACvC,oBAAA,IAAI,YAAY,CAAC,SAAS,EAAE;wBAC1B,IAAI,YAAY,CAAC,SAAS,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE;AAElD,4BAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,YAAY,CAAC,SAAS,EACtB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAC1C,CAAC;yBACH;6BAAM;4BACL,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;yBACjD;qBACF;yBAAM;AACL,wBAAA,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE;AACxB,4BAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;yBACzC;qBACF;iBACF;AACD,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,QAAQ,EAAE;AACvC,oBAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,CACpB,YAAY,CAAC,SAAS,EACtB,KAAK,EACL,YAAY,CAAC,eAAe,CAC7B,CAAC;iBACH;AACD,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,MAAM,EAAE;AACrC,oBAAA,IAAI,YAAY,CAAC,SAAS,EAAE;wBAC1B,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE;4BACnD,MAAM,IAAI,KAAK,CAAC,CAAA;;;;;;;;AAQF,0BAAA,EAAA,YAAY,CAAC,SAAS,CAAA;;AAEjD,CAAA,CAAC,CAAC;yBACU;AACD,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,OAAO,EAAE;4BACX,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAA,EAAG,YAAY,CAAC,SAAS,CAAG,CAAA,CAAA,EAC5E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;yBACH;AACD,wBAAA,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;qBAC5C;yBAAM;AACL,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,OAAO,EAAE;AACX,4BAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;yBACH;wBACD,UAAU,GAAG,KAAK,CAAC;qBACpB;iBACF;AACH,aAAC,CAAC,CAAC;YAEH,IACE,OAAO,UAAU,KAAK,QAAQ;gBAC9B,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,UAAU,EAC/C;gBACA,IAAI,gBAAgB,GAAG,EAAE,CAAC;AAC1B,gBAAA,UAAU,GAAG,MAAM,CAAC,KAAK,CACvB,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,IAAG;oBACnD,gBAAgB,GAAG,KAAK,CAAC;iBAC1B,CAAC,CACH,CAAC;AACF,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,yBAAyB,EACrC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CACnC,CAAC;aACH;AAED,YAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;gBACnC,IAAI,uBAAuB,GAAG,EAAE,CAAC;AACjC,gBAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CACxB,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,IAAG;oBACpD,uBAAuB,GAAG,KAAK,CAAC;iBACjC,CAAC,CACH,CAAC;AAEF,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAC5C,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAC1C,CAAC;aACH;AAGD,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,QAAQ,EAAE,UAAU;AAClB,sBAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC;AAC1D,sBAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;aACjD,CAAC;AACF,YAAA,OAAO,aAAa,CAAC;AACvB,SAAC,CAAC;KAEH;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACx2EA,MAAM,mBAAmB,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtE,CAAC;AAAA,CAAC,EAAE,EAAE;;ACOP,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;MAGjD,SAAS,CAAA;AAIpB,IAAA,WAAA,GAAA;AAHO,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC;AAiBzB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QAyC7C,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;QAtDf,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,GAAG,EAAE,qBAAqB,CAAC;KACvD;AACM,IAAA,WAAW,QAAQ,GAAA;QACxB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YACpD,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;SACnE;QACD,OAAO,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;KACxD;AAoCD,IAAA,WAAW,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED,IAAA,8BAA8B,CAAC,KAAc,EAAA;AAI3C,QAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;KAC1C;IAID,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KAC/B;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;KAC9B;AAED,IAAA,MAAM,MAAK;8GAxEA,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAT,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cADI,MAAM,EAAA,CAAA,CAAA,EAAA;;AA0BvB,UAAA,CAAA;AADN,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AACpC,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAM1B,UAAA,CAAA;AADN,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AAClC,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAM5B,UAAA,CAAA;AADN,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AACxB,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAQtC,UAAA,CAAA;AADN,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AACzB,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,6BAAA,EAAA,KAAA,CAAA,CAAA,CAAA;2FA7CjC,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;AA6EjC,CAAC;AAAA,CAAC,EAAE,EAAE;;AC5EM,MAAA,aAAa,GAAG,CAU3B,QAEyE,KACvE;AACF,IAAA,IAAI,MAAM,GAAG,QAAQ,CAACa,KAAG,CAAC,CAAC;IAM3B,MAAM,kBAAkB,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAMjE,IAAA,MAAM,GAAG,GAAG;AAEV,QAAA,KAAK,EAAE;AAmBL,YAAA,IAAI,WAAW,GAAA;gBACb,OAAO,MAAM,CAAC,WAAW,CAAC;aAC3B;AACD,YAAA,IAAI,YAAY,GAAA;gBACd,OAAO,MAAM,CAAC,YAAY,CAAC;aAC5B;AACD,YAAA,IAAI,SAAS,GAAA;gBACX,OAAO,MAAM,CAAC,SAAS,CAAC;aACzB;AACD,YAAA,IAAI,WAAW,GAAA;gBACb,OAAO,MAAM,CAAC,WAAW,CAAC;aAC3B;AACF,SAAA;AAGD,QAAA,IAAI,QAAQ,GAAA;YACV,OAAO,MAAM,CAAC,QAAQ,CAAC;SACxB;AACD,QAAA,IAAI,WAAW,GAAA;YACb,OAAO,MAAM,CAAC,WAAW,CAAC;SAC3B;AAGD;;AAEG;AACH,QAAA,MAAM,KAAK,GAAA;AACT,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;gBAC9B,MAAM,kBAAkB,CAAC,IAAI,CAAC;AAC5B,oBAAA,+BAA+B,EAAE,IAAI;AACtC,iBAAA,CAAC,CAAC;aACJ;AACD,YAAA,OAAO,kBAAkB,CAAC;SAC3B;AACD,QAAA,IAAI,SAAS,GAAA;AACX,YAAA,OAAO,kBAAkB,CAAC;SAC3B;AACD,QAAA,gBAAgB,CAAI,IAA+B,EAAA;AACjD,YAAA,OAAO,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC/C;AAED,QAAA,QAAQ,CAAI,IAA+B,EAAA;YACzC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7D,YAAA,OAAO,QAAe,CAAC;SAcxB;AAGD;;;AAGG;QACH,UAAU,EAAE,YAAqC;YAC/C,OAAO,MAAM,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAI;gBACjD,UAAU,CAAC,YAAW;AACpB,oBAAA,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;AAChC,oBAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,wBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,uCAAA,CAAyC,CAAC,CAAC;qBAC5D;AACD,oBAAA,MAAM,kBAAkB,CAAC,YAAY,EAAE,CAAC;AACxC,oBAAA,MAAM,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAC3C,oBAAA,MAAM,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;oBAMlD,kBAAkB,CAAC,YAAY,EAAE,CAAC;oBAClC,kBAAkB,CAAC,WAAW,EAAE,CAAC;;;AAKjC,oBAAA,MAAM,kBAAkB,CAAC,WAAW,EAAE,CAAC;oBACvC,IAAI,2BAA2B,GAAG,KAAK,CAAC;oBAExC,2BAA2B;AACzB,wBAAA,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAAC;AAEjD,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,2BAA2B,EAAE;AAClD,wBAAA,OAAO,CAAC,IAAI,CAAC,CAAA,oCAAA,CAAsC,CAAC,CAAC;qBACtD;yBAAM;AACL,wBAAA,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;qBAC9C;oBACD,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC9B,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;SACJ;KAEF,CAAC;AACF,IAAA,OAAO,GAAG,CAAC;AACb,EAAE;AAGD,CAAC;AAAA,CAAC,EAAE,EAAE;;ACpKP,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO;AACvC,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,YAAY,EAAE;;QAEZ,cAAc;AACf,KAAA;AACF,CAAA,CAAC,EAAE;AAIH,CAAC;AAAA,CAAC,EAAE,EAAE;;;;;;;ACRM,MAAA,qBAEX,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AAEpC,CAAA;AAEK,SAAU,cAAc,CAAC,OAA8B,EAAA;AAC3D,IAAA,OAAO,UAAkD,WAAc,EAAA;AACrE,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;QACF,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACtD,OAAO,cAAc,WAAW,CAAA;AAC9B,YAAA,WAAA,CAAY,GAAG,IAAW,EAAA;AACxB,gBAAA,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;gBAGf,MAAM,cAAc,GAAG,YAAY,CAAC,eAAe,CACjD,WAAW,CAAC,SAAS,CACtB,CAAC;gBAEF,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAG;oBAC5C,QACE,CAAC,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3C,wBAAA,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;AAClB,wBAAA,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EACvB;AACJ,iBAAC,CAAC,CAAC;AAGH,gBAAA,WAAW,CAAC,OAAO,CAAC,UAAU,IAAG;AAC/B,oBAAA,MAAM,cAAc,GAAI,IAAY,CAAC,UAAU,CAAC,CAAC;oBAEhD,IAAY,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,UAAiB,KAAI;wBACzD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAGtD,wBAAA,IAAI,MAAM,YAAY,OAAO,EAAE;AAC7B,4BAAA,MAAM,MAAM,CAAC;yBACd;AAGD,wBAAA,IACE,OAAO,CAAC,aAAa,KAAK,SAAS;4BACnC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC1C;;AAEC,4BAAA,IAAuB,CAAC,iBAAiB,CAAC,UAAiB,CAAC,CAAC;yBAC/D;AAED,wBAAA,OAAO,MAAM,CAAC;AAChB,qBAAC,CAAC;AACJ,iBAAC,CAAC,CAAC;aACJ;SACK,CAAC;AACX,KAAQ,CAAC;AACX,CAAC;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACtDA,IAAe,cAAc,GAA7B,MAAe,cAA6B,SAAQ,YAAY,CAAA;AAC3D,IAAA,iBAAiB,CAAC,SAAuB,EAAA;AACjD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;KAE9C;EACF;AANqB,cAAc,GAAA,UAAA,CAAA;AAHnC,IAAA,cAAc,CAAC;AACd,QAAA,SAAS,EAAE,gBAAgB;KAC5B,CAAC;AACoB,CAAA,EAAA,cAAc,CAMnC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACRA,IAAe,uBAAuB,GAAtC,MAAe,uBACpB,SAAQ,YAAY,CAAA;AAKpB;;AAEG;AACH,IAAA,SAAS,CAAC,MAAW,EAAA;AACnB,QAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;KAC9C;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAU,EAAA;QAEpB,OAAO,CAAC,GAAG,CAAC,CAAA,cAAA,CAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;KAC5C;AAED;;AAEG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;QAEnB,OAAO,CAAC,GAAG,CAAC,CAAA,aAAA,CAAe,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;KAC3C;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAuB,EAAA;QAClC,OAAO,CAAC,GAAG,CAAC,CAAA,wBAAA,CAA0B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACvD;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAuB,EAAA;QACjC,OAAO,CAAC,GAAG,CAAC,CAAA,uBAAA,CAAyB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACtD;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAuB,EAAA;QAClC,OAAO,CAAC,GAAG,CAAC,CAAA,uBAAA,CAAyB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACtD;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAuB,EAAA;QACjC,OAAO,CAAC,GAAG,CAAC,CAAA,sBAAA,CAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACrD;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAuB,EAAA;AAClC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,sBAAA,EAAyB,KAAK,CAAC,QAAQ,CAAA,UAAA,CAAY,EACnD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAuB,EAAA;AACjC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,qBAAA,EAAwB,KAAK,CAAC,QAAQ,CAAA,UAAA,CAAY,EAClD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,gBAAgB,CAAC,KAA2B,EAAA;AAC1C,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,sBAAA,EAAyB,KAAK,CAAC,QAAQ,CAAA,eAAA,CAAiB,EACxD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,eAAe,CAAC,KAA2B,EAAA;AACzC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,qBAAA,EAAwB,KAAK,CAAC,QAAQ,CAAA,eAAA,CAAiB,EACvD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,aAAa,CAAC,KAAwB,EAAA;AACpC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,sBAAA,EAAyB,KAAK,CAAC,QAAQ,CAAA,YAAA,CAAc,EACrD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAwB,EAAA;AACnC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,qBAAA,EAAwB,KAAK,CAAC,QAAQ,CAAA,YAAA,CAAc,EACpD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,sBAAsB,CAAC,KAA4B,EAAA;AACjD,QAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;KACpD;AAED;;AAEG;AACH,IAAA,qBAAqB,CAAC,KAA4B,EAAA;AAChD,QAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;KACnD;AAED;;AAEG;AACH,IAAA,uBAAuB,CAAC,KAA6B,EAAA;AACnD,QAAA,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;KACtD;AAED;;AAEG;AACH,IAAA,sBAAsB,CAAC,KAA6B,EAAA;AAClD,QAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;KACrD;AAED;;AAEG;AACH,IAAA,yBAAyB,CAAC,KAA+B,EAAA;AACvD,QAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;KACrD;AAED;;AAEG;AACH,IAAA,wBAAwB,CAAC,KAA+B,EAAA;AACtD,QAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;KACpD;CACF,CAAA;AA9JqB,uBAAuB,GAAA,UAAA,CAAA;AAH5C,IAAA,cAAc,CAAC;AACd,QAAA,SAAS,EAAE,yBAAyB;KACrC,CAAC;AACoB,CAAA,EAAA,uBAAuB,CA8J5C,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACvKD,IAAW,IAAI,CAWpB;AAXD,CAAA,UAAiB,IAAI,EAAA;AACL,IAAA,IAAA,CAAA,UAAU,GAAGC,cAAyB,CAAC;AACvC,IAAA,IAAA,CAAA,cAAc,GAAGC,kBAAiC,CAAC;AACnD,IAAA,IAAA,CAAA,MAAM,GAAGC,UAAiB,CAAC;AAC3B,IAAA,IAAA,CAAA,cAAc,GAAGC,kBAAiC,CAAC;AACnD,IAAA,IAAA,CAAA,QAAQ,GAAGC,YAAqB,CAAC;AACjC,IAAA,IAAA,CAAA,KAAK,GAAGC,SAAmB,CAAC;AAC5B,IAAA,IAAA,CAAA,UAAU,GAAGC,cAAyB,CAAC;AACvC,IAAA,IAAA,CAAA,UAAU,GAAGC,cAA6B,CAAC;AAC3C,IAAA,IAAA,CAAA,mBAAmB,GAAGC,uBAA4C,CAAC;AACpE,IAAA,IAAA,CAAA,OAAO,GAAGC,WAAuB,CAAC;AACjD,CAAC,EAXgB,IAAI,KAAJ,IAAI,GAWpB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACjBP;AACA;AAGM,SAAU,UAAU,CAAU,OAA8B,EAAA;AAChE,IAAA,OAAO,UAAU,WAAqB,EAAA;AACpC,QAAA,OAAO,GAAG,OAAO,IAAK,EAAU,CAAC;QACjC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAK,IAAY,CAAC;QAC/D,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAEtD,QAAA,OAAO,CAAC,uBAAuB,CAC7B,OAAO,EAAE,kBAAkB,IAAI,EAAE,EACjC,CAAC,CAAC,KAAK,CACL,OAAO,EAAE,mBAAmB,IAAI,EAAE,GACjC,OAAO,EAAE,uBAAuB,IAAI,EAAE,EACxC,CACF,CAAC,WAAW,CAAC,CAAC;QAGf,OAAO,CAAC,uBAAuB,CAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;AAE5D,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAC/B,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;;;QAIF,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACjD,KAAC,CAAC;AACJ,CAAC;AAEY,MAAA,iBAA2B,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AAU1E,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACpDD,SAAU,YAAY,CAAU,OAAgC,EAAA;AACpE,IAAA,OAAO,UAAU,WAAqB,EAAA;AACpC,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EACjC,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;AACF,QAAA,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAC5E,KAAC,CAAC;AACJ,CAAC;AAEY,MAAA,mBAEX,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AAEpC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACjBM,MAAA,MAAM,GAAG,CAAI,MAAuC,KAAO;AACtE,IAAA,OAAO,IAAI,KAAK,CACd,EAAE,EACF;AACE,QAAA,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAI;AACnB,YAAA,IAAI,QAAQ,KAAK,gBAAgB,EAAE;AACjC,gBAAA,OAAO,MAAM,KAAK,CAAC;aACpB;AAED,YAAA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC;YACtB,MAAM,gBAAgB,GAAG,IAAI,CAC3B,OAAO,CAAC,oBAAoB,CACV,CAAC;YACrB,MAAM,aAAa,GAAG,gBAAgB,CAAC;YACvC,IAAI,aAAa,EAAE;gBACjB,IAAI,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAiB,CAAC;AAG1D,gBAAA,IAAI,QAAQ,KAAK,sBAAsB,EAAE;oBACvC,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;iBAC9C;AACD,gBAAA,IAAI,QAAQ,KAAK,wBAAwB,EAAE;AACzC,oBAAA,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC;iBACnC;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBACtD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAE7C,MAAM,gBAAgB,GAAG,SAAS;sBAC9B,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,sBAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAMvB,gBAAA,OAAO,gBAAgB,CAAC;aACzB;AAGD,YAAA,OAAOC,QAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;SAEtC;AACF,KAAA,CACG,CAAC;AACT,EAAE;AAEK,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAOhC,MAAM,sBAAsB,GAAG,CACpC,wBAAyD,EACzD,SAAkB,KACgB;AAClC,IAAA,MAAM,SAAS,GAAG,IAAI,OAAO,EAAsB,CAAC;AACpD,IAAA,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;IAErC,IAAI,mBAAmB,GAAG,IAAI,CAAC;AAE/B,IAAA,MAAM,iBAAiB,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;AACvC,QAAA,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAA;AACxB,YAAA,IAAI,IAAI,KAAK,WAAW,EAAE;AACxB,gBAAA,OAAO,CAAC,GAAG,IAAW,KAAI;oBACxB,IAAI,mBAAmB,EAAE;wBACvB,mBAAmB,GAAG,KAAK,CAAC;AAC5B,wBAAA,MAAM,iBAAiB,GACrB,wBAAwB,EAAS,CAAC;wBACpC,MAAM,GAAG,GAAG,iBAAiB,CAC3B,OAAO,CAAC,oBAAoB,CACV,CAAC;wBACrB,IAAI,CAAC,GAAG,EAAE;4BACR,MAAM,IAAI,KAAK,CACb,CAAA;;AAEiC,gDAAA,CAAA;AAC/B,gCAAA,CAAA,sBAAA,EAAyB,iBAAiB,EAAE,IAAI,CAAA,IAAA,EAAO,SAAgB,CAAA;;;AAG1E,cAAA,CAAA,CACA,CAAC;yBACH;wBACD,MAAM,kBAAkB,GAAG,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAGhE,wBAAA,OAAO,CAAC,GAAG,CAAC,oDAAoD,EAAE;4BAChE,iBAAiB;4BACjB,SAAS;AACV,yBAAA,CAAC,CAAC;qBAEJ;AACD,oBAAA,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;AACnC,iBAAC,CAAC;aACH;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;SAC5C;AACF,KAAA,CAAC,CAAC;AAEH,IAAA,OAAO,iBAAmD,CAAC;AAC7D,CAAC,CAAC;AAED,CAAC;AAAA,CAAC,EAAE,EAAE;;AC1GN,CAAC;AAAA,CAAC,EAAE,EAAE;;AC2BD,IAAW,KAsEhB;AAtED,CAAA,UAAiB,IAAI,EAAA;AAEL,IAAA,IAAA,CAAA,IAAI,GAAGC,IAAS,CAAC;AACjB,IAAA,IAAA,CAAA,IAAI,GAAGC,IAAS,CAAC;AAGlB,IAAA,IAAA,CAAA,gBAAgB,GAAGC,gBAA4B,CAAC;AAG/C,IAAA,IAAA,CAAA,UAAU,GAAGC,cAAkC,CAAC;AAChD,IAAA,IAAA,CAAA,MAAM,GAAGC,UAA0B,CAAC;AACpC,IAAA,IAAA,CAAA,QAAQ,GAAGC,YAA8B,CAAC;AAC1C,IAAA,IAAA,CAAA,UAAU,GAAGC,cAAkC,CAAC;AAChD,IAAA,IAAA,CAAA,UAAU,GAAGC,cAAkC,CAAC;AAG9D;;AAEG;AACU,IAAA,IAAA,CAAA,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;AACvD;;AAEG;AACU,IAAA,IAAA,CAAA,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AACjD;;AAEG;AACU,IAAA,IAAA,CAAA,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;AACrD;;AAEG;AACU,IAAA,IAAA,CAAA,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;AAE5C,IAAA,IAAA,CAAA,aAAa,GAAGC,aAA6B,CAAC;AAE9C,IAAA,IAAA,CAAA,MAAM,GAAGC,MAAe,CAAC;AAKzB,IAAA,IAAA,CAAA,UAAU,GAAG,CAAC,MAAc,KAAI;AAC3C,QAAAC,eAA+B,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACrD,KAAC,CAAC;AAGW,IAAA,IAAA,CAAA,OAAO,GAAGC,OAAkB,CAAC;AAE1C;;;AAGG;AACU,IAAA,IAAA,CAAA,IAAI,GAAG,OAAO,OAI1B,KAAI;QACH,MAAM,WAAW,GAAG,CAAC,MAAM,2DAAqC;AAC7D,aAAA,WAAW,CAAC;QACf,MAAM,OAAO,GAAG,IAAA,CAAA,aAAa,CAAC,OAAO;AACnC,YAAA,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,EAAE,WAAW,EAAE;AACzB,YAAA,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAQ;YAC7C,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAQ;AACpD,SAAA,CAAC,CAAC,CAAC;AAEJ,QAAA,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;AAC3B,QAAA,OAAO,OAAO,CAAC;AACjB,KAAC,CAAC;AACJ,CAAC,EAtEgB,IAAI,KAAJ,IAAI,GAsEpB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC5GP;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"taon.mjs","sources":["../../../tmp-libs-for-dist/taon/projects/taon/src/lib/symbols.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/validators.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/helpers/taon-helpers.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/helpers/class-helpers.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/models.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/http/http-methods-decorators.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/http/http-params-decorators.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/http/http-decorators.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/classes/controller-decorator.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-injector.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-controller.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-crud-controller.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-class.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-entity.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-abstract-entity.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/classes/repository-decorator.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-repository.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-provider.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/dependency-injection/di-container.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/get-response-value.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/env.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-subs-manager.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-client.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-server.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-ipc.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-socket-io.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-strategy/index.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/realtime/realtime-core.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/endpoint-context.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/storage.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/taon-admin.service.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/create-context.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-context.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/classes/subscriber-decorator.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-subscriber.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base-subscriber-for-entity.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/base-classes/base.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/classes/entity-decorator.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/decorators/classes/provider-decorator.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/inject.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/constants.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/lib/index.ts","../../../tmp-libs-for-dist/taon/projects/taon/src/taon.ts"],"sourcesContent":["\n\nimport { _ } from 'tnp-core/browser';\nimport { OrignalClassKey } from 'taon-typeorm/browser';\nimport { SYMBOL } from 'typescript-class-helpers/browser';\n\nexport namespace Symbols {\n export const ctxInClassOrClassObj = Symbol();\n export const classNameStaticProperty: string = SYMBOL.ClassNameStaticProperty;\n export const fullClassNameStaticProperty: string = `$$fullclassName$$`;\n export const orignalClass: string = OrignalClassKey;\n export const orignalClassClonesObj: string = `$$originalClassClonesObj$$`;\n export const classMethodsNames: string = `$$classMethodsNames$$`;\n\n export const REALTIME = {\n NAMESPACE: (contextName: string) => `${contextName}:taonRealtimeNsp`,\n TABLE_CHANGE(contextName: string, tableName: string) {\n return `${contextName}:listentablename${tableName}`;\n },\n /**\n * for backendSocket.in(ROOM_NAME).emit(EVENT)\n *\n * Room names are uniqe..\n * here I am limiting number of event for clients.\n */\n ROOM_NAME: {\n\n CUSTOM(contextName: string, customEvent: string) {\n return `${contextName}:roomcustomevnet${customEvent}`;\n },\n /**\n * @LAST TODO\n */\n SUBSCRIBER_EVENT(\n contextName: string,\n className: string,\n propertyName: string,\n ) {\n return `${contextName}:room${_.camelCase(className)}${propertyName}`.toLowerCase();\n },\n UPDATE_ENTITY(\n contextName: string,\n className: string,\n entityId: number | string,\n ) {\n return `${contextName}:room${_.camelCase(className)}${entityId}`.toLowerCase();\n },\n UPDATE_ENTITY_PROPERTY(\n contextName: string,\n className: string,\n property: string,\n entityId: number | string,\n ) {\n return `${contextName}:room${_.camelCase(className)}${_.camelCase(property)}${entityId}`.toLowerCase();\n },\n\n SUBSCRIBE: {\n CUSTOM: (contextName:string) => `${contextName}:roomSubscribeCustomRoomEvent`,\n ENTITY_UPDATE_EVENTS:(contextName:string) => `${contextName}:roomSubscribeEntityEvents`,\n ENTITY_PROPERTY_UPDATE_EVENTS:(contextName:string) => `${contextName}:roomSubscribeEntityPropertyEvents`,\n },\n UNSUBSCRIBE: {\n CUSTOM:(contextName:string) => `${contextName}:roomUnsubscribeCustomRoomEvent`,\n ENTITY_UPDATE_EVENTS:(contextName:string) => `${contextName}:roomUnsubscribeEntityEvents`,\n ENTITY_PROPERTY_UPDATE_EVENTS:(contextName:string) => `${contextName}:roomUnsubscribeEntityPropertyEvents`,\n },\n },\n };\n\n export const metadata = {\n className: `class:realname`,\n options: {\n runtimeController: `runtime:controller:options`,\n controller: `controller:options`,\n controllerMethod: `controller:method:options`,\n entity: `entity:options`,\n repository: `repository:options`,\n provider: `provider:options`,\n subscriber: `subscriber:options`,\n },\n };\n\n export const old = {\n HAS_TABLE_IN_DB: Symbol(),\n MDC_KEY: `modeldataconfig`,\n WEBSQL_REST_PROGRESS_FUN: Symbol(),\n WEBSQL_REST_PROGRESS_FUN_START: Symbol(),\n WEBSQL_REST_PROGRESS_FUN_DONE: Symbol(),\n WEBSQL_REST_PROGRESS_TIMEOUT: Symbol(),\n\n X_TOTAL_COUNT: `x-total-count`,\n CIRCURAL_OBJECTS_MAP_BODY: `circuralmapbody`,\n CIRCURAL_OBJECTS_MAP_QUERY_PARAM: `circuralmapbody`,\n MAPPING_CONFIG_HEADER: `mappingheader`,\n MAPPING_CONFIG_HEADER_BODY_PARAMS: `mhbodyparams`,\n MAPPING_CONFIG_HEADER_QUERY_PARAMS: `mhqueryparams`,\n ENDPOINT_META_CONFIG: `ng2_rest_endpoint_config`,\n CLASS_DECORATOR_CONTEXT: `$$ng2_rest_class_context`,\n SOCKET_MSG: `socketmessageng2rest`,\n ANGULAR: {\n INPUT_NAMES: Symbol(),\n },\n ERROR_MESSAGES: {\n CLASS_NAME_MATCH: `Please check if your \"class name\" matches @Controller( className ) or @Entity( className )`,\n },\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/symbols.ts","\n\nimport { _ } from 'tnp-core/browser';\nimport { Models } from './models';\n\nexport namespace Validators {\n\n export const classNameVlidation = (className, target: Function) => {\n setTimeout(() => {\n\n if (_.isUndefined(className)) {\n throw `[Taon]\n Please provide \"className\" property for each Controller and Entity:\n\n @Taon.Controller({ className: 'MyExampleCtrl' })\n class MyExampleCtrl {\n ...\n }\n\n @Taon.Entity({ className: 'MyExampleEntity' })\n class MyExampleEntity {\n ...\n }\n\n Notice that minified javascript code does not preserve\n Functions/Classes names -this is only solution to preserve classes names.\n\n `;\n }\n });\n\n return _.isUndefined(className) ? target.name : className;\n };\n\n\n\n export const checkIfMethodsWithReponseTYpeAlowed = (\n methods: Models.MethodConfig[],\n current: Models.MethodConfig,\n ) => {\n const defaultResponseType = 'text or JSON';\n if (!current.responseType) {\n return;\n }\n for (let index = 0; index < methods.length; index++) {\n const m = methods[index];\n if (m.path === current.path && m.responseType !== current.responseType) {\n throw new Error(`\n [taon] you can have 2 methods with same path but differetn reponseType-s\n\n ${m.methodName}( ... path: ${m.path} ) -> responseType: ${m.responseType || defaultResponseType}\n ${current.methodName}( ... path: ${current.path} ) -> responseType: ${current.responseType}\n\n Please change path name on of the methods.\n\n `);\n }\n }\n };\n\n\n\n\n export const validateClassFunctions = (\n controllers: any[],\n entities: any[],\n proviers: any[],\n repositories: any[],\n ) => {\n if (\n _.isArray(controllers) &&\n controllers.filter(f => !_.isFunction(f)).length > 0\n ) {\n console.error('controllers', controllers);\n throw `\n\n Incorect value for property \"controllers\" inside Taon.Init(...)\n\n `;\n }\n\n if (\n _.isArray(entities) &&\n entities.filter(f => !_.isFunction(f)).length > 0\n ) {\n console.error('entites', entities);\n throw `\n\n Incorect value for property \"entities\" inside Taon.Init(...)\n\n `;\n }\n };\n\n\n export const preventUndefinedModel = (model, id) => {\n if (_.isUndefined(model)) {\n throw `Bad update by id, config, id: ${id}`;\n }\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/validators.ts","\n\nimport { _ } from 'tnp-core/browser';\nimport * as JSON5 from 'json5';\nimport { Models } from '../models';\nimport { ClassHelpers } from './class-helpers';\n\nexport namespace TaonHelpers {\n\n export const fillUpTo = (s: string, nCharacters: number) => {\n return _.times(nCharacters, n => {\n if (s.charAt(n)) {\n return s.charAt(n);\n }\n return ' ';\n }).join('');\n };\n\n\n\n export const isGoodPath = (p: string) => {\n return p && typeof p === 'string' && p.trim() !== '';\n };\n\n\n\n export const tryTransformParam = param => {\n if (typeof param === 'string') {\n let n = Number(param);\n if (!isNaN(n)) return n;\n const bool = param.trim().toLowerCase();\n if (bool === 'true') {\n return true;\n }\n if (bool === 'false') {\n return false;\n }\n try {\n const t = JSON5.parse(param);\n return t;\n } catch (e) {\n return param;\n }\n }\n return param;\n };\n\n\n\n export const getExpressPath = (\n c: Models.RuntimeControllerConfig,\n pathOrClassConfig: Models.MethodConfig,\n ) => {\n if (typeof pathOrClassConfig === 'string')\n return `${c.calculatedPath}${pathOrClassConfig}`.replace(/\\/$/, '');\n return `${c.calculatedPath}${pathOrClassConfig.path}`.replace(/\\/$/, '');\n };\n\n\n\n export const defaultType = value => {\n if (typeof value === 'string') return '';\n if (typeof value === 'boolean') return false;\n if (Array.isArray(value)) return {};\n if (typeof value === 'object') return {};\n };\n\n\n\n export const parseJSONwithStringJSONs = (\n object: Object,\n waring = false,\n ): Object => {\n\n if (!_.isObject(object)) {\n if (waring) {\n console.error(\n `\n parseJSONwithStringJSONs(...)\n Parameter should be a object, but is ${typeof object}\n `,\n object,\n );\n }\n\n return object;\n }\n\n let res = _.cloneDeep(object);\n\n Object.keys(res).forEach(key => {\n let isJson = false;\n try {\n const possibleJSON = JSON.parse(res[key]);\n res[key] = possibleJSON;\n isJson = true;\n } catch (e) {\n isJson = false;\n }\n\n if (isJson) {\n res[key] = parseJSONwithStringJSONs(res[key], false);\n }\n });\n\n return res;\n };\n\n\n\n export const isPlainFileOrFolder = filePath => {\n return /^([a-zA-Z]|\\-|\\_|\\@|\\#|\\$|\\!|\\^|\\&|\\*|\\(|\\))+$/.test(filePath);\n };\n\n\n\n export const ipcKeyNameResponse = (\n target: Function,\n methodConfig: Models.MethodConfig,\n expressPath: string,\n ) => {\n return [\n 'response',\n ClassHelpers.getName(target),\n methodConfig.methodName,\n methodConfig.type,\n expressPath,\n ].join('--');\n };\n\n\n\n export const ipcKeyNameRequest = (\n target: Function,\n methodConfig: Models.MethodConfig,\n expressPath: string,\n ) => {\n return [\n 'request',\n ClassHelpers.getName(target),\n methodConfig.methodName,\n methodConfig.type,\n expressPath,\n ].join('--');\n };\n\n\n\n export const websqlMocks = headers => {\n const response: Express.Response = {\n status(status: any) {\n\n return {\n send(send: any) {\n\n },\n };\n },\n setHeader(key: string, value: any) {\n\n headers[key] = value;\n },\n };\n const request: Express.Request = {};\n return { request, response };\n };\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/helpers/taon-helpers.ts","\n\nimport { Symbols } from '../symbols';\nimport { Validators } from '../validators';\nimport { _ } from 'tnp-core/browser';\nimport { Models } from '../models';\nimport { TaonControllerOptions } from '../decorators/classes/controller-decorator';\nimport { TaonHelpers } from './taon-helpers';\nimport { TaonEntityOptions } from '../decorators/classes/entity-decorator';\nimport { CLASS } from 'typescript-class-helpers/browser';\n/* */\n/* */\n \n\nexport namespace ClassHelpers {\n\n /**\n * TODO - repalce in every place when getting class fn from object\n */\n export const getClassFnFromObject = (json: Object) => {\n if (_.isUndefined(json) || _.isNull(json)) {\n return;\n }\n if (json.constructor) {\n return json.constructor;\n }\n const p = Object.getPrototypeOf(json);\n return p && p.constructor && p.constructor.name !== 'Object'\n ? p.constructor\n : void 0;\n };\n\n\n\n export const getName = (classFnOrObject: any): string => {\n\n if (classFnOrObject instanceof FormData) {\n return 'FormData';\n }\n if (!classFnOrObject) {\n console.error('OBJECT OR CLASS', classFnOrObject);\n throw new Error(`Cannot get name from this object or class.`);\n }\n return (\n (classFnOrObject[Symbols.classNameStaticProperty]\n ? classFnOrObject[Symbols.classNameStaticProperty]\n : classFnOrObject?.constructor[Symbols.classNameStaticProperty]) ||\n CLASS.getName(classFnOrObject)\n );\n };\n\n\n export const getOrginalClass = (classFnOrObject: any): any => {\n const org = classFnOrObject[Symbols.orignalClass];\n if (!org) {\n return classFnOrObject;\n }\n return getOrginalClass(org);\n };\n\n\n export const getFullInternalName = (classFnOrObject: any): string => {\n\n\n if (!classFnOrObject) {\n throw new Error(`Cannot get name from: ${classFnOrObject}`);\n }\n return (\n (classFnOrObject[Symbols.fullClassNameStaticProperty]\n ? classFnOrObject[Symbols.fullClassNameStaticProperty]\n : classFnOrObject?.constructor[Symbols.fullClassNameStaticProperty]) ||\n void 0\n );\n };\n\n\n\n export const getUniquKey = (classFnOrObject: any): string => {\n const classFn = _.isFunction(classFnOrObject)\n ? classFnOrObject\n : classFnOrObject.constructor;\n const config = Reflect.getMetadata(\n Symbols.metadata.options.controller,\n classFn,\n ) as TaonEntityOptions;\n return config.uniqueKeyProp;\n };\n\n\n\n export const isContextClassObject = (obj: any): boolean => {\n if (\n !_.isObject(obj) ||\n _.isArray(obj) ||\n _.isRegExp(obj) ||\n _.isBuffer(obj) ||\n _.isArrayBuffer(obj)\n ) {\n return false;\n }\n if (_.isDate(obj)) {\n return true;\n }\n const className = getName(obj);\n return _.isString(className) && className !== 'Object';\n };\n\n\n\n\n export const setName = (target: Function, className: string): void => {\n\n Validators.classNameVlidation(className, target);\n target[Symbols.classNameStaticProperty] = className;\n };\n\n\n\n export const hasParentClassWithName = (\n target: Function,\n className: string,\n targets = [],\n ): boolean => {\n if (!target) {\n return false;\n }\n targets.push(target);\n let targetProto = Object.getPrototypeOf(target);\n\n if (\n _.isFunction(targetProto) &&\n ClassHelpers.getName(targetProto) === className\n ) {\n\n return true;\n }\n return hasParentClassWithName(targetProto, className, targets);\n };\n\n\n\n export const getControllerConfig = (\n target: Function,\n ): Models.ControllerConfig | undefined => {\n const classMetadataOptions: TaonControllerOptions = Reflect.getMetadata(\n Symbols.metadata.options.controller,\n target,\n );\n const classMetadata: Models.ControllerConfig = _.merge(\n new Models.ControllerConfig(),\n classMetadataOptions,\n );\n\n\n const methodNames = ClassHelpers.getMethodsNames(target); // Object.getOwnPropertyNames(target.prototype);\n\n for (const methodName of methodNames) {\n const methodMetadata: Models.MethodConfig = Reflect.getMetadata(\n Symbols.metadata.options.controllerMethod,\n target,\n methodName,\n );\n\n if (methodMetadata) {\n classMetadata.methods[methodName] = methodMetadata;\n }\n }\n return classMetadata;\n };\n\n\n\n\n\n const notAllowedAsMethodName = [\n 'length',\n 'name',\n 'arguments',\n 'caller',\n 'constructor',\n 'apply',\n 'bind',\n 'call',\n 'toString',\n '__defineGetter__',\n '__defineSetter__',\n 'hasOwnProperty',\n '__lookupGetter__',\n '__lookupSetter__',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'valueOf',\n '__proto__',\n 'toLocaleString',\n ];\n\n\n export const getMethodsNames = (\n classOrClassInstance: any,\n allMethodsNames = [],\n ): string[] => {\n if (!classOrClassInstance) {\n return allMethodsNames;\n }\n\n const isClassFunction = _.isFunction(classOrClassInstance);\n const classFun = isClassFunction\n ? classOrClassInstance\n : Object.getPrototypeOf(classOrClassInstance);\n const objectToCheck = isClassFunction\n ? (classOrClassInstance as Function)?.prototype\n : classOrClassInstance;\n const prototypeObj = Object.getPrototypeOf(objectToCheck || {});\n\n const properties = _.uniq([\n ...Object.getOwnPropertyNames(objectToCheck || {}),\n ...Object.getOwnPropertyNames(prototypeObj || {}),\n ...Object.keys(objectToCheck || {}),\n ...Object.keys(prototypeObj || {}),\n ]).filter(f => !!f && !notAllowedAsMethodName.includes(f));\n\n properties\n .filter(methodName => typeof objectToCheck[methodName] === 'function')\n .forEach(p => allMethodsNames.push(p));\n\n if (\n !classFun ||\n !classFun.constructor ||\n classFun?.constructor?.name === 'Object'\n ) {\n return allMethodsNames;\n }\n return getMethodsNames(Object.getPrototypeOf(classFun), allMethodsNames);\n };\n\n\n\n export const getControllerConfigs = (\n target: Function,\n configs: Models.ControllerConfig[] = [],\n callerTarget?: Function,\n ): Models.RuntimeControllerConfig[] => {\n if (!_.isFunction(target)) {\n throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;\n }\n\n let config: Models.RuntimeControllerConfig;\n const parentClass = Object.getPrototypeOf(target);\n const parentName = parentClass ? ClassHelpers.getName(parentClass) : void 0;\n const isValidParent = _.isFunction(parentClass) && parentName !== '';\n\n config = getControllerConfig(target);\n\n configs.push(config);\n\n return isValidParent\n ? getControllerConfigs(parentClass, configs, target)\n : configs;\n };\n\n\n\n export const getCalculatedPathFor = (target: Function) => {\n const configs = getControllerConfigs(target);\n\n const parentscalculatedPath = _.slice(configs, 1)\n .reverse()\n .map(bc => {\n if (TaonHelpers.isGoodPath(bc.path)) {\n return bc.path;\n }\n return bc.className;\n })\n .join('/');\n\n return `/${parentscalculatedPath}/${ClassHelpers.getName(target)}`;\n };\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/helpers/class-helpers.ts","\n\nimport { CoreModels } from 'tnp-core/browser';\nimport { Response, RequestHandler } from 'express';\nimport { Response as ExpressResponse, Request as ExpressRequest, } from 'express';/* */\n/* */\n/* */\n\nimport { Models as ModelsNg2Rest } from 'ng2-rest/browser';\nimport { ClassHelpers } from './helpers/class-helpers';\nimport type { TaonControllerOptions } from './decorators/classes/controller-decorator';\nimport type { TaonEntityOptions } from './decorators/classes/entity-decorator';\n\nexport namespace Models {\n export type FrameworkMode =\n | 'backend-frontend(tcp+udp)'\n | 'remote-backend(tcp+udp)'\n | 'backend-frontend(ipc-electron)'\n | 'backend-frontend(websql)';\n\n\n export enum ClassType {\n ENTITY = 'ENTITY',\n CONTROLLER = 'CONTROLLER',\n REPOSITORY = 'REPOSITORY',\n PROVIDER = 'PROVIDER',\n SUBSCRIBER = 'SUBSCRIBER',\n }\n\n export const ClassTypeKey = {\n [ClassType.ENTITY]: 'entities',\n [ClassType.CONTROLLER]: 'controllers',\n [ClassType.REPOSITORY]: 'repositories',\n [ClassType.PROVIDER]: 'providers',\n [ClassType.SUBSCRIBER]: 'subscribers',\n } as {\n [key in ClassType]: keyof ContextOptions<any, any, any, any, any, any>;\n };\n\n\n\n\n export type MiddlewareType = [Function, any[]];\n\n\n\n export interface DatabaseConfig {\n /**\n * database name\n */\n database?: string;\n /**\n * only for file base db: sqlite, sqljs\n */\n location?: string;\n synchronize: boolean;\n dropSchema: boolean;\n type?: CoreModels.DatabaseType;\n\n autoSave: boolean; // TODO what is this ?\n /**\n * for websql db mode\n */\n useLocalForage?: boolean;\n logging: boolean;\n\n databasePort?: number;\n databaseHost?: string;\n databaseUsername?: string;\n databasePassword?: string;\n }\n\n\n\n\n export type ISession = {\n secret?: string;\n saveUninitialized?: boolean;\n /**\n * max age of session\n */\n cookieMaxAge?: number;\n secure?: boolean;\n resave?: boolean;\n };\n\n\n\n export type ContectionOptionsLogs = {\n http: boolean;\n realtime: boolean;\n framework: boolean;\n db: boolean;\n };\n export interface ContextOptions<\n CONTEXTS,\n CONTROLLERS,\n ENTITIES,\n REPOSITORIES,\n PROVIDERS,\n SUBSCRIBERS,\n > {\n contextName: string;\n host?: string;\n /**\n * frontend host only needed when we are using\n * withCredentials for axios\n * and session cookie\n */\n frontendHost?: string;\n remoteHost?: string;\n useIpcWhenElectron?: boolean;\n contexts?: CONTEXTS;\n controllers?: CONTROLLERS;\n entities?: ENTITIES;\n repositories?: REPOSITORIES;\n providers?: PROVIDERS;\n subscribers?: SUBSCRIBERS;\n session?: ISession;\n productionMode?: boolean;\n abstract?: boolean;\n logs?: boolean | ContectionOptionsLogs;\n database?: boolean | DatabaseConfig;\n disabledRealtime?: boolean;\n https?: {\n key: string;\n cert: string;\n };\n publicAssets?: { serverPath: string; locationOnDisk: string }[];\n middlewares?: MiddlewareType[];\n /**\n * @deprecated\n * only for debugging purpose\n */\n override?: {\n entities?: Function[];\n controllers?: Function[];\n repositories?: Function[];\n providers?: Function[];\n subscribers?: Function[];\n };\n }\n\n\n\n export class DecoratorAbstractOpt {\n className: string;\n }\n\n\n\n export class ParamConfig {\n paramName: string;\n paramType: CoreModels.ParamType;\n index: number;\n defaultType: any;\n expireInSeconds?: number;\n }\n\n\n\n export class MethodConfig {\n methodName: string;\n /**\n * path is global in express app\n */\n global?: boolean;\n /**\n * override default content type\n */\n contentType?: any;\n /**\n * override default axiso response type\n */\n responseType?: any;\n path: string;\n descriptor: PropertyDescriptor;\n type: CoreModels.HttpMethod;\n/* */\n/* */\n \n parameters: { [paramName: string]: ParamConfig } = {};\n }\n\n\n\n export class ControllerConfig extends DecoratorAbstractOpt {\n realtime?: boolean;\n path: string;\n uniqueKey?: string;\n methods: { [methodName: string]: MethodConfig } = {};\n }\n\n\n\n export class RuntimeControllerConfig extends ControllerConfig {\n calculatedPath?: string;\n browserTransformFn?: (entity: any) => any;\n }\n\n\n\n export namespace Http {\n export import Rest = ModelsNg2Rest;\n\n export type ContextENDPOINT = { target: Function; initFN: Function };\n\n export type FormlyFromType = 'material' | 'bootstrap';\n\n export type ExpressContext<T> = (\n req: ExpressRequest,\n res: ExpressResponse,\n ) => T;\n\n export type SyncResponse<T> = string | T;\n\n export type ResponseFuncOpt<T> = {\n limitSize?: (\n enties: Function | Function[],\n include: string[],\n exclude: string[],\n ) => void;\n };\n\n export type SyncResponseFunc<T> = (\n options?: ResponseFuncOpt<T>,\n ) => SyncResponse<T>;\n export type MixResponse<T> = SyncResponse<T> | ExpressContext<T>;\n\n export interface ClientAction<T> {\n received?: Rest.PromiseObservableMix<Rest.HttpResponse<T>>;\n }\n\n export interface __Response<T> {\n/* */\n/* */\n \n }\n\n export interface AsyncResponse<T> {\n (\n req?: ExpressRequest,\n res?: ExpressResponse,\n ): Promise<SyncResponse<T> | SyncResponseFunc<T>>;\n }\n\n export type Response<T = string> = (__Response<T> | AsyncResponse<T>) &\n ClientAction<T> &\n __Response<T>;\n\n export class Errors {\n public toString = (): string => {\n return this.message;\n };\n\n private constructor(\n public message: string,\n private code: ModelsNg2Rest.HttpCode = 400,\n ) {}\n\n private static create(\n message: string,\n code: ModelsNg2Rest.HttpCode = 400,\n ) {\n return new Errors(message, code);\n }\n\n public static entityNotFound(entity?: Function) {\n return Errors.create(\n `Entity ${ClassHelpers.getName(entity)} not found`,\n );\n }\n\n public static custom(\n message: string,\n code: ModelsNg2Rest.HttpCode = 400,\n ) {\n return Errors.create(message, code);\n }\n }\n\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/models.ts","\n\nimport { CoreModels, _ } from 'tnp-core/browser';\nimport { Models } from '../../models';\nimport { Symbols } from '../../symbols';\nimport { Models as ModelsNg2Rest } from 'ng2-rest/browser';\nconst metaReq = (\n method: Models.Http.Rest.HttpMethod,\n path: string,\n target: Function,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n pathOrOptions: string | TaonHttpDecoratorOptions,\n pathIsGlobal: boolean,\n) => {\n let options: TaonHttpDecoratorOptions;\n if (typeof pathOrOptions === 'object') {\n options = pathOrOptions;\n pathOrOptions = options.path as any;\n pathIsGlobal = !!options.pathIsGlobal;\n path = options.path;\n } else {\n options = { pathOrOptions, pathIsGlobal } as any;\n }\n\n const { overrideContentType, overridResponseType } = options;\n\n let methodConfig: Models.MethodConfig = Reflect.getMetadata(\n Symbols.metadata.options.controllerMethod,\n target.constructor,\n propertyKey,\n );\n if (!methodConfig) {\n methodConfig = new Models.MethodConfig();\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n }\n\n methodConfig.methodName = propertyKey;\n methodConfig.type = method;\n if (!path) {\n let paramsPathConcatedPath = '';\n for (const key in methodConfig.parameters) {\n if (methodConfig.parameters.hasOwnProperty(key)) {\n const element = methodConfig.parameters[key];\n if (\n element.paramType === 'Path' &&\n _.isString(element.paramName) &&\n element.paramName.trim().length > 0\n ) {\n paramsPathConcatedPath += `/${element.paramName}/:${element.paramName}`;\n }\n }\n }\n methodConfig.path = `/${propertyKey}${paramsPathConcatedPath}`;\n } else {\n methodConfig.path = path;\n }\n\n methodConfig.descriptor = descriptor;\n methodConfig.global = pathIsGlobal;\n methodConfig.contentType = overrideContentType;\n methodConfig.responseType = overridResponseType;\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n\n};\n\nexport interface TaonHttpDecoratorOptions {\n path?: string;\n pathIsGlobal?: boolean;\n overrideContentType?: CoreModels.ContentType;\n overridResponseType?: ModelsNg2Rest.ResponseTypeAxios;\n}\n\nexport function GET(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'get',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function HEAD(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'head',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function POST(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'post',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function PUT(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'put',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function PATCH(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'patch',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function DELETE(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'delete',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/http/http-methods-decorators.ts","\n\nimport { Models } from '../../models';\nimport { Symbols } from '../../symbols';\n\nfunction metaParam(\n param: Models.Http.Rest.ParamType,\n name: string,\n expire: number,\n defaultValue = undefined,\n target: Function,\n propertyKey: string | symbol,\n parameterIndex: number,\n) {\n let methodConfig: Models.MethodConfig = Reflect.getMetadata(\n Symbols.metadata.options.controllerMethod,\n target.constructor,\n propertyKey,\n );\n if (!methodConfig) {\n methodConfig = new Models.MethodConfig();\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n }\n\n const nameKey = name ? name : param;\n const p = (methodConfig.parameters[nameKey] = !methodConfig.parameters[\n nameKey\n ]\n ? new Models.ParamConfig()\n : methodConfig.parameters[nameKey]);\n p.index = parameterIndex;\n p.paramName = name;\n p.paramType = param;\n p.defaultType = defaultValue;\n p.expireInSeconds = expire;\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n\n}\n\nexport function Path(name: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam('Path', name, undefined, {}, target, propertyKey, parameterIndex);\n };\n}\n\nexport function Query(name?: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam(\n 'Query',\n name,\n undefined,\n {},\n target,\n propertyKey,\n parameterIndex,\n );\n };\n}\n\nexport function Cookie(name: string, expireInSecond: number = 3600) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam(\n 'Cookie',\n name,\n expireInSecond,\n {},\n target,\n propertyKey,\n parameterIndex,\n );\n };\n}\n\nexport function Header(name?: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam(\n 'Header',\n name,\n undefined,\n {},\n target,\n propertyKey,\n parameterIndex,\n );\n };\n}\n\nexport function Body(name?: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam('Body', name, undefined, {}, target, propertyKey, parameterIndex);\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/http/http-params-decorators.ts","\n\nimport * as methods from './http-methods-decorators';\nimport * as params from './http-params-decorators';\n\nexport namespace Http {\n export import GET = methods.GET;\n export import POST = methods.POST;\n export import PUT = methods.PUT;\n export import DELETE = methods.DELETE;\n export import PATCH = methods.PATCH;\n export import HEAD = methods.HEAD;\n export namespace Param {\n export import Query = params.Query;\n export import Path = params.Path;\n export import Body = params.Body;\n export import Cookie = params.Cookie;\n export import Header = params.Header;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/http/http-decorators.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\n\nexport function TaonController(options?: TaonControllerOptions) {\n return function (constructor: Function) {\n ClassHelpers.setName(constructor, options?.className);\n Reflect.defineMetadata(\n Symbols.metadata.options.controller,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n };\n}\n\nexport class TaonControllerOptions extends Models.DecoratorAbstractOpt {\n /**\n * typeorm realtime subscribtion // TODO disabled for now, does not make sense ?s\n */\n realtime?: boolean;\n /**\n * override default path for controller api\n */\n path?: string;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/controller-decorator.ts","\n\n\nimport { Helpers, _ } from 'tnp-core/browser';\nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseRepository } from './base-repository';\nimport { BaseClass } from './base-class';\n\n\nexport class BaseInjector<CloneT extends BaseClass = any> {\n /**\n * for proxy purposes\n */\n getOriginalPrototype: () => any;\n /**\n * for proxy purposes\n */\n getOriginalConstructor: () => any;\n\n\n /**\n * class initialization hook\n * taon after class instace creation\n */\n async _() {\n const reposToInit = this.__repositories_to_init__;\n for (const repo of reposToInit) {\n await repo.__init(this);\n }\n }\n\n\n\n /**\n * Current endpoint context\n */\n get __endpoint_context__() {\n return this[Symbols.ctxInClassOrClassObj] as EndpointContext;\n }\n\n\n\n\n\n /**\n * inject crud repo for entity\n */\n injectRepo<T>(entityForCrud: new (...args: any[]) => T): BaseRepository<T> {\n const repoProxy = this.__inject(void 0, {\n localInstance: true,\n resolveClassFromContext: 'BaseRepository',\n locaInstanceConstructorArgs: [() => entityForCrud],\n });\n this.__repositories_to_init__.push(repoProxy as any);\n return repoProxy as any;\n }\n\n\n\n injectCustomRepository<T>(\n cutomRepositoryClass: new (...args: any[]) => T,\n ): T {\n const repoProxy = this.__inject<T>(cutomRepositoryClass, {\n localInstance: true,\n locaInstanceConstructorArgs: [\n () => cutomRepositoryClass.prototype.entityClassResolveFn(),\n ],\n });\n this.__repositories_to_init__.push(repoProxy as any);\n return repoProxy;\n }\n\n\n\n /**\n * aliast to .injectRepository()\n */\n injectCustomRepo<T>(cutomRepositoryClass: new (...args: any[]) => T): T {\n const repoProxy = this.injectCustomRepository<T>(cutomRepositoryClass);\n this.__repositories_to_init__.push(repoProxy as any);\n return repoProxy;\n }\n\n\n\n injectController<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n\n\n /**\n * aliast to .injectController()\n */\n injectSubscriber<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n\n /**\n * aliast to .injectController()\n */\n injectCtrl<T>(ctor: new (...args: any[]) => T): T {\n return this.injectController<T>(ctor);\n }\n\n\n\n /**\n * global provider available in every context\n */\n injectGlobalProvider<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n\n /**\n * context scoped provider\n * TODO\n */\n injectContextProvider<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n /**\n * Repositories to init (by controller)\n */\n protected __repositories_to_init__ = [] as BaseRepository<any>[];\n\n\n /**\n * Inject: Controllers, Providers, Repositories, Services, etc.\n * TODO addd nest js injecting\n */\n private __inject<T>(\n ctor: new (...args: any[]) => T,\n options?: {\n /**\n * (repositories are ONLY/ALWAYS local instances)\n * If true, then local instance will be created\n * controllers, providers can be local or global\n */\n localInstance: boolean;\n resolveClassFromContext?: string;\n locaInstanceConstructorArgs?: ConstructorParameters<typeof ctor>;\n },\n ): T {\n if (!options) {\n options = {} as any;\n }\n\n const contextClassInstance = this;\n return new Proxy(\n {},\n {\n get: (__, propName) => {\n const contextFromClass: EndpointContext =\n ctor && ctor[Symbols.ctxInClassOrClassObj];\n\n const resultContext: EndpointContext = contextFromClass\n ? contextFromClass\n : this.__endpoint_context__;\n\n if (options.resolveClassFromContext) {\n const resolvedClass = resultContext.getClassFunByClassName(\n options.resolveClassFromContext,\n );\n ctor = resolvedClass as any;\n }\n\n if (resultContext) {\n var instance: T = resultContext.inject(ctor, {\n ...options,\n contextClassInstance,\n });\n if (!instance) {\n throw new Error(\n `Not able to inject \"${\n ClassHelpers.getName(ctor) || ctor.name\n }\" inside ` +\n `property \"${propName?.toString()}\" on class \"${ClassHelpers.getName(\n this,\n )}\".\n\n Please add \"${\n ClassHelpers.getName(ctor) || ctor.name\n }\" to (entites or contorllers or providers or repositories)\n\n `,\n );\n }\n\n const result =\n typeof instance[propName] === 'function'\n ? instance[propName].bind(instance)\n : instance[propName];\n\n\n return result;\n }\n\n\n\n },\n set: (__, propName, value) => {\n const contextFromClass = ctor && ctor[Symbols.ctxInClassOrClassObj];\n const resultContext: EndpointContext = contextFromClass\n ? contextFromClass\n : this.__endpoint_context__;\n\n if (options.resolveClassFromContext) {\n const resolvedClass = resultContext.getClassFunByClassName(\n options.resolveClassFromContext,\n );\n ctor = resolvedClass as any;\n }\n\n if (resultContext) {\n var instance: T = resultContext.inject(ctor, {\n ...options,\n contextClassInstance,\n });\n if (!instance) {\n const classNameNotResolved =\n ClassHelpers.getName(ctor) || ctor.name;\n throw new Error(\n `Not able to inject \"${classNameNotResolved}\" inside ` +\n `property \"${propName?.toString()}\" on class \"${ClassHelpers.getName(\n this,\n )}\".\n\n Please add \"${\n ClassHelpers.getName(ctor) || ctor.name\n }\" to (entites or contorllers or providers or repositories)\n\n `,\n );\n }\n instance[propName] = value;\n }\n return true;\n },\n },\n ) as T;\n }\n\n\n\n\n\n public clone(override: Partial<CloneT>): CloneT {\n const classFn = ClassHelpers.getClassFnFromObject(this);\n const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));\n\n return result;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-injector.ts","\n\nimport { TaonController } from '../decorators/classes/controller-decorator';\nimport { BaseInjector } from './base-injector';\n\n@TaonController({ className: 'BaseController' })\nexport class BaseController extends BaseInjector {\n /**\n * init example data for db\n */\n initExampleDbData(): Promise<any> {\n return void 0;\n }\n\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-controller.ts","\n\n\nimport { Symbols } from '../symbols';\nimport { BaseController } from './base-controller';\nimport { BaseRepository } from './base-repository';\nimport { GET, PUT, DELETE, POST, HEAD, PATCH, } from '../decorators/http/http-methods-decorators';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Query, Path, Body } from '../decorators/http/http-params-decorators';\nimport { MySqlQuerySource } from 'taon-type-sql/browser';\nimport { Models } from '../models';\nimport { Helpers, _ } from 'tnp-core/browser';\nimport { TaonController, TaonControllerOptions, } from '../decorators/classes/controller-decorator';/* */\n/* */\n/* */\n\nimport { ClassHelpers } from '../helpers/class-helpers';\n\nimport { Validators } from '../validators';\nimport { TaonEntityOptions } from '../decorators/classes/entity-decorator';\n\n\n/**\n * Please override property entityClassFn with entity class.\n */\n@TaonController({ className: 'BaseCrudController' })\nexport abstract class BaseCrudController<Entity> extends BaseController {\n\n protected db?: BaseRepository<Entity>;\n\n /**\n * Please provide entity as class propery entityClassFn:\n * @returns class function\n *\n */\n abstract entityClassResolveFn: () => any;\n\n\n\n async _() {\n if (!_.isFunction(this.entityClassResolveFn)) {\n Helpers.warn(\n `Skipping initing CRUD controller ${ClassHelpers.getName(\n this,\n )} because entityClassResolveFn is not provided.`,\n );\n return;\n }\n\n let entityClassFn = this.entityClassResolveFn();\n this.db = this.injectRepo(entityClassFn);\n\n if (entityClassFn) {\n const configEntity = Reflect.getMetadata(\n Symbols.metadata.options.entity,\n ClassHelpers.getClassFnFromObject(this),\n ) as TaonEntityOptions;\n if (configEntity?.createTable === false) {\n Helpers.warn(\n `Table for entity ${ClassHelpers.getName(\n entityClassFn,\n )} will not be created. Crud will not work properly.`,\n );\n }\n } else {\n Helpers.error(`Entity class not provided for controller ${ClassHelpers.getName(\n this,\n )}.\n\n Please provide entity as class propery entityClassFn:\n\n class ${ClassHelpers.getName(this)} extends BaseCrudController<Entity> {\n\n entityClassResolveFn = ()=> MyEntityClass;\n\n }\n\n `);\n }\n await super._();\n }\n\n\n\n @GET(`/:id/property/:property`)\n bufforedChanges(\n @Path(`id`) id: number | string,\n @Path(`property`) property: string,\n @Query('alreadyLength') alreadyLength?: number,\n ): Models.Http.Response<string | any[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @GET()\n pagination(\n @Query('pageNumber') pageNumber: number = 1,\n @Query('pageSize') pageSize: number = 10,\n @Query('search') search: string = '',\n ): Models.Http.Response<Entity[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @GET()\n getAll(): Models.Http.Response<Entity[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @GET(`/:id`)\n getBy(@Path(`id`) id: number | string): Models.Http.Response<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @PUT(`/:id`)\n updateById(\n @Path(`id`) id: number | string,\n @Body() item: Entity,\n ): Models.Http.Response<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @PATCH(`/:id`)\n patchById(\n @Path(`id`) id: number | string,\n @Body() item: Entity,\n ): Models.Http.Response<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @PUT()\n bulkUpdate(@Body() items: Entity[]): Models.Http.Response<Entity[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @DELETE(`/:id`)\n deleteById(@Path(`id`) id: number): Models.Http.Response<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @DELETE(`/bulkDelete/:ids`)\n bulkDelete(\n @Path(`ids`) ids: (number | string)[],\n ): Models.Http.Response<(number | string | Entity)[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @POST()\n create(@Body() item: Entity): Models.Http.Response<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n @POST()\n bulkCreate(@Body() items: Entity): Models.Http.Response<Entity[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-crud-controller.ts","\n\n\nimport { Helpers, _ } from 'tnp-core/browser';\nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseRepository } from './base-repository';\n\nimport { inject } from '@angular/core';\n\n\n\nexport class BaseClass<CloneT extends BaseClass = any> {\n\n /**\n * class initialization hook\n * taon after class instace creation\n */\n async _() {}\n\n\n\n public clone(override: Partial<CloneT>): CloneT {\n const classFn = ClassHelpers.getClassFnFromObject(this);\n const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));\n\n return result;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-class.ts","\n\n/* */\n/* */\n \nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { BaseClass } from './base-class';\n\nlet EntityDecorator = () => {\n return (target: any) => {};\n};\n\n/* */\n/* */\n \n\n@EntityDecorator()\nexport abstract class BaseEntity<\n /**\n * type for cloning\n */\n CloneT extends BaseClass = any,\n> extends BaseClass<CloneT> {}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-entity.ts","\n\n/* */\n/* */\n \nimport { Orm } from '../orm';\nimport { BaseEntity } from './base-entity';\nimport type { BaseClass } from './base-class';\n\n\nlet EntityDecorator = () => {\n return (target: any) => {};\n};\n\n/* */\n/* */\n \n\n@EntityDecorator()\nexport abstract class BaseAbstractEntity<\n CloneT extends BaseClass = any,\n> extends BaseEntity<CloneT> {\n/* */\n/* */\n \n id: string;\n\n/* */\n/* */\n \n version: number;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-abstract-entity.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\nimport { Repository as TypeormRepository, EntityRepository, } from 'taon-typeorm/browser';/* */\n/* */\n/* */\n\nimport { _ } from 'tnp-core/browser';\n\nexport function TaonRepository(options: TaonRepositoryOptions) {\n return function (constructor: Function) {\n Reflect.defineMetadata(\n Symbols.metadata.options.repository,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n ClassHelpers.setName(constructor, options?.className);\n };\n}\n\nexport class TaonRepositoryOptions<\n T = any,\n> extends Models.DecoratorAbstractOpt {}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/repository-decorator.ts","\n\n\nimport type {\n DataSource,\n DeepPartial,\n DeleteResult,\n FindManyOptions,\n FindOneOptions,\n FindOptionsWhere,\n InsertResult,\n\n RemoveOptions,\n Repository,\n SaveOptions,\n UpdateResult,\n} from 'taon-typeorm';\n\nimport type { QueryDeepPartialEntity } from 'taon-typeorm/lib/typeorm/query-builder/QueryPartialEntity';\n\nimport type { UpsertOptions } from 'taon-typeorm/lib/typeorm/repository/UpsertOptions';\n\n\n\nimport type { DataSource as DataSourceType } from 'taon-typeorm/browser';\nimport { EndpointContext } from '../endpoint-context';\nimport { Helpers } from 'tnp-core/browser';\nimport { _ } from 'tnp-core/browser';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport { MySqlQuerySource } from 'taon-type-sql/browser';\nimport { TaonRepository } from '../decorators/classes/repository-decorator';\nimport { BaseInjector } from './base-injector';\n\n\nconst INDEX_KEYS_NO_FOR_UPDATE = ['id'];\n\n@TaonRepository({ className: 'BaseRepository' })\nexport abstract class BaseRepository<\n Entity extends { id?: any },\n> extends BaseInjector {\n\n\n\n\n\n\n abstract entityClassResolveFn: () => any;\n constructor(\n\n private __entityClassResolveFn: () => any,\n ) {\n super();\n // @ts-ignore\n this.entityClassResolveFn = __entityClassResolveFn;\n }\n\n\n\n private __dbQuery: MySqlQuerySource;\n\n public get dbQuery(): MySqlQuerySource {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n public get connection(): DataSourceType {\n/* */\n/* */\n return (void 0);\n }\n\n\n\n/* */\n/* */\n \n protected get repository() {\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * target for repository\n */\n public get target(): Function {\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * alias to repository\n */\n protected get repo() {\n/* */\n/* */\n return (void 0);\n }\n\n public get repositoryExists(): boolean {\n/* */\n/* */\n return (void 0);\n }\n\n\n\n\n\n async __init(context?: any) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n /**\n * Checks if entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n hasId(entity: Entity): boolean {\n return this.repo.hasId(entity);\n }\n\n\n\n /**\n * Gets entity mixed id.\n */\n getId(entity: Entity): any {\n return this.repo.getId(entity);\n }\n\n\n\n /**\n Saves a given entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n async save(\n item: Entity,\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * alias to save\n * -> it will actuall create new entity in db\n * in oposite to typeorm create method\n */\n async create(\n item: Entity,\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity> {\n return this.save(item, options);\n }\n\n async bulkSave(\n items: Entity[],\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n async bulkCreate(\n items: Entity[],\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity[]> {\n return this.bulkSave(items, options);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Saves all given entities in the database.\n * If entities do not exist in the database then inserts, otherwise updates.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Merges multiple entities (or entity-like objects) into a given entity.\n */\n merge(mergeIntoEntity: Entity, ...entityLikes: Entity[]): Entity {\n return this.repo.merge(mergeIntoEntity, ...entityLikes);\n }\n\n\n\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n *\n * Note that given entity-like object must have an entity id / primary key to find entity by.\n * Returns undefined if entity with given id was not found.\n */\n preload(entityLike: Entity): Promise<Entity | undefined> {\n return this.repo.preload(entityLike);\n }\n\n\n\n\n /**\n * Removes a given entities from the database.\n */\n async remove(idOrEntity: number | string | Entity): Promise<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * alias to remove\n */\n async delete(idOrEntity: number | string | Entity): Promise<Entity> {\n return this.remove(idOrEntity);\n }\n\n /**\n * alias to removeById\n */\n async deleteById(id: number | string): Promise<Entity> {\n return this.remove(id);\n }\n async bulkRemove(\n idsOrEntities: (number | string | Entity)[],\n ): Promise<Entity[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n async bulkDelete(ids: (number | string | Entity)[]): Promise<Entity[]> {\n return this.bulkRemove(ids);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Records the delete date of all given entities.\n */\n softRemove<T extends Entity>(\n entities: T[],\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T[]>;\n /**\n * Records the delete date of all given entities.\n */\n softRemove<T extends Entity>(\n entities: T[],\n options?: SaveOptions,\n ): Promise<(T & Entity)[]>;\n /**\n * Records the delete date of a given entity.\n */\n softRemove<T extends Entity>(\n entity: T,\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T>;\n /**\n * Records the delete date of a given entity.\n */\n softRemove<T extends Entity>(\n entity: T,\n options?: SaveOptions,\n ): Promise<T & Entity> {\n return this.repo.softRemove(entity, options);\n }\n\n\n\n /**\n * Recovers all given entities in the database.\n */\n recover<T extends Entity>(\n entities: T[],\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T[]>;\n /**\n * Recovers all given entities in the database.\n */\n recover<T extends Entity>(\n entities: T[],\n options?: SaveOptions,\n ): Promise<(T & Entity)[]>;\n /**\n * Recovers a given entity in the database.\n */\n recover<T extends Entity>(\n entity: T,\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T>;\n /**\n * Recovers a given entity in the database.\n */\n recover<T extends Entity>(\n entity: T,\n options?: SaveOptions,\n ): Promise<T & Entity> {\n return this.repo.recover(entity, options);\n }\n\n\n\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n */\n insert(\n entity: QueryDeepPartialEntity<Entity> | QueryDeepPartialEntity<Entity>[],\n ): Promise<InsertResult> {\n return this.repo.insert(entity);\n }\n\n\n\n async update(item: Entity) {\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n async updateById(id: number | string, item: Entity) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n async bulkUpdate(items: Entity[]) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Inserts a given entity into the database, unless a unique constraint conflicts then updates the entity\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT ... ON CONFLICT DO UPDATE/ON DUPLICATE KEY UPDATE query.\n */\n upsert(\n entityOrEntities:\n | QueryDeepPartialEntity<Entity>\n | QueryDeepPartialEntity<Entity>[],\n conflictPathsOrOptions: string[] | UpsertOptions<Entity>,\n ): Promise<InsertResult> {\n return this.repo.upsert(entityOrEntities, conflictPathsOrOptions);\n }\n\n\n\n /**\n * Records the delete date of entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n softDelete(\n criteria:\n | string\n | string[]\n | number\n | number[]\n | Date\n | Date[]\n\n\n | FindOptionsWhere<Entity>,\n ): Promise<UpdateResult> {\n return this.repo.softDelete(criteria);\n }\n\n\n\n /**\n * Restores entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n restore(\n criteria:\n | string\n | string[]\n | number\n | number[]\n | Date\n | Date[]\n\n\n | FindOptionsWhere<Entity>,\n ): Promise<UpdateResult> {\n return this.repo.restore(criteria);\n }\n\n\n\n /**\n * Counts entities that match given options.\n * Useful for pagination.\n */\n count(options?: FindManyOptions<Entity>): Promise<number> {\n return this.repo.count(options);\n }\n\n\n\n /**\n * Counts entities that match given conditions.\n * Useful for pagination.\n */\n countBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<number> {\n return this.repo.countBy(where);\n }\n\n\n\n /**\n * Finds entities that match given find options.\n */\n find(options?: FindManyOptions<Entity>): Promise<Entity[]> {\n return this.repo.find(options);\n }\n\n\n\n /**\n * Finds entities that match given find options.\n */\n findBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<Entity[]> {\n return this.repo.findBy(where);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n //\n /**\n * Finds entities that match given find options.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCount(options?: FindManyOptions<Entity>): Promise<[Entity[], number]> {\n return this.repo.findAndCount(options);\n }\n\n\n\n /**\n * Finds entities that match given WHERE conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCountBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<[Entity[], number]> {\n return this.repo.findAndCountBy(where);\n }\n\n\n\n /**\n * Finds entities with ids.\n * Optionally find options or conditions can be applied.\n *\n * @deprecated use `findBy` method instead in conjunction with `In` operator, for example:\n *\n * .findBy({\n * id: In([1, 2, 3])\n * })\n */\n findByIds(ids: any[]): Promise<Entity[]> {\n return this.repo.findByIds(ids);\n }\n\n\n\n /**\n * Finds first entity by a given find options.\n * If entity was not found in the database - returns null.\n */\n findOne(options: FindOneOptions<Entity>): Promise<Entity | null> {\n return this.repo.findOne(options);\n }\n\n\n\n /**\n * Finds first entity that matches given where condition.\n * If entity was not found in the database - returns null.\n */\n findOneBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<Entity | null> {\n return this.repo.findOneBy(where);\n }\n\n\n\n /**\n * Finds first entity that matches given id.\n * If entity was not found in the database - returns null.\n *\n * @deprecated use `findOneBy` method instead in conjunction with `In` operator, for example:\n *\n * .findOneBy({\n * id: 1 // where \"id\" is your primary column name\n * })\n */\n findOneById(\n id: number | string | Date,\n\n ): Promise<Entity | null> {\n return this.repo.findOneById(id);\n }\n\n\n\n /**\n * Finds first entity by a given find options.\n * If entity was not found in the database - rejects with error.\n */\n findOneOrFail(options: FindOneOptions<Entity>): Promise<Entity> {\n return this.repo.findOneOrFail(options);\n }\n\n\n\n /**\n * Finds first entity that matches given where condition.\n * If entity was not found in the database - rejects with error.\n */\n findOneByOrFail(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<Entity> {\n return this.repo.findOneByOrFail(where);\n }\n\n\n\n /**\n * Executes a raw SQL query and returns a raw database results.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n */\n query(query: string, parameters?: any[]): Promise<any> {\n return this.repo.query(query, parameters);\n }\n\n\n\n /**\n * Clears all the data from the given table/collection (truncates/drops it).\n *\n * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.\n * @see https://stackoverflow.com/a/5972738/925151\n */\n clear(): Promise<void> {\n return this.repo.clear();\n }\n\n\n\n /**\n * Increments some column by provided value of the entities matched given conditions.\n */\n increment(\n conditions: FindOptionsWhere<Entity>,\n propertyPath: string,\n value: number | string,\n ): Promise<UpdateResult> {\n return this.repo.increment(conditions, propertyPath, value);\n }\n\n\n\n /**\n * Decrements some column by provided value of the entities matched given conditions.\n */\n decrement(\n conditions: FindOptionsWhere<Entity>,\n propertyPath: string,\n value: number | string,\n ): Promise<UpdateResult> {\n return this.repo.decrement(conditions, propertyPath, value);\n }\n\n\n\n /**\n * @deprecated use findAndCount instead\n */\n async getAll() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n async getBy(id: number | string): Promise<Entity> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-repository.ts","\n\nimport { BaseInjector } from './base-injector';\n\nexport class BaseProvider extends BaseInjector {}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-provider.ts","\n\nexport class DITaonContainer {\n private static instances = new Map();\n\n static resolve<T>(target: Function): T {\n if (DITaonContainer.instances.has(target)) {\n return DITaonContainer.instances.get(target);\n }\n\n\n const injections = []; // tokens.map(token => Container.inject<any>(token));\n\n const instance = new (target as any)(...injections);\n DITaonContainer.instances.set(target, instance);\n return instance;\n }\n\n static inject<T>(target: new (...args: any[]) => T): T {\n return new Proxy(\n {},\n {\n get: (_, propName) => {\n let instance: T =\n DITaonContainer.instances.get(target) ||\n DITaonContainer.resolve(target);\n return typeof instance[propName] === 'function'\n ? instance[propName].bind(instance)\n : instance[propName];\n },\n set: (_, propName, value) => {\n let instance: T =\n DITaonContainer.instances.get(target) ||\n DITaonContainer.resolve(target);\n instance[propName] = value;\n return true;\n },\n },\n ) as T;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/dependency-injection/di-container.ts","\n\nimport { Models } from './models';\nimport { Response as ExpressResponse, Request as ExpressRequest, } from 'express';/* */\n/* */\n/* */\n\nimport { TaonHelpers } from './helpers/taon-helpers';\nimport { Helpers } from 'tnp-core/browser';\n\nexport const getResponseValue = <T>(\n response: Models.Http.Response<T>,\n options?: { req: ExpressRequest; res: ExpressResponse },\n): Promise<T> => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n};\n\n ;({}); // @--end-of-file-for-module=taon lib/get-response-value.ts","\n\nimport { Helpers } from 'tnp-core/browser';\n\nconst ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];\n\nexport { ENV };\n\n ;({}); // @--end-of-file-for-module=taon lib/env.ts","\n\n\n/* */\n/* */\n \nimport { _ } from 'tnp-core/browser';\nimport { Subscriber } from 'rxjs';\nimport { Symbols } from '../symbols';\nimport { Socket as SocketClient } from 'socket.io-client';\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\nimport { RealtimeModels } from './realtime.models';\n\n\nexport class RealtimeSubsManager {\n private isListening = false;\n private observers: Subscriber<any>[] = [];\n constructor(private options: RealtimeModels.SubsManagerOpt) {}\n\n\n startListenIfNotStarted(\n realtime: SocketClient<DefaultEventsMap, DefaultEventsMap>,\n ) {\n if (this.options.core.ctx.disabledRealtime) {\n console.warn(`[Taon][startListenIfNotStarted] sockets are disabled`);\n return;\n }\n\n if (!realtime) {\n console.warn(\n `[Taon][startListenIfNotStarted] invalid socket connection`,\n );\n return;\n }\n\n if (!this.isListening) {\n const subscribeEvent = Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.CUSTOM(\n this.options.core.ctx.contextName,\n );\n\n this.isListening = true;\n\n if (this.options.customEvent) {\n\n realtime.emit(\n subscribeEvent,\n this.options.roomName,\n );\n } else {\n if (_.isString(this.options.property)) {\n\n realtime.emit(\n Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n ),\n this.options.roomName,\n );\n } else {\n\n realtime.emit(\n Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n ),\n this.options.roomName,\n );\n }\n }\n\n\n realtime.on(this.options.roomName, data => {\n this.update(data);\n });\n }\n }\n\n\n\n add(observer: Subscriber<any>) {\n\n this.observers.push(observer);\n }\n\n\n\n remove(observer: Subscriber<any>) {\n\n this.observers = this.observers.filter(obs => obs !== observer);\n if (this.observers.length === 0) {\n\n this.isListening = false;\n const { core, customEvent, roomName, property } = this.options;\n\n const realtime = core.FE_REALTIME;\n\n if (customEvent) {\n realtime.emit(\n Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.CUSTOM(\n this.options.core.ctx.contextName,\n ),\n roomName,\n );\n } else {\n if (_.isString(property)) {\n realtime.emit(\n Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n ),\n roomName,\n );\n } else {\n realtime.emit(\n Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n ),\n roomName,\n );\n }\n }\n }\n }\n\n\n\n private update(data: any) {\n\n const ngZone = this.options.core.ctx.ngZone;\n\n\n this.observers.forEach(observer => {\n\n if (!observer.closed) {\n if (ngZone) {\n ngZone.run(() => {\n observer.next(data);\n });\n } else {\n observer.next(data);\n }\n }\n });\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-subs-manager.ts","\n\n\nimport { _ } from 'tnp-core/browser';\nimport { RealtimeCore } from './realtime-core';\nimport { Symbols } from '../symbols';\nimport { Observable } from 'rxjs';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport { RealtimeSubsManager } from './realtime-subs-manager';\nimport { RealtimeModels } from './realtime.models';\nimport type { BaseEntity } from '../base-classes/base-entity';\nimport { Helpers } from 'tnp-core/browser';\n\n\nexport class RealtimeClient {\n private subsmanagers: { [path: string]: RealtimeSubsManager } = {};\n constructor(private core: RealtimeCore) {\n this.core = core;\n if (!core.ctx.disabledRealtime) {\n\n this.init();\n\n }\n }\n\n\n private init() {\n\n const nspPath = {\n global: this.core.pathFor(),\n realtime: this.core.pathFor(\n Symbols.REALTIME.NAMESPACE(this.core.ctx.contextName),\n ),\n };\n\n this.core.ctx.logRealtime &&\n console.info(\n '[CLIENT] NAMESPACE GLOBAL ',\n nspPath.global.href + ` host: ${this.core.ctx.host}`,\n );\n\n this.core.ctx.logRealtime &&\n console.info(\n '[CLIENT] NAMESPACE REALTIME',\n nspPath.realtime.href + ` host: ${this.core.ctx.host}`,\n );\n\n\n\n this.core.FE = this.core.strategy.io(nspPath.global.origin, {\n path: nspPath.global.pathname,\n });\n\n if (this.core.FE.on) {\n this.core.FE.on('connect', () => {\n\n\n\n console.info(\n `[CLIENT] conented to GLOBAL namespace ${this.core.FE.id} of host: ${this.core.ctx.host}`,\n );\n });\n }\n\n\n\n\n this.core.FE_REALTIME = this.core.strategy.io(nspPath.realtime.origin, {\n path: nspPath.realtime.pathname,\n });\n\n if (this.core.FE_REALTIME.on) {\n this.core.FE_REALTIME.on('connect', () => {\n\n\n\n console.info(\n `[CLIENT] conented to REALTIME namespace ${this.core.FE_REALTIME.id} host: ${this.core.ctx.host}`,\n );\n });\n }\n\n\n }\n\n\n\n /**\n * Changes trigger on backend needs to be done manually.. example code:\n *\n * ...\n * Context.Realtime.Server.TrigggerEntityChanges(myEntityInstance);\n * ...\n */\n listenChangesEntity(\n entityClassFn: Function,\n idOrUniqValue: any,\n options: RealtimeModels.ChangeOption,\n ) {\n options = options || ({} as any);\n\n\n const { property, customEvent } = options;\n const className = !customEvent && ClassHelpers.getName(entityClassFn);\n\n if (_.isString(property)) {\n if (property.trim() === '') {\n throw new Error(\n `[Taon][listenChangesEntity.. incorect property '' for ${className}`,\n );\n }\n }\n\n\n return new Observable(observer => {\n\n\n if (this.core.ctx.disabledRealtime) {\n console.error(`[Taon][realtime rxjs] remove taon config flag:\n\n ...\n disabledRealtime: true\n ...\n\nto use socket realtime connection;\n `);\n return () => {\n\n };\n }\n\n let roomName: string;\n\n if (customEvent) {\n roomName = Symbols.REALTIME.ROOM_NAME.CUSTOM(\n this.core.ctx.contextName,\n customEvent,\n );\n } else {\n roomName = _.isString(property)\n ? Symbols.REALTIME.ROOM_NAME.UPDATE_ENTITY_PROPERTY(\n this.core.ctx.contextName,\n className,\n property,\n idOrUniqValue,\n )\n : Symbols.REALTIME.ROOM_NAME.UPDATE_ENTITY(\n this.core.ctx.contextName,\n className,\n idOrUniqValue,\n );\n }\n\n const roomSubOptions: RealtimeModels.SubsManagerOpt = {\n core: this.core,\n property,\n roomName,\n customEvent,\n };\n\n\n const subManagerId = this.getRoomIdFrom(roomSubOptions);\n if (!this.subsmanagers[subManagerId]) {\n this.subsmanagers[subManagerId] = new RealtimeSubsManager(\n roomSubOptions,\n );\n }\n const inst = this.subsmanagers[subManagerId];\n inst.add(observer);\n\n inst.startListenIfNotStarted(this.core.FE_REALTIME);\n\n return () => {\n inst.remove(observer);\n };\n });\n }\n\n\n\n\n listenChangesEntityTable(entityClassFn: Function) {\n const className = ClassHelpers.getName(entityClassFn);\n return this.listenChangesEntity(entityClassFn, void 0, {\n customEvent: Symbols.REALTIME.TABLE_CHANGE(\n this.core.ctx.contextName,\n className,\n ),\n });\n }\n\n\n\n\n /**\n * Changes trigger on backend needs to be done manually.. example code:\n *\n * ...\n * Context.Realtime.Server.TrigggerEntityChanges(myEntityInstance);\n * // or\n * Context.Realtime.Server.TrigggerEntityPropertyChanges(myEntityInstance,{ property: 'geolocationX' });\n * ...\n */\n listenChangesEntityObj<T extends BaseEntity>(\n entity: T,\n options?: RealtimeModels.ChangeOption,\n ) {\n const classFn = ClassHelpers.getClassFnFromObject(entity);\n const uniqueKey = ClassHelpers.getUniquKey(classFn);\n return this.listenChangesEntity(classFn, entity[uniqueKey], options);\n }\n\n\n\n listenChangesCustomEvent(customEvent: string) {\n return this.listenChangesEntity(void 0, void 0, {\n customEvent,\n });\n }\n\n\n\n private getRoomIdFrom(options: RealtimeModels.SubsManagerOpt) {\n const url = new URL(options.core.ctx.host);\n return `${this.core.ctx.contextName}:${url.origin}|${options.roomName}|${options.property}|${options.customEvent}`;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-client.ts","\n\n\nimport { Symbols } from '../symbols';\nimport { Helpers, _ } from 'tnp-core/browser';\nimport { RealtimeCore } from './realtime-core';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseEntity } from '../base-classes/base-entity';\n\n\nconst SOCKET_EVENT_DEBOUNCE = 500;\n\nexport class RealtimeServer {\n private jobs = {};\n constructor(private core: RealtimeCore) {\n this.core = core;\n if (!core.ctx.disabledRealtime) {\n/* */\n/* */\n \n }\n }\n\n\n private init() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n\n private triggerChanges(\n entityObjOrClass: Function,\n property?: string,\n valueOfUniquPropery?: number | string,\n customEvent?: string,\n customEventData?: any,\n ) {\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n public trigggerEntityChanges(\n entityObjOrClass: Function,\n idToTrigger?: number | string,\n ) {\n if (this.core.ctx.disabledRealtime) {\n const className = ClassHelpers.getName(entityObjOrClass);\n\n console.warn(\n `[Taon][TrigggerEntityChanges] Entity \"${className}' is not realtime`,\n );\n return;\n }\n this.triggerChanges(entityObjOrClass as any, void 0, idToTrigger);\n }\n\n\n\n public trigggerEntityPropertyChanges<ENTITY extends BaseEntity>(\n entityObjOrClass: new (...args) => ENTITY,\n property: keyof ENTITY | (keyof ENTITY)[],\n idToTrigger?: number | string,\n ) {\n if (this.core.ctx.disabledRealtime) {\n const className = ClassHelpers.getName(entityObjOrClass);\n\n console.warn(\n `[Taon][TrigggerEntityPropertyChanges][property=${\n property as string\n }] Entity \"${className}' is not realtime`,\n );\n return;\n }\n\n if (_.isArray(property)) {\n property.forEach(propertyFromArr => {\n this.triggerChanges(\n entityObjOrClass,\n propertyFromArr as any,\n idToTrigger,\n );\n });\n } else {\n this.triggerChanges(entityObjOrClass, property as any, idToTrigger);\n }\n }\n\n\n\n public triggerCustomEvent(customEvent: string, dataToPush: any) {\n this.triggerChanges(void 0, void 0, void 0, customEvent, dataToPush);\n }\n\n\n\n public trigggerEntityTableChanges(entityClass: Function) {\n const className = ClassHelpers.getName(entityClass);\n if (this.core.ctx.disabledRealtime) {\n console.warn(\n `[Taon][TrigggerEntityTableChanges] Entity \"${className}' is not realtime`,\n );\n return;\n }\n\n this.triggerChanges(\n entityClass as any,\n void 0,\n void 0,\n Symbols.REALTIME.TABLE_CHANGE(this.core.ctx.contextName, className),\n );\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-server.ts","\n\nimport { EndpointContext } from '../../endpoint-context';\nimport type { Server } from 'socket.io';\nimport type { io } from 'socket.io-client';\n\nexport abstract class RealtimeStrategy {\n constructor(protected ctx: EndpointContext) {}\n\n private testTypes() {\n\n }\n\n abstract establishConnection(): void;\n\n abstract readonly io: typeof io;\n abstract readonly Server: typeof Server;\n abstract toString(): string;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy.ts","\n\nimport { ipcRenderer } from 'electron';\n\nimport { RendererEventListeners } from './realtime-strategy-ipc.models';\nimport { Helpers } from 'tnp-core/browser';\n\nexport class IpcRendererNamespace {\n ipcRenderer!: typeof ipcRenderer;\n private listeners: RendererEventListeners = {};\n\n constructor(public name: string) {\n this.ipcRenderer = (window as any).require('electron').ipcRenderer;\n }\n\n on(eventName: string, callback: (event: any, ...args: any[]) => void) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push(callback);\n const listenToEvent = `(${this.name}) \"${eventName}\"`;\n\n this.ipcRenderer.on(listenToEvent, callback);\n if (eventName === 'connect') {\n this.emit('connection');\n } else {\n this.emit(eventName);\n }\n }\n\n off(event: string, callback?: (event: any, ...args: any[]) => void) {\n if (!this.listeners[event]) return;\n\n if (callback) {\n this.listeners[event] = this.listeners[event].filter(\n listener => listener !== callback,\n );\n } else {\n delete this.listeners[event];\n }\n const removeListener = `(${this.name}) \"${event}\"`;\n\n\n\n\n this.ipcRenderer.removeListener(removeListener, callback);\n }\n\n emit(event: string, ...args: any[]) {\n const emitEvent = `(${this.name}) \"${event}\"`;\n\n\n this.ipcRenderer.send(emitEvent, ...args);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.ts","\n\nimport { IpcRendererNamespace } from './realtime-strategy-ipc-renderer-namespace';\n\nexport class IpcRendererWrapper {\n private namespaces: { [namespace: string]: IpcRendererNamespace } = {\n '/': new IpcRendererNamespace('/'),\n };\n private connected = false;\n\n constructor(public contextName: string) {\n\n }\n\n of(namespace: string): IpcRendererNamespace {\n\n\n\n if (!this.namespaces[namespace]) {\n this.namespaces[namespace] = new IpcRendererNamespace(\n namespace\n );\n }\n return this.namespaces[namespace];\n }\n\n on(event: string, callback: (event: any, ...args: any[]) => void) {\n\n\n\n\n\n\n\n\n\n this.namespaces['/'].on(event, callback);\n }\n\n emit(event: string, ...args: any[]) {\n\n\n\n this.namespaces['/'].emit(event, ...args);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.ts","\n\nimport { Server } from 'socket.io';\nimport { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\nimport { ioIpcStrategy as IoIpcStrategy } from './realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper';\nimport { IpcRendererWrapper } from './realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper';\nimport type { io } from 'socket.io-client';\n\n/**\n * Purpose:\n * - backend-browser communication between 2 processes in electron mode\n */\nexport class RealtimeStrategyIpc extends RealtimeStrategy {\n toString(): string {\n return 'ipc';\n }\n establishConnection(): void {\n throw new Error('Method not implemented.');\n }\n constructor(protected ctx: EndpointContext) {\n super(ctx);\n }\n\n contextsServers: { [contextName: string]: Server } = {};\n contextsIO: { [contextName: string]: typeof io } = {};\n\n get io() {\n\n return ((__, { path: namespacePath }) => {\n if (this.contextsIO[namespacePath]) {\n return this.contextsIO[namespacePath];\n }\n const wrap = new IpcRendererWrapper(this.ctx.contextName);\n\n const nsp = wrap.of(namespacePath);\n this.contextsIO[namespacePath] = nsp as any;\n return nsp;\n }) as any;\n\n return void 0;\n }\n get Server() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return void 0;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc.ts","\n\nimport { MockSocket } from \"./realtime-strategy-mock-socket\";\nimport { Rooms } from \"./realtime-strategy-mock.models\";\nexport class MockNamespace {\n private rooms: Rooms = {};\n private sockets: Set<MockSocket> = new Set();\n\n constructor(public name: string, public contextName: string) {}\n\n on(event: string, callback: (socket: MockSocket) => void) {\n if (event === 'connection') {\n this.sockets.forEach(socket => callback(socket));\n }\n }\n\n emit(event: string, data?: any) {\n this.sockets.forEach(socket => socket.emit(event, data));\n }\n\n to(room: string) {\n return {\n emit: (event: string, data?: any) => {\n if (this.rooms[room]) {\n this.rooms[room].forEach(socket => socket.emit(event, data));\n }\n }\n };\n }\n\n joinRoom(socket: MockSocket, room: string) {\n if (!this.rooms[room]) {\n this.rooms[room] = new Set();\n }\n this.rooms[room].add(socket);\n }\n\n leaveRoom(socket: MockSocket, room: string) {\n if (this.rooms[room]) {\n this.rooms[room].delete(socket);\n if (this.rooms[room].size === 0) {\n delete this.rooms[room];\n }\n }\n }\n\n addSocket(socket: MockSocket) {\n this.sockets.add(socket);\n }\n\n removeSocket(socket: MockSocket) {\n this.sockets.delete(socket);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.ts","\n\nimport { MockNamespace } from \"./realtime-strategy-mock-namespaces\";\nimport { EventListeners } from \"./realtime-strategy-mock.models\";\n\n\nexport class MockSocket {\n private listeners: EventListeners = {};\n\n constructor(public id: string, private namespace: MockNamespace) {\n this.namespace.addSocket(this);\n }\n\n on(event: string, callback: (data?: any) => void) {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n this.listeners[event].push(callback);\n }\n\n off(event: string, callback?: (data?: any) => void) {\n if (!this.listeners[event]) return;\n\n if (callback) {\n this.listeners[event] = this.listeners[event].filter(listener => listener !== callback);\n } else {\n delete this.listeners[event];\n }\n }\n\n emit(event: string, data?: any) {\n if (this.listeners[event]) {\n this.listeners[event].forEach(listener => listener(data));\n }\n }\n\n join(room: string) {\n this.namespace.joinRoom(this, room);\n }\n\n leave(room: string) {\n this.namespace.leaveRoom(this, room);\n }\n\n disconnect() {\n this.emit('disconnect');\n this.namespace.removeSocket(this);\n this.listeners = {};\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.ts","\n\nimport { MockNamespace } from \"./realtime-strategy-mock-namespaces\";\nimport { MockSocket } from \"./realtime-strategy-mock-socket\";\nimport { Namespaces } from \"./realtime-strategy-mock.models\";\n\nexport class MockServer {\n private namespaces: Namespaces = {\n '/': new MockNamespace('/', this.contextName)\n };\n\n constructor(public contextName: string) {}\n\n of(namespace: string): MockNamespace {\n if (!this.namespaces[namespace]) {\n this.namespaces[namespace] = new MockNamespace(namespace, this.contextName);\n }\n return this.namespaces[namespace];\n }\n\n on(event: string, callback: (socket: MockSocket) => void) {\n if (event === 'connection') {\n this.namespaces['/'].on('connection', callback);\n }\n }\n\n emit(event: string, data?: any) {\n this.namespaces['/'].emit(event, data);\n }\n\n connect(id: string, namespace: string = '/'): MockSocket {\n const ns = this.of(namespace);\n const socket = new MockSocket(id, ns);\n ns.on('connection', (socket: MockSocket) => {\n socket.emit('connect');\n });\n return socket;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.ts","\n\nimport { MockServer } from \"./realtime-strategy-mock-server\";\nimport { MockSocket } from \"./realtime-strategy-mock-socket\";\nimport { EventListeners } from \"./realtime-strategy-mock.models\";\n\n\nclass MockClientSocket {\n private listeners: EventListeners = {};\n\n constructor(private serverSocket: MockSocket, public contextName: string) {\n serverSocket.on('message', (data) => this.emit('message', data));\n }\n\n on(event: string, callback: (data?: any) => void) {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n this.listeners[event].push(callback);\n }\n\n off(event: string, callback?: (data?: any) => void) {\n if (!this.listeners[event]) return;\n\n if (callback) {\n this.listeners[event] = this.listeners[event].filter(listener => listener !== callback);\n } else {\n delete this.listeners[event];\n }\n }\n\n emit(event: string, data?: any) {\n this.serverSocket.emit(event, data);\n if (this.listeners[event]) {\n this.listeners[event].forEach(listener => listener(data));\n }\n }\n\n disconnect() {\n this.serverSocket.disconnect();\n this.listeners = {};\n }\n\n join(room: string) {\n this.serverSocket.join(room);\n }\n\n leave(room: string) {\n this.serverSocket.leave(room);\n }\n}\n\nexport function mockIo(server: MockServer) {\n return (namespace: string = '/'): MockClientSocket => {\n const socketId = Math.random().toString(36).substring(2);\n const serverSocket = server.connect(socketId, namespace);\n return new MockClientSocket(serverSocket, server.contextName);\n };\n}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.ts","\n\nexport * from './realtime-strategy-mock-server';\nexport * from './realtime-strategy-mock-client';\n\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.ts","\n\nimport { Server } from 'socket.io';\nimport { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\nimport { MockServer, mockIo } from './realtime-strategy-mock-models'\n\n/**\n * Purpose:\n * - browser-browser communication mock (in websql mode)\n */\nexport class RealtimeStrategyMock extends RealtimeStrategy {\n toString(): string {\n return 'mock';\n }\n\n\n constructor(protected ctx: EndpointContext) {\n super(ctx);\n }\n\n get Server() {\n return MockServer as any;\n };\n\n get io() {\n return mockIo as any;\n }\n\n establishConnection(): void {\n throw new Error('Method not implemented.');\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock.ts","\n\nimport { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\n/* */\n/* */\n \nimport { io } from 'socket.io-client';\n\n/**\n * Purpose:\n * - backend-browser communication\n * - backend-backend communication\n */\nexport class RealtimeStrategySocketIO extends RealtimeStrategy {\n toString(): string {\n return 'socket-io';\n }\n constructor(protected ctx: EndpointContext) {\n super(ctx);\n }\n\n get Server() {\n/* */\n/* */\n return (void 0);\n };\n\n get io() {\n return io;\n }\n\n establishConnection(): void {\n throw new Error('Method not implemented.');\n }\n}\n\n\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-socket-io.ts","\n\nexport * from './realtime-strategy';\nexport * from './realtime-strategy-ipc';\nexport * from './realtime-strategy-mock';\nexport * from './realtime-strategy-socket-io';\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/index.ts","\n\n\nimport { Socket as SocketClient } from 'socket.io-client';\nimport type { EndpointContext } from '../endpoint-context';\nimport { RealtimeClient } from './realtime-client';\nimport { RealtimeServer } from './realtime-server';\nimport type { RealtimeStrategy } from './realtime-strategy';\nimport { RealtimeStrategyIpc, RealtimeStrategyMock, RealtimeStrategySocketIO, } from './realtime-strategy';/* */\n/* */\n/* */\n/* */\n\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\nimport { Server } from 'socket.io';\nimport { Helpers } from 'tnp-core/browser';\n\n\n/**\n * Realtime class\n * - mock (when browser-browser)\n * - sockets (from socket io when backend-browser)\n * - ipc (when electron is used or between processes)\n * - webworker (when webworker is used in browser or nodejs)\n */\nexport class RealtimeCore {\n\n readonly allHttpMethods = [\n 'GET',\n 'POST',\n 'PUT',\n 'DELETE',\n 'PATCH',\n 'OPTIONS',\n 'HEAD',\n ];\n public readonly client: RealtimeClient;\n public readonly server: RealtimeServer;\n public readonly strategy: RealtimeStrategy;\n /**\n * global FE socket\n */\n public FE: SocketClient<DefaultEventsMap, DefaultEventsMap>;\n /**\n * socket for namespaces and rooms\n */\n public FE_REALTIME: SocketClient<DefaultEventsMap, DefaultEventsMap>;\n /**\n * global BE socket\n */\n public BE: Server<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any>;\n /**\n * socket for namespaces and rooms\n */\n public BE_REALTIME: Server<\n DefaultEventsMap,\n DefaultEventsMap,\n DefaultEventsMap,\n any\n >;\n\n\n\n constructor(public ctx: EndpointContext) {\n this.strategy = this.resolveStrategy();\n ctx.logFramework &&\n console.log(`[taon] realtime strategy: ${this.strategy}`);\n this.client = new RealtimeClient(this);\n this.server = new RealtimeServer(this);\n }\n\n\n\n private resolveStrategy(): RealtimeStrategy {\n if (this.ctx.mode === 'backend-frontend(websql)') {\n return new RealtimeStrategyMock(this.ctx);\n }\n if (this.ctx.mode === 'backend-frontend(ipc-electron)') {\n return new RealtimeStrategyIpc(this.ctx);\n }\n\n\n\n\n\n\n return new RealtimeStrategySocketIO(this.ctx);\n }\n\n\n\n public pathFor(namespace?: string) {\n const uri = this.ctx.uri;\n let nsp = namespace ? namespace : '';\n nsp = nsp === '/' ? '' : nsp;\n const pathname = uri.pathname !== '/' ? uri.pathname : '';\n let prefix = `taonContext-`;\n if (Helpers.isElectron) {\n prefix = ``;\n }\n const href = `${uri.origin}${pathname}/${prefix}${nsp}`;\n\n return new URL(href) as URL;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-core.ts","\n\n/* eslint-disable @typescript-eslint/typedef */\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\nimport { TaonAdmin } from './ui/taon-admin-mode-configuration/taon-admin.service';\n\nimport { Models } from './models';\nimport { ClassHelpers } from './helpers/class-helpers';\nimport { Symbols } from './symbols';\nimport { _, Helpers } from 'tnp-core/browser';\nimport type { createContext } from './create-context';\nimport { DITaonContainer } from './dependency-injection/di-container';\nimport { TaonControllerOptions } from './decorators/classes/controller-decorator';\nimport { TaonHelpers } from './helpers/taon-helpers';\nimport { Mapping, Models as ModelsNg2Rest, Resource, RestHeaders, } from 'ng2-rest/browser';/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { JSON10 } from 'json10/browser';\nimport { path } from 'tnp-core/browser';\nimport { from, Subject } from 'rxjs';\nimport { EntityProcess } from './entity-process';\nimport { getResponseValue } from './get-response-value';\nimport type { Application } from 'express';\nimport axios from 'axios';\nimport type { NgZone } from '@angular/core';\n\nimport { DataSource, DataSourceOptions, getMetadataArgsStorage, } from 'taon-typeorm/browser';/* */\n/* */\n/* */\n/* */\n\nimport { TaonEntityOptions } from './decorators/classes/entity-decorator';\nimport type { Server } from 'http';\nimport { ENV } from './env';\nimport type { BaseClass } from './base-classes/base-class';\nimport { RealtimeCore } from './realtime/realtime-core';\nimport { TaonSubscriberOptions } from './decorators/classes/subscriber-decorator';\nimport { BaseSubscriberForEntity } from './base-classes/base-subscriber-for-entity';\n\n\nexport class EndpointContext {\n\n\n\n private static ngZone: NgZone;\n\n static initNgZone(ngZone: NgZone) {\n\n this.ngZone = ngZone;\n\n }\n public static findForTraget(classFnOrObject: any): EndpointContext {\n const obj = ClassHelpers.getClassFnFromObject(classFnOrObject) || {};\n return (\n classFnOrObject[Symbols.ctxInClassOrClassObj] ||\n obj[Symbols.ctxInClassOrClassObj]\n );\n }\n\n\n\n\n\n disabledRealtime: boolean = false;\n /**\n * check whether context is inited\n * (with init() function )\n */\n public inited: boolean = false;\n\n\n private readonly localInstaceObjSymbol = Symbol('localInstaceObjSymbol');\n\n\n /**\n * all instances of classes from context\n * key is class name\n */\n public readonly allClassesInstances = {};\n\n\n\n private readonly classInstancesByNameObj = {};\n\n\n\n private readonly objWithClassesInstancesArr = {};\n\n\n\n public readonly activeRoutes: {\n routePath: string;\n method: Models.Http.Rest.HttpMethod;\n }[] = [];\n\n\n\n private injectableTypesfromContexts = [\n Models.ClassType.CONTROLLER,\n Models.ClassType.PROVIDER,\n Models.ClassType.REPOSITORY,\n Models.ClassType.SUBSCRIBER,\n ];\n\n\n private allTypesfromContexts = [\n ...this.injectableTypesfromContexts,\n Models.ClassType.ENTITY,\n ];\n\n\n public expressApp: Application = {} as any;\n\n\n\n public serverTcpUdp: Server;\n\n\n\n databaseConfig?: Models.DatabaseConfig;\n private autoGeneratedConfig?: Models.DatabaseConfig;\n\n\n\n mode: Models.FrameworkMode;\n\n\n\n session?: Models.ISession;\n\n\n\n public connection: DataSource;\n\n\n\n private entitiesTriggers = {};\n\n\n\n private realtime: RealtimeCore;\n get realtimeClient() {\n return this.realtime.client;\n }\n get realtimeServer() {\n return this.realtime.server;\n }\n\n\n\n /**\n * available after init()\n */\n public config: Models.ContextOptions<any, any, any, any, any, any>;\n\n\n\n get logHttp(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ContectionOptionsLogs).http;\n }\n return this.config?.logs === true;\n }\n\n get logRealtime(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ContectionOptionsLogs).realtime;\n }\n return this.config?.logs === true;\n }\n\n get logFramework(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ContectionOptionsLogs).framework;\n }\n return this.config?.logs === true;\n }\n\n get logDb(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ContectionOptionsLogs).db;\n }\n return this.config?.logs === true;\n }\n\n\n\n\n\n constructor(\n private originalConfig: Models.ContextOptions<any, any, any, any, any, any>,\n private configFn: (\n env: any,\n ) => Models.ContextOptions<any, any, any, any, any, any>,\n ) {}\n\n\n\n public async init(options?: { initFromRecrusiveContextResovle?: boolean }) {\n const { initFromRecrusiveContextResovle } = options || {}; // TODO use it ?\n\n this.inited = true;\n this.config = this.configFn(ENV);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n if (this.config.host) {\n this.mode = 'backend-frontend(tcp+udp)';\n/* */\n/* */\n \n }\n if (this.config.remoteHost) {\n if (this.config.host) {\n Helpers.error(\n `[taon] You can't have remoteHost and host at the same time`,\n false,\n true,\n );\n }\n this.mode = 'remote-backend(tcp+udp)';\n }\n\n if (this.config.useIpcWhenElectron && Helpers.isElectron) {\n this.mode = 'backend-frontend(ipc-electron)';\n }\n\n if (!this.mode && !this.config.abstract) {\n Helpers.error(\n `[taon] Context \"${this.contextName}\": You need to provide host or remoteHost or useIpcWhenElectron`,\n false,\n true,\n );\n/* */\n/* */\n \n }\n\n\n\n if (this.config.database === true) {\n this.databaseConfig = this.getAutoGeneratedConfig();\n } else if (_.isObject(this.config.database)) {\n this.databaseConfig = _.cloneDeep(\n this.config.database,\n ) as Models.DatabaseConfig;\n }\n\n\n\n if (this.config.session) {\n this.session = _.cloneDeep(this.config.session);\n const oneHour = 1000 * 60 * 60 * 1; // 24;\n if (!this.session.cookieMaxAge) {\n this.session.cookieMaxAge = oneHour;\n }\n\n axios.defaults.withCredentials = true;\n }\n\n\n\n this.config.contexts = this.config.contexts || {};\n this.config.entities = this.config.entities || {};\n this.config.controllers = this.config.controllers || {};\n this.config.repositories = this.config.repositories || {};\n this.config.providers = this.config.providers || {};\n this.config.subscribers = this.config.subscribers || {};\n\n this.config.entities = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.ENTITY,\n )),\n ...this.config.entities,\n };\n\n this.config.controllers = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.CONTROLLER,\n )),\n ...this.config.controllers,\n };\n\n this.config.providers = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.PROVIDER,\n )),\n ...this.config.providers,\n };\n\n this.config.subscribers = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.SUBSCRIBER,\n )),\n ...this.config.subscribers,\n };\n\n this.config.repositories = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.REPOSITORY,\n )),\n ...this.config.repositories,\n };\n\n\n\n\n\n this.config.controllers = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.controllers,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.CONTROLLER,\n });\n this.config.repositories = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.repositories,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.REPOSITORY,\n });\n this.config.providers = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.providers,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.PROVIDER,\n });\n this.config.subscribers = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.subscribers,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.SUBSCRIBER,\n });\n\n\n\n for (const classTypeName of this.injectableTypesfromContexts) {\n this.classInstancesByNameObj[classTypeName] = {};\n this.objWithClassesInstancesArr[classTypeName] = [];\n }\n\n for (const classTypeName of this.injectableTypesfromContexts) {\n await this.createInstances(\n this.config[Models.ClassTypeKey[classTypeName]],\n classTypeName,\n );\n }\n\n\n\n if (this.mode === 'backend-frontend(tcp+udp)' && !this.config.abstract) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n if (!this.config.abstract) {\n this.disabledRealtime = !!this.config.disabledRealtime;\n/* */\n/* */\n/* */\n/* */\n/* */\n \n this.realtime = new RealtimeCore(this);\n }\n\n\n\n\n if (this.config.abstract) {\n this.logFramework &&\n Helpers.info(\n `[taon] Create abstract context: ${this.config.contextName}`,\n );\n } else {\n if (this.config.remoteHost) {\n this.logFramework &&\n Helpers.info(\n `[taon] Create context for remote host: ${this.config.remoteHost}`,\n );\n } else {\n this.logFramework &&\n Helpers.info(\n `[taon] Create context for host: ${this.config.host}`,\n );\n }\n }\n\n\n\n Object.keys(this.config).forEach(key => {\n this.originalConfig[key] = this.config[key];\n });\n }\n\n\n\n private getAutoGeneratedConfig(): Models.DatabaseConfig {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n get ngZone(): any {\n\n return EndpointContext.ngZone;\n\n return;\n }\n\n\n\n startServer() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n displayRoutes(app) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n get modeAllowsDatabaseCreation() {\n return (\n this.mode === 'backend-frontend(tcp+udp)' ||\n this.mode === 'backend-frontend(websql)' ||\n this.mode === 'backend-frontend(ipc-electron)'\n );\n }\n\n\n\n\n private cloneClassWithNewMetadata = <\n T extends { new (...args: any[]): any },\n >({\n BaseClass,\n className,\n config,\n ctx,\n classType,\n }: {\n BaseClass: T;\n className: string;\n config: Models.ContextOptions<any, any, any, any, any, any>;\n ctx: EndpointContext;\n classType: Models.ClassType;\n }): T => {\n\n const cloneClass = () => {\n if (\n BaseClass[Symbols.fullClassNameStaticProperty] ===\n `${ctx.contextName}.${className}`\n ) {\n return BaseClass;\n }\n return class extends BaseClass {\n\n\n // @ts-ignore\n static [Symbols.orignalClass] = BaseClass;\n\n // @ts-ignore\n static [Symbols.fullClassNameStaticProperty] = `${ctx.contextName}.${className}`;\n\n // @ts-ignore\n static [Symbols.classNameStaticProperty] = className;\n\n static [Symbols.ctxInClassOrClassObj] = ctx;\n\n static __getFullPathForClass__(arr = []) {\n const name = this[Symbols.fullClassNameStaticProperty];\n arr.push(name);\n // @ts-ignore\n if (\n this[Symbols.orignalClass] && // @ts-ignore\n this[Symbols.orignalClass].__getFullPathForClass__\n ) {\n // @ts-ignore\n this[Symbols.orignalClass].__getFullPathForClass__(arr);\n }\n return arr.join('/');\n }\n static get fullPathForClass(): string {\n return this.__getFullPathForClass__();\n }\n [Symbols.ctxInClassOrClassObj] = ctx;\n\n\n };\n };\n\n const cloneClassFunction = cloneClass();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n return cloneClassFunction;\n };\n\n\n\n\n\n private cloneClassesObjWithNewMetadata = ({\n classesInput,\n config,\n ctx,\n classType,\n }: {\n classesInput: any;\n config: Models.ContextOptions<any, any, any, any, any, any>;\n ctx: EndpointContext;\n classType: Models.ClassType;\n }) => {\n const classes = {};\n\n for (const key of Object.keys(classesInput || {})) {\n const BaseClass = classesInput[key];\n\n if (!BaseClass) {\n Helpers.error(`Class ${key} is not defined in context ${ctx.contextName}\n\n Please check if you have correct import in context file\n\n `);\n }\n\n var className = Reflect.getMetadata(\n Symbols.metadata.className,\n BaseClass,\n );\n\n\n\n\n\n className = className || key;\n BaseClass[Symbols.classNameStaticProperty] = className;\n\n const clonedClass = this.cloneClassWithNewMetadata({\n BaseClass,\n className,\n config,\n ctx,\n classType,\n });\n classes[className] = clonedClass;\n }\n return classes;\n };\n\n\n\n private async getRecrusiveClassesfromContextsObj(\n classType: Models.ClassType,\n ) {\n const arr = await this.getRecrusiveClassesfromContexts(classType);\n return arr.reduce((acc, c) => {\n acc[ClassHelpers.getName(c)] = c;\n return acc;\n }, {});\n }\n\n private async getRecrusiveClassesfromContexts(\n classType: Models.ClassType,\n arr = [],\n ) {\n const contexts = Object.values(this.config.contexts || {}) as ReturnType<\n typeof createContext\n >[];\n\n\n\n for (const ctx of contexts) {\n\n const ref = await ctx.__ref();\n\n const classesInput = ref.getClassFunBy(classType);\n\n\n const clonedClasses = Object.values(\n this.cloneClassesObjWithNewMetadata({\n classesInput,\n config: this.config,\n ctx: this,\n classType,\n }),\n );\n\n clonedClasses.forEach(c => arr.push(c));\n\n await ref.getRecrusiveClassesfromContexts(classType, arr);\n }\n return arr as Function[];\n }\n\n\n\n getClassInstanceObjBy(classType: Models.ClassType): any {\n return this.classInstancesByNameObj[classType];\n }\n\n\n\n private getClassesInstancesArrBy(classType: Models.ClassType): any[] {\n return this.objWithClassesInstancesArr[classType];\n }\n\n\n\n inject<T>(\n ctor: new (...args: any[]) => T,\n options?: {\n localInstance?: boolean;\n contextClassInstance?: BaseClass;\n locaInstanceConstructorArgs?: ConstructorParameters<typeof ctor>;\n },\n ): T {\n if (!options) {\n options = {} as any;\n }\n const className = ClassHelpers.getName(ctor);\n\n const locaInstanceConstructorArgs =\n options.locaInstanceConstructorArgs || [];\n\n if (this.isCLassType(Models.ClassType.REPOSITORY, ctor)) {\n options.localInstance = true;\n }\n\n if (options?.localInstance) {\n const ctxClassFn = this.getClassFunByClassName(className);\n let entityName: string = '';\n\n if (className === 'BaseRepository') {\n const entityFn = locaInstanceConstructorArgs[0];\n const entity = entityFn && entityFn();\n entityName = entity && ClassHelpers.getName(entity);\n }\n\n if (!options.contextClassInstance[this.localInstaceObjSymbol]) {\n options.contextClassInstance[this.localInstaceObjSymbol] = {};\n }\n const instanceKey = className + (entityName ? `.${entityName}` : '');\n const existed =\n options.contextClassInstance[this.localInstaceObjSymbol][instanceKey];\n if (existed) {\n\n return existed;\n }\n\n if (!ctxClassFn) {\n throw new Error(`Not able to inject \"${className}\" inside context \"${this.contextName}\"\n\n Make sure they share the same context or import context where \"${className}\" is defined.\n\n `);\n }\n\n const injectedInstance = new (ctxClassFn as any)(\n ...locaInstanceConstructorArgs,\n );\n options.contextClassInstance[this.localInstaceObjSymbol][instanceKey] =\n injectedInstance;\n\n return injectedInstance;\n }\n\n const contextScopeInstance = this.allClassesInstances[className];\n\n\n\n return contextScopeInstance;\n }\n\n /**\n * alias for inject\n */\n getInstanceBy<T>(ctor: new (...args: any[]) => T): T {\n return this.inject(ctor, { localInstance: false });\n }\n\n\n checkIfContextInitialized() {\n if (_.isUndefined(this.config)) {\n throw new Error(`Please check if your context has been initilized.\n\n\n await Context.initialize();\n\n\n\n `);\n }\n }\n\n\n getClassFunBy(classType: Models.ClassType) {\n this.checkIfContextInitialized();\n switch (classType) {\n case Models.ClassType.CONTROLLER:\n return this.config.controllers;\n case Models.ClassType.ENTITY:\n return this.config.entities;\n case Models.ClassType.PROVIDER:\n return this.config.providers;\n case Models.ClassType.REPOSITORY:\n return this.config.repositories;\n case Models.ClassType.SUBSCRIBER:\n return this.config.subscribers;\n }\n }\n\n isCLassType(classType: Models.ClassType, classFn: Function): boolean {\n return !!this.getClassFunBy(classType)[ClassHelpers.getName(classFn)];\n }\n\n /**\n * Only for injectable types\n * Only for classType: CONTROLLER, REPOSITORY, PROVIDER\n */\n getClassFunByClassName(className: string): Function {\n for (const classTypeName of this.allTypesfromContexts) {\n const classesForInjectableType =\n this.config[Models.ClassTypeKey[classTypeName]];\n\n if (classesForInjectableType[className]) {\n return classesForInjectableType[className];\n }\n }\n }\n\n getClassFunByClass(classFunction: Function): Function {\n const className = ClassHelpers.getName(classFunction);\n return this.getClassFunByClassName(className);\n }\n\n getClassFunByArr(classType: Models.ClassType) {\n return Object.values(this.getClassFunBy(classType) || {}) as Function[];\n }\n\n\n\n private async createInstances(classes: any, classType: Models.ClassType) {\n\n\n\n\n\n for (const classFn of [\n\n ...Object.values(classes),\n ]) {\n const instance = DITaonContainer.resolve(classFn as any) as any;\n const classInstancesByNameObj = this.classInstancesByNameObj[classType];\n const className = ClassHelpers.getName(classFn);\n\n classInstancesByNameObj[className] = instance;\n\n this.config[Models.ClassTypeKey[classType]][className] = classFn;\n this.objWithClassesInstancesArr[classType].push(instance);\n this.allClassesInstances[className] = instance;\n }\n }\n\n\n\n async reinitControllers() {\n\n\n\n const controllers = this.getClassesInstancesArrBy(\n Models.ClassType.CONTROLLER,\n );\n\n for (const ctrl of controllers) {\n if (_.isFunction(ctrl.initExampleDbData)) {\n await Helpers.runSyncOrAsync({\n functionFn: ctrl.initExampleDbData,\n context: ctrl,\n });\n }\n }\n\n\n\n }\n async initClasses() {\n for (const classTypeName of [\n Models.ClassType.PROVIDER,\n Models.ClassType.REPOSITORY,\n Models.ClassType.CONTROLLER,\n Models.ClassType.ENTITY,\n ]) {\n\n\n\n\n for (const classFun of this.getClassFunByArr(classTypeName) as any[]) {\n if (_.isFunction(classFun._)) {\n await Helpers.runSyncOrAsync({\n functionFn: classFun._,\n context: classFun,\n });\n\n\n\n\n\n\n }\n }\n\n\n\n\n }\n\n for (const classTypeName of [\n Models.ClassType.PROVIDER,\n Models.ClassType.REPOSITORY,\n Models.ClassType.CONTROLLER,\n ]) {\n\n\n\n\n for (const ctrl of this.getClassesInstancesArrBy(classTypeName)) {\n if (_.isFunction(ctrl._)) {\n await Helpers.runSyncOrAsync({\n functionFn: ctrl._,\n context: ctrl,\n });\n }\n }\n\n\n\n\n }\n }\n\n\n\n isActiveOn(classInstance: object): boolean {\n let contextRef: EndpointContext =\n classInstance[Symbols.ctxInClassOrClassObj];\n return this === contextRef;\n }\n\n\n\n get uri() {\n const url = this.host\n ? new URL(this.host)\n : this.remoteHost\n ? new URL(this.remoteHost)\n : void 0;\n return url;\n }\n\n\n\n get isHttpServer() {\n return this.uri.protocol === 'https:';\n }\n\n\n\n /**\n * ipc/udp needs this\n */\n public get contextName() {\n return this.config.contextName;\n }\n\n\n\n public get publicAssets() {\n return this.config?.publicAssets || [];\n }\n\n\n\n get isProductionMode() {\n return this.config.productionMode;\n }\n\n\n\n get remoteHost() {\n return this.config.remoteHost;\n }\n\n\n\n get host() {\n return this.config.host;\n }\n\n\n\n get orgin() {\n return this.uri?.origin;\n }\n\n\n\n async initSubscribers() {\n return; // TODO\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n async initEntities() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n\n async initDatabaseConnection() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n\n initMetadata() {\n const allControllers = this.getClassFunByArr(Models.ClassType.CONTROLLER);\n\n for (const controllerClassFn of allControllers) {\n controllerClassFn[Symbols.classMethodsNames] =\n ClassHelpers.getMethodsNames(controllerClassFn);\n const configs = ClassHelpers.getControllerConfigs(controllerClassFn);\n\n const classConfig: Models.RuntimeControllerConfig = configs[0];\n\n const parentscalculatedPath = _.slice(configs, 1)\n .reverse()\n .map(bc => {\n if (TaonHelpers.isGoodPath(bc.path)) {\n return bc.path;\n }\n return bc.className;\n })\n .join('/');\n\n if (TaonHelpers.isGoodPath(classConfig.path)) {\n classConfig.calculatedPath = classConfig.path;\n } else {\n classConfig.calculatedPath =\n `${parentscalculatedPath}/${ClassHelpers.getName(controllerClassFn)}`\n .replace(/\\/\\//g, '/')\n .split('/')\n .reduce((acc, bc) => {\n return _.last(acc) === bc ? acc : [...acc, bc];\n }, [])\n .join('/');\n }\n\n _.slice(configs, 1).forEach(bc => {\n const alreadyIs = classConfig.methods;\n const toMerge = _.cloneDeep(bc.methods);\n for (const key in toMerge) {\n if (toMerge.hasOwnProperty(key) && !alreadyIs[key]) {\n const element = toMerge[key];\n alreadyIs[key] = element;\n }\n }\n });\n\n/* */\n/* */\n \n this.logHttp &&\n console.groupCollapsed(\n `[taon][express-server] routes [${classConfig.className}]`,\n );\n/* */\n/* */\n \n\n\n Object.keys(classConfig.methods).forEach(methodName => {\n const methodConfig: Models.MethodConfig =\n classConfig.methods[methodName];\n\n const type: Models.Http.Rest.HttpMethod = methodConfig.type;\n const expressPath = methodConfig.global\n ? `/${methodConfig.path?.replace(/\\//, '')}`\n : TaonHelpers.getExpressPath(classConfig, methodConfig);\n\n\n if (Helpers.isNode || Helpers.isWebSQL) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n const shouldInitClient =\n Helpers.isBrowser || this.remoteHost || Helpers.isWebSQL;\n\n if (shouldInitClient) {\n\n\n\n\n\n\n\n this.initClient(controllerClassFn, type, methodConfig, expressPath);\n }\n });\n\n/* */\n/* */\n \n this.logHttp && console.groupEnd();\n/* */\n/* */\n \n }\n }\n\n\n\n public writeActiveRoutes() {\n const contexts: EndpointContext[] = [this];\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n public get middlewares(): Models.MiddlewareType[] {\n/* */\n/* */\n return (void 0);\n }\n\n\n\n private initMidleware() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n private initServer(\n\n type: Models.Http.Rest.HttpMethod,\n methodConfig: Models.MethodConfig,\n classConfig: Models.RuntimeControllerConfig,\n expressPath: string,\n target: Function,\n\n ): any {\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n const url = this.uri;\n\n\n const getResult = async (resolvedParams, req, res) => {\n const response: Models.Http.Response<any> =\n methodConfig.descriptor.value.apply(\n /**\n * Context for method @GET,@PUT etc.\n */\n this.getInstanceBy(target as any),\n /**\n * Params for metjod @GET, @PUT etc.\n */\n resolvedParams,\n );\n let result = await getResponseValue(response, { req, res });\n return result;\n };\n\n\n url.pathname = url.pathname.replace(/\\/$/, '');\n expressPath = url.pathname.startsWith('/')\n ? `${url.pathname}${expressPath}`\n : expressPath;\n expressPath = expressPath.replace(/\\/\\//g, '/');\n\n\n\n if (Helpers.isElectron) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n if (!this.remoteHost) {\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n return {\n routePath: expressPath,\n method: methodConfig.type,\n };\n }\n\n\n\n /**\n * client can be browser or nodejs (when remote host)\n */\n private initClient(\n\n target: Function,\n type: Models.Http.Rest.HttpMethod,\n methodConfig: Models.Http.Rest.MethodConfig,\n expressPath: string,\n\n ): void {\n const ctx = this;\n\n this.logHttp && console.log(`${type?.toUpperCase()} ${expressPath} `);\n\n\n let storage: any;\n if (Helpers.isBrowser) {\n storage = window;\n }\n/* */\n/* */\n/* */\n/* */\n \n\n\n const orgMethods = target.prototype[methodConfig.methodName];\n\n\n\n if (Helpers.isElectron) {\n target.prototype[methodConfig.methodName] = function (...args) {\n const received = new Promise(async (resolve, reject) => {\n const headers = {};\n const { request, response } = TaonHelpers.websqlMocks(headers);\n\n Helpers.ipcRenderer.once(\n TaonHelpers.ipcKeyNameResponse(\n target,\n methodConfig,\n expressPath,\n ),\n (event, responseData) => {\n let res: any = responseData;\n console.log({ responseData });\n try {\n const body = res;\n res = new ModelsNg2Rest.HttpResponse(\n {\n body: void 0,\n isArray: void 0 as any,\n method: methodConfig.type,\n url: `${ctx.uri.origin}${\n '' // TODO express path\n }${methodConfig.path} `,\n },\n Helpers.isBlob(body) || _.isString(body)\n ? body\n : JSON.stringify(body),\n RestHeaders.from(headers),\n void 0,\n () => body,\n );\n\n resolve(res);\n } catch (error) {\n console.error(error);\n reject(error);\n }\n },\n );\n Helpers.ipcRenderer.send(\n TaonHelpers.ipcKeyNameRequest(target, methodConfig, expressPath),\n args,\n );\n });\n received['observable'] = from(received);\n return {\n received,\n };\n };\n return;\n }\n\n\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n\n\n\n target.prototype[methodConfig.methodName] = function (this: {}, ...args) {\n\n\n\n\n\n if (!storage[Symbols.old.ENDPOINT_META_CONFIG])\n storage[Symbols.old.ENDPOINT_META_CONFIG] = {};\n if (!storage[Symbols.old.ENDPOINT_META_CONFIG][ctx.uri.href])\n storage[Symbols.old.ENDPOINT_META_CONFIG][ctx.uri.href] = {};\n const endpoints = storage[Symbols.old.ENDPOINT_META_CONFIG];\n let rest: ModelsNg2Rest.ResourceModel<any, any>;\n if (!endpoints[ctx.uri.href][expressPath]) {\n let headers = {};\n if (methodConfig.contentType && !methodConfig.responseType) {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n RestHeaders.from({\n 'Content-Type': methodConfig.contentType,\n Accept: methodConfig.contentType,\n }),\n );\n } else if (methodConfig.contentType && methodConfig.responseType) {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n RestHeaders.from({\n 'Content-Type': methodConfig.contentType,\n Accept: methodConfig.contentType,\n responsetypeaxios: methodConfig.responseType,\n }),\n );\n } else if (!methodConfig.contentType && methodConfig.responseType) {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n RestHeaders.from({\n responsetypeaxios: methodConfig.responseType,\n }),\n );\n } else {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n );\n }\n\n endpoints[ctx.uri.href][expressPath] = rest;\n } else {\n rest = endpoints[ctx.uri.href][expressPath] as any;\n }\n\n const method = type.toLowerCase();\n const isWithBody = method === 'put' || method === 'post';\n const pathPrams = {};\n let queryParams = {};\n let bodyObject = {};\n args.forEach((param, i) => {\n let currentParam: Models.Http.Rest.ParamConfig = void 0 as any;\n\n for (let pp in methodConfig.parameters) {\n let v = methodConfig.parameters[pp];\n if (v.index === i) {\n currentParam = v;\n break;\n }\n }\n\n if (currentParam.paramType === 'Path') {\n pathPrams[currentParam.paramName] = param;\n }\n if (currentParam.paramType === 'Query') {\n if (currentParam.paramName) {\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n `${Symbols.old.MAPPING_CONFIG_HEADER_QUERY_PARAMS}${currentParam.paramName} `,\n JSON.stringify(mapping),\n );\n }\n queryParams[currentParam.paramName] = param;\n } else {\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n Symbols.old.MAPPING_CONFIG_HEADER_QUERY_PARAMS,\n JSON.stringify(mapping),\n );\n }\n queryParams = _.cloneDeep(param);\n }\n }\n if (currentParam.paramType === 'Header') {\n if (currentParam.paramName) {\n if (currentParam.paramName === Symbols.old.MDC_KEY) {\n\n rest.headers.set(\n currentParam.paramName,\n encodeURIComponent(JSON.stringify(param)),\n );\n } else {\n rest.headers.set(currentParam.paramName, param);\n }\n } else {\n for (let header in param) {\n rest.headers.set(header, param[header]);\n }\n }\n }\n if (currentParam.paramType === 'Cookie') {\n Resource.Cookies.write(\n currentParam.paramName,\n param,\n currentParam.expireInSeconds,\n );\n }\n if (currentParam.paramType === 'Body') {\n if (currentParam.paramName) {\n if (ClassHelpers.getName(bodyObject) === 'FormData') {\n throw new Error(`[taon - framework] Don use param names when posting / putting FormData.\n Use this:\n\n(@Taon.Http.Param.Body() formData: FormData) ...\n\n\ninstead\n\n (@Taon.Http.Param.Body('${currentParam.paramName}') formData: FormData) ...\n\n`);\n }\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n `${Symbols.old.MAPPING_CONFIG_HEADER_BODY_PARAMS}${currentParam.paramName} `,\n JSON.stringify(mapping),\n );\n }\n bodyObject[currentParam.paramName] = param;\n } else {\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n Symbols.old.MAPPING_CONFIG_HEADER_BODY_PARAMS,\n JSON.stringify(mapping),\n );\n }\n bodyObject = param;\n }\n }\n });\n\n if (\n typeof bodyObject === 'object' &&\n ClassHelpers.getName(bodyObject) !== 'FormData'\n ) {\n let circuralFromItem = [];\n bodyObject = JSON10.parse(\n JSON10.stringify(bodyObject, void 0, void 0, circs => {\n circuralFromItem = circs;\n }),\n );\n rest.headers.set(\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY,\n JSON10.stringify(circuralFromItem),\n );\n }\n\n if (typeof queryParams === 'object') {\n let circuralFromQueryParams = [];\n queryParams = JSON10.parse(\n JSON10.stringify(queryParams, void 0, void 0, circs => {\n circuralFromQueryParams = circs;\n }),\n );\n\n rest.headers.set(\n Symbols.old.CIRCURAL_OBJECTS_MAP_QUERY_PARAM,\n JSON10.stringify(circuralFromQueryParams),\n );\n }\n\n\n const httpResultObj = {\n received: isWithBody\n ? rest.model(pathPrams)[method](bodyObject, [queryParams])\n : rest.model(pathPrams)[method]([queryParams]),\n };\n return httpResultObj;\n };\n\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/endpoint-context.ts","\n\nimport { Helpers } from 'tnp-core/browser';\n\nexport const globalPublicStorage = Helpers.isBrowser ? window : global;\n\n ;({}); // @--end-of-file-for-module=taon lib/storage.ts","\n\n\n\nimport { Stor } from 'taon-storage/browser';\nimport { Helpers, _ } from 'tnp-core/browser';\nimport { Subject, take, takeUntil, tap } from 'rxjs';\nimport type { TaonAdminModeConfigurationComponent } from './taon-admin-mode-configuration.component';\nimport { globalPublicStorage } from '../../storage';\nimport { config } from 'tnp-config/browser';\nimport { Injectable } from '@angular/core';\n\n\nconst ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];\n\n@Injectable({ providedIn: 'root' })\nexport class TaonAdmin {\n public scrollableEnabled = false; // TOOD false by default\n\n\n private constructor() {\n\n this.scrollableEnabled = !!ENV?.useGlobalNgxScrollbar;\n }\n public static get Instance(): TaonAdmin {\n if (!globalPublicStorage[config.frameworkNames.productionFrameworkName]) {\n globalPublicStorage[config.frameworkNames.productionFrameworkName] = new TaonAdmin();\n }\n return globalPublicStorage[config.frameworkNames.productionFrameworkName];\n }\n\n\n\n public cmp: TaonAdminModeConfigurationComponent;\n private onEditMode = new Subject();\n onEditMode$ = this.onEditMode.asObservable();\n\n\n\n // @ts-ignore\n @Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false)\n public adminPanelIsOpen: boolean;\n\n\n\n // @ts-ignore\n @Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false)\n public draggablePopupMode: boolean;\n\n\n\n // @ts-ignore\n @Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false)\n public draggablePopupModeFullScreen: boolean;\n\n\n\n /**\n * Property used in taon\n */ // @ts-ignore\n @Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false)\n public keepWebsqlDbDataAfterReload: boolean;\n\n\n\n setEditMode(value: boolean) {\n this.onEditMode.next(value);\n }\n\n setKeepWebsqlDbDataAfterReload(value: boolean) {\n\n\n\n this.keepWebsqlDbDataAfterReload = value;\n }\n\n enabledTabs = [];\n\n hide() {\n this.draggablePopupMode = false;\n this.adminPanelIsOpen = false;\n }\n\n show() {\n this.draggablePopupMode = false;\n this.adminPanelIsOpen = true;\n }\n\n logout() {}\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin.service.ts","\n\n\nimport { Helpers } from 'tnp-core/browser';\nimport { EndpointContext } from './endpoint-context';\nimport { Models } from './models';\n\nimport { ENV } from './env';\n\nimport { TaonAdmin } from './ui/taon-admin-mode-configuration/taon-admin.service';\n\n\n\n\n\n\nexport const createContext = <\n\n CTX extends Record<string, object>,\n CTRL extends Record<string, new (...args: any[]) => any>,\n ENTITY extends Record<string, new (...args: any[]) => any>,\n REPO extends Record<string, new (...args: any[]) => any>,\n PROVIDER extends Record<string, new (...args: any[]) => any>,\n SUBSCRIBER extends Record<string, new (...args: any[]) => any>,\n\n>(\n configFn: (\n env: any,\n ) => Models.ContextOptions<CTX, CTRL, ENTITY, REPO, PROVIDER, SUBSCRIBER>,\n) => {\n let config = configFn(ENV);\n\n\n\n\n\n const endpointContextRef = new EndpointContext(config, configFn);\n\n\n\n\n\n const res = {\n\n types: {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n get controllers() {\n return config.controllers;\n },\n get repositories() {\n return config.repositories;\n },\n get providers() {\n return config.providers;\n },\n get subscribers() {\n return config.subscribers;\n },\n },\n\n\n get contexts() {\n return config.contexts;\n },\n get contextName() {\n return config.contextName;\n },\n\n\n /**\n * - get reference to internal context\n */\n async __ref() {\n if (!endpointContextRef.inited) {\n await endpointContextRef.init({\n initFromRecrusiveContextResovle: true,\n });\n }\n return endpointContextRef;\n },\n get __refSync() {\n return endpointContextRef;\n },\n getClassInstance<T>(ctor: new (...args: any[]) => T): T {\n return endpointContextRef.getInstanceBy(ctor);\n },\n\n getClass<T>(ctor: new (...args: any[]) => T): new (...args: any[]) => T {\n const classFun = endpointContextRef.getClassFunByClass(ctor);\n return classFun as any;\n\n\n\n\n\n\n\n\n\n\n\n\n\n },\n\n\n /**\n * - create controller instances for context\n * - init database (if enable) + migation scripts\n */\n initialize: async (): Promise<EndpointContext> => {\n return await new Promise(async (resolve, reject) => {\n setTimeout(async () => {\n await endpointContextRef.init();\n if (config.abstract) {\n throw new Error(`Abstract context can not be initialized`);\n }\n await endpointContextRef.initEntities();\n await endpointContextRef.initSubscribers();\n await endpointContextRef.initDatabaseConnection();\n\n\n\n\n\n endpointContextRef.initMetadata();\n endpointContextRef.startServer();\n/* */\n/* */\n \n\n await endpointContextRef.initClasses();\n let keepWebsqlDbDataAfterReload = false;\n\n keepWebsqlDbDataAfterReload =\n TaonAdmin.Instance.keepWebsqlDbDataAfterReload;\n\n if (!Helpers.isNode && keepWebsqlDbDataAfterReload) {\n Helpers.info(`[taon] Keep websql data after reload`);\n } else {\n await endpointContextRef.reinitControllers();\n }\n resolve(endpointContextRef);\n });\n });\n },\n\n };\n return res;\n};\n\n\n ;({}); // @--end-of-file-for-module=taon lib/create-context.ts","\n\nimport { createContext } from '../create-context';\nimport { BaseRepository } from './base-repository';\n\nconst BaseContext = createContext(() => ({\n contextName: 'BaseContext',\n abstract: true,\n repositories: {\n // @ts-ignore\n BaseRepository,\n },\n}));\n\nexport { BaseContext };\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-context.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\nimport { _ } from 'tnp-core/browser';\nimport type { BaseSubscriber } from '../../base-classes/base-subscriber';\n\nexport class TaonSubscriberOptions<\n T = any,\n> extends Models.DecoratorAbstractOpt {\n allowedEvents?: (keyof T)[];\n}\n\nexport function TaonSubscriber(options: TaonSubscriberOptions) {\n return function <T extends { new (...args: any[]): {} }>(constructor: T) {\n Reflect.defineMetadata(\n Symbols.metadata.options.repository,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n ClassHelpers.setName(constructor, options?.className);\n return class extends constructor {\n constructor(...args: any[]) {\n super(...args);\n\n\n const methodNamesAll = ClassHelpers.getMethodsNames(\n constructor.prototype,\n );\n\n const methodNames = methodNamesAll.filter(m => {\n return (\n !['__trigger_event__', 'clone'].includes(m) &&\n !m.startsWith('_') &&\n !m.startsWith('inject')\n );\n });\n\n\n methodNames.forEach(methodName => {\n const originalMethod = (this as any)[methodName];\n\n (this as any)[methodName] = async (...methodArgs: any[]) => {\n const result = originalMethod.apply(this, methodArgs);\n\n\n if (result instanceof Promise) {\n await result;\n }\n\n\n if (\n options.allowedEvents === undefined ||\n options.allowedEvents.includes(methodName)\n ) {\n // @ts-ignore\n (this as BaseSubscriber).__trigger_event__(methodName as any);\n }\n\n return result;\n };\n });\n }\n } as any;\n } as any;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/subscriber-decorator.ts","\n\nimport { EntitySubscriberInterface, RecoverEvent, SoftRemoveEvent, InsertEvent, TransactionStartEvent, TransactionCommitEvent, TransactionRollbackEvent, RemoveEvent, UpdateEvent, } from 'taon-typeorm/browser';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { BaseInjector } from './base-injector';\nimport { TaonSubscriber } from '../decorators/classes/subscriber-decorator';\n\n@TaonSubscriber({\n className: 'BaseSubscriber',\n})\nexport abstract class BaseSubscriber<Entity = any> extends BaseInjector {\n protected __trigger_event__(eventName: keyof Entity) {\n const ctx = this.__endpoint_context__;\n console.log('Trigger event', eventName, ctx);\n\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber.ts","\n\nimport { EntitySubscriberInterface, RecoverEvent, SoftRemoveEvent, InsertEvent, TransactionStartEvent, TransactionCommitEvent, TransactionRollbackEvent, RemoveEvent, UpdateEvent, } from 'taon-typeorm/browser';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { BaseInjector } from './base-injector';\nimport { TaonSubscriber } from '../decorators/classes/subscriber-decorator';\n\n@TaonSubscriber({\n className: 'BaseSubscriberForEntity',\n})\nexport abstract class BaseSubscriberForEntity<Entity = any>\n extends BaseInjector\n implements EntitySubscriberInterface\n{\n abstract listenTo(): new (...args) => Entity;\n\n /**\n * Called after entity is loaded.\n */\n afterLoad(entity: any) {\n console.log(`AFTER ENTITY LOADED: `, entity);\n }\n\n /**\n * Called before query execution.\n */\n beforeQuery(event: any) {\n\n console.log(`BEFORE QUERY: `, event.query);\n }\n\n /**\n * Called after query execution.\n */\n afterQuery(event: any) {\n\n console.log(`AFTER QUERY: `, event.query);\n }\n\n /**\n * Called before entity insertion.\n */\n beforeInsert(event: InsertEvent<any>) {\n console.log(`BEFORE ENTITY INSERTED: `, event.entity);\n }\n\n /**\n * Called after entity insertion.\n */\n afterInsert(event: InsertEvent<any>) {\n console.log(`AFTER ENTITY INSERTED: `, event.entity);\n }\n\n /**\n * Called before entity update.\n */\n beforeUpdate(event: UpdateEvent<any>) {\n console.log(`BEFORE ENTITY UPDATED: `, event.entity);\n }\n\n /**\n * Called after entity update.\n */\n afterUpdate(event: UpdateEvent<any>) {\n console.log(`AFTER ENTITY UPDATED: `, event.entity);\n }\n\n /**\n * Called before entity removal.\n */\n beforeRemove(event: RemoveEvent<any>) {\n console.log(\n `BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called after entity removal.\n */\n afterRemove(event: RemoveEvent<any>) {\n console.log(\n `AFTER ENTITY WITH ID ${event.entityId} REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called before entity removal.\n */\n beforeSoftRemove(event: SoftRemoveEvent<any>) {\n console.log(\n `BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called after entity removal.\n */\n afterSoftRemove(event: SoftRemoveEvent<any>) {\n console.log(\n `AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called before entity recovery.\n */\n beforeRecover(event: RecoverEvent<any>) {\n console.log(\n `BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `,\n event.entity,\n );\n }\n\n /**\n * Called after entity recovery.\n */\n afterRecover(event: RecoverEvent<any>) {\n console.log(\n `AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `,\n event.entity,\n );\n }\n\n /**\n * Called before transaction start.\n */\n beforeTransactionStart(event: TransactionStartEvent) {\n console.log(`BEFORE TRANSACTION STARTED: `, event);\n }\n\n /**\n * Called after transaction start.\n */\n afterTransactionStart(event: TransactionStartEvent) {\n console.log(`AFTER TRANSACTION STARTED: `, event);\n }\n\n /**\n * Called before transaction commit.\n */\n beforeTransactionCommit(event: TransactionCommitEvent) {\n console.log(`BEFORE TRANSACTION COMMITTED: `, event);\n }\n\n /**\n * Called after transaction commit.\n */\n afterTransactionCommit(event: TransactionCommitEvent) {\n console.log(`AFTER TRANSACTION COMMITTED: `, event);\n }\n\n /**\n * Called before transaction rollback.\n */\n beforeTransactionRollback(event: TransactionRollbackEvent) {\n console.log(`BEFORE TRANSACTION ROLLBACK: `, event);\n }\n\n /**\n * Called after transaction rollback.\n */\n afterTransactionRollback(event: TransactionRollbackEvent) {\n console.log(`AFTER TRANSACTION ROLLBACK: `, event);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber-for-entity.ts","\n\nimport * as controller from './base-controller';\nimport * as crudController from './base-crud-controller';\nimport * as entity from './base-entity';\nimport * as abstractEntity from './base-abstract-entity';\nimport * as repository from './base-repository';\nimport * as provider from './base-provider';\nimport * as baseclass from './base-class';\nimport * as baseContext from './base-context';\nimport * as baseSubscriber from './base-subscriber';\nimport * as baseSubscriberEntity from './base-subscriber-for-entity';\nexport namespace Base {\n export import Controller = controller.BaseController;\n export import CrudController = crudController.BaseCrudController;\n export import Entity = entity.BaseEntity;\n export import AbstractEntity = abstractEntity.BaseAbstractEntity;\n export import Provider = provider.BaseProvider;\n export import Class = baseclass.BaseClass;\n export import Repository = repository.BaseRepository;\n export import Subscriber = baseSubscriber.BaseSubscriber;\n export import SubscriberForEntity = baseSubscriberEntity.BaseSubscriberForEntity;\n export const Context = baseContext.BaseContext;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base.ts","\n\nimport { Mapping } from 'ng2-rest/browser';\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { CLASS } from 'typescript-class-helpers/browser';\nimport { Symbols } from '../../symbols';\nimport { _ } from 'tnp-core/browser';\nimport { Models } from '../../models';\n/* */\n/* */\n \n\nexport function TaonEntity<T = any>(options?: TaonEntityOptions<T>) {\n return function (constructor: Function) {\n options = options || ({} as any);\n options.uniqueKeyProp = options.uniqueKeyProp || ('id' as any);\n ClassHelpers.setName(constructor, options?.className);\n\n Mapping.DefaultModelWithMapping<T>(\n options?.defaultModelValues || {},\n _.merge(\n options?.defaultModelMapping || {},\n (options?.defaultModelMappingDeep || {}) as any,\n ),\n )(constructor);\n\n\n Mapping.DefaultModelWithMapping<T>(void 0, {})(constructor);\n\n Reflect.defineMetadata(\n Symbols.metadata.options.entity,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n/* */\n/* */\n \n CLASS.setName(constructor, options?.className); // TODO QUICK_FIX for ng2-rest\n };\n}\n\nexport class TaonEntityOptions<T = any> extends Models.DecoratorAbstractOpt {\n /**\n * default unique property is \"id\"\n * for your entity it may be something else\n */\n uniqueKeyProp?: string;\n createTable?: boolean;\n defaultModelValues?: Mapping.ModelValue<T>;\n defaultModelMapping?: Mapping.Mapping<T>;\n defaultModelMappingDeep?: { [lodashPathes: string]: string | [string] };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/entity-decorator.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\n\nexport function TaonProvider<T = any>(options?: TaonProviderOptions<T>) {\n return function (constructor: Function) {\n Reflect.defineMetadata(\n Symbols.metadata.options.provider,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n ClassHelpers.setName(constructor, options?.className || constructor.name);\n };\n}\n\nexport class TaonProviderOptions<\n T = any,\n> extends Models.DecoratorAbstractOpt {\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/provider-decorator.ts","\n\n\nimport { inject as angularInject } from '@angular/core';\n\nimport { Symbols } from './symbols';\nimport type { EndpointContext } from './endpoint-context';\nimport type { BaseInjector } from './base-classes/base-injector';\nimport { Observable, Subject } from 'rxjs';\nimport type { BaseClass } from './base-classes/base-class';\n\nexport const inject = <T>(entity: () => new (...args: any[]) => T): T => {\n return new Proxy(\n {},\n {\n get: (_, propName) => {\n if (propName === 'hasOwnProperty') {\n return () => false;\n }\n\n const ctor = entity();\n const contextFromClass = ctor[\n Symbols.ctxInClassOrClassObj\n ] as EndpointContext;\n const resultContext = contextFromClass;\n if (resultContext) {\n let instance = resultContext.inject(ctor) as BaseInjector;\n\n\n if (propName === 'getOriginalPrototype') {\n return () => Object.getPrototypeOf(instance);\n }\n if (propName === 'getOriginalConstructor') {\n return () => instance.constructor;\n }\n\n const methods = ctor[Symbols.classMethodsNames] || [];\n const isMethods = methods.includes(propName);\n\n const methodOrProperty = isMethods\n ? instance[propName].bind(instance)\n : instance[propName];\n\n\n\n\n\n return methodOrProperty;\n }\n\n\n return angularInject(ctor)[propName];\n\n },\n },\n ) as T;\n};\n\nexport const injectController = inject;\n\nexport type SubscbtionEvent<T> = {\n name: keyof T;\n data: any;\n};\n\nexport const injectSubscriberEvents = <T>(\n subscriberClassResolveFn: () => new (...args: any[]) => T,\n eventName: keyof T,\n): Observable<SubscbtionEvent<T>> => {\n const eventsSrc = new Subject<SubscbtionEvent<T>>();\n const obs = eventsSrc.asObservable();\n\n let isFirstSubscription = true;\n\n const proxiedObservable = new Proxy(obs, {\n get(target, prop, receiver) {\n if (prop === 'subscribe') {\n return (...args: any[]) => {\n if (isFirstSubscription) {\n isFirstSubscription = false;\n const subscriberClassFN: typeof BaseClass =\n subscriberClassResolveFn() as any;\n const ctx = subscriberClassFN[\n Symbols.ctxInClassOrClassObj\n ] as EndpointContext;\n if (!ctx) {\n throw new Error(\n `You are trying to inject class without context. Use context like this;\n\n Taon.injectSubscriberEvents( ()=> ` +\n `MyContext.getInstance(${subscriberClassFN?.name}), '${eventName as any}' )\n\n\n `,\n );\n }\n const subscriberInstance = ctx.getInstanceBy(subscriberClassFN);\n\n\n console.log('First subscription, you can access arguments here:', {\n subscriberClassFN,\n eventName,\n });\n\n }\n return target.subscribe(...args);\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n\n return proxiedObservable as Observable<SubscbtionEvent<T>>;\n};\n\n ;({}); // @--end-of-file-for-module=taon lib/inject.ts","\n\nexport type TaonEntityKeysToOmit =\n | 'ctrl'\n | 'clone'\n | '__endpoint_context__'\n | 'inject'\n | '_';\n\n ;({}); // @--end-of-file-for-module=taon lib/constants.ts","\n\nimport 'reflect-metadata';\nimport * as http from './decorators/http/http-decorators';\nimport * as base from './base-classes/base';\nimport * as controllerDecorator from './decorators/classes/controller-decorator';\nimport * as entityDecorator from './decorators/classes/entity-decorator';\nimport * as providerDecorator from './decorators/classes/provider-decorator';\nimport * as repositoryDecorator from './decorators/classes/repository-decorator';\nimport * as subscriberDecorator from './decorators/classes/subscriber-decorator';\nimport * as createContextFn from './create-context';\nimport * as orm from './orm';\nimport * as models from './models';\nimport * as coreHelpers from 'tnp-core/browser';\nimport * as injectFn from './inject';\nimport * as endpointContext from './endpoint-context';\nimport * as allSymbols from './symbols';\nimport * as getResponse from './get-response-value';\n\nimport { NgZone } from '@angular/core';\n\n\n\nexport { BaseRepository } from './base-classes/base-repository';\nexport { BaseController } from './base-classes/base-controller';\nexport { BaseProvider } from './base-classes/base-provider';\nexport { BaseSubscriber } from './base-classes/base-subscriber';\nexport { BaseEntity } from './base-classes/base-entity';\nexport { BaseContext } from './base-classes/base-context';\nexport { createContext } from './create-context';\nexport { inject } from './inject';\nexport { Models } from './models';\nexport * from './constants';\nexport { ClassHelpers } from './helpers/class-helpers';\n\n\nexport namespace Taon {\n export import Response = models.Models.Http.Response;\n export import Http = http.Http;\n export import Base = base.Base;\n export import Orm = orm.Orm;\n\n export const getResponseValue = getResponse.getResponseValue;\n\n\n export import Controller = controllerDecorator.TaonController;\n export import Entity = entityDecorator.TaonEntity;\n export import Provider = providerDecorator.TaonProvider;\n export import Repository = repositoryDecorator.TaonRepository;\n export import Subscriber = subscriberDecorator.TaonSubscriber;\n\n\n /**\n * @deprecated\n */\n export const isBrowser = coreHelpers.Helpers.isBrowser;\n /**\n * @deprecated\n */\n export const isNode = coreHelpers.Helpers.isNode;\n /**\n * @deprecated\n */\n export const isWebSQL = coreHelpers.Helpers.isWebSQL;\n /**\n * @deprecated\n */\n export const isElectron = coreHelpers.Helpers.isElectron;\n\n export const createContext = createContextFn.createContext;\n\n export const inject = injectFn.inject;\n\n\n\n\n export const initNgZone = (ngZone: NgZone) => {\n endpointContext.EndpointContext.initNgZone(ngZone);\n };\n\n\n export const symbols = allSymbols.Symbols;\n\n /**\n * @deprecated\n * use createContext instead\n */\n export const init = async (options: {\n host: string;\n entities: Function[];\n controllers: Function[];\n }) => {\n const BaseContext = (await import('./base-classes/base-context'))\n .BaseContext;\n const context = createContext(() => ({\n contextName: 'default',\n host: options.host,\n contexts: { BaseContext },\n database: true,\n entities: Array.from(options.entities) as any,\n controllers: Array.from(options.controllers) as any,\n }));\n\n await context.initialize();\n return context;\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ModelsNg2Rest","methods.GET","methods.POST","methods.PUT","methods.DELETE","methods.PATCH","methods.HEAD","params.Query","params.Path","params.Body","params.Cookie","params.Header","EntityDecorator","ENV","controller.BaseController","crudController.BaseCrudController","entity.BaseEntity","abstractEntity.BaseAbstractEntity","provider.BaseProvider","baseclass.BaseClass","repository.BaseRepository","baseSubscriber.BaseSubscriber","baseSubscriberEntity.BaseSubscriberForEntity","baseContext.BaseContext","angularInject","http.Http","base.Base","getResponse.getResponseValue","controllerDecorator.TaonController","entityDecorator.TaonEntity","providerDecorator.TaonProvider","repositoryDecorator.TaonRepository","subscriberDecorator.TaonSubscriber","createContextFn.createContext","injectFn.inject","endpointContext.EndpointContext","allSymbols.Symbols"],"mappings":";;;;;;;;;;;;;;;;;AAMM,IAAW,OAAO,CAoGvB;AApGD,CAAA,UAAiB,OAAO,EAAA;IACT,OAAoB,CAAA,oBAAA,GAAG,MAAM,EAAE,CAAC;AAChC,IAAA,OAAA,CAAA,uBAAuB,GAAW,MAAM,CAAC,uBAAuB,CAAC;IACjE,OAA2B,CAAA,2BAAA,GAAW,mBAAmB,CAAC;IAC1D,OAAY,CAAA,YAAA,GAAW,eAAe,CAAC;IACvC,OAAqB,CAAA,qBAAA,GAAW,4BAA4B,CAAC;IAC7D,OAAiB,CAAA,iBAAA,GAAW,uBAAuB,CAAC;AAEpD,IAAA,OAAA,CAAA,QAAQ,GAAG;QACtB,SAAS,EAAE,CAAC,WAAmB,KAAK,CAAA,EAAG,WAAW,CAAkB,gBAAA,CAAA;QACpE,YAAY,CAAC,WAAmB,EAAE,SAAiB,EAAA;AACjD,YAAA,OAAO,CAAG,EAAA,WAAW,CAAmB,gBAAA,EAAA,SAAS,EAAE,CAAC;SACrD;AACD;;;;;AAKG;AACH,QAAA,SAAS,EAAE;YAET,MAAM,CAAC,WAAmB,EAAE,WAAmB,EAAA;AAC7C,gBAAA,OAAO,CAAG,EAAA,WAAW,CAAmB,gBAAA,EAAA,WAAW,EAAE,CAAC;aACvD;AACD;;AAEG;AACH,YAAA,gBAAgB,CACd,WAAmB,EACnB,SAAiB,EACjB,YAAoB,EAAA;AAEpB,gBAAA,OAAO,CAAG,EAAA,WAAW,CAAQ,KAAA,EAAA,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,YAAY,CAAA,CAAE,CAAC,WAAW,EAAE,CAAC;aACpF;AACD,YAAA,aAAa,CACX,WAAmB,EACnB,SAAiB,EACjB,QAAyB,EAAA;AAEzB,gBAAA,OAAO,CAAG,EAAA,WAAW,CAAQ,KAAA,EAAA,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAA,CAAE,CAAC,WAAW,EAAE,CAAC;aAChF;AACD,YAAA,sBAAsB,CACpB,WAAmB,EACnB,SAAiB,EACjB,QAAgB,EAChB,QAAyB,EAAA;gBAEzB,OAAO,CAAA,EAAG,WAAW,CAAQ,KAAA,EAAA,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAG,EAAA,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA,EAAG,QAAQ,CAAE,CAAA,CAAC,WAAW,EAAE,CAAC;aACxG;AAED,YAAA,SAAS,EAAE;gBACT,MAAM,EAAE,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAA+B,6BAAA,CAAA;gBAC7E,oBAAoB,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAA4B,0BAAA,CAAA;gBACvF,6BAA6B,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAAoC,kCAAA,CAAA;AACzG,aAAA;AACD,YAAA,WAAW,EAAE;gBACX,MAAM,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAAiC,+BAAA,CAAA;gBAC9E,oBAAoB,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAA8B,4BAAA,CAAA;gBACzF,6BAA6B,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAAsC,oCAAA,CAAA;AAC3G,aAAA;AACF,SAAA;KACF,CAAC;AAEW,IAAA,OAAA,CAAA,QAAQ,GAAG;AACtB,QAAA,SAAS,EAAE,CAAgB,cAAA,CAAA;AAC3B,QAAA,OAAO,EAAE;AACP,YAAA,iBAAiB,EAAE,CAA4B,0BAAA,CAAA;AAC/C,YAAA,UAAU,EAAE,CAAoB,kBAAA,CAAA;AAChC,YAAA,gBAAgB,EAAE,CAA2B,yBAAA,CAAA;AAC7C,YAAA,MAAM,EAAE,CAAgB,cAAA,CAAA;AACxB,YAAA,UAAU,EAAE,CAAoB,kBAAA,CAAA;AAChC,YAAA,QAAQ,EAAE,CAAkB,gBAAA,CAAA;AAC5B,YAAA,UAAU,EAAE,CAAoB,kBAAA,CAAA;AACjC,SAAA;KACF,CAAC;AAEW,IAAA,OAAA,CAAA,GAAG,GAAG;QACjB,eAAe,EAAE,MAAM,EAAE;AACzB,QAAA,OAAO,EAAE,CAAiB,eAAA,CAAA;QAC1B,wBAAwB,EAAE,MAAM,EAAE;QAClC,8BAA8B,EAAE,MAAM,EAAE;QACxC,6BAA6B,EAAE,MAAM,EAAE;QACvC,4BAA4B,EAAE,MAAM,EAAE;AAEtC,QAAA,aAAa,EAAE,CAAe,aAAA,CAAA;AAC9B,QAAA,yBAAyB,EAAE,CAAiB,eAAA,CAAA;AAC5C,QAAA,gCAAgC,EAAE,CAAiB,eAAA,CAAA;AACnD,QAAA,qBAAqB,EAAE,CAAe,aAAA,CAAA;AACtC,QAAA,iCAAiC,EAAE,CAAc,YAAA,CAAA;AACjD,QAAA,kCAAkC,EAAE,CAAe,aAAA,CAAA;AACnD,QAAA,oBAAoB,EAAE,CAA0B,wBAAA,CAAA;AAChD,QAAA,uBAAuB,EAAE,CAA0B,wBAAA,CAAA;AACnD,QAAA,UAAU,EAAE,CAAsB,oBAAA,CAAA;AAClC,QAAA,OAAO,EAAE;YACP,WAAW,EAAE,MAAM,EAAE;AACtB,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,gBAAgB,EAAE,CAA6F,2FAAA,CAAA;AAChH,SAAA;KACF,CAAC;AACJ,CAAC,EApGgB,OAAO,KAAP,OAAO,GAoGvB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACvGD,IAAW,UAAU,CA+F1B;AA/FD,CAAA,UAAiB,UAAU,EAAA;AAEZ,IAAA,UAAA,CAAA,kBAAkB,GAAG,CAAC,SAAS,EAAE,MAAgB,KAAI;QAChE,UAAU,CAAC,MAAK;AAEd,YAAA,IAAI,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;gBAC5B,MAAM,CAAA;;;;;;;;;;;;;;;;SAgBL,CAAC;aACH;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;AAC5D,KAAC,CAAC;AAIW,IAAA,UAAA,CAAA,mCAAmC,GAAG,CACjD,OAA8B,EAC9B,OAA4B,KAC1B;QACF,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACzB,OAAO;SACR;AACD,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACnD,YAAA,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,EAAE;gBACtE,MAAM,IAAI,KAAK,CAAC,CAAA;;;YAGZ,CAAC,CAAC,UAAU,CAAA,YAAA,EAAe,CAAC,CAAC,IAAI,CAAA,qBAAA,EAAwB,CAAC,CAAC,YAAY,IAAI,mBAAmB,CAAA;YAC9F,OAAO,CAAC,UAAU,CAAe,YAAA,EAAA,OAAO,CAAC,IAAI,CAAA,oBAAA,EAAuB,OAAO,CAAC,YAAY,CAAA;;;;AAI3F,QAAA,CAAA,CAAC,CAAC;aACJ;SACF;AACH,KAAC,CAAC;IAKW,UAAsB,CAAA,sBAAA,GAAG,CACpC,WAAkB,EAClB,QAAe,EACf,QAAe,EACf,YAAmB,KACjB;AACF,QAAA,IACE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;YACtB,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EACpD;AACA,YAAA,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC1C,MAAM,CAAA;;;;GAIT,CAAC;SACC;AAED,QAAA,IACE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnB,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EACjD;AACA,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACnC,MAAM,CAAA;;;;GAIT,CAAC;SACC;AACH,KAAC,CAAC;AAGW,IAAA,UAAA,CAAA,qBAAqB,GAAG,CAAC,KAAK,EAAE,EAAE,KAAI;AACjD,QAAA,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,CAAA,8BAAA,EAAiC,EAAE,CAAA,CAAE,CAAC;SAC7C;AACH,KAAC,CAAC;AACJ,CAAC,EA/FgB,UAAU,KAAV,UAAU,GA+F1B,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC/FD,IAAW,WAAW,CAgK3B;AAhKD,CAAA,UAAiB,WAAW,EAAA;AAEb,IAAA,WAAA,CAAA,QAAQ,GAAG,CAAC,CAAS,EAAE,WAAmB,KAAI;QACzD,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAG;AAC9B,YAAA,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACf,gBAAA,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACpB;AACD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,KAAC,CAAC;AAIW,IAAA,WAAA,CAAA,UAAU,GAAG,CAAC,CAAS,KAAI;AACtC,QAAA,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACvD,KAAC,CAAC;IAIW,WAAiB,CAAA,iBAAA,GAAG,KAAK,IAAG;AACvC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAAE,gBAAA,OAAO,CAAC,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACxC,YAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACnB,gBAAA,OAAO,IAAI,CAAC;aACb;AACD,YAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,gBAAA,OAAO,KAAK,CAAC;aACd;AACD,YAAA,IAAI;gBACF,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7B,gBAAA,OAAO,CAAC,CAAC;aACV;YAAC,OAAO,CAAC,EAAE;AACV,gBAAA,OAAO,KAAK,CAAC;aACd;SACF;AACD,QAAA,OAAO,KAAK,CAAC;AACf,KAAC,CAAC;AAIW,IAAA,WAAA,CAAA,cAAc,GAAG,CAC5B,CAAiC,EACjC,iBAAsC,KACpC;QACF,IAAI,OAAO,iBAAiB,KAAK,QAAQ;AACvC,YAAA,OAAO,CAAG,EAAA,CAAC,CAAC,cAAc,GAAG,iBAAiB,CAAA,CAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACtE,QAAA,OAAO,GAAG,CAAC,CAAC,cAAc,CAAA,EAAG,iBAAiB,CAAC,IAAI,CAAE,CAAA,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3E,KAAC,CAAC;IAIW,WAAW,CAAA,WAAA,GAAG,KAAK,IAAG;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,EAAE,CAAC;QACzC,IAAI,OAAO,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,KAAK,CAAC;AAC7C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;QACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,EAAE,CAAC;AAC3C,KAAC,CAAC;IAIW,WAAwB,CAAA,wBAAA,GAAG,CACtC,MAAc,EACd,MAAM,GAAG,KAAK,KACJ;QAEV,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACvB,IAAI,MAAM,EAAE;gBACV,OAAO,CAAC,KAAK,CACX,CAAA;;AAEqC,6CAAA,EAAA,OAAO,MAAM,CAAA;SACnD,EACC,MAAM,CACP,CAAC;aACH;AAED,YAAA,OAAO,MAAM,CAAC;SACf;QAED,IAAI,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YAC7B,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI;gBACF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;gBACxB,MAAM,GAAG,IAAI,CAAC;aACf;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,GAAG,KAAK,CAAC;aAChB;YAED,IAAI,MAAM,EAAE;AACV,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,YAAA,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;aACtD;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,GAAG,CAAC;AACb,KAAC,CAAC;IAIW,WAAmB,CAAA,mBAAA,GAAG,QAAQ,IAAG;AAC5C,QAAA,OAAO,gDAAgD,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzE,KAAC,CAAC;IAIW,WAAkB,CAAA,kBAAA,GAAG,CAChC,MAAgB,EAChB,YAAiC,EACjC,WAAmB,KACjB;QACF,OAAO;YACL,UAAU;AACV,YAAA,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5B,YAAA,YAAY,CAAC,UAAU;AACvB,YAAA,YAAY,CAAC,IAAI;YACjB,WAAW;AACZ,SAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,KAAC,CAAC;IAIW,WAAiB,CAAA,iBAAA,GAAG,CAC/B,MAAgB,EAChB,YAAiC,EACjC,WAAmB,KACjB;QACF,OAAO;YACL,SAAS;AACT,YAAA,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5B,YAAA,YAAY,CAAC,UAAU;AACvB,YAAA,YAAY,CAAC,IAAI;YACjB,WAAW;AACZ,SAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,KAAC,CAAC;IAIW,WAAW,CAAA,WAAA,GAAG,OAAO,IAAG;AACnC,QAAA,MAAM,QAAQ,GAAqB;AACjC,YAAA,MAAM,CAAC,MAAW,EAAA;gBAEhB,OAAO;AACL,oBAAA,IAAI,CAAC,IAAS,EAAA;qBAEb;iBACF,CAAC;aACH;YACD,SAAS,CAAC,GAAW,EAAE,KAAU,EAAA;AAE/B,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACtB;SACF,CAAC;QACF,MAAM,OAAO,GAAoB,EAAE,CAAC;AACpC,QAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,KAAC,CAAC;AAEJ,CAAC,EAhKgB,WAAW,KAAX,WAAW,GAgK3B,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC/JP;AACA;AAGM,IAAW,aAwQhB;AAxQD,CAAA,UAAiB,YAAY,EAAA;AAE3B;;AAEG;AACU,IAAA,YAAA,CAAA,oBAAoB,GAAG,CAAC,IAAY,KAAI;AACnD,QAAA,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACzC,OAAO;SACR;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;QACD,MAAM,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACtC,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ;cACxD,CAAC,CAAC,WAAW;cACb,KAAK,CAAC,CAAC;AACb,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,OAAO,GAAG,CAAC,eAAoB,KAAY;AAEtD,QAAA,IAAI,eAAe,YAAY,QAAQ,EAAE;AACvC,YAAA,OAAO,UAAU,CAAC;SACnB;QACD,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;AAClD,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0CAAA,CAA4C,CAAC,CAAC;SAC/D;AACD,QAAA,QACE,CAAC,eAAe,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAC/C,cAAE,eAAe,CAAC,OAAO,CAAC,uBAAuB,CAAC;cAChD,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,uBAAuB,CAAC;AACjE,YAAA,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAC9B;AACJ,KAAC,CAAC;AAGW,IAAA,YAAA,CAAA,eAAe,GAAG,CAAC,eAAoB,KAAS;QAC3D,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,eAAe,CAAC;SACxB;AACD,QAAA,OAAO,YAAA,CAAA,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAC,CAAC;AAGW,IAAA,YAAA,CAAA,mBAAmB,GAAG,CAAC,eAAoB,KAAY;QAGlE,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,eAAe,CAAA,CAAE,CAAC,CAAC;SAC7D;AACD,QAAA,QACE,CAAC,eAAe,CAAC,OAAO,CAAC,2BAA2B,CAAC;AACnD,cAAE,eAAe,CAAC,OAAO,CAAC,2BAA2B,CAAC;cACpD,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,2BAA2B,CAAC;YACrE,KAAK,CAAC,EACN;AACJ,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,WAAW,GAAG,CAAC,eAAoB,KAAY;AAC1D,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;AAC3C,cAAE,eAAe;AACjB,cAAE,eAAe,CAAC,WAAW,CAAC;AAChC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,OAAO,CACa,CAAC;QACvB,OAAO,MAAM,CAAC,aAAa,CAAC;AAC9B,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,oBAAoB,GAAG,CAAC,GAAQ,KAAa;AACxD,QAAA,IACE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAChB,YAAA,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AACd,YAAA,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACf,YAAA,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACf,YAAA,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,EACpB;AACA,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,MAAM,SAAS,GAAG,YAAA,CAAA,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,QAAQ,CAAC;AACzD,KAAC,CAAC;AAKW,IAAA,YAAA,CAAA,OAAO,GAAG,CAAC,MAAgB,EAAE,SAAiB,KAAU;AAEnE,QAAA,UAAU,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACjD,QAAA,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAC;AACtD,KAAC,CAAC;IAIW,YAAsB,CAAA,sBAAA,GAAG,CACpC,MAAgB,EAChB,SAAiB,EACjB,OAAO,GAAG,EAAE,KACD;QACX,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,IAAI,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAEhD,QAAA,IACE,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;YACzB,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,SAAS,EAC/C;AAEA,YAAA,OAAO,IAAI,CAAC;SACb;QACD,OAAO,YAAA,CAAA,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACjE,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,mBAAmB,GAAG,CACjC,MAAgB,KACuB;AACvC,QAAA,MAAM,oBAAoB,GAA0B,OAAO,CAAC,WAAW,CACrE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,MAAM,CACP,CAAC;AACF,QAAA,MAAM,aAAa,GAA4B,CAAC,CAAC,KAAK,CACpD,IAAI,MAAM,CAAC,gBAAgB,EAAE,EAC7B,oBAAoB,CACrB,CAAC;QAGF,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAEzD,QAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AACpC,YAAA,MAAM,cAAc,GAAwB,OAAO,CAAC,WAAW,CAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,MAAM,EACN,UAAU,CACX,CAAC;YAEF,IAAI,cAAc,EAAE;AAClB,gBAAA,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC;aACpD;SACF;AACD,QAAA,OAAO,aAAa,CAAC;AACvB,KAAC,CAAC;AAMF,IAAA,MAAM,sBAAsB,GAAG;QAC7B,QAAQ;QACR,MAAM;QACN,WAAW;QACX,QAAQ;QACR,aAAa;QACb,OAAO;QACP,MAAM;QACN,MAAM;QACN,UAAU;QACV,kBAAkB;QAClB,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;QAClB,kBAAkB;QAClB,eAAe;QACf,sBAAsB;QACtB,SAAS;QACT,WAAW;QACX,gBAAgB;KACjB,CAAC;IAGW,YAAe,CAAA,eAAA,GAAG,CAC7B,oBAAyB,EACzB,eAAe,GAAG,EAAE,KACR;QACZ,IAAI,CAAC,oBAAoB,EAAE;AACzB,YAAA,OAAO,eAAe,CAAC;SACxB;QAED,MAAM,eAAe,GAAG,CAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,eAAe;AAC9B,cAAE,oBAAoB;AACtB,cAAE,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,eAAe;cAChC,oBAAiC,EAAE,SAAS;cAC7C,oBAAoB,CAAC;QACzB,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;AAEhE,QAAA,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC;AACxB,YAAA,GAAG,MAAM,CAAC,mBAAmB,CAAC,aAAa,IAAI,EAAE,CAAC;AAClD,YAAA,GAAG,MAAM,CAAC,mBAAmB,CAAC,YAAY,IAAI,EAAE,CAAC;AACjD,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;AACnC,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;AACnC,SAAA,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3D,UAAU;AACP,aAAA,MAAM,CAAC,UAAU,IAAI,OAAO,aAAa,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC;AACrE,aAAA,OAAO,CAAC,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzC,QAAA,IACE,CAAC,QAAQ;YACT,CAAC,QAAQ,CAAC,WAAW;AACrB,YAAA,QAAQ,EAAE,WAAW,EAAE,IAAI,KAAK,QAAQ,EACxC;AACA,YAAA,OAAO,eAAe,CAAC;SACxB;AACD,QAAA,OAAO,YAAA,CAAA,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC;AAC3E,KAAC,CAAC;IAIW,YAAoB,CAAA,oBAAA,GAAG,CAClC,MAAgB,EAChB,UAAqC,EAAE,EACvC,YAAuB,KACa;QACpC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACzB,MAAM,CAAA,wEAAA,EAA2E,MAAM,CAAA,CAAE,CAAC;SAC3F;AAED,QAAA,IAAI,MAAsC,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAClD,QAAA,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC;AAC5E,QAAA,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,KAAK,EAAE,CAAC;AAErE,QAAA,MAAM,GAAG,YAAA,CAAA,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAErC,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAErB,QAAA,OAAO,aAAa;cAChB,aAAA,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC;cAClD,OAAO,CAAC;AACd,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,oBAAoB,GAAG,CAAC,MAAgB,KAAI;AACvD,QAAA,MAAM,OAAO,GAAG,YAAA,CAAA,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAE7C,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,aAAA,OAAO,EAAE;aACT,GAAG,CAAC,EAAE,IAAG;YACR,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;gBACnC,OAAO,EAAE,CAAC,IAAI,CAAC;aAChB;YACD,OAAO,EAAE,CAAC,SAAS,CAAC;AACtB,SAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,OAAO,CAAA,CAAA,EAAI,qBAAqB,CAAA,CAAA,EAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC;AACrE,KAAC,CAAC;AAEJ,CAAC,EAxQgB,YAAY,KAAZ,YAAY,GAwQ5B,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACnRP;AACA;AAOM,IAAW,OAoRhB;AApRD,CAAA,UAAiB,MAAM,EAAA;AAQrB,IAAA,IAAY,SAMX,CAAA;AAND,IAAA,CAAA,UAAY,SAAS,EAAA;AACnB,QAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,QAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,QAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,QAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,QAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AAC3B,KAAC,EANW,SAAS,GAAT,MAAS,CAAA,SAAA,KAAT,gBAAS,GAMpB,EAAA,CAAA,CAAA,CAAA;AAEY,IAAA,MAAA,CAAA,YAAY,GAAG;AAC1B,QAAA,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU;AAC9B,QAAA,CAAC,SAAS,CAAC,UAAU,GAAG,aAAa;AACrC,QAAA,CAAC,SAAS,CAAC,UAAU,GAAG,cAAc;AACtC,QAAA,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;AACjC,QAAA,CAAC,SAAS,CAAC,UAAU,GAAG,aAAa;KAGtC,CAAC;AA4GF,IAAA,MAAa,oBAAoB,CAAA;AAEhC,KAAA;AAFY,IAAA,MAAA,CAAA,oBAAoB,uBAEhC,CAAA;AAID,IAAA,MAAa,WAAW,CAAA;AAMvB,KAAA;AANY,IAAA,MAAA,CAAA,WAAW,cAMvB,CAAA;AAID,IAAA,MAAa,YAAY,CAAA;AAAzB,QAAA,WAAA,GAAA;;;YAoBE,IAAU,CAAA,UAAA,GAAyC,EAAE,CAAC;SACvD;AAAA,KAAA;AArBY,IAAA,MAAA,CAAA,YAAY,eAqBxB,CAAA;IAID,MAAa,gBAAiB,SAAQ,oBAAoB,CAAA;AAA1D,QAAA,WAAA,GAAA;;YAIE,IAAO,CAAA,OAAA,GAA2C,EAAE,CAAC;SACtD;AAAA,KAAA;AALY,IAAA,MAAA,CAAA,gBAAgB,mBAK5B,CAAA;IAID,MAAa,uBAAwB,SAAQ,gBAAgB,CAAA;AAG5D,KAAA;AAHY,IAAA,MAAA,CAAA,uBAAuB,0BAGnC,CAAA;AAID,IAAA,IAAiB,IAAI,CAqFpB;AArFD,IAAA,CAAA,UAAiB,IAAI,EAAA;QACL,IAAI,CAAA,IAAA,GAAGA,QAAa,CAAC;AA+CnC,QAAA,MAAa,MAAM,CAAA;YAKjB,WACS,CAAA,OAAe,EACd,IAAA,GAA+B,GAAG,EAAA;gBADnC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;gBACd,IAAI,CAAA,IAAA,GAAJ,IAAI,CAA8B;gBANrC,IAAQ,CAAA,QAAA,GAAG,MAAa;oBAC7B,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,iBAAC,CAAC;aAKE;AAEI,YAAA,OAAO,MAAM,CACnB,OAAe,EACf,OAA+B,GAAG,EAAA;AAElC,gBAAA,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aAClC;YAEM,OAAO,cAAc,CAAC,MAAiB,EAAA;AAC5C,gBAAA,OAAO,MAAM,CAAC,MAAM,CAClB,CAAU,OAAA,EAAA,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA,UAAA,CAAY,CACnD,CAAC;aACH;AAEM,YAAA,OAAO,MAAM,CAClB,OAAe,EACf,OAA+B,GAAG,EAAA;gBAElC,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aACrC;AACF,SAAA;AA7BY,QAAA,IAAA,CAAA,MAAM,SA6BlB,CAAA;;;;;;AAQH,KAAC,EArFgB,IAAI,GAAJ,MAAI,CAAA,IAAA,KAAJ,WAAI,GAqFpB,EAAA,CAAA,CAAA,CAAA;AAEH,CAAC,EApRgB,MAAM,KAAN,MAAM,GAoRtB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC7RP,MAAM,OAAO,GAAG,CACd,MAAmC,EACnC,IAAY,EACZ,MAAgB,EAChB,WAAmB,EACnB,UAA8B,EAC9B,aAAgD,EAChD,YAAqB,KACnB;AACF,IAAA,IAAI,OAAiC,CAAC;AACtC,IAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;QACrC,OAAO,GAAG,aAAa,CAAC;AACxB,QAAA,aAAa,GAAG,OAAO,CAAC,IAAW,CAAC;AACpC,QAAA,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;AACtC,QAAA,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;KACrB;SAAM;AACL,QAAA,OAAO,GAAG,EAAE,aAAa,EAAE,YAAY,EAAS,CAAC;KAClD;AAED,IAAA,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IAE7D,IAAI,YAAY,GAAwB,OAAO,CAAC,WAAW,CACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;IACF,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AACzC,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,YAAY,EACZ,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;KACH;AAED,IAAA,YAAY,CAAC,UAAU,GAAG,WAAW,CAAC;AACtC,IAAA,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE;QACT,IAAI,sBAAsB,GAAG,EAAE,CAAC;AAChC,QAAA,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE;YACzC,IAAI,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7C,gBAAA,IACE,OAAO,CAAC,SAAS,KAAK,MAAM;AAC5B,oBAAA,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;oBAC7B,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EACnC;oBACA,sBAAsB,IAAI,CAAI,CAAA,EAAA,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAA,CAAE,CAAC;iBACzE;aACF;SACF;QACD,YAAY,CAAC,IAAI,GAAG,CAAA,CAAA,EAAI,WAAW,CAAG,EAAA,sBAAsB,EAAE,CAAC;KAChE;SAAM;AACL,QAAA,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;KAC1B;AAED,IAAA,YAAY,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,IAAA,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC;AACnC,IAAA,YAAY,CAAC,WAAW,GAAG,mBAAmB,CAAC;AAC/C,IAAA,YAAY,CAAC,YAAY,GAAG,mBAAmB,CAAC;AAChD,IAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,YAAY,EACZ,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;AAEJ,CAAC,CAAC;SASc,GAAG,CACjB,aAAiD,EACjD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,KAAK,EACL,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,IAAI,CAClB,aAAiD,EACjD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,MAAM,EACN,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,IAAI,CAClB,aAAiD,EACjD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,MAAM,EACN,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,GAAG,CACjB,aAAiD,EACjD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,KAAK,EACL,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,KAAK,CACnB,aAAiD,EACjD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,OAAO,EACP,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,MAAM,CACpB,aAAiD,EACjD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,QAAQ,EACR,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC5MP,SAAS,SAAS,CAChB,KAAiC,EACjC,IAAY,EACZ,MAAc,EACd,YAAY,GAAG,SAAS,EACxB,MAAgB,EAChB,WAA4B,EAC5B,cAAsB,EAAA;IAEtB,IAAI,YAAY,GAAwB,OAAO,CAAC,WAAW,CACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;IACF,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AACzC,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,YAAY,EACZ,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;KACH;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AACpC,IAAA,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CACpE,OAAO,CACR;AACC,UAAE,IAAI,MAAM,CAAC,WAAW,EAAE;UACxB,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,IAAA,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC;AACzB,IAAA,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;AACnB,IAAA,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;AACpB,IAAA,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC;AAC7B,IAAA,CAAC,CAAC,eAAe,GAAG,MAAM,CAAC;AAC3B,IAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,YAAY,EACZ,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;AAEJ,CAAC;AAEK,SAAU,IAAI,CAAC,IAAY,EAAA;AAC/B,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AAC9E,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,KAAK,CAAC,IAAa,EAAA;AACjC,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CACP,OAAO,EACP,IAAI,EACJ,SAAS,EACT,EAAE,EACF,MAAM,EACN,WAAW,EACX,cAAc,CACf,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,MAAM,CAAC,IAAY,EAAE,iBAAyB,IAAI,EAAA;AAChE,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CACP,QAAQ,EACR,IAAI,EACJ,cAAc,EACd,EAAE,EACF,MAAM,EACN,WAAW,EACX,cAAc,CACf,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,MAAM,CAAC,IAAa,EAAA;AAClC,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CACP,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,EAAE,EACF,MAAM,EACN,WAAW,EACX,cAAc,CACf,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,IAAI,CAAC,IAAa,EAAA;AAChC,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AAC9E,KAAC,CAAC;AACJ,CAAC;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACtHD,IAAW,IAAI,CAcpB;AAdD,CAAA,UAAiB,IAAI,EAAA;AACL,IAAA,IAAA,CAAA,GAAG,GAAGC,GAAW,CAAC;AAClB,IAAA,IAAA,CAAA,IAAI,GAAGC,IAAY,CAAC;AACpB,IAAA,IAAA,CAAA,GAAG,GAAGC,GAAW,CAAC;AAClB,IAAA,IAAA,CAAA,MAAM,GAAGC,MAAc,CAAC;AACxB,IAAA,IAAA,CAAA,KAAK,GAAGC,KAAa,CAAC;AACtB,IAAA,IAAA,CAAA,IAAI,GAAGC,IAAY,CAAC;AAClC,IAAA,IAAiB,KAAK,CAMrB;AAND,IAAA,CAAA,UAAiB,KAAK,EAAA;AACN,QAAA,KAAA,CAAA,KAAK,GAAGC,KAAY,CAAC;AACrB,QAAA,KAAA,CAAA,IAAI,GAAGC,IAAW,CAAC;AACnB,QAAA,KAAA,CAAA,IAAI,GAAGC,IAAW,CAAC;AACnB,QAAA,KAAA,CAAA,MAAM,GAAGC,MAAa,CAAC;AACvB,QAAA,KAAA,CAAA,MAAM,GAAGC,MAAa,CAAC;AACvC,KAAC,EANgB,KAAK,GAAL,IAAK,CAAA,KAAA,KAAL,UAAK,GAMrB,EAAA,CAAA,CAAA,CAAA;AACH,CAAC,EAdgB,IAAI,KAAJ,IAAI,GAcpB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACfD,SAAU,cAAc,CAAC,OAA+B,EAAA;AAC5D,IAAA,OAAO,UAAU,WAAqB,EAAA;QACpC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACtD,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;AAEY,MAAA,qBAAsB,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AASrE,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCtBM,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;AAuHE;;AAEG;QACO,IAAwB,CAAA,wBAAA,GAAG,EAA2B,CAAC;KAkIlE;AAjPC;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAA;AACL,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC;AAClD,QAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AAC9B,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACzB;KACF;AAID;;AAEG;AACH,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAoB,CAAC;KAC9D;AAMD;;AAEG;AACH,IAAA,UAAU,CAAI,aAAwC,EAAA;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtC,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,uBAAuB,EAAE,gBAAgB;AACzC,YAAA,2BAA2B,EAAE,CAAC,MAAM,aAAa,CAAC;AACnD,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAgB,CAAC,CAAC;AACrD,QAAA,OAAO,SAAgB,CAAC;KACzB;AAID,IAAA,sBAAsB,CACpB,oBAA+C,EAAA;AAE/C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAI,oBAAoB,EAAE;AACvD,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,2BAA2B,EAAE;AAC3B,gBAAA,MAAM,oBAAoB,CAAC,SAAS,CAAC,oBAAoB,EAAE;AAC5D,aAAA;AACF,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAgB,CAAC,CAAC;AACrD,QAAA,OAAO,SAAS,CAAC;KAClB;AAID;;AAEG;AACH,IAAA,gBAAgB,CAAI,oBAA+C,EAAA;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAI,oBAAoB,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAgB,CAAC,CAAC;AACrD,QAAA,OAAO,SAAS,CAAC;KAClB;AAID,IAAA,gBAAgB,CAAI,IAA+B,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAI,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACzD;AAKD;;AAEG;AACH,IAAA,gBAAgB,CAAI,IAA+B,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAI,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACzD;AAID;;AAEG;AACH,IAAA,UAAU,CAAI,IAA+B,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAI,IAAI,CAAC,CAAC;KACvC;AAID;;AAEG;AACH,IAAA,oBAAoB,CAAI,IAA+B,EAAA;AACrD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAI,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACzD;AAID;;;AAGG;AACH,IAAA,qBAAqB,CAAI,IAA+B,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAI,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACzD;AASD;;;AAGG;IACK,QAAQ,CACd,IAA+B,EAC/B,OASC,EAAA;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,EAAS,CAAC;SACrB;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,QAAA,OAAO,IAAI,KAAK,CACd,EAAE,EACF;AACE,YAAA,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAI;gBACpB,MAAM,gBAAgB,GACpB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;gBAE7C,MAAM,aAAa,GAAoB,gBAAgB;AACrD,sBAAE,gBAAgB;AAClB,sBAAE,IAAI,CAAC,oBAAoB,CAAC;AAE9B,gBAAA,IAAI,OAAO,CAAC,uBAAuB,EAAE;oBACnC,MAAM,aAAa,GAAG,aAAa,CAAC,sBAAsB,CACxD,OAAO,CAAC,uBAAuB,CAChC,CAAC;oBACF,IAAI,GAAG,aAAoB,CAAC;iBAC7B;gBAED,IAAI,aAAa,EAAE;AACjB,oBAAA,IAAI,QAAQ,GAAM,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3C,wBAAA,GAAG,OAAO;wBACV,oBAAoB;AACrB,qBAAA,CAAC,CAAC;oBACH,IAAI,CAAC,QAAQ,EAAE;AACb,wBAAA,MAAM,IAAI,KAAK,CACb,CAAA,oBAAA,EACE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IACrC,CAAW,SAAA,CAAA;4BACT,CAAa,UAAA,EAAA,QAAQ,EAAE,QAAQ,EAAE,CAAA,aAAA,EAAgB,YAAY,CAAC,OAAO,CACnE,IAAI,CACL,CAAA;;4BAGH,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IACrC,CAAA;;AAEC,cAAA,CAAA,CACA,CAAC;qBACH;oBAED,MAAM,MAAM,GACV,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,UAAU;0BACpC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,0BAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAGzB,oBAAA,OAAO,MAAM,CAAC;iBACf;aAIF;YACD,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAI;gBAC3B,MAAM,gBAAgB,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;gBACpE,MAAM,aAAa,GAAoB,gBAAgB;AACrD,sBAAE,gBAAgB;AAClB,sBAAE,IAAI,CAAC,oBAAoB,CAAC;AAE9B,gBAAA,IAAI,OAAO,CAAC,uBAAuB,EAAE;oBACnC,MAAM,aAAa,GAAG,aAAa,CAAC,sBAAsB,CACxD,OAAO,CAAC,uBAAuB,CAChC,CAAC;oBACF,IAAI,GAAG,aAAoB,CAAC;iBAC7B;gBAED,IAAI,aAAa,EAAE;AACjB,oBAAA,IAAI,QAAQ,GAAM,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3C,wBAAA,GAAG,OAAO;wBACV,oBAAoB;AACrB,qBAAA,CAAC,CAAC;oBACH,IAAI,CAAC,QAAQ,EAAE;AACb,wBAAA,MAAM,oBAAoB,GACxB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;AAC1C,wBAAA,MAAM,IAAI,KAAK,CACb,CAAA,oBAAA,EAAuB,oBAAoB,CAAW,SAAA,CAAA;4BACpD,CAAa,UAAA,EAAA,QAAQ,EAAE,QAAQ,EAAE,CAAA,aAAA,EAAgB,YAAY,CAAC,OAAO,CACnE,IAAI,CACL,CAAA;;4BAGH,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IACrC,CAAA;;AAEC,cAAA,CAAA,CACA,CAAC;qBACH;AACD,oBAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;iBAC5B;AACD,gBAAA,OAAO,IAAI,CAAC;aACb;AACF,SAAA,CACG,CAAC;KACR;AAMM,IAAA,KAAK,CAAC,QAAyB,EAAA;QACpC,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE5E,QAAA,OAAO,MAAM,CAAC;KACf;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACnQA,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,YAAY,CAAA;AAC9C;;AAEG;IACH,iBAAiB,GAAA;QACf,OAAO,KAAK,CAAC,CAAC;KACf;EAGF;AATY,cAAc,GAAA,UAAA,CAAA;AAD1B,IAAA,cAAc,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACnC,CAAA,EAAA,cAAc,CAS1B,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACWP;;AAEG;AAEI,IAAe,kBAAkB,GAAjC,MAAe,kBAA2B,SAAQ,cAAc,CAAA;AAarE,IAAA,MAAM,CAAC,GAAA;QACL,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;AAC5C,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,iCAAA,EAAoC,YAAY,CAAC,OAAO,CACtD,IAAI,CACL,CAAgD,8CAAA,CAAA,CAClD,CAAC;YACF,OAAO;SACR;AAED,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAChD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAEzC,IAAI,aAAa,EAAE;YACjB,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAC/B,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,CACnB,CAAC;AACvB,YAAA,IAAI,YAAY,EAAE,WAAW,KAAK,KAAK,EAAE;AACvC,gBAAA,OAAO,CAAC,IAAI,CACV,CAAA,iBAAA,EAAoB,YAAY,CAAC,OAAO,CACtC,aAAa,CACd,CAAoD,kDAAA,CAAA,CACtD,CAAC;aACH;SACF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,CAAA,yCAAA,EAA4C,YAAY,CAAC,OAAO,CAC5E,IAAI,CACL,CAAA;;;;AAIO,YAAA,EAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;;;;;;AAMjC,MAAA,CAAA,CAAC,CAAC;SACJ;AACD,QAAA,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;KACjB;AAKD,IAAA,eAAe,CACD,EAAmB,EACb,QAAgB,EACV,aAAsB,EAAA;;;;;;;;;;;;;;;;AAiB9C,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAKD,UAAU,CACa,aAAqB,CAAC,EACxB,WAAmB,EAAE,EACvB,SAAiB,EAAE,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCpC,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAKD,MAAM,GAAA;;;;;;;;;;AAUJ,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAKD,IAAA,KAAK,CAAa,EAAmB,EAAA;;;;;;AAMnC,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAKD,UAAU,CACI,EAAmB,EACvB,IAAY,EAAA;;;;;;;AAQpB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAKD,SAAS,CACK,EAAmB,EACvB,IAAY,EAAA;;;;;;;AAQpB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAKD,IAAA,UAAU,CAAS,KAAe,EAAA;;;;;;;;;AAShC,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAKD,IAAA,UAAU,CAAa,EAAU,EAAA;;;;;;AAM/B,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAKD,IAAA,UAAU,CACK,GAAwB,EAAA;;;;;;AAOrC,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAKD,IAAA,MAAM,CAAS,IAAY,EAAA;;;;;;AAMzB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAKD,IAAA,UAAU,CAAS,KAAa,EAAA;;;;;;AAM9B,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;CAEF,CAAA;AArMC,UAAA,CAAA;IADC,GAAG,CAAC,yBAAyB,CAAC;AAE5B,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;AACV,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAU,QAAA,CAAA,CAAC,CAAA;AAChB,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,eAAe,CAAC,CAAA;;;;AAkBxB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,GAAG,EAAE;AAEH,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,YAAY,CAAC,CAAA;AACnB,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,UAAU,CAAC,CAAA;AACjB,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,QAAQ,CAAC,CAAA;;;;AAyCjB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,GAAG,EAAE;;;;AAYL,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,GAAG,CAAC,MAAM,CAAC;AACL,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;;;;AAOhB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,GAAG,CAAC,MAAM,CAAC;AAET,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;IACV,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AASR,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,KAAK,CAAC,MAAM,CAAC;AAEX,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;IACV,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AASR,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,GAAG,EAAE;IACM,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AAUjB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,MAAM,CAAC,MAAM,CAAC;AACH,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;;;;AAOrB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,MAAM,CAAC,kBAAkB,CAAC;AAExB,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAK,GAAA,CAAA,CAAC,CAAA;;;;AAQb,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,IAAI,EAAE;IACC,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AAOb,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,IAAI,EAAE;IACK,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AAOjB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AA9PmB,kBAAkB,GAAA,UAAA,CAAA;AADvC,IAAA,cAAc,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;AAC9B,CAAA,EAAA,kBAAkB,CAgQvC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCrRM,SAAS,CAAA;AAEpB;;;AAGG;IACH,MAAM,CAAC,GAAA,GAAK;AAIL,IAAA,KAAK,CAAC,QAAyB,EAAA;QACpC,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE5E,QAAA,OAAO,MAAM,CAAC;KACf;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC9BP;AACA;AAMA,IAAIC,iBAAe,GAAG,MAAK;AACzB,IAAA,OAAO,CAAC,MAAW,KAAI,GAAG,CAAC;AAC7B,CAAC,CAAC;AAEF;AACA;AAIO,IAAe,UAAU,GAAzB,MAAe,UAKpB,SAAQ,SAAiB,CAAA;EAAG;AALR,UAAU,GAAA,UAAA,CAAA;AAD/B,IAAAA,iBAAe,EAAE;AACI,CAAA,EAAA,UAAU,CAKF,CAAA;AAE7B,CAAC;AAAA,CAAC,EAAE,EAAE;;ACvBP;AACA;AAOA,IAAI,eAAe,GAAG,MAAK;AACzB,IAAA,OAAO,CAAC,MAAW,KAAI,GAAG,CAAC;AAC7B,CAAC,CAAC;AAEF;AACA;AAIO,IAAe,kBAAkB,GAAjC,MAAe,kBAEpB,SAAQ,UAAkB,CAAA;CAU3B,CAAA;AAZqB,kBAAkB,GAAA,UAAA,CAAA;AADvC,IAAA,eAAe,EAAE;AACI,CAAA,EAAA,kBAAkB,CAYvC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACtBD,SAAU,cAAc,CAAC,OAA8B,EAAA;AAC3D,IAAA,OAAO,UAAU,WAAqB,EAAA;AACpC,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;QACF,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACxD,KAAC,CAAC;AACJ,CAAC;AAEY,MAAA,qBAEX,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AAAG,CAAA;AAEvC,CAAC;AAAA,CAAC,EAAE,EAAE;;ACGP,MAAM,wBAAwB,GAAG,CAAC,IAAI,CAAC,CAAC;AAGjC,IAAe,cAAc,GAA7B,MAAe,cAEpB,SAAQ,YAAY,CAAA;AAQpB,IAAA,WAAA,CAEU,sBAAiC,EAAA;AAEzC,QAAA,KAAK,EAAE,CAAC;QAFA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAW;;AAIzC,QAAA,IAAI,CAAC,oBAAoB,GAAG,sBAAsB,CAAC;KACpD;AAMD,IAAA,IAAW,OAAO,GAAA;;;;;;;;;;;;;;;;;;;;AAoBhB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAID,IAAA,IAAW,UAAU,GAAA;;;AAGnB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;;;AAOD,IAAA,IAAc,UAAU,GAAA;;;AAGtB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED;;AAEG;AACH,IAAA,IAAW,MAAM,GAAA;;;AAGf,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED;;AAEG;AACH,IAAA,IAAc,IAAI,GAAA;;;AAGhB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED,IAAA,IAAW,gBAAgB,GAAA;;;AAGzB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAMD,MAAM,MAAM,CAAC,OAAa,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqDzB;AAID;;;AAGG;AACH,IAAA,KAAK,CAAC,MAAc,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAChC;AAID;;AAEG;AACH,IAAA,KAAK,CAAC,MAAc,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAChC;AAID;;;AAGG;AACH,IAAA,MAAM,IAAI,CACR,IAAY,EACZ,OAEC,EAAA;;;;;;;;;;;;AAaD,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED;;;;AAIG;AACH,IAAA,MAAM,MAAM,CACV,IAAY,EACZ,OAEC,EAAA;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACjC;AAED,IAAA,MAAM,QAAQ,CACZ,KAAe,EACf,OAEC,EAAA;;;;;;;;;;AAWD,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED,IAAA,MAAM,UAAU,CACd,KAAe,EACf,OAEC,EAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACtC;AAiBD;;;AAGG;AAwCH;;AAEG;AACH,IAAA,KAAK,CAAC,eAAuB,EAAE,GAAG,WAAqB,EAAA;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,WAAW,CAAC,CAAC;KACzD;AAID;;;;;;;;AAQG;AACH,IAAA,OAAO,CAAC,UAAkB,EAAA;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KACtC;AAKD;;AAEG;IACH,MAAM,MAAM,CAAC,UAAoC,EAAA;;;;;;;;;;;;;;AAc/C,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED;;AAEG;IACH,MAAM,MAAM,CAAC,UAAoC,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KAChC;AAED;;AAEG;IACH,MAAM,UAAU,CAAC,EAAmB,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KACxB;IACD,MAAM,UAAU,CACd,aAA2C,EAAA;;;;;;;;;;;;;AAc3C,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAED,MAAM,UAAU,CAAC,GAAiC,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KAC7B;AAgED;;AAEG;IACH,UAAU,CACR,MAAS,EACT,OAAqB,EAAA;QAErB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC9C;AA6BD;;AAEG;IACH,OAAO,CACL,MAAS,EACT,OAAqB,EAAA;QAErB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3C;AAID;;;;;AAKG;AACH,IAAA,MAAM,CACJ,MAAyE,EAAA;QAEzE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACjC;IAID,MAAM,MAAM,CAAC,IAAY,EAAA;;;;AAIvB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED,IAAA,MAAM,UAAU,CAAC,EAAmB,EAAE,IAAY,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2ChD,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IACD,MAAM,UAAU,CAAC,KAAe,EAAA;;;;;;;;;;AAU9B,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AA8BD;;;;AAIG;IACH,MAAM,CACJ,gBAEoC,EACpC,sBAAwD,EAAA;QAExD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;KACnE;AAID;;;;;AAKG;AACH,IAAA,UAAU,CACR,QAS4B,EAAA;QAE5B,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KACvC;AAID;;;;;AAKG;AACH,IAAA,OAAO,CACL,QAS4B,EAAA;QAE5B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACpC;AAID;;;AAGG;AACH,IAAA,KAAK,CAAC,OAAiC,EAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACjC;AAID;;;AAGG;AACH,IAAA,OAAO,CACL,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACjC;AAID;;AAEG;AACH,IAAA,IAAI,CAAC,OAAiC,EAAA;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;AAID;;AAEG;AACH,IAAA,MAAM,CACJ,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAChC;;AAgBD;;;;AAIG;AACH,IAAA,YAAY,CAAC,OAAiC,EAAA;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;KACxC;AAID;;;;AAIG;AACH,IAAA,cAAc,CACZ,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACxC;AAID;;;;;;;;;AASG;AACH,IAAA,SAAS,CAAC,GAAU,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;KACjC;AAID;;;AAGG;AACH,IAAA,OAAO,CAAC,OAA+B,EAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACnC;AAID;;;AAGG;AACH,IAAA,SAAS,CACP,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACnC;AAID;;;;;;;;;AASG;AACH,IAAA,WAAW,CACT,EAA0B,EAAA;QAG1B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KAClC;AAID;;;AAGG;AACH,IAAA,aAAa,CAAC,OAA+B,EAAA;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KACzC;AAID;;;AAGG;AACH,IAAA,eAAe,CACb,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KACzC;AAID;;;AAGG;IACH,KAAK,CAAC,KAAa,EAAE,UAAkB,EAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KAC3C;AAID;;;;;AAKG;IACH,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KAC1B;AAID;;AAEG;AACH,IAAA,SAAS,CACP,UAAoC,EACpC,YAAoB,EACpB,KAAsB,EAAA;AAEtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;KAC7D;AAID;;AAEG;AACH,IAAA,SAAS,CACP,UAAoC,EACpC,YAAoB,EACpB,KAAsB,EAAA;AAEtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;KAC7D;AAID;;AAEG;AACH,IAAA,MAAM,MAAM,GAAA;;;;;;;;;;;;AAYV,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAID,MAAM,KAAK,CAAC,EAAmB,EAAA;;;;;;;AAO7B,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;EAEF;AAv3BqB,cAAc,GAAA,UAAA,CAAA;AADnC,IAAA,cAAc,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;;AAC1B,CAAA,EAAA,cAAc,CAu3BnC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC15BD,MAAO,YAAa,SAAQ,YAAY,CAAA;AAAG,CAAA;AAEhD,CAAC;AAAA,CAAC,EAAE,EAAE;;MCJM,eAAe,CAAA;AACX,IAAA,SAAA,IAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC,EAAA;IAErC,OAAO,OAAO,CAAI,MAAgB,EAAA;QAChC,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACzC,OAAO,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SAC9C;AAGD,QAAA,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,MAAM,QAAQ,GAAG,IAAK,MAAc,CAAC,GAAG,UAAU,CAAC,CAAC;QACpD,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAChD,QAAA,OAAO,QAAQ,CAAC;KACjB;IAED,OAAO,MAAM,CAAI,MAAiC,EAAA;AAChD,QAAA,OAAO,IAAI,KAAK,CACd,EAAE,EACF;AACE,YAAA,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAI;gBACnB,IAAI,QAAQ,GACV,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,oBAAA,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClC,gBAAA,OAAO,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,UAAU;sBAC3C,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,sBAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;aACxB;YACD,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,KAAI;gBAC1B,IAAI,QAAQ,GACV,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,oBAAA,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClC,gBAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AAC3B,gBAAA,OAAO,IAAI,CAAC;aACb;AACF,SAAA,CACG,CAAC;KACR;;AAGF,CAAC;AAAA,CAAC,EAAE,EAAE;;AChCA,MAAM,gBAAgB,GAAG,CAC9B,QAAiC,EACjC,OAAuD,KACzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCd,IAAA,QAAQ,KAAK,CAAC,EAAE;AAClB,CAAC,CAAC;AAED,CAAC;AAAA,CAAC,EAAE,EAAE;;AChDP,MAAMC,KAAG,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAI7D,CAAC;AAAA,CAAC,EAAE,EAAE;;ACLP;AACA;MAUa,mBAAmB,CAAA;AAG9B,IAAA,WAAA,CAAoB,OAAsC,EAAA;QAAtC,IAAO,CAAA,OAAA,GAAP,OAAO,CAA+B;QAFlD,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAS,CAAA,SAAA,GAAsB,EAAE,CAAC;KACoB;AAG9D,IAAA,uBAAuB,CACrB,QAA0D,EAAA;QAE1D,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;AAC1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,oDAAA,CAAsD,CAAC,CAAC;YACrE,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,yDAAA,CAA2D,CAC5D,CAAC;YACF,OAAO;SACR;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAChE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,CAAC;AAEF,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAExB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;gBAE5B,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAC;aACH;iBAAM;gBACL,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAErC,oBAAA,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,6BAA6B,CAChE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAC;iBACH;qBAAM;AAEL,oBAAA,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,CACvD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAC;iBACH;aACF;YAGD,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAG;AACxC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpB,aAAC,CAAC,CAAC;SACJ;KACF;AAID,IAAA,GAAG,CAAC,QAAyB,EAAA;AAE3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC/B;AAID,IAAA,MAAM,CAAC,QAAyB,EAAA;AAE9B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,QAAQ,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAE/B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAE/D,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;YAElC,IAAI,WAAW,EAAE;gBACf,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,QAAQ,CACT,CAAC;aACH;iBAAM;AACL,gBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;oBACxB,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,6BAA6B,CAClE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,QAAQ,CACT,CAAC;iBACH;qBAAM;oBACL,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,oBAAoB,CACzD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,QAAQ,CACT,CAAC;iBACH;aACF;SACF;KACF;AAIO,IAAA,MAAM,CAAC,IAAS,EAAA;QAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAG5C,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAEhC,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACpB,IAAI,MAAM,EAAE;AACV,oBAAA,MAAM,CAAC,GAAG,CAAC,MAAK;AACd,wBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,qBAAC,CAAC,CAAC;iBACJ;qBAAM;AACL,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACrB;aACF;AACH,SAAC,CAAC,CAAC;KACJ;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MClIM,cAAc,CAAA;AAEzB,IAAA,WAAA,CAAoB,IAAkB,EAAA;QAAlB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAc;QAD9B,IAAY,CAAA,YAAA,GAA4C,EAAE,CAAC;AAEjE,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;YAE9B,IAAI,CAAC,IAAI,EAAE,CAAC;SAEb;KACF;IAGO,IAAI,GAAA;AAEV,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC3B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CACtD;SACF,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;YACvB,OAAO,CAAC,IAAI,CACV,4BAA4B,EAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA,CACrD,CAAC;AAEJ,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;YACvB,OAAO,CAAC,IAAI,CACV,6BAA6B,EAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA,CACvD,CAAC;AAIJ,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;AAC1D,YAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;AAC9B,SAAA,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;gBAI9B,OAAO,CAAC,IAAI,CACV,CAAA,sCAAA,EAAyC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAa,UAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA,CAC1F,CAAC;AACJ,aAAC,CAAC,CAAC;SACJ;AAKD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AACrE,YAAA,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;AAChC,SAAA,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;gBAIvC,OAAO,CAAC,IAAI,CACV,CAAA,wCAAA,EAA2C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA,CAClG,CAAC;AACJ,aAAC,CAAC,CAAC;SACJ;KAGF;AAID;;;;;;AAMG;AACH,IAAA,mBAAmB,CACjB,aAAuB,EACvB,aAAkB,EAClB,OAAoC,EAAA;AAEpC,QAAA,OAAO,GAAG,OAAO,IAAK,EAAU,CAAC;AAGjC,QAAA,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAC1C,MAAM,SAAS,GAAG,CAAC,WAAW,IAAI,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAEtE,QAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACxB,YAAA,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC1B,gBAAA,MAAM,IAAI,KAAK,CACb,yDAAyD,SAAS,CAAA,CAAE,CACrE,CAAC;aACH;SACF;AAGD,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;YAG/B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;gBAClC,OAAO,CAAC,KAAK,CAAC,CAAA;;;;;;;AAOb,QAAA,CAAA,CAAC,CAAC;AACH,gBAAA,OAAO,MAAK;AAEZ,iBAAC,CAAC;aACH;AAED,YAAA,IAAI,QAAgB,CAAC;YAErB,IAAI,WAAW,EAAE;AACf,gBAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,WAAW,CACZ,CAAC;aACH;iBAAM;AACL,gBAAA,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;sBAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,sBAAsB,CAC/C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,SAAS,EACT,QAAQ,EACR,aAAa,CACd;sBACD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,SAAS,EACT,aAAa,CACd,CAAC;aACP;AAED,YAAA,MAAM,cAAc,GAAkC;gBACpD,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ;gBACR,QAAQ;gBACR,WAAW;aACZ,CAAC;YAGF,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;gBACpC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,IAAI,mBAAmB,CACvD,cAAc,CACf,CAAC;aACH;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEpD,YAAA,OAAO,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACxB,aAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAKD,IAAA,wBAAwB,CAAC,aAAuB,EAAA;QAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;AACrD,YAAA,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY,CACxC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,SAAS,CACV;AACF,SAAA,CAAC,CAAC;KACJ;AAKD;;;;;;;;AAQG;IACH,sBAAsB,CACpB,MAAS,EACT,OAAqC,EAAA;QAErC,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;KACtE;AAID,IAAA,wBAAwB,CAAC,WAAmB,EAAA;QAC1C,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE;YAC9C,WAAW;AACZ,SAAA,CAAC,CAAC;KACJ;AAIO,IAAA,aAAa,CAAC,OAAsC,EAAA;AAC1D,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAI,CAAA,EAAA,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAA,CAAA,EAAI,OAAO,CAAC,QAAQ,CAAA,CAAA,EAAI,OAAO,CAAC,WAAW,CAAA,CAAE,CAAC;KACpH;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC3NP,MAAM,qBAAqB,GAAG,GAAG,CAAC;MAErB,cAAc,CAAA;AAEzB,IAAA,WAAA,CAAoB,IAAkB,EAAA;QAAlB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAc;QAD9B,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;AAEhB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;;;SAI/B;KACF;IAGO,IAAI,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwJX;IAKO,cAAc,CACpB,gBAA0B,EAC1B,QAAiB,EACjB,mBAAqC,EACrC,WAAoB,EACpB,eAAqB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwEtB;IAIM,qBAAqB,CAC1B,gBAA0B,EAC1B,WAA6B,EAAA;QAE7B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;YAClC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEzD,YAAA,OAAO,CAAC,IAAI,CACV,yCAAyC,SAAS,CAAA,iBAAA,CAAmB,CACtE,CAAC;YACF,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,gBAAuB,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;KACnE;AAIM,IAAA,6BAA6B,CAClC,gBAAyC,EACzC,QAAyC,EACzC,WAA6B,EAAA;QAE7B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;YAClC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAEzD,OAAO,CAAC,IAAI,CACV,CAAA,+CAAA,EACE,QACF,CAAa,UAAA,EAAA,SAAS,CAAmB,iBAAA,CAAA,CAC1C,CAAC;YACF,OAAO;SACR;AAED,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACvB,YAAA,QAAQ,CAAC,OAAO,CAAC,eAAe,IAAG;gBACjC,IAAI,CAAC,cAAc,CACjB,gBAAgB,EAChB,eAAsB,EACtB,WAAW,CACZ,CAAC;AACJ,aAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,QAAe,EAAE,WAAW,CAAC,CAAC;SACrE;KACF;IAIM,kBAAkB,CAAC,WAAmB,EAAE,UAAe,EAAA;AAC5D,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;KACtE;AAIM,IAAA,0BAA0B,CAAC,WAAqB,EAAA;QACrD,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;AAClC,YAAA,OAAO,CAAC,IAAI,CACV,8CAA8C,SAAS,CAAA,iBAAA,CAAmB,CAC3E,CAAC;YACF,OAAO;SACR;AAED,QAAA,IAAI,CAAC,cAAc,CACjB,WAAkB,EAClB,KAAK,CAAC,EACN,KAAK,CAAC,EACN,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CACpE,CAAC;KACH;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCzUe,gBAAgB,CAAA;AACpC,IAAA,WAAA,CAAsB,GAAoB,EAAA;QAApB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;KAAI;IAEtC,SAAS,GAAA;KAEhB;AAOF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCbM,oBAAoB,CAAA;AAI/B,IAAA,WAAA,CAAmB,IAAY,EAAA;QAAZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAFvB,IAAS,CAAA,SAAA,GAA2B,EAAE,CAAC;QAG7C,IAAI,CAAC,WAAW,GAAI,MAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC;KACpE;IAED,EAAE,CAAC,SAAiB,EAAE,QAA8C,EAAA;QAClE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;SAChC;QACD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAA,GAAA,EAAM,SAAS,CAAA,CAAA,CAAG,CAAC;QAEtD,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC7C,QAAA,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACzB;aAAM;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACtB;KACF;IAED,GAAG,CAAC,KAAa,EAAE,QAA+C,EAAA;AAChE,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QAEnC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAClD,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAClC,CAAC;SACH;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9B;QACD,MAAM,cAAc,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG,CAAC;QAKnD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;KAC3D;AAED,IAAA,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW,EAAA;QAChC,MAAM,SAAS,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG,CAAC;QAG9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;KAC3C;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCpDM,kBAAkB,CAAA;AAM7B,IAAA,WAAA,CAAmB,WAAmB,EAAA;QAAnB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;AAL9B,QAAA,IAAA,CAAA,UAAU,GAAkD;AAClE,YAAA,GAAG,EAAE,IAAI,oBAAoB,CAAC,GAAG,CAAC;SACnC,CAAC;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAIzB;AAED,IAAA,EAAE,CAAC,SAAiB,EAAA;QAIlB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,oBAAoB,CACnD,SAAS,CACV,CAAC;SACH;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KACnC;IAED,EAAE,CAAC,KAAa,EAAE,QAA8C,EAAA;AAU9D,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;KAC1C;AAED,IAAA,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW,EAAA;AAIhC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;KAC3C;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACtCP;;;AAGG;AACG,MAAO,mBAAoB,SAAQ,gBAAgB,CAAA;IACvD,QAAQ,GAAA;AACN,QAAA,OAAO,KAAK,CAAC;KACd;IACD,mBAAmB,GAAA;AACjB,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;AACD,IAAA,WAAA,CAAsB,GAAoB,EAAA;QACxC,KAAK,CAAC,GAAG,CAAC,CAAC;QADS,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;QAI1C,IAAe,CAAA,eAAA,GAAsC,EAAE,CAAC;QACxD,IAAU,CAAA,UAAA,GAAyC,EAAE,CAAC;KAHrD;AAKD,IAAA,IAAI,EAAE,GAAA;QAEJ,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AAClC,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aACvC;YACD,MAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAE1D,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,GAAU,CAAC;AAC5C,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,EAAS;QAEV,OAAO,KAAK,CAAC,CAAC;KACf;AACD,IAAA,IAAI,MAAM,GAAA;;;;;;;;;;;;QAaR,OAAO,KAAK,CAAC,CAAC;KACf;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCvDM,aAAa,CAAA;IAIxB,WAAmB,CAAA,IAAY,EAAS,WAAmB,EAAA;QAAxC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAAS,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;QAHnD,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;AAClB,QAAA,IAAA,CAAA,OAAO,GAAoB,IAAI,GAAG,EAAE,CAAC;KAEkB;IAE/D,EAAE,CAAC,KAAa,EAAE,QAAsC,EAAA;AACtD,QAAA,IAAI,KAAK,KAAK,YAAY,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD;KACF;IAED,IAAI,CAAC,KAAa,EAAE,IAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;KAC1D;AAED,IAAA,EAAE,CAAC,IAAY,EAAA;QACb,OAAO;AACL,YAAA,IAAI,EAAE,CAAC,KAAa,EAAE,IAAU,KAAI;AAClC,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;iBAC9D;aACF;SACF,CAAC;KACH;IAED,QAAQ,CAAC,MAAkB,EAAE,IAAY,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;SAC9B;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC9B;IAED,SAAS,CAAC,MAAkB,EAAE,IAAY,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;AAC/B,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACzB;SACF;KACF;AAED,IAAA,SAAS,CAAC,MAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC1B;AAED,IAAA,YAAY,CAAC,MAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC7B;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCjDM,UAAU,CAAA;IAGrB,WAAmB,CAAA,EAAU,EAAU,SAAwB,EAAA;QAA5C,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;QAAU,IAAS,CAAA,SAAA,GAAT,SAAS,CAAe;QAFvD,IAAS,CAAA,SAAA,GAAmB,EAAE,CAAC;AAGrC,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAChC;IAED,EAAE,CAAC,KAAa,EAAE,QAA8B,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SAC5B;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtC;IAED,GAAG,CAAC,KAAa,EAAE,QAA+B,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QAEnC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC,CAAC;SACzF;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9B;KACF;IAED,IAAI,CAAC,KAAa,EAAE,IAAU,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3D;KACF;AAED,IAAA,IAAI,CAAC,IAAY,EAAA;QACf,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACrC;AAED,IAAA,KAAK,CAAC,IAAY,EAAA;QAChB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACtC;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MC7CM,UAAU,CAAA;AAKrB,IAAA,WAAA,CAAmB,WAAmB,EAAA;QAAnB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;AAJ9B,QAAA,IAAA,CAAA,UAAU,GAAe;YAC/B,GAAG,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC;SAC9C,CAAC;KAEwC;AAE1C,IAAA,EAAE,CAAC,SAAiB,EAAA;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SAC7E;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KACnC;IAED,EAAE,CAAC,KAAa,EAAE,QAAsC,EAAA;AACtD,QAAA,IAAI,KAAK,KAAK,YAAY,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;SACjD;KACF;IAED,IAAI,CAAC,KAAa,EAAE,IAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACxC;AAED,IAAA,OAAO,CAAC,EAAU,EAAE,SAAA,GAAoB,GAAG,EAAA;QACzC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAkB,KAAI;AACzC,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACf;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACjCP,MAAM,gBAAgB,CAAA;IAGpB,WAAoB,CAAA,YAAwB,EAAS,WAAmB,EAAA;QAApD,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAY;QAAS,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;QAFhE,IAAS,CAAA,SAAA,GAAmB,EAAE,CAAC;AAGrC,QAAA,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;KAClE;IAED,EAAE,CAAC,KAAa,EAAE,QAA8B,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SAC5B;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtC;IAED,GAAG,CAAC,KAAa,EAAE,QAA+B,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QAEnC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC,CAAC;SACzF;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9B;KACF;IAED,IAAI,CAAC,KAAa,EAAE,IAAU,EAAA;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3D;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,IAAI,CAAC,IAAY,EAAA;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;AAED,IAAA,KAAK,CAAC,IAAY,EAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC/B;AACF,CAAA;AAEK,SAAU,MAAM,CAAC,MAAkB,EAAA;AACvC,IAAA,OAAO,CAAC,SAAA,GAAoB,GAAG,KAAsB;AACnD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACzD,OAAO,IAAI,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAChE,KAAC,CAAC;AACJ,CAAC;AAGA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACvDN,CAAC;AAAA,CAAC,EAAE,EAAE;;ACCP;;;AAGG;AACG,MAAO,oBAAqB,SAAQ,gBAAgB,CAAA;IACxD,QAAQ,GAAA;AACN,QAAA,OAAO,MAAM,CAAC;KACf;AAGD,IAAA,WAAA,CAAsB,GAAoB,EAAA;QACxC,KAAK,CAAC,GAAG,CAAC,CAAC;QADS,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;KAEzC;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,UAAiB,CAAC;KAC1B;;AAED,IAAA,IAAI,EAAE,GAAA;AACJ,QAAA,OAAO,MAAa,CAAC;KACtB;IAED,mBAAmB,GAAA;AACjB,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC1BP;;;;AAIG;AACG,MAAO,wBAAyB,SAAQ,gBAAgB,CAAA;IAC5D,QAAQ,GAAA;AACN,QAAA,OAAO,WAAW,CAAC;KACpB;AACD,IAAA,WAAA,CAAsB,GAAoB,EAAA;QACxC,KAAK,CAAC,GAAG,CAAC,CAAC;QADS,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;KAEzC;AAED,IAAA,IAAI,MAAM,GAAA;;;AAGR,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;;AAED,IAAA,IAAI,EAAE,GAAA;AACJ,QAAA,OAAO,EAAE,CAAC;KACX;IAED,mBAAmB,GAAA;AACjB,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;AACF,CAAA;AAIA,CAAC;AAAA,CAAC,EAAE,EAAE;;AChCN,CAAC;AAAA,CAAC,EAAE,EAAE;;ACWP;;;;;;AAMG;MACU,YAAY,CAAA;AAsCvB,IAAA,WAAA,CAAmB,GAAoB,EAAA;QAApB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;AApC9B,QAAA,IAAA,CAAA,cAAc,GAAG;YACxB,KAAK;YACL,MAAM;YACN,KAAK;YACL,QAAQ;YACR,OAAO;YACP,SAAS;YACT,MAAM;SACP,CAAC;AA6BA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACvC,QAAA,GAAG,CAAC,YAAY;YACd,OAAO,CAAC,GAAG,CAAC,CAAA,0BAAA,EAA6B,IAAI,CAAC,QAAQ,CAAE,CAAA,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;KACxC;IAIO,eAAe,GAAA;QACrB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,0BAA0B,EAAE;AAChD,YAAA,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC3C;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,gCAAgC,EAAE;AACtD,YAAA,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC1C;AAOD,QAAA,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC/C;AAIM,IAAA,OAAO,CAAC,SAAkB,EAAA;AAC/B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,IAAI,GAAG,GAAG,SAAS,GAAG,SAAS,GAAG,EAAE,CAAC;AACrC,QAAA,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAC7B,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,GAAG,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC1D,IAAI,MAAM,GAAG,CAAA,YAAA,CAAc,CAAC;AAC5B,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,MAAM,GAAG,EAAE,CAAC;SACb;AACD,QAAA,MAAM,IAAI,GAAG,CAAG,EAAA,GAAG,CAAC,MAAM,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,MAAM,CAAG,EAAA,GAAG,EAAE,CAAC;AAExD,QAAA,OAAO,IAAI,GAAG,CAAC,IAAI,CAAQ,CAAC;KAC7B;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACzGP;MAoEa,eAAe,CAAA;IAM1B,OAAO,UAAU,CAAC,MAAc,EAAA;AAE9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KAEtB;IACM,OAAO,aAAa,CAAC,eAAoB,EAAA;QAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AACrE,QAAA,QACE,eAAe,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAC7C,YAAA,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,EACjC;KACH;AAoFD,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;KAC7B;AACD,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;KAC7B;AAWD,IAAA,IAAI,OAAO,GAAA;QACT,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACjC,OAAO,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,IAAqC,CAAC,IAAI,CAAC;SAClE;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;KACnC;AAED,IAAA,IAAI,WAAW,GAAA;QACb,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACjC,OAAO,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,IAAqC,CAAC,QAAQ,CAAC;SACtE;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;KACnC;AAED,IAAA,IAAI,YAAY,GAAA;QACd,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACjC,OAAO,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,IAAqC,CAAC,SAAS,CAAC;SACvE;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;KACnC;AAED,IAAA,IAAI,KAAK,GAAA;QACP,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACjC,OAAO,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,IAAqC,CAAC,EAAE,CAAC;SAChE;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;KACnC;IAMD,WACU,CAAA,cAAmE,EACnE,QAEgD,EAAA;QAHhD,IAAc,CAAA,cAAA,GAAd,cAAc,CAAqD;QACnE,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAEwC;QAlI1D,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;AAClC;;;AAGG;QACI,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;AAGd,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAGzE;;;AAGG;QACa,IAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;QAIxB,IAAuB,CAAA,uBAAA,GAAG,EAAE,CAAC;QAI7B,IAA0B,CAAA,0BAAA,GAAG,EAAE,CAAC;QAIjC,IAAY,CAAA,YAAA,GAGtB,EAAE,CAAC;AAID,QAAA,IAAA,CAAA,2BAA2B,GAAG;YACpC,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,QAAQ;YACzB,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,UAAU;SAC5B,CAAC;AAGM,QAAA,IAAA,CAAA,oBAAoB,GAAG;YAC7B,GAAG,IAAI,CAAC,2BAA2B;YACnC,MAAM,CAAC,SAAS,CAAC,MAAM;SACxB,CAAC;QAGK,IAAU,CAAA,UAAA,GAAgB,EAAS,CAAC;QAyBnC,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;AAmdtB,QAAA,IAAA,CAAA,yBAAyB,GAAG,CAElC,EACA,SAAS,EACT,SAAS,EACT,MAAM,EACN,GAAG,EACH,SAAS,GAOV,KAAO;YAEN,MAAM,UAAU,GAAG,MAAK;;AACtB,gBAAA,IACE,SAAS,CAAC,OAAO,CAAC,2BAA2B,CAAC;AAC9C,oBAAA,CAAA,EAAG,GAAG,CAAC,WAAW,IAAI,SAAS,CAAA,CAAE,EACjC;AACA,oBAAA,OAAO,SAAS,CAAC;iBAClB;gBACD,OAAO,cAAc,SAAS,CAAA;AAAvB,oBAAA,WAAA,GAAA;;wBA8BL,IAA8B,CAAA,EAAA,CAAA,GAAG,GAAG,CAAC;qBAGtC;AA7BS,oBAAA,SAAA,EAAA,GAAA,OAAO,CAAC,YAAY,EAAA,EAAA,GAGpB,OAAO,CAAC,2BAA2B,EAGnC,EAAA,GAAA,OAAO,CAAC,uBAAuB,OAE/B,OAAO,CAAC,oBAAoB,EAkBnC,EAAA,GAAA,OAAO,CAAC,oBAAoB,CAAA,EAAA;;6BA1BtB,IAAsB,CAAA,EAAA,CAAA,GAAG,SAAH,CAAa,EAAA;;6BAGnC,IAAqC,CAAA,EAAA,CAAA,GAAG,GAAG,GAAG,CAAC,WAAW,CAAI,CAAA,EAAA,SAAS,CAAE,CAApC,CAAqC,EAAA;;6BAG1E,IAAiC,CAAA,EAAA,CAAA,GAAG,SAAH,CAAa,EAAA;6BAE9C,IAA8B,CAAA,EAAA,CAAA,GAAG,GAAH,CAAO,EAAA;AAE5C,oBAAA,OAAO,uBAAuB,CAAC,GAAG,GAAG,EAAE,EAAA;wBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACvD,wBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAEf,wBAAA,IACE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;4BAC1B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,uBAAuB,EAClD;;4BAEA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;yBACzD;AACD,wBAAA,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBACtB;AACD,oBAAA,WAAW,gBAAgB,GAAA;AACzB,wBAAA,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;qBACvC;iBAIF,CAAC;AACJ,aAAC,CAAC;AAEF,YAAA,MAAM,kBAAkB,GAAG,UAAU,EAAE,CAAC;AAoBxC,YAAA,OAAO,kBAAkB,CAAC;AAC5B,SAAC,CAAC;AAMM,QAAA,IAAA,CAAA,8BAA8B,GAAG,CAAC,EACxC,YAAY,EACZ,MAAM,EACN,GAAG,EACH,SAAS,GAMV,KAAI;YACH,MAAM,OAAO,GAAG,EAAE,CAAC;AAEnB,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE;AACjD,gBAAA,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBAEpC,IAAI,CAAC,SAAS,EAAE;oBACd,OAAO,CAAC,KAAK,CAAC,CAAA,MAAA,EAAS,GAAG,CAA8B,2BAAA,EAAA,GAAG,CAAC,WAAW,CAAA;;;;AAItE,QAAA,CAAA,CAAC,CAAC;iBACJ;AAED,gBAAA,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,CACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,SAAS,CACV,CAAC;AAMF,gBAAA,SAAS,GAAG,SAAS,IAAI,GAAG,CAAC;AAC7B,gBAAA,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAC;AAEvD,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC;oBACjD,SAAS;oBACT,SAAS;oBACT,MAAM;oBACN,GAAG;oBACH,SAAS;AACV,iBAAA,CAAC,CAAC;AACH,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;aAClC;AACD,YAAA,OAAO,OAAO,CAAC;AACjB,SAAC,CAAC;KA7hBE;IAIG,MAAM,IAAI,CAAC,OAAuD,EAAA;QACvE,MAAM,EAAE,+BAA+B,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;AAE1D,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAACA,KAAG,CAAC,CAAC;AA+BjC,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;;;SAIzC;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;gBACpB,OAAO,CAAC,KAAK,CACX,CAAA,0DAAA,CAA4D,EAC5D,KAAK,EACL,IAAI,CACL,CAAC;aACH;AACD,YAAA,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;SACvC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,OAAO,CAAC,UAAU,EAAE;AACxD,YAAA,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;SAC9C;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACvC,YAAA,OAAO,CAAC,KAAK,CACX,CAAA,gBAAA,EAAmB,IAAI,CAAC,WAAW,CAAA,+DAAA,CAAiE,EACpG,KAAK,EACL,IAAI,CACL,CAAC;;;SAIH;QAID,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACrD;aAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,SAAS,CAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CACI,CAAC;SAC5B;AAID,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAC9B,gBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;aACrC;AAED,YAAA,KAAK,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;SACvC;AAID,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;AAC1D,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;AAExD,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG;AACrB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,MAAM,CACxB,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;SACxB,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG;AACxB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,UAAU,CAC5B,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;SAC3B,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG;AACtB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,QAAQ,CAC1B,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;SACzB,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG;AACxB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,UAAU,CAC5B,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;SAC3B,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG;AACzB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,UAAU,CAC5B,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;SAC5B,CAAC;QAMF,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAC5D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;AACvC,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAC7D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YACtC,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;AACvC,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAC1D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ;AACrC,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAC5D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;AACvC,SAAA,CAAC,CAAC;AAIH,QAAA,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,2BAA2B,EAAE;AAC5D,YAAA,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;AACjD,YAAA,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;SACrD;AAED,QAAA,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,2BAA2B,EAAE;AAC5D,YAAA,MAAM,IAAI,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,EAC/C,aAAa,CACd,CAAC;SACH;AAID,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,2BAA2B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;SAqBvE;AAID,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACzB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;;;;;;YAOvD,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;SACxC;AAKD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY;gBACf,OAAO,CAAC,IAAI,CACV,CAAmC,gCAAA,EAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAE,CAAA,CAC7D,CAAC;SACL;aAAM;AACL,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,gBAAA,IAAI,CAAC,YAAY;oBACf,OAAO,CAAC,IAAI,CACV,CAA0C,uCAAA,EAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAE,CAAA,CACnE,CAAC;aACL;iBAAM;AACL,gBAAA,IAAI,CAAC,YAAY;oBACf,OAAO,CAAC,IAAI,CACV,CAAmC,gCAAA,EAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,CAAA,CACtD,CAAC;aACL;SACF;AAID,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AACrC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;KACJ;IAIO,sBAAsB,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkF5B,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAID,IAAA,IAAI,MAAM,GAAA;QAER,OAAO,eAAe,CAAC,MAAM,CAAC;QAE9B,OAAO;KACR;IAID,WAAW,GAAA;;;;;;;;;;;;;;AAcT,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAID,IAAA,aAAa,CAAC,GAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8BhB;AAID,IAAA,IAAI,0BAA0B,GAAA;AAC5B,QAAA,QACE,IAAI,CAAC,IAAI,KAAK,2BAA2B;YACzC,IAAI,CAAC,IAAI,KAAK,0BAA0B;AACxC,YAAA,IAAI,CAAC,IAAI,KAAK,gCAAgC,EAC9C;KACH;IA6IO,MAAM,kCAAkC,CAC9C,SAA2B,EAAA;QAE3B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC;QAClE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;YAC3B,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjC,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACR;AAEO,IAAA,MAAM,+BAA+B,CAC3C,SAA2B,EAC3B,GAAG,GAAG,EAAE,EAAA;AAER,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAEtD,CAAC;AAIJ,QAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;AAE1B,YAAA,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;YAE9B,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAGlD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CACjC,IAAI,CAAC,8BAA8B,CAAC;gBAClC,YAAY;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,gBAAA,GAAG,EAAE,IAAI;gBACT,SAAS;AACV,aAAA,CAAC,CACH,CAAC;AAEF,YAAA,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAExC,MAAM,GAAG,CAAC,+BAA+B,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;SAC3D;AACD,QAAA,OAAO,GAAiB,CAAC;KAC1B;AAID,IAAA,qBAAqB,CAAC,SAA2B,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;KAChD;AAIO,IAAA,wBAAwB,CAAC,SAA2B,EAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;KACnD;IAID,MAAM,CACJ,IAA+B,EAC/B,OAIC,EAAA;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,EAAS,CAAC;SACrB;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7C,QAAA,MAAM,2BAA2B,GAC/B,OAAO,CAAC,2BAA2B,IAAI,EAAE,CAAC;AAE5C,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;AACvD,YAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;SAC9B;AAED,QAAA,IAAI,OAAO,EAAE,aAAa,EAAE;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,UAAU,GAAW,EAAE,CAAC;AAE5B,YAAA,IAAI,SAAS,KAAK,gBAAgB,EAAE;AAClC,gBAAA,MAAM,QAAQ,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAA,MAAM,MAAM,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBACtC,UAAU,GAAG,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aACrD;YAED,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;gBAC7D,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC;aAC/D;AACD,YAAA,MAAM,WAAW,GAAG,SAAS,IAAI,UAAU,GAAG,CAAA,CAAA,EAAI,UAAU,CAAE,CAAA,GAAG,EAAE,CAAC,CAAC;AACrE,YAAA,MAAM,OAAO,GACX,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC,CAAC;YACxE,IAAI,OAAO,EAAE;AAEX,gBAAA,OAAO,OAAO,CAAC;aAChB;YAED,IAAI,CAAC,UAAU,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,SAAS,CAAqB,kBAAA,EAAA,IAAI,CAAC,WAAW,CAAA;;yEAEpB,SAAS,CAAA;;AAEzE,QAAA,CAAA,CAAC,CAAC;aACJ;YAED,MAAM,gBAAgB,GAAG,IAAK,UAAkB,CAC9C,GAAG,2BAA2B,CAC/B,CAAC;YACF,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC;AACnE,gBAAA,gBAAgB,CAAC;AAEnB,YAAA,OAAO,gBAAgB,CAAC;SACzB;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAIjE,QAAA,OAAO,oBAAoB,CAAC;KAC7B;AAED;;AAEG;AACH,IAAA,aAAa,CAAI,IAA+B,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACpD;IAGD,yBAAyB,GAAA;QACvB,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,CAAA;;;;;;;AAOf,MAAA,CAAA,CAAC,CAAC;SACJ;KACF;AAGD,IAAA,aAAa,CAAC,SAA2B,EAAA;QACvC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,QAAQ,SAAS;AACf,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,UAAU;AAC9B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACjC,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,MAAM;AAC1B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9B,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ;AAC5B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAC/B,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,UAAU;AAC9B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAClC,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,UAAU;AAC9B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;SAClC;KACF;IAED,WAAW,CAAC,SAA2B,EAAE,OAAiB,EAAA;AACxD,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;KACvE;AAED;;;AAGG;AACH,IAAA,sBAAsB,CAAC,SAAiB,EAAA;AACtC,QAAA,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACrD,YAAA,MAAM,wBAAwB,GAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;AAElD,YAAA,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE;AACvC,gBAAA,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAC;aAC5C;SACF;KACF;AAED,IAAA,kBAAkB,CAAC,aAAuB,EAAA;QACxC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;KAC/C;AAED,IAAA,gBAAgB,CAAC,SAA2B,EAAA;AAC1C,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,CAAe,CAAC;KACzE;AAIO,IAAA,MAAM,eAAe,CAAC,OAAY,EAAE,SAA2B,EAAA;QAMrE,KAAK,MAAM,OAAO,IAAI;AAEpB,YAAA,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,SAAA,EAAE;YACD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,OAAc,CAAQ,CAAC;YAChE,MAAM,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YACxE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhD,YAAA,uBAAuB,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;AAE9C,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;YACjE,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;SAChD;KACF;AAID,IAAA,MAAM,iBAAiB,GAAA;AAIrB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAC/C,MAAM,CAAC,SAAS,CAAC,UAAU,CAC5B,CAAC;AAEF,QAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;YAC9B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;gBACxC,MAAM,OAAO,CAAC,cAAc,CAAC;oBAC3B,UAAU,EAAE,IAAI,CAAC,iBAAiB;AAClC,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA,CAAC,CAAC;aACJ;SACF;KAIF;AACD,IAAA,MAAM,WAAW,GAAA;QACf,KAAK,MAAM,aAAa,IAAI;YAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ;YACzB,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,MAAM;AACxB,SAAA,EAAE;YAKD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAU,EAAE;gBACpE,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBAC5B,MAAM,OAAO,CAAC,cAAc,CAAC;wBAC3B,UAAU,EAAE,QAAQ,CAAC,CAAC;AACtB,wBAAA,OAAO,EAAE,QAAQ;AAClB,qBAAA,CAAC,CAAC;iBAOJ;aACF;SAKF;QAED,KAAK,MAAM,aAAa,IAAI;YAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ;YACzB,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,UAAU;AAC5B,SAAA,EAAE;YAKD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,EAAE;gBAC/D,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;oBACxB,MAAM,OAAO,CAAC,cAAc,CAAC;wBAC3B,UAAU,EAAE,IAAI,CAAC,CAAC;AAClB,wBAAA,OAAO,EAAE,IAAI;AACd,qBAAA,CAAC,CAAC;iBACJ;aACF;SAKF;KACF;AAID,IAAA,UAAU,CAAC,aAAqB,EAAA;QAC9B,IAAI,UAAU,GACZ,aAAa,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC9C,OAAO,IAAI,KAAK,UAAU,CAAC;KAC5B;AAID,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI;AACnB,cAAE,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;cAClB,IAAI,CAAC,UAAU;AACf,kBAAE,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;kBACxB,KAAK,CAAC,CAAC;AACb,QAAA,OAAO,GAAG,CAAC;KACZ;AAID,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC;KACvC;AAID;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;KAChC;AAID,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,EAAE,CAAC;KACxC;AAID,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;KACnC;AAID,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;KAC/B;AAID,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;KACzB;AAID,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;KACzB;AAID,IAAA,MAAM,eAAe,GAAA;AACnB,QAAA,OAAO;;;;;;;;;;;;;;;;;;;;;AAqBL,QAAA,QAAQ,KAAK,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgInB;AAID,IAAA,MAAM,YAAY,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BjB;AAKD,IAAA,MAAM,sBAAsB,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmF1B,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAKD,YAAY,GAAA;AACV,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAE1E,QAAA,KAAK,MAAM,iBAAiB,IAAI,cAAc,EAAE;AAC9C,YAAA,iBAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC1C,gBAAA,YAAY,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAErE,YAAA,MAAM,WAAW,GAAmC,OAAO,CAAC,CAAC,CAAC,CAAC;YAE/D,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,iBAAA,OAAO,EAAE;iBACT,GAAG,CAAC,EAAE,IAAG;gBACR,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;oBACnC,OAAO,EAAE,CAAC,IAAI,CAAC;iBAChB;gBACD,OAAO,EAAE,CAAC,SAAS,CAAC;AACtB,aAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAC;YAEb,IAAI,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AAC5C,gBAAA,WAAW,CAAC,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC;aAC/C;iBAAM;AACL,gBAAA,WAAW,CAAC,cAAc;oBACxB,CAAG,EAAA,qBAAqB,IAAI,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAE,CAAA;AAClE,yBAAA,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;yBACrB,KAAK,CAAC,GAAG,CAAC;AACV,yBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,KAAI;wBAClB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;qBAChD,EAAE,EAAE,CAAC;yBACL,IAAI,CAAC,GAAG,CAAC,CAAC;aAChB;AAED,YAAA,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAG;AAC/B,gBAAA,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC;gBACtC,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AACxC,gBAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,oBAAA,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AAClD,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7B,wBAAA,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;qBAC1B;iBACF;AACH,aAAC,CAAC,CAAC;;;AAKD,YAAA,IAAI,CAAC,OAAO;gBACV,OAAO,CAAC,cAAc,CACpB,CAAA,+BAAA,EAAkC,WAAW,CAAC,SAAS,CAAG,CAAA,CAAA,CAC3D,CAAC;;;AAMN,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,IAAG;gBACpD,MAAM,YAAY,GAChB,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAElC,gBAAA,MAAM,IAAI,GAAgC,YAAY,CAAC,IAAI,CAAC;AAC5D,gBAAA,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM;AACrC,sBAAE,CAAA,CAAA,EAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAE,CAAA;sBAC1C,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBAG1D,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;iBAgBvC;AAED,gBAAA,MAAM,gBAAgB,GACpB,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC;gBAE3D,IAAI,gBAAgB,EAAE;oBAQpB,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;iBACrE;AACH,aAAC,CAAC,CAAC;;;AAKD,YAAA,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;;;SAItC;KACF;IAIM,iBAAiB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAsB,CAAC,IAAI,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiC5C;AAID,IAAA,IAAW,WAAW,GAAA;;;AAGpB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAIO,aAAa,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwGpB;IAIO,UAAU,CAEhB,IAAiC,EACjC,YAAiC,EACjC,WAA2C,EAC3C,WAAmB,EACnB,MAAgB,EAAA;;;;;;;;;AAchB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAGrB,MAAM,SAAS,GAAG,OAAO,cAAc,EAAE,GAAG,EAAE,GAAG,KAAI;YACnD,MAAM,QAAQ,GACZ,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK;AACjC;;AAEG;AACH,YAAA,IAAI,CAAC,aAAa,CAAC,MAAa,CAAC;AACjC;;AAEG;AACH,YAAA,cAAc,CACf,CAAC;AACJ,YAAA,IAAI,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5D,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAC;AAGF,QAAA,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;AACxC,cAAE,CAAG,EAAA,GAAG,CAAC,QAAQ,CAAA,EAAG,WAAW,CAAE,CAAA;cAC/B,WAAW,CAAC;QAChB,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAIhD,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;;;;;;;;;;;;;;;;;;;;;;SAuBvB;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAkOrB;QAED,OAAO;AACL,YAAA,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,YAAY,CAAC,IAAI;SAC1B,CAAC;KACH;AAID;;AAEG;AACK,IAAA,UAAU,CAEhB,MAAgB,EAChB,IAAiC,EACjC,YAA2C,EAC3C,WAAmB,EAAA;QAGnB,MAAM,GAAG,GAAG,IAAI,CAAC;AAEjB,QAAA,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,EAAE,WAAW,EAAE,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,CAAG,CAAC,CAAC;AAGtE,QAAA,IAAI,OAAY,CAAC;AACjB,QAAA,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,OAAO,GAAG,MAAM,CAAC;SAClB;;;;;QAQD,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAI7D,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,IAAI,EAAA;gBAC3D,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAI;oBACrD,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,oBAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;oBAE/D,OAAO,CAAC,WAAW,CAAC,IAAI,CACtB,WAAW,CAAC,kBAAkB,CAC5B,MAAM,EACN,YAAY,EACZ,WAAW,CACZ,EACD,CAAC,KAAK,EAAE,YAAY,KAAI;wBACtB,IAAI,GAAG,GAAQ,YAAY,CAAC;AAC5B,wBAAA,OAAO,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;AAC9B,wBAAA,IAAI;4BACF,MAAM,IAAI,GAAG,GAAG,CAAC;AACjB,4BAAA,GAAG,GAAG,IAAIb,QAAa,CAAC,YAAY,CAClC;gCACE,IAAI,EAAE,KAAK,CAAC;gCACZ,OAAO,EAAE,KAAK,CAAQ;gCACtB,MAAM,EAAE,YAAY,CAAC,IAAI;gCACzB,GAAG,EAAE,CAAG,EAAA,GAAG,CAAC,GAAG,CAAC,MAAM,CAAA,EACpB,EAAE;iCACD,EAAA,YAAY,CAAC,IAAI,CAAG,CAAA,CAAA;AACxB,6BAAA,EACD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtC,kCAAE,IAAI;kCACJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EACxB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EACzB,KAAK,CAAC,EACN,MAAM,IAAI,CACX,CAAC;4BAEF,OAAO,CAAC,GAAG,CAAC,CAAC;yBACd;wBAAC,OAAO,KAAK,EAAE;AACd,4BAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BACrB,MAAM,CAAC,KAAK,CAAC,CAAC;yBACf;AACH,qBAAC,CACF,CAAC;AACF,oBAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CACtB,WAAW,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,EAChE,IAAI,CACL,CAAC;AACJ,iBAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxC,OAAO;oBACL,QAAQ;iBACT,CAAC;AACJ,aAAC,CAAC;YACF,OAAO;SACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuJD,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,UAAoB,GAAG,IAAI,EAAA;YAMrE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;gBAC5C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC;AACjD,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1D,gBAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC5D,YAAA,IAAI,IAA2C,CAAC;AAChD,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE;gBACzC,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,IAAI,YAAY,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AAC1D,oBAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,CACpB,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,WAAW,EACX,OAAO,CAAC,GAAG,CAAC,qBAA4B,EACxC,OAAO,CAAC,GAAG,CAAC,yBAAgC,EAC5C,WAAW,CAAC,IAAI,CAAC;wBACf,cAAc,EAAE,YAAY,CAAC,WAAW;wBACxC,MAAM,EAAE,YAAY,CAAC,WAAW;AACjC,qBAAA,CAAC,CACH,CAAC;iBACH;qBAAM,IAAI,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,YAAY,EAAE;AAChE,oBAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,CACpB,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,WAAW,EACX,OAAO,CAAC,GAAG,CAAC,qBAA4B,EACxC,OAAO,CAAC,GAAG,CAAC,yBAAgC,EAC5C,WAAW,CAAC,IAAI,CAAC;wBACf,cAAc,EAAE,YAAY,CAAC,WAAW;wBACxC,MAAM,EAAE,YAAY,CAAC,WAAW;wBAChC,iBAAiB,EAAE,YAAY,CAAC,YAAY;AAC7C,qBAAA,CAAC,CACH,CAAC;iBACH;qBAAM,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,YAAY,EAAE;AACjE,oBAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,CACpB,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,WAAW,EACX,OAAO,CAAC,GAAG,CAAC,qBAA4B,EACxC,OAAO,CAAC,GAAG,CAAC,yBAAgC,EAC5C,WAAW,CAAC,IAAI,CAAC;wBACf,iBAAiB,EAAE,YAAY,CAAC,YAAY;AAC7C,qBAAA,CAAC,CACH,CAAC;iBACH;qBAAM;oBACL,IAAI,GAAG,QAAQ,CAAC,MAAM,CACpB,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,WAAW,EACX,OAAO,CAAC,GAAG,CAAC,qBAA4B,EACxC,OAAO,CAAC,GAAG,CAAC,yBAAgC,CAC7C,CAAC;iBACH;AAED,gBAAA,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;aAC7C;iBAAM;AACL,gBAAA,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAQ,CAAC;aACpD;AAED,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC;YACzD,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AACxB,gBAAA,IAAI,YAAY,GAAiC,KAAK,CAAQ,CAAC;AAE/D,gBAAA,KAAK,IAAI,EAAE,IAAI,YAAY,CAAC,UAAU,EAAE;oBACtC,IAAI,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACpC,oBAAA,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;wBACjB,YAAY,GAAG,CAAC,CAAC;wBACjB,MAAM;qBACP;iBACF;AAED,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,MAAM,EAAE;AACrC,oBAAA,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;iBAC3C;AACD,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,OAAO,EAAE;AACtC,oBAAA,IAAI,YAAY,CAAC,SAAS,EAAE;AAC1B,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,OAAO,EAAE;4BACX,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAA,EAAG,YAAY,CAAC,SAAS,CAAG,CAAA,CAAA,EAC7E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;yBACH;AACD,wBAAA,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;qBAC7C;yBAAM;AACL,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,OAAO,EAAE;AACX,4BAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAC9C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;yBACH;AACD,wBAAA,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAClC;iBACF;AACD,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,QAAQ,EAAE;AACvC,oBAAA,IAAI,YAAY,CAAC,SAAS,EAAE;wBAC1B,IAAI,YAAY,CAAC,SAAS,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE;AAElD,4BAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,YAAY,CAAC,SAAS,EACtB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAC1C,CAAC;yBACH;6BAAM;4BACL,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;yBACjD;qBACF;yBAAM;AACL,wBAAA,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE;AACxB,4BAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;yBACzC;qBACF;iBACF;AACD,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,QAAQ,EAAE;AACvC,oBAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,CACpB,YAAY,CAAC,SAAS,EACtB,KAAK,EACL,YAAY,CAAC,eAAe,CAC7B,CAAC;iBACH;AACD,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,MAAM,EAAE;AACrC,oBAAA,IAAI,YAAY,CAAC,SAAS,EAAE;wBAC1B,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE;4BACnD,MAAM,IAAI,KAAK,CAAC,CAAA;;;;;;;;AAQF,0BAAA,EAAA,YAAY,CAAC,SAAS,CAAA;;AAEjD,CAAA,CAAC,CAAC;yBACU;AACD,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,OAAO,EAAE;4BACX,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAA,EAAG,YAAY,CAAC,SAAS,CAAG,CAAA,CAAA,EAC5E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;yBACH;AACD,wBAAA,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;qBAC5C;yBAAM;AACL,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,OAAO,EAAE;AACX,4BAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;yBACH;wBACD,UAAU,GAAG,KAAK,CAAC;qBACpB;iBACF;AACH,aAAC,CAAC,CAAC;YAEH,IACE,OAAO,UAAU,KAAK,QAAQ;gBAC9B,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,UAAU,EAC/C;gBACA,IAAI,gBAAgB,GAAG,EAAE,CAAC;AAC1B,gBAAA,UAAU,GAAG,MAAM,CAAC,KAAK,CACvB,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,IAAG;oBACnD,gBAAgB,GAAG,KAAK,CAAC;iBAC1B,CAAC,CACH,CAAC;AACF,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,yBAAyB,EACrC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CACnC,CAAC;aACH;AAED,YAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;gBACnC,IAAI,uBAAuB,GAAG,EAAE,CAAC;AACjC,gBAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CACxB,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,IAAG;oBACpD,uBAAuB,GAAG,KAAK,CAAC;iBACjC,CAAC,CACH,CAAC;AAEF,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAC5C,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAC1C,CAAC;aACH;AAGD,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,QAAQ,EAAE,UAAU;AAClB,sBAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC;AAC1D,sBAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;aACjD,CAAC;AACF,YAAA,OAAO,aAAa,CAAC;AACvB,SAAC,CAAC;KAEH;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACx2EA,MAAM,mBAAmB,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtE,CAAC;AAAA,CAAC,EAAE,EAAE;;ACOP,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;MAGjD,SAAS,CAAA;AAIpB,IAAA,WAAA,GAAA;AAHO,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC;AAiBzB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QAyC7C,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;QAtDf,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,GAAG,EAAE,qBAAqB,CAAC;KACvD;AACM,IAAA,WAAW,QAAQ,GAAA;QACxB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE;YACvE,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;SACtF;QACD,OAAO,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;KAC3E;AAoCD,IAAA,WAAW,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED,IAAA,8BAA8B,CAAC,KAAc,EAAA;AAI3C,QAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;KAC1C;IAID,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KAC/B;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;KAC9B;AAED,IAAA,MAAM,MAAK;8GAxEA,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAT,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cADI,MAAM,EAAA,CAAA,CAAA,EAAA;;AA0BvB,UAAA,CAAA;AADN,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AACpC,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAM1B,UAAA,CAAA;AADN,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AAClC,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAM5B,UAAA,CAAA;AADN,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AACxB,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAQtC,UAAA,CAAA;AADN,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AACzB,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,6BAAA,EAAA,KAAA,CAAA,CAAA,CAAA;2FA7CjC,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;AA6EjC,CAAC;AAAA,CAAC,EAAE,EAAE;;AC5EM,MAAA,aAAa,GAAG,CAU3B,QAEyE,KACvE;AACF,IAAA,IAAI,MAAM,GAAG,QAAQ,CAACa,KAAG,CAAC,CAAC;IAM3B,MAAM,kBAAkB,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAMjE,IAAA,MAAM,GAAG,GAAG;AAEV,QAAA,KAAK,EAAE;AAmBL,YAAA,IAAI,WAAW,GAAA;gBACb,OAAO,MAAM,CAAC,WAAW,CAAC;aAC3B;AACD,YAAA,IAAI,YAAY,GAAA;gBACd,OAAO,MAAM,CAAC,YAAY,CAAC;aAC5B;AACD,YAAA,IAAI,SAAS,GAAA;gBACX,OAAO,MAAM,CAAC,SAAS,CAAC;aACzB;AACD,YAAA,IAAI,WAAW,GAAA;gBACb,OAAO,MAAM,CAAC,WAAW,CAAC;aAC3B;AACF,SAAA;AAGD,QAAA,IAAI,QAAQ,GAAA;YACV,OAAO,MAAM,CAAC,QAAQ,CAAC;SACxB;AACD,QAAA,IAAI,WAAW,GAAA;YACb,OAAO,MAAM,CAAC,WAAW,CAAC;SAC3B;AAGD;;AAEG;AACH,QAAA,MAAM,KAAK,GAAA;AACT,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;gBAC9B,MAAM,kBAAkB,CAAC,IAAI,CAAC;AAC5B,oBAAA,+BAA+B,EAAE,IAAI;AACtC,iBAAA,CAAC,CAAC;aACJ;AACD,YAAA,OAAO,kBAAkB,CAAC;SAC3B;AACD,QAAA,IAAI,SAAS,GAAA;AACX,YAAA,OAAO,kBAAkB,CAAC;SAC3B;AACD,QAAA,gBAAgB,CAAI,IAA+B,EAAA;AACjD,YAAA,OAAO,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC/C;AAED,QAAA,QAAQ,CAAI,IAA+B,EAAA;YACzC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7D,YAAA,OAAO,QAAe,CAAC;SAcxB;AAGD;;;AAGG;QACH,UAAU,EAAE,YAAqC;YAC/C,OAAO,MAAM,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAI;gBACjD,UAAU,CAAC,YAAW;AACpB,oBAAA,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;AAChC,oBAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,wBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,uCAAA,CAAyC,CAAC,CAAC;qBAC5D;AACD,oBAAA,MAAM,kBAAkB,CAAC,YAAY,EAAE,CAAC;AACxC,oBAAA,MAAM,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAC3C,oBAAA,MAAM,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;oBAMlD,kBAAkB,CAAC,YAAY,EAAE,CAAC;oBAClC,kBAAkB,CAAC,WAAW,EAAE,CAAC;;;AAKjC,oBAAA,MAAM,kBAAkB,CAAC,WAAW,EAAE,CAAC;oBACvC,IAAI,2BAA2B,GAAG,KAAK,CAAC;oBAExC,2BAA2B;AACzB,wBAAA,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAAC;AAEjD,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,2BAA2B,EAAE;AAClD,wBAAA,OAAO,CAAC,IAAI,CAAC,CAAA,oCAAA,CAAsC,CAAC,CAAC;qBACtD;yBAAM;AACL,wBAAA,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;qBAC9C;oBACD,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC9B,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;SACJ;KAEF,CAAC;AACF,IAAA,OAAO,GAAG,CAAC;AACb,EAAE;AAGD,CAAC;AAAA,CAAC,EAAE,EAAE;;ACpKP,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO;AACvC,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,YAAY,EAAE;;QAEZ,cAAc;AACf,KAAA;AACF,CAAA,CAAC,EAAE;AAIH,CAAC;AAAA,CAAC,EAAE,EAAE;;;;;;;ACRM,MAAA,qBAEX,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AAEpC,CAAA;AAEK,SAAU,cAAc,CAAC,OAA8B,EAAA;AAC3D,IAAA,OAAO,UAAkD,WAAc,EAAA;AACrE,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;QACF,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACtD,OAAO,cAAc,WAAW,CAAA;AAC9B,YAAA,WAAA,CAAY,GAAG,IAAW,EAAA;AACxB,gBAAA,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;gBAGf,MAAM,cAAc,GAAG,YAAY,CAAC,eAAe,CACjD,WAAW,CAAC,SAAS,CACtB,CAAC;gBAEF,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAG;oBAC5C,QACE,CAAC,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3C,wBAAA,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;AAClB,wBAAA,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EACvB;AACJ,iBAAC,CAAC,CAAC;AAGH,gBAAA,WAAW,CAAC,OAAO,CAAC,UAAU,IAAG;AAC/B,oBAAA,MAAM,cAAc,GAAI,IAAY,CAAC,UAAU,CAAC,CAAC;oBAEhD,IAAY,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,UAAiB,KAAI;wBACzD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAGtD,wBAAA,IAAI,MAAM,YAAY,OAAO,EAAE;AAC7B,4BAAA,MAAM,MAAM,CAAC;yBACd;AAGD,wBAAA,IACE,OAAO,CAAC,aAAa,KAAK,SAAS;4BACnC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC1C;;AAEC,4BAAA,IAAuB,CAAC,iBAAiB,CAAC,UAAiB,CAAC,CAAC;yBAC/D;AAED,wBAAA,OAAO,MAAM,CAAC;AAChB,qBAAC,CAAC;AACJ,iBAAC,CAAC,CAAC;aACJ;SACK,CAAC;AACX,KAAQ,CAAC;AACX,CAAC;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACtDA,IAAe,cAAc,GAA7B,MAAe,cAA6B,SAAQ,YAAY,CAAA;AAC3D,IAAA,iBAAiB,CAAC,SAAuB,EAAA;AACjD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;KAE9C;EACF;AANqB,cAAc,GAAA,UAAA,CAAA;AAHnC,IAAA,cAAc,CAAC;AACd,QAAA,SAAS,EAAE,gBAAgB;KAC5B,CAAC;AACoB,CAAA,EAAA,cAAc,CAMnC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACRA,IAAe,uBAAuB,GAAtC,MAAe,uBACpB,SAAQ,YAAY,CAAA;AAKpB;;AAEG;AACH,IAAA,SAAS,CAAC,MAAW,EAAA;AACnB,QAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;KAC9C;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAU,EAAA;QAEpB,OAAO,CAAC,GAAG,CAAC,CAAA,cAAA,CAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;KAC5C;AAED;;AAEG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;QAEnB,OAAO,CAAC,GAAG,CAAC,CAAA,aAAA,CAAe,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;KAC3C;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAuB,EAAA;QAClC,OAAO,CAAC,GAAG,CAAC,CAAA,wBAAA,CAA0B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACvD;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAuB,EAAA;QACjC,OAAO,CAAC,GAAG,CAAC,CAAA,uBAAA,CAAyB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACtD;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAuB,EAAA;QAClC,OAAO,CAAC,GAAG,CAAC,CAAA,uBAAA,CAAyB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACtD;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAuB,EAAA;QACjC,OAAO,CAAC,GAAG,CAAC,CAAA,sBAAA,CAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACrD;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAuB,EAAA;AAClC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,sBAAA,EAAyB,KAAK,CAAC,QAAQ,CAAA,UAAA,CAAY,EACnD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAuB,EAAA;AACjC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,qBAAA,EAAwB,KAAK,CAAC,QAAQ,CAAA,UAAA,CAAY,EAClD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,gBAAgB,CAAC,KAA2B,EAAA;AAC1C,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,sBAAA,EAAyB,KAAK,CAAC,QAAQ,CAAA,eAAA,CAAiB,EACxD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,eAAe,CAAC,KAA2B,EAAA;AACzC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,qBAAA,EAAwB,KAAK,CAAC,QAAQ,CAAA,eAAA,CAAiB,EACvD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,aAAa,CAAC,KAAwB,EAAA;AACpC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,sBAAA,EAAyB,KAAK,CAAC,QAAQ,CAAA,YAAA,CAAc,EACrD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAwB,EAAA;AACnC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,qBAAA,EAAwB,KAAK,CAAC,QAAQ,CAAA,YAAA,CAAc,EACpD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,sBAAsB,CAAC,KAA4B,EAAA;AACjD,QAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;KACpD;AAED;;AAEG;AACH,IAAA,qBAAqB,CAAC,KAA4B,EAAA;AAChD,QAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;KACnD;AAED;;AAEG;AACH,IAAA,uBAAuB,CAAC,KAA6B,EAAA;AACnD,QAAA,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;KACtD;AAED;;AAEG;AACH,IAAA,sBAAsB,CAAC,KAA6B,EAAA;AAClD,QAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;KACrD;AAED;;AAEG;AACH,IAAA,yBAAyB,CAAC,KAA+B,EAAA;AACvD,QAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;KACrD;AAED;;AAEG;AACH,IAAA,wBAAwB,CAAC,KAA+B,EAAA;AACtD,QAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;KACpD;CACF,CAAA;AA9JqB,uBAAuB,GAAA,UAAA,CAAA;AAH5C,IAAA,cAAc,CAAC;AACd,QAAA,SAAS,EAAE,yBAAyB;KACrC,CAAC;AACoB,CAAA,EAAA,uBAAuB,CA8J5C,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACvKD,IAAW,IAAI,CAWpB;AAXD,CAAA,UAAiB,IAAI,EAAA;AACL,IAAA,IAAA,CAAA,UAAU,GAAGC,cAAyB,CAAC;AACvC,IAAA,IAAA,CAAA,cAAc,GAAGC,kBAAiC,CAAC;AACnD,IAAA,IAAA,CAAA,MAAM,GAAGC,UAAiB,CAAC;AAC3B,IAAA,IAAA,CAAA,cAAc,GAAGC,kBAAiC,CAAC;AACnD,IAAA,IAAA,CAAA,QAAQ,GAAGC,YAAqB,CAAC;AACjC,IAAA,IAAA,CAAA,KAAK,GAAGC,SAAmB,CAAC;AAC5B,IAAA,IAAA,CAAA,UAAU,GAAGC,cAAyB,CAAC;AACvC,IAAA,IAAA,CAAA,UAAU,GAAGC,cAA6B,CAAC;AAC3C,IAAA,IAAA,CAAA,mBAAmB,GAAGC,uBAA4C,CAAC;AACpE,IAAA,IAAA,CAAA,OAAO,GAAGC,WAAuB,CAAC;AACjD,CAAC,EAXgB,IAAI,KAAJ,IAAI,GAWpB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACjBP;AACA;AAGM,SAAU,UAAU,CAAU,OAA8B,EAAA;AAChE,IAAA,OAAO,UAAU,WAAqB,EAAA;AACpC,QAAA,OAAO,GAAG,OAAO,IAAK,EAAU,CAAC;QACjC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAK,IAAY,CAAC;QAC/D,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAEtD,QAAA,OAAO,CAAC,uBAAuB,CAC7B,OAAO,EAAE,kBAAkB,IAAI,EAAE,EACjC,CAAC,CAAC,KAAK,CACL,OAAO,EAAE,mBAAmB,IAAI,EAAE,GACjC,OAAO,EAAE,uBAAuB,IAAI,EAAE,EACxC,CACF,CAAC,WAAW,CAAC,CAAC;QAGf,OAAO,CAAC,uBAAuB,CAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;AAE5D,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAC/B,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;;;QAIF,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACjD,KAAC,CAAC;AACJ,CAAC;AAEY,MAAA,iBAA2B,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AAU1E,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACpDD,SAAU,YAAY,CAAU,OAAgC,EAAA;AACpE,IAAA,OAAO,UAAU,WAAqB,EAAA;AACpC,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EACjC,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;AACF,QAAA,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAC5E,KAAC,CAAC;AACJ,CAAC;AAEY,MAAA,mBAEX,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AAEpC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACjBM,MAAA,MAAM,GAAG,CAAI,MAAuC,KAAO;AACtE,IAAA,OAAO,IAAI,KAAK,CACd,EAAE,EACF;AACE,QAAA,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAI;AACnB,YAAA,IAAI,QAAQ,KAAK,gBAAgB,EAAE;AACjC,gBAAA,OAAO,MAAM,KAAK,CAAC;aACpB;AAED,YAAA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC;YACtB,MAAM,gBAAgB,GAAG,IAAI,CAC3B,OAAO,CAAC,oBAAoB,CACV,CAAC;YACrB,MAAM,aAAa,GAAG,gBAAgB,CAAC;YACvC,IAAI,aAAa,EAAE;gBACjB,IAAI,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAiB,CAAC;AAG1D,gBAAA,IAAI,QAAQ,KAAK,sBAAsB,EAAE;oBACvC,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;iBAC9C;AACD,gBAAA,IAAI,QAAQ,KAAK,wBAAwB,EAAE;AACzC,oBAAA,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC;iBACnC;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBACtD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAE7C,MAAM,gBAAgB,GAAG,SAAS;sBAC9B,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,sBAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAMvB,gBAAA,OAAO,gBAAgB,CAAC;aACzB;AAGD,YAAA,OAAOC,QAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;SAEtC;AACF,KAAA,CACG,CAAC;AACT,EAAE;AAEK,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAOhC,MAAM,sBAAsB,GAAG,CACpC,wBAAyD,EACzD,SAAkB,KACgB;AAClC,IAAA,MAAM,SAAS,GAAG,IAAI,OAAO,EAAsB,CAAC;AACpD,IAAA,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;IAErC,IAAI,mBAAmB,GAAG,IAAI,CAAC;AAE/B,IAAA,MAAM,iBAAiB,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;AACvC,QAAA,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAA;AACxB,YAAA,IAAI,IAAI,KAAK,WAAW,EAAE;AACxB,gBAAA,OAAO,CAAC,GAAG,IAAW,KAAI;oBACxB,IAAI,mBAAmB,EAAE;wBACvB,mBAAmB,GAAG,KAAK,CAAC;AAC5B,wBAAA,MAAM,iBAAiB,GACrB,wBAAwB,EAAS,CAAC;wBACpC,MAAM,GAAG,GAAG,iBAAiB,CAC3B,OAAO,CAAC,oBAAoB,CACV,CAAC;wBACrB,IAAI,CAAC,GAAG,EAAE;4BACR,MAAM,IAAI,KAAK,CACb,CAAA;;AAEiC,gDAAA,CAAA;AAC/B,gCAAA,CAAA,sBAAA,EAAyB,iBAAiB,EAAE,IAAI,CAAA,IAAA,EAAO,SAAgB,CAAA;;;AAG1E,cAAA,CAAA,CACA,CAAC;yBACH;wBACD,MAAM,kBAAkB,GAAG,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAGhE,wBAAA,OAAO,CAAC,GAAG,CAAC,oDAAoD,EAAE;4BAChE,iBAAiB;4BACjB,SAAS;AACV,yBAAA,CAAC,CAAC;qBAEJ;AACD,oBAAA,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;AACnC,iBAAC,CAAC;aACH;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;SAC5C;AACF,KAAA,CAAC,CAAC;AAEH,IAAA,OAAO,iBAAmD,CAAC;AAC7D,CAAC,CAAC;AAED,CAAC;AAAA,CAAC,EAAE,EAAE;;AC1GN,CAAC;AAAA,CAAC,EAAE,EAAE;;AC2BD,IAAW,KAsEhB;AAtED,CAAA,UAAiB,IAAI,EAAA;AAEL,IAAA,IAAA,CAAA,IAAI,GAAGC,IAAS,CAAC;AACjB,IAAA,IAAA,CAAA,IAAI,GAAGC,IAAS,CAAC;AAGlB,IAAA,IAAA,CAAA,gBAAgB,GAAGC,gBAA4B,CAAC;AAG/C,IAAA,IAAA,CAAA,UAAU,GAAGC,cAAkC,CAAC;AAChD,IAAA,IAAA,CAAA,MAAM,GAAGC,UAA0B,CAAC;AACpC,IAAA,IAAA,CAAA,QAAQ,GAAGC,YAA8B,CAAC;AAC1C,IAAA,IAAA,CAAA,UAAU,GAAGC,cAAkC,CAAC;AAChD,IAAA,IAAA,CAAA,UAAU,GAAGC,cAAkC,CAAC;AAG9D;;AAEG;AACU,IAAA,IAAA,CAAA,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;AACvD;;AAEG;AACU,IAAA,IAAA,CAAA,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AACjD;;AAEG;AACU,IAAA,IAAA,CAAA,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;AACrD;;AAEG;AACU,IAAA,IAAA,CAAA,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;AAE5C,IAAA,IAAA,CAAA,aAAa,GAAGC,aAA6B,CAAC;AAE9C,IAAA,IAAA,CAAA,MAAM,GAAGC,MAAe,CAAC;AAKzB,IAAA,IAAA,CAAA,UAAU,GAAG,CAAC,MAAc,KAAI;AAC3C,QAAAC,eAA+B,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACrD,KAAC,CAAC;AAGW,IAAA,IAAA,CAAA,OAAO,GAAGC,OAAkB,CAAC;AAE1C;;;AAGG;AACU,IAAA,IAAA,CAAA,IAAI,GAAG,OAAO,OAI1B,KAAI;QACH,MAAM,WAAW,GAAG,CAAC,MAAM,2DAAqC;AAC7D,aAAA,WAAW,CAAC;QACf,MAAM,OAAO,GAAG,IAAA,CAAA,aAAa,CAAC,OAAO;AACnC,YAAA,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,EAAE,WAAW,EAAE;AACzB,YAAA,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAQ;YAC7C,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAQ;AACpD,SAAA,CAAC,CAAC,CAAC;AAEJ,QAAA,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;AAC3B,QAAA,OAAO,OAAO,CAAC;AACjB,KAAC,CAAC;AACJ,CAAC,EAtEgB,IAAI,KAAJ,IAAI,GAsEpB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC5GP;;AAEG;;;;"}
|