@galacean/engine-shaderlab 1.5.14 → 1.6.0-alpha.1
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/dist/browser.js +1 -1
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/browser.verbose.js +1 -1
- package/dist/browser.verbose.js.map +1 -1
- package/dist/browser.verbose.min.js +1 -1
- package/dist/browser.verbose.min.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/main.verbose.js +1 -1
- package/dist/main.verbose.js.map +1 -1
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/dist/module.verbose.js +1 -1
- package/dist/module.verbose.js.map +1 -1
- package/package.json +4 -4
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/Keywords.ts","../src/common/types.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/lexer/Utils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../src/GSError.ts","../src/common/BaseScanner.ts","../src/lexer/Lexer.ts","../src/lalr/types.ts","../src/parser/ShaderInfo.ts","../src/parser/symbolTable/SymbolDataType.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/symbolTable/FnSymbol.ts","../src/parser/symbolTable/StructSymbol.ts","../src/common/BaseSymbolTable.ts","../src/parser/symbolTable/TargetSymbolTable.ts","../src/parser/symbolTable/VarSymbol.ts","../src/parser/SemanticAnalyzer.ts","../src/parser/GrammarSymbol.ts","../src/lalr/Production.ts","../src/parser/Grammar.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/lalr/Utils.ts","../src/lalr/CFG.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/lalr/LALR1.ts","../src/parser/ShaderTargetParser.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../src/preprocessor/MacroDefine.ts","../src/preprocessor/constants.ts","../src/preprocessor/Utils.ts","../src/preprocessor/PpScanner.ts","../src/preprocessor/PpParser.ts","../src/preprocessor/Preprocessor.ts","../src/ParserUtils.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/common/Enums.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/contentParser/KeywordMap.ts","../src/contentParser/Scanner.ts","../src/contentParser/ContentSymbolTable.ts","../src/contentParser/ShaderContentParser.ts","../src/ShaderLab.ts","../src/index.ts"],"sourcesContent":["function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { IPoolElement } from \"@galacean/engine\";\nimport { ShaderPosition } from \"./ShaderPosition\";\n\nexport class ShaderRange implements IPoolElement {\n public start: ShaderPosition;\n public end: ShaderPosition;\n\n set(start: ShaderPosition, end: ShaderPosition) {\n this.start = start;\n this.end = end;\n }\n\n dispose(): void {\n this.start.dispose();\n this.end.dispose();\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class ShaderPosition implements IPoolElement {\n index: number;\n // #if _VERBOSE\n line: number;\n column: number;\n // #endif\n\n set(\n index: number,\n // #if _VERBOSE\n line: number,\n column: number\n // #endif\n ) {\n this.index = index;\n // #if _VERBOSE\n this.line = line;\n this.column = column;\n // #endif\n }\n\n dispose(): void {\n this.index = 0;\n // #if _VERBOSE\n this.line = 0;\n this.column = 0;\n // #endif\n }\n}\n","export enum EKeyword {\n ATTRIBUTE = 0,\n CONST,\n BOOL,\n FLOAT,\n DOUBLE,\n INT,\n UINT,\n BREAK,\n CONTINUE,\n DO,\n ELSE,\n FOR,\n IF,\n WHILE,\n DISCARD,\n RETURN,\n BVEC2,\n BVEC3,\n BVEC4,\n IVEC2,\n IVEC3,\n IVEC4,\n UVEC2,\n UVEC3,\n UVEC4,\n VEC2,\n VEC3,\n VEC4,\n VEC4_ARRAY,\n MAT2,\n MAT3,\n MAT4,\n MAT2X3,\n MAT2X4,\n MAT3X2,\n MAT3X4,\n MAT4X2,\n MAT4X3,\n IN,\n OUT,\n INOUT,\n CENTROID,\n SAMPLER2D,\n SAMPLER3D,\n SAMPLER_CUBE,\n SAMPLER2D_SHADOW,\n SAMPLER_CUBE_SHADOW,\n SAMPLER2D_ARRAY,\n SAMPLER2D_ARRAY_SHADOW,\n I_SAMPLER2D,\n I_SAMPLER3D,\n I_SAMPLER_CUBE,\n I_SAMPLER2D_ARRAY,\n U_SAMPLER2D,\n U_SAMPLER3D,\n U_SAMPLER_CUBE,\n U_SAMPLER2D_ARRAY,\n STRUCT,\n LAYOUT,\n LOCATION,\n VOID,\n TRUE,\n FALSE,\n PRECISION,\n PRECISE,\n HIGHP,\n MEDIUMP,\n LOWP,\n INVARIANT,\n SMOOTH,\n FLAT,\n NOPERSPECTIVE,\n\n // galacean internals\n GS_RenderQueueType,\n GS_BlendState,\n GS_DepthState,\n GS_StencilState,\n GS_RasterState,\n GS_EditorProperties,\n GS_EditorMacros,\n GS_Editor,\n GS_Tags,\n GS_ReplacementTag,\n GS_LightMode,\n GS_PipelineStage,\n GS_VertexShader,\n GS_FragmentShader,\n GS_SubShader,\n GS_Pass,\n GS_BlendFactor,\n GS_BlendOperation,\n GS_Bool,\n GS_Number,\n GS_Color,\n GS_CompareFunction,\n GS_StencilOperation,\n GS_CullMode,\n GS_UsePass\n}\n","import { EKeyword } from \"./Keywords\";\n\nexport const KeywordTable = new Map<string, EKeyword>([\n [\"attribute\", EKeyword.ATTRIBUTE],\n [\"const\", EKeyword.CONST],\n [\"bool\", EKeyword.BOOL],\n [\"float\", EKeyword.FLOAT],\n [\"double\", EKeyword.DOUBLE],\n [\"int\", EKeyword.INT],\n [\"uint\", EKeyword.UINT],\n [\"break\", EKeyword.BREAK],\n [\"continue\", EKeyword.CONTINUE],\n [\"do\", EKeyword.DO],\n [\"else\", EKeyword.ELSE],\n [\"for\", EKeyword.FOR],\n [\"if\", EKeyword.IF],\n [\"while\", EKeyword.WHILE],\n [\"discard\", EKeyword.DISCARD],\n [\"return\", EKeyword.RETURN],\n [\"bvec2\", EKeyword.BVEC2],\n [\"bvec3\", EKeyword.BVEC3],\n [\"bvec4\", EKeyword.BVEC4],\n [\"ivec2\", EKeyword.IVEC2],\n [\"ivec3\", EKeyword.IVEC3],\n [\"ivec4\", EKeyword.IVEC4],\n [\"uvec2\", EKeyword.UVEC2],\n [\"uvec3\", EKeyword.UVEC3],\n [\"uvec4\", EKeyword.UVEC4],\n [\"vec2\", EKeyword.VEC2],\n [\"vec3\", EKeyword.VEC3],\n [\"vec4\", EKeyword.VEC4],\n [\"mat2\", EKeyword.MAT2],\n [\"mat3\", EKeyword.MAT3],\n [\"mat4\", EKeyword.MAT4],\n [\"in\", EKeyword.IN],\n [\"out\", EKeyword.OUT],\n [\"inout\", EKeyword.INOUT],\n [\"sampler2D\", EKeyword.SAMPLER2D],\n [\"samplerCube\", EKeyword.SAMPLER_CUBE],\n [\"sampler3D\", EKeyword.SAMPLER3D],\n [\"sampler2DShadow\", EKeyword.SAMPLER2D_SHADOW],\n [\"samplerCubeShadow\", EKeyword.SAMPLER_CUBE_SHADOW],\n [\"sampler2DArray\", EKeyword.SAMPLER2D_ARRAY],\n [\"sampler2DArrayShadow\", EKeyword.SAMPLER2D_ARRAY_SHADOW],\n [\"isampler2D\", EKeyword.I_SAMPLER2D],\n [\"isampler3D\", EKeyword.I_SAMPLER3D],\n [\"isamplerCube\", EKeyword.I_SAMPLER_CUBE],\n [\"isampler2DArray\", EKeyword.I_SAMPLER2D_ARRAY],\n [\"usampler2D\", EKeyword.U_SAMPLER2D],\n [\"usampler3D\", EKeyword.U_SAMPLER3D],\n [\"usamplerCube\", EKeyword.U_SAMPLER_CUBE],\n [\"usampler2DArray\", EKeyword.U_SAMPLER2D_ARRAY],\n [\"struct\", EKeyword.STRUCT],\n [\"void\", EKeyword.VOID],\n [\"true\", EKeyword.TRUE],\n [\"false\", EKeyword.FALSE],\n [\"precision\", EKeyword.PRECISION],\n [\"precise\", EKeyword.PRECISE],\n [\"highp\", EKeyword.HIGHP],\n [\"mediump\", EKeyword.MEDIUMP],\n [\"lowp\", EKeyword.LOWP],\n [\"invariant\", EKeyword.INVARIANT],\n [\"flat\", EKeyword.FLAT],\n [\"smooth\", EKeyword.SMOOTH],\n [\"noperspective\", EKeyword.NOPERSPECTIVE],\n [\"centroid\", EKeyword.CENTROID],\n [\"layout\", EKeyword.LAYOUT],\n [\"location\", EKeyword.LOCATION]\n]);\n\nexport enum ETokenType {\n ID = 1000,\n FLOAT_CONSTANT,\n INT_CONSTANT,\n STRING_CONST,\n /** << */\n LEFT_OP,\n /** \\>> */\n RIGHT_OP,\n /** ++ */\n INC_OP,\n /** -- */\n DEC_OP,\n /** <= */\n LE_OP,\n /** \\>= */\n GE_OP,\n /** == */\n EQ_OP,\n /** != */\n NE_OP,\n /** && */\n AND_OP,\n /** || */\n OR_OP,\n /** ^^ */\n XOR_OP,\n /** *= */\n MUL_ASSIGN,\n /** /= */\n DIV_ASSIGN,\n /** += */\n ADD_ASSIGN,\n /** -= */\n SUB_ASSIGN,\n /** %= */\n MOD_ASSIGN,\n /** <<= */\n LEFT_ASSIGN,\n /** >>= */\n RIGHT_ASSIGN,\n /** &= */\n AND_ASSIGN,\n /** ^= */\n XOR_ASSIGN,\n /** |= */\n OR_ASSIGN,\n /** ( */\n LEFT_PAREN,\n /** ) */\n RIGHT_PAREN,\n /** [ */\n LEFT_BRACKET,\n /** ] */\n RIGHT_BRACKET,\n /** { */\n LEFT_BRACE,\n /** } */\n RIGHT_BRACE,\n /** . */\n DOT,\n /** , */\n COMMA,\n COLON,\n /** = */\n EQUAL,\n /** ; */\n SEMICOLON,\n /** ! */\n BANG,\n /** \\- */\n DASH,\n /** ~ */\n TILDE,\n PLUS,\n /** \\* */\n STAR,\n /** / */\n SLASH,\n /** % */\n PERCENT,\n /** < */\n LEFT_ANGLE,\n /** \\> */\n RIGHT_ANGLE,\n VERTICAL_BAR,\n /** ^ */\n CARET,\n /** & */\n AMPERSAND,\n /** ? */\n QUESTION,\n\n NOT_WORD,\n\n /** ε */\n EPSILON = 1998,\n EOF = 1999\n}\n\nexport const TypeAny = 3000;\n\nexport type GalaceanDataType =\n | EKeyword.VOID\n | EKeyword.FLOAT\n | EKeyword.BOOL\n | EKeyword.INT\n | EKeyword.UINT\n | EKeyword.VEC2\n | EKeyword.VEC3\n | EKeyword.VEC4\n | EKeyword.BVEC2\n | EKeyword.BVEC3\n | EKeyword.BVEC4\n | EKeyword.IVEC2\n | EKeyword.IVEC3\n | EKeyword.IVEC4\n | EKeyword.UVEC2\n | EKeyword.UVEC3\n | EKeyword.UVEC4\n | EKeyword.MAT2\n | EKeyword.MAT3\n | EKeyword.MAT4\n | EKeyword.MAT2X3\n | EKeyword.MAT2X4\n | EKeyword.MAT3X2\n | EKeyword.MAT3X4\n | EKeyword.MAT4X2\n | EKeyword.MAT4X3\n | EKeyword.SAMPLER2D\n | EKeyword.SAMPLER3D\n | EKeyword.SAMPLER_CUBE\n | EKeyword.SAMPLER2D_SHADOW\n | EKeyword.SAMPLER_CUBE_SHADOW\n | EKeyword.SAMPLER2D_ARRAY\n | EKeyword.SAMPLER2D_ARRAY_SHADOW\n | EKeyword.I_SAMPLER2D\n | EKeyword.I_SAMPLER3D\n | EKeyword.I_SAMPLER_CUBE\n | EKeyword.I_SAMPLER2D_ARRAY\n | EKeyword.U_SAMPLER2D\n | EKeyword.U_SAMPLER3D\n | EKeyword.U_SAMPLER_CUBE\n | EKeyword.U_SAMPLER2D_ARRAY\n | EKeyword.VEC4_ARRAY\n | typeof TypeAny\n | string;\n\nexport type TokenType = ETokenType | EKeyword;\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","import { ClearableObjectPool, IPoolElement, Logger } from \"@galacean/engine\";\nimport { GSErrorName } from \"./GSError\";\nimport { ShaderRange } from \"./common/ShaderRange\";\nimport { ShaderPosition } from \"./common/ShaderPosition\";\n// #if _VERBOSE\nimport { GSError } from \"./GSError\";\n// #endif\n\nexport class ShaderLabUtils {\n private static _shaderLabObjectPoolSet: ClearableObjectPool<IPoolElement>[] = [];\n\n static createObjectPool<T extends IPoolElement>(type: new () => T) {\n const pool = new ClearableObjectPool<T>(type);\n ShaderLabUtils._shaderLabObjectPoolSet.push(pool);\n return pool;\n }\n\n static clearAllShaderLabObjectPool() {\n for (let i = 0, n = ShaderLabUtils._shaderLabObjectPoolSet.length; i < n; i++) {\n ShaderLabUtils._shaderLabObjectPoolSet[i].clear();\n }\n }\n\n static createGSError(\n message: string,\n errorName: GSErrorName,\n source: string,\n location: ShaderRange | ShaderPosition,\n file?: string\n ): Error | undefined {\n // #if _VERBOSE\n return new GSError(errorName, message, location, source, file);\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { ETokenType } from \"./types\";\nimport { ShaderRange, ShaderPosition } from \".\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { IPoolElement } from \"@galacean/engine\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport class BaseToken<T extends number = number> implements IPoolElement {\n static pool = ShaderLabUtils.createObjectPool(BaseToken);\n\n type: T;\n lexeme: string;\n location: ShaderRange;\n\n set(type: T, lexeme: string, start?: ShaderPosition);\n set(type: T, lexeme: string, location?: ShaderRange);\n set(type: T, lexeme: string, arg?: ShaderRange | ShaderPosition) {\n this.type = type;\n this.lexeme = lexeme;\n if (arg) {\n if (arg instanceof ShaderRange) {\n this.location = arg as ShaderRange;\n } else {\n const end = ShaderLab.createPosition(\n arg.index + lexeme.length,\n // #if _VERBOSE\n arg.line,\n arg.column + lexeme.length\n // #endif\n );\n this.location = ShaderLab.createRange(arg, end);\n }\n }\n }\n\n dispose(): void {}\n}\n\nexport const EOF = new BaseToken();\nEOF.set(ETokenType.EOF, \"/EOF\");\n","export default class LexerUtils {\n static isNum(charCode: number) {\n return charCode >= 48 && charCode <= 57;\n }\n\n static isLetter(charCode: number) {\n return (\n charCode === 95 || // _\n (charCode >= 48 && charCode <= 57) || // 0 - 9\n (charCode >= 65 && charCode <= 90) || // A - Z\n (charCode >= 97 && charCode <= 122) // a - z\n );\n }\n\n static isAlpha(charCode: number) {\n return (\n charCode === 95 || // _\n (charCode >= 65 && charCode <= 90) || // A - Z\n (charCode >= 97 && charCode <= 122) // a - z\n );\n }\n\n static isPpCharacters(charCode: number) {\n return (\n charCode === 35 || // #\n charCode === 95 || // _\n (charCode >= 48 && charCode <= 57) || // 0 - 9\n (charCode >= 65 && charCode <= 90) || // A - Z\n (charCode >= 97 && charCode <= 122) // a - z\n );\n }\n\n static isSpace(charCode: number) {\n return (\n charCode === 9 || // Tab\n charCode === 10 || // Line break - /n\n charCode === 13 || // Carriage return -/r\n charCode === 32 // Space\n );\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","// #if _VERBOSE\nimport { ShaderPosition } from \"./common/ShaderPosition\";\nimport { ShaderRange } from \"./common/ShaderRange\";\n\nexport class GSError extends Error {\n static wrappingLineCount = 2;\n\n constructor(\n name: GSErrorName,\n message: string,\n public readonly location: ShaderRange | ShaderPosition,\n public readonly source: string,\n public readonly file?: string\n ) {\n super(message);\n this.name = name;\n }\n\n override toString(): string {\n let start: ShaderPosition, end: ShaderPosition;\n const { message, location, source } = this;\n if (!source) {\n return message;\n }\n\n if (location instanceof ShaderPosition) {\n start = end = location;\n } else {\n start = location.start;\n end = location.end;\n }\n const lines = source.split(\"\\n\");\n\n let diagnosticMessage = `${this.name}: ${message}\\n\\n`;\n const lineSplit = \"|···\";\n\n const wrappingLineCount = GSError.wrappingLineCount;\n for (let i = start.line - wrappingLineCount, n = end.line + wrappingLineCount; i <= n; i++) {\n const line = lines[i];\n diagnosticMessage += lineSplit + `${line}\\n`;\n\n if (i < start.line || i > end.line) continue;\n\n let remarkStart = 0;\n let remarkEnd = line.length;\n let paddingLength = lineSplit.length;\n if (i === start.line) {\n remarkStart = start.column;\n paddingLength += start.column;\n }\n if (i === end.line) {\n remarkEnd = end.column;\n }\n const remarkLength = Math.max(remarkEnd - remarkStart, 1);\n\n diagnosticMessage += \" \".repeat(paddingLength) + \"^\".repeat(remarkLength) + \"\\n\";\n }\n\n return diagnosticMessage;\n }\n}\n\n// #endif\nexport enum GSErrorName {\n PreprocessorError = \"PreprocessorError\",\n CompilationError = \"CompilationError\",\n ScannerError = \"ScannerError\"\n}\n","import { ETokenType, ShaderRange, ShaderPosition } from \".\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { BaseToken } from \"./BaseToken\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { Logger } from \"@galacean/engine\";\n\nexport type OnToken = (token: BaseToken, scanner: BaseScanner) => void;\n\n/**\n * @internal\n */\nexport default class BaseScanner {\n private static _spaceCharsWithBreak = [\" \", \"\\t\", \"\\n\", \"\\r\"];\n private static _spaceChars = [\" \", \"\\t\"];\n private static _checkIsIn(checked: string, chars: string[]): boolean {\n for (let i = 0; i < chars.length; i++) {\n if (checked === chars[i]) {\n return true;\n }\n continue;\n }\n return false;\n }\n\n protected _currentIndex = 0;\n protected _source: string;\n\n // #if _VERBOSE\n protected _column = 0;\n protected _line = 0;\n // #endif\n\n get current(): number {\n return this._currentIndex;\n }\n\n get source(): string {\n return this._source;\n }\n\n getCurPosition(): ShaderPosition {\n return ShaderLab.createPosition(\n this._currentIndex,\n // #if _VERBOSE\n this._line,\n this._column\n // #endif\n );\n }\n\n // #if _VERBOSE\n get line() {\n return this._line;\n }\n\n get column() {\n return this._column;\n }\n // #endif\n\n protected readonly _keywordsMap: Map<string, number>;\n\n constructor(source: string, kws: Map<string, number> = new Map()) {\n this._source = source;\n this._keywordsMap = kws;\n }\n\n isEnd(): boolean {\n return this._currentIndex >= this._source.length;\n }\n\n getCurChar(): string {\n return this._source[this._currentIndex];\n }\n\n getCurCharCode(): number {\n return this._source.charCodeAt(this._currentIndex);\n }\n\n advance(count = 1): void {\n // #if _VERBOSE\n for (let i = 0; i < count; i++) {\n this._advance();\n }\n // #else\n this._currentIndex += count;\n // #endif\n }\n\n _advance(): void {\n // #if _VERBOSE\n if (this.getCurChar() === \"\\n\") {\n this._line += 1;\n this._column = 0;\n } else {\n this._column += 1;\n }\n // #endif\n\n this._currentIndex++;\n }\n\n skipSpace(includeLineBreak: boolean): void {\n const spaceChars = includeLineBreak ? BaseScanner._spaceCharsWithBreak : BaseScanner._spaceChars;\n let curChar = this.getCurChar();\n\n while (BaseScanner._checkIsIn(curChar, spaceChars)) {\n this._advance();\n curChar = this.getCurChar();\n }\n }\n\n skipCommentsAndSpace(): ShaderRange | undefined {\n this.skipSpace(true);\n if (this.peek(2) === \"//\") {\n const start = this.getCurPosition();\n this.advance(2);\n // single line comments\n let curChar = this.getCurChar();\n while (curChar !== \"\\n\" && curChar !== \"\\r\" && !this.isEnd()) {\n this._advance();\n curChar = this.getCurChar();\n }\n this.skipCommentsAndSpace();\n return ShaderLab.createRange(start, this.getCurPosition());\n } else if (this.peek(2) === \"/*\") {\n const start = this.getCurPosition();\n this.advance(2);\n // multi-line comments\n while (this.peek(2) !== \"*/\" && !this.isEnd()) this._advance();\n this.advance(2);\n this.skipCommentsAndSpace();\n return ShaderLab.createRange(start, this.getCurPosition());\n }\n }\n\n peek(to: number): string {\n const offset = this._currentIndex;\n return this._source.substring(offset, offset + to);\n }\n\n scanText(text: string) {\n this.skipCommentsAndSpace();\n const peek = this.peek(text.length);\n if (peek !== text) {\n this.throwError(this.getCurPosition(), `Expect text \"${text}\", but got \"${peek}\"`);\n }\n this.advance(text.length);\n }\n\n throwError(pos: ShaderPosition | ShaderRange, ...msgs: any[]) {\n const error = ShaderLabUtils.createGSError(msgs.join(\" \"), GSErrorName.ScannerError, this._source, pos);\n // #if _VERBOSE\n Logger.error(error!.toString());\n // #endif\n throw error;\n }\n\n scanPairedText(left: string, right: string, balanced = false, skipLeading = false) {\n if (!skipLeading) {\n this.scanText(left);\n }\n const start = this._currentIndex;\n let level = balanced ? 1 : 0;\n while (this.peek(right.length) !== right || level !== 0) {\n if (this.isEnd()) return;\n if (balanced) {\n if (this.peek(left.length) === left) {\n level += 1;\n this.advance(left.length);\n continue;\n } else if (this.peek(right.length) === right) {\n level -= 1;\n if (level === 0) break;\n this.advance(right.length);\n continue;\n }\n }\n this.advance(right.length);\n }\n this.advance(right.length);\n return this._source.substring(start, this._currentIndex - right.length);\n }\n\n scanToken(onToken?: OnToken, splitCharRegex = /\\w/) {\n this.skipCommentsAndSpace();\n const start = this.getCurPosition();\n if (this.isEnd()) return;\n while (splitCharRegex.test(this.getCurChar()) && !this.isEnd()) this._advance();\n const end = this.getCurPosition();\n\n if (start.index === end.index) {\n this._advance();\n const token = BaseToken.pool.get();\n token.set(ETokenType.NOT_WORD, this._source[start.index], start);\n onToken?.(token, this);\n return token;\n }\n\n const lexeme = this._source.substring(start.index, end.index);\n const tokenType = this._keywordsMap.get(lexeme) ?? ETokenType.ID;\n const range = ShaderLab.createRange(start, end);\n const token = BaseToken.pool.get();\n token.set(tokenType, lexeme, range);\n onToken?.(token, this);\n return token;\n }\n}\n","import { ETokenType, KeywordTable } from \"../common\";\nimport { EOF, BaseToken } from \"../common/BaseToken\";\nimport LexerUtils from \"./Utils\";\nimport BaseScanner from \"../common/BaseScanner\";\nimport { ShaderLab } from \"../ShaderLab\";\n\n/**\n * The Lexer of ShaderLab Compiler\n */\nexport class Lexer extends BaseScanner {\n reset(source: string) {\n this._source = source;\n this._currentIndex = 0;\n // #if _VERBOSE\n this._line = this._column = 0;\n // #endif\n }\n\n *tokenize() {\n while (!this.isEnd()) {\n yield this.scanToken();\n }\n return EOF;\n }\n\n override skipSpace() {\n while (LexerUtils.isSpace(this.getCurCharCode())) {\n this._advance();\n }\n }\n\n override scanToken(): BaseToken {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return EOF;\n }\n\n if (LexerUtils.isAlpha(this.getCurCharCode())) {\n return this._scanWord();\n }\n if (LexerUtils.isNum(this.getCurCharCode())) {\n return this._scanNum();\n }\n\n const start = this._getPosition();\n const token = BaseToken.pool.get();\n let curChar: string;\n\n switch (this.getCurChar()) {\n case \"<\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"<\") {\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n token.set(ETokenType.LEFT_ASSIGN, \"<<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_OP, \"<<\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.LE_OP, \"<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_ANGLE, \"<\", start);\n break;\n\n case \">\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \">\") {\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n token.set(ETokenType.RIGHT_ASSIGN, \">>=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_OP, \">>\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.GE_OP, \">=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_ANGLE, \">\", start);\n break;\n\n case \"+\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"+\") {\n this._advance();\n token.set(ETokenType.INC_OP, \"++\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.ADD_ASSIGN, \"+=\", start);\n break;\n }\n token.set(ETokenType.PLUS, \"+\", start);\n break;\n\n case \"-\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"-\") {\n this._advance();\n token.set(ETokenType.DEC_OP, \"--\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.SUB_ASSIGN, \"-=\", start);\n break;\n }\n token.set(ETokenType.DASH, \"-\", start);\n break;\n\n case \"=\":\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n token.set(ETokenType.EQ_OP, \"==\", start);\n break;\n }\n token.set(ETokenType.EQUAL, \"=\", start);\n break;\n\n case \"!\":\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n token.set(ETokenType.NE_OP, \"!=\", start);\n break;\n }\n token.set(ETokenType.BANG, \"!\", start);\n break;\n\n case \"&\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"&\") {\n this._advance();\n token.set(ETokenType.AND_OP, \"&&\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.ADD_ASSIGN, \"&=\", start);\n break;\n }\n token.set(ETokenType.AMPERSAND, \"&\", start);\n break;\n\n case \"|\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"|\") {\n this._advance();\n token.set(ETokenType.OR_OP, \"||\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.OR_ASSIGN, \"|=\", start);\n break;\n }\n token.set(ETokenType.VERTICAL_BAR, \"|\", start);\n break;\n\n case \"^\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"^\") {\n this._advance();\n token.set(ETokenType.XOR_OP, \"^^\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.XOR_ASSIGN, \"^=\", start);\n break;\n }\n token.set(ETokenType.CARET, \"^\", start);\n break;\n\n case \"*\":\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n token.set(ETokenType.MUL_ASSIGN, \"*=\", start);\n break;\n }\n\n token.set(ETokenType.STAR, \"*\", start);\n break;\n\n case \"/\":\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n\n token.set(ETokenType.DIV_ASSIGN, \"/=\", start);\n break;\n }\n\n token.set(ETokenType.SLASH, \"/\", start);\n break;\n\n case \"%\":\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n\n token.set(ETokenType.MOD_ASSIGN, \"%=\", start);\n break;\n }\n\n token.set(ETokenType.PERCENT, \"%\", start);\n break;\n\n case \"(\":\n this._advance();\n\n token.set(ETokenType.LEFT_PAREN, \"(\", start);\n break;\n case \")\":\n this._advance();\n\n token.set(ETokenType.RIGHT_PAREN, \")\", start);\n break;\n case \"{\":\n this._advance();\n\n token.set(ETokenType.LEFT_BRACE, \"{\", start);\n break;\n case \"}\":\n this._advance();\n\n token.set(ETokenType.RIGHT_BRACE, \"}\", start);\n break;\n case \"[\":\n this._advance();\n\n token.set(ETokenType.LEFT_BRACKET, \"[\", start);\n break;\n case \"]\":\n this._advance();\n\n token.set(ETokenType.RIGHT_BRACKET, \"]\", start);\n break;\n case \".\":\n this._advance();\n if (LexerUtils.isNum(this.getCurCharCode())) {\n return this._scanNumAfterDot();\n }\n\n token.set(ETokenType.DOT, \".\", start);\n break;\n case \",\":\n this._advance();\n\n token.set(ETokenType.COMMA, \",\", start);\n break;\n case \":\":\n this._advance();\n\n token.set(ETokenType.COLON, \":\", start);\n return token;\n case \";\":\n this._advance();\n\n token.set(ETokenType.SEMICOLON, \";\", start);\n break;\n case \"~\":\n this._advance();\n\n token.set(ETokenType.TILDE, \"~\", start);\n break;\n case \"?\":\n this._advance();\n\n token.set(ETokenType.QUESTION, \"?\", start);\n break;\n case '\"':\n this._advance();\n return this._scanStringConst();\n\n default:\n this.throwError(this.getCurPosition(), `Unexpected character ${this.getCurChar()}`);\n }\n return token;\n }\n\n private _scanStringConst() {\n const start = this._getPosition();\n const buffer: string[] = [];\n while (this.getCurChar() !== '\"') {\n buffer.push(this.getCurChar());\n this._advance();\n }\n this._advance();\n const range = ShaderLab.createRange(start, this._getPosition());\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.STRING_CONST, buffer.join(\"\"), range);\n return token;\n }\n\n private _scanNumAfterDot() {\n const buffer = [\".\"];\n while (LexerUtils.isNum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this._getPosition(1));\n return token;\n }\n\n private _getPosition(offset /** offset from starting point */ = 0) {\n return ShaderLab.createPosition(\n this.current - offset,\n // #if _VERBOSE\n this._line,\n this._column - offset\n // #endif\n );\n }\n\n private _scanWord() {\n const buffer: string[] = [this.getCurChar()];\n const start = this._getPosition();\n this._advance();\n while (LexerUtils.isLetter(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n const word = buffer.join(\"\");\n const kt = KeywordTable.get(word);\n if (kt) {\n const token = BaseToken.pool.get();\n token.set(kt, word, start);\n return token;\n }\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.ID, word, start);\n return token;\n }\n\n private _scanNum() {\n const buffer: string[] = [];\n while (LexerUtils.isNum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n if (this.getCurChar() === \".\") {\n buffer.push(this.getCurChar());\n this._advance();\n while (LexerUtils.isNum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this._getPosition(buffer.length));\n return token;\n } else {\n if (this.getCurChar() === \"e\" || this.getCurChar() === \"E\") {\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this._getPosition(buffer.length));\n return token;\n } else {\n this._scanIntegerSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.INT_CONSTANT, buffer.join(\"\"), this._getPosition(buffer.length));\n return token;\n }\n }\n }\n\n private _scanFloatSuffix(buffer: string[]) {\n if (this.getCurChar() === \"e\" || this.getCurChar() === \"E\") {\n buffer.push(this.getCurChar());\n this._advance();\n if (this.getCurChar() === \"+\" || this.getCurChar() === \"-\") {\n buffer.push(this.getCurChar());\n this._advance();\n }\n if (!LexerUtils.isNum(this.getCurCharCode()))\n this.throwError(this.getCurPosition(), \"lexing error, invalid exponent suffix.\");\n while (LexerUtils.isNum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n }\n if (this.getCurChar() === \"f\" || this.getCurChar() === \"F\") {\n buffer.push(this.getCurChar());\n this._advance();\n }\n }\n\n private _scanIntegerSuffix(buffer: string[]) {\n if (this.getCurChar() === \"u\" || this.getCurChar() === \"U\") {\n buffer.push(this.getCurChar());\n this._advance();\n }\n }\n}\n","import { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\n\nexport type StateActionTable = Map<number /** state ID */, ActionTable>;\nexport type ActionTable = Map<Terminal, ActionInfo>;\nexport type StateGotoTable = Map<number /** state ID */, GotoTable>;\nexport type GotoTable = Map<NoneTerminal, number /** state ID */>;\n\nexport enum EAction {\n Shift = 0,\n Reduce,\n Accept\n}\n\nexport interface ActionInfo {\n action: EAction;\n target?: number;\n}\n","import { ASTNode } from \"./AST\";\nimport { TargetSymbolTable } from \"../parser/symbolTable\";\n\nexport class ShaderData {\n symbolTable: TargetSymbolTable;\n\n vertexMain: ASTNode.FunctionDefinition;\n fragmentMain: ASTNode.FunctionDefinition;\n\n globalPrecisions: ASTNode.PrecisionSpecifier[] = [];\n}\n","import { GalaceanDataType } from \"../../common\";\nimport { ASTNode } from \"../AST\";\n\nexport class SymbolDataType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n","import { IBaseSymbol } from \"../../common/BaseSymbolTable\";\nimport { GalaceanDataType } from \"../../common/types\";\nimport { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\n\nexport enum ESymbolType {\n VAR,\n FN,\n STRUCT\n}\n\nexport type SymbolAstNode =\n | ASTNode.Initializer\n | ASTNode.StructSpecifier\n | ASTNode.FunctionDefinition\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\nexport class SymbolInfo implements IBaseSymbol {\n constructor(\n public readonly ident: string,\n public readonly symbolType: ESymbolType,\n public readonly astNode?: SymbolAstNode,\n public readonly dataType?: SymbolDataType,\n public readonly signature?: GalaceanDataType[]\n ) {}\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class FnSymbol extends SymbolInfo {\n declare astNode: ASTNode.FunctionDefinition;\n\n constructor(lexeme: string, astNode: ASTNode.FunctionDefinition) {\n const type = new SymbolDataType(\n astNode.protoType.returnType.type,\n astNode.protoType.returnType.typeSpecifier.lexeme\n );\n super(lexeme, ESymbolType.FN, astNode, type);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class StructSymbol extends SymbolInfo {\n declare astNode: ASTNode.StructSpecifier;\n\n constructor(lexeme: string, astNode: ASTNode.StructSpecifier) {\n super(lexeme, ESymbolType.STRUCT, astNode);\n }\n}\n","import { Logger } from \"@galacean/engine\";\n\nexport interface IBaseSymbol {\n readonly ident: string;\n}\n\n/**\n * The base class of `SymbolTable`\n */\nexport abstract class BaseSymbolTable<T extends IBaseSymbol = IBaseSymbol> {\n protected _table: Map<string, T[]> = new Map();\n\n abstract insert(sm: T): void;\n}\n\nexport class SymbolTableStack<S extends IBaseSymbol, T extends BaseSymbolTable<S>> {\n stack: T[] = [];\n\n get _scope() {\n return this.stack[this.stack.length - 1];\n }\n\n newScope(scope: T) {\n this.stack.push(scope);\n }\n\n clear() {\n this.stack.length = 0;\n }\n\n dropScope() {\n this.stack.pop();\n }\n\n insert(sm: S) {\n this._scope.insert(sm);\n }\n}\n","import { Logger } from \"@galacean/engine\";\nimport { GalaceanDataType, TypeAny } from \"../../common\";\nimport { BaseSymbolTable } from \"../../common/BaseSymbolTable\";\nimport { ASTNode } from \"../AST\";\nimport { FnSymbol } from \"./FnSymbol\";\nimport { StructSymbol } from \"./StructSymbol\";\nimport { ESymbolType, SymbolAstNode, SymbolInfo } from \"./SymbolInfo\";\nimport { VarSymbol } from \"./VarSymbol\";\n\nexport class TargetSymbolTable extends BaseSymbolTable<SymbolInfo> {\n override insert(sm: SymbolInfo): void {\n const entry = this._table.get(sm.ident) ?? [];\n for (let i = 0; i < entry.length; i++) {\n if (this._compareWith(entry[i], sm.symbolType, sm.signature, sm.astNode)) {\n Logger.warn(\"replace symbol:\", sm.ident);\n entry[i] = sm;\n return;\n }\n }\n entry.push(sm);\n this._table.set(sm.ident, entry);\n }\n\n lookup<T extends ESymbolType>(\n ident: string,\n symbolType: T,\n signature?: GalaceanDataType[],\n astNode?: ASTNode.FunctionDefinition\n ): T extends ESymbolType.FN\n ? FnSymbol\n : T extends ESymbolType.STRUCT\n ? StructSymbol\n : T extends ESymbolType.VAR\n ? VarSymbol\n : SymbolInfo {\n const entry = this._table.get(ident);\n if (entry) {\n for (let length = entry.length, i = 0; i < length; i++) {\n const item = entry[i];\n if (this._compareWith(item, symbolType, signature, astNode)) return <any>item;\n }\n }\n }\n\n getAllFnSymbols(fnIdent: string): FnSymbol[] {\n const entries = this._table.get(fnIdent) ?? [];\n return entries.filter((item) => item.symbolType === ESymbolType.FN) as FnSymbol[];\n }\n\n private _compareWith(\n item: SymbolInfo,\n symbolType: ESymbolType,\n signature?: GalaceanDataType[],\n astNode?: SymbolAstNode\n ): boolean {\n if (item.symbolType !== symbolType) return false;\n if (item.symbolType === ESymbolType.FN) {\n if (!astNode && !signature) return true;\n\n const params = (<ASTNode.FunctionDefinition>item.astNode).protoType.paramSig;\n const comparedParams = signature ?? (<ASTNode.FunctionDefinition>astNode).protoType.paramSig;\n const length = params.length;\n if (length !== comparedParams.length) return false;\n for (let i = 0; i < length; i++) {\n const t1 = params[i],\n t2 = comparedParams[i];\n if (t1 === TypeAny || t2 === TypeAny) continue;\n if (t1 !== t2) return false;\n }\n return true;\n }\n return true;\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class VarSymbol extends SymbolInfo {\n declare astNode:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\n readonly isGlobalVariable: boolean;\n\n constructor(\n ident: string,\n dataType: SymbolDataType,\n isGlobalVariable: boolean,\n initAst:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration\n ) {\n super(ident, ESymbolType.VAR, initAst, dataType);\n this.isGlobalVariable = isGlobalVariable;\n }\n}\n","import { ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { ESymbolType, SymbolInfo, TargetSymbolTable } from \"../parser/symbolTable\";\nimport { NodeChild } from \"./types\";\nimport { SymbolTableStack } from \"../common/BaseSymbolTable\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { NonGenericGalaceanType } from \"./builtin\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #else\nimport { Logger } from \"@galacean/engine\";\n// #endif\n\nexport type TranslationRule<T = any> = (sa: SemanticAnalyzer, ...tokens: NodeChild[]) => T;\n\n/**\n * @internal\n * The semantic analyzer of `ShaderLab` compiler.\n * - Build symbol table\n * - Static analysis\n */\nexport default class SemanticAnalyzer {\n semanticStack: TreeNode[] = [];\n acceptRule?: TranslationRule = undefined;\n symbolTableStack: SymbolTableStack<SymbolInfo, TargetSymbolTable> = new SymbolTableStack();\n curFunctionInfo: {\n header?: ASTNode.FunctionDeclarator;\n returnStatement?: ASTNode.JumpStatement;\n } = {};\n private _shaderData = new ShaderData();\n private _translationRuleTable: Map<number /** production id */, TranslationRule> = new Map();\n\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n get shaderData() {\n return this._shaderData;\n }\n\n constructor() {\n this.newScope();\n }\n\n reset() {\n this.semanticStack.length = 0;\n this._shaderData = new ShaderData();\n this.symbolTableStack.clear();\n this.newScope();\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n }\n\n newScope() {\n const scope = new TargetSymbolTable();\n this.symbolTableStack.newScope(scope);\n }\n\n dropScope() {\n return this.symbolTableStack.dropScope();\n }\n\n addTranslationRule(pid: number, rule: TranslationRule) {\n this._translationRuleTable.set(pid, rule);\n }\n\n getTranslationRule(pid: number) {\n return this._translationRuleTable.get(pid);\n }\n\n lookupSymbolBy(\n ident: string,\n symbolType: ESymbolType,\n signature?: NonGenericGalaceanType[],\n astNode?: ASTNode.FunctionDefinition\n ): SymbolInfo | undefined {\n const stack = this.symbolTableStack.stack;\n for (let length = stack.length, i = length - 1; i >= 0; i--) {\n const symbolTable = stack[i];\n const ret = symbolTable.lookup(ident, symbolType, signature, astNode);\n if (ret) return ret;\n }\n }\n\n reportError(loc: ShaderRange, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { TokenType } from \"../common\";\n\nexport type Terminal = TokenType;\n\nexport enum NoneTerminal {\n START = 2000,\n // galacean\n gs_shader_program,\n\n // glsl\n global_declaration,\n variable_declaration,\n variable_declaration_list,\n variable_declaration_statement,\n array_specifier_list,\n array_specifier,\n ext_builtin_type_specifier_nonarray,\n precision_specifier,\n variable_identifier,\n variable_identifier_node,\n primary_expression,\n postfix_expression,\n integer_expression,\n function_call,\n function_call_generic,\n function_call_header_no_parameters,\n function_call_header_with_parameters,\n function_call_parameter_list,\n function_call_header,\n function_identifier,\n constructor_identifier,\n unary_expression,\n unary_operator,\n multiplicative_expression,\n additive_expression,\n shift_expression,\n relational_expression,\n equality_expression,\n and_expression,\n inclusive_or_expression,\n exclusive_or_expression,\n logical_and_expression,\n logical_xor_expression,\n logical_or_expression,\n conditional_expression,\n assignment_expression,\n assignment_operator,\n expression,\n integer_constant_expression,\n integer_constant_expression_operator,\n declaration,\n function_prototype,\n function_declarator,\n function_header_with_parameters,\n function_header,\n function_parameter_list,\n parameter_declarator,\n parameter_declaration,\n parameter_qualifier,\n parameter_type_specifier,\n init_declarator_list,\n single_declaration,\n fully_specified_type,\n type_qualifier,\n single_type_qualifier,\n storage_qualifier,\n precision_qualifier,\n interpolation_qualifier,\n invariant_qualifier,\n type_specifier,\n type_specifier_nonarray,\n type_specifier_no_prec,\n basic_type,\n struct_specifier,\n struct_declaration_list,\n struct_declaration,\n layout_qualifier,\n struct_declarator_list,\n struct_declarator,\n identifier_list,\n decl_identifier,\n initializer,\n initializer_list,\n declaration_statement,\n simple_statement,\n compound_statement_no_scope,\n statement_with_scope,\n compound_statement,\n statement,\n statement_list,\n iteration_statement_no_new_scope,\n expression_statement,\n selection_statement,\n selection_rest_statement,\n condition,\n conditionopt,\n iteration_statement,\n for_init_statement,\n for_rest_statement,\n jump_statement,\n external_declaration,\n function_definition,\n field_selection,\n bool_constant,\n function_identifier_node,\n typename_identifier_node,\n scope_brace,\n scope_end_brace,\n\n _ignore\n}\n\nexport type GrammarSymbol = Terminal | NoneTerminal;\n\nexport type Derivation = GrammarSymbol[];\n","import { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport Production from \"../lalr/Production\";\n\nexport class Grammar {\n readonly productions: Production[];\n\n readonly startSymbol: NoneTerminal;\n\n static create(start: NoneTerminal, productions: GrammarSymbol[][]) {\n const _ps = productions.map((gsl) => {\n return new Production(<NoneTerminal>gsl[0], gsl.slice(1));\n });\n return new Grammar(start, _ps);\n }\n\n constructor(start: NoneTerminal, productions: Production[]) {\n this.startSymbol = start;\n productions.unshift(new Production(NoneTerminal.START, [start]));\n this.productions = productions;\n }\n\n getProductionList(nonTerminal: NoneTerminal) {\n return this.productions.filter((item) => item.goal === nonTerminal);\n }\n\n isNullableNT(NT: NoneTerminal) {\n return this.productions.find((item) => item.goal === NT && item.derivation[0] === ETokenType.EPSILON);\n }\n\n getProductionByID(pid: number) {\n return Production.pool.get(pid);\n }\n}\n","import { NoneTerminal } from \"./GrammarSymbol\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GalaceanDataType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"./AST\";\n\nexport type TraceStackItem = NoneTerminal | BaseToken;\n\nexport class SymbolType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n\nexport class StructProp implements IParamInfo {\n constructor(\n public typeInfo: SymbolType,\n public ident: BaseToken,\n public mrtIndex?: number\n ) {}\n}\n\nexport type NodeChild = TreeNode | BaseToken;\n\nexport type IParamInfo = { ident: BaseToken; typeInfo: SymbolType; astNode?: TreeNode };\n","// #if _VERBOSE\nimport { BuiltinFunction, BuiltinVariable, NonGenericGalaceanType } from \"./builtin\";\n// #endif\nimport { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\nimport { CodeGenVisitor } from \"../codeGen\";\nimport { EKeyword, ETokenType, GalaceanDataType, ShaderRange, TokenType, TypeAny } from \"../common\";\nimport { BaseToken, BaseToken as Token } from \"../common/BaseToken\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { NoneTerminal } from \"./GrammarSymbol\";\nimport SemanticAnalyzer from \"./SemanticAnalyzer\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, VarSymbol } from \"./symbolTable\";\nimport { IParamInfo, NodeChild, StructProp, SymbolType } from \"./types\";\n\nfunction ASTNodeDecorator(nonTerminal: NoneTerminal) {\n return function <T extends { new (): TreeNode }>(ASTNode: T) {\n ASTNode.prototype.nt = nonTerminal;\n (<any>ASTNode).pool = ShaderLabUtils.createObjectPool(ASTNode);\n };\n}\n\nexport abstract class TreeNode implements IPoolElement {\n static pool: ClearableObjectPool<TreeNode & { set: (loc: ShaderRange, children: NodeChild[]) => void }>;\n\n /** The non-terminal in grammar. */\n nt: NoneTerminal;\n private _children: NodeChild[];\n private _location: ShaderRange;\n\n get children() {\n return this._children;\n }\n\n get location() {\n return this._location;\n }\n\n set(loc: ShaderRange, children: NodeChild[]): void {\n this._location = loc;\n this._children = children;\n this.init();\n }\n\n init() {}\n\n dispose(): void {}\n\n // Visitor pattern interface for code generation\n codeGen(visitor: CodeGenVisitor) {\n return visitor.defaultCodeGen(this.children);\n }\n\n /**\n * Do semantic analyze right after the ast node is generated.\n */\n semanticAnalyze(sa: SemanticAnalyzer) {}\n}\n\nexport namespace ASTNode {\n export type ASTNodePool = ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >;\n\n export function _unwrapToken(node: NodeChild) {\n if (node instanceof Token) {\n return node;\n }\n throw \"not token\";\n }\n\n export function get(pool: ASTNodePool, sa: SemanticAnalyzer, loc: ShaderRange, children: NodeChild[]) {\n const node = pool.get();\n node.set(loc, children);\n node.semanticAnalyze(sa);\n sa.semanticStack.push(node);\n }\n\n @ASTNodeDecorator(NoneTerminal._ignore)\n export class TrivialNode extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.scope_brace)\n export class ScopeBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.newScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.scope_end_brace)\n export class ScopeEndBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.dropScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.jump_statement)\n export class JumpStatement extends TreeNode {\n isFragReturnStatement: boolean;\n\n override init(): void {\n this.isFragReturnStatement = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (ASTNode._unwrapToken(this.children![0]).type === EKeyword.RETURN) {\n sa.curFunctionInfo.returnStatement = this;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitJumpStatement(this);\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.conditionopt)\n export class ConditionOpt extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_rest_statement)\n export class ForRestStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.condition)\n export class Condition extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_init_statement)\n export class ForInitStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.iteration_statement)\n export class IterationStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.selection_statement)\n export class SelectionStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.expression_statement)\n export class ExpressionStatement extends TreeNode {}\n // #endif\n\n export abstract class ExpressionAstNode extends TreeNode {\n protected _type?: GalaceanDataType;\n set type(t: GalaceanDataType | undefined) {\n this._type = t;\n }\n get type() {\n return this._type ?? TypeAny;\n }\n\n override init(): void {\n this._type = undefined;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.initializer_list)\n export class InitializerList extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const init = this.children[0] as Initializer | InitializerList;\n this.type = init.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.initializer)\n export class Initializer extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AssignmentExpression>this.children[0]).type;\n } else {\n this.type = (<InitializerList>this.children[1]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.single_declaration)\n export class SingleDeclaration extends TreeNode {\n typeSpecifier: TypeSpecifier;\n arraySpecifier?: ArraySpecifier;\n\n override init(): void {\n this.typeSpecifier = undefined;\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLen = children.length;\n const fullyType = children[0] as FullySpecifiedType;\n const typeSpecifier = fullyType.typeSpecifier;\n this.typeSpecifier = typeSpecifier;\n this.arraySpecifier = typeSpecifier.arraySpecifier;\n\n const id = children[1] as Token;\n\n let sm: VarSymbol;\n if (childrenLen === 2 || childrenLen === 4) {\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[3] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n } else {\n const arraySpecifier = children[2] as ArraySpecifier;\n // #if _VERBOSE\n if (arraySpecifier && this.arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n this.arraySpecifier = arraySpecifier;\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[4] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n }\n sa.symbolTableStack.insert(sm);\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitSingleDeclaration(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.fully_specified_type)\n export class FullySpecifiedType extends TreeNode {\n typeSpecifier: TypeSpecifier;\n type: GalaceanDataType;\n\n override semanticAnalyze(_: SemanticAnalyzer): void {\n const children = this.children;\n this.typeSpecifier = (children.length === 1 ? children[0] : children[1]) as TypeSpecifier;\n this.type = this.typeSpecifier.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_qualifier)\n export class TypeQualifier extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.single_type_qualifier)\n export class SingleTypeQualifier extends TreeNode {\n qualifier: EKeyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n if (child instanceof Token) {\n this.qualifier = child.type as EKeyword;\n this.lexeme = child.lexeme;\n } else {\n this.qualifier = (<BasicTypeQualifier>child).qualifier;\n this.lexeme = (<BasicTypeQualifier>child).lexeme;\n }\n }\n }\n\n abstract class BasicTypeQualifier extends TreeNode {\n qualifier: EKeyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const token = this.children[0] as Token;\n this.qualifier = token.type as EKeyword;\n this.lexeme = token.lexeme;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.storage_qualifier)\n export class StorageQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.precision_qualifier)\n export class PrecisionQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.interpolation_qualifier)\n export class InterpolationQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.invariant_qualifier)\n export class InvariantQualifier extends BasicTypeQualifier {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.type_specifier)\n export class TypeSpecifier extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n arraySize?: number;\n isCustom: boolean;\n\n override init(): void {\n this.arraySize = undefined;\n }\n get arraySpecifier(): ArraySpecifier {\n return this.children[1] as ArraySpecifier;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const firstChild = children[0] as TypeSpecifierNonArray;\n this.type = firstChild.type;\n this.lexeme = firstChild.lexeme;\n this.arraySize = (children?.[1] as ArraySpecifier)?.size;\n this.isCustom = typeof this.type === \"string\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.array_specifier)\n export class ArraySpecifier extends TreeNode {\n size: number | undefined;\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const integerConstantExpr = this.children[1] as IntegerConstantExpression;\n this.size = integerConstantExpr.value;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression_operator)\n export class IntegerConstantExpressionOperator extends TreeNode {\n compute: (a: number, b: number) => number;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const operator = this.children[0] as Token;\n this.lexeme = operator.lexeme;\n switch (operator.type) {\n case ETokenType.PLUS:\n this.compute = (a, b) => a + b;\n break;\n case ETokenType.DASH:\n this.compute = (a, b) => a - b;\n break;\n case ETokenType.STAR:\n this.compute = (a, b) => a * b;\n break;\n case ETokenType.SLASH:\n this.compute = (a, b) => a / b;\n break;\n case ETokenType.PERCENT:\n this.compute = (a, b) => a % b;\n break;\n default:\n sa.reportError(operator.location, `not implemented operator ${operator.lexeme}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression)\n export class IntegerConstantExpression extends TreeNode {\n value?: number;\n\n override init(): void {\n this.value = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const child = this.children[0];\n if (child instanceof Token) {\n this.value = Number(child.lexeme);\n }\n // #if _VERBOSE\n else {\n const id = child as VariableIdentifier;\n if (!id.symbolInfo) {\n sa.reportError(id.location, `Undeclared symbol: ${id.lexeme}`);\n }\n if (!ParserUtils.typeCompatible(EKeyword.INT, id.typeInfo)) {\n sa.reportError(id.location, \"Invalid integer.\");\n return;\n }\n }\n // #endif\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_specifier_nonarray)\n export class TypeSpecifierNonArray extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n\n override init(): void {\n const tt = this.children[0];\n if (tt instanceof Token) {\n this.type = tt.lexeme;\n this.lexeme = tt.lexeme;\n } else {\n this.type = (tt as ExtBuiltinTypeSpecifierNonArray).type as GalaceanDataType;\n this.lexeme = (tt as ExtBuiltinTypeSpecifierNonArray).lexeme;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.ext_builtin_type_specifier_nonarray)\n export class ExtBuiltinTypeSpecifierNonArray extends TreeNode {\n type: TokenType;\n lexeme: string;\n\n override init(): void {\n const token = this.children[0] as Token;\n this.type = token.type;\n this.lexeme = token.lexeme;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.init_declarator_list)\n export class InitDeclaratorList extends TreeNode {\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n let sm: VarSymbol;\n const children = this.children;\n const childrenLength = children.length;\n if (childrenLength === 1) {\n const { typeSpecifier, arraySpecifier } = children[0] as SingleDeclaration;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n } else {\n const initDeclList = children[0] as InitDeclaratorList;\n this.typeInfo = initDeclList.typeInfo;\n }\n\n if (childrenLength === 3 || childrenLength === 5) {\n const id = children[2] as Token;\n sm = new VarSymbol(id.lexeme, this.typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n } else if (childrenLength === 4 || childrenLength === 6) {\n const typeInfo = this.typeInfo;\n const arraySpecifier = this.children[3] as ArraySpecifier;\n // #if _VERBOSE\n if (typeInfo.arraySpecifier && arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n typeInfo.arraySpecifier = arraySpecifier;\n const id = children[2] as Token;\n sm = new VarSymbol(id.lexeme, typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.identifier_list)\n export class IdentifierList extends TreeNode {\n idList: Token[] = [];\n\n override init(): void {\n this.idList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, idList: curIdList } = this;\n if (children.length === 2) {\n curIdList.push(children[1] as Token);\n } else {\n const list = children[0] as IdentifierList;\n const id = children[2] as Token;\n const listIdLength = list.idList.length;\n curIdList.length = listIdLength + 1;\n\n for (let i = 0; i < listIdLength; i++) {\n curIdList[i] = list.idList[i];\n }\n curIdList[listIdLength] = id;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.declaration)\n export class Declaration extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitDeclaration(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_prototype)\n export class FunctionProtoType extends TreeNode {\n ident: Token;\n returnType: FullySpecifiedType;\n parameterList: IParamInfo[];\n paramSig: GalaceanDataType[];\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const declarator = this.children[0] as FunctionDeclarator;\n this.ident = declarator.ident;\n this.returnType = declarator.returnType;\n this.parameterList = declarator.parameterInfoList;\n this.paramSig = declarator.paramSig;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionProtoType(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_declarator)\n export class FunctionDeclarator extends TreeNode {\n ident: Token;\n returnType: FullySpecifiedType;\n parameterInfoList: IParamInfo[] | undefined;\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.curFunctionInfo.returnStatement = null;\n sa.curFunctionInfo.header = this;\n\n const children = this.children;\n const header = children[0] as FunctionHeader;\n const parameterList = children[1] as FunctionParameterList | undefined;\n this.ident = header.ident;\n this.returnType = header.returnType;\n this.parameterInfoList = parameterList?.parameterInfoList;\n this.paramSig = parameterList?.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_header)\n export class FunctionHeader extends TreeNode {\n ident: Token;\n returnType: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.newScope();\n const children = this.children;\n this.ident = children[1] as Token;\n this.returnType = children[0] as FullySpecifiedType;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionHeader(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_parameter_list)\n export class FunctionParameterList extends TreeNode {\n parameterInfoList: IParamInfo[] = [];\n paramSig: GalaceanDataType[] = [];\n\n override init(): void {\n this.parameterInfoList.length = 0;\n this.paramSig.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLength = children.length;\n const { parameterInfoList, paramSig } = this;\n if (childrenLength === 1) {\n const decl = children[0] as ParameterDeclaration;\n parameterInfoList.push({ ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl });\n paramSig.push(decl.typeInfo.type);\n } else {\n const list = children[0] as FunctionParameterList;\n const decl = children[2] as ParameterDeclaration;\n const listParamLength = list.parameterInfoList.length;\n parameterInfoList.length = listParamLength + 1;\n paramSig.length = listParamLength + 1;\n\n for (let i = 0; i < listParamLength; i++) {\n parameterInfoList[i] = list.parameterInfoList[i];\n paramSig[i] = list.paramSig[i];\n }\n parameterInfoList[listParamLength] = { ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl };\n paramSig[listParamLength] = decl.typeInfo.type;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionParameterList(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declaration)\n export class ParameterDeclaration extends TreeNode {\n typeQualifier: TypeQualifier | undefined;\n typeInfo: SymbolType;\n ident: Token;\n\n override init(): void {\n this.typeQualifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLength = children.length;\n let parameterDeclarator: ParameterDeclarator;\n if (childrenLength === 1) {\n parameterDeclarator = children[0] as ParameterDeclarator;\n } else {\n parameterDeclarator = children[1] as ParameterDeclarator;\n }\n if (childrenLength === 2) {\n this.typeQualifier = children[0] as TypeQualifier;\n }\n this.typeInfo = parameterDeclarator.typeInfo;\n this.ident = parameterDeclarator.ident;\n\n const varSymbol = new VarSymbol(parameterDeclarator.ident.lexeme, parameterDeclarator.typeInfo, false, this);\n sa.symbolTableStack.insert(varSymbol);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declarator)\n export class ParameterDeclarator extends TreeNode {\n ident: Token;\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[1] as Token;\n const typeSpecifier = children[0] as TypeSpecifier;\n const arraySpecifier = children[2] as ArraySpecifier;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.simple_statement)\n export class SimpleStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.compound_statement)\n export class CompoundStatement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.compound_statement_no_scope)\n export class CompoundStatementNoScope extends TreeNode {}\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.statement)\n export class Statement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.statement_list)\n export class StatementList extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitStatementList(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_definition)\n export class FunctionDefinition extends TreeNode {\n returnStatement?: ASTNode.JumpStatement;\n protoType: FunctionProtoType;\n statements: CompoundStatementNoScope;\n\n override init(): void {\n this.returnStatement = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.protoType = children[0] as FunctionProtoType;\n this.statements = children[1] as CompoundStatementNoScope;\n\n sa.dropScope();\n const sm = new FnSymbol(this.protoType.ident.lexeme, this);\n sa.symbolTableStack.insert(sm);\n\n const { curFunctionInfo } = sa;\n const { header, returnStatement } = curFunctionInfo;\n if (header.returnType.type === EKeyword.VOID) {\n if (returnStatement) {\n sa.reportError(header.returnType.location, \"Return in void function.\");\n }\n } else {\n if (!returnStatement) {\n sa.reportError(header.returnType.location, `No return statement found.`);\n } else {\n this.returnStatement = returnStatement;\n }\n }\n curFunctionInfo.header = undefined;\n curFunctionInfo.returnStatement = undefined;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionDefinition(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call)\n export class FunctionCall extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.type = (this.children[0] as FunctionCallGeneric).type;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionCall(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_generic)\n export class FunctionCallGeneric extends ExpressionAstNode {\n fnSymbol: FnSymbol | StructSymbol | undefined;\n\n override init(): void {\n super.init();\n this.fnSymbol = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const functionIdentifier = this.children[0] as FunctionIdentifier;\n if (functionIdentifier.isBuiltin) {\n this.type = functionIdentifier.ident;\n } else {\n const fnIdent = <string>functionIdentifier.ident;\n\n let paramSig: NonGenericGalaceanType[] | undefined;\n if (this.children.length === 4) {\n const paramList = this.children[2];\n if (paramList instanceof FunctionCallParameterList) {\n paramSig = paramList.paramSig as any;\n }\n }\n // #if _VERBOSE\n const builtinFn = BuiltinFunction.getFn(fnIdent, paramSig);\n if (builtinFn) {\n this.type = builtinFn.realReturnType;\n return;\n }\n // #endif\n\n const fnSymbol = sa.lookupSymbolBy(fnIdent, ESymbolType.FN, paramSig);\n if (!fnSymbol) {\n // #if _VERBOSE\n sa.reportError(this.location, `No overload function type found: ${functionIdentifier.ident}`);\n // #endif\n return;\n }\n this.type = fnSymbol?.dataType?.type;\n this.fnSymbol = fnSymbol as FnSymbol;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_parameter_list)\n export class FunctionCallParameterList extends TreeNode {\n paramSig: GalaceanDataType[] = [];\n paramNodes: AssignmentExpression[] = [];\n\n override init(): void {\n this.paramSig.length = 0;\n this.paramNodes.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, paramSig, paramNodes } = this;\n if (children.length === 1) {\n const expr = children[0] as AssignmentExpression;\n if (expr.type == undefined) {\n paramSig.push(TypeAny);\n } else {\n paramSig.push(expr.type);\n }\n\n this.paramNodes.push(expr);\n } else {\n const list = children[0] as FunctionCallParameterList;\n const decl = children[2] as AssignmentExpression;\n if (list.paramSig.length === 0 || decl.type == undefined) {\n this.paramSig.push(TypeAny);\n } else {\n const listParamLength = list.paramSig.length;\n paramSig.length = listParamLength + 1;\n paramNodes.length = listParamLength + 1;\n\n for (let i = 0; i < listParamLength; i++) {\n paramSig[i] = list.paramSig[i];\n paramNodes[i] = list.paramNodes[i];\n }\n paramSig[listParamLength] = decl.type;\n paramNodes[listParamLength] = decl;\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.precision_specifier)\n export class PrecisionSpecifier extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.shaderData.globalPrecisions.push(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_identifier)\n export class FunctionIdentifier extends TreeNode {\n ident: GalaceanDataType;\n lexeme: string;\n isBuiltin: boolean;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const typeSpecifier = this.children[0] as TypeSpecifier;\n this.ident = typeSpecifier.type;\n this.lexeme = typeSpecifier.lexeme;\n this.isBuiltin = typeof this.ident !== \"string\";\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionIdentifier(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.assignment_expression)\n export class AssignmentExpression extends ExpressionAstNode {\n // #if _VERBOSE\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as ConditionalExpression;\n this.type = expr.type ?? TypeAny;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type ?? TypeAny;\n }\n }\n // #endif\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.assignment_operator)\n export class AssignmentOperator extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.expression)\n export class Expression extends ExpressionAstNode {\n // #if _VERBOSE\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as AssignmentExpression;\n this.type = expr.type;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type;\n }\n }\n // #endif\n }\n\n @ASTNodeDecorator(NoneTerminal.primary_expression)\n export class PrimaryExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const id = this.children[0];\n if (id instanceof VariableIdentifier) {\n this.type = id.typeInfo ?? TypeAny;\n } else {\n switch ((<Token>id).type) {\n case ETokenType.INT_CONSTANT:\n this._type = EKeyword.INT;\n break;\n case ETokenType.FLOAT_CONSTANT:\n this.type = EKeyword.FLOAT;\n break;\n case EKeyword.TRUE:\n case EKeyword.FALSE:\n this.type = EKeyword.BOOL;\n break;\n }\n }\n } else {\n const expression = this.children[1] as Expression;\n this.type = expression.type;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.postfix_expression)\n export class PostfixExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n const child = this.children[0] as PrimaryExpression | FunctionCall;\n this.type = child.type;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitPostfixExpression(this);\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.unary_operator)\n export class UnaryOperator extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.unary_expression)\n export class UnaryExpression extends ExpressionAstNode {\n override init(): void {\n this.type = (this.children[0] as PostfixExpression).type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.multiplicative_expression)\n export class MultiplicativeExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as UnaryExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as MultiplicativeExpression;\n // const exp2 = this.children[2] as UnaryExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.additive_expression)\n export class AdditiveExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as MultiplicativeExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as AdditiveExpression;\n // const exp2 = this.children[2] as MultiplicativeExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.shift_expression)\n export class ShiftExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const expr = this.children[0] as ExpressionAstNode;\n this.type = expr.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.relational_expression)\n export class RelationalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ShiftExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.equality_expression)\n export class EqualityExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<RelationalExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.and_expression)\n export class AndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.exclusive_or_expression)\n export class ExclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.inclusive_or_expression)\n export class InclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ExclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_and_expression)\n export class LogicalAndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<InclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_xor_expression)\n export class LogicalXorExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalAndExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_or_expression)\n export class LogicalOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalXorExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.conditional_expression)\n export class ConditionalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalOrExpression>this.children[0]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.struct_specifier)\n export class StructSpecifier extends TreeNode {\n ident?: Token;\n propList: StructProp[];\n\n override init(): void {\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n if (children.length === 6) {\n this.ident = children[1] as Token;\n sa.symbolTableStack.insert(new StructSymbol(this.ident.lexeme, this));\n\n this.propList = (children[3] as StructDeclarationList).propList;\n } else {\n this.propList = (children[2] as StructDeclarationList).propList;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration_list)\n export class StructDeclarationList extends TreeNode {\n propList: StructProp[] = [];\n\n override init(): void {\n this.propList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, propList } = this;\n\n if (children.length === 1) {\n const props = (children[0] as StructDeclaration).props;\n const propsLength = props.length;\n propList.length = propsLength;\n for (let i = 0; i < propsLength; i++) {\n propList[i] = props[i];\n }\n } else {\n const listProps = (children[0] as StructDeclarationList).propList;\n const declProps = (children[1] as StructDeclaration).props;\n const listPropLength = listProps.length;\n const declPropLength = declProps.length;\n propList.length = listPropLength + declPropLength;\n\n for (let i = 0; i < listPropLength; i++) {\n propList[i] = listProps[i];\n }\n for (let i = 0; i < declPropLength; i++) {\n propList[i + listPropLength] = declProps[i];\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration)\n export class StructDeclaration extends TreeNode {\n typeSpecifier: TypeSpecifier;\n declaratorList: StructDeclaratorList;\n props: StructProp[] = [];\n\n override init(): void {\n this.typeSpecifier = undefined;\n this.declaratorList = undefined;\n this.props.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, props } = this;\n if (children.length === 3) {\n this.typeSpecifier = children[0] as TypeSpecifier;\n this.declaratorList = children[1] as StructDeclaratorList;\n } else {\n this.typeSpecifier = children[1] as TypeSpecifier;\n this.declaratorList = children[2] as StructDeclaratorList;\n }\n\n const firstChild = children[0];\n const { type, lexeme } = this.typeSpecifier;\n if (firstChild instanceof LayoutQualifier) {\n const declarator = children[2] as StructDeclarator;\n const typeInfo = new SymbolType(type, lexeme);\n const prop = new StructProp(typeInfo, declarator.ident, firstChild.index);\n props.push(prop);\n } else {\n const declaratorList = this.declaratorList.declaratorList;\n const declaratorListLength = declaratorList.length;\n props.length = declaratorListLength;\n for (let i = 0; i < declaratorListLength; i++) {\n const declarator = declaratorList[i];\n const typeInfo = new SymbolType(type, lexeme, declarator.arraySpecifier);\n const prop = new StructProp(typeInfo, declarator.ident);\n props[i] = prop;\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.layout_qualifier)\n export class LayoutQualifier extends TreeNode {\n index: number;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.index = Number((<BaseToken>this.children[4]).lexeme);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator_list)\n export class StructDeclaratorList extends TreeNode {\n declaratorList: StructDeclarator[] = [];\n\n override init(): void {\n this.declaratorList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, declaratorList } = this;\n if (children.length === 1) {\n declaratorList.push(children[0] as StructDeclarator);\n } else {\n const list = children[0] as StructDeclaratorList;\n const declarator = children[1] as StructDeclarator;\n const listLength = list.declaratorList.length;\n declaratorList.length = listLength + 1;\n for (let i = 0; i < listLength; i++) {\n declaratorList[i] = list.declaratorList[i];\n }\n declaratorList[listLength] = declarator;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator)\n export class StructDeclarator extends TreeNode {\n ident: Token;\n arraySpecifier: ArraySpecifier | undefined;\n\n override init(): void {\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[0] as Token;\n this.arraySpecifier = children[1] as ArraySpecifier;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration)\n export class VariableDeclaration extends TreeNode {\n type: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const type = children[0] as FullySpecifiedType;\n const ident = children[1] as Token;\n this.type = type;\n const sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);\n\n sa.symbolTableStack.insert(sm);\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitGlobalVariableDeclaration(this) + \";\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration_list)\n export class VariableDeclarationList extends TreeNode {\n type: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children } = this;\n const length = children.length;\n const variableDeclaration = children[0] as VariableDeclaration;\n const type = variableDeclaration.type;\n this.type = type;\n\n if (length === 1) {\n return;\n }\n\n const ident = children[2] as Token;\n\n const newVariable = VariableDeclaration.pool.get();\n if (length === 3) {\n // variable_declaration_list ',' id\n newVariable.set(ident.location, [type, ident]);\n } else {\n // variable_declaration_list ',' id array_specifier\n newVariable.set(ident.location, [type, ident, children[3] as ArraySpecifier]);\n }\n newVariable.semanticAnalyze(sa);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_identifier)\n export class VariableIdentifier extends TreeNode {\n symbolInfo:\n | VarSymbol\n // #if _VERBOSE\n | BuiltinVariable\n // #endif\n | null;\n\n lexeme: string;\n typeInfo: GalaceanDataType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const token = this.children[0] as Token;\n this.lexeme = token.lexeme;\n\n // #if _VERBOSE\n const builtinVar = BuiltinVariable.getVar(token.lexeme);\n if (builtinVar) {\n this.symbolInfo = builtinVar;\n this.typeInfo = builtinVar.type;\n return;\n }\n // #endif\n\n this.symbolInfo = sa.lookupSymbolBy(token.lexeme, ESymbolType.VAR) as VarSymbol;\n // #if _VERBOSE\n if (!this.symbolInfo) {\n sa.reportError(this.location, `undeclared identifier: ${token.lexeme}`);\n }\n // #endif\n this.typeInfo = this.symbolInfo?.dataType?.type;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitVariableIdentifier(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.gs_shader_program)\n export class GLShaderProgram extends TreeNode {\n shaderData: ShaderData;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.shaderData = sa.shaderData;\n this.shaderData.symbolTable = sa.symbolTableStack._scope;\n }\n }\n}\n","import { EKeyword, ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\nimport { NodeChild } from \"../parser/types\";\n\nexport default class GrammarUtils {\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? EKeyword[sm];\n }\n return NoneTerminal[sm];\n }\n\n static createProductionWithOptions(\n goal: NoneTerminal,\n options: GrammarSymbol[][],\n /** the ast node */\n astTypePool?: ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >\n ) {\n const ret: [GrammarSymbol[], TranslationRule | undefined][] = [];\n for (const opt of options) {\n ret.push([\n [goal, ...opt],\n function (sa, ...children) {\n if (!children[0]) return;\n const start = children[0].location.start;\n const end = children[children.length - 1].location.end;\n const location = ShaderLab.createRange(start, end);\n ASTNode.get(astTypePool ?? ASTNode.TrivialNode.pool, sa, location, children);\n }\n ]);\n }\n return ret;\n }\n\n static addMapSetItem<K, T>(map: Map<K, Set<T>>, k: K, v: T) {\n const set = map.get(k) ?? new Set();\n set.add(v);\n map.set(k, set);\n }\n\n static isSubSet<T>(sa: Set<T>, sb: Set<T>) {\n for (const item of sa) {\n if (!sb.has(item)) return false;\n }\n return true;\n }\n\n static isActionEqual(a: ActionInfo, b: ActionInfo) {\n return a.action === b.action && a.target === b.target;\n }\n\n // #if _VERBOSE\n static printAction(actionInfo: ActionInfo) {\n return `<Action: ${EAction[actionInfo.action]} -> ${\n actionInfo.action === EAction.Reduce ? Production.pool.get(actionInfo.target!) : `State ${actionInfo.target!}`\n }>`;\n }\n\n static printProduction(production: Production) {\n const deriv = production.derivation.map((gs) => GrammarUtils.toString(gs)).join(\"|\");\n return `${NoneTerminal[production.goal]} :=> ${deriv}`;\n }\n // #endif\n}\n","// Context Free Grammar of Galacean ShaderLab\n\nimport { Grammar } from \"../parser/Grammar\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport GrammarUtils from \"./Utils\";\nimport { EKeyword, ETokenType } from \"../common\";\nimport SemanticAnalyzer, { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { ASTNode } from \"../parser/AST\";\n\nconst productionAndRules: [GrammarSymbol[], TranslationRule | undefined][] = [\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.gs_shader_program,\n [[NoneTerminal.global_declaration], [NoneTerminal.gs_shader_program, NoneTerminal.global_declaration]],\n ASTNode.GLShaderProgram.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(NoneTerminal.global_declaration, [\n [NoneTerminal.precision_specifier],\n [NoneTerminal.variable_declaration_statement],\n [NoneTerminal.struct_specifier],\n [NoneTerminal.function_definition]\n ]),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.VariableDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration_list,\n [\n [NoneTerminal.variable_declaration],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.VariableDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_statement, [\n [NoneTerminal.variable_declaration_list, ETokenType.SEMICOLON]\n ]),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n [\n [EKeyword.VOID],\n [EKeyword.FLOAT],\n [EKeyword.BOOL],\n [EKeyword.INT],\n [EKeyword.UINT],\n [EKeyword.VEC2],\n [EKeyword.VEC3],\n [EKeyword.VEC4],\n [EKeyword.BVEC2],\n [EKeyword.BVEC3],\n [EKeyword.BVEC4],\n [EKeyword.IVEC2],\n [EKeyword.IVEC3],\n [EKeyword.IVEC4],\n [EKeyword.UVEC2],\n [EKeyword.UVEC3],\n [EKeyword.UVEC4],\n [EKeyword.MAT2],\n [EKeyword.MAT3],\n [EKeyword.MAT4],\n [EKeyword.MAT2X3],\n [EKeyword.MAT2X4],\n [EKeyword.MAT3X2],\n [EKeyword.MAT3X4],\n [EKeyword.MAT4X2],\n [EKeyword.MAT4X3],\n [EKeyword.SAMPLER2D],\n [EKeyword.SAMPLER3D],\n [EKeyword.SAMPLER_CUBE],\n [EKeyword.SAMPLER2D_SHADOW],\n [EKeyword.SAMPLER_CUBE_SHADOW],\n [EKeyword.SAMPLER2D_ARRAY],\n [EKeyword.SAMPLER2D_ARRAY_SHADOW],\n [EKeyword.I_SAMPLER2D],\n [EKeyword.I_SAMPLER3D],\n [EKeyword.I_SAMPLER_CUBE],\n [EKeyword.I_SAMPLER2D_ARRAY],\n [EKeyword.U_SAMPLER2D],\n [EKeyword.U_SAMPLER3D],\n [EKeyword.U_SAMPLER_CUBE],\n [EKeyword.U_SAMPLER2D_ARRAY]\n ],\n ASTNode.ExtBuiltinTypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier_nonarray,\n [[ETokenType.ID], [NoneTerminal.ext_builtin_type_specifier_nonarray]],\n ASTNode.TypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.fully_specified_type,\n [[NoneTerminal.type_specifier], [NoneTerminal.type_qualifier, NoneTerminal.type_specifier]],\n ASTNode.FullySpecifiedType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier,\n [\n [NoneTerminal.type_specifier_nonarray],\n [NoneTerminal.ext_builtin_type_specifier_nonarray, NoneTerminal.array_specifier]\n ],\n ASTNode.TypeSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_qualifier,\n [[NoneTerminal.single_type_qualifier], [NoneTerminal.type_qualifier, NoneTerminal.single_type_qualifier]],\n ASTNode.TypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_type_qualifier,\n [\n [NoneTerminal.storage_qualifier],\n [NoneTerminal.precision_qualifier],\n [NoneTerminal.interpolation_qualifier],\n [NoneTerminal.invariant_qualifier],\n [EKeyword.PRECISE]\n ],\n ASTNode.SingleTypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.storage_qualifier,\n [[EKeyword.CONST], [EKeyword.IN], [EKeyword.INOUT], [EKeyword.OUT], [EKeyword.CENTROID]],\n // #if _VERBOSE\n ASTNode.StorageQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.interpolation_qualifier,\n [[EKeyword.SMOOTH], [EKeyword.FLAT]],\n // #if _VERBOSE\n ASTNode.InterpolationQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.invariant_qualifier,\n [[EKeyword.INVARIANT]],\n // #if _VERBOSE\n ASTNode.InvariantQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_qualifier,\n [[EKeyword.HIGHP], [EKeyword.MEDIUMP], [EKeyword.LOWP]],\n // #if _VERBOSE\n ASTNode.PrecisionQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_specifier,\n [\n [\n EKeyword.STRUCT,\n ETokenType.ID,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ],\n [\n EKeyword.STRUCT,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.StructSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration_list,\n [[NoneTerminal.struct_declaration], [NoneTerminal.struct_declaration_list, NoneTerminal.struct_declaration]],\n ASTNode.StructDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration,\n [\n [NoneTerminal.type_specifier, NoneTerminal.struct_declarator_list, ETokenType.SEMICOLON],\n [\n NoneTerminal.type_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator_list,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.layout_qualifier, NoneTerminal.type_specifier, NoneTerminal.struct_declarator, ETokenType.SEMICOLON]\n ],\n ASTNode.StructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.layout_qualifier,\n [\n [\n EKeyword.LAYOUT,\n ETokenType.LEFT_PAREN,\n EKeyword.LOCATION,\n ETokenType.EQUAL,\n ETokenType.INT_CONSTANT,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.LayoutQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator_list,\n [\n [NoneTerminal.struct_declarator],\n [NoneTerminal.struct_declarator_list, ETokenType.COMMA, NoneTerminal.struct_declarator]\n ],\n ASTNode.StructDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator,\n [[ETokenType.ID], [ETokenType.ID, NoneTerminal.array_specifier]],\n ASTNode.StructDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.array_specifier,\n [\n [ETokenType.LEFT_BRACKET, ETokenType.RIGHT_BRACKET],\n [ETokenType.LEFT_BRACKET, NoneTerminal.integer_constant_expression, ETokenType.RIGHT_BRACKET]\n ],\n ASTNode.ArraySpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.STAR], [ETokenType.SLASH], [ETokenType.PERCENT]],\n ASTNode.IntegerConstantExpressionOperator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n ETokenType.INT_CONSTANT\n ],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n NoneTerminal.variable_identifier\n ]\n ],\n ASTNode.IntegerConstantExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditional_expression,\n [\n [NoneTerminal.logical_or_expression],\n [\n NoneTerminal.logical_or_expression,\n ETokenType.QUESTION,\n NoneTerminal.expression,\n ETokenType.COLON,\n NoneTerminal.assignment_expression\n ]\n ],\n // #if _VERBOSE\n ASTNode.ConditionalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_or_expression,\n [\n [NoneTerminal.logical_xor_expression],\n [NoneTerminal.logical_or_expression, ETokenType.OR_OP, NoneTerminal.logical_xor_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_xor_expression,\n [\n [NoneTerminal.logical_and_expression],\n [NoneTerminal.logical_xor_expression, ETokenType.XOR_OP, NoneTerminal.logical_and_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalXorExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_and_expression,\n [\n [NoneTerminal.inclusive_or_expression],\n [NoneTerminal.logical_and_expression, ETokenType.AND_OP, NoneTerminal.inclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalAndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.inclusive_or_expression,\n [\n [NoneTerminal.exclusive_or_expression],\n [NoneTerminal.inclusive_or_expression, ETokenType.VERTICAL_BAR, NoneTerminal.exclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.InclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.exclusive_or_expression,\n [\n [NoneTerminal.and_expression],\n [NoneTerminal.exclusive_or_expression, ETokenType.CARET, NoneTerminal.and_expression]\n ],\n // #if _VERBOSE\n ASTNode.ExclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.and_expression,\n [\n [NoneTerminal.equality_expression],\n [NoneTerminal.and_expression, ETokenType.AMPERSAND, NoneTerminal.equality_expression]\n ],\n // #if _VERBOSE\n ASTNode.AndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.equality_expression,\n [\n [NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.EQ_OP, NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.NE_OP, NoneTerminal.relational_expression]\n ],\n // #if _VERBOSE\n ASTNode.EqualityExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.relational_expression,\n [\n [NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LEFT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.RIGHT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LE_OP, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.GE_OP, NoneTerminal.shift_expression]\n ],\n // #if _VERBOSE\n ASTNode.RelationalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.shift_expression,\n [\n [NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.LEFT_OP, NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.RIGHT_OP, NoneTerminal.additive_expression]\n ],\n // #if _VERBOSE\n ASTNode.ShiftExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.additive_expression,\n [\n [NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.PLUS, NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.DASH, NoneTerminal.multiplicative_expression]\n ],\n // #if _VERBOSE\n ASTNode.AdditiveExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.multiplicative_expression,\n [\n [NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.STAR, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.SLASH, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.PERCENT, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.MultiplicativeExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_expression,\n [\n [NoneTerminal.postfix_expression],\n [ETokenType.INC_OP, NoneTerminal.unary_expression],\n [ETokenType.DEC_OP, NoneTerminal.unary_expression],\n [NoneTerminal.unary_operator, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.UnaryExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.BANG], [ETokenType.TILDE]],\n // #if _VERBOSE\n ASTNode.UnaryOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.postfix_expression,\n [\n [NoneTerminal.primary_expression],\n [NoneTerminal.postfix_expression, ETokenType.LEFT_BRACKET, NoneTerminal.expression, ETokenType.RIGHT_BRACKET],\n [NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.DOT, ETokenType.ID],\n [NoneTerminal.postfix_expression, ETokenType.DOT, NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.INC_OP],\n [NoneTerminal.postfix_expression, ETokenType.DEC_OP]\n ],\n ASTNode.PostfixExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.primary_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [ETokenType.FLOAT_CONSTANT],\n [EKeyword.TRUE],\n [EKeyword.FALSE],\n [ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.PrimaryExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.expression, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.Expression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_expression,\n [\n [NoneTerminal.conditional_expression],\n [NoneTerminal.unary_expression, NoneTerminal.assignment_operator, NoneTerminal.assignment_expression]\n ],\n ASTNode.AssignmentExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_operator,\n [\n [ETokenType.EQUAL],\n [ETokenType.MUL_ASSIGN],\n [ETokenType.DIV_ASSIGN],\n [ETokenType.MOD_ASSIGN],\n [ETokenType.ADD_ASSIGN],\n [ETokenType.SUB_ASSIGN],\n [ETokenType.LEFT_ASSIGN],\n [ETokenType.RIGHT_ASSIGN],\n [ETokenType.AND_ASSIGN],\n [ETokenType.XOR_ASSIGN],\n [ETokenType.OR_ASSIGN]\n ],\n // #if _VERBOSE\n ASTNode.AssignmentOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call,\n [[NoneTerminal.function_call_generic]],\n ASTNode.FunctionCall.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_generic,\n [\n [\n NoneTerminal.function_identifier,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ],\n [NoneTerminal.function_identifier, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [NoneTerminal.function_identifier, EKeyword.VOID, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.FunctionCallGeneric.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_parameter_list,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.function_call_parameter_list, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.FunctionCallParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_identifier,\n [[NoneTerminal.type_specifier]],\n ASTNode.FunctionIdentifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_definition,\n [[NoneTerminal.function_prototype, NoneTerminal.compound_statement_no_scope]],\n ASTNode.FunctionDefinition.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_prototype,\n [[NoneTerminal.function_declarator, ETokenType.RIGHT_PAREN]],\n ASTNode.FunctionProtoType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_declarator,\n [[NoneTerminal.function_header], [NoneTerminal.function_header, NoneTerminal.function_parameter_list]],\n ASTNode.FunctionDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_header,\n [[NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.LEFT_PAREN]],\n ASTNode.FunctionHeader.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_parameter_list,\n [\n [NoneTerminal.parameter_declaration],\n [NoneTerminal.function_parameter_list, ETokenType.COMMA, NoneTerminal.parameter_declaration]\n ],\n ASTNode.FunctionParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declaration,\n [[NoneTerminal.type_qualifier, NoneTerminal.parameter_declarator], [NoneTerminal.parameter_declarator]],\n ASTNode.ParameterDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declarator,\n [\n [NoneTerminal.type_specifier, ETokenType.ID],\n [NoneTerminal.type_specifier, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.ParameterDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement_list,\n [[NoneTerminal.statement], [NoneTerminal.statement_list, NoneTerminal.statement]],\n ASTNode.StatementList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement,\n [[NoneTerminal.compound_statement], [NoneTerminal.simple_statement]],\n // #if _VERBOSE\n ASTNode.Statement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement_no_scope,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [ETokenType.LEFT_BRACE, NoneTerminal.statement_list, ETokenType.RIGHT_BRACE]\n ],\n ASTNode.CompoundStatementNoScope.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [NoneTerminal.scope_brace, NoneTerminal.statement_list, NoneTerminal.scope_end_brace]\n ],\n // #if _VERBOSE\n ASTNode.CompoundStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.simple_statement,\n [\n [NoneTerminal.declaration],\n [NoneTerminal.expression_statement],\n [NoneTerminal.selection_statement],\n [NoneTerminal.iteration_statement],\n [NoneTerminal.jump_statement]\n ],\n // #if _VERBOSE\n ASTNode.SimpleStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.declaration,\n [\n [NoneTerminal.function_prototype, ETokenType.SEMICOLON],\n [NoneTerminal.init_declarator_list, ETokenType.SEMICOLON],\n [\n EKeyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.type_qualifier, ETokenType.ID, ETokenType.SEMICOLON],\n [NoneTerminal.type_qualifier, ETokenType.ID, NoneTerminal.identifier_list, ETokenType.SEMICOLON]\n ],\n ASTNode.Declaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.identifier_list,\n [\n [ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.identifier_list, ETokenType.COMMA, ETokenType.ID]\n ],\n ASTNode.IdentifierList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.init_declarator_list,\n [\n [NoneTerminal.single_declaration],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.init_declarator_list,\n ETokenType.COMMA,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.InitDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.fully_specified_type,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.SingleDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.LEFT_BRACE, NoneTerminal.initializer_list, ETokenType.RIGHT_BRACE]\n ],\n // #if _VERBOSE\n ASTNode.Initializer.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer_list,\n [[NoneTerminal.initializer], [NoneTerminal.initializer_list, ETokenType.COMMA, NoneTerminal.initializer]],\n // #if _VERBOSE\n ASTNode.InitializerList.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression_statement,\n [[ETokenType.SEMICOLON], [NoneTerminal.expression, ETokenType.SEMICOLON]],\n // #if _VERBOSE\n ASTNode.ExpressionStatement.pool\n // #endif\n ),\n\n // dangling else ambiguity\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.selection_statement,\n [\n [EKeyword.IF, ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n EKeyword.IF,\n ETokenType.LEFT_PAREN,\n NoneTerminal.expression,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement,\n EKeyword.ELSE,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.SelectionStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.iteration_statement,\n [\n [EKeyword.WHILE, ETokenType.LEFT_PAREN, NoneTerminal.condition, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n EKeyword.FOR,\n ETokenType.LEFT_PAREN,\n NoneTerminal.for_init_statement,\n NoneTerminal.for_rest_statement,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.IterationStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_specifier,\n [\n [\n EKeyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.PrecisionSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_init_statement,\n [[NoneTerminal.expression_statement], [NoneTerminal.declaration]],\n // #if _VERBOSE\n ASTNode.ForInitStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.condition,\n [\n [NoneTerminal.expression],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n // #if _VERBOSE\n ASTNode.Condition.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_rest_statement,\n [\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON],\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON, NoneTerminal.expression]\n ],\n // #if _VERBOSE\n ASTNode.ForRestStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditionopt,\n [[ETokenType.EPSILON], [NoneTerminal.condition]],\n // #if _VERBOSE\n ASTNode.ConditionOpt.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.jump_statement,\n [\n [EKeyword.CONTINUE, ETokenType.SEMICOLON],\n [EKeyword.BREAK, ETokenType.SEMICOLON],\n [EKeyword.RETURN, ETokenType.SEMICOLON],\n [EKeyword.RETURN, NoneTerminal.expression, ETokenType.SEMICOLON],\n [EKeyword.DISCARD, ETokenType.SEMICOLON]\n ],\n ASTNode.JumpStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_brace,\n [[ETokenType.LEFT_BRACE]],\n ASTNode.ScopeBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_end_brace,\n [[ETokenType.RIGHT_BRACE]],\n ASTNode.ScopeEndBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_identifier,\n [[ETokenType.ID]],\n ASTNode.VariableIdentifier.pool\n )\n];\n\nconst createGrammar = () =>\n Grammar.create(\n NoneTerminal.gs_shader_program,\n productionAndRules.map((item) => item[0])\n );\n\nconst addTranslationRule = (sa: SemanticAnalyzer) => {\n for (let i = 0; i < productionAndRules.length; i++) {\n const rule = productionAndRules[i][1];\n if (rule) {\n sa.addTranslationRule(i, rule);\n }\n }\n};\n\nexport { createGrammar, addTranslationRule };\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { Grammar } from \"../parser/Grammar\";\nimport { NoneTerminal, GrammarSymbol, Terminal } from \"../parser/GrammarSymbol\";\nimport State from \"./State\";\nimport StateItem from \"./StateItem\";\nimport GrammarUtils from \"./Utils\";\nimport { EKeyword, ETokenType } from \"../common\";\nimport Utils from \"./Utils\";\nimport { ActionInfo, ActionTable, EAction, GotoTable, StateActionTable, StateGotoTable } from \"./types\";\n\n/**\n * The [LALR1](https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/handouts/140%20LALR%20Parsing.pdf) Parser generator\n */\nexport class LALR1 {\n readonly firstSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n readonly followSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n\n readonly actionTable: StateActionTable = new Map();\n readonly gotoTable: StateGotoTable = new Map();\n private grammar: Grammar;\n\n /** For circle detect */\n private _firstSetNTStack: NoneTerminal[] = [];\n\n constructor(grammar: Grammar) {\n this.grammar = grammar;\n }\n\n generate() {\n this.computeFirstSet();\n this.buildStateTable();\n }\n\n private buildStateTable() {\n const startStateItemCore = [new StateItem(this.grammar.productions[0], 0, [ETokenType.EOF])];\n const startState = State.create(startStateItemCore);\n this._extendState(startState);\n }\n\n private _extendState(state: State) {\n if (!state.needReInfer) return;\n this._closure(state);\n const newStates = this._inferNextState(state);\n for (const ns of newStates) {\n this._extendState(ns);\n }\n }\n\n private _closure(state: State) {\n for (const core of state.cores) {\n if (!core.canReduce()) {\n this._extendStateItem(state, core);\n }\n }\n state.closured = true;\n return state;\n }\n\n private _extendStateItem(state: State, item: StateItem) {\n if (GrammarUtils.isTerminal(item.curSymbol)) return;\n\n const productionList = this.grammar.getProductionList(<NoneTerminal>item.curSymbol);\n\n if (item.nextSymbol) {\n let newLookaheadSet = new Set<Terminal>();\n let lastFirstSet: Set<Terminal> | undefined;\n let terminalExist = false;\n // when A :=> a.BC, a; ==》 B :=> .xy, First(Ca)\n // newLookAhead = First(Ca)\n for (let i = 1, nextSymbol = item.symbolByOffset(1); !!nextSymbol; nextSymbol = item.symbolByOffset(++i)) {\n if (GrammarUtils.isTerminal(nextSymbol)) {\n newLookaheadSet.add(<Terminal>nextSymbol);\n terminalExist = true;\n break;\n }\n lastFirstSet = this.firstSetMap.get(<NoneTerminal>nextSymbol)!;\n for (const t of lastFirstSet) {\n newLookaheadSet.add(t);\n }\n if (!lastFirstSet.has(ETokenType.EPSILON)) break;\n }\n if (!terminalExist && lastFirstSet?.has(ETokenType.EPSILON)) {\n for (const t of item.lookaheadSet) {\n newLookaheadSet.add(t);\n }\n }\n\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(newLookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(newLookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n } else {\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(item.lookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(item.lookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n }\n }\n\n private _inferNextState(state: State): Set<State> {\n const coreMap: Map<GrammarSymbol, Set<StateItem>> = new Map();\n const stateActionTable: ActionTable = this.actionTable.get(state.id) ?? new Map();\n const stateGotoTable: GotoTable = this.gotoTable.get(state.id) ?? new Map();\n\n this.actionTable.set(state.id, stateActionTable);\n this.gotoTable.set(state.id, stateGotoTable);\n\n for (const stateItem of state.items) {\n if (stateItem.canReduce()) {\n let action: ActionInfo;\n if (stateItem.production.goal !== NoneTerminal.START) {\n action = {\n action: EAction.Reduce,\n target: stateItem.production.id\n };\n } else {\n action = { action: EAction.Accept };\n }\n\n for (const t of stateItem.lookaheadSet) {\n this._addAction(stateActionTable, t, action);\n }\n } else {\n const nextItem = stateItem.advance();\n Utils.addMapSetItem(coreMap, stateItem.curSymbol, nextItem);\n }\n\n stateItem.needReInfer = false;\n }\n\n const newStates = new Set<State>();\n for (const [gs, cores] of coreMap.entries()) {\n const newState = State.create(Array.from(cores));\n if (GrammarUtils.isTerminal(gs)) {\n this._addAction(stateActionTable, <Terminal>gs, {\n action: EAction.Shift,\n target: newState.id\n });\n } else {\n stateGotoTable.set(<NoneTerminal>gs, newState.id);\n }\n\n newStates.add(newState);\n }\n\n return newStates;\n }\n\n /** Resolve shift-reduce/reduce-reduce conflict detect */\n private _addAction(table: ActionTable, terminal: Terminal, action: ActionInfo) {\n const exist = table.get(terminal);\n if (exist && !Utils.isActionEqual(exist, action)) {\n // Resolve dangling else ambiguity\n if (terminal === EKeyword.ELSE && exist.action === EAction.Shift && action.action === EAction.Reduce) {\n return;\n } else {\n // #if _VERBOSE\n console.warn(\n `conflict detect: <Terminal ${GrammarUtils.toString(terminal)}>`,\n Utils.printAction(exist),\n \" -> \",\n Utils.printAction(action)\n );\n // #endif\n }\n }\n table.set(terminal, action);\n }\n\n // https://people.cs.pitt.edu/~jmisurda/teaching/cs1622/handouts/cs1622-first_and_follow.pdf\n private computeFirstSet() {\n for (const production of this.grammar.productions.slice(1)) {\n this._computeFirstSetForNT(production.goal);\n }\n }\n\n private _computeFirstSetForNT(NT: NoneTerminal) {\n // circle detect\n const idx = this._firstSetNTStack.findIndex((item) => item === NT);\n if (idx !== -1) {\n const computingFS = this.firstSetMap.get(NT)!;\n const len = this._firstSetNTStack.length;\n for (let i = len - 1; i > idx; i--) {\n const curNT = this._firstSetNTStack[i];\n this.firstSetMap.set(curNT, computingFS);\n }\n return computingFS;\n }\n this._firstSetNTStack.push(NT);\n\n const productionList = this.grammar.getProductionList(NT);\n const firstSet = new Set<Terminal>();\n this.firstSetMap.set(NT, firstSet);\n if (this.grammar.isNullableNT(NT)) firstSet.add(ETokenType.EPSILON);\n\n for (const production of productionList) {\n let i = 0;\n for (; i < production.derivation.length; i++) {\n const gs = production.derivation[i];\n if (GrammarUtils.isTerminal(gs)) {\n firstSet.add(<Terminal>gs);\n break;\n }\n\n const succeedFirstSet = this._computeFirstSetForNT(<NoneTerminal>gs);\n\n for (const item of succeedFirstSet) {\n if (item !== ETokenType.EPSILON) firstSet.add(item);\n }\n if (!this.grammar.isNullableNT(<NoneTerminal>gs)) break;\n }\n if (i === production.derivation.length) firstSet.add(ETokenType.EPSILON);\n }\n\n this._firstSetNTStack.pop();\n return firstSet;\n }\n}\n","import { Grammar } from \"./Grammar\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ETokenType } from \"../common\";\nimport { EAction, StateActionTable, StateGotoTable } from \"../lalr/types\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport SematicAnalyzer from \"./SemanticAnalyzer\";\nimport { TraceStackItem } from \"./types\";\nimport { addTranslationRule, createGrammar } from \"../lalr/CFG\";\nimport { LALR1 } from \"../lalr\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { Logger } from \"@galacean/engine\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\n/**\n * The syntax parser and sematic analyzer of `ShaderLab` compiler\n */\nexport class ShaderTargetParser {\n readonly actionTable: StateActionTable;\n readonly gotoTable: StateGotoTable;\n readonly grammar: Grammar;\n readonly sematicAnalyzer: SematicAnalyzer;\n private _traceBackStack: (TraceStackItem | number)[] = [];\n\n private get curState() {\n return this._traceBackStack[this._traceBackStack.length - 1] as number;\n }\n private get stateActionTable() {\n return this.actionTable.get(this.curState)!;\n }\n private get stateGotoTable() {\n return this.gotoTable.get(this.curState);\n }\n\n // #if _VERBOSE\n /** @internal */\n get errors() {\n return this.sematicAnalyzer.errors;\n }\n // #endif\n\n static _singleton: ShaderTargetParser;\n\n static create() {\n if (!this._singleton) {\n const grammar = createGrammar();\n const generator = new LALR1(grammar);\n generator.generate();\n this._singleton = new ShaderTargetParser(generator.actionTable, generator.gotoTable, grammar);\n addTranslationRule(this._singleton.sematicAnalyzer);\n }\n\n return this._singleton;\n }\n\n private constructor(actionTable: StateActionTable, gotoTable: StateGotoTable, grammar: Grammar) {\n this.actionTable = actionTable;\n this.gotoTable = gotoTable;\n this.grammar = grammar;\n this.sematicAnalyzer = new SematicAnalyzer();\n }\n\n parse(tokens: Generator<BaseToken, BaseToken>): ASTNode.GLShaderProgram | null {\n this.sematicAnalyzer.reset();\n const start = performance.now();\n const { _traceBackStack: traceBackStack, sematicAnalyzer } = this;\n traceBackStack.push(0);\n\n let nextToken = tokens.next();\n let loopCount = 0;\n while (true) {\n loopCount += 1;\n const token = nextToken.value;\n\n const actionInfo = this.stateActionTable.get(token.type);\n if (actionInfo?.action === EAction.Shift) {\n traceBackStack.push(token, actionInfo.target!);\n nextToken = tokens.next();\n } else if (actionInfo?.action === EAction.Accept) {\n Logger.info(\n `[pass compilation - parser] Accept! State automata run ${loopCount} times! cost time ${\n performance.now() - start\n }ms`\n );\n sematicAnalyzer.acceptRule?.(sematicAnalyzer);\n return sematicAnalyzer.semanticStack.pop() as ASTNode.GLShaderProgram;\n } else if (actionInfo?.action === EAction.Reduce) {\n const target = actionInfo.target!;\n const reduceProduction = this.grammar.getProductionByID(target)!;\n const translationRule = sematicAnalyzer.getTranslationRule(reduceProduction.id);\n\n const values: (TreeNode | BaseToken)[] = [];\n\n for (let i = reduceProduction.derivation.length - 1; i >= 0; i--) {\n if (reduceProduction.derivation[i] === ETokenType.EPSILON) continue;\n traceBackStack.pop();\n const token = traceBackStack.pop();\n if (token instanceof BaseToken) {\n values.unshift(token);\n } else {\n const astNode = sematicAnalyzer.semanticStack.pop()!;\n values.unshift(astNode);\n }\n }\n translationRule?.(sematicAnalyzer, ...values);\n\n const gotoTable = this.stateGotoTable;\n traceBackStack.push(reduceProduction.goal);\n\n const nextState = gotoTable?.get(reduceProduction.goal)!;\n traceBackStack.push(nextState);\n continue;\n } else {\n const error = ShaderLabUtils.createGSError(\n `Unexpected token ${token.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n token.location\n );\n // #if _VERBOSE\n this.sematicAnalyzer.errors.push(<GSError>error);\n // #endif\n return null;\n }\n }\n }\n\n // #if _VERBOSE\n private _printStack(nextToken: BaseToken) {\n let str = \"\";\n for (let i = 0; i < this._traceBackStack.length - 1; i++) {\n const state = <NoneTerminal>this._traceBackStack[i++];\n const token = this._traceBackStack[i];\n str += `State${state} - ${(<BaseToken>token).lexeme ?? ParserUtils.toString(token as GrammarSymbol)}; `;\n }\n str += `State${this._traceBackStack[this._traceBackStack.length - 1]} --- ${nextToken.lexeme}`;\n Logger.info(str);\n }\n // #endif\n}\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ShaderRange } from \"../common\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n// #if _VERBOSE\nimport { GSErrorName } from \"../GSError\";\n// #endif\n\nexport class MacroDefine {\n private _replaceRegex?: RegExp;\n private readonly _argsLexemes: string[];\n\n get isFunction(): boolean {\n return !!this.args?.length;\n }\n\n constructor(\n public readonly macro: BaseToken,\n public readonly body?: BaseToken,\n public readonly location?: ShaderRange,\n public readonly args?: BaseToken[]\n ) {\n if (args) {\n this._argsLexemes = this.args.map((item) => item.lexeme);\n this._replaceRegex = new RegExp(`\\\\b(${this._argsLexemes.join(\"|\")})\\\\b`, \"g\");\n }\n }\n\n expandFunctionBody(args: string[]): string {\n if (args.length !== this.args?.length) {\n throw ShaderLabUtils.createGSError(\"mismatched function macro\", GSErrorName.PreprocessorError, \"\", this.location);\n }\n\n return this.body.lexeme.replace(this._replaceRegex, (m) => {\n return args[this._argsLexemes.indexOf(m)];\n });\n }\n}\n","export enum EPpToken {\n id,\n line_remain,\n chunk,\n int_constant,\n string_const,\n /** \\>> */\n right_op,\n /** << */\n left_op,\n left_paren,\n right_paren,\n /** \\>= */\n ge,\n /** <= */\n le,\n /** == */\n eq,\n /** != */\n neq,\n /** && */\n and,\n /** || */\n or,\n /** < */\n left_angle,\n /** \\> */\n right_angle,\n /** \\* */\n star,\n /** + */\n plus,\n /** \\- */\n dash,\n /** ! */\n bang,\n /** \\/ */\n slash,\n /** % */\n percent,\n\n EOF = 100\n}\n\nexport enum EPpKeyword {\n define = 101,\n undef,\n if,\n ifdef,\n ifndef,\n else,\n elif,\n endif,\n include,\n\n defined\n}\n\nexport const PpKeyword = new Map<string, EPpKeyword>([\n [\"#define\", EPpKeyword.define],\n [\"#undef\", EPpKeyword.undef],\n [\"#if\", EPpKeyword.if],\n [\"#ifdef\", EPpKeyword.ifdef],\n [\"#ifndef\", EPpKeyword.ifndef],\n [\"#else\", EPpKeyword.else],\n [\"#elif\", EPpKeyword.elif],\n [\"#endif\", EPpKeyword.endif],\n [\"#include\", EPpKeyword.include],\n [\"defined\", EPpKeyword.defined]\n]);\n\nexport type PpConstant = boolean | number;\n","import { ShaderRange } from \"../common\";\nimport { ExpandSegment } from \"./PpParser\";\n// #if _VERBOSE\nimport PpSourceMap, { MapRange } from \"./sourceMap\";\n// #endif\n\nexport class PpUtils {\n static expand(\n segments: ExpandSegment[],\n source: string,\n // #if _VERBOSE\n sourceMap?: PpSourceMap\n //#endif\n ) {\n const ret: string[] = [];\n let startIdx = 0;\n let generatedIdx = 0;\n\n for (const seg of segments) {\n const originSlice = source.slice(startIdx, seg.rangeInBlock.start.index);\n ret.push(originSlice, seg.replace);\n\n const generatedIdxEnd = generatedIdx + originSlice.length + seg.replace.length;\n\n // #if _VERBOSE\n const mapRange = new MapRange(seg.block, seg.rangeInBlock, {\n start: generatedIdx + originSlice.length,\n end: generatedIdxEnd\n });\n sourceMap?.addMapRange(mapRange);\n // #endif\n\n startIdx = seg.rangeInBlock.end.index;\n generatedIdx = generatedIdxEnd;\n }\n ret.push(source.slice(startIdx));\n return ret.join(\"\");\n }\n\n static assembleSegments(\n segments: {\n range: ShaderRange;\n replace: string;\n }[],\n source: string\n ) {\n const ret: string[] = [];\n let startIdx = 0;\n for (const seg of segments) {\n const originSlice = source.slice(startIdx, seg.range.start.index);\n ret.push(originSlice, seg.replace);\n startIdx = seg.range.end.index;\n }\n ret.push(source.slice(startIdx));\n return ret.join(\"\");\n }\n}\n","import { ShaderRange, ShaderPosition } from \"../common\";\nimport LexerUtils from \"../lexer/Utils\";\n// #if _VERBOSE\nimport PpSourceMap from \"./sourceMap\";\n// #endif\nimport BaseScanner from \"../common/BaseScanner\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { EPpKeyword, EPpToken, PpKeyword } from \"./constants\";\nimport { PpUtils } from \"./Utils\";\nimport { ShaderLab } from \"../ShaderLab\";\n\nexport type OnToken = (token: BaseToken, scanner: PpScanner) => void;\n\nexport default class PpScanner extends BaseScanner {\n private macroLvl = 0;\n\n // #if _VERBOSE\n readonly sourceMap = new PpSourceMap();\n readonly file: string;\n readonly blockRange?: ShaderRange;\n // #endif\n\n constructor(\n source: string,\n // #if _VERBOSE\n file = \"__main__\",\n blockRange?: ShaderRange\n // #endif\n ) {\n super(source);\n // #if _VERBOSE\n this.file = file;\n this.blockRange = blockRange;\n // #endif\n }\n\n /**\n * Advance to directive\n * @param expandOnToken callback on encountering token.\n */\n scanDirective(expandOnToken?: OnToken): BaseToken<number> {\n const directive = this._advanceToDirective(expandOnToken);\n if ([EPpKeyword.if, EPpKeyword.ifdef, EPpKeyword.ifndef].includes(<any>directive?.type)) {\n this.macroLvl += 1;\n } else if (<any>directive?.type === EPpKeyword.endif) {\n this.macroLvl -= 1;\n }\n return directive;\n }\n\n /**\n * @param nonLetterChar should not be space\n */\n scanWordsUntilChar(nonLetterChar: string): BaseToken[] {\n const ret: BaseToken[] = [];\n while (true) {\n this.skipSpace(true);\n if (LexerUtils.isLetter(this.getCurCharCode())) {\n ret.push(this.scanWord());\n } else if (this.getCurChar() === nonLetterChar) {\n this._advance();\n return ret;\n } else {\n this._advance();\n }\n }\n }\n\n scanWord(skipNonLetter = false): BaseToken {\n if (skipNonLetter) {\n while (!LexerUtils.isLetter(this.getCurCharCode()) && !this.isEnd()) {\n this._advance();\n }\n } else {\n this.skipSpace(true);\n }\n\n if (this.isEnd()) return EOF;\n\n const start = this._currentIndex;\n while (LexerUtils.isLetter(this.getCurCharCode()) && !this.isEnd()) {\n this._advance();\n }\n const end = this._currentIndex;\n const word = this._source.slice(start, end);\n if (end === start) {\n this.throwError(this.getShaderPosition(0), \"no word found.\");\n }\n const kw = PpKeyword.get(word);\n if (kw) {\n const token = BaseToken.pool.get();\n token.set(kw, word, this.getShaderPosition(0));\n return token;\n }\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.id, word, this.getShaderPosition(word.length));\n return token;\n }\n\n /**\n * @param offset - Offset from starting point\n */\n getShaderPosition(offset: number) {\n return ShaderLab.createPosition(\n this._currentIndex - offset,\n // #if _VERBOSE\n this.line,\n this.column - offset\n // #endif\n );\n }\n\n /**\n * @param onToken callback when encounter a token\n * @returns token split by space\n */\n override scanToken(onToken?: OnToken): BaseToken | undefined {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return;\n }\n const { _source: source } = this;\n let start = this._currentIndex;\n let found = false;\n for (var n = source.length; this._currentIndex < n; ) {\n if (LexerUtils.isPpCharacters(source.charCodeAt(this._currentIndex))) {\n this._advance();\n found = true;\n } else {\n if (found) {\n break;\n }\n this._advance();\n this.skipCommentsAndSpace();\n start = this._currentIndex;\n }\n }\n\n const lexeme = source.slice(start, this._currentIndex);\n const ret = BaseToken.pool.get();\n const tokenType = PpKeyword.get(lexeme);\n ret.set(tokenType ?? EPpToken.id, lexeme, this.getShaderPosition(this._currentIndex - start));\n onToken?.(ret, this);\n return ret;\n }\n\n scanQuotedString(): BaseToken<EPpToken.string_const> {\n this.skipSpace(true);\n if (this.getCurChar() !== '\"') {\n this.throwError(this.getShaderPosition(0), \"unexpected char, expected '\\\"'\");\n }\n const ShaderPosition = this.getShaderPosition(0);\n this._advance();\n const start = this._currentIndex;\n while (this.getCurChar() !== '\"' && !this.isEnd()) this._advance();\n if (this.isEnd()) {\n this.throwError(this.getShaderPosition(0), \"unexpected char, expected '\\\"'\");\n }\n const word = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.string_const, word, ShaderPosition);\n return token;\n }\n\n scanToChar(char: string) {\n const source = this._source;\n while (source[this._currentIndex] !== char && !this.isEnd()) {\n this._advance();\n }\n }\n\n scanMacroBranchChunk(): {\n token: BaseToken<EPpToken.chunk>;\n nextDirective: BaseToken;\n } {\n const start = this._currentIndex;\n const ShaderPosition = this.getShaderPosition(0);\n\n const startLvl = this.macroLvl;\n let directive = this.scanDirective()!;\n\n while (true) {\n if (directive.type === EPpKeyword.endif && startLvl - 1 === this.macroLvl) break;\n else if ([EPpKeyword.elif, EPpKeyword.else].includes(<EPpKeyword>directive.type) && startLvl === this.macroLvl)\n break;\n directive = this.scanDirective()!;\n }\n\n const chunk = this._source.slice(start, this._currentIndex - directive.lexeme.length - 1);\n const token = BaseToken.pool.get();\n token.set(EPpToken.chunk, chunk, ShaderPosition);\n return { token, nextDirective: directive };\n }\n\n scanPairedBlock(lc: string, rc: string): void {\n this.scanToChar(lc);\n let level = 0;\n const source = this._source;\n\n do {\n const curChar = source[this._currentIndex];\n\n if (curChar === lc) {\n level++;\n } else if (curChar === rc) {\n level--;\n }\n this._advance();\n } while (level > 0);\n }\n\n /**\n * @returns end ShaderPosition\n */\n scanRemainMacro(): ShaderPosition {\n const startLvl = this.macroLvl;\n let directive = this.scanDirective()!;\n while (!this.isEnd() && (directive.type !== EPpKeyword.endif || startLvl - 1 !== this.macroLvl)) {\n directive = this.scanDirective()!;\n }\n return this.getShaderPosition(0);\n }\n\n peekNonSpace() {\n let current = this._currentIndex;\n while (/\\s/.test(this._source[current])) {\n current += 1;\n }\n return this._source[current];\n }\n\n scanInteger() {\n const start = this._currentIndex;\n while (LexerUtils.isNum(this.getCurCharCode())) {\n this._advance();\n }\n if (this._currentIndex === start) {\n this.throwError(this.getShaderPosition(0), \"no integer found\");\n }\n const integer = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.int_constant, integer, this.getShaderPosition(0));\n return token;\n }\n\n /**\n * Skip comments\n */\n scanLineRemain() {\n this.skipSpace(false);\n const start = this._currentIndex;\n\n const comments: ShaderRange[] = [];\n\n while (this.getCurChar() !== \"\\n\") {\n if (this.isEnd()) {\n const line = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.line_remain, line, this.getShaderPosition(line.length));\n return token;\n }\n this._advance();\n const commentRange = this._skipComments();\n if (commentRange) {\n commentRange.start.index -= start;\n commentRange.end.index -= start;\n comments.push(commentRange);\n }\n }\n let line = this._source.slice(start, this._currentIndex);\n if (comments.length) {\n // filter comments\n line = PpUtils.assembleSegments(\n comments.map((item) => ({ range: item, replace: \"\" })),\n line\n );\n }\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.line_remain, line, this.getShaderPosition(line.length));\n return token;\n }\n\n private _advanceToDirective(onToken?: OnToken): BaseToken | undefined {\n while (true) {\n const token = this.scanToken(onToken);\n if (token?.lexeme.startsWith(\"#\")) return token;\n if (this.isEnd()) return;\n }\n }\n\n private _skipComments(): ShaderRange | undefined {\n if (this.peek(2) === \"//\") {\n const start = this.getShaderPosition(0);\n // single line comments\n while (this.getCurChar() !== \"\\n\" && !this.isEnd()) {\n this._advance();\n }\n return ShaderLab.createRange(start, this.getCurPosition());\n } else if (this.peek(2) === \"/*\") {\n const start = this.getShaderPosition(0);\n // multi-line comments\n this.advance(2);\n while (this.peek(2) !== \"*/\" && !this.isEnd()) {\n this._advance();\n }\n this.advance(2);\n return ShaderLab.createRange(start, this.getShaderPosition(0));\n }\n }\n}\n","import { ShaderPosition, ShaderRange } from \"../common\";\nimport LexerUtils from \"../lexer/Utils\";\nimport { MacroDefine } from \"./MacroDefine\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { EPpKeyword, EPpToken, PpConstant } from \"./constants\";\nimport PpScanner from \"./PpScanner\";\nimport { PpUtils } from \"./Utils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderPass } from \"@galacean/engine\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport PpSourceMap, { BlockInfo } from \"./sourceMap\";\n// #endif\n\nexport interface ExpandSegment {\n // #if _VERBOSE\n block?: BlockInfo;\n // #endif\n rangeInBlock: ShaderRange;\n replace: string;\n}\n\n/** @internal */\nexport class PpParser {\n private static _definedMacros: Map<string, MacroDefine> = new Map();\n private static _expandSegmentsStack: ExpandSegment[][] = [[]];\n\n /** Referenced by branch macro or defined operator */\n private static _branchMacros: Set<string> = new Set();\n\n private static _includeMap: Record<string, string>;\n private static _basePathForIncludeKey: string;\n\n // #if _VERBOSE\n static _errors: Error[] = [];\n // #endif\n\n static reset(includeMap: Record<string, string>, basePathForIncludeKey: string) {\n this._definedMacros.clear();\n this._expandSegmentsStack.length = 0;\n this._expandSegmentsStack.push([]);\n this._branchMacros.clear();\n this.addPredefinedMacro(\"GL_ES\");\n this._includeMap = includeMap;\n this._basePathForIncludeKey = basePathForIncludeKey;\n // #if _VERBOSE\n this._errors.length = 0;\n // #endif\n }\n\n static addPredefinedMacro(macro: string, value?: string) {\n const tk = BaseToken.pool.get();\n tk.set(EPpToken.id, macro);\n\n let macroBody: BaseToken | undefined;\n if (value) {\n macroBody = BaseToken.pool.get();\n macroBody.set(EPpToken.id, value);\n }\n\n this._definedMacros.set(macro, new MacroDefine(tk, macroBody));\n }\n\n static parse(scanner: PpScanner): string | null {\n while (!scanner.isEnd()) {\n const directive = scanner.scanDirective(this._onToken.bind(this))!;\n if (scanner.isEnd()) break;\n switch (directive.type) {\n case EPpKeyword.define:\n this._parseDefine(scanner);\n break;\n\n case EPpKeyword.undef:\n this._parseUndef(scanner);\n break;\n\n case EPpKeyword.if:\n this._parseIf(scanner);\n break;\n\n case EPpKeyword.ifndef:\n this._parseIfNdef(scanner);\n break;\n\n case EPpKeyword.ifdef:\n this._parseIfDef(scanner);\n break;\n\n case EPpKeyword.include:\n this._parseInclude(scanner);\n break;\n }\n }\n // #if _VERBOSE\n if (this._errors.length > 0) return null;\n // #endif\n\n return PpUtils.expand(this.expandSegments, scanner.source, scanner.sourceMap);\n }\n\n private static get expandSegments() {\n return this._expandSegmentsStack[this._expandSegmentsStack.length - 1];\n }\n\n private static reportError(loc: ShaderRange | ShaderPosition, message: string, source: string, file: string) {\n const error = ShaderLabUtils.createGSError(message, GSErrorName.PreprocessorError, source, loc, file);\n // #if _VERBOSE\n this._errors.push(error);\n // #endif\n }\n\n private static _parseInclude(scanner: PpScanner) {\n const start = scanner.getShaderPosition(8);\n\n scanner.skipSpace(true);\n const id = scanner.scanQuotedString();\n let includedPath: string;\n // builtin path\n if (id.lexeme[0] !== \".\") {\n includedPath = id.lexeme;\n } else {\n // relative path\n // @ts-ignore\n includedPath = new URL(id.lexeme, this._basePathForIncludeKey).href.substring(ShaderPass._shaderRootPath.length);\n }\n\n scanner.scanToChar(\"\\n\");\n const end = scanner.getShaderPosition(0);\n const chunk = this._includeMap[includedPath];\n if (!chunk) {\n this.reportError(id.location, `Shader slice \"${includedPath}\" not founded.`, scanner.source, scanner.file);\n return;\n }\n\n const range = ShaderLab.createRange(start, end);\n const expanded = this._expandMacroChunk(chunk, range, id.lexeme);\n // #if _VERBOSE\n const block = new BlockInfo(id.lexeme, undefined, expanded.sourceMap);\n // #endif\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n }\n\n private static _parseIfDef(scanner: PpScanner) {\n const start = scanner.current - 6;\n\n const id = scanner.scanWord();\n this._addEmptyReplace(scanner, start);\n this._branchMacros.add(id.lexeme);\n\n const macro = this._definedMacros.get(id.lexeme);\n scanner.skipSpace(true);\n\n const { token: bodyChunk, nextDirective } = scanner.scanMacroBranchChunk();\n if (!!macro) {\n const end = nextDirective.type === EPpKeyword.endif ? scanner.getShaderPosition(0) : scanner.scanRemainMacro();\n\n const expanded = this._expandMacroChunk(bodyChunk.lexeme, bodyChunk.location, scanner);\n\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const range = ShaderLab.createRange(bodyChunk.location.start, end);\n\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n\n return;\n }\n\n this.expandSegments.pop();\n this._addEmptyReplace(scanner, start);\n\n this._parseMacroBranch(<any>nextDirective.type, scanner);\n }\n\n private static _parseMacroBranch(\n directive: EPpKeyword.elif | EPpKeyword.else | EPpKeyword.endif,\n scanner: PpScanner\n ) {\n if (directive === EPpKeyword.endif) {\n return;\n }\n\n const start = scanner.current;\n\n if (directive === EPpKeyword.else) {\n const { token: elseChunk } = scanner.scanMacroBranchChunk();\n const expanded = this._expandMacroChunk(elseChunk.lexeme, elseChunk.location, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const range = ShaderLab.createRange(startPosition, scanner.getShaderPosition(0));\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n } else if (directive === EPpKeyword.elif) {\n const constantExpr = this._parseConstantExpression(scanner);\n const { token: bodyChunk, nextDirective } = scanner.scanMacroBranchChunk();\n if (!!constantExpr) {\n const end = nextDirective.type === EPpKeyword.endif ? scanner.current : scanner.scanRemainMacro().index;\n const expanded = this._expandMacroChunk(bodyChunk.lexeme, bodyChunk.location, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const endPosition = ShaderLab.createPosition(end);\n const range = ShaderLab.createRange(startPosition, endPosition);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n } else {\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const endPosition = ShaderLab.createPosition(scanner.current);\n const range = ShaderLab.createRange(startPosition, endPosition);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: \"\"\n });\n this._parseMacroBranch(<any>nextDirective.type, scanner);\n }\n }\n }\n\n private static _parseConstantExpression(scanner: PpScanner) {\n scanner.skipSpace(true);\n return this._parseLogicalOrExpression(scanner);\n }\n\n private static _parseLogicalOrExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseLogicalAndExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"||\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalOrExpression(scanner);\n return operand1 || operand2;\n }\n return operand1;\n }\n\n private static _parseLogicalAndExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseEqualityExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"&&\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalAndExpression(scanner);\n return operand1 && operand2;\n }\n return operand1;\n }\n\n private static _parseEqualityExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseRelationalExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && [\"==\", \"!=\"].includes(operator)) {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseEqualityExpression(scanner);\n switch (operator) {\n case \"==\":\n return operand1 === operand2;\n case \"!=\":\n return operand1 !== operand2;\n }\n }\n return operand1;\n }\n\n private static _parseRelationalExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseShiftExpression(scanner) as number;\n let operator = scanner.peek(2);\n if (operator[1] !== \"=\") operator = operator[0];\n if (operator && [\">\", \"<\", \">=\", \"<=\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(operator.length);\n scanner.skipSpace(false);\n const operand2 = this._parseRelationalExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this.reportError(opPos, \"invalid operator in relation expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">\":\n return operand1 > operand2;\n case \"<\":\n return operand1 < operand2;\n case \">=\":\n return operand1 >= operand2;\n case \"<=\":\n return operand1 <= operand2;\n }\n }\n return operand1;\n }\n\n private static _parseShiftExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseAdditiveExpression(scanner) as number;\n const operator = scanner.peek(2);\n if (operator && [\">>\", \"<<\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseShiftExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this.reportError(opPos, \"invalid operator in shift expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">>\":\n return operand1 >> operand2;\n case \"<<\":\n return operand1 << operand2;\n }\n }\n\n return operand1;\n }\n\n private static _parseAdditiveExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseMulticativeExpression(scanner) as number;\n if ([\">\", \"<\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance();\n\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseAdditiveExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this.reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return false;\n }\n switch (operator) {\n case \"+\":\n return operand1 + operand2;\n case \"-\":\n return operand1 - operand2;\n }\n }\n return operand1;\n }\n\n private static _parseMulticativeExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseUnaryExpression(scanner) as number;\n scanner.skipSpace(false);\n if ([\"*\", \"/\", \"%\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseMulticativeExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this.reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \"*\":\n return operand1 * operand2;\n case \"/\":\n return operand1 / operand2;\n case \"%\":\n return operand1 % operand2;\n }\n }\n return operand1;\n }\n\n private static _parseUnaryExpression(scanner: PpScanner) {\n const operator = scanner.getCurChar();\n if ([\"+\", \"-\", \"!\"].includes(operator)) {\n scanner.advance();\n const opPos = scanner.getShaderPosition(0);\n const parenExpr = this._parseParenthesisExpression(scanner);\n if ((operator === \"!\" && typeof parenExpr !== \"boolean\") || (operator !== \"!\" && typeof parenExpr !== \"number\")) {\n this.reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n }\n\n switch (operator) {\n case \"+\":\n return parenExpr;\n case \"-\":\n return -parenExpr;\n case \"!\":\n return !parenExpr;\n }\n }\n return this._parseParenthesisExpression(scanner);\n }\n\n private static _parseParenthesisExpression(scanner: PpScanner): PpConstant {\n if (scanner.getCurChar() === \"(\") {\n scanner._advance();\n scanner.skipSpace(false);\n const ret = this._parseConstantExpression(scanner);\n scanner.scanToChar(\")\");\n scanner._advance();\n return ret;\n }\n return this._parseConstant(scanner);\n }\n\n private static _parseConstant(scanner: PpScanner): PpConstant {\n if (LexerUtils.isAlpha(scanner.getCurCharCode())) {\n const id = scanner.scanWord();\n if (id.type === EPpKeyword.defined) {\n const withParen = scanner.peekNonSpace() === \"(\";\n const macro = scanner.scanWord(true);\n if (withParen) {\n scanner.scanToChar(\")\");\n scanner._advance();\n }\n this._branchMacros.add(macro.lexeme);\n return !!this._definedMacros.get(macro.lexeme);\n } else {\n const macro = this._definedMacros.get(id.lexeme);\n if (!macro || !macro.body) {\n return false;\n }\n if (macro.isFunction) {\n this.reportError(id.location, \"invalid function macro usage\", scanner.source, scanner.file);\n }\n const value = Number(macro.body.lexeme);\n if (!Number.isInteger(value)) {\n this.reportError(id.location, `invalid const macro: ${id.lexeme}`, scanner.source, scanner.file);\n }\n this._branchMacros.add(id.lexeme);\n return value;\n }\n } else if (LexerUtils.isNum(scanner.getCurCharCode())) {\n const integer = scanner.scanInteger();\n return Number(integer.lexeme);\n } else {\n this.reportError(\n scanner.getShaderPosition(0),\n `invalid token: ${scanner.getCurChar()}`,\n scanner.source,\n scanner.file\n );\n }\n }\n\n /**\n * Recursively expand macro body and expansion.\n */\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n parentScanner: PpScanner\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n file: string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n scannerOrFile: PpScanner | string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n } {\n this._expandSegmentsStack.push([]);\n let scanner: PpScanner;\n if (typeof scannerOrFile === \"string\") {\n scanner = new PpScanner(chunk, scannerOrFile);\n } else {\n scanner = new PpScanner(chunk, scannerOrFile.file, loc);\n }\n const ret = this.parse(scanner);\n this._expandSegmentsStack.pop();\n return {\n content: ret,\n // #if _VERBOSE\n sourceMap: scanner.sourceMap\n // #endif\n };\n }\n\n private static _parseIfNdef(scanner: PpScanner) {\n const start = scanner.current - 7;\n\n const id = scanner.scanWord();\n this._addEmptyReplace(scanner, start);\n this._branchMacros.add(id.lexeme);\n\n const macro = this._definedMacros.get(id.lexeme);\n const { token: bodyChunk, nextDirective } = scanner.scanMacroBranchChunk();\n if (!macro) {\n const end = nextDirective.type === EPpKeyword.endif ? scanner.getShaderPosition(0) : scanner.scanRemainMacro();\n\n const expanded = this._expandMacroChunk(bodyChunk.lexeme, bodyChunk.location, scanner);\n // #if _VERBOSE\n const blockInfo = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const range = ShaderLab.createRange(bodyChunk.location.start, end);\n this.expandSegments.push({\n // #if _VERBOSE\n block: blockInfo,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n return;\n }\n\n this.expandSegments.pop();\n this._addEmptyReplace(scanner, start);\n this._parseMacroBranch(<any>nextDirective.type, scanner);\n }\n\n private static _addEmptyReplace(scanner: PpScanner, start: number) {\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const endPosition = scanner.getCurPosition();\n const range = ShaderLab.createRange(startPosition, endPosition);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: \"\"\n });\n }\n\n private static _parseIf(scanner: PpScanner) {\n const start = scanner.current - 3;\n\n const constantExpr = this._parseConstantExpression(scanner);\n this._addEmptyReplace(scanner, start);\n\n const { token: bodyChunk, nextDirective } = scanner.scanMacroBranchChunk();\n if (!!constantExpr) {\n const end = nextDirective.type === EPpKeyword.endif ? scanner.getShaderPosition(0) : scanner.scanRemainMacro();\n const expanded = this._expandMacroChunk(bodyChunk.lexeme, bodyChunk.location, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const range = ShaderLab.createRange(bodyChunk.location.start, end);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n return;\n }\n\n this.expandSegments.pop();\n this._addEmptyReplace(scanner, start);\n this._parseMacroBranch(<any>nextDirective.type, scanner);\n }\n\n private static _parseDefine(scanner: PpScanner) {\n const start = scanner.getShaderPosition(7);\n const macro = scanner.scanWord();\n\n let end = macro.location.end;\n if (this._definedMacros.get(macro.lexeme) && macro.lexeme.startsWith(\"GL_\")) {\n this.reportError(macro.location, `redefined macro: ${macro.lexeme}`, scanner.source, scanner.file);\n }\n\n let macroArgs: BaseToken[] | undefined;\n if (scanner.getCurChar() === \"(\") {\n macroArgs = scanner.scanWordsUntilChar(\")\");\n end = scanner.getShaderPosition(0);\n }\n const macroBody = scanner.scanLineRemain();\n const range = ShaderLab.createRange(start, end);\n const macroDefine = new MacroDefine(macro, macroBody, range, macroArgs);\n this._definedMacros.set(macro.lexeme, macroDefine);\n\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange);\n // #endif\n\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: ShaderLab.createRange(start, scanner.getCurPosition()),\n replace: \"\"\n });\n }\n\n private static _parseUndef(scanner: PpScanner) {\n const start = scanner.current - 6;\n const macro = scanner.scanWord();\n\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const range = ShaderLab.createRange(startPosition, scanner.getCurPosition());\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: \"\"\n });\n this._definedMacros.delete(macro.lexeme);\n }\n\n private static _onToken(token: BaseToken, scanner: PpScanner) {\n const macro = this._definedMacros.get(token.lexeme);\n if (macro) {\n let replace = macro.body.lexeme;\n if (macro.isFunction) {\n scanner.scanToChar(\"(\");\n scanner._advance();\n\n // extract parameters\n const args: string[] = [];\n let curLvl = 1;\n let curIdx = scanner.current;\n while (true) {\n if (scanner.getCurChar() === \"(\") curLvl += 1;\n else if (scanner.getCurChar() === \")\") {\n curLvl -= 1;\n if (curLvl === 0) break;\n } else if (scanner.getCurChar() === \",\" && curLvl === 1) {\n args.push(scanner.source.slice(curIdx, scanner.current));\n curIdx = scanner.current + 1;\n }\n scanner._advance();\n }\n args.push(scanner.source.slice(curIdx, scanner.current));\n\n scanner._advance();\n const range = ShaderLab.createRange(token.location!.start, scanner.getCurPosition());\n replace = macro.expandFunctionBody(args);\n const expanded = this._expandMacroChunk(replace, range, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const blockRange = ShaderLab.createRange(token.location!.start, scanner.getCurPosition());\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: blockRange,\n replace: expanded.content\n });\n } else {\n const expanded = this._expandMacroChunk(replace, token.location, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const range = ShaderLab.createRange(token.location.start, token.location.end);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n }\n }\n }\n}\n","import { PpParser } from \"./PpParser\";\nimport PpScanner from \"./PpScanner\";\n\n/** @internal */\nexport class Preprocessor {\n static baseScanner: PpScanner;\n\n /**\n * Reset the parser of `Preprocessor`\n * @param basePathForIncludeKey - the base path to resolve the relative path of `#include` directive\n */\n static reset(includeMap: Record<string, string>, basePathForIncludeKey: string): void {\n PpParser.reset(includeMap, basePathForIncludeKey);\n }\n\n /**\n * Should call it after reset.\n */\n static process(source: string): string | null {\n this.baseScanner = new PpScanner(source);\n return PpParser.parse(this.baseScanner);\n }\n\n static addPredefinedMacro(macro: string, value?: string): void {\n PpParser.addPredefinedMacro(macro, value);\n }\n\n // #if _VERBOSE\n static convertSourceIndex(index: number) {\n return this.baseScanner.sourceMap.map(index);\n }\n // #endif\n}\n","import { NoneTerminal, GrammarSymbol } from \"./parser/GrammarSymbol\";\nimport { BaseToken as Token } from \"./common/BaseToken\";\nimport { EKeyword, ETokenType, GalaceanDataType } from \"./common\";\nimport { TreeNode } from \"./parser/AST\";\n// #if _VERBOSE\nimport State from \"./lalr/State\";\n// #endif\n\nexport class ParserUtils {\n static unwrapNodeByType<T = TreeNode>(node: TreeNode, type: NoneTerminal): T | undefined {\n const child = node.children[0];\n if (child instanceof Token) return;\n if (child.nt === type) return child as T;\n return ParserUtils.unwrapNodeByType(child, type);\n }\n\n // #if _VERBOSE\n /**\n * Check if type `tb` is compatible with type `ta`.\n */\n static typeCompatible(ta: GalaceanDataType, tb: GalaceanDataType | undefined) {\n if (tb == undefined) return true;\n if (ta === EKeyword.INT) {\n return ta === tb || tb === EKeyword.UINT;\n }\n return ta === tb;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? EKeyword[sm];\n }\n return NoneTerminal[sm];\n }\n // #endif\n\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n /**\n * @internal\n */\n // #if _VERBOSE\n static printStatePool(logPath: string) {\n let output = \"\";\n\n console.log(\"========== Parser Pool ==========\");\n\n let count = 0;\n for (const state of State.pool.values()) {\n count++;\n let tmp = \"\";\n tmp += `${state.id}: \\n`.padEnd(4);\n for (const psItem of state.items) {\n tmp += \" \" + psItem.toString() + \"\\n\";\n }\n output += tmp;\n }\n\n console.log(\"state count:\", count);\n console.log(output);\n }\n // #endif\n}\n","import { EShaderStage } from \"../common/Enums\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ESymbolType, TargetSymbolTable, SymbolInfo } from \"../parser/symbolTable\";\nimport { IParamInfo, StructProp } from \"../parser/types\";\nimport { GSErrorName } from \"../GSError\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\n/** @internal */\nexport class VisitorContext {\n private static _singleton: VisitorContext;\n static get context() {\n return this._singleton;\n }\n\n static reset() {\n if (!this._singleton) {\n this._singleton = new VisitorContext();\n }\n this._singleton.reset();\n }\n\n attributeList: IParamInfo[] = [];\n attributeStructs: ASTNode.StructSpecifier[] = [];\n varyingStruct?: ASTNode.StructSpecifier;\n mrtStruct?: ASTNode.StructSpecifier;\n\n stage: EShaderStage;\n\n _referencedAttributeList: Record<string, IParamInfo & { qualifier?: string }> = Object.create(null);\n _referencedGlobals: Record<string, SymbolInfo | ASTNode.PrecisionSpecifier> = Object.create(null);\n _referencedVaryingList: Record<string, IParamInfo & { qualifier?: string }> = Object.create(null);\n _referencedMRTList: Record<string, StructProp | string> = Object.create(null);\n\n _curFn?: ASTNode.FunctionProtoType;\n\n _passSymbolTable: TargetSymbolTable;\n\n private constructor() {}\n\n get passSymbolTable() {\n return this._passSymbolTable;\n }\n\n reset() {\n this.attributeList.length = 0;\n this.attributeStructs.length = 0;\n this._referencedAttributeList = Object.create(null);\n this._referencedGlobals = Object.create(null);\n this._referencedVaryingList = Object.create(null);\n this._referencedMRTList = Object.create(null);\n this.mrtStruct = undefined;\n }\n\n isAttributeStruct(type: string) {\n return this.attributeStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isVaryingStruct(type: string) {\n return this.varyingStruct?.ident?.lexeme === type;\n }\n\n isMRTStruct(type: string) {\n return this.mrtStruct?.ident?.lexeme === type;\n }\n\n referenceAttribute(ident: BaseToken): Error | void {\n if (this._referencedAttributeList[ident.lexeme]) return;\n\n const prop = this.attributeList.find((item) => item.ident.lexeme === ident.lexeme);\n if (!prop) {\n return ShaderLabUtils.createGSError(\n `referenced attribute not found: ${ident.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedAttributeList[ident.lexeme] = prop;\n }\n\n referenceVarying(ident: BaseToken): Error | void {\n if (this._referencedVaryingList[ident.lexeme]) return;\n\n const prop = this.varyingStruct?.propList.find((item) => item.ident.lexeme === ident.lexeme);\n if (!prop) {\n return ShaderLabUtils.createGSError(\n `referenced varying not found: ${ident.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedVaryingList[ident.lexeme] = prop;\n }\n\n referenceMRTProp(ident: BaseToken): Error | void {\n if (this._referencedMRTList[ident.lexeme]) return;\n\n const prop = this.mrtStruct?.propList.find((item) => item.ident.lexeme === ident.lexeme);\n if (!prop) {\n return ShaderLabUtils.createGSError(\n `referenced mrt not found: ${ident.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedMRTList[ident.lexeme] = prop;\n }\n\n referenceGlobal(ident: string, type: ESymbolType) {\n if (this._referencedGlobals[ident]) return;\n\n if (type === ESymbolType.FN) {\n const fnEntries = this._passSymbolTable.getAllFnSymbols(ident);\n for (let i = 0; i < fnEntries.length; i++) {\n const key = i === 0 ? ident : ident + i;\n this._referencedGlobals[key] = fnEntries[i];\n }\n return;\n }\n const sm = this._passSymbolTable.lookup(ident, type);\n if (sm) {\n this._referencedGlobals[ident] = sm;\n }\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class TempArray<T> implements IPoolElement {\n array: Array<T> = new Array();\n\n dispose(): void {\n this.array.length = 0;\n }\n}\n","import { NoneTerminal } from \"../parser/GrammarSymbol\";\nimport { BaseToken as Token } from \"../common/BaseToken\";\nimport { EKeyword, ShaderPosition, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ESymbolType, FnSymbol, VarSymbol } from \"../parser/symbolTable\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { NodeChild } from \"../parser/types\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { Logger, ReturnableObjectPool } from \"@galacean/engine\";\nimport { TempArray } from \"../TempArray\";\n\nexport const V3_GL_FragColor = \"GS_glFragColor\";\nexport const V3_GL_FragData = \"GS_glFragData\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor {\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n abstract getFragDataCodeGen(index: string | number): string;\n abstract getReferencedMRTPropText(index: string | number, ident: string): string;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n let ret = pool.get();\n ret.dispose();\n for (const child of children) {\n if (child instanceof Token) {\n ret.array.push(child.lexeme);\n } else {\n ret.array.push(child.codeGen(this));\n }\n }\n pool.return(ret);\n return ret.array.join(\" \");\n }\n\n visitPostfixExpression(node: ASTNode.PostfixExpression) {\n const children = node.children;\n const derivationLength = children.length;\n const context = VisitorContext.context;\n\n if (derivationLength === 3) {\n const postExpr = children[0] as ASTNode.PostfixExpression;\n const prop = children[2];\n\n if (prop instanceof Token) {\n if (context.isAttributeStruct(<string>postExpr.type)) {\n const error = context.referenceAttribute(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isVaryingStruct(<string>postExpr.type)) {\n const error = context.referenceVarying(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isMRTStruct(<string>postExpr.type)) {\n const error = context.referenceMRTProp(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n }\n\n return `${postExpr.codeGen(this)}.${prop.lexeme}`;\n } else {\n return `${postExpr.codeGen(this)}.${prop.codeGen(this)}`;\n }\n } else if (derivationLength === 4) {\n const identNode = children[0] as ASTNode.PostfixExpression;\n const indexNode = children[2] as ASTNode.Expression;\n const identLexeme = identNode.codeGen(this);\n const indexLexeme = indexNode.codeGen(this);\n if (identLexeme === \"gl_FragData\") {\n // #if _VERBOSE\n if (context._referencedVaryingList[V3_GL_FragColor]) {\n this._reportError(identNode.location, \"cannot use both gl_FragData and gl_FragColor\");\n }\n // #endif\n const mrtLexeme = this.getFragDataCodeGen(indexLexeme);\n context._referencedMRTList[mrtLexeme] = this.getReferencedMRTPropText(indexLexeme, mrtLexeme);\n return mrtLexeme;\n }\n return `${identLexeme}[${indexLexeme}]`;\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n if (node.symbolInfo instanceof VarSymbol && node.symbolInfo.isGlobalVariable) {\n VisitorContext.context.referenceGlobal(node.lexeme, ESymbolType.VAR);\n }\n return node.lexeme;\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n VisitorContext.context.referenceGlobal(call.fnSymbol.ident, ESymbolType.FN);\n\n const paramList = call.children[2];\n const paramInfoList = call.fnSymbol.astNode.protoType.parameterList;\n\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const plainParams: string[] = [];\n const params = paramList.paramNodes;\n\n for (let i = 0; i < params.length; i++) {\n if (\n !VisitorContext.context.isAttributeStruct(paramInfoList[i].typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(paramInfoList[i].typeInfo.typeLexeme)\n ) {\n plainParams.push(params[i].codeGen(this));\n }\n }\n return `${call.fnSymbol.ident}(${plainParams.join(\", \")})`;\n }\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitStatementList(node: ASTNode.StatementList): string {\n const children = node.children as TreeNode[];\n if (children.length === 1) {\n return children[0].codeGen(this);\n } else {\n return `${children[0].codeGen(this)}\\n${children[1].codeGen(this)}`;\n }\n }\n\n visitSingleDeclaration(node: ASTNode.SingleDeclaration): string {\n const type = node.typeSpecifier.type;\n if (typeof type === \"string\") {\n VisitorContext.context.referenceGlobal(type, ESymbolType.STRUCT);\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitGlobalVariableDeclaration(node: ASTNode.VariableDeclaration): string {\n const children = node.children;\n const fullType = children[0];\n if (fullType instanceof ASTNode.FullySpecifiedType && fullType.typeSpecifier.isCustom) {\n VisitorContext.context.referenceGlobal(<string>fullType.type, ESymbolType.STRUCT);\n }\n return this.defaultCodeGen(children);\n }\n\n visitDeclaration(node: ASTNode.Declaration): string {\n const { context } = VisitorContext;\n const children = node.children;\n const child = children[0];\n\n if (child instanceof ASTNode.InitDeclaratorList) {\n const typeLexeme = child.typeInfo.typeLexeme;\n if (context.isVaryingStruct(typeLexeme) || context.isMRTStruct(typeLexeme)) return \"\";\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionProtoType(node: ASTNode.FunctionProtoType): string {\n VisitorContext.context._curFn = node;\n return this.defaultCodeGen(node.children);\n }\n\n visitFunctionDefinition(node: ASTNode.FunctionDefinition): string {\n VisitorContext.context._curFn = undefined;\n return this.defaultCodeGen(node.children);\n }\n\n visitFunctionParameterList(node: ASTNode.FunctionParameterList): string {\n const params = node.parameterInfoList;\n return params\n .filter(\n (item) =>\n !VisitorContext.context.isAttributeStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(item.typeInfo.typeLexeme)\n )\n .map((item) => item.astNode.codeGen(this))\n .join(\", \");\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n const returnType = node.returnType.typeSpecifier.lexeme;\n if (VisitorContext.context.isAttributeStruct(returnType) || VisitorContext.context.isVaryingStruct(returnType))\n return `void ${node.ident.lexeme}(`;\n return this.defaultCodeGen(node.children);\n }\n\n visitJumpStatement(node: ASTNode.JumpStatement): string {\n const children = node.children;\n const cmd = children[0] as Token;\n if (cmd.type === EKeyword.RETURN) {\n const expr = children[1];\n if (expr instanceof ASTNode.Expression) {\n const returnVar = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n expr,\n NoneTerminal.variable_identifier\n );\n if (returnVar?.typeInfo === VisitorContext.context.varyingStruct?.ident?.lexeme) {\n return \"\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n if (returnFnCall?.type === VisitorContext.context.varyingStruct?.ident?.lexeme) {\n return `${expr.codeGen(this)};`;\n }\n }\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n protected _reportError(loc: ShaderRange | ShaderPosition, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, SymbolInfo } from \"../parser/symbolTable\";\nimport { EShaderStage } from \"../common/Enums\";\nimport { IShaderInfo } from \"@galacean/engine-design\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { EKeyword } from \"../common\";\n\nconst defaultPrecision = `\n#ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n precision highp int;\n#else\n precision mediump float;\n precision mediump int;\n#endif\n`;\n\n/**\n * @internal\n */\nexport abstract class GLESVisitor extends CodeGenVisitor {\n protected _versionText: string = \"\";\n protected _extensions: string = \"\";\n private _globalCodeArray: ICodeSegment[] = [];\n\n abstract getAttributeDeclare(out: ICodeSegment[]): void;\n abstract getVaryingDeclare(out: ICodeSegment[]): void;\n abstract getMRTDeclare(out: ICodeSegment[]): void;\n\n visitShaderProgram(node: ASTNode.GLShaderProgram, vertexEntry: string, fragmentEntry: string): IShaderInfo {\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n VisitorContext.reset();\n VisitorContext.context._passSymbolTable = node.shaderData.symbolTable;\n\n return {\n vertex: this.vertexMain(vertexEntry, node.shaderData),\n fragment: this._fragmentMain(fragmentEntry, node.shaderData)\n };\n }\n\n vertexMain(entry: string, data: ShaderData): string {\n const { symbolTable } = data;\n const fnSymbol = symbolTable.lookup(entry, ESymbolType.FN);\n if (!fnSymbol?.astNode) throw `no entry function found: ${entry}`;\n\n const fnNode = fnSymbol.astNode;\n VisitorContext.context.stage = EShaderStage.VERTEX;\n\n const returnType = fnNode.protoType.returnType;\n if (typeof returnType.type === \"string\") {\n const varyStruct = symbolTable.lookup(returnType.type, ESymbolType.STRUCT);\n if (!varyStruct) {\n this._reportError(returnType.location, `invalid varying struct: ${returnType.type}`);\n } else {\n VisitorContext.context.varyingStruct = varyStruct.astNode;\n }\n } else if (returnType.type !== EKeyword.VOID) {\n this._reportError(returnType.location, \"vertex main entry can only return struct or void.\");\n }\n\n const paramList = fnNode.protoType.parameterList;\n if (paramList?.length) {\n for (const paramInfo of paramList) {\n if (typeof paramInfo.typeInfo.type === \"string\") {\n const structSymbol = symbolTable.lookup(paramInfo.typeInfo.type, ESymbolType.STRUCT);\n if (!structSymbol) {\n this._reportError(paramInfo.astNode.location, `Not found attribute struct \"${paramInfo.typeInfo.type}\".`);\n continue;\n }\n VisitorContext.context.attributeStructs.push(structSymbol.astNode);\n for (const prop of structSymbol.astNode.propList) {\n VisitorContext.context.attributeList.push(prop);\n }\n } else {\n VisitorContext.context.attributeList.push(paramInfo);\n }\n }\n }\n\n const statements = fnNode.statements.codeGen(this);\n\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n\n this._getGlobalText(data, globalCodeArray);\n this.getAttributeDeclare(globalCodeArray);\n this.getVaryingDeclare(globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n VisitorContext.context.reset();\n\n return `${this._versionText}\\n${globalCode}\\n\\nvoid main() ${statements}`;\n }\n\n private _fragmentMain(entry: string, data: ShaderData): string {\n const { symbolTable } = data;\n const fnSymbol = symbolTable.lookup(entry, ESymbolType.FN);\n if (!fnSymbol?.astNode) throw `no entry function found: ${entry}`;\n const fnNode = fnSymbol.astNode;\n\n const { returnStatement } = fnNode;\n if (returnStatement) {\n returnStatement.isFragReturnStatement = true;\n }\n\n const { context } = VisitorContext;\n context.stage = EShaderStage.FRAGMENT;\n\n const { type: returnDataType, location: returnLocation } = fnNode.protoType.returnType;\n if (typeof returnDataType === \"string\") {\n const mrtStruct = symbolTable.lookup(returnDataType, ESymbolType.STRUCT);\n if (!mrtStruct) {\n this._reportError(returnLocation, `invalid mrt struct: ${returnDataType}`);\n } else {\n context.mrtStruct = mrtStruct.astNode;\n }\n } else if (returnDataType !== EKeyword.VOID && returnDataType !== EKeyword.VEC4) {\n this._reportError(returnLocation, \"fragment main entry can only return struct or vec4.\");\n }\n\n const statements = fnNode.statements.codeGen(this);\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n\n this._getGlobalText(data, globalCodeArray);\n this.getVaryingDeclare(globalCodeArray);\n this.getMRTDeclare(globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n context.reset();\n return `${this._versionText}\\n${this._extensions}\\n${defaultPrecision}\\n${globalCode}\\n\\nvoid main() ${statements}`;\n }\n\n private _getGlobalText(\n data: ShaderData,\n textList: ICodeSegment[],\n lastLength: number = 0,\n _serialized: Set<string> = new Set()\n ): ICodeSegment[] {\n const { _referencedGlobals } = VisitorContext.context;\n\n if (lastLength === Object.keys(_referencedGlobals).length) {\n for (const precision of data.globalPrecisions) {\n textList.push({ text: precision.codeGen(this), index: precision.location.start.index });\n }\n return textList;\n }\n\n lastLength = Object.keys(_referencedGlobals).length;\n for (const ident in _referencedGlobals) {\n const sm = _referencedGlobals[ident];\n\n if (_serialized.has(ident)) continue;\n _serialized.add(ident);\n\n if (sm instanceof SymbolInfo) {\n if (sm.symbolType === ESymbolType.VAR) {\n textList.push({ text: `uniform ${sm.astNode.codeGen(this)}`, index: sm.astNode.location.start.index });\n } else {\n textList.push({ text: sm.astNode!.codeGen(this), index: sm.astNode!.location.start.index });\n }\n } else {\n textList.push({ text: sm.codeGen(this), index: sm.location.start.index });\n }\n }\n return this._getGlobalText(data, textList, lastLength, _serialized);\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode } from \"../parser/AST\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { ICodeSegment } from \"./types\";\n\nexport class GLES100Visitor extends GLESVisitor {\n override _versionText: string = `#version 100`;\n override _extensions: string = [\n \"GL_EXT_shader_texture_lod\",\n \"GL_OES_standard_derivatives\",\n \"GL_EXT_draw_buffers\",\n \"GL_EXT_frag_depth\"\n ]\n .map((e) => `#extension ${e} : enable\\n`)\n .join(\"\");\n\n private static _singleton: GLES100Visitor;\n static getVisitor(): GLES100Visitor {\n if (!this._singleton) {\n this._singleton = new GLES100Visitor();\n }\n return this._singleton;\n }\n\n override getFragDataCodeGen(index: string | number): string {\n return `gl_FragData[${index}]`;\n }\n\n override getReferencedMRTPropText(index: string | number, ident: string): string {\n return \"\";\n }\n\n override getAttributeDeclare(out: ICodeSegment[]): void {\n for (const item of Object.values(VisitorContext.context._referencedAttributeList)) {\n out.push({\n text: `attribute ${item.typeInfo.typeLexeme} ${item.ident.lexeme};`,\n index: item.ident.location.start.index\n });\n }\n }\n\n override getVaryingDeclare(out: ICodeSegment[]): void {\n for (const item of Object.values(VisitorContext.context._referencedVaryingList)) {\n out.push({\n text: `varying ${item.typeInfo.typeLexeme} ${item.ident.lexeme};`,\n index: item.ident.location.start.index\n });\n }\n }\n\n override getMRTDeclare(out: ICodeSegment[]): void {\n return;\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const { context } = VisitorContext;\n if (postExpr instanceof ASTNode.PostfixExpression && context.isMRTStruct(<string>postExpr.type)) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtStruct!.propList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n if (!prop) {\n this._reportError(propReferenced.location, `not found mrt property: ${propReferenced.lexeme}`);\n return \"\";\n }\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n const expression = node.children[1] as ASTNode.Expression;\n return `gl_FragColor = ${expression.codeGen(this)}`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { ASTNode, TreeNode } from \"../parser/AST\";\nimport { SymbolType } from \"../parser/types\";\nimport { BaseToken as Token } from \"../common/BaseToken\";\nimport { EKeyword, ETokenType } from \"../common\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { EShaderStage } from \"../common/Enums\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { V3_GL_FragColor, V3_GL_FragData } from \"./CodeGenVisitor\";\n\nexport class GLES300Visitor extends GLESVisitor {\n override _versionText: string = \"#version 300 es\";\n\n private static _singleton: GLES300Visitor;\n static getVisitor(): GLES300Visitor {\n if (!this._singleton) {\n this._singleton = new GLES300Visitor();\n }\n return this._singleton;\n }\n\n override getFragDataCodeGen(index: string | number): string {\n return `${V3_GL_FragData}_${index}`;\n }\n\n override getReferencedMRTPropText(index: string | number, ident: string): string {\n return `layout(location = ${index}) out vec4 ${ident};`;\n }\n\n override getAttributeDeclare(out: ICodeSegment[]): void {\n for (const item of Object.values(VisitorContext.context._referencedAttributeList)) {\n out.push({\n text: `in ${item.typeInfo.typeLexeme} ${item.ident.lexeme};`,\n index: item.ident.location.start.index\n });\n }\n }\n\n override getVaryingDeclare(out: ICodeSegment[]): void {\n const qualifier = VisitorContext.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n const values = Object.values(VisitorContext.context._referencedVaryingList);\n for (let i = 0; i < values.length; i++) {\n const item = values[i];\n out.push({\n text: `${item.qualifier ?? qualifier} ${item.typeInfo.typeLexeme} ${item.ident.lexeme};`,\n index: item.ident.location.start.index\n });\n }\n }\n\n override getMRTDeclare(out: ICodeSegment[]): void {\n const referencedMRTList = VisitorContext.context._referencedMRTList;\n for (let ident in referencedMRTList) {\n const info = referencedMRTList[ident];\n if (typeof info === \"string\") {\n out.push({\n text: info,\n index: Number.MAX_SAFE_INTEGER\n });\n } else {\n out.push({\n text: this.getReferencedMRTPropText(info.mrtIndex, ident),\n index: info.ident.location.start.index\n });\n }\n }\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (typeSpecifier.children.length !== 1) {\n return this.defaultCodeGen(children);\n }\n let ident = node.lexeme;\n if (node.ident === \"texture2D\" || node.ident === \"textureCube\") {\n ident = \"texture\";\n } else if (node.ident === \"texture2DProj\") {\n ident = \"textureProj\";\n } else if (VisitorContext.context.stage === EShaderStage.FRAGMENT) {\n switch (node.ident) {\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n case \"gl_FragDepthEXT\":\n ident = \"gl_FragDepth\";\n break;\n }\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const { context } = VisitorContext;\n if (context.stage === EShaderStage.FRAGMENT && node.lexeme === \"gl_FragColor\") {\n // #if _VERBOSE\n if (context._referencedMRTList[\"gl_FragData\"]) {\n this._reportError(node.location, \"cannot use both gl_FragData and gl_FragColor\");\n }\n if (context.mrtStruct) {\n this._reportError(node.location, \"gl_FragColor cannot be used with MRT (Multiple Render Targets).\");\n }\n // #endif\n this._registerFragColorVariable(node);\n return V3_GL_FragColor;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n const { mrtStruct } = VisitorContext.context;\n if (mrtStruct) {\n return \"\";\n }\n this._registerFragColorVariable(node);\n\n const expression = node.children[1] as ASTNode.Expression;\n return `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable(node: TreeNode) {\n const { _referencedVaryingList } = VisitorContext.context;\n if (!_referencedVaryingList[V3_GL_FragColor]) {\n const token = Token.pool.get();\n token.set(ETokenType.ID, V3_GL_FragColor, ShaderLab.createPosition(0, 0, 0));\n _referencedVaryingList[V3_GL_FragColor] = {\n ident: token,\n typeInfo: new SymbolType(EKeyword.VEC4, \"vec4\"),\n qualifier: \"out\",\n astNode: node\n };\n }\n }\n}\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { EKeyword } from \"../common\";\n\nexport const KeywordMap = new Map([\n [\"RenderQueueType\", EKeyword.GS_RenderQueueType],\n [\"BlendState\", EKeyword.GS_BlendState],\n [\"DepthState\", EKeyword.GS_DepthState],\n [\"StencilState\", EKeyword.GS_StencilState],\n [\"RasterState\", EKeyword.GS_RasterState],\n [\"EditorProperties\", EKeyword.GS_EditorProperties],\n [\"EditorMacros\", EKeyword.GS_EditorMacros],\n [\"Editor\", EKeyword.GS_Editor],\n [\"Tags\", EKeyword.GS_Tags],\n [\"VertexShader\", EKeyword.GS_VertexShader],\n [\"FragmentShader\", EKeyword.GS_FragmentShader],\n [\"SubShader\", EKeyword.GS_SubShader],\n [\"Pass\", EKeyword.GS_Pass],\n [\"BlendFactor\", EKeyword.GS_BlendFactor],\n [\"BlendOperation\", EKeyword.GS_BlendOperation],\n [\"Bool\", EKeyword.GS_Bool],\n [\"Number\", EKeyword.GS_Number],\n [\"CompareFunction\", EKeyword.GS_CompareFunction],\n [\"StencilOperation\", EKeyword.GS_StencilOperation],\n [\"CullMode\", EKeyword.GS_CullMode],\n [\"true\", EKeyword.TRUE],\n [\"false\", EKeyword.FALSE],\n [\"UsePass\", EKeyword.GS_UsePass],\n [\"Color\", EKeyword.GS_Color]\n]);\n","import BaseScanner from \"../common/BaseScanner\";\n\nexport default class Scanner extends BaseScanner {\n constructor(source: string, kws: Map<string, number> = new Map()) {\n super(source, kws);\n }\n\n /**\n * split by space\n */\n scanWord(): string {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n while (/\\S/.test(this.getCurChar()) && !this.isEnd()) this._advance();\n return this._source.substring(start, this._currentIndex);\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n while (/[0-9]/.test(this.getCurChar())) this._advance();\n if (this.getCurChar() === \".\") {\n this._advance();\n while (/[0-9]/.test(this.getCurChar())) this._advance();\n }\n return Number(this._source.substring(start, this._currentIndex));\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this._advance();\n }\n this._advance();\n }\n // #endif\n}\n","import { Logger } from \"@galacean/engine\";\nimport { TokenType } from \"../common\";\nimport { BaseSymbolTable, IBaseSymbol } from \"../common/BaseSymbolTable\";\n\nexport interface ISymbol extends IBaseSymbol {\n type: number;\n value?: any;\n}\n\nexport default class ContentSymbolTable extends BaseSymbolTable<ISymbol> {\n override insert(sm: ISymbol): void {\n const entry = this._table.get(sm.ident) ?? [];\n for (let i = 0; i < entry.length; i++) {\n if (entry[i].type === sm.type) {\n Logger.warn(\"replace symbol:\", sm.ident);\n entry[i] = sm;\n return;\n }\n }\n entry.push(sm);\n this._table.set(sm.ident, entry);\n }\n\n lookup(ident: string, type: TokenType): ISymbol | undefined {\n const entry = this._table.get(ident);\n if (entry) {\n for (let length = entry.length, i = 0; i < length; i++) {\n const item = entry[i];\n if (item.type === type) return item;\n }\n }\n }\n}\n","import { SymbolTableStack } from \"../common/BaseSymbolTable\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { EKeyword, ETokenType, TokenType } from \"../common\";\nimport { ShaderPosition } from \"../common\";\nimport { KeywordMap } from \"./KeywordMap\";\nimport Scanner from \"./Scanner\";\nimport ContentSymbolTable, { ISymbol } from \"./ContentSymbolTable\";\nimport {\n RenderStateDataKey,\n Color,\n RenderQueueType,\n CompareFunction,\n StencilOperation,\n BlendOperation,\n BlendFactor,\n CullMode,\n Logger\n} from \"@galacean/engine\";\nimport {\n IStatement,\n IShaderContent,\n ISubShaderContent,\n IShaderPassContent,\n IRenderStates\n} from \"@galacean/engine-design\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nconst EngineType = [\n EKeyword.GS_RenderQueueType,\n EKeyword.GS_BlendFactor,\n EKeyword.GS_BlendOperation,\n EKeyword.GS_Bool,\n EKeyword.GS_Number,\n EKeyword.GS_Color,\n EKeyword.GS_CompareFunction,\n EKeyword.GS_StencilOperation,\n EKeyword.GS_CullMode\n];\n\nconst RenderStateType = [\n EKeyword.GS_BlendState,\n EKeyword.GS_DepthState,\n EKeyword.GS_RasterState,\n EKeyword.GS_StencilState\n];\n\n/**\n * @internal\n */\nexport class ShaderContentParser {\n static _engineType = { RenderQueueType, CompareFunction, StencilOperation, BlendOperation, BlendFactor, CullMode };\n\n static _errors: GSError[] = [];\n\n private static _symbolTableStack: SymbolTableStack<ISymbol, ContentSymbolTable> = new SymbolTableStack();\n\n static reset() {\n this._errors.length = 0;\n this._symbolTableStack.clear();\n this._newScope();\n }\n\n static parse(source: string): IShaderContent {\n const start = performance.now();\n\n const scanner = new Scanner(source, KeywordMap);\n const ret = {\n subShaders: [],\n globalContents: [],\n renderStates: { constantMap: {}, variableMap: {} }\n } as IShaderContent;\n\n scanner.scanText(\"Shader\");\n ret.name = scanner.scanPairedText('\"', '\"');\n scanner.scanText(\"{\");\n\n scanner.skipCommentsAndSpace();\n this._parseShaderStatements(ret, scanner);\n\n const shaderGlobalStatements = ret.globalContents;\n const shaderRenderStates = ret.renderStates;\n for (let i = 0; i < ret.subShaders.length; i++) {\n const subShader = ret.subShaders[i];\n const curSubShaderGlobalStatements = shaderGlobalStatements.concat(subShader.globalContents);\n const constMap = { ...shaderRenderStates.constantMap, ...subShader.renderStates.constantMap };\n const variableMap = { ...shaderRenderStates.variableMap, ...subShader.renderStates.variableMap };\n\n for (let i = 0; i < subShader.passes.length; i++) {\n const pass = subShader.passes[i];\n Object.assign(pass.renderStates.constantMap, constMap);\n Object.assign(pass.renderStates.variableMap, variableMap);\n if (pass.isUsePass) continue;\n // @ts-ignore\n const passGlobalStatements = curSubShaderGlobalStatements.concat(pass.globalContents);\n pass.contents = passGlobalStatements.map((item) => item.content).join(\"\\n\");\n }\n }\n\n Logger.info(`[content compilation] cost time ${performance.now() - start}ms`);\n\n return ret;\n }\n\n private static _isRenderStateDeclarator(token: BaseToken) {\n return RenderStateType.includes(token.type);\n }\n\n private static _isEngineType(token: BaseToken) {\n return EngineType.includes(token.type);\n }\n\n private static _lookupSymbolByType(ident: string, type: TokenType): ISymbol | undefined {\n const stack = ShaderContentParser._symbolTableStack.stack;\n for (let length = stack.length, i = length - 1; i >= 0; i--) {\n const symbolTable = stack[i];\n const ret = symbolTable.lookup(ident, type);\n if (ret) return ret;\n }\n }\n\n private static _parseShaderStatements(ret: IShaderContent, scanner: Scanner) {\n let braceLevel = 1;\n let start = scanner.getCurPosition();\n\n while (true) {\n const word = scanner.scanToken();\n switch (word.type) {\n case EKeyword.GS_SubShader:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n const subShader = this._parseSubShader(scanner);\n ret.subShaders.push(subShader);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_EditorProperties:\n case EKeyword.GS_EditorMacros:\n case EKeyword.GS_Editor:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n scanner.scanPairedText(\"{\", \"}\", true);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_RenderQueueType:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderQueueAssignment(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case ETokenType.NOT_WORD:\n if (word.lexeme === \"{\") braceLevel += 1;\n else if (word.lexeme === \"}\") {\n braceLevel -= 1;\n if (braceLevel === 0) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._symbolTableStack.dropScope();\n return;\n }\n }\n\n default:\n if (ShaderContentParser._isRenderStateDeclarator(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderStateDeclarationOrAssignment(ret, word, scanner);\n start = scanner.getCurPosition();\n break;\n } else if (ShaderContentParser._isEngineType(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseVariableDeclaration(word.type, scanner);\n start = scanner.getCurPosition();\n break;\n }\n }\n }\n }\n\n private static _parseRenderStateDeclarationOrAssignment(\n ret: { renderStates: IRenderStates },\n stateToken: BaseToken,\n scanner: Scanner\n ) {\n const ident = scanner.scanToken();\n let isDeclaration: boolean;\n if (ident.type === ETokenType.ID) {\n isDeclaration = true;\n scanner.scanText(\"{\");\n } else if (ident.lexeme === \"{\") {\n isDeclaration = false;\n } else if (ident.lexeme === \"=\") {\n const variable = scanner.scanToken();\n scanner.scanText(\";\");\n const sm = ShaderContentParser._lookupSymbolByType(variable.lexeme, stateToken.type);\n if (!sm?.value) {\n const error = ShaderLabUtils.createGSError(\n `Invalid \"${stateToken.lexeme}\" variable: ${variable.lexeme}`,\n GSErrorName.CompilationError,\n scanner.source,\n variable.location\n );\n // #if _VERBOSE\n this._errors.push(<GSError>error);\n return;\n // #endif\n }\n const renderState = sm.value as IRenderStates;\n Object.assign(ret.renderStates.constantMap, renderState.constantMap);\n Object.assign(ret.renderStates.variableMap, renderState.variableMap);\n return;\n }\n\n const renderState = this._parseRenderStatePropList(stateToken.lexeme, scanner);\n if (isDeclaration) {\n this._symbolTableStack.insert({ ident: ident.lexeme, type: stateToken.type, value: renderState });\n } else {\n Object.assign(ret.renderStates.constantMap, renderState.constantMap);\n Object.assign(ret.renderStates.variableMap, renderState.variableMap);\n }\n }\n\n private static _parseVariableDeclaration(type: number, scanner: Scanner) {\n const token = scanner.scanToken();\n scanner.scanText(\";\");\n this._symbolTableStack.insert({ type: token.type, ident: token.lexeme });\n }\n\n private static _newScope() {\n const symbolTable = new ContentSymbolTable();\n this._symbolTableStack.newScope(symbolTable);\n }\n\n private static _dropScope() {\n this._symbolTableStack.dropScope();\n }\n\n private static _parseRenderStatePropList(state: string, scanner: Scanner): IRenderStates {\n const ret: IRenderStates = { constantMap: {}, variableMap: {} };\n while (scanner.getCurChar() !== \"}\") {\n this._parseRenderStatePropItem(ret, state, scanner);\n scanner.skipCommentsAndSpace();\n }\n scanner._advance();\n return ret;\n }\n\n private static _parseRenderStatePropItem(ret: IRenderStates, state: string, scanner: Scanner) {\n let renderStateProp = scanner.scanToken().lexeme;\n const op = scanner.scanToken();\n if (state === \"BlendState\" && renderStateProp !== \"BlendColor\" && renderStateProp !== \"AlphaToCoverage\") {\n let idx = 0;\n if (op.lexeme === \"[\") {\n idx = scanner.scanNumber();\n scanner.scanText(\"]\");\n scanner.scanText(\"=\");\n } else if (op.lexeme !== \"=\") {\n const error = ShaderLabUtils.createGSError(\n `Invalid syntax, expect character '=', but got ${op.lexeme}`,\n GSErrorName.CompilationError,\n scanner.source,\n scanner.getCurPosition()\n );\n // #if _VERBOSE\n this._errors.push(<GSError>error);\n scanner.scanToCharacter(\";\");\n return;\n // #endif\n }\n renderStateProp += idx;\n }\n\n renderStateProp = state + renderStateProp;\n const renderStateElementKey = RenderStateDataKey[renderStateProp];\n if (renderStateElementKey == undefined) {\n const error = ShaderLabUtils.createGSError(\n `Invalid render state element ${renderStateProp}`,\n GSErrorName.CompilationError,\n scanner.source,\n scanner.getCurPosition()\n );\n // #if _VERBOSE\n this._errors.push(<GSError>error);\n scanner.scanToCharacter(\";\");\n return;\n // #endif\n }\n\n scanner.skipCommentsAndSpace();\n let value: any;\n if (/[0-9.]/.test(scanner.getCurChar())) {\n value = scanner.scanNumber();\n } else {\n const token = scanner.scanToken();\n if (token.type === EKeyword.TRUE) value = true;\n else if (token.type === EKeyword.FALSE) value = false;\n else if (token.type === EKeyword.GS_Color) {\n scanner.scanText(\"(\");\n const args: number[] = [];\n while (true) {\n args.push(scanner.scanNumber());\n scanner.skipCommentsAndSpace();\n const peek = scanner.peek(1);\n if (peek === \")\") {\n scanner._advance();\n break;\n }\n scanner.scanText(\",\");\n }\n value = new Color(...args);\n } else if (scanner.getCurChar() === \".\") {\n scanner._advance();\n const engineTypeProp = scanner.scanToken();\n value = ShaderContentParser._engineType[token.lexeme]?.[engineTypeProp.lexeme];\n if (value == undefined) {\n const error = ShaderLabUtils.createGSError(\n `Invalid engine constant: ${token.lexeme}.${engineTypeProp.lexeme}`,\n GSErrorName.CompilationError,\n scanner.source,\n engineTypeProp.location\n );\n // #if _VERBOSE\n this._errors.push(<GSError>error);\n scanner.scanToCharacter(\";\");\n return;\n // #endif\n }\n } else {\n value = token.lexeme;\n }\n }\n scanner.scanText(\";\");\n if (typeof value === \"string\") {\n ret.variableMap[renderStateElementKey] = value;\n } else {\n ret.constantMap[renderStateElementKey] = value;\n }\n }\n\n private static _parseRenderQueueAssignment(ret: { renderStates: IRenderStates }, scanner: Scanner) {\n scanner.scanText(\"=\");\n const word = scanner.scanToken();\n scanner.scanText(\";\");\n const value = ShaderContentParser._engineType.RenderQueueType[word.lexeme];\n const key = RenderStateDataKey.RenderQueueType;\n if (value == undefined) {\n ret.renderStates.variableMap[key] = word.lexeme;\n } else {\n ret.renderStates.constantMap[key] = value;\n }\n }\n\n private static _addGlobalStatement(\n ret: { globalContents: IStatement[] },\n scanner: Scanner,\n start: ShaderPosition,\n offset: number\n ) {\n if (scanner.current > start.index + offset) {\n ret.globalContents.push({\n range: { start, end: { ...scanner.getCurPosition(), index: scanner.current - offset - 1 } },\n content: scanner.source.substring(start.index, scanner.current - offset - 1)\n });\n }\n }\n\n private static _parseSubShader(scanner: Scanner): ISubShaderContent {\n this._newScope();\n const ret = {\n passes: [],\n globalContents: [],\n renderStates: { constantMap: {}, variableMap: {} },\n tags: {}\n } as ISubShaderContent;\n let braceLevel = 1;\n ret.name = scanner.scanPairedText('\"', '\"');\n scanner.scanText(\"{\");\n\n scanner.skipCommentsAndSpace();\n let start = scanner.getCurPosition();\n\n while (true) {\n const word = scanner.scanToken();\n switch (word.type) {\n case EKeyword.GS_Pass:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n const pass = this._parsePass(scanner);\n ret.passes.push(pass);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_RenderQueueType:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderQueueAssignment(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_UsePass:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n const name = scanner.scanPairedText('\"', '\"');\n // @ts-ignore\n ret.passes.push({ name, isUsePass: true, renderStates: { constantMap: {}, variableMap: {} }, tags: {} });\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_Tags:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseTags(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case ETokenType.NOT_WORD:\n if (word.lexeme === \"{\") braceLevel += 1;\n else if (word.lexeme === \"}\") {\n braceLevel -= 1;\n if (braceLevel === 0) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._dropScope();\n return ret;\n }\n }\n\n default:\n if (ShaderContentParser._isRenderStateDeclarator(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderStateDeclarationOrAssignment(ret, word, scanner);\n start = scanner.getCurPosition();\n break;\n } else if (ShaderContentParser._isEngineType(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseVariableDeclaration(word.type, scanner);\n start = scanner.getCurPosition();\n break;\n }\n }\n }\n }\n\n private static _parseTags(ret: { tags?: Record<string, number | string | boolean> }, scanner: Scanner) {\n scanner.scanText(\"{\");\n while (true) {\n const ident = scanner.scanToken();\n scanner.scanText(\"=\");\n const value = scanner.scanPairedText('\"', '\"');\n scanner.skipCommentsAndSpace();\n\n ret.tags[ident.lexeme] = value;\n\n if (scanner.peek(1) === \"}\") {\n scanner._advance();\n return;\n }\n scanner.scanText(\",\");\n }\n }\n\n private static _parsePass(scanner: Scanner): IShaderPassContent {\n this._newScope();\n const ret = {\n globalContents: [],\n renderStates: { constantMap: {}, variableMap: {} },\n tags: {}\n } as IShaderPassContent & {\n globalContents: IStatement[];\n };\n ret.name = scanner.scanPairedText('\"', '\"');\n scanner.scanText(\"{\");\n let braceLevel = 1;\n\n scanner.skipCommentsAndSpace();\n let start = scanner.getCurPosition();\n\n while (true) {\n const word = scanner.scanToken();\n switch (word.type) {\n case EKeyword.GS_RenderQueueType:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderQueueAssignment(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_Tags:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseTags(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_VertexShader:\n case EKeyword.GS_FragmentShader:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n scanner.scanText(\"=\");\n const entry = scanner.scanToken();\n if (ret[word.lexeme]) {\n const error = ShaderLabUtils.createGSError(\n \"reassign main entry\",\n GSErrorName.CompilationError,\n scanner.source,\n scanner.getCurPosition()\n );\n // #if _VERBOSE\n Logger.error(error.toString());\n throw error;\n // #endif\n }\n const key = word.type === EKeyword.GS_VertexShader ? \"vertexEntry\" : \"fragmentEntry\";\n ret[key] = entry.lexeme;\n scanner.scanText(\";\");\n start = scanner.getCurPosition();\n break;\n\n case ETokenType.NOT_WORD:\n if (word.lexeme === \"{\") braceLevel += 1;\n else if (word.lexeme === \"}\") {\n braceLevel -= 1;\n if (braceLevel === 0) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._dropScope();\n return ret;\n }\n }\n\n default:\n if (ShaderContentParser._isRenderStateDeclarator(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderStateDeclarationOrAssignment(ret, word, scanner);\n start = scanner.getCurPosition();\n break;\n } else if (ShaderContentParser._isEngineType(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseVariableDeclaration(word.type, scanner);\n start = scanner.getCurPosition();\n break;\n }\n }\n }\n }\n}\n","import { Lexer } from \"./lexer\";\nimport { ShaderTargetParser } from \"./parser\";\nimport { Preprocessor } from \"./preprocessor\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport { IShaderContent, IShaderLab } from \"@galacean/engine-design\";\nimport { ShaderContentParser } from \"./contentParser\";\n// @ts-ignore\nimport { Logger, ShaderLib, ShaderMacro, ShaderPlatformTarget } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \"./common\";\n// #if _VERBOSE\nimport { GSError } from \"./GSError\";\n// #endif\nimport { PpParser } from \"./preprocessor/PpParser\";\nimport { ShaderLabUtils } from \"./ShaderLabUtils\";\nimport { IShaderProgramSource } from \"@galacean/engine-design/types/shader-lab/IShaderProgramSource\";\n\n/** @internal */\nexport class ShaderLab implements IShaderLab {\n private static _parser = ShaderTargetParser.create();\n private static _shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);\n private static _shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);\n\n // #if _VERBOSE\n static _processingPassText?: string;\n // #endif\n\n static createPosition(index: number, line?: number, column?: number): ShaderPosition {\n const position = this._shaderPositionPool.get();\n position.set(\n index,\n // #if _VERBOSE\n line,\n column\n // #endif\n );\n return position;\n }\n\n static createRange(start: ShaderPosition, end: ShaderPosition): ShaderRange {\n const range = this._shaderRangePool.get();\n range.set(start, end);\n return range;\n }\n\n // #if _VERBOSE\n /** Retrieve the compilation errors */\n readonly errors: Error[] = [];\n // #endif\n\n _parseShaderPass(\n source: string,\n vertexEntry: string,\n fragmentEntry: string,\n macros: ShaderMacro[],\n backend: ShaderPlatformTarget,\n platformMacros: string[],\n basePathForIncludeKey: string\n ): IShaderProgramSource | undefined {\n Preprocessor.reset(ShaderLib, basePathForIncludeKey);\n for (const macro of macros) {\n Preprocessor.addPredefinedMacro(macro.name, macro.value);\n }\n\n for (let i = 0; i < platformMacros.length; i++) {\n Preprocessor.addPredefinedMacro(platformMacros[i]);\n }\n\n const preprocessorStart = performance.now();\n const ppdContent = Preprocessor.process(source);\n // #if _VERBOSE\n if (PpParser._errors.length > 0) {\n for (const err of PpParser._errors) {\n this.errors.push(<GSError>err);\n }\n this._logErrors();\n return undefined;\n }\n // #endif\n\n Logger.info(`[pass compilation - preprocessor] cost time ${performance.now() - preprocessorStart}ms`);\n\n const lexer = new Lexer(ppdContent);\n const tokens = lexer.tokenize();\n\n const { _parser: parser } = ShaderLab;\n\n ShaderLab._processingPassText = ppdContent;\n const program = parser.parse(tokens);\n\n // #if _VERBOSE\n for (const err of parser.errors) {\n this.errors.push(err);\n }\n // #endif\n if (!program) {\n // #if _VERBOSE\n this._logErrors();\n // #endif\n return undefined;\n }\n\n const codeGen =\n backend === ShaderPlatformTarget.GLES100 ? GLES100Visitor.getVisitor() : GLES300Visitor.getVisitor();\n\n const start = performance.now();\n const ret = codeGen.visitShaderProgram(program, vertexEntry, fragmentEntry);\n Logger.info(`[CodeGen] cost time: ${performance.now() - start}ms`);\n ShaderLab._processingPassText = undefined;\n\n // #if _VERBOSE\n for (const err of codeGen.errors) {\n this.errors.push(err);\n }\n this._logErrors();\n // #endif\n\n return ret;\n }\n\n _parseShaderContent(shaderSource: string): IShaderContent {\n ShaderLabUtils.clearAllShaderLabObjectPool();\n ShaderContentParser.reset();\n const ret = ShaderContentParser.parse(shaderSource);\n\n // #if _VERBOSE\n this.errors.length = 0;\n for (const error of ShaderContentParser._errors) {\n this.errors.push(error);\n }\n // #endif\n\n return ret;\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors() {\n const errors = this.errors;\n if (errors.length === 0 || !Logger.isEnabled) return;\n Logger.error(`${errors.length} errors occur!`);\n for (const err of errors) {\n Logger.error(err.toString());\n }\n }\n // #endif\n}\n","export { ShaderLab } from \"./ShaderLab\";\n\n// #if _VERBOSE\nexport { Preprocessor } from \"./preprocessor\";\nexport * from \"./GSError\";\n// #endif\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nlet mode = \"Release\";\n// #if _VERBOSE\nmode = \"Verbose\";\n// #endif\n\nconsole.log(`Galacean Engine ShaderLab Version: ${version} | Mode: ${mode}`);\n"],"names":["ShaderRange","set","start","end","dispose","ShaderPosition","index","EKeyword","KeywordTable","Map","ATTRIBUTE","CONST","BOOL","FLOAT","DOUBLE","INT","UINT","BREAK","CONTINUE","DO","ELSE","FOR","IF","WHILE","DISCARD","RETURN","BVEC2","BVEC3","BVEC4","IVEC2","IVEC3","IVEC4","UVEC2","UVEC3","UVEC4","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","IN","OUT","INOUT","SAMPLER2D","SAMPLER_CUBE","SAMPLER3D","SAMPLER2D_SHADOW","SAMPLER_CUBE_SHADOW","SAMPLER2D_ARRAY","SAMPLER2D_ARRAY_SHADOW","I_SAMPLER2D","I_SAMPLER3D","I_SAMPLER_CUBE","I_SAMPLER2D_ARRAY","U_SAMPLER2D","U_SAMPLER3D","U_SAMPLER_CUBE","U_SAMPLER2D_ARRAY","STRUCT","VOID","TRUE","FALSE","PRECISION","PRECISE","HIGHP","MEDIUMP","LOWP","INVARIANT","FLAT","SMOOTH","NOPERSPECTIVE","CENTROID","LAYOUT","LOCATION","ETokenType","TypeAny","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","push","clearAllShaderLabObjectPool","i","n","length","clear","createGSError","message","errorName","source","location","file","Logger","error","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","LexerUtils","isNum","charCode","isLetter","isAlpha","isPpCharacters","isSpace","GSErrorName","BaseScanner","kws","_currentIndex","_source","_keywordsMap","getCurPosition","isEnd","getCurChar","getCurCharCode","charCodeAt","advance","count","_advance","skipSpace","includeLineBreak","spaceChars","_spaceCharsWithBreak","_spaceChars","curChar","_checkIsIn","skipCommentsAndSpace","peek","to","offset","substring","scanText","text","throwError","pos","msgs","join","ScannerError","scanPairedText","left","right","balanced","skipLeading","level","scanToken","onToken","splitCharRegex","test","token","get","NOT_WORD","tokenType","ID","range","checked","chars","current","Lexer","reset","tokenize","_scanWord","_scanNum","_getPosition","LEFT_ASSIGN","LEFT_OP","LE_OP","LEFT_ANGLE","RIGHT_ASSIGN","RIGHT_OP","GE_OP","RIGHT_ANGLE","INC_OP","ADD_ASSIGN","PLUS","DEC_OP","SUB_ASSIGN","DASH","EQ_OP","EQUAL","NE_OP","BANG","AND_OP","AMPERSAND","OR_OP","OR_ASSIGN","VERTICAL_BAR","XOR_OP","XOR_ASSIGN","CARET","MUL_ASSIGN","STAR","DIV_ASSIGN","SLASH","MOD_ASSIGN","PERCENT","LEFT_PAREN","RIGHT_PAREN","LEFT_BRACE","RIGHT_BRACE","LEFT_BRACKET","RIGHT_BRACKET","_scanNumAfterDot","DOT","COMMA","COLON","SEMICOLON","TILDE","QUESTION","_scanStringConst","buffer","STRING_CONST","FLOAT_CONSTANT","word","kt","_scanFloatSuffix","_scanIntegerSuffix","INT_CONSTANT","EAction","ShaderData","globalPrecisions","SymbolDataType","arraySpecifier","typeLexeme","ESymbolType","SymbolInfo","ident","symbolType","astNode","dataType","signature","FnSymbol","protoType","returnType","typeSpecifier","FN","StructSymbol","BaseSymbolTable","_table","SymbolTableStack","stack","newScope","scope","dropScope","pop","insert","sm","_scope","TargetSymbolTable","entry","_compareWith","warn","lookup","item","getAllFnSymbols","fnIdent","entries","filter","params","paramSig","comparedParams","t1","t2","VarSymbol","isGlobalVariable","initAst","VAR","SemanticAnalyzer","semanticStack","acceptRule","undefined","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","addTranslationRule","pid","rule","getTranslationRule","lookupSymbolBy","symbolTable","ret","reportError","loc","shaderData","NoneTerminal","Production","goal","derivation","id","_id","Grammar","productions","startSymbol","unshift","START","getProductionList","nonTerminal","isNullableNT","NT","find","EPSILON","getProductionByID","create","_ps","map","gsl","slice","SymbolType","StructProp","typeInfo","mrtIndex","ASTNodeDecorator","ASTNode","prototype","nt","TreeNode","children","_location","_children","init","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","node","Token","TrivialNode","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","returnStatement","visitJumpStatement","jump_statement","ExpressionAstNode","_type","t","SingleDeclaration","childrenLen","fullyType","initializer","visitSingleDeclaration","single_declaration","FullySpecifiedType","_","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","child","qualifier","single_type_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","value","array_specifier","IntegerConstantExpressionOperator","operator","compute","a","b","integer_constant_expression_operator","IntegerConstantExpression","Number","integer_constant_expression","TypeSpecifierNonArray","tt","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","list","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","visitFunctionProtoType","function_prototype","FunctionDeclarator","header","function_declarator","FunctionHeader","visitFunctionHeader","function_header","FunctionParameterList","decl","listParamLength","visitFunctionParameterList","function_parameter_list","ParameterDeclaration","typeQualifier","parameterDeclarator","varSymbol","parameter_declaration","ParameterDeclarator","parameter_declarator","CompoundStatementNoScope","compound_statement_no_scope","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","paramList","FunctionCallParameterList","function_call_generic","paramNodes","expr","function_call_parameter_list","PrecisionSpecifier","precision_specifier","FunctionIdentifier","visitFunctionIdentifier","function_identifier","AssignmentExpression","assignment_expression","Expression","expression","PrimaryExpression","VariableIdentifier","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","StructSpecifier","propList","struct_specifier","StructDeclarationList","props","propsLength","listProps","declProps","listPropLength","declPropLength","struct_declaration_list","StructDeclaration","declaratorList","LayoutQualifier","prop","declaratorListLength","struct_declaration","layout_qualifier","StructDeclaratorList","listLength","struct_declarator_list","StructDeclarator","struct_declarator","VariableDeclaration","visitGlobalVariableDeclaration","variable_declaration","VariableDeclarationList","variableDeclaration","newVariable","variable_declaration_list","symbolInfo","visitVariableIdentifier","variable_identifier","GLShaderProgram","gs_shader_program","GrammarUtils","isTerminal","toString","createProductionWithOptions","options","astTypePool","opt","addMapSetItem","k","v","Set","add","isSubSet","sb","has","isActionEqual","action","target","productionAndRules","global_declaration","variable_declaration_statement","MAT2X3","MAT2X4","MAT3X2","MAT3X4","MAT4X2","MAT4X3","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","conditional_expression","logical_or_expression","logical_xor_expression","logical_and_expression","inclusive_or_expression","exclusive_or_expression","and_expression","equality_expression","relational_expression","shift_expression","additive_expression","multiplicative_expression","unary_expression","unary_operator","assignment_operator","AND_ASSIGN","statement","compound_statement","simple_statement","expression_statement","selection_statement","iteration_statement","initializer_list","condition","for_init_statement","for_rest_statement","conditionopt","createGrammar","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","la","addLookahead","ts","needReInfer","symbolByOffset","canReduce","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","gs","Array","from","Shift","table","terminal","exist","_computeFirstSetForNT","idx","findIndex","computingFS","len","curNT","firstSet","succeedFirstSet","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","parse","tokens","performance","now","traceBackStack","nextToken","next","loopCount","actionInfo","info","reduceProduction","translationRule","values","nextState","CompilationError","_processingPassText","_singleton","generator","curState","MacroDefine","macro","args","body","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","PreprocessorError","replace","m","indexOf","isFunction","EPpToken","EPpKeyword","PpKeyword","PpUtils","expand","segments","startIdx","generatedIdx","seg","originSlice","rangeInBlock","generatedIdxEnd","assembleSegments","PpScanner","macroLvl","scanDirective","expandOnToken","directive","_advanceToDirective","if","ifdef","ifndef","includes","endif","scanWordsUntilChar","nonLetterChar","scanWord","skipNonLetter","getShaderPosition","kw","found","scanQuotedString","string_const","scanToChar","char","scanMacroBranchChunk","startLvl","elif","else","chunk","nextDirective","scanPairedBlock","lc","rc","scanRemainMacro","peekNonSpace","scanInteger","integer","int_constant","scanLineRemain","comments","line","line_remain","commentRange","_skipComments","startsWith","PpParser","includeMap","basePathForIncludeKey","_definedMacros","_expandSegmentsStack","_branchMacros","addPredefinedMacro","_includeMap","_basePathForIncludeKey","tk","macroBody","scanner","_onToken","bind","define","_parseDefine","undef","_parseUndef","_parseIf","_parseIfNdef","_parseIfDef","include","_parseInclude","expandSegments","sourceMap","includedPath","URL","href","ShaderPass","_shaderRootPath","expanded","_expandMacroChunk","content","_addEmptyReplace","bodyChunk","_parseMacroBranch","elseChunk","startPosition","constantExpr","_parseConstantExpression","endPosition","_parseLogicalOrExpression","operand1","_parseLogicalAndExpression","operand2","_parseEqualityExpression","_parseRelationalExpression","_parseShiftExpression","opPos","_parseAdditiveExpression","_parseMulticativeExpression","_parseUnaryExpression","parenExpr","_parseParenthesisExpression","_parseConstant","defined","withParen","isInteger","scannerOrFile","macroArgs","macroDefine","delete","curLvl","curIdx","blockRange","Preprocessor","process","baseScanner","ParserUtils","unwrapNodeByType","VisitorContext","attributeList","attributeStructs","_referencedAttributeList","Object","_referencedGlobals","_referencedVaryingList","_referencedMRTList","mrtStruct","isAttributeStruct","isVaryingStruct","varyingStruct","isMRTStruct","referenceAttribute","referenceVarying","referenceMRTProp","referenceGlobal","fnEntries","_passSymbolTable","key","passSymbolTable","context","TempArray","array","V3_GL_FragColor","V3_GL_FragData","CodeGenVisitor","_tmpArrayPool","return","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","mrtLexeme","getFragDataCodeGen","getReferencedMRTPropText","call","paramInfoList","plainParams","fullType","_curFn","cmd","returnVar","returnFnCall","_reportError","ReturnableObjectPool","EShaderStage","defaultPrecision","GLESVisitor","_versionText","_extensions","_globalCodeArray","visitShaderProgram","vertexEntry","fragmentEntry","vertex","vertexMain","fragment","_fragmentMain","data","fnNode","stage","VERTEX","varyStruct","paramInfo","structSymbol","globalCodeArray","_getGlobalText","getAttributeDeclare","getVaryingDeclare","globalCode","sort","FRAGMENT","returnDataType","returnLocation","getMRTDeclare","textList","lastLength","_serialized","keys","precision","GLES100Visitor","e","out","propReferenced","getVisitor","GLES300Visitor","referencedMRTList","MAX_SAFE_INTEGER","_registerFragColorVariable","KeywordMap","GS_RenderQueueType","GS_BlendState","GS_DepthState","GS_StencilState","GS_RasterState","GS_EditorProperties","GS_EditorMacros","GS_Editor","GS_Tags","GS_VertexShader","GS_FragmentShader","GS_SubShader","GS_Pass","GS_BlendFactor","GS_BlendOperation","GS_Bool","GS_Number","GS_CompareFunction","GS_StencilOperation","GS_CullMode","GS_UsePass","GS_Color","Scanner","scanNumber","ContentSymbolTable","EngineType","RenderStateType","ShaderContentParser","_errors","_symbolTableStack","_newScope","subShaders","globalContents","renderStates","constantMap","variableMap","name","_parseShaderStatements","shaderGlobalStatements","shaderRenderStates","subShader","curSubShaderGlobalStatements","concat","constMap","passes","pass","assign","isUsePass","passGlobalStatements","contents","_isRenderStateDeclarator","_isEngineType","_lookupSymbolByType","braceLevel","_addGlobalStatement","_parseSubShader","_parseRenderQueueAssignment","_parseRenderStateDeclarationOrAssignment","_parseVariableDeclaration","stateToken","isDeclaration","variable","renderState","_parseRenderStatePropList","_dropScope","_parseRenderStatePropItem","renderStateProp","op","renderStateElementKey","RenderStateDataKey","Color","engineTypeProp","_engineType","RenderQueueType","tags","_parsePass","_parseTags","CompareFunction","StencilOperation","BlendOperation","BlendFactor","CullMode","_parseShaderPass","macros","backend","platformMacros","ShaderLib","preprocessorStart","ppdContent","lexer","parser","_parser","program","ShaderPlatformTarget","GLES100","_parseShaderContent","shaderSource","column","_shaderPositionPool","_shaderRangePool","version","mode","console","log"],"mappings":";;AAAA,SAAS,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1D;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1E;AACA,IAAI,OAAO,IAAI,CAAC;AAChB;;ACJA,SAAS,8BAA8B,CAAC,CAAC,EAAE,MAAM,EAAE;AACnD,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO;AACnB,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,OAAO,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACtE;AACA,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D;AACA,IAAI,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;AAChE,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,IAAI,CAAC,KAAK,WAAW,IAAI,0CAA0C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACxH;;ACTA,SAAS,oCAAoC,CAAC,CAAC,EAAE,cAAc,EAAE;AACjE,IAAI,IAAI,EAAE,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;AACpF;AACA,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnD;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,8BAA8B,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC7H,QAAQ,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AACvB;AACA,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB;AACA,QAAQ,OAAO,WAAW;AAC1B,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrD;AACA,YAAY,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAClD,SAAS,CAAC;AACV,KAAK;AACL;AACA,IAAI,MAAM,IAAI,SAAS,CAAC,uIAAuI,CAAC,CAAC;AACjK;;ACpBA,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;AACjC,IAAI,iBAAiB,GAAG,MAAM,CAAC,cAAc,IAAI,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;AAC/E,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;AACxB;AACA,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN;AACA,IAAI,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC;;ACNA,SAAS,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE;AACzC,IAAI,IAAI,OAAO,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,IAAI,EAAE;AACjE,QAAQ,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;AAClF,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACrJ;AACA,IAAI,IAAI,UAAU,EAAE,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC5D;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAwCA;AACO,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AAC1D,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AAC/H,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACjI,OAAO,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACpJ,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AAgED;AACO,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;AAC3C,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;AACnM,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9J,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACpE,EAAE,SAAS,IAAI,CAAC,EAAE,EAAE;AACpB,MAAM,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;AACpE,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;AACpD,UAAU,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACvK,UAAU,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAClD,UAAU,QAAQ,EAAE,CAAC,CAAC,CAAC;AACvB,cAAc,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;AAC5C,cAAc,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACtE,cAAc,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC/D,cAAc,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;AAC/D,cAAc;AACd,kBAAkB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE;AAC9H,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACxG,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;AACvF,kBAAkB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;AACrF,kBAAkB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACxC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;AACzC,WAAW;AACX,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACrC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAChE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACvF,GAAG;AACH,CAAC;AAgLD;AACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AACnF;;ACvUO,IAAA,WAAA,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,WAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAIXC,IAAAA,MAAAA,CAAAA,GAGC,GAHDA,SAAAA,GAAIC,CAAAA,KAAqB,EAAEC,GAAmB,EAAA;QAC5C,IAAI,CAACD,KAAK,GAAGA,KAAAA,CAAAA;QACb,IAAI,CAACC,GAAG,GAAGA,GAAAA,CAAAA;AACb,KAAA,CAAA;IAEAC,MAAAA,CAAAA,OAGC,GAHDA,SAAAA,OAAAA,GAAAA;QACE,IAAI,CAACF,KAAK,CAACE,OAAO,EAAA,CAAA;QAClB,IAAI,CAACD,GAAG,CAACC,OAAO,EAAA,CAAA;AAClB,KAAA,CAAA;AAZWJ,IAAAA,OAAAA,WAAAA,CAAAA;AAaZ,CAAA,EAAA;;ACdM,IAAA,cAAA,iBAAA,WAAA;AAAMK,IAAAA,SAAAA,cAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAOXJ,IAAAA,MAAAA,CAAAA,GAYC,GAZDA,SAAAA,GAAAA,CACEK,KAAa,EAAA;QAMb,IAAI,CAACA,KAAK,GAAGA,KAAAA,CAAAA;AAKf,KAAA,CAAA;IAEAF,MAAAA,CAAAA,OAMC,GANDA,SAAAA,OAAAA,GAAAA;QACE,IAAI,CAACE,KAAK,GAAG,CAAA,CAAA;AAKf,KAAA,CAAA;AA3BWD,IAAAA,OAAAA,cAAAA,CAAAA;AA4BZ,CAAA,EAAA;;AC9BM,IAAA,QAAKE,iBAAAA,SAAAA,QAAAA,EAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAAA,IAAAA,OAAAA,QAAAA,CAAAA;AAoGX,CAAA,CAAA,EAAA,CAAA;;AClGM,IAAMC,YAAe,GAAA,IAAIC,GAAsB,CAAA;AACpD,IAAA;AAAC,QAAA,WAAA;AAAaF,QAAAA,QAAAA,CAASG,SAAS;AAAC,KAAA;AACjC,IAAA;AAAC,QAAA,OAAA;AAASH,QAAAA,QAAAA,CAASI,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,MAAA;AAAQJ,QAAAA,QAAAA,CAASK,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,OAAA;AAASL,QAAAA,QAAAA,CAASM,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,QAAA;AAAUN,QAAAA,QAAAA,CAASO,MAAM;AAAC,KAAA;AAC3B,IAAA;AAAC,QAAA,KAAA;AAAOP,QAAAA,QAAAA,CAASQ,GAAG;AAAC,KAAA;AACrB,IAAA;AAAC,QAAA,MAAA;AAAQR,QAAAA,QAAAA,CAASS,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,OAAA;AAAST,QAAAA,QAAAA,CAASU,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,UAAA;AAAYV,QAAAA,QAAAA,CAASW,QAAQ;AAAC,KAAA;AAC/B,IAAA;AAAC,QAAA,IAAA;AAAMX,QAAAA,QAAAA,CAASY,EAAE;AAAC,KAAA;AACnB,IAAA;AAAC,QAAA,MAAA;AAAQZ,QAAAA,QAAAA,CAASa,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,KAAA;AAAOb,QAAAA,QAAAA,CAASc,GAAG;AAAC,KAAA;AACrB,IAAA;AAAC,QAAA,IAAA;AAAMd,QAAAA,QAAAA,CAASe,EAAE;AAAC,KAAA;AACnB,IAAA;AAAC,QAAA,OAAA;AAASf,QAAAA,QAAAA,CAASgB,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,SAAA;AAAWhB,QAAAA,QAAAA,CAASiB,OAAO;AAAC,KAAA;AAC7B,IAAA;AAAC,QAAA,QAAA;AAAUjB,QAAAA,QAAAA,CAASkB,MAAM;AAAC,KAAA;AAC3B,IAAA;AAAC,QAAA,OAAA;AAASlB,QAAAA,QAAAA,CAASmB,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,OAAA;AAASnB,QAAAA,QAAAA,CAASoB,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,OAAA;AAASpB,QAAAA,QAAAA,CAASqB,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,OAAA;AAASrB,QAAAA,QAAAA,CAASsB,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,OAAA;AAAStB,QAAAA,QAAAA,CAASuB,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,OAAA;AAASvB,QAAAA,QAAAA,CAASwB,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,OAAA;AAASxB,QAAAA,QAAAA,CAASyB,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,OAAA;AAASzB,QAAAA,QAAAA,CAAS0B,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,OAAA;AAAS1B,QAAAA,QAAAA,CAAS2B,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,MAAA;AAAQ3B,QAAAA,QAAAA,CAAS4B,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,MAAA;AAAQ5B,QAAAA,QAAAA,CAAS6B,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,MAAA;AAAQ7B,QAAAA,QAAAA,CAAS8B,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,MAAA;AAAQ9B,QAAAA,QAAAA,CAAS+B,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,MAAA;AAAQ/B,QAAAA,QAAAA,CAASgC,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,MAAA;AAAQhC,QAAAA,QAAAA,CAASiC,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,IAAA;AAAMjC,QAAAA,QAAAA,CAASkC,EAAE;AAAC,KAAA;AACnB,IAAA;AAAC,QAAA,KAAA;AAAOlC,QAAAA,QAAAA,CAASmC,GAAG;AAAC,KAAA;AACrB,IAAA;AAAC,QAAA,OAAA;AAASnC,QAAAA,QAAAA,CAASoC,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,WAAA;AAAapC,QAAAA,QAAAA,CAASqC,SAAS;AAAC,KAAA;AACjC,IAAA;AAAC,QAAA,aAAA;AAAerC,QAAAA,QAAAA,CAASsC,YAAY;AAAC,KAAA;AACtC,IAAA;AAAC,QAAA,WAAA;AAAatC,QAAAA,QAAAA,CAASuC,SAAS;AAAC,KAAA;AACjC,IAAA;AAAC,QAAA,iBAAA;AAAmBvC,QAAAA,QAAAA,CAASwC,gBAAgB;AAAC,KAAA;AAC9C,IAAA;AAAC,QAAA,mBAAA;AAAqBxC,QAAAA,QAAAA,CAASyC,mBAAmB;AAAC,KAAA;AACnD,IAAA;AAAC,QAAA,gBAAA;AAAkBzC,QAAAA,QAAAA,CAAS0C,eAAe;AAAC,KAAA;AAC5C,IAAA;AAAC,QAAA,sBAAA;AAAwB1C,QAAAA,QAAAA,CAAS2C,sBAAsB;AAAC,KAAA;AACzD,IAAA;AAAC,QAAA,YAAA;AAAc3C,QAAAA,QAAAA,CAAS4C,WAAW;AAAC,KAAA;AACpC,IAAA;AAAC,QAAA,YAAA;AAAc5C,QAAAA,QAAAA,CAAS6C,WAAW;AAAC,KAAA;AACpC,IAAA;AAAC,QAAA,cAAA;AAAgB7C,QAAAA,QAAAA,CAAS8C,cAAc;AAAC,KAAA;AACzC,IAAA;AAAC,QAAA,iBAAA;AAAmB9C,QAAAA,QAAAA,CAAS+C,iBAAiB;AAAC,KAAA;AAC/C,IAAA;AAAC,QAAA,YAAA;AAAc/C,QAAAA,QAAAA,CAASgD,WAAW;AAAC,KAAA;AACpC,IAAA;AAAC,QAAA,YAAA;AAAchD,QAAAA,QAAAA,CAASiD,WAAW;AAAC,KAAA;AACpC,IAAA;AAAC,QAAA,cAAA;AAAgBjD,QAAAA,QAAAA,CAASkD,cAAc;AAAC,KAAA;AACzC,IAAA;AAAC,QAAA,iBAAA;AAAmBlD,QAAAA,QAAAA,CAASmD,iBAAiB;AAAC,KAAA;AAC/C,IAAA;AAAC,QAAA,QAAA;AAAUnD,QAAAA,QAAAA,CAASoD,MAAM;AAAC,KAAA;AAC3B,IAAA;AAAC,QAAA,MAAA;AAAQpD,QAAAA,QAAAA,CAASqD,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,MAAA;AAAQrD,QAAAA,QAAAA,CAASsD,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,OAAA;AAAStD,QAAAA,QAAAA,CAASuD,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,WAAA;AAAavD,QAAAA,QAAAA,CAASwD,SAAS;AAAC,KAAA;AACjC,IAAA;AAAC,QAAA,SAAA;AAAWxD,QAAAA,QAAAA,CAASyD,OAAO;AAAC,KAAA;AAC7B,IAAA;AAAC,QAAA,OAAA;AAASzD,QAAAA,QAAAA,CAAS0D,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,SAAA;AAAW1D,QAAAA,QAAAA,CAAS2D,OAAO;AAAC,KAAA;AAC7B,IAAA;AAAC,QAAA,MAAA;AAAQ3D,QAAAA,QAAAA,CAAS4D,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,WAAA;AAAa5D,QAAAA,QAAAA,CAAS6D,SAAS;AAAC,KAAA;AACjC,IAAA;AAAC,QAAA,MAAA;AAAQ7D,QAAAA,QAAAA,CAAS8D,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,QAAA;AAAU9D,QAAAA,QAAAA,CAAS+D,MAAM;AAAC,KAAA;AAC3B,IAAA;AAAC,QAAA,eAAA;AAAiB/D,QAAAA,QAAAA,CAASgE,aAAa;AAAC,KAAA;AACzC,IAAA;AAAC,QAAA,UAAA;AAAYhE,QAAAA,QAAAA,CAASiE,QAAQ;AAAC,KAAA;AAC/B,IAAA;AAAC,QAAA,QAAA;AAAUjE,QAAAA,QAAAA,CAASkE,MAAM;AAAC,KAAA;AAC3B,IAAA;AAAC,QAAA,UAAA;AAAYlE,QAAAA,QAAAA,CAASmE,QAAQ;AAAC,KAAA;CAChC,CAAE,CAAA;AAEI,IAAA,UAAKC,iBAAAA,SAAAA,UAAAA,EAAAA;;;;;cAKH,UAAA,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,GAAA,SAAA,CAAA;eAEC,UAAA,CAAA,UAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,GAAA,UAAA,CAAA;cAED,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,IAAA,CAAA,GAAA,QAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,IAAA,CAAA,GAAA,QAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;eAEC,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;cAED,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,IAAA,CAAA,GAAA,QAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,IAAA,CAAA,GAAA,QAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;eAEC,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAA,CAAA;eAEA,UAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAA,CAAA;cAED,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,GAAA,WAAA,CAAA;aAED,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,GAAA,eAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,IAAA,CAAA,GAAA,KAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;;aAGA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,GAAA,WAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,IAAA,CAAA,GAAA,MAAA,CAAA;cAEC,UAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,IAAA,CAAA,GAAA,MAAA,CAAA;aAED,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;;cAGC,UAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,IAAA,CAAA,GAAA,MAAA,CAAA;aAED,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,GAAA,SAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEC,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAA,CAAA;;aAGD,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,GAAA,WAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,GAAA,UAAA,CAAA;;aAKA,UAAA,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,GAAA,SAAA,CAAA;;AA/FIA,IAAAA,OAAAA,UAAAA,CAAAA;AAkGX,CAAA,CAAA,EAAA,CAAA,CAAA;AAEM,IAAMC,UAAU,IAAK;;AC1K5B,SAAS,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AAClC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AACrF,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK,MAAM,OAAO,IAAI,YAAY,KAAK,CAAC;AACxC;;ACIO,IAAA,cAAA,iBAAA,WAAA;AAAMC,IAAAA,SAAAA,cAAAA,GAAAA,EAAAA;AAAAA,IAAAA,cAAAA,CAGJC,gBAIN,GAJD,SAAOA,gBAAAA,CAAyCC,IAAiB,EAAA;QAC/D,IAAMC,IAAAA,GAAO,IAAIC,mBAAuBF,CAAAA,IAAAA,CAAAA,CAAAA;QAJ/BF,cAKMK,CAAAA,uBAAuB,CAACC,IAAI,CAACH,IAAAA,CAAAA,CAAAA;QAC5C,OAAOA,IAAAA,CAAAA;AACT,KAAA,CAAA;IAPWH,cASJO,CAAAA,2BAIN,GAJD,SAAOA,2BAAAA,GAAAA;AACL,QAAA,IAAK,IAAIC,CAAAA,GAAI,CAAGC,EAAAA,CAAAA,GAAIT,cAVXA,CAU0BK,uBAAuB,CAACK,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AAVtER,YAAAA,cAAAA,CAWQK,uBAAuB,CAACG,CAAE,CAAA,CAACG,KAAK,EAAA,CAAA;AACjD,SAAA;AACF,KAAA,CAAA;AAbWX,IAAAA,cAAAA,CAeJY,aAYN,GAZD,SAAOA,aAAAA,CACLC,OAAe,EACfC,SAAsB,EACtBC,MAAc,EACdC,QAAsC,EACtCC,IAAa,EAAA;AAKbC,QAAAA,MAAAA,CAAOC,KAAK,CAACN,OAAAA,CAAAA,CAAAA;AAEf,KAAA,CAAA;AA3BWb,IAAAA,OAAAA,cAAAA,CAAAA;AA4BZ,CAAA,EAAA,CAAA;AA5BYA,cAAAA,CACIK,0BAA+D,EAAE;;ACH3E,IAAA,SAAA,iBAAA,WAAA;AAAMe,IAAAA,SAAAA,SAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;IASXhG,MAAAA,CAAAA,GAiBC,GAjBDA,SAAAA,GAAAA,CAAI8E,IAAO,EAAEmB,MAAc,EAAEC,GAAkC,EAAA;QAC7D,IAAI,CAACpB,IAAI,GAAGA,IAAAA,CAAAA;QACZ,IAAI,CAACmB,MAAM,GAAGA,MAAAA,CAAAA;AACd,QAAA,IAAIC,GAAK,EAAA;YACP,IAAO,WAAHA,CAAAA,GAAAA,EAAenG,WAAa,CAAA,EAAA;gBAC9B,IAAI,CAAC6F,QAAQ,GAAGM,GAAAA,CAAAA;aACX,MAAA;gBACL,IAAMhG,GAAAA,GAAMiG,UAAUC,cAAc,CAClCF,IAAI7F,KAAK,GAAG4F,OAAOX,MAAM,CAAA,CAAA;AAM3B,gBAAA,IAAI,CAACM,QAAQ,GAAGO,SAAUE,CAAAA,WAAW,CAACH,GAAKhG,EAAAA,GAAAA,CAAAA,CAAAA;AAC7C,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEAC,MAAAA,CAAAA,OAAkB,GAAlBA,SAAAA,OAAiB,GAAA,EAAA,CAAA;AA5BN6F,IAAAA,OAAAA,SAAAA,CAAAA;AA6BZ,CAAA,EAAA,CAAA;AA7BYA,SACJjB,CAAAA,IAAAA,GAAOH,cAAeC,CAAAA,gBAAgB,CAACmB,SAAAA,CAAAA,CAAAA;AA8BzC,IAAMM,GAAM,GAAA,IAAIN,SAAY,EAAA,CAAA;AACnCM,GAAAA,CAAItG,GAAG,CAAC0E,UAAW4B,CAAAA,GAAG,EAAE,MAAA,CAAA;;ACtCT,IAAA,UAAA,iBAAA,WAAA;AAAMC,IAAAA,SAAAA,UAAAA,GAAAA,EAAAA;AAAAA,IAAAA,UAAAA,CACZC,KAEN,GAFD,SAAOA,KAAAA,CAAMC,QAAgB,EAAA;QAC3B,OAAOA,QAAAA,IAAY,MAAMA,QAAY,IAAA,EAAA,CAAA;AACvC,KAAA,CAAA;AAHmBF,IAAAA,UAAAA,CAKZG,QAON,GAPD,SAAOA,QAAAA,CAASD,QAAgB,EAAA;QAC9B,OACEA,QAAAA,KAAa;QACZA,QAAY,IAAA,EAAA,IAAMA,QAAY,IAAA,EAAA;QAC9BA,QAAY,IAAA,EAAA,IAAMA,QAAY,IAAA,EAAA;QAC9BA,QAAY,IAAA,EAAA,IAAMA,QAAY,IAAA,GAAA;;AAEnC,KAAA,CAAA;AAZmBF,IAAAA,UAAAA,CAcZI,OAMN,GAND,SAAOA,OAAAA,CAAQF,QAAgB,EAAA;QAC7B,OACEA,QAAAA,KAAa;QACZA,QAAY,IAAA,EAAA,IAAMA,QAAY,IAAA,EAAA;QAC9BA,QAAY,IAAA,EAAA,IAAMA,QAAY,IAAA,GAAA;;AAEnC,KAAA,CAAA;AApBmBF,IAAAA,UAAAA,CAsBZK,cAQN,GARD,SAAOA,cAAAA,CAAeH,QAAgB,EAAA;QACpC,OACEA,QAAAA,KAAa;AACbA,QAAAA,QAAAA,KAAa;QACZA,QAAY,IAAA,EAAA,IAAMA,QAAY,IAAA,EAAA;QAC9BA,QAAY,IAAA,EAAA,IAAMA,QAAY,IAAA,EAAA;QAC9BA,QAAY,IAAA,EAAA,IAAMA,QAAY,IAAA,GAAA;;AAEnC,KAAA,CAAA;AA9BmBF,IAAAA,UAAAA,CAgCZM,OAON,GAPD,SAAOA,OAAAA,CAAQJ,QAAgB,EAAA;QAC7B,OACEA,QAAAA,KAAa;AACbA,QAAAA,QAAAA,KAAa;AACbA,QAAAA,QAAAA,KAAa;AACbA,QAAAA,QAAAA,KAAa;;AAEjB,KAAA,CAAA;AAvCmBF,IAAAA,OAAAA,UAAAA,CAAAA;;;ACArB,SAAS,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE;AAC1C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;AAC/D,QAAQ,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;AACvC;AACA,QAAQ,IAAI,OAAO,IAAI,UAAU,EAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC9D;AACA,QAAQ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAClE,KAAK;AACL,CAAC;AACD,SAAS,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;AAC7D,IAAI,IAAI,UAAU,EAAE,iBAAiB,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACzE,IAAI,IAAI,WAAW,EAAE,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACjE;AACA,IAAI,OAAO,WAAW,CAAC;AACvB;;AC+CO,IAAAO,aAAKA,iBAAAA,SAAAA,WAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,WAAAA,CAAAA;AAIX,CAAA,CAAA,EAAA,CAAA;;ACvDc,IAAA,WAAA,iBAAA,WAAA;aAAMC,WAmDPpB,CAAAA,MAAc,EAAEqB,GAAoC,EAAA;QAApCA,IAAAA,GAAAA,KAAAA,KAAAA,CAAAA,EAAAA,MAA2B,IAAIxG,GAAAA,EAAAA,CAAAA;aAtCjDyG,aAAgB,GAAA,CAAA,CAAA;QAuCxB,IAAI,CAACC,OAAO,GAAGvB,MAAAA,CAAAA;QACf,IAAI,CAACwB,YAAY,GAAGH,GAAAA,CAAAA;;AArDHD,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;IA6BnBK,MAAAA,CAAAA,cAQC,GARDA,SAAAA,cAAAA,GAAAA;AACE,QAAA,OAAOjB,SAAUC,CAAAA,cAAc,CAC7B,IAAI,CAACa,aAAa,CAAA,CAAA;AAMtB,KAAA,CAAA;IAmBAI,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;QACE,OAAO,IAAI,CAACJ,aAAa,IAAI,IAAI,CAACC,OAAO,CAAC5B,MAAM,CAAA;AAClD,KAAA,CAAA;IAEAgC,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAACJ,OAAO,CAAC,IAAI,CAACD,aAAa,CAAC,CAAA;AACzC,KAAA,CAAA;IAEAM,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAAA,GAAAA;QACE,OAAO,IAAI,CAACL,OAAO,CAACM,UAAU,CAAC,IAAI,CAACP,aAAa,CAAA,CAAA;AACnD,KAAA,CAAA;AAEAQ,IAAAA,MAAAA,CAAAA,OAQC,GARDA,SAAAA,OAAAA,CAAQC,KAAS,EAAA;AAATA,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,CAAA,CAAA;QAMd,IAAI,CAACT,aAAa,IAAIS,KAAAA,CAAAA;AAExB,KAAA,CAAA;IAEAC,MAAAA,CAAAA,QAWC,GAXDA,SAAAA,QAAAA,GAAAA;AAUE,QAAA,IAAI,CAACV,aAAa,EAAA,CAAA;AACpB,KAAA,CAAA;AAEAW,IAAAA,MAAAA,CAAAA,SAQC,GARDA,SAAAA,SAAAA,CAAUC,gBAAyB,EAAA;QACjC,IAAMC,UAAAA,GAAaD,mBAAmBd,WA5FrBA,CA4FiCgB,oBAAoB,GA5FrDhB,YA4FoEiB,WAAW,CAAA;QAChG,IAAIC,OAAAA,GAAU,IAAI,CAACX,UAAU,EAAA,CAAA;AAE7B,QAAA,MAAOP,WA/FUA,CA+FEmB,UAAU,CAACD,SAASH,UAAa,CAAA,CAAA;AAClD,YAAA,IAAI,CAACH,QAAQ,EAAA,CAAA;YACbM,OAAU,GAAA,IAAI,CAACX,UAAU,EAAA,CAAA;AAC3B,SAAA;AACF,KAAA,CAAA;IAEAa,MAAAA,CAAAA,oBAsBC,GAtBDA,SAAAA,oBAAAA,GAAAA;QACE,IAAI,CAACP,SAAS,CAAC,IAAA,CAAA,CAAA;AACf,QAAA,IAAI,IAAI,CAACQ,IAAI,CAAC,OAAO,IAAM,EAAA;YACzB,IAAMnI,KAAAA,GAAQ,IAAI,CAACmH,cAAc,EAAA,CAAA;YACjC,IAAI,CAACK,OAAO,CAAC,CAAA,CAAA,CAAA;;YAEb,IAAIQ,OAAAA,GAAU,IAAI,CAACX,UAAU,EAAA,CAAA;YAC7B,MAAOW,OAAAA,KAAY,QAAQA,OAAY,KAAA,IAAA,IAAQ,CAAC,IAAI,CAACZ,KAAK,EAAI,CAAA;AAC5D,gBAAA,IAAI,CAACM,QAAQ,EAAA,CAAA;gBACbM,OAAU,GAAA,IAAI,CAACX,UAAU,EAAA,CAAA;AAC3B,aAAA;AACA,YAAA,IAAI,CAACa,oBAAoB,EAAA,CAAA;AACzB,YAAA,OAAOhC,UAAUE,WAAW,CAACpG,KAAO,EAAA,IAAI,CAACmH,cAAc,EAAA,CAAA,CAAA;AACzD,SAAA,MAAO,IAAI,IAAI,CAACgB,IAAI,CAAC,OAAO,IAAM,EAAA;YAChC,IAAMnI,MAAAA,GAAQ,IAAI,CAACmH,cAAc,EAAA,CAAA;YACjC,IAAI,CAACK,OAAO,CAAC,CAAA,CAAA,CAAA;;AAEb,YAAA,MAAO,IAAI,CAACW,IAAI,CAAC,CAAO,CAAA,KAAA,IAAA,IAAQ,CAAC,IAAI,CAACf,KAAK,EAAI,CAAA,IAAI,CAACM,QAAQ,EAAA,CAAA;YAC5D,IAAI,CAACF,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,YAAA,IAAI,CAACU,oBAAoB,EAAA,CAAA;AACzB,YAAA,OAAOhC,UAAUE,WAAW,CAACpG,MAAO,EAAA,IAAI,CAACmH,cAAc,EAAA,CAAA,CAAA;AACzD,SAAA;AACF,KAAA,CAAA;AAEAgB,IAAAA,MAAAA,CAAAA,IAGC,GAHDA,SAAAA,IAAAA,CAAKC,EAAU,EAAA;QACb,IAAMC,MAAAA,GAAS,IAAI,CAACrB,aAAa,CAAA;AACjC,QAAA,OAAO,IAAI,CAACC,OAAO,CAACqB,SAAS,CAACD,QAAQA,MAASD,GAAAA,EAAAA,CAAAA,CAAAA;AACjD,KAAA,CAAA;AAEAG,IAAAA,MAAAA,CAAAA,QAOC,GAPDA,SAAAA,QAAAA,CAASC,IAAY,EAAA;AACnB,QAAA,IAAI,CAACN,oBAAoB,EAAA,CAAA;AACzB,QAAA,IAAMC,OAAO,IAAI,CAACA,IAAI,CAACK,KAAKnD,MAAM,CAAA,CAAA;AAClC,QAAA,IAAI8C,SAASK,IAAM,EAAA;YACjB,IAAI,CAACC,UAAU,CAAC,IAAI,CAACtB,cAAc,EAAA,EAAI,eAAC,GAAeqB,IAAK,GAAA,cAAA,GAAcL,IAAK,GAAA,GAAA,CAAA,CAAA;AACjF,SAAA;AACA,QAAA,IAAI,CAACX,OAAO,CAACgB,IAAAA,CAAKnD,MAAM,CAAA,CAAA;AAC1B,KAAA,CAAA;AAEAoD,IAAAA,MAAAA,CAAAA,UAMC,GANDA,SAAAA,UAAAA,CAAWC,GAAiC,EAAA;AAAE,QAAA,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,OAAA,IAAA,EAAA,IAAA,EAAA,CAAA;AAAGC,YAAAA,IAAAA,CAAH,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAc,CAAA,CAAA;;AAC1D,QAAA,IAAM7C,KAAQnB,GAAAA,cAAAA,CAAeY,aAAa,CAACoD,KAAKC,IAAI,CAAC,GAAM/B,CAAAA,EAAAA,aAAAA,CAAYgC,YAAY,EAAE,IAAI,CAAC5B,OAAO,EAAEyB,GAAAA,CAAAA,CAAAA;QAInG,MAAM5C,KAAAA,CAAAA;AACR,KAAA,CAAA;IAEAgD,MAAAA,CAAAA,cAwBC,GAxBDA,SAAAA,cAAeC,CAAAA,IAAY,EAAEC,KAAa,EAAEC,QAAgB,EAAEC,WAAmB,EAAA;AAArCD,QAAAA,IAAAA,qBAAAA,QAAW,GAAA,KAAA,CAAA;AAAOC,QAAAA,IAAAA,wBAAAA,WAAc,GAAA,KAAA,CAAA;AAC1E,QAAA,IAAI,CAACA,WAAa,EAAA;YAChB,IAAI,CAACX,QAAQ,CAACQ,IAAAA,CAAAA,CAAAA;AAChB,SAAA;QACA,IAAM/I,KAAAA,GAAQ,IAAI,CAACgH,aAAa,CAAA;QAChC,IAAImC,KAAAA,GAAQF,WAAW,CAAI,GAAA,CAAA,CAAA;QAC3B,MAAO,IAAI,CAACd,IAAI,CAACa,MAAM3D,MAAM,CAAA,KAAM2D,KAASG,IAAAA,KAAAA,KAAU,CAAG,CAAA;YACvD,IAAI,IAAI,CAAC/B,KAAK,EAAI,EAAA,OAAA;AAClB,YAAA,IAAI6B,QAAU,EAAA;AACZ,gBAAA,IAAI,IAAI,CAACd,IAAI,CAACY,IAAK1D,CAAAA,MAAM,MAAM0D,IAAM,EAAA;oBACnCI,KAAS,IAAA,CAAA,CAAA;AACT,oBAAA,IAAI,CAAC3B,OAAO,CAACuB,IAAAA,CAAK1D,MAAM,CAAA,CAAA;AACxB,oBAAA,SAAA;iBACK,MAAA,IAAI,IAAI,CAAC8C,IAAI,CAACa,KAAM3D,CAAAA,MAAM,MAAM2D,KAAO,EAAA;oBAC5CG,KAAS,IAAA,CAAA,CAAA;AACT,oBAAA,IAAIA,UAAU,CAAG,EAAA,MAAA;AACjB,oBAAA,IAAI,CAAC3B,OAAO,CAACwB,KAAAA,CAAM3D,MAAM,CAAA,CAAA;AACzB,oBAAA,SAAA;AACF,iBAAA;AACF,aAAA;AACA,YAAA,IAAI,CAACmC,OAAO,CAACwB,KAAAA,CAAM3D,MAAM,CAAA,CAAA;AAC3B,SAAA;AACA,QAAA,IAAI,CAACmC,OAAO,CAACwB,KAAAA,CAAM3D,MAAM,CAAA,CAAA;AACzB,QAAA,OAAO,IAAI,CAAC4B,OAAO,CAACqB,SAAS,CAACtI,KAAO,EAAA,IAAI,CAACgH,aAAa,GAAGgC,KAAAA,CAAM3D,MAAM,CAAA,CAAA;AACxE,KAAA,CAAA;AAEA+D,IAAAA,MAAAA,CAAAA,SAsBC,GAtBDA,SAAAA,SAAUC,CAAAA,OAAiB,EAAEC,cAAqB,EAAA;AAArBA,QAAAA,IAAAA,2BAAAA,cAAiB,GAAA,IAAA,CAAA;AAC5C,QAAA,IAAI,CAACpB,oBAAoB,EAAA,CAAA;QACzB,IAAMlI,KAAAA,GAAQ,IAAI,CAACmH,cAAc,EAAA,CAAA;QACjC,IAAI,IAAI,CAACC,KAAK,EAAI,EAAA,OAAA;AAClB,QAAA,MAAOkC,cAAeC,CAAAA,IAAI,CAAC,IAAI,CAAClC,UAAU,EAAA,CAAA,IAAO,CAAC,IAAI,CAACD,KAAK,EAAI,CAAA,IAAI,CAACM,QAAQ,EAAA,CAAA;QAC7E,IAAMzH,GAAAA,GAAM,IAAI,CAACkH,cAAc,EAAA,CAAA;AAE/B,QAAA,IAAInH,KAAMI,CAAAA,KAAK,KAAKH,GAAAA,CAAIG,KAAK,EAAE;AAC7B,YAAA,IAAI,CAACsH,QAAQ,EAAA,CAAA;AACb,YAAA,IAAM8B,KAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;AAChCD,YAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWiF,CAAAA,QAAQ,EAAE,IAAI,CAACzC,OAAO,CAACjH,KAAAA,CAAMI,KAAK,CAAC,EAAEJ,KAAAA,CAAAA,CAAAA;YAC1DqJ,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAUG,OAAO,IAAI,CAAA,CAAA;YACrB,OAAOA,KAAAA,CAAAA;AACT,SAAA;QAEA,IAAMxD,MAAAA,GAAS,IAAI,CAACiB,OAAO,CAACqB,SAAS,CAACtI,KAAMI,CAAAA,KAAK,EAAEH,GAAAA,CAAIG,KAAK,CAAA,CAAA;AAC1C,QAAA,IAAA,sBAAA,CAAA;AAAlB,QAAA,IAAMuJ,SAAY,GAAA,CAAA,sBAAA,GAAA,IAAI,CAACzC,YAAY,CAACuC,GAAG,CAACzD,MAAAA,CAAAA,KAAAA,IAAAA,GAAtB,sBAAiCvB,GAAAA,UAAAA,CAAWmF,EAAE,CAAA;AAChE,QAAA,IAAMC,KAAQ3D,GAAAA,SAAAA,CAAUE,WAAW,CAACpG,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;AAC3C,QAAA,IAAMuJ,MAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;QAChCD,MAAMzJ,CAAAA,GAAG,CAAC4J,SAAAA,EAAW3D,MAAQ6D,EAAAA,KAAAA,CAAAA,CAAAA;QAC7BR,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAUG,QAAO,IAAI,CAAA,CAAA;QACrB,OAAOA,MAAAA,CAAAA;AACT,KAAA,CAAA;AAnMmB1C,IAAAA,WAAAA,CAGJmB,UAQd,GARD,SAAeA,UAAW6B,CAAAA,OAAe,EAAEC,KAAe,EAAA;AACxD,QAAA,IAAK,IAAI5E,CAAI,GAAA,CAAA,EAAGA,IAAI4E,KAAM1E,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;AACrC,YAAA,IAAI2E,OAAYC,KAAAA,KAAK,CAAC5E,CAAAA,CAAE,EAAE;gBACxB,OAAO,IAAA,CAAA;AACT,aAAA;AACA,YAAA,SAAA;AACF,SAAA;QACA,OAAO,KAAA,CAAA;AACT,KAAA,CAAA;AAXmB2B,IAAAA,aAAAA,CAAAA,WAAAA,EAAAA;;YAqBfkD,GAAAA,EAAAA,SAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAChD,aAAa,CAAA;AAC3B,aAAA;;;YAEItB,GAAAA,EAAAA,QAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACuB,OAAO,CAAA;AACrB,aAAA;;;AA3BmBH,IAAAA,OAAAA,WAAAA,CAAAA;;AAAAA,WAAAA,CACJgB,oBAAuB,GAAA;AAAC,IAAA,GAAA;AAAK,IAAA,IAAA;AAAM,IAAA,IAAA;AAAM,IAAA,IAAA;AAAK,CAAA,CAAA;AAD1ChB,WAAAA,CAEJiB,WAAc,GAAA;AAAC,IAAA,GAAA;AAAK,IAAA,IAAA;AAAK,CAAA;;ACR1C;;IAGO,IAAMkC,KAAN,iBAAA,SAAA,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,KAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,KAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,KAAAA,CAAAA,SAAAA,CAAAA;AACXC,IAAAA,MAAAA,CAAAA,KAMC,GANDA,SAAAA,KAAAA,CAAMxE,MAAc,EAAA;QAClB,IAAI,CAACuB,OAAO,GAAGvB,MAAAA,CAAAA;QACf,IAAI,CAACsB,aAAa,GAAG,CAAA,CAAA;AAIvB,KAAA,CAAA;IAEA,MAACmD,CAAAA,QAKA,GALD,SAACA,QAAAA,GAAAA;;;;yBACQ,CAAC,IAAI,CAAC/C,KAAK,EAAA,EAAA,OAAA;;;;AAChB,oBAAA,OAAA;;AAAM,wBAAA,IAAI,CAACgC,SAAS,EAAA;;;AAApB,oBAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;;;;;AAEF,oBAAA,OAAA;;AAAO/C,wBAAAA,GAAAA;;;;AACT,KAAA,CAAA;IAEA,MAASsB,CAAAA,SAIR,GAJD,SAASA,SAAAA,GAAAA;AACP,QAAA,MAAOrB,WAAWM,OAAO,CAAC,IAAI,CAACU,cAAc,EAAK,CAAA,CAAA;AAChD,YAAA,IAAI,CAACI,QAAQ,EAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;IAEA,MAAS0B,CAAAA,SAmQR,GAnQD,SAASA,SAAAA,GAAAA;AACP,QAAA,IAAI,CAAClB,oBAAoB,EAAA,CAAA;QACzB,IAAI,IAAI,CAACd,KAAK,EAAI,EAAA;YAChB,OAAOf,GAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,IAAIC,WAAWI,OAAO,CAAC,IAAI,CAACY,cAAc,EAAK,CAAA,EAAA;YAC7C,OAAO,IAAI,CAAC8C,SAAS,EAAA,CAAA;AACvB,SAAA;AACA,QAAA,IAAI9D,WAAWC,KAAK,CAAC,IAAI,CAACe,cAAc,EAAK,CAAA,EAAA;YAC3C,OAAO,IAAI,CAAC+C,QAAQ,EAAA,CAAA;AACtB,SAAA;QAEA,IAAMrK,KAAAA,GAAQ,IAAI,CAACsK,YAAY,EAAA,CAAA;AAC/B,QAAA,IAAMd,KAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;QAChC,IAAIzB,OAAAA,CAAAA;QAEJ,OAAQ,IAAI,CAACX,UAAU,EAAA;YACrB,KAAK,GAAA;AACH,gBAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;gBACbM,OAAU,GAAA,IAAI,CAACX,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAIW,YAAY,GAAK,EAAA;AACnB,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb,oBAAA,IAAI,IAAI,CAACL,UAAU,EAAA,KAAO,GAAK,EAAA;AAC7B,wBAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACb8B,wBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW8F,CAAAA,WAAW,EAAE,KAAOvK,EAAAA,KAAAA,CAAAA,CAAAA;AACzC,wBAAA,MAAA;AACF,qBAAA;AACAwJ,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW+F,CAAAA,OAAO,EAAE,IAAMxK,EAAAA,KAAAA,CAAAA,CAAAA;AACpC,oBAAA,MAAA;iBACK,MAAA,IAAIgI,YAAY,GAAK,EAAA;AAC1B,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWgG,CAAAA,KAAK,EAAE,IAAMzK,EAAAA,KAAAA,CAAAA,CAAAA;AAClC,oBAAA,MAAA;AACF,iBAAA;AACAwJ,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWiG,CAAAA,UAAU,EAAE,GAAK1K,EAAAA,KAAAA,CAAAA,CAAAA;AACtC,gBAAA,MAAA;YAEF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;gBACbM,OAAU,GAAA,IAAI,CAACX,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAIW,YAAY,GAAK,EAAA;AACnB,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb,oBAAA,IAAI,IAAI,CAACL,UAAU,EAAA,KAAO,GAAK,EAAA;AAC7B,wBAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACb8B,wBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWkG,CAAAA,YAAY,EAAE,KAAO3K,EAAAA,KAAAA,CAAAA,CAAAA;AAC1C,wBAAA,MAAA;AACF,qBAAA;AACAwJ,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWmG,CAAAA,QAAQ,EAAE,IAAM5K,EAAAA,KAAAA,CAAAA,CAAAA;AACrC,oBAAA,MAAA;iBACK,MAAA,IAAIgI,YAAY,GAAK,EAAA;AAC1B,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWoG,CAAAA,KAAK,EAAE,IAAM7K,EAAAA,KAAAA,CAAAA,CAAAA;AAClC,oBAAA,MAAA;AACF,iBAAA;AACAwJ,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWqG,CAAAA,WAAW,EAAE,GAAK9K,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,gBAAA,MAAA;YAEF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;gBACbM,OAAU,GAAA,IAAI,CAACX,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAIW,YAAY,GAAK,EAAA;AACnB,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWsG,CAAAA,MAAM,EAAE,IAAM/K,EAAAA,KAAAA,CAAAA,CAAAA;AACnC,oBAAA,MAAA;iBACK,MAAA,IAAIgI,YAAY,GAAK,EAAA;AAC1B,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWuG,CAAAA,UAAU,EAAE,IAAMhL,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AACAwJ,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWwG,CAAAA,IAAI,EAAE,GAAKjL,EAAAA,KAAAA,CAAAA,CAAAA;AAChC,gBAAA,MAAA;YAEF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;gBACbM,OAAU,GAAA,IAAI,CAACX,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAIW,YAAY,GAAK,EAAA;AACnB,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWyG,CAAAA,MAAM,EAAE,IAAMlL,EAAAA,KAAAA,CAAAA,CAAAA;AACnC,oBAAA,MAAA;iBACK,MAAA,IAAIgI,YAAY,GAAK,EAAA;AAC1B,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW0G,CAAAA,UAAU,EAAE,IAAMnL,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AACAwJ,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW2G,CAAAA,IAAI,EAAE,GAAKpL,EAAAA,KAAAA,CAAAA,CAAAA;AAChC,gBAAA,MAAA;YAEF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AACb,gBAAA,IAAI,IAAI,CAACL,UAAU,EAAA,KAAO,GAAK,EAAA;AAC7B,oBAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW4G,CAAAA,KAAK,EAAE,IAAMrL,EAAAA,KAAAA,CAAAA,CAAAA;AAClC,oBAAA,MAAA;AACF,iBAAA;AACAwJ,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW6G,CAAAA,KAAK,EAAE,GAAKtL,EAAAA,KAAAA,CAAAA,CAAAA;AACjC,gBAAA,MAAA;YAEF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AACb,gBAAA,IAAI,IAAI,CAACL,UAAU,EAAA,KAAO,GAAK,EAAA;AAC7B,oBAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW8G,CAAAA,KAAK,EAAE,IAAMvL,EAAAA,KAAAA,CAAAA,CAAAA;AAClC,oBAAA,MAAA;AACF,iBAAA;AACAwJ,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW+G,CAAAA,IAAI,EAAE,GAAKxL,EAAAA,KAAAA,CAAAA,CAAAA;AAChC,gBAAA,MAAA;YAEF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;gBACbM,OAAU,GAAA,IAAI,CAACX,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAIW,YAAY,GAAK,EAAA;AACnB,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWgH,CAAAA,MAAM,EAAE,IAAMzL,EAAAA,KAAAA,CAAAA,CAAAA;AACnC,oBAAA,MAAA;iBACK,MAAA,IAAIgI,YAAY,GAAK,EAAA;AAC1B,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWuG,CAAAA,UAAU,EAAE,IAAMhL,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AACAwJ,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWiH,CAAAA,SAAS,EAAE,GAAK1L,EAAAA,KAAAA,CAAAA,CAAAA;AACrC,gBAAA,MAAA;YAEF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;gBACbM,OAAU,GAAA,IAAI,CAACX,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAIW,YAAY,GAAK,EAAA;AACnB,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWkH,CAAAA,KAAK,EAAE,IAAM3L,EAAAA,KAAAA,CAAAA,CAAAA;AAClC,oBAAA,MAAA;iBACK,MAAA,IAAIgI,YAAY,GAAK,EAAA;AAC1B,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWmH,CAAAA,SAAS,EAAE,IAAM5L,EAAAA,KAAAA,CAAAA,CAAAA;AACtC,oBAAA,MAAA;AACF,iBAAA;AACAwJ,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWoH,CAAAA,YAAY,EAAE,GAAK7L,EAAAA,KAAAA,CAAAA,CAAAA;AACxC,gBAAA,MAAA;YAEF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;gBACbM,OAAU,GAAA,IAAI,CAACX,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAIW,YAAY,GAAK,EAAA;AACnB,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWqH,CAAAA,MAAM,EAAE,IAAM9L,EAAAA,KAAAA,CAAAA,CAAAA;AACnC,oBAAA,MAAA;iBACK,MAAA,IAAIgI,YAAY,GAAK,EAAA;AAC1B,oBAAA,IAAI,CAACN,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWsH,CAAAA,UAAU,EAAE,IAAM/L,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AACAwJ,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWuH,CAAAA,KAAK,EAAE,GAAKhM,EAAAA,KAAAA,CAAAA,CAAAA;AACjC,gBAAA,MAAA;YAEF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AACb,gBAAA,IAAI,IAAI,CAACL,UAAU,EAAA,KAAO,GAAK,EAAA;AAC7B,oBAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWwH,CAAAA,UAAU,EAAE,IAAMjM,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AAEAwJ,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWyH,CAAAA,IAAI,EAAE,GAAKlM,EAAAA,KAAAA,CAAAA,CAAAA;AAChC,gBAAA,MAAA;YAEF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AACb,gBAAA,IAAI,IAAI,CAACL,UAAU,EAAA,KAAO,GAAK,EAAA;AAC7B,oBAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AAEb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW0H,CAAAA,UAAU,EAAE,IAAMnM,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AAEAwJ,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW2H,CAAAA,KAAK,EAAE,GAAKpM,EAAAA,KAAAA,CAAAA,CAAAA;AACjC,gBAAA,MAAA;YAEF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AACb,gBAAA,IAAI,IAAI,CAACL,UAAU,EAAA,KAAO,GAAK,EAAA;AAC7B,oBAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AAEb8B,oBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW4H,CAAAA,UAAU,EAAE,IAAMrM,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AAEAwJ,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW6H,CAAAA,OAAO,EAAE,GAAKtM,EAAAA,KAAAA,CAAAA,CAAAA;AACnC,gBAAA,MAAA;YAEF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AAEb8B,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW8H,CAAAA,UAAU,EAAE,GAAKvM,EAAAA,KAAAA,CAAAA,CAAAA;AACtC,gBAAA,MAAA;YACF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AAEb8B,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW+H,CAAAA,WAAW,EAAE,GAAKxM,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,gBAAA,MAAA;YACF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AAEb8B,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWgI,CAAAA,UAAU,EAAE,GAAKzM,EAAAA,KAAAA,CAAAA,CAAAA;AACtC,gBAAA,MAAA;YACF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AAEb8B,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWiI,CAAAA,WAAW,EAAE,GAAK1M,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,gBAAA,MAAA;YACF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AAEb8B,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWkI,CAAAA,YAAY,EAAE,GAAK3M,EAAAA,KAAAA,CAAAA,CAAAA;AACxC,gBAAA,MAAA;YACF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AAEb8B,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWmI,CAAAA,aAAa,EAAE,GAAK5M,EAAAA,KAAAA,CAAAA,CAAAA;AACzC,gBAAA,MAAA;YACF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AACb,gBAAA,IAAIpB,WAAWC,KAAK,CAAC,IAAI,CAACe,cAAc,EAAK,CAAA,EAAA;oBAC3C,OAAO,IAAI,CAACuF,gBAAgB,EAAA,CAAA;AAC9B,iBAAA;AAEArD,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWqI,CAAAA,GAAG,EAAE,GAAK9M,EAAAA,KAAAA,CAAAA,CAAAA;AAC/B,gBAAA,MAAA;YACF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AAEb8B,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWsI,CAAAA,KAAK,EAAE,GAAK/M,EAAAA,KAAAA,CAAAA,CAAAA;AACjC,gBAAA,MAAA;YACF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AAEb8B,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWuI,CAAAA,KAAK,EAAE,GAAKhN,EAAAA,KAAAA,CAAAA,CAAAA;gBACjC,OAAOwJ,KAAAA,CAAAA;YACT,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC9B,QAAQ,EAAA,CAAA;AAEb8B,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWwI,CAAAA,SAAS,EAAE,GAAKjN,EAAAA,KAAAA,CAAAA,CAAAA;AACrC,gBAAA,MAAA;YACF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AAEb8B,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAWyI,CAAAA,KAAK,EAAE,GAAKlN,EAAAA,KAAAA,CAAAA,CAAAA;AACjC,gBAAA,MAAA;YACF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;AAEb8B,gBAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW0I,CAAAA,QAAQ,EAAE,GAAKnN,EAAAA,KAAAA,CAAAA,CAAAA;AACpC,gBAAA,MAAA;YACF,KAAK,GAAA;AACH,gBAAA,IAAI,CAAC0H,QAAQ,EAAA,CAAA;gBACb,OAAO,IAAI,CAAC0F,gBAAgB,EAAA,CAAA;AAE9B,YAAA;gBACE,IAAI,CAAC3E,UAAU,CAAC,IAAI,CAACtB,cAAc,EAAA,EAAI,uBAAC,GAAuB,IAAI,CAACE,UAAU,EAAA,CAAA,CAAA;AAClF,SAAA;QACA,OAAOmC,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQ4D,CAAAA,gBAaP,GAbD,SAAQA,gBAAAA,GAAAA;QACN,IAAMpN,KAAAA,GAAQ,IAAI,CAACsK,YAAY,EAAA,CAAA;AAC/B,QAAA,IAAM+C,SAAmB,EAAE,CAAA;AAC3B,QAAA,MAAO,IAAI,CAAChG,UAAU,EAAA,KAAO,GAAK,CAAA;AAChCgG,YAAAA,MAAAA,CAAOpI,IAAI,CAAC,IAAI,CAACoC,UAAU,EAAA,CAAA,CAAA;AAC3B,YAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACf,SAAA;AACA,QAAA,IAAI,CAACA,QAAQ,EAAA,CAAA;AACb,QAAA,IAAMmC,QAAQ3D,SAAUE,CAAAA,WAAW,CAACpG,KAAO,EAAA,IAAI,CAACsK,YAAY,EAAA,CAAA,CAAA;AAE5D,QAAA,IAAMd,KAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;QAChCD,KAAMzJ,CAAAA,GAAG,CAAC0E,UAAW6I,CAAAA,YAAY,EAAED,MAAOzE,CAAAA,IAAI,CAAC,EAAKiB,CAAAA,EAAAA,KAAAA,CAAAA,CAAAA;QACpD,OAAOL,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQqD,CAAAA,gBAUP,GAVD,SAAQA,gBAAAA,GAAAA;AACN,QAAA,IAAMQ,MAAS,GAAA;AAAC,YAAA,GAAA;AAAI,SAAA,CAAA;AACpB,QAAA,MAAO/G,WAAWC,KAAK,CAAC,IAAI,CAACe,cAAc,EAAK,CAAA,CAAA;AAC9C+F,YAAAA,MAAAA,CAAOpI,IAAI,CAAC,IAAI,CAACoC,UAAU,EAAA,CAAA,CAAA;AAC3B,YAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACf,SAAA;AAEA,QAAA,IAAM8B,KAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;AAChCD,QAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW8I,CAAAA,cAAc,EAAEF,MAAAA,CAAOzE,IAAI,CAAC,EAAK,CAAA,EAAA,IAAI,CAAC0B,YAAY,CAAC,CAAA,CAAA,CAAA,CAAA;QACxE,OAAOd,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQc,YAQP,GARD,SAAQA,YAAajC,CAAAA,MAAAA,qCAA4C;AAA5CA,QAAAA,IAAAA,mBAAAA,MAA2C,GAAA,CAAA,CAAA;AAC9D,QAAA,OAAOnC,UAAUC,cAAc,CAC7B,IAAI,CAAC6D,OAAO,GAAG3B,MAAAA,CAAAA,CAAAA;AAMnB,KAAA,CAAA;IAEA,MAAQ+B,CAAAA,SAmBP,GAnBD,SAAQA,SAAAA,GAAAA;AACN,QAAA,IAAMiD,MAAmB,GAAA;AAAC,YAAA,IAAI,CAAChG,UAAU,EAAA;AAAG,SAAA,CAAA;QAC5C,IAAMrH,KAAAA,GAAQ,IAAI,CAACsK,YAAY,EAAA,CAAA;AAC/B,QAAA,IAAI,CAAC5C,QAAQ,EAAA,CAAA;AACb,QAAA,MAAOpB,WAAWG,QAAQ,CAAC,IAAI,CAACa,cAAc,EAAK,CAAA,CAAA;AACjD+F,YAAAA,MAAAA,CAAOpI,IAAI,CAAC,IAAI,CAACoC,UAAU,EAAA,CAAA,CAAA;AAC3B,YAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACf,SAAA;QACA,IAAM8F,IAAAA,GAAOH,MAAOzE,CAAAA,IAAI,CAAC,EAAA,CAAA,CAAA;QACzB,IAAM6E,EAAAA,GAAKnN,YAAamJ,CAAAA,GAAG,CAAC+D,IAAAA,CAAAA,CAAAA;AAC5B,QAAA,IAAIC,EAAI,EAAA;AACN,YAAA,IAAMjE,KAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;YAChCD,KAAMzJ,CAAAA,GAAG,CAAC0N,EAAAA,EAAID,IAAMxN,EAAAA,KAAAA,CAAAA,CAAAA;YACpB,OAAOwJ,KAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,IAAMA,MAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;AAChCD,QAAAA,MAAAA,CAAMzJ,GAAG,CAAC0E,UAAWmF,CAAAA,EAAE,EAAE4D,IAAMxN,EAAAA,KAAAA,CAAAA,CAAAA;QAC/B,OAAOwJ,MAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQa,CAAAA,QAiCP,GAjCD,SAAQA,QAAAA,GAAAA;AACN,QAAA,IAAMgD,SAAmB,EAAE,CAAA;AAC3B,QAAA,MAAO/G,WAAWC,KAAK,CAAC,IAAI,CAACe,cAAc,EAAK,CAAA,CAAA;AAC9C+F,YAAAA,MAAAA,CAAOpI,IAAI,CAAC,IAAI,CAACoC,UAAU,EAAA,CAAA,CAAA;AAC3B,YAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACf,SAAA;AACA,QAAA,IAAI,IAAI,CAACL,UAAU,EAAA,KAAO,GAAK,EAAA;AAC7BgG,YAAAA,MAAAA,CAAOpI,IAAI,CAAC,IAAI,CAACoC,UAAU,EAAA,CAAA,CAAA;AAC3B,YAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACb,YAAA,MAAOpB,WAAWC,KAAK,CAAC,IAAI,CAACe,cAAc,EAAK,CAAA,CAAA;AAC9C+F,gBAAAA,MAAAA,CAAOpI,IAAI,CAAC,IAAI,CAACoC,UAAU,EAAA,CAAA,CAAA;AAC3B,gBAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACf,aAAA;YACA,IAAI,CAACgG,gBAAgB,CAACL,MAAAA,CAAAA,CAAAA;AAEtB,YAAA,IAAM7D,KAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;AAChCD,YAAAA,KAAAA,CAAMzJ,GAAG,CAAC0E,UAAW8I,CAAAA,cAAc,EAAEF,MAAOzE,CAAAA,IAAI,CAAC,EAAA,CAAA,EAAK,IAAI,CAAC0B,YAAY,CAAC+C,OAAOhI,MAAM,CAAA,CAAA,CAAA;YACrF,OAAOmE,KAAAA,CAAAA;SACF,MAAA;YACL,IAAI,IAAI,CAACnC,UAAU,EAAA,KAAO,OAAO,IAAI,CAACA,UAAU,EAAA,KAAO,GAAK,EAAA;gBAC1D,IAAI,CAACqG,gBAAgB,CAACL,MAAAA,CAAAA,CAAAA;AAEtB,gBAAA,IAAM7D,MAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;AAChCD,gBAAAA,MAAAA,CAAMzJ,GAAG,CAAC0E,UAAW8I,CAAAA,cAAc,EAAEF,MAAOzE,CAAAA,IAAI,CAAC,EAAA,CAAA,EAAK,IAAI,CAAC0B,YAAY,CAAC+C,OAAOhI,MAAM,CAAA,CAAA,CAAA;gBACrF,OAAOmE,MAAAA,CAAAA;aACF,MAAA;gBACL,IAAI,CAACmE,kBAAkB,CAACN,MAAAA,CAAAA,CAAAA;AAExB,gBAAA,IAAM7D,MAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;AAChCD,gBAAAA,MAAAA,CAAMzJ,GAAG,CAAC0E,UAAWmJ,CAAAA,YAAY,EAAEP,MAAOzE,CAAAA,IAAI,CAAC,EAAA,CAAA,EAAK,IAAI,CAAC0B,YAAY,CAAC+C,OAAOhI,MAAM,CAAA,CAAA,CAAA;gBACnF,OAAOmE,MAAAA,CAAAA;AACT,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQkE,gBAmBP,GAnBD,SAAQA,gBAAAA,CAAiBL,MAAgB,EAAA;QACvC,IAAI,IAAI,CAAChG,UAAU,EAAA,KAAO,OAAO,IAAI,CAACA,UAAU,EAAA,KAAO,GAAK,EAAA;AAC1DgG,YAAAA,MAAAA,CAAOpI,IAAI,CAAC,IAAI,CAACoC,UAAU,EAAA,CAAA,CAAA;AAC3B,YAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;YACb,IAAI,IAAI,CAACL,UAAU,EAAA,KAAO,OAAO,IAAI,CAACA,UAAU,EAAA,KAAO,GAAK,EAAA;AAC1DgG,gBAAAA,MAAAA,CAAOpI,IAAI,CAAC,IAAI,CAACoC,UAAU,EAAA,CAAA,CAAA;AAC3B,gBAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACf,aAAA;AACA,YAAA,IAAI,CAACpB,UAAAA,CAAWC,KAAK,CAAC,IAAI,CAACe,cAAc,EACvC,CAAA,EAAA,IAAI,CAACmB,UAAU,CAAC,IAAI,CAACtB,cAAc,EAAI,EAAA,wCAAA,CAAA,CAAA;AACzC,YAAA,MAAOb,WAAWC,KAAK,CAAC,IAAI,CAACe,cAAc,EAAK,CAAA,CAAA;AAC9C+F,gBAAAA,MAAAA,CAAOpI,IAAI,CAAC,IAAI,CAACoC,UAAU,EAAA,CAAA,CAAA;AAC3B,gBAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACf,aAAA;AACF,SAAA;QACA,IAAI,IAAI,CAACL,UAAU,EAAA,KAAO,OAAO,IAAI,CAACA,UAAU,EAAA,KAAO,GAAK,EAAA;AAC1DgG,YAAAA,MAAAA,CAAOpI,IAAI,CAAC,IAAI,CAACoC,UAAU,EAAA,CAAA,CAAA;AAC3B,YAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQiG,kBAKP,GALD,SAAQA,kBAAAA,CAAmBN,MAAgB,EAAA;QACzC,IAAI,IAAI,CAAChG,UAAU,EAAA,KAAO,OAAO,IAAI,CAACA,UAAU,EAAA,KAAO,GAAK,EAAA;AAC1DgG,YAAAA,MAAAA,CAAOpI,IAAI,CAAC,IAAI,CAACoC,UAAU,EAAA,CAAA,CAAA;AAC3B,YAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;AAlZWuC,IAAAA,OAAAA,KAAAA,CAAAA;EAAcnD,WAmZ1B,CAAA;;ACrZM,IAAA,OAAK+G,iBAAAA,SAAAA,OAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,OAAAA,CAAAA;AAIX,CAAA,CAAA,EAAA,CAAA;;ACRM,IAAA,UAAMC,GAAN,SAAMA,UAAAA,GAAAA;AAMXC,IAAAA,IAAAA,CAAAA,gBAAAA,GAAiD,EAAE,CAAA;AACpD,CAAA;;ACPM,IAAMC,cAAN,GAAA,SAAMA,cAET,CAAOnJ,IAAsB,EAC7B,UAAyB,EAClBoJ,cAAuC,EAAA;SAFvCpJ,IAAAA,GAAAA,IAAAA,CAAAA;SACAqJ,UAAAA,GAAAA,UAAAA,CAAAA;SACAD,cAAAA,GAAAA,cAAAA,CAAAA;AAEV,CAAA;;ACJM,IAAA,WAAKE,iBAAAA,SAAAA,WAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,WAAAA,CAAAA;AAIX,CAAA,CAAA,EAAA,CAAA,CAAA;AAUM,IAAA,UAAMC,GAAN,SAAMA,UAET,CAAgBC,KAAa,EACbC,UAAuB,EACvC,OAAuC,EACvC,QAAyC,EACzC,SAA8C,EAAA;SAJ9BD,KAAAA,GAAAA,KAAAA,CAAAA;SACAC,UAAAA,GAAAA,UAAAA,CAAAA;SACAC,OAAAA,GAAAA,OAAAA,CAAAA;SACAC,QAAAA,GAAAA,QAAAA,CAAAA;SACAC,SAAAA,GAAAA,SAAAA,CAAAA;AAEnB,CAAA;;ACvBM,IAAA,QAAA,iBAAA,SAAA,UAAA,EAAA;AAAMC,IAAAA,SAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA,CAAAA;aAAAA,QAGC1I,CAAAA,MAAc,EAAEuI,OAAmC,EAAA;AAC7D,QAAA,IAAM1J,OAAO,IAAImJ,cAAAA,CACfO,OAAQI,CAAAA,SAAS,CAACC,UAAU,CAAC/J,IAAI,EACjC0J,QAAQI,SAAS,CAACC,UAAU,CAACC,aAAa,CAAC7I,MAAM,CAAA,CAAA;AAEnD,QAAA,OAAA,UAAMA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,EAAQmI,WAAYW,CAAAA,EAAE,EAAEP,OAAS1J,EAAAA,IAAAA,CAAAA,IAAAA,IAAAA,CAAAA;;AAR9B6J,IAAAA,OAAAA,QAAAA,CAAAA;EAAiBN,UAU7B,CAAA;;ACXM,IAAA,YAAA,iBAAA,SAAA,UAAA,EAAA;AAAMW,IAAAA,SAAAA,CAAAA,YAAAA,EAAAA,UAAAA,CAAAA,CAAAA;aAAAA,YAGC/I,CAAAA,MAAc,EAAEuI,OAAgC,EAAA;AAC1D,QAAA,OAAA,UAAMvI,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,EAAQmI,WAAY1K,CAAAA,MAAM,EAAE8K,OAAAA,CAAAA,IAAAA,IAAAA,CAAAA;;AAJzBQ,IAAAA,OAAAA,YAAAA,CAAAA;EAAqBX,UAMjC,CAAA;;ACHD;;AAEC,IACM,IAAA,eAAeY,GAAf,SAAeA,eAAAA,GAAAA;AACVC,IAAAA,IAAAA,CAAAA,MAAAA,GAA2B,IAAI1O,GAAAA,EAAAA,CAAAA;AAG1C,CAAA,CAAA;AAEM,IAAA,gBAAA,iBAAA,WAAA;AAAM2O,IAAAA,SAAAA,gBAAAA,GAAAA;AACXC,QAAAA,IAAAA,CAAAA,KAAAA,GAAa,EAAE,CAAA;;AADJD,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;AAOXE,IAAAA,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,CAASC,KAAQ,EAAA;AACf,QAAA,IAAI,CAACF,KAAK,CAAClK,IAAI,CAACoK,KAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;IAEA/J,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;AACE,QAAA,IAAI,CAAC6J,KAAK,CAAC9J,MAAM,GAAG,CAAA,CAAA;AACtB,KAAA,CAAA;IAEAiK,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;QACE,IAAI,CAACH,KAAK,CAACI,GAAG,EAAA,CAAA;AAChB,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAAA,CAAOC,EAAK,EAAA;AACV,QAAA,IAAI,CAACC,MAAM,CAACF,MAAM,CAACC,EAAAA,CAAAA,CAAAA;AACrB,KAAA,CAAA;AArBWP,IAAAA,aAAAA,CAAAA,gBAAAA,EAAAA;;YAGPQ,GAAAA,EAAAA,QAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACP,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC9J,MAAM,GAAG,CAAE,CAAA,CAAA;AAC1C,aAAA;;;AALW6J,IAAAA,OAAAA,gBAAAA,CAAAA;AAsBZ,CAAA,EAAA;;AC5BM,IAAA,iBAAA,iBAAA,SAAA,eAAA,EAAA;AAAMS,IAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,eAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AACX,IAAA,MAAA,CAASH,MAWR,GAXD,SAASA,MAAAA,CAAOC,EAAc,EAAA;AACd,QAAA,IAAA,gBAAA,CAAA;AAAd,QAAA,IAAMG,KAAQ,GAAA,CAAA,gBAAA,GAAA,IAAI,CAACX,MAAM,CAACxF,GAAG,CAACgG,EAAAA,CAAGpB,KAAK,CAAA,KAAA,IAAA,GAAxB,mBAA6B,EAAE,CAAA;AAC7C,QAAA,IAAK,IAAIlJ,CAAI,GAAA,CAAA,EAAGA,IAAIyK,KAAMvK,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;AACrC,YAAA,IAAI,IAAI,CAAC0K,YAAY,CAACD,KAAK,CAACzK,CAAE,CAAA,EAAEsK,EAAGnB,CAAAA,UAAU,EAAEmB,EAAGhB,CAAAA,SAAS,EAAEgB,EAAAA,CAAGlB,OAAO,CAAG,EAAA;AACxE1I,gBAAAA,MAAAA,CAAOiK,IAAI,CAAC,iBAAmBL,EAAAA,EAAAA,CAAGpB,KAAK,CAAA,CAAA;gBACvCuB,KAAK,CAACzK,EAAE,GAAGsK,EAAAA,CAAAA;AACX,gBAAA,OAAA;AACF,aAAA;AACF,SAAA;AACAG,QAAAA,KAAAA,CAAM3K,IAAI,CAACwK,EAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAACR,MAAM,CAAClP,GAAG,CAAC0P,EAAAA,CAAGpB,KAAK,EAAEuB,KAAAA,CAAAA,CAAAA;AAC5B,KAAA,CAAA;IAEAG,MAAAA,CAAAA,MAmBC,GAnBDA,SAAAA,MACE1B,CAAAA,KAAa,EACbC,UAAa,EACbG,SAA8B,EAC9BF,OAAoC,EAAA;AAQpC,QAAA,IAAMqB,QAAQ,IAAI,CAACX,MAAM,CAACxF,GAAG,CAAC4E,KAAAA,CAAAA,CAAAA;AAC9B,QAAA,IAAIuB,KAAO,EAAA;YACT,IAAK,IAAIvK,SAASuK,KAAMvK,CAAAA,MAAM,EAAEF,CAAI,GAAA,CAAA,EAAGA,CAAIE,GAAAA,MAAAA,EAAQF,CAAK,EAAA,CAAA;gBACtD,IAAM6K,IAAAA,GAAOJ,KAAK,CAACzK,CAAE,CAAA,CAAA;gBACrB,IAAI,IAAI,CAAC0K,YAAY,CAACG,MAAM1B,UAAYG,EAAAA,SAAAA,EAAWF,UAAU,OAAYyB,IAAAA,CAAAA;AAC3E,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,eAGC,GAHDA,SAAAA,eAAAA,CAAgBC,OAAe,EAAA;AACb,QAAA,IAAA,gBAAA,CAAA;QAAhB,IAAMC,OAAAA,GAAU,CAAA,gBAAA,GAAA,IAAI,CAAClB,MAAM,CAACxF,GAAG,CAACyG,OAAhB,CAAA,KAAA,IAAA,GAAA,gBAAA,GAA4B,EAAE,CAAA;QAC9C,OAAOC,OAAAA,CAAQC,MAAM,CAAC,SAACJ,IAAAA,EAAAA;mBAASA,IAAK1B,CAAAA,UAAU,KAAKH,WAAAA,CAAYW,EAAE,CAAA;;AACpE,KAAA,CAAA;IAEA,MAAQe,CAAAA,YAuBP,GAvBD,SAAQA,YACNG,CAAAA,IAAgB,EAChB1B,UAAuB,EACvBG,SAA8B,EAC9BF,OAAuB,EAAA;AAEvB,QAAA,IAAIyB,IAAK1B,CAAAA,UAAU,KAAKA,UAAAA,EAAY,OAAO,KAAA,CAAA;AAC3C,QAAA,IAAI0B,IAAK1B,CAAAA,UAAU,KAAKH,WAAAA,CAAYW,EAAE,EAAE;AACtC,YAAA,IAAI,CAACP,OAAAA,IAAW,CAACE,SAAAA,EAAW,OAAO,IAAA,CAAA;AAEnC,YAAA,IAAM4B,SAAS,IAA6BL,CAAKzB,OAAO,CAAEI,SAAS,CAAC2B,QAAQ,CAAA;AAC5E,YAAA,IAAMC,iBAAiB9B,SAAAA,IAAAA,IAAAA,GAAAA,SAAAA,GAAa,OAAsCE,CAAAA,SAAS,CAAC2B,QAAQ,CAAA;YAC5F,IAAMjL,MAAAA,GAASgL,OAAOhL,MAAM,CAAA;AAC5B,YAAA,IAAIA,MAAWkL,KAAAA,cAAAA,CAAelL,MAAM,EAAE,OAAO,KAAA,CAAA;AAC7C,YAAA,IAAK,IAAIF,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIE,QAAQF,CAAK,EAAA,CAAA;gBAC/B,IAAMqL,EAAAA,GAAKH,MAAM,CAAClL,CAAAA,CAAE,EAClBsL,EAAKF,GAAAA,cAAc,CAACpL,CAAE,CAAA,CAAA;gBACxB,IAAIqL,EAAAA,KAAO9L,OAAW+L,IAAAA,EAAAA,KAAO/L,OAAS,EAAA,SAAA;gBACtC,IAAI8L,EAAAA,KAAOC,IAAI,OAAO,KAAA,CAAA;AACxB,aAAA;YACA,OAAO,IAAA,CAAA;AACT,SAAA;QACA,OAAO,IAAA,CAAA;AACT,KAAA,CAAA;AA/DWd,IAAAA,OAAAA,iBAAAA,CAAAA;EAA0BX,eAgEtC,CAAA;;ACrEM,IAAA,SAAA,iBAAA,SAAA,UAAA,EAAA;AAAM0B,IAAAA,SAAAA,CAAAA,SAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,SAAAA,CAUTrC,KAAa,EACbG,QAAwB,EACxBmC,gBAAyB,EACzBC,OAI+B,EAAA;;AAE/B,QAAA,KAAA,GAAA,UAAA,CAAA,IAAA,CAAA,IAAA,EAAMvC,KAAOF,EAAAA,WAAAA,CAAY0C,GAAG,EAAED,OAASpC,EAAAA,QAAAA,CAAAA,IAAAA,IAAAA,CAAAA;AACvC,QAAA,KAAA,CAAKmC,gBAAgB,GAAGA,gBAAAA,CAAAA;;;AApBfD,IAAAA,OAAAA,SAAAA,CAAAA;EAAkBtC,UAsB9B,CAAA;;ACHc,IAAA,gBAAA,iBAAA,WAAA;AAAM0C,IAAAA,SAAAA,gBAAAA,GAAAA;AACnBC,QAAAA,IAAAA,CAAAA,aAAAA,GAA4B,EAAE,CAAA;aAC9BC,UAA+BC,GAAAA,SAAAA,CAAAA;AAC/BC,QAAAA,IAAAA,CAAAA,gBAAAA,GAAoE,IAAIhC,gBAAAA,EAAAA,CAAAA;AACxEiC,QAAAA,IAAAA,CAAAA,eAAAA,GAGI,EAAC,CAAA;AACGC,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,IAAItD,UAAAA,EAAAA,CAAAA;AAClBuD,QAAAA,IAAAA,CAAAA,qBAAAA,GAA2E,IAAI9Q,GAAAA,EAAAA,CAAAA;AAWrF,QAAA,IAAI,CAAC6O,QAAQ,EAAA,CAAA;;AApBI0B,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;IAuBnB5G,MAAAA,CAAAA,KAQC,GARDA,SAAAA,KAAAA,GAAAA;AACE,QAAA,IAAI,CAAC6G,aAAa,CAAC1L,MAAM,GAAG,CAAA,CAAA;QAC5B,IAAI,CAAC+L,WAAW,GAAG,IAAItD,UAAAA,EAAAA,CAAAA;QACvB,IAAI,CAACoD,gBAAgB,CAAC5L,KAAK,EAAA,CAAA;AAC3B,QAAA,IAAI,CAAC8J,QAAQ,EAAA,CAAA;AAIf,KAAA,CAAA;IAEAA,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,QAAAA,GAAAA;AACE,QAAA,IAAMC,QAAQ,IAAIM,iBAAAA,EAAAA,CAAAA;AAClB,QAAA,IAAI,CAACuB,gBAAgB,CAAC9B,QAAQ,CAACC,KAAAA,CAAAA,CAAAA;AACjC,KAAA,CAAA;IAEAC,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAAC4B,gBAAgB,CAAC5B,SAAS,EAAA,CAAA;AACxC,KAAA,CAAA;AAEAgC,IAAAA,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAmBC,CAAAA,GAAW,EAAEC,IAAqB,EAAA;AACnD,QAAA,IAAI,CAACH,qBAAqB,CAACtR,GAAG,CAACwR,GAAKC,EAAAA,IAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAAA,CAAmBF,GAAW,EAAA;AAC5B,QAAA,OAAO,IAAI,CAACF,qBAAqB,CAAC5H,GAAG,CAAC8H,GAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;IAEAG,MAAAA,CAAAA,cAYC,GAZDA,SAAAA,cACErD,CAAAA,KAAa,EACbC,UAAuB,EACvBG,SAAoC,EACpCF,OAAoC,EAAA;AAEpC,QAAA,IAAMY,KAAQ,GAAA,IAAI,CAAC+B,gBAAgB,CAAC/B,KAAK,CAAA;QACzC,IAAK,IAAI9J,MAAS8J,GAAAA,KAAAA,CAAM9J,MAAM,EAAEF,IAAIE,MAAS,GAAA,CAAA,EAAGF,CAAK,IAAA,CAAA,EAAGA,CAAK,EAAA,CAAA;YAC3D,IAAMwM,WAAAA,GAAcxC,KAAK,CAAChK,CAAE,CAAA,CAAA;AAC5B,YAAA,IAAMyM,MAAMD,WAAY5B,CAAAA,MAAM,CAAC1B,KAAAA,EAAOC,YAAYG,SAAWF,EAAAA,OAAAA,CAAAA,CAAAA;AAC7D,YAAA,IAAIqD,KAAK,OAAOA,GAAAA,CAAAA;AAClB,SAAA;AACF,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,WAMC,GANDA,SAAAA,WAAYC,CAAAA,GAAgB,EAAEtM,OAAe,EAAA;AAI3CK,QAAAA,MAAAA,CAAOC,KAAK,CAACN,OAAAA,CAAAA,CAAAA;AAEf,KAAA,CAAA;AAtEmBsL,IAAAA,aAAAA,CAAAA,gBAAAA,EAAAA;;YAefiB,GAAAA,EAAAA,YAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACX,WAAW,CAAA;AACzB,aAAA;;;AAjBmBN,IAAAA,OAAAA,gBAAAA,CAAAA;;;ACnBd,IAAA,YAAKkB,iBAAAA,SAAAA,YAAAA,EAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAAA,IAAAA,OAAAA,YAAAA,CAAAA;AA0GX,CAAA,CAAA,EAAA,CAAA;;AC5Gc,IAAA,UAAA,GAAA,SAAMC,UAQPC,CAAAA,IAAkB,EAAEC,UAA2B,EAAA;IACzD,IAAI,CAACD,IAAI,GAAGA,IAAAA,CAAAA;IACZ,IAAI,CAACC,UAAU,GAAGA,UAAAA,CAAAA;AAClB,IAAA,IAAI,CAACC,EAAE,GAXUH,WAWII,GAAG,EAAA,CAAA;IAXPJ,UAYNnN,CAAAA,IAAI,CAAC/E,GAAG,CAAC,IAAI,CAACqS,EAAE,EAAE,IAAI,CAAA,CAAA;;AAZhBH,UAAAA,CACJI,GAAM,GAAA,CAAA,CAAA;AADFJ,UAAAA,CAEZnN,OAAgC,IAAIvE,GAAAA,EAAAA;;ACAtC,IAAA,OAAA,iBAAA,WAAA;aAAM+R,OAYCtS,CAAAA,KAAmB,EAAEuS,WAAyB,EAAA;QACxD,IAAI,CAACC,WAAW,GAAGxS,KAAAA,CAAAA;AACnBuS,QAAAA,WAAAA,CAAYE,OAAO,CAAC,IAAIR,UAAWD,CAAAA,YAAAA,CAAaU,KAAK,EAAE;AAAC1S,YAAAA,KAAAA;AAAM,SAAA,CAAA,CAAA,CAAA;QAC9D,IAAI,CAACuS,WAAW,GAAGA,WAAAA,CAAAA;;AAfVD,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AAkBXK,IAAAA,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAkBC,WAAyB,EAAA;AACzC,QAAA,OAAO,IAAI,CAACL,WAAW,CAACnC,MAAM,CAAC,SAACJ,IAAAA,EAAAA;AAASA,YAAAA,OAAAA,IAAAA,CAAKkC,IAAI,KAAKU,WAAAA,CAAAA;;AACzD,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAAA,CAAaC,EAAgB,EAAA;AAC3B,QAAA,OAAO,IAAI,CAACP,WAAW,CAACQ,IAAI,CAAC,SAAC/C,IAAAA,EAAAA;mBAASA,IAAKkC,CAAAA,IAAI,KAAKY,EAAM9C,IAAAA,IAAAA,CAAKmC,UAAU,CAAC,CAAA,CAAE,KAAK1N,UAAAA,CAAWuO,OAAO,CAAA;;AACtG,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAkB1B,GAAW,EAAA;AAC3B,QAAA,OAAOU,UAAWnN,CAAAA,IAAI,CAAC2E,GAAG,CAAC8H,GAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AA5BWe,IAAAA,OAAAA,CAKJY,MAKN,GALD,SAAOA,MAAOlT,CAAAA,KAAmB,EAAEuS,WAA8B,EAAA;AAC/D,QAAA,IAAMY,GAAMZ,GAAAA,WAAAA,CAAYa,GAAG,CAAC,SAACC,GAAAA,EAAAA;YAC3B,OAAO,IAAIpB,WAAyBoB,GAAG,CAAC,EAAE,EAAEA,GAAAA,CAAIC,KAAK,CAAC,CAAA,CAAA,CAAA,CAAA;AACxD,SAAA,CAAA,CAAA;QACA,OAAO,IATEhB,QASUtS,KAAOmT,EAAAA,GAAAA,CAAAA,CAAAA;AAC5B,KAAA,CAAA;AAVWb,IAAAA,OAAAA,OAAAA,CAAAA;AA6BZ,CAAA,EAAA;;AC1BM,IAAMiB,UAAN,GAAA,SAAMA,UAET,CAAO1O,IAAsB,EAC7B,UAAyB,EAClBoJ,cAAuC,EAAA;SAFvCpJ,IAAAA,GAAAA,IAAAA,CAAAA;SACAqJ,UAAAA,GAAAA,UAAAA,CAAAA;SACAD,cAAAA,GAAAA,cAAAA,CAAAA;AAEV,CAAA,CAAA;AAEM,IAAMuF,UAAN,GAAA,SAAMA,UAET,CAAOC,QAAoB,EAC3B,KAAuB,EAChBC,QAAiB,EAAA;SAFjBD,QAAAA,GAAAA,QAAAA,CAAAA;SACApF,KAAAA,GAAAA,KAAAA,CAAAA;SACAqF,QAAAA,GAAAA,QAAAA,CAAAA;AAEV,CAAA;;ACND,SAASC,iBAAiBf,WAAyB,EAAA;AACjD,IAAA,OAAO,SAA0CgB,OAAU,EAAA;QACzDA,OAAQC,CAAAA,SAAS,CAACC,EAAE,GAAGlB,WAAAA,CAAAA;AACjBgB,QAAAA,OAAAA,CAAS9O,IAAI,GAAGH,cAAeC,CAAAA,gBAAgB,CAACgP,OAAAA,CAAAA,CAAAA;AACxD,KAAA,CAAA;AACF,CAAA;AAEO,IAAA,QAAA,iBAAA,WAAA;AAAeG,IAAAA,SAAAA,QAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,QAAAA,CAAAA,SAAAA,CAAAA;AAgBpBhU,IAAAA,MAAAA,CAAAA,GAIC,GAJDA,SAAAA,GAAI+R,CAAAA,GAAgB,EAAEkC,QAAqB,EAAA;QACzC,IAAI,CAACC,SAAS,GAAGnC,GAAAA,CAAAA;QACjB,IAAI,CAACoC,SAAS,GAAGF,QAAAA,CAAAA;AACjB,QAAA,IAAI,CAACG,IAAI,EAAA,CAAA;AACX,KAAA,CAAA;IAEAA,MAAAA,CAAAA,IAAS,GAATA,SAAAA,IAAQ,GAAA,EAAA,CAAA;IAERjU,MAAAA,CAAAA,OAAkB,GAAlBA,SAAAA,OAAiB,GAAA,EAAA,CAAA;;AAGjBkU,IAAAA,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,CAAQC,OAAuB,EAAA;AAC7B,QAAA,OAAOA,OAAQC,CAAAA,cAAc,CAAC,IAAI,CAACN,QAAQ,CAAA,CAAA;AAC7C,KAAA,CAAA;AAEA;;AAEC,MACDO,OAAAA,eAAwC,GAAxCA,SAAAA,eAAAA,CAAgBC,EAAoB,EAAG,EAAA,CAAA;AAlCnBT,IAAAA,aAAAA,CAAAA,QAAAA,EAAAA;;YAQhBC,GAAAA,EAAAA,UAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACE,SAAS,CAAA;AACvB,aAAA;;;YAEIvO,GAAAA,EAAAA,UAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACsO,SAAS,CAAA;AACvB,aAAA;;;AAdoBF,IAAAA,OAAAA,QAAAA,CAAAA;AAmCrB,CAAA,EAAA,CAAA;AAEgBH,CAAAA,SAAAA,OAAAA,EAAAA;AAKR,IAAA,SAASa,aAAaC,IAAe,EAAA;QAC1C,IAAQ,WAAJA,CAAAA,IAAAA,EAAgBC,SAAO,CAAA,EAAA;YACzB,OAAOD,IAAAA,CAAAA;AACT,SAAA;QACA,MAAM,WAAA,CAAA;AACR,KAAA;YALgBD,YAAAA,GAAAA,YAAAA,CAAAA;AAOT,IAAA,SAAShL,IAAI3E,IAAiB,EAAE0P,EAAoB,EAAE1C,GAAgB,EAAEkC,QAAqB,EAAA;QAClG,IAAMU,IAAAA,GAAO5P,KAAK2E,GAAG,EAAA,CAAA;QACrBiL,IAAK3U,CAAAA,GAAG,CAAC+R,GAAKkC,EAAAA,QAAAA,CAAAA,CAAAA;AACdU,QAAAA,IAAAA,CAAKH,eAAe,CAACC,EAAAA,CAAAA,CAAAA;QACrBA,EAAGzD,CAAAA,aAAa,CAAC9L,IAAI,CAACyP,IAAAA,CAAAA,CAAAA;AACxB,KAAA;YALgBjL,GAAAA,GAAAA,GAAAA,CAAAA;AAQT,IAAA,IAAA,WAAA,iBAAA,SAAA,QAAA,EAAA;AAAMmL,QAAAA,SAAAA,CAAAA,WAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,WAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,WAAAA,CAAAA;AAAoBb,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAApBa,WAAAA,GAAAA,WAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,OAAAA,CAAAA;;AAIxB,IAAA,IAAA,UAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,UAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,UAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAASP,eAER,GAFD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3CA,YAAAA,EAAAA,CAAGpF,QAAQ,EAAA,CAAA;AACb,SAAA,CAAA;AAHW0F,QAAAA,OAAAA,UAAAA,CAAAA;AAAmBf,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAnBe,UAAAA,GAAAA,UAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,WAAAA,CAAAA;;AAQxB,IAAA,IAAA,aAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,aAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAAST,eAER,GAFD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3CA,YAAAA,EAAAA,CAAGlF,SAAS,EAAA,CAAA;AACd,SAAA,CAAA;AAHW0F,QAAAA,OAAAA,aAAAA,CAAAA;AAAsBjB,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAtBiB,aAAAA,GAAAA,aAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,eAAAA,CAAAA;;AAQxB,IAAA,IAAA,aAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,aAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAASf,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACgB,qBAAqB,GAAG,KAAA,CAAA;AAC/B,SAAA,CAAA;AAEA,QAAA,MAAA,CAASZ,eAIR,GAJD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAIZ,OAAQa,CAAAA,YAAY,CAAC,IAAI,CAACT,QAAS,CAAC,CAAA,CAAE,CAAEnP,CAAAA,IAAI,KAAKxE,QAAAA,CAASkB,MAAM,EAAE;AACpEiT,gBAAAA,EAAAA,CAAGrD,eAAe,CAACiE,eAAe,GAAG,IAAI,CAAA;AAC3C,aAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAA,CAAShB,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAOA,OAAAA,CAAQgB,kBAAkB,CAAC,IAAI,CAAA,CAAA;AACxC,SAAA,CAAA;AAfWH,QAAAA,OAAAA,aAAAA,CAAAA;AAAsBnB,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAtBmB,aAAAA,GAAAA,aAAAA,CAAAA;;AADkBI,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,cAAAA,CAAAA;;AA0CxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,QAAA,EAAA;AAAeC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;QASpB,MAASpB,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACqB,KAAK,GAAGvE,SAAAA,CAAAA;AACf,SAAA,CAAA;AAXoBsE,QAAAA,aAAAA,CAAAA,iBAAAA,EAAAA;;gBAEhB1Q,GAAAA,EAAAA,MAAAA;AAGJ,gBAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACS,oBAAA,IAAA,WAAA,CAAA;AAAP,oBAAA,OAAO,CAAA,WAAA,GAAA,IAAI,CAAC2Q,KAAK,YAAV,WAAc9Q,GAAAA,OAAAA,CAAAA;AACvB,iBAAA;AALA,gBAAA,GAAA,EAAA,SAAA,GAAA,CAAS+Q,CAA+B,EAAA;oBACtC,IAAI,CAACD,KAAK,GAAGC,CAAAA,CAAAA;AACf,iBAAA;;;AAJoBF,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0BxB,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1BwB,iBAAAA,GAAAA,iBAAAA,CAAAA;AAoCf,IAAA,IAAA,iBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMG,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAASvB,CAAAA,IAGR,GAHD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACtF,aAAa,GAAGoC,SAAAA,CAAAA;YACrB,IAAI,CAAChD,cAAc,GAAGgD,SAAAA,CAAAA;AACxB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASsD,eA8BR,GA9BD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMR,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAM2B,WAAAA,GAAc3B,SAAS3O,MAAM,CAAA;YACnC,IAAMuQ,SAAAA,GAAY5B,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC7B,IAAMnF,aAAAA,GAAgB+G,UAAU/G,aAAa,CAAA;YAC7C,IAAI,CAACA,aAAa,GAAGA,aAAAA,CAAAA;AACrB,YAAA,IAAI,CAACZ,cAAc,GAAGY,aAAAA,CAAcZ,cAAc,CAAA;YAElD,IAAMmE,EAAAA,GAAK4B,QAAQ,CAAC,CAAE,CAAA,CAAA;YAEtB,IAAIvE,EAAAA,CAAAA;YACJ,IAAIkG,WAAAA,KAAgB,CAAKA,IAAAA,WAAAA,KAAgB,CAAG,EAAA;gBAC1C,IAAMrH,UAAAA,GAAa,IAAIiF,UAAAA,CAAWqC,SAAU/Q,CAAAA,IAAI,EAAEgK,aAAAA,CAAc7I,MAAM,EAAE,IAAI,CAACiI,cAAc,CAAA,CAAA;gBAC3F,IAAM4H,WAAAA,GAAc7B,QAAQ,CAAC,CAAE,CAAA,CAAA;AAE/BvE,gBAAAA,EAAAA,GAAK,IAAIiB,SAAU0B,CAAAA,EAAAA,CAAGpM,MAAM,EAAEsI,YAAY,KAAOuH,EAAAA,WAAAA,CAAAA,CAAAA;aAC5C,MAAA;gBACL,IAAM5H,cAAAA,GAAiB+F,QAAQ,CAAC,CAAE,CAAA,CAAA;gBAMlC,IAAI,CAAC/F,cAAc,GAAGA,cAAAA,CAAAA;gBACtB,IAAMK,WAAAA,GAAa,IAAIiF,UAAAA,CAAWqC,SAAU/Q,CAAAA,IAAI,EAAEgK,aAAAA,CAAc7I,MAAM,EAAE,IAAI,CAACiI,cAAc,CAAA,CAAA;gBAC3F,IAAM4H,YAAAA,GAAc7B,QAAQ,CAAC,CAAE,CAAA,CAAA;AAE/BvE,gBAAAA,EAAAA,GAAK,IAAIiB,SAAU0B,CAAAA,EAAAA,CAAGpM,MAAM,EAAEsI,aAAY,KAAOuH,EAAAA,YAAAA,CAAAA,CAAAA;AACnD,aAAA;YACArB,EAAGtD,CAAAA,gBAAgB,CAAC1B,MAAM,CAACC,EAAAA,CAAAA,CAAAA;AAC7B,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2E,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAOA,OAAAA,CAAQyB,sBAAsB,CAAC,IAAI,CAAA,CAAA;AAC5C,SAAA,CAAA;AA3CWJ,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0B3B,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1B2B,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBK,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,kBAAAA,CAAAA;;AAgDxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAIX,QAAA,MAAA,CAASzB,eAIR,GAJD,SAASA,eAAAA,CAAgB0B,CAAmB,EAAA;YAC1C,IAAMjC,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAI,CAACnF,aAAa,GAAImF,QAAAA,CAAS3O,MAAM,KAAK,CAAI2O,GAAAA,QAAQ,CAAC,CAAA,CAAE,GAAGA,QAAQ,CAAC,CAAE,CAAA,CAAA;AACvE,YAAA,IAAI,CAACnP,IAAI,GAAG,IAAI,CAACgK,aAAa,CAAChK,IAAI,CAAA;AACrC,SAAA,CAAA;AARWmR,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2BjC,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3BiC,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,oBAAAA,CAAAA;;AAaxB,IAAA,IAAA,aAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,aAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,aAAAA,CAAAA;AAAsBpC,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAtBoC,aAAAA,GAAAA,aAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,cAAAA,CAAAA;;AAIxB,IAAA,IAAA,mBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,mBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AAIX,QAAA,MAAA,CAAS9B,eASR,GATD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAM8B,KAAQ,GAAA,IAAI,CAACtC,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC9B,IAAS,WAALsC,CAAAA,KAAAA,EAAiB3B,SAAO,CAAA,EAAA;AAC1B,gBAAA,IAAI,CAAC4B,SAAS,GAAGD,KAAAA,CAAMzR,IAAI,CAAA;AAC3B,gBAAA,IAAI,CAACmB,MAAM,GAAGsQ,KAAAA,CAAMtQ,MAAM,CAAA;aACrB,MAAA;AACL,gBAAA,IAAI,CAACuQ,SAAS,GAAwBD,MAAOC,SAAS,CAAA;AACtD,gBAAA,IAAI,CAACvQ,MAAM,GAAwBsQ,MAAOtQ,MAAM,CAAA;AAClD,aAAA;AACF,SAAA,CAAA;AAbWqQ,QAAAA,OAAAA,mBAAAA,CAAAA;AAA4BtC,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA5BsC,mBAAAA,GAAAA,mBAAAA,CAAAA;;AADkBG,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,qBAAAA,CAAAA;;AA2CxB,IAAA,IAAA,aAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,aAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;QAMX,MAAStC,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACuC,SAAS,GAAGzF,SAAAA,CAAAA;AACnB,SAAA,CAAA;AAKA,QAAA,MAAA,CAASsD,eAOR,GAPD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAKzBR,YAAAA,IAAAA,UAAAA,CAAAA;YAJlB,IAAMA,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAM2C,UAAAA,GAAa3C,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC9B,YAAA,IAAI,CAACnP,IAAI,GAAG8R,UAAAA,CAAW9R,IAAI,CAAA;AAC3B,YAAA,IAAI,CAACmB,MAAM,GAAG2Q,UAAAA,CAAW3Q,MAAM,CAAA;YAC/B,IAAI,CAAC0Q,SAAS,GAAI1C,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAAA,UAAAA,GAAAA,QAAU,CAAC,CAAE,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAd,UAACA,CAAkC4C,IAAI,CAAA;AACxD,YAAA,IAAI,CAACC,QAAQ,GAAG,OAAO,IAAI,CAAChS,IAAI,KAAK,QAAA,CAAA;AACvC,SAAA,CAAA;AApBW4R,QAAAA,aAAAA,CAAAA,aAAAA,EAAAA;;gBASPxI,GAAAA,EAAAA,gBAAAA;AAAJ,gBAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,oBAAA,OAAO,IAAI,CAAC+F,QAAQ,CAAC,CAAE,CAAA,CAAA;AACzB,iBAAA;;;AAXWyC,QAAAA,OAAAA,aAAAA,CAAAA;AAAsB1C,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAtB0C,aAAAA,GAAAA,aAAAA,CAAAA;;AADkBK,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,cAAAA,CAAAA;;AAyBxB,IAAA,IAAA,cAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,cAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,cAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAEX,QAAA,MAAA,CAASxC,eAGR,GAHD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAMwC,mBAAsB,GAAA,IAAI,CAAChD,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC5C,YAAA,IAAI,CAAC4C,IAAI,GAAGI,mBAAAA,CAAoBC,KAAK,CAAA;AACvC,SAAA,CAAA;AALWF,QAAAA,OAAAA,cAAAA,CAAAA;AAAuBhD,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAvBgD,cAAAA,GAAAA,cAAAA,CAAAA;;AADkBG,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,eAAAA,CAAAA;;AAUxB,IAAA,IAAA,iCAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iCAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iCAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,iCAAAA,CAAAA,SAAAA,CAAAA;AAIX,QAAA,MAAA,CAAS5C,eAsBR,GAtBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAM4C,QAAW,GAAA,IAAI,CAACpD,QAAQ,CAAC,CAAE,CAAA,CAAA;AACjC,YAAA,IAAI,CAAChO,MAAM,GAAGoR,QAAAA,CAASpR,MAAM,CAAA;AAC7B,YAAA,OAAQoR,SAASvS,IAAI;AACnB,gBAAA,KAAKJ,WAAWwG,IAAI;AAClB,oBAAA,IAAI,CAACoM,OAAO,GAAG,SAACC,CAAGC,EAAAA,CAAAA,EAAAA;+BAAMD,CAAIC,GAAAA,CAAAA,CAAAA;;AAC7B,oBAAA,MAAA;AACF,gBAAA,KAAK9S,WAAW2G,IAAI;AAClB,oBAAA,IAAI,CAACiM,OAAO,GAAG,SAACC,CAAGC,EAAAA,CAAAA,EAAAA;+BAAMD,CAAIC,GAAAA,CAAAA,CAAAA;;AAC7B,oBAAA,MAAA;AACF,gBAAA,KAAK9S,WAAWyH,IAAI;AAClB,oBAAA,IAAI,CAACmL,OAAO,GAAG,SAACC,CAAGC,EAAAA,CAAAA,EAAAA;+BAAMD,CAAIC,GAAAA,CAAAA,CAAAA;;AAC7B,oBAAA,MAAA;AACF,gBAAA,KAAK9S,WAAW2H,KAAK;AACnB,oBAAA,IAAI,CAACiL,OAAO,GAAG,SAACC,CAAGC,EAAAA,CAAAA,EAAAA;+BAAMD,CAAIC,GAAAA,CAAAA,CAAAA;;AAC7B,oBAAA,MAAA;AACF,gBAAA,KAAK9S,WAAW6H,OAAO;AACrB,oBAAA,IAAI,CAAC+K,OAAO,GAAG,SAACC,CAAGC,EAAAA,CAAAA,EAAAA;+BAAMD,CAAIC,GAAAA,CAAAA,CAAAA;;AAC7B,oBAAA,MAAA;AACF,gBAAA;oBACE/C,EAAG3C,CAAAA,WAAW,CAACuF,QAASzR,CAAAA,QAAQ,EAAE,2BAAC,GAA2ByR,SAASpR,MAAM,CAAA,CAAA;AACjF,aAAA;AACF,SAAA,CAAA;AA1BWmR,QAAAA,OAAAA,iCAAAA,CAAAA;AAA0CpD,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1CoD,iCAAAA,GAAAA,iCAAAA,CAAAA;;AADkBK,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,oCAAAA,CAAAA;;AA+BxB,IAAA,IAAA,yBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,yBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,yBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,yBAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAAStD,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAAC8C,KAAK,GAAGhG,SAAAA,CAAAA;AACf,SAAA,CAAA;AAEA,QAAA,MAAA,CAASsD,eAmBR,GAnBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAI,IAAI,CAACR,QAAQ,CAAC3O,MAAM,KAAK,CAAG,EAAA;AAC9B,gBAAA,IAAMiR,KAAQ,GAAA,IAAI,CAACtC,QAAQ,CAAC,CAAE,CAAA,CAAA;gBAC9B,IAAS,WAALsC,CAAAA,KAAAA,EAAiB3B,SAAO,CAAA,EAAA;AAC1B,oBAAA,IAAI,CAACsC,KAAK,GAAGS,MAAAA,CAAOpB,MAAMtQ,MAAM,CAAA,CAAA;AAClC,iBAAA;AAaF,aAAA;AACF,SAAA,CAAA;AA1BWyR,QAAAA,OAAAA,yBAAAA,CAAAA;AAAkC1D,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAlC0D,yBAAAA,GAAAA,yBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,2BAAAA,CAAAA;;AA+BxB,IAAA,IAAA,qBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,qBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,qBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAASzD,CAAAA,IASR,GATD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAM0D,EAAK,GAAA,IAAI,CAAC7D,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC3B,IAAM,WAAF6D,CAAAA,EAAAA,EAAclD,SAAO,CAAA,EAAA;AACvB,gBAAA,IAAI,CAAC9P,IAAI,GAAGgT,EAAAA,CAAG7R,MAAM,CAAA;AACrB,gBAAA,IAAI,CAACA,MAAM,GAAG6R,EAAAA,CAAG7R,MAAM,CAAA;aAClB,MAAA;AACL,gBAAA,IAAI,CAACnB,IAAI,GAAIgT,GAAuChT,IAAI,CAAA;AACxD,gBAAA,IAAI,CAACmB,MAAM,GAAI6R,GAAuC7R,MAAM,CAAA;AAC9D,aAAA;AACF,SAAA,CAAA;AAbW4R,QAAAA,OAAAA,qBAAAA,CAAAA;AAA8B7D,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA9B6D,qBAAAA,GAAAA,qBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,uBAAAA,CAAAA;;AAkBxB,IAAA,IAAA,+BAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,+BAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,+BAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,+BAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAAS5D,CAAAA,IAIR,GAJD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAM3K,KAAQ,GAAA,IAAI,CAACwK,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC9B,YAAA,IAAI,CAACnP,IAAI,GAAG2E,KAAAA,CAAM3E,IAAI,CAAA;AACtB,YAAA,IAAI,CAACmB,MAAM,GAAGwD,KAAAA,CAAMxD,MAAM,CAAA;AAC5B,SAAA,CAAA;AARW+R,QAAAA,OAAAA,+BAAAA,CAAAA;AAAwChE,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAxCgE,+BAAAA,GAAAA,+BAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mCAAAA,CAAAA;;AAaxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAGX,QAAA,MAAA,CAAS1D,eA6BR,GA7BD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAI/E,EAAAA,CAAAA;YACJ,IAAMuE,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAMkE,cAAAA,GAAiBlE,SAAS3O,MAAM,CAAA;AACtC,YAAA,IAAI6S,mBAAmB,CAAG,EAAA;gBACxB,IAA0ClE,UAAAA,GAAAA,QAAQ,CAAC,CAAA,CAAE,EAA7CnF,aAAkCmF,GAAAA,UAAAA,CAAlCnF,aAAeZ,EAAAA,cAAAA,GAAmB+F,UAAnB/F,CAAAA,cAAAA,CAAAA;gBACvB,IAAI,CAACwF,QAAQ,GAAG,IAAIF,UAAAA,CAAW1E,cAAchK,IAAI,EAAEgK,aAAc7I,CAAAA,MAAM,EAAEiI,cAAAA,CAAAA,CAAAA;aACpE,MAAA;gBACL,IAAMkK,YAAAA,GAAenE,QAAQ,CAAC,CAAE,CAAA,CAAA;AAChC,gBAAA,IAAI,CAACP,QAAQ,GAAG0E,YAAAA,CAAa1E,QAAQ,CAAA;AACvC,aAAA;YAEA,IAAIyE,cAAAA,KAAmB,CAAKA,IAAAA,cAAAA,KAAmB,CAAG,EAAA;gBAChD,IAAM9F,EAAAA,GAAK4B,QAAQ,CAAC,CAAE,CAAA,CAAA;gBACtBvE,EAAK,GAAA,IAAIiB,SAAU0B,CAAAA,EAAAA,CAAGpM,MAAM,EAAE,IAAI,CAACyN,QAAQ,EAAE,KAAA,EAAO,IAAI,CAAA,CAAA;gBACxDe,EAAGtD,CAAAA,gBAAgB,CAAC1B,MAAM,CAACC,EAAAA,CAAAA,CAAAA;AAC7B,aAAA,MAAO,IAAIyI,cAAAA,KAAmB,CAAKA,IAAAA,cAAAA,KAAmB,CAAG,EAAA;gBACvD,IAAMzE,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,gBAAA,IAAMxF,eAAiB,GAAA,IAAI,CAAC+F,QAAQ,CAAC,CAAE,CAAA,CAAA;AAMvCP,gBAAAA,QAAAA,CAASxF,cAAc,GAAGA,eAAAA,CAAAA;gBAC1B,IAAMmE,GAAAA,GAAK4B,QAAQ,CAAC,CAAE,CAAA,CAAA;AACtBvE,gBAAAA,EAAAA,GAAK,IAAIiB,SAAU0B,CAAAA,GAAAA,CAAGpM,MAAM,EAAEyN,QAAAA,EAAU,OAAO,IAAI,CAAA,CAAA;gBACnDe,EAAGtD,CAAAA,gBAAgB,CAAC1B,MAAM,CAACC,EAAAA,CAAAA,CAAAA;AAC7B,aAAA;AACF,SAAA,CAAA;AAhCWwI,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2BlE,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3BkE,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBG,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,oBAAAA,CAAAA;;AAqCxB,IAAA,IAAA,cAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,cAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,cAAAA,GAAAA;;AACXC,YAAAA,KAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,MAAAA,GAAkB,EAAE,CAAA;;;AADTD,QAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAASlE,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAACmE,MAAM,CAACjT,MAAM,GAAG,CAAA,CAAA;AACvB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASkP,eAeR,GAfD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAwC,KAAA,GAAA,IAAI,EAApCR,QAAAA,GAAgC,MAAhCA,QAAUsE,EAAQC,YAAc,KAAtBD,CAAAA,MAAAA,CAAAA;YAClB,IAAItE,QAAAA,CAAS3O,MAAM,KAAK,CAAG,EAAA;AACzBkT,gBAAAA,SAAAA,CAAUtT,IAAI,CAAC+O,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;aACrB,MAAA;gBACL,IAAMwE,IAAAA,GAAOxE,QAAQ,CAAC,CAAE,CAAA,CAAA;gBACxB,IAAM5B,EAAAA,GAAK4B,QAAQ,CAAC,CAAE,CAAA,CAAA;AACtB,gBAAA,IAAMyE,YAAeD,GAAAA,IAAAA,CAAKF,MAAM,CAACjT,MAAM,CAAA;gBACvCkT,SAAUlT,CAAAA,MAAM,GAAGoT,YAAe,GAAA,CAAA,CAAA;AAElC,gBAAA,IAAK,IAAItT,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIsT,cAActT,CAAK,EAAA,CAAA;AACrCoT,oBAAAA,SAAS,CAACpT,CAAE,CAAA,GAAGqT,IAAKF,CAAAA,MAAM,CAACnT,CAAE,CAAA,CAAA;AAC/B,iBAAA;gBACAoT,SAAS,CAACE,aAAa,GAAGrG,EAAAA,CAAAA;AAC5B,aAAA;AACF,SAAA,CAAA;AAtBWiG,QAAAA,OAAAA,cAAAA,CAAAA;AAAuBtE,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAvBsE,cAAAA,GAAAA,cAAAA,CAAAA;;AADkBK,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,eAAAA,CAAAA;;AA2BxB,IAAA,IAAA,WAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,WAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,WAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAASvE,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAOA,OAAAA,CAAQuE,gBAAgB,CAAC,IAAI,CAAA,CAAA;AACtC,SAAA,CAAA;AAHWD,QAAAA,OAAAA,WAAAA,CAAAA;AAAoB5E,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAApB4E,WAAAA,GAAAA,WAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,WAAAA,CAAAA;;AAQxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AAMX,QAAA,MAAA,CAASvE,eAMR,GAND,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAMuE,UAAa,GAAA,IAAI,CAAC/E,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,YAAA,IAAI,CAAC3F,KAAK,GAAG0K,UAAAA,CAAW1K,KAAK,CAAA;AAC7B,YAAA,IAAI,CAACO,UAAU,GAAGmK,UAAAA,CAAWnK,UAAU,CAAA;AACvC,YAAA,IAAI,CAACoK,aAAa,GAAGD,UAAAA,CAAWE,iBAAiB,CAAA;AACjD,YAAA,IAAI,CAAC3I,QAAQ,GAAGyI,UAAAA,CAAWzI,QAAQ,CAAA;AACrC,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS8D,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAOA,OAAAA,CAAQ6E,sBAAsB,CAAC,IAAI,CAAA,CAAA;AAC5C,SAAA,CAAA;AAhBWJ,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0B/E,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1B+E,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBK,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,kBAAAA,CAAAA;;AAqBxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAMX,QAAA,MAAA,CAAS7E,eAWR,GAXD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3CA,EAAGrD,CAAAA,eAAe,CAACiE,eAAe,GAAG,IAAA,CAAA;AACrCZ,YAAAA,EAAAA,CAAGrD,eAAe,CAACkI,MAAM,GAAG,IAAI,CAAA;YAEhC,IAAMrF,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAMqF,MAAAA,GAASrF,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC1B,IAAMgF,aAAAA,GAAgBhF,QAAQ,CAAC,CAAE,CAAA,CAAA;AACjC,YAAA,IAAI,CAAC3F,KAAK,GAAGgL,MAAAA,CAAOhL,KAAK,CAAA;AACzB,YAAA,IAAI,CAACO,UAAU,GAAGyK,MAAAA,CAAOzK,UAAU,CAAA;AACnC,YAAA,IAAI,CAACqK,iBAAiB,GAAGD,aAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAeC,iBAAiB,CAAA;AACzD,YAAA,IAAI,CAAC3I,QAAQ,GAAG0I,aAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAe1I,QAAQ,CAAA;AACzC,SAAA,CAAA;AAjBW8I,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2BrF,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3BqF,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mBAAAA,CAAAA;;AAsBxB,IAAA,IAAA,cAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,cAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,cAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAIX,QAAA,MAAA,CAAShF,eAKR,GALD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3CA,YAAAA,EAAAA,CAAGpF,QAAQ,EAAA,CAAA;YACX,IAAM4E,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAI,CAAC3F,KAAK,GAAG2F,QAAQ,CAAC,CAAE,CAAA,CAAA;AACxB,YAAA,IAAI,CAACpF,UAAU,GAAGoF,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC/B,SAAA,CAAA;AAEA,QAAA,MAAA,CAASI,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAOA,OAAAA,CAAQmF,mBAAmB,CAAC,IAAI,CAAA,CAAA;AACzC,SAAA,CAAA;AAbWD,QAAAA,OAAAA,cAAAA,CAAAA;AAAuBxF,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAvBwF,cAAAA,GAAAA,cAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,eAAAA,CAAAA;;AAkBxB,IAAA,IAAA,qBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,qBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,qBAAAA,GAAAA;;mEACXT,iBAAkC,GAAA,EAAE,EACpC3I,KAAAA,CAAAA,QAAAA,GAA+B,EAAE,CAAA;;;AAFtBoJ,QAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAASvF,CAAAA,IAGR,GAHD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAAC8E,iBAAiB,CAAC5T,MAAM,GAAG,CAAA,CAAA;AAChC,YAAA,IAAI,CAACiL,QAAQ,CAACjL,MAAM,GAAG,CAAA,CAAA;AACzB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASkP,eAsBR,GAtBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMR,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAMkE,cAAAA,GAAiBlE,SAAS3O,MAAM,CAAA;AACtC,YAAA,IAAwC,QAAA,IAAI,EAApC4T,oBAAgC,KAAhCA,CAAAA,iBAAAA,EAAmB3I,WAAa,KAAbA,CAAAA,QAAAA,CAAAA;AAC3B,YAAA,IAAI4H,mBAAmB,CAAG,EAAA;gBACxB,IAAMyB,IAAAA,GAAO3F,QAAQ,CAAC,CAAE,CAAA,CAAA;AACxBiF,gBAAAA,iBAAAA,CAAkBhU,IAAI,CAAC;AAAEoJ,oBAAAA,KAAAA,EAAOsL,KAAKtL,KAAK;AAAEoF,oBAAAA,QAAAA,EAAUkG,KAAKlG,QAAQ;oBAAElF,OAASoL,EAAAA,IAAAA;AAAK,iBAAA,CAAA,CAAA;AACnFrJ,gBAAAA,QAAAA,CAASrL,IAAI,CAAC0U,IAAKlG,CAAAA,QAAQ,CAAC5O,IAAI,CAAA,CAAA;aAC3B,MAAA;gBACL,IAAM2T,IAAAA,GAAOxE,QAAQ,CAAC,CAAE,CAAA,CAAA;gBACxB,IAAM2F,KAAAA,GAAO3F,QAAQ,CAAC,CAAE,CAAA,CAAA;AACxB,gBAAA,IAAM4F,eAAkBpB,GAAAA,IAAAA,CAAKS,iBAAiB,CAAC5T,MAAM,CAAA;gBACrD4T,iBAAkB5T,CAAAA,MAAM,GAAGuU,eAAkB,GAAA,CAAA,CAAA;gBAC7CtJ,QAASjL,CAAAA,MAAM,GAAGuU,eAAkB,GAAA,CAAA,CAAA;AAEpC,gBAAA,IAAK,IAAIzU,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIyU,iBAAiBzU,CAAK,EAAA,CAAA;AACxC8T,oBAAAA,iBAAiB,CAAC9T,CAAE,CAAA,GAAGqT,IAAKS,CAAAA,iBAAiB,CAAC9T,CAAE,CAAA,CAAA;AAChDmL,oBAAAA,QAAQ,CAACnL,CAAE,CAAA,GAAGqT,IAAKlI,CAAAA,QAAQ,CAACnL,CAAE,CAAA,CAAA;AAChC,iBAAA;gBACA8T,iBAAiB,CAACW,gBAAgB,GAAG;AAAEvL,oBAAAA,KAAAA,EAAOsL,MAAKtL,KAAK;AAAEoF,oBAAAA,QAAAA,EAAUkG,MAAKlG,QAAQ;oBAAElF,OAASoL,EAAAA,KAAAA;AAAK,iBAAA,CAAA;AACjGrJ,gBAAAA,QAAQ,CAACsJ,eAAgB,CAAA,GAAGD,KAAKlG,CAAAA,QAAQ,CAAC5O,IAAI,CAAA;AAChD,aAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAA,CAASuP,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAOA,OAAAA,CAAQwF,0BAA0B,CAAC,IAAI,CAAA,CAAA;AAChD,SAAA,CAAA;AAnCWH,QAAAA,OAAAA,qBAAAA,CAAAA;AAA8B3F,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA9B2F,qBAAAA,GAAAA,qBAAAA,CAAAA;;AADkBI,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,uBAAAA,CAAAA;;AAwCxB,IAAA,IAAA,oBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,oBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;QAKX,MAAS5F,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAAC6F,aAAa,GAAG/I,SAAAA,CAAAA;AACvB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASsD,eAiBR,GAjBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMR,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAMkE,cAAAA,GAAiBlE,SAAS3O,MAAM,CAAA;YACtC,IAAI4U,mBAAAA,CAAAA;AACJ,YAAA,IAAI/B,mBAAmB,CAAG,EAAA;gBACxB+B,mBAAsBjG,GAAAA,QAAQ,CAAC,CAAE,CAAA,CAAA;aAC5B,MAAA;gBACLiG,mBAAsBjG,GAAAA,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,aAAA;AACA,YAAA,IAAIkE,mBAAmB,CAAG,EAAA;AACxB,gBAAA,IAAI,CAAC8B,aAAa,GAAGhG,QAAQ,CAAC,CAAE,CAAA,CAAA;AAClC,aAAA;AACA,YAAA,IAAI,CAACP,QAAQ,GAAGwG,mBAAAA,CAAoBxG,QAAQ,CAAA;AAC5C,YAAA,IAAI,CAACpF,KAAK,GAAG4L,mBAAAA,CAAoB5L,KAAK,CAAA;AAEtC,YAAA,IAAM6L,SAAY,GAAA,IAAIxJ,SAAUuJ,CAAAA,mBAAAA,CAAoB5L,KAAK,CAACrI,MAAM,EAAEiU,mBAAoBxG,CAAAA,QAAQ,EAAE,KAAA,EAAO,IAAI,CAAA,CAAA;YAC3Ge,EAAGtD,CAAAA,gBAAgB,CAAC1B,MAAM,CAAC0K,SAAAA,CAAAA,CAAAA;AAC7B,SAAA,CAAA;AA1BWH,QAAAA,OAAAA,oBAAAA,CAAAA;AAA6BhG,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA7BgG,oBAAAA,GAAAA,oBAAAA,CAAAA;;AADkBI,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,qBAAAA,CAAAA;;AA+BxB,IAAA,IAAA,mBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,mBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AAIX,QAAA,MAAA,CAAS7F,eAMR,GAND,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMR,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAI,CAAC3F,KAAK,GAAG2F,QAAQ,CAAC,CAAE,CAAA,CAAA;YACxB,IAAMnF,aAAAA,GAAgBmF,QAAQ,CAAC,CAAE,CAAA,CAAA;YACjC,IAAM/F,cAAAA,GAAiB+F,QAAQ,CAAC,CAAE,CAAA,CAAA;YAClC,IAAI,CAACP,QAAQ,GAAG,IAAIF,UAAAA,CAAW1E,cAAchK,IAAI,EAAEgK,aAAc7I,CAAAA,MAAM,EAAEiI,cAAAA,CAAAA,CAAAA;AAC3E,SAAA,CAAA;AAVWmM,QAAAA,OAAAA,mBAAAA,CAAAA;AAA4BrG,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA5BqG,mBAAAA,GAAAA,mBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,oBAAAA,CAAAA;;AAuBxB,IAAA,IAAA,wBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,wBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,wBAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,wBAAAA,CAAAA;AAAiCvG,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAjCuG,wBAAAA,GAAAA,wBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,2BAAAA,CAAAA;;AASxB,IAAA,IAAA,aAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,aAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAASpG,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAOA,OAAAA,CAAQoG,kBAAkB,CAAC,IAAI,CAAA,CAAA;AACxC,SAAA,CAAA;AAHWD,QAAAA,OAAAA,aAAAA,CAAAA;AAAsBzG,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAtByG,aAAAA,GAAAA,aAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,cAAAA,CAAAA;;AAQxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;QAKX,MAASxG,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACiB,eAAe,GAAGnE,SAAAA,CAAAA;AACzB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASsD,eAwBR,GAxBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMR,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAI,CAACrF,SAAS,GAAGqF,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC5B,YAAA,IAAI,CAAC4G,UAAU,GAAG5G,QAAQ,CAAC,CAAE,CAAA,CAAA;AAE7BQ,YAAAA,EAAAA,CAAGlF,SAAS,EAAA,CAAA;YACZ,IAAMG,EAAAA,GAAK,IAAIf,QAAAA,CAAS,IAAI,CAACC,SAAS,CAACN,KAAK,CAACrI,MAAM,EAAE,IAAI,CAAA,CAAA;YACzDwO,EAAGtD,CAAAA,gBAAgB,CAAC1B,MAAM,CAACC,EAAAA,CAAAA,CAAAA;YAE3B,IAAQ0B,kBAAoBqD,EAApBrD,CAAAA,eAAAA,CAAAA;AACR,YAAA,IAAQkI,MAA4BlI,GAAAA,eAAAA,CAA5BkI,MAAQjE,EAAAA,eAAAA,GAAoBjE,eAApBiE,CAAAA,eAAAA,CAAAA;AAChB,YAAA,IAAIiE,OAAOzK,UAAU,CAAC/J,IAAI,KAAKxE,QAAAA,CAASqD,IAAI,EAAE;AAC5C,gBAAA,IAAI0R,eAAiB,EAAA;AACnBZ,oBAAAA,EAAAA,CAAG3C,WAAW,CAACwH,MAAAA,CAAOzK,UAAU,CAACjJ,QAAQ,EAAE,0BAAA,CAAA,CAAA;AAC7C,iBAAA;aACK,MAAA;AACL,gBAAA,IAAI,CAACyP,eAAiB,EAAA;AACpBZ,oBAAAA,EAAAA,CAAG3C,WAAW,CAACwH,MAAAA,CAAOzK,UAAU,CAACjJ,QAAQ,EAAG,4BAAA,CAAA,CAAA;iBACvC,MAAA;oBACL,IAAI,CAACyP,eAAe,GAAGA,eAAAA,CAAAA;AACzB,iBAAA;AACF,aAAA;AACAjE,YAAAA,eAAAA,CAAgBkI,MAAM,GAAGpI,SAAAA,CAAAA;AACzBE,YAAAA,eAAAA,CAAgBiE,eAAe,GAAGnE,SAAAA,CAAAA;AACpC,SAAA,CAAA;AAEA,QAAA,MAAA,CAASmD,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAOA,OAAAA,CAAQwG,uBAAuB,CAAC,IAAI,CAAA,CAAA;AAC7C,SAAA,CAAA;AArCWF,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2B5G,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3B4G,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBG,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mBAAAA,CAAAA;;AA0CxB,IAAA,IAAA,YAAA,iBAAA,SAAA,iBAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,YAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,YAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAASxG,eAER,GAFD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAI,CAAC3P,IAAI,GAAG,IAAK,CAACmP,QAAQ,CAAC,CAAE,CAAA,CAAyBnP,IAAI,CAAA;AAC5D,SAAA,CAAA;AAEA,QAAA,MAAA,CAASuP,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAOA,OAAAA,CAAQ2G,iBAAiB,CAAC,IAAI,CAAA,CAAA;AACvC,SAAA,CAAA;AAPWD,QAAAA,OAAAA,YAAAA,CAAAA;AAAqBxF,KAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;YAArBwF,YAAAA,GAAAA,YAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,aAAAA,CAAAA;;AAYxB,IAAA,IAAA,mBAAA,iBAAA,SAAA,iBAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,mBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAAS/G,CAAAA,IAGR,GAHD,SAASA,IAAAA,GAAAA;AACP,YAAA,iBAAA,CAAA,SAAA,CAAMA,IAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;YACL,IAAI,CAACgH,QAAQ,GAAGlK,SAAAA,CAAAA;AAClB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASsD,eAgCR,GAhCD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAM4G,kBAAqB,GAAA,IAAI,CAACpH,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC3C,IAAIoH,kBAAAA,CAAmBC,SAAS,EAAE;AAChC,gBAAA,IAAI,CAACxW,IAAI,GAAGuW,kBAAAA,CAAmB/M,KAAK,CAAA;aAC/B,MAAA;AAyBO8M,gBAAAA,IAAAA,kBAAAA,CAAAA;gBAxBZ,IAAMjL,OAAAA,GAAkBkL,mBAAmB/M,KAAK,CAAA;gBAEhD,IAAIiC,QAAAA,CAAAA;AACJ,gBAAA,IAAI,IAAI,CAAC0D,QAAQ,CAAC3O,MAAM,KAAK,CAAG,EAAA;AAC9B,oBAAA,IAAMiW,SAAY,GAAA,IAAI,CAACtH,QAAQ,CAAC,CAAE,CAAA,CAAA;oBAClC,IAAa,WAATsH,CAAAA,SAAAA,EAAqBC,yBAA2B,CAAA,EAAA;AAClDjL,wBAAAA,QAAAA,GAAWgL,UAAUhL,QAAQ,CAAA;AAC/B,qBAAA;AACF,iBAAA;AASA,gBAAA,IAAM6K,WAAW3G,EAAG9C,CAAAA,cAAc,CAACxB,OAAS/B,EAAAA,WAAAA,CAAYW,EAAE,EAAEwB,QAAAA,CAAAA,CAAAA;AAC5D,gBAAA,IAAI,CAAC6K,QAAU,EAAA;AAIb,oBAAA,OAAA;AACF,iBAAA;gBACA,IAAI,CAACtW,IAAI,GAAGsW,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAAA,qBAAAA,QAAU3M,CAAAA,QAAQ,KAAlB2M,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAAA,CAAoBtW,IAAI,CAAA;gBACpC,IAAI,CAACsW,QAAQ,GAAGA,QAAAA,CAAAA;AAClB,aAAA;AACF,SAAA,CAAA;AAxCWD,QAAAA,OAAAA,mBAAAA,CAAAA;AAA4B3F,KAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;YAA5B2F,mBAAAA,GAAAA,mBAAAA,CAAAA;;AADkBM,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,qBAAAA,CAAAA;;AA6CxB,IAAA,IAAA,yBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMD,QAAAA,SAAAA,CAAAA,yBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,yBAAAA,GAAAA;;mEACXjL,QAA+B,GAAA,EAAE,EACjCmL,KAAAA,CAAAA,UAAAA,GAAqC,EAAE,CAAA;;;AAF5BF,QAAAA,IAAAA,MAAAA,GAAAA,yBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAASpH,CAAAA,IAGR,GAHD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAAC7D,QAAQ,CAACjL,MAAM,GAAG,CAAA,CAAA;AACvB,YAAA,IAAI,CAACoW,UAAU,CAACpW,MAAM,GAAG,CAAA,CAAA;AAC3B,SAAA,CAAA;AAEA,QAAA,MAAA,CAASkP,eA6BR,GA7BD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAA2C,KAAA,GAAA,IAAI,EAAvCR,QAAmC,GAAA,KAAA,CAAnCA,UAAU1D,QAAyB,GAAA,KAAA,CAAzBA,QAAUmL,EAAAA,UAAAA,GAAe,KAAfA,CAAAA,UAAAA,CAAAA;YAC5B,IAAIzH,QAAAA,CAAS3O,MAAM,KAAK,CAAG,EAAA;gBACzB,IAAMqW,IAAAA,GAAO1H,QAAQ,CAAC,CAAE,CAAA,CAAA;gBACxB,IAAI0H,IAAAA,CAAK7W,IAAI,IAAIoM,SAAW,EAAA;AAC1BX,oBAAAA,QAAAA,CAASrL,IAAI,CAACP,OAAAA,CAAAA,CAAAA;iBACT,MAAA;oBACL4L,QAASrL,CAAAA,IAAI,CAACyW,IAAAA,CAAK7W,IAAI,CAAA,CAAA;AACzB,iBAAA;AAEA,gBAAA,IAAI,CAAC4W,UAAU,CAACxW,IAAI,CAACyW,IAAAA,CAAAA,CAAAA;aAChB,MAAA;gBACL,IAAMlD,IAAAA,GAAOxE,QAAQ,CAAC,CAAE,CAAA,CAAA;gBACxB,IAAM2F,IAAAA,GAAO3F,QAAQ,CAAC,CAAE,CAAA,CAAA;gBACxB,IAAIwE,IAAAA,CAAKlI,QAAQ,CAACjL,MAAM,KAAK,CAAKsU,IAAAA,IAAAA,CAAK9U,IAAI,IAAIoM,SAAW,EAAA;AACxD,oBAAA,IAAI,CAACX,QAAQ,CAACrL,IAAI,CAACP,OAAAA,CAAAA,CAAAA;iBACd,MAAA;AACL,oBAAA,IAAMkV,eAAkBpB,GAAAA,IAAAA,CAAKlI,QAAQ,CAACjL,MAAM,CAAA;oBAC5CiL,QAASjL,CAAAA,MAAM,GAAGuU,eAAkB,GAAA,CAAA,CAAA;oBACpC6B,UAAWpW,CAAAA,MAAM,GAAGuU,eAAkB,GAAA,CAAA,CAAA;AAEtC,oBAAA,IAAK,IAAIzU,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIyU,iBAAiBzU,CAAK,EAAA,CAAA;AACxCmL,wBAAAA,QAAQ,CAACnL,CAAE,CAAA,GAAGqT,IAAKlI,CAAAA,QAAQ,CAACnL,CAAE,CAAA,CAAA;AAC9BsW,wBAAAA,UAAU,CAACtW,CAAE,CAAA,GAAGqT,IAAKiD,CAAAA,UAAU,CAACtW,CAAE,CAAA,CAAA;AACpC,qBAAA;AACAmL,oBAAAA,QAAQ,CAACsJ,eAAAA,CAAgB,GAAGD,IAAAA,CAAK9U,IAAI,CAAA;oBACrC4W,UAAU,CAAC7B,gBAAgB,GAAGD,IAAAA,CAAAA;AAChC,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;AAtCW4B,QAAAA,OAAAA,yBAAAA,CAAAA;AAAkCxH,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAlCwH,yBAAAA,GAAAA,yBAAAA,CAAAA;;AADkBI,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,4BAAAA,CAAAA;;AA2CxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAASrH,eAER,GAFD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3CA,YAAAA,EAAAA,CAAGzC,UAAU,CAAChE,gBAAgB,CAAC9I,IAAI,CAAC,IAAI,CAAA,CAAA;AAC1C,SAAA,CAAA;AAHW2W,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2B7H,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3B6H,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mBAAAA,CAAAA;;AAQxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAKX,QAAA,MAAA,CAASvH,eAKR,GALD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAM3F,aAAgB,GAAA,IAAI,CAACmF,QAAQ,CAAC,CAAE,CAAA,CAAA;AACtC,YAAA,IAAI,CAAC3F,KAAK,GAAGQ,aAAAA,CAAchK,IAAI,CAAA;AAC/B,YAAA,IAAI,CAACmB,MAAM,GAAG6I,aAAAA,CAAc7I,MAAM,CAAA;AAClC,YAAA,IAAI,CAACqV,SAAS,GAAG,OAAO,IAAI,CAAChN,KAAK,KAAK,QAAA,CAAA;AACzC,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS+F,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAOA,OAAAA,CAAQ0H,uBAAuB,CAAC,IAAI,CAAA,CAAA;AAC7C,SAAA,CAAA;AAdWD,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2B/H,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3B+H,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mBAAAA,CAAAA;;AAmBxB,IAAA,IAAA,oBAAA,iBAAA,SAAA,iBAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,oBAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,oBAAAA,CAAAA;AAA6B1G,KAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;YAA7B0G,oBAAAA,GAAAA,oBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,qBAAAA,CAAAA;;AAqBxB,IAAA,IAAA,UAAA,iBAAA,SAAA,iBAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,UAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,UAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,UAAAA,CAAAA;AAAmB5G,KAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;YAAnB4G,UAAAA,GAAAA,UAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,UAAAA,CAAAA;;AAgBxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,iBAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAAS9H,eAuBR,GAvBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAI,IAAI,CAACR,QAAQ,CAAC3O,MAAM,KAAK,CAAG,EAAA;AAC9B,gBAAA,IAAM+M,EAAK,GAAA,IAAI,CAAC4B,QAAQ,CAAC,CAAE,CAAA,CAAA;gBAC3B,IAAM,WAAF5B,CAAAA,EAAAA,EAAckK,kBAAoB,CAAA,EAAA;AACxBlK,oBAAAA,IAAAA,YAAAA,CAAAA;oBAAZ,IAAI,CAACvN,IAAI,GAAGuN,CAAAA,eAAAA,EAAGqB,CAAAA,QAAQ,YAAXrB,YAAe1N,GAAAA,OAAAA,CAAAA;iBACtB,MAAA;oBACL,OAAgB0N,GAAIvN,IAAI;AACtB,wBAAA,KAAKJ,WAAWmJ,YAAY;AAC1B,4BAAA,IAAI,CAAC4H,KAAK,GAAGnV,QAAAA,CAASQ,GAAG,CAAA;AACzB,4BAAA,MAAA;AACF,wBAAA,KAAK4D,WAAW8I,cAAc;AAC5B,4BAAA,IAAI,CAAC1I,IAAI,GAAGxE,QAAAA,CAASM,KAAK,CAAA;AAC1B,4BAAA,MAAA;AACF,wBAAA,KAAKN,SAASsD,IAAI,CAAA;AAClB,wBAAA,KAAKtD,SAASuD,KAAK;AACjB,4BAAA,IAAI,CAACiB,IAAI,GAAGxE,QAAAA,CAASK,IAAI,CAAA;AACzB,4BAAA,MAAA;AACJ,qBAAA;AACF,iBAAA;aACK,MAAA;AACL,gBAAA,IAAM0b,UAAa,GAAA,IAAI,CAACpI,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,gBAAA,IAAI,CAACnP,IAAI,GAAGuX,UAAAA,CAAWvX,IAAI,CAAA;AAC7B,aAAA;AACF,SAAA,CAAA;AAxBWwX,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0B9G,KAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;YAA1B8G,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,kBAAAA,CAAAA;;AA6BxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,iBAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;QACX,MAASrI,CAAAA,IAMR,GAND,SAASA,IAAAA,GAAAA;AACP,YAAA,iBAAA,CAAA,SAAA,CAAMA,IAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACL,YAAA,IAAI,IAAI,CAACH,QAAQ,CAAC3O,MAAM,KAAK,CAAG,EAAA;AAC9B,gBAAA,IAAMiR,KAAQ,GAAA,IAAI,CAACtC,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC9B,gBAAA,IAAI,CAACnP,IAAI,GAAGyR,KAAAA,CAAMzR,IAAI,CAAA;AACxB,aAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAA,CAASuP,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAOA,OAAAA,CAAQoI,sBAAsB,CAAC,IAAI,CAAA,CAAA;AAC5C,SAAA,CAAA;AAXWD,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0BjH,KAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;YAA1BiH,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,kBAAAA,CAAAA;;AAuKxB,IAAA,IAAA,eAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,eAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,eAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAASxI,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAAC9F,KAAK,GAAG4C,SAAAA,CAAAA;AACf,SAAA,CAAA;AAEA,QAAA,MAAA,CAASsD,eAUR,GAVD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMR,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAIA,QAAAA,CAAS3O,MAAM,KAAK,CAAG,EAAA;AACzB,gBAAA,IAAI,CAACgJ,KAAK,GAAG2F,QAAQ,CAAC,CAAE,CAAA,CAAA;AACxBQ,gBAAAA,EAAAA,CAAGtD,gBAAgB,CAAC1B,MAAM,CAAC,IAAIT,YAAAA,CAAa,IAAI,CAACV,KAAK,CAACrI,MAAM,EAAE,IAAI,CAAA,CAAA,CAAA;gBAEnE,IAAI,CAAC4W,QAAQ,GAAI5I,QAAQ,CAAC,CAAA,CAAE,CAA2B4I,QAAQ,CAAA;aAC1D,MAAA;gBACL,IAAI,CAACA,QAAQ,GAAI5I,QAAQ,CAAC,CAAA,CAAE,CAA2B4I,QAAQ,CAAA;AACjE,aAAA;AACF,SAAA,CAAA;AAlBWD,QAAAA,OAAAA,eAAAA,CAAAA;AAAwB5I,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAxB4I,eAAAA,GAAAA,eAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,gBAAAA,CAAAA;;AAuBxB,IAAA,IAAA,qBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,qBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,qBAAAA,GAAAA;;AACXF,YAAAA,KAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,QAAAA,GAAyB,EAAE,CAAA;;;AADhBE,QAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAAS3I,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAACyI,QAAQ,CAACvX,MAAM,GAAG,CAAA,CAAA;AACzB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASkP,eAwBR,GAxBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAA+B,QAAA,IAAI,EAA3BR,WAAuB,KAAvBA,CAAAA,QAAAA,EAAU4I,WAAa,KAAbA,CAAAA,QAAAA,CAAAA;YAElB,IAAI5I,QAAAA,CAAS3O,MAAM,KAAK,CAAG,EAAA;AACzB,gBAAA,IAAM0X,QAAQ,QAAS,CAAC,CAAA,CAAE,CAAuBA,KAAK,CAAA;gBACtD,IAAMC,WAAAA,GAAcD,MAAM1X,MAAM,CAAA;AAChCuX,gBAAAA,QAAAA,CAASvX,MAAM,GAAG2X,WAAAA,CAAAA;AAClB,gBAAA,IAAK,IAAI7X,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI6X,aAAa7X,CAAK,EAAA,CAAA;AACpCyX,oBAAAA,QAAQ,CAACzX,CAAAA,CAAE,GAAG4X,KAAK,CAAC5X,CAAE,CAAA,CAAA;AACxB,iBAAA;aACK,MAAA;AACL,gBAAA,IAAM8X,YAAY,QAAS,CAAC,CAAA,CAAE,CAA2BL,QAAQ,CAAA;AACjE,gBAAA,IAAMM,YAAY,QAAS,CAAC,CAAA,CAAE,CAAuBH,KAAK,CAAA;gBAC1D,IAAMI,cAAAA,GAAiBF,UAAU5X,MAAM,CAAA;gBACvC,IAAM+X,cAAAA,GAAiBF,UAAU7X,MAAM,CAAA;gBACvCuX,QAASvX,CAAAA,MAAM,GAAG8X,cAAiBC,GAAAA,cAAAA,CAAAA;AAEnC,gBAAA,IAAK,IAAIjY,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAIgY,gBAAgBhY,EAAK,EAAA,CAAA;AACvCyX,oBAAAA,QAAQ,CAACzX,EAAAA,CAAE,GAAG8X,SAAS,CAAC9X,EAAE,CAAA,CAAA;AAC5B,iBAAA;AACA,gBAAA,IAAK,IAAIA,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAIiY,gBAAgBjY,EAAK,EAAA,CAAA;AACvCyX,oBAAAA,QAAQ,CAACzX,EAAIgY,GAAAA,cAAAA,CAAe,GAAGD,SAAS,CAAC/X,EAAE,CAAA,CAAA;AAC7C,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;AA/BW2X,QAAAA,OAAAA,qBAAAA,CAAAA;AAA8B/I,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA9B+I,qBAAAA,GAAAA,qBAAAA,CAAAA;;AADkBO,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,uBAAAA,CAAAA;;AAoCxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;AAGXP,YAAAA,KAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,KAAAA,GAAsB,EAAE,CAAA;;;AAHbO,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;QAKX,MAASnJ,CAAAA,IAIR,GAJD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACtF,aAAa,GAAGoC,SAAAA,CAAAA;YACrB,IAAI,CAACsM,cAAc,GAAGtM,SAAAA,CAAAA;AACtB,YAAA,IAAI,CAAC8L,KAAK,CAAC1X,MAAM,GAAG,CAAA,CAAA;AACtB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASkP,eA4BR,GA5BD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAA4B,QAAA,IAAI,EAAxBR,WAAoB,KAApBA,CAAAA,QAAAA,EAAU+I,QAAU,KAAVA,CAAAA,KAAAA,CAAAA;YAClB,IAAI/I,QAAAA,CAAS3O,MAAM,KAAK,CAAG,EAAA;AACzB,gBAAA,IAAI,CAACwJ,aAAa,GAAGmF,QAAQ,CAAC,CAAE,CAAA,CAAA;AAChC,gBAAA,IAAI,CAACuJ,cAAc,GAAGvJ,QAAQ,CAAC,CAAE,CAAA,CAAA;aAC5B,MAAA;AACL,gBAAA,IAAI,CAACnF,aAAa,GAAGmF,QAAQ,CAAC,CAAE,CAAA,CAAA;AAChC,gBAAA,IAAI,CAACuJ,cAAc,GAAGvJ,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,aAAA;YAEA,IAAM2C,UAAAA,GAAa3C,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC9B,IAAyB,mBAAA,GAAA,IAAI,CAACnF,aAAa,EAAnChK,IAAiB,GAAA,mBAAA,CAAjBA,IAAMmB,EAAAA,MAAAA,GAAW,mBAAXA,CAAAA,MAAAA,CAAAA;YACd,IAAc,WAAV2Q,CAAAA,UAAAA,EAAsB6G,eAAiB,CAAA,EAAA;gBACzC,IAAMzE,UAAAA,GAAa/E,QAAQ,CAAC,CAAE,CAAA,CAAA;gBAC9B,IAAMP,QAAAA,GAAW,IAAIF,UAAAA,CAAW1O,IAAMmB,EAAAA,MAAAA,CAAAA,CAAAA;gBACtC,IAAMyX,IAAAA,GAAO,IAAIjK,UAAWC,CAAAA,QAAAA,EAAUsF,WAAW1K,KAAK,EAAEsI,WAAWvW,KAAK,CAAA,CAAA;AACxE2c,gBAAAA,KAAAA,CAAM9X,IAAI,CAACwY,IAAAA,CAAAA,CAAAA;aACN,MAAA;AACL,gBAAA,IAAMF,cAAiB,GAAA,IAAI,CAACA,cAAc,CAACA,cAAc,CAAA;gBACzD,IAAMG,oBAAAA,GAAuBH,eAAelY,MAAM,CAAA;AAClD0X,gBAAAA,KAAAA,CAAM1X,MAAM,GAAGqY,oBAAAA,CAAAA;AACf,gBAAA,IAAK,IAAIvY,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIuY,sBAAsBvY,CAAK,EAAA,CAAA;oBAC7C,IAAM4T,WAAAA,GAAawE,cAAc,CAACpY,CAAE,CAAA,CAAA;AACpC,oBAAA,IAAMsO,YAAW,IAAIF,UAAAA,CAAW1O,IAAMmB,EAAAA,MAAAA,EAAQ+S,YAAW9K,cAAc,CAAA,CAAA;AACvE,oBAAA,IAAMwP,KAAO,GAAA,IAAIjK,UAAWC,CAAAA,SAAAA,EAAUsF,YAAW1K,KAAK,CAAA,CAAA;oBACtD0O,KAAK,CAAC5X,EAAE,GAAGsY,KAAAA,CAAAA;AACb,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;AAvCWH,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0BvJ,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1BuJ,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBK,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,kBAAAA,CAAAA;;AA4CxB,IAAA,IAAA,eAAA,iBAAA,SAAA,QAAA,EAAA;AAAMH,QAAAA,SAAAA,CAAAA,eAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,eAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AAGX,QAAA,MAAA,CAASjJ,eAER,GAFD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAI,CAACpU,KAAK,GAAGsX,MAAO,CAAY,IAAI,CAAC1D,QAAQ,CAAC,CAAE,CAAA,CAAEhO,MAAM,CAAA,CAAA;AAC1D,SAAA,CAAA;AALWwX,QAAAA,OAAAA,eAAAA,CAAAA;AAAwBzJ,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAxByJ,eAAAA,GAAAA,eAAAA,CAAAA;;AADkBI,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,gBAAAA,CAAAA;;AAUxB,IAAA,IAAA,oBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,oBAAAA,GAAAA;;AACXN,YAAAA,KAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,cAAAA,GAAqC,EAAE,CAAA;;;AAD5BM,QAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAAS1J,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAACoJ,cAAc,CAAClY,MAAM,GAAG,CAAA,CAAA;AAC/B,SAAA,CAAA;AAEA,QAAA,MAAA,CAASkP,eAcR,GAdD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAqC,QAAA,IAAI,EAAjCR,WAA6B,KAA7BA,CAAAA,QAAAA,EAAUuJ,iBAAmB,KAAnBA,CAAAA,cAAAA,CAAAA;YAClB,IAAIvJ,QAAAA,CAAS3O,MAAM,KAAK,CAAG,EAAA;AACzBkY,gBAAAA,cAAAA,CAAetY,IAAI,CAAC+O,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;aAC1B,MAAA;gBACL,IAAMwE,IAAAA,GAAOxE,QAAQ,CAAC,CAAE,CAAA,CAAA;gBACxB,IAAM+E,UAAAA,GAAa/E,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC9B,gBAAA,IAAM8J,UAAatF,GAAAA,IAAAA,CAAK+E,cAAc,CAAClY,MAAM,CAAA;gBAC7CkY,cAAelY,CAAAA,MAAM,GAAGyY,UAAa,GAAA,CAAA,CAAA;AACrC,gBAAA,IAAK,IAAI3Y,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI2Y,YAAY3Y,CAAK,EAAA,CAAA;AACnCoY,oBAAAA,cAAc,CAACpY,CAAE,CAAA,GAAGqT,IAAK+E,CAAAA,cAAc,CAACpY,CAAE,CAAA,CAAA;AAC5C,iBAAA;gBACAoY,cAAc,CAACO,WAAW,GAAG/E,UAAAA,CAAAA;AAC/B,aAAA;AACF,SAAA,CAAA;AArBW8E,QAAAA,OAAAA,oBAAAA,CAAAA;AAA6B9J,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA7B8J,oBAAAA,GAAAA,oBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,sBAAAA,CAAAA;;AA0BxB,IAAA,IAAA,gBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,gBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,gBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAAS7J,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAAClG,cAAc,GAAGgD,SAAAA,CAAAA;AACxB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASsD,eAIR,GAJD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMR,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAI,CAAC3F,KAAK,GAAG2F,QAAQ,CAAC,CAAE,CAAA,CAAA;AACxB,YAAA,IAAI,CAAC/F,cAAc,GAAG+F,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,SAAA,CAAA;AAZWgK,QAAAA,OAAAA,gBAAAA,CAAAA;AAAyBjK,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAzBiK,gBAAAA,GAAAA,gBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,iBAAAA,CAAAA;;AAiBxB,IAAA,IAAA,mBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,mBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AAGX,QAAA,MAAA,CAAS3J,eAQR,GARD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMR,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAMnP,IAAAA,GAAOmP,QAAQ,CAAC,CAAE,CAAA,CAAA;YACxB,IAAM3F,KAAAA,GAAQ2F,QAAQ,CAAC,CAAE,CAAA,CAAA;YACzB,IAAI,CAACnP,IAAI,GAAGA,IAAAA,CAAAA;AACZ,YAAA,IAAM4K,KAAK,IAAIiB,SAAAA,CAAUrC,KAAMrI,CAAAA,MAAM,EAAE,IAAIuN,UAAAA,CAAW1O,IAAKA,CAAAA,IAAI,EAAEA,IAAKgK,CAAAA,aAAa,CAAC7I,MAAM,CAAA,EAAG,MAAM,IAAI,CAAA,CAAA;YAEvGwO,EAAGtD,CAAAA,gBAAgB,CAAC1B,MAAM,CAACC,EAAAA,CAAAA,CAAAA;AAC7B,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2E,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAOA,OAAQ8J,CAAAA,8BAA8B,CAAC,IAAI,CAAI,GAAA,GAAA,CAAA;AACxD,SAAA,CAAA;AAfWD,QAAAA,OAAAA,mBAAAA,CAAAA;AAA4BnK,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA5BmK,mBAAAA,GAAAA,mBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,oBAAAA,CAAAA;;AAoBxB,IAAA,IAAA,uBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,uBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,uBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,uBAAAA,CAAAA,SAAAA,CAAAA;AAGX,QAAA,MAAA,CAAS9J,eAsBR,GAtBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAQR,QAAa,GAAA,IAAI,CAAjBA,QAAAA,CAAAA;YACR,IAAM3O,MAAAA,GAAS2O,SAAS3O,MAAM,CAAA;YAC9B,IAAMiZ,mBAAAA,GAAsBtK,QAAQ,CAAC,CAAE,CAAA,CAAA;YACvC,IAAMnP,IAAAA,GAAOyZ,oBAAoBzZ,IAAI,CAAA;YACrC,IAAI,CAACA,IAAI,GAAGA,IAAAA,CAAAA;AAEZ,YAAA,IAAIQ,WAAW,CAAG,EAAA;AAChB,gBAAA,OAAA;AACF,aAAA;YAEA,IAAMgJ,KAAAA,GAAQ2F,QAAQ,CAAC,CAAE,CAAA,CAAA;AAEzB,YAAA,IAAMuK,WAAcL,GAAAA,mBAAAA,CAAoBpZ,IAAI,CAAC2E,GAAG,EAAA,CAAA;AAChD,YAAA,IAAIpE,WAAW,CAAG,EAAA;;AAEhBkZ,gBAAAA,WAAAA,CAAYxe,GAAG,CAACsO,KAAM1I,CAAAA,QAAQ,EAAE;AAACd,oBAAAA,IAAAA;AAAMwJ,oBAAAA,KAAAA;AAAM,iBAAA,CAAA,CAAA;aACxC,MAAA;;AAELkQ,gBAAAA,WAAAA,CAAYxe,GAAG,CAACsO,KAAM1I,CAAAA,QAAQ,EAAE;AAACd,oBAAAA,IAAAA;AAAMwJ,oBAAAA,KAAAA;AAAO2F,oBAAAA,QAAQ,CAAC,CAAE,CAAA;AAAmB,iBAAA,CAAA,CAAA;AAC9E,aAAA;AACAuK,YAAAA,WAAAA,CAAYhK,eAAe,CAACC,EAAAA,CAAAA,CAAAA;AAC9B,SAAA,CAAA;AAzBW6J,QAAAA,OAAAA,uBAAAA,CAAAA;AAAgCtK,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAhCsK,uBAAAA,GAAAA,uBAAAA,CAAAA;;AADkBG,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,yBAAAA,CAAAA;;AA8BxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMlC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAWX,QAAA,MAAA,CAAS/H,eAoBR,GApBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;gBAmB3B,yBAAA,EAAA,gBAAA,CAAA;AAlBhB,YAAA,IAAMhL,KAAQ,GAAA,IAAI,CAACwK,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC9B,YAAA,IAAI,CAAChO,MAAM,GAAGwD,KAAAA,CAAMxD,MAAM,CAAA;YAW1B,IAAI,CAACyY,UAAU,GAAGjK,EAAG9C,CAAAA,cAAc,CAAClI,KAAMxD,CAAAA,MAAM,EAAEmI,WAAAA,CAAY0C,GAAG,CAAA,CAAA;AAMjE,YAAA,IAAI,CAAC4C,QAAQ,GAAG,CAAA,gBAAA,GAAA,IAAI,CAACgL,UAAU,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAf,yBAAA,GAAA,gBAAA,CAAiBjQ,QAAQ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAzB,0BAA2B3J,IAAI,CAAA;AACjD,SAAA,CAAA;AAEA,QAAA,MAAA,CAASuP,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAOA,OAAAA,CAAQqK,uBAAuB,CAAC,IAAI,CAAA,CAAA;AAC7C,SAAA,CAAA;AAnCWpC,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2BvI,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3BuI,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBqC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mBAAAA,CAAAA;;AAwCxB,IAAA,IAAA,eAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,eAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,eAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AAGX,QAAA,MAAA,CAASrK,eAGR,GAHD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAI,CAACzC,UAAU,GAAGyC,EAAAA,CAAGzC,UAAU,CAAA;YAC/B,IAAI,CAACA,UAAU,CAACJ,WAAW,GAAG6C,EAAGtD,CAAAA,gBAAgB,CAACxB,MAAM,CAAA;AAC1D,SAAA,CAAA;AANWkP,QAAAA,OAAAA,eAAAA,CAAAA;AAAwB7K,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAxB6K,eAAAA,GAAAA,eAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,iBAAAA,CAAAA;;AASjC,CAAA,EA1rCiBjL,OAAAA,KAAAA,OAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;;ACjDF,IAAA,YAAA,iBAAA,WAAA;AAAMkL,IAAAA,SAAAA,YAAAA,GAAAA,EAAAA;AAAAA,IAAAA,YAAAA,CACZC,UAEN,GAFD,SAAOA,UAAAA,CAAWtP,EAAiB,EAAA;QACjC,OAAOA,EAAAA,GAAKuC,aAAaU,KAAK,CAAA;AAChC,KAAA,CAAA;AAHmBoM,IAAAA,YAAAA,CAKZE,QAKN,GALD,SAAOA,QAAAA,CAASvP,EAAiB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAACsP,UAAU,CAACtP,EAAK,CAAA,EAAA;AAChBhL,YAAAA,IAAAA,cAAAA,CAAAA;YAAP,OAAOA,CAAAA,iBAAAA,UAAU,CAACgL,GAAG,KAAdhL,IAAAA,GAAAA,cAAAA,GAAkBpE,QAAQ,CAACoP,EAAG,CAAA,CAAA;AACvC,SAAA;QACA,OAAOuC,YAAY,CAACvC,EAAG,CAAA,CAAA;AACzB,KAAA,CAAA;IAVmBqP,YAYZG,CAAAA,2BAsBN,GAtBD,SAAOA,2BACL/M,CAAAA,IAAkB,EAClBgN,OAA0B,sBAE1BC,WAEC,EAAA;AAED,QAAA,IAAMvN,MAAwD,EAAE,CAAA;AAChE,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAkBsN,OAAS,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAhBE,YAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTxN,YAAAA,GAAAA,CAAI3M,IAAI,CAAC;;AACNiN,oBAAAA,IAAAA;AAASkN,iBAAAA,EAAAA,GAAAA,CAAAA;AACV,gBAAA,SAAU5K,EAAE,EAAA;AAAE,oBAAA,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,QAAA,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,OAAA,IAAA,EAAA,IAAA,EAAA,CAAA;AAAGR,wBAAAA,QAAAA,CAAH,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAW,CAAA,CAAA;;AACvB,oBAAA,IAAI,CAACA,QAAQ,CAAC,CAAA,CAAE,EAAE,OAAA;AAClB,oBAAA,IAAMhU,QAAQgU,QAAQ,CAAC,EAAE,CAACrO,QAAQ,CAAC3F,KAAK,CAAA;oBACxC,IAAMC,GAAAA,GAAM+T,QAAQ,CAACA,QAAS3O,CAAAA,MAAM,GAAG,CAAE,CAAA,CAACM,QAAQ,CAAC1F,GAAG,CAAA;AACtD,oBAAA,IAAM0F,QAAWO,GAAAA,SAAAA,CAAUE,WAAW,CAACpG,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;oBAC9C2T,OAAQnK,CAAAA,GAAG,CAAC0V,WAAAA,IAAAA,IAAAA,GAAAA,WAAevL,GAAAA,OAAAA,CAAQgB,WAAW,CAAC9P,IAAI,EAAE0P,EAAAA,EAAI7O,QAAUqO,EAAAA,QAAAA,CAAAA,CAAAA;AACrE,iBAAA;AACD,aAAA,CAAA,CAAA;AACH,SAAA;QACA,OAAOpC,GAAAA,CAAAA;AACT,KAAA,CAAA;IAlCmBkN,YAoCZO,CAAAA,aAIN,GAJD,SAAOA,aAAAA,CAAoBjM,GAAmB,EAAEkM,CAAI,EAAEC,CAAI,EAAA;AAC5CnM,QAAAA,IAAAA,QAAAA,CAAAA;QAAZ,IAAMrT,GAAAA,GAAMqT,CAAAA,QAAAA,GAAAA,GAAAA,CAAI3J,GAAG,CAAC6V,CAAAA,CAAAA,KAAAA,IAAAA,GAARlM,WAAc,IAAIoM,GAAAA,EAAAA,CAAAA;AAC9Bzf,QAAAA,GAAAA,CAAI0f,GAAG,CAACF,CAAAA,CAAAA,CAAAA;QACRnM,GAAIrT,CAAAA,GAAG,CAACuf,CAAGvf,EAAAA,GAAAA,CAAAA,CAAAA;AACb,KAAA,CAAA;AAxCmB+e,IAAAA,YAAAA,CA0CZY,QAKN,GALD,SAAOA,QAAYlL,CAAAA,EAAU,EAAEmL,EAAU,EAAA;AACvC,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmBnL,EAAI,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAZxE,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,CAAC2P,EAAAA,CAAGC,GAAG,CAAC5P,OAAO,OAAO,KAAA,CAAA;AAC5B,SAAA;QACA,OAAO,IAAA,CAAA;AACT,KAAA,CAAA;AA/CmB8O,IAAAA,YAAAA,CAiDZe,aAEN,GAFD,SAAOA,aAAcvI,CAAAA,CAAa,EAAEC,CAAa,EAAA;QAC/C,OAAOD,CAAAA,CAAEwI,MAAM,KAAKvI,CAAEuI,CAAAA,MAAM,IAAIxI,CAAEyI,CAAAA,MAAM,KAAKxI,CAAAA,CAAEwI,MAAM,CAAA;AACvD,KAAA,CAAA;AAnDmBjB,IAAAA,OAAAA,YAAAA,CAAAA;;;ACVrB;AASA,IAAMkB,+BACDlB,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAa6M,iBAAiB,EAC9B;AAAC,IAAA;AAAC7M,QAAAA,YAAAA,CAAaiO,kBAAkB;AAAC,KAAA;AAAE,IAAA;AAACjO,QAAAA,YAAAA,CAAa6M,iBAAiB;AAAE7M,QAAAA,YAAAA,CAAaiO,kBAAkB;AAAC,KAAA;CAAC,EACtGrM,OAAAA,CAAQgL,eAAe,CAAC9Z,IAAI,CAAA,EAG3Bga,aAAaG,2BAA2B,CAACjN,YAAaiO,CAAAA,kBAAkB,EAAE;AAC3E,IAAA;AAACjO,QAAAA,YAAAA,CAAa6J,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAAC7J,QAAAA,YAAAA,CAAakO,8BAA8B;AAAC,KAAA;AAC7C,IAAA;AAAClO,QAAAA,YAAAA,CAAa6K,gBAAgB;AAAC,KAAA;AAC/B,IAAA;AAAC7K,QAAAA,YAAAA,CAAa8I,mBAAmB;AAAC,KAAA;AACnC,CAAA,CAAA,EAEEgE,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAaoM,oBAAoB,EACjC;AACE,IAAA;AAACpM,QAAAA,YAAAA,CAAakE,oBAAoB;AAAEzR,QAAAA,UAAAA,CAAWmF,EAAE;AAAC,KAAA;AAClD,IAAA;AAACoI,QAAAA,YAAAA,CAAakE,oBAAoB;AAAEzR,QAAAA,UAAAA,CAAWmF,EAAE;AAAEoI,QAAAA,YAAAA,CAAakF,eAAe;AAAC,KAAA;CACjF,EACDtD,OAAAA,CAAQsK,mBAAmB,CAACpZ,IAAI,CAAA,EAG/Bga,aAAaG,2BAA2B,CACzCjN,YAAawM,CAAAA,yBAAyB,EACtC;AACE,IAAA;AAACxM,QAAAA,YAAAA,CAAaoM,oBAAoB;AAAC,KAAA;AACnC,IAAA;AAACpM,QAAAA,YAAAA,CAAawM,yBAAyB;AAAE/Z,QAAAA,UAAAA,CAAWsI,KAAK;AAAEtI,QAAAA,UAAAA,CAAWmF,EAAE;AAAC,KAAA;AACzE,IAAA;AAACoI,QAAAA,YAAAA,CAAawM,yBAAyB;AAAE/Z,QAAAA,UAAAA,CAAWsI,KAAK;AAAEtI,QAAAA,UAAAA,CAAWmF,EAAE;AAAEoI,QAAAA,YAAAA,CAAakF,eAAe;AAAC,KAAA;CACxG,EACDtD,OAAAA,CAAQyK,uBAAuB,CAACvZ,IAAI,CAAA,EAGnCga,aAAaG,2BAA2B,CAACjN,YAAakO,CAAAA,8BAA8B,EAAE;AACvF,IAAA;AAAClO,QAAAA,YAAAA,CAAawM,yBAAyB;AAAE/Z,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;AAC/D,CAAA,CAAA,EAEE6R,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAagG,mCAAmC,EAChD;AACE,IAAA;AAAC3X,QAAAA,QAAAA,CAASqD,IAAI;AAAC,KAAA;AACf,IAAA;AAACrD,QAAAA,QAAAA,CAASM,KAAK;AAAC,KAAA;AAChB,IAAA;AAACN,QAAAA,QAAAA,CAASK,IAAI;AAAC,KAAA;AACf,IAAA;AAACL,QAAAA,QAAAA,CAASQ,GAAG;AAAC,KAAA;AACd,IAAA;AAACR,QAAAA,QAAAA,CAASS,IAAI;AAAC,KAAA;AACf,IAAA;AAACT,QAAAA,QAAAA,CAAS4B,IAAI;AAAC,KAAA;AACf,IAAA;AAAC5B,QAAAA,QAAAA,CAAS6B,IAAI;AAAC,KAAA;AACf,IAAA;AAAC7B,QAAAA,QAAAA,CAAS8B,IAAI;AAAC,KAAA;AACf,IAAA;AAAC9B,QAAAA,QAAAA,CAASmB,KAAK;AAAC,KAAA;AAChB,IAAA;AAACnB,QAAAA,QAAAA,CAASoB,KAAK;AAAC,KAAA;AAChB,IAAA;AAACpB,QAAAA,QAAAA,CAASqB,KAAK;AAAC,KAAA;AAChB,IAAA;AAACrB,QAAAA,QAAAA,CAASsB,KAAK;AAAC,KAAA;AAChB,IAAA;AAACtB,QAAAA,QAAAA,CAASuB,KAAK;AAAC,KAAA;AAChB,IAAA;AAACvB,QAAAA,QAAAA,CAASwB,KAAK;AAAC,KAAA;AAChB,IAAA;AAACxB,QAAAA,QAAAA,CAASyB,KAAK;AAAC,KAAA;AAChB,IAAA;AAACzB,QAAAA,QAAAA,CAAS0B,KAAK;AAAC,KAAA;AAChB,IAAA;AAAC1B,QAAAA,QAAAA,CAAS2B,KAAK;AAAC,KAAA;AAChB,IAAA;AAAC3B,QAAAA,QAAAA,CAAS+B,IAAI;AAAC,KAAA;AACf,IAAA;AAAC/B,QAAAA,QAAAA,CAASgC,IAAI;AAAC,KAAA;AACf,IAAA;AAAChC,QAAAA,QAAAA,CAASiC,IAAI;AAAC,KAAA;AACf,IAAA;AAACjC,QAAAA,QAAAA,CAAS8f,MAAM;AAAC,KAAA;AACjB,IAAA;AAAC9f,QAAAA,QAAAA,CAAS+f,MAAM;AAAC,KAAA;AACjB,IAAA;AAAC/f,QAAAA,QAAAA,CAASggB,MAAM;AAAC,KAAA;AACjB,IAAA;AAAChgB,QAAAA,QAAAA,CAASigB,MAAM;AAAC,KAAA;AACjB,IAAA;AAACjgB,QAAAA,QAAAA,CAASkgB,MAAM;AAAC,KAAA;AACjB,IAAA;AAAClgB,QAAAA,QAAAA,CAASmgB,MAAM;AAAC,KAAA;AACjB,IAAA;AAACngB,QAAAA,QAAAA,CAASqC,SAAS;AAAC,KAAA;AACpB,IAAA;AAACrC,QAAAA,QAAAA,CAASuC,SAAS;AAAC,KAAA;AACpB,IAAA;AAACvC,QAAAA,QAAAA,CAASsC,YAAY;AAAC,KAAA;AACvB,IAAA;AAACtC,QAAAA,QAAAA,CAASwC,gBAAgB;AAAC,KAAA;AAC3B,IAAA;AAACxC,QAAAA,QAAAA,CAASyC,mBAAmB;AAAC,KAAA;AAC9B,IAAA;AAACzC,QAAAA,QAAAA,CAAS0C,eAAe;AAAC,KAAA;AAC1B,IAAA;AAAC1C,QAAAA,QAAAA,CAAS2C,sBAAsB;AAAC,KAAA;AACjC,IAAA;AAAC3C,QAAAA,QAAAA,CAAS4C,WAAW;AAAC,KAAA;AACtB,IAAA;AAAC5C,QAAAA,QAAAA,CAAS6C,WAAW;AAAC,KAAA;AACtB,IAAA;AAAC7C,QAAAA,QAAAA,CAAS8C,cAAc;AAAC,KAAA;AACzB,IAAA;AAAC9C,QAAAA,QAAAA,CAAS+C,iBAAiB;AAAC,KAAA;AAC5B,IAAA;AAAC/C,QAAAA,QAAAA,CAASgD,WAAW;AAAC,KAAA;AACtB,IAAA;AAAChD,QAAAA,QAAAA,CAASiD,WAAW;AAAC,KAAA;AACtB,IAAA;AAACjD,QAAAA,QAAAA,CAASkD,cAAc;AAAC,KAAA;AACzB,IAAA;AAAClD,QAAAA,QAAAA,CAASmD,iBAAiB;AAAC,KAAA;CAC7B,EACDoQ,OAAAA,CAAQmE,+BAA+B,CAACjT,IAAI,CAAA,EAG3Cga,aAAaG,2BAA2B,CACzCjN,YAAa8F,CAAAA,uBAAuB,EACpC;AAAC,IAAA;AAACrT,QAAAA,UAAAA,CAAWmF,EAAE;AAAC,KAAA;AAAE,IAAA;AAACoI,QAAAA,YAAAA,CAAagG,mCAAmC;AAAC,KAAA;CAAC,EACrEpE,OAAAA,CAAQgE,qBAAqB,CAAC9S,IAAI,CAAA,EAGjCga,aAAaG,2BAA2B,CACzCjN,YAAakE,CAAAA,oBAAoB,EACjC;AAAC,IAAA;AAAClE,QAAAA,YAAAA,CAAa8E,cAAc;AAAC,KAAA;AAAE,IAAA;AAAC9E,QAAAA,YAAAA,CAAaoE,cAAc;AAAEpE,QAAAA,YAAAA,CAAa8E,cAAc;AAAC,KAAA;CAAC,EAC3FlD,OAAAA,CAAQoC,kBAAkB,CAAClR,IAAI,CAAA,EAG9Bga,aAAaG,2BAA2B,CACzCjN,YAAa8E,CAAAA,cAAc,EAC3B;AACE,IAAA;AAAC9E,QAAAA,YAAAA,CAAa8F,uBAAuB;AAAC,KAAA;AACtC,IAAA;AAAC9F,QAAAA,YAAAA,CAAagG,mCAAmC;AAAEhG,QAAAA,YAAAA,CAAakF,eAAe;AAAC,KAAA;CACjF,EACDtD,OAAAA,CAAQ6C,aAAa,CAAC3R,IAAI,CAAA,EAGzBga,aAAaG,2BAA2B,CACzCjN,YAAaoE,CAAAA,cAAc,EAC3B;AAAC,IAAA;AAACpE,QAAAA,YAAAA,CAAawE,qBAAqB;AAAC,KAAA;AAAE,IAAA;AAACxE,QAAAA,YAAAA,CAAaoE,cAAc;AAAEpE,QAAAA,YAAAA,CAAawE,qBAAqB;AAAC,KAAA;CAAC,EACzG5C,OAAAA,CAAQuC,aAAa,CAACrR,IAAI,CAAA,EAGzBga,aAAaG,2BAA2B,CACzCjN,YAAawE,CAAAA,qBAAqB,EAClC;AACE,IAAA;AAACxE,QAAAA,YAAAA,CAAayO,iBAAiB;AAAC,KAAA;AAChC,IAAA;AAACzO,QAAAA,YAAAA,CAAa0O,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAAC1O,QAAAA,YAAAA,CAAa2O,uBAAuB;AAAC,KAAA;AACtC,IAAA;AAAC3O,QAAAA,YAAAA,CAAa4O,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAACvgB,QAAAA,QAAAA,CAASyD,OAAO;AAAC,KAAA;CACnB,EACD8P,OAAAA,CAAQyC,mBAAmB,CAACvR,IAAI,CAAA,EAG/Bga,aAAaG,2BAA2B,CACzCjN,YAAayO,CAAAA,iBAAiB,EAC9B;AAAC,IAAA;AAACpgB,QAAAA,QAAAA,CAASI,KAAK;AAAC,KAAA;AAAE,IAAA;AAACJ,QAAAA,QAAAA,CAASkC,EAAE;AAAC,KAAA;AAAE,IAAA;AAAClC,QAAAA,QAAAA,CAASoC,KAAK;AAAC,KAAA;AAAE,IAAA;AAACpC,QAAAA,QAAAA,CAASmC,GAAG;AAAC,KAAA;AAAE,IAAA;AAACnC,QAAAA,QAAAA,CAASiE,QAAQ;AAAC,KAAA;AAAC,CAAA,CAAA,EAMvFwa,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAa2O,uBAAuB,EACpC;AAAC,IAAA;AAACtgB,QAAAA,QAAAA,CAAS+D,MAAM;AAAC,KAAA;AAAE,IAAA;AAAC/D,QAAAA,QAAAA,CAAS8D,IAAI;AAAC,KAAA;AAAC,CAAA,CAAA,EAMnC2a,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAa4O,mBAAmB,EAChC;AAAC,IAAA;AAACvgB,QAAAA,QAAAA,CAAS6D,SAAS;AAAC,KAAA;AAAC,CAAA,CAAA,EAMrB4a,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAa0O,mBAAmB,EAChC;AAAC,IAAA;AAACrgB,QAAAA,QAAAA,CAAS0D,KAAK;AAAC,KAAA;AAAE,IAAA;AAAC1D,QAAAA,QAAAA,CAAS2D,OAAO;AAAC,KAAA;AAAE,IAAA;AAAC3D,QAAAA,QAAAA,CAAS4D,IAAI;AAAC,KAAA;AAAC,CAAA,CAAA,EAMtD6a,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAa6K,gBAAgB,EAC7B;AACE,IAAA;AACExc,QAAAA,QAAAA,CAASoD,MAAM;AACfgB,QAAAA,UAAAA,CAAWmF,EAAE;AACbnF,QAAAA,UAAAA,CAAWgI,UAAU;AACrBuF,QAAAA,YAAAA,CAAaqL,uBAAuB;AACpC5Y,QAAAA,UAAAA,CAAWiI,WAAW;AACtBjI,QAAAA,UAAAA,CAAWwI,SAAS;AACrB,KAAA;AACD,IAAA;AACE5M,QAAAA,QAAAA,CAASoD,MAAM;AACfgB,QAAAA,UAAAA,CAAWgI,UAAU;AACrBuF,QAAAA,YAAAA,CAAaqL,uBAAuB;AACpC5Y,QAAAA,UAAAA,CAAWiI,WAAW;AACtBjI,QAAAA,UAAAA,CAAWwI,SAAS;AACrB,KAAA;CACF,EACD2G,OAAAA,CAAQ+I,eAAe,CAAC7X,IAAI,CAAA,EAG3Bga,aAAaG,2BAA2B,CACzCjN,YAAaqL,CAAAA,uBAAuB,EACpC;AAAC,IAAA;AAACrL,QAAAA,YAAAA,CAAa2L,kBAAkB;AAAC,KAAA;AAAE,IAAA;AAAC3L,QAAAA,YAAAA,CAAaqL,uBAAuB;AAAErL,QAAAA,YAAAA,CAAa2L,kBAAkB;AAAC,KAAA;CAAC,EAC5G/J,OAAAA,CAAQkJ,qBAAqB,CAAChY,IAAI,CAAA,EAGjCga,aAAaG,2BAA2B,CACzCjN,YAAa2L,CAAAA,kBAAkB,EAC/B;AACE,IAAA;AAAC3L,QAAAA,YAAAA,CAAa8E,cAAc;AAAE9E,QAAAA,YAAAA,CAAa+L,sBAAsB;AAAEtZ,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;AACxF,IAAA;AACE+E,QAAAA,YAAAA,CAAaoE,cAAc;AAC3BpE,QAAAA,YAAAA,CAAa8E,cAAc;AAC3B9E,QAAAA,YAAAA,CAAa+L,sBAAsB;AACnCtZ,QAAAA,UAAAA,CAAWwI,SAAS;AACrB,KAAA;AACD,IAAA;AAAC+E,QAAAA,YAAAA,CAAa4L,gBAAgB;AAAE5L,QAAAA,YAAAA,CAAa8E,cAAc;AAAE9E,QAAAA,YAAAA,CAAaiM,iBAAiB;AAAExZ,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;CACnH,EACD2G,OAAAA,CAAQ0J,iBAAiB,CAACxY,IAAI,CAAA,EAG7Bga,aAAaG,2BAA2B,CACzCjN,YAAa4L,CAAAA,gBAAgB,EAC7B;AACE,IAAA;AACEvd,QAAAA,QAAAA,CAASkE,MAAM;AACfE,QAAAA,UAAAA,CAAW8H,UAAU;AACrBlM,QAAAA,QAAAA,CAASmE,QAAQ;AACjBC,QAAAA,UAAAA,CAAW6G,KAAK;AAChB7G,QAAAA,UAAAA,CAAWmJ,YAAY;AACvBnJ,QAAAA,UAAAA,CAAW+H,WAAW;AACvB,KAAA;CACF,EACDoH,OAAAA,CAAQ4J,eAAe,CAAC1Y,IAAI,CAAA,EAG3Bga,aAAaG,2BAA2B,CACzCjN,YAAa+L,CAAAA,sBAAsB,EACnC;AACE,IAAA;AAAC/L,QAAAA,YAAAA,CAAaiM,iBAAiB;AAAC,KAAA;AAChC,IAAA;AAACjM,QAAAA,YAAAA,CAAa+L,sBAAsB;AAAEtZ,QAAAA,UAAAA,CAAWsI,KAAK;AAAEiF,QAAAA,YAAAA,CAAaiM,iBAAiB;AAAC,KAAA;CACxF,EACDrK,OAAAA,CAAQiK,oBAAoB,CAAC/Y,IAAI,CAAA,EAGhCga,aAAaG,2BAA2B,CACzCjN,YAAaiM,CAAAA,iBAAiB,EAC9B;AAAC,IAAA;AAACxZ,QAAAA,UAAAA,CAAWmF,EAAE;AAAC,KAAA;AAAE,IAAA;AAACnF,QAAAA,UAAAA,CAAWmF,EAAE;AAAEoI,QAAAA,YAAAA,CAAakF,eAAe;AAAC,KAAA;CAAC,EAChEtD,OAAAA,CAAQoK,gBAAgB,CAAClZ,IAAI,CAAA,EAG5Bga,aAAaG,2BAA2B,CACzCjN,YAAakF,CAAAA,eAAe,EAC5B;AACE,IAAA;AAACzS,QAAAA,UAAAA,CAAWkI,YAAY;AAAElI,QAAAA,UAAAA,CAAWmI,aAAa;AAAC,KAAA;AACnD,IAAA;AAACnI,QAAAA,UAAAA,CAAWkI,YAAY;AAAEqF,QAAAA,YAAAA,CAAa2F,2BAA2B;AAAElT,QAAAA,UAAAA,CAAWmI,aAAa;AAAC,KAAA;CAC9F,EACDgH,OAAAA,CAAQmD,cAAc,CAACjS,IAAI,CAAA,EAG1Bga,aAAaG,2BAA2B,CACzCjN,YAAawF,CAAAA,oCAAoC,EACjD;AAAC,IAAA;AAAC/S,QAAAA,UAAAA,CAAWwG,IAAI;AAAC,KAAA;AAAE,IAAA;AAACxG,QAAAA,UAAAA,CAAW2G,IAAI;AAAC,KAAA;AAAE,IAAA;AAAC3G,QAAAA,UAAAA,CAAWyH,IAAI;AAAC,KAAA;AAAE,IAAA;AAACzH,QAAAA,UAAAA,CAAW2H,KAAK;AAAC,KAAA;AAAE,IAAA;AAAC3H,QAAAA,UAAAA,CAAW6H,OAAO;AAAC,KAAA;CAAC,EACnGsH,OAAAA,CAAQuD,iCAAiC,CAACrS,IAAI,CAAA,EAG7Cga,aAAaG,2BAA2B,CACzCjN,YAAa2F,CAAAA,2BAA2B,EACxC;AACE,IAAA;AAAC3F,QAAAA,YAAAA,CAAa2M,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAACla,QAAAA,UAAAA,CAAWmJ,YAAY;AAAC,KAAA;AACzB,IAAA;AACEoE,QAAAA,YAAAA,CAAa2F,2BAA2B;AACxC3F,QAAAA,YAAAA,CAAawF,oCAAoC;AACjD/S,QAAAA,UAAAA,CAAWmJ,YAAY;AACxB,KAAA;AACD,IAAA;AACEoE,QAAAA,YAAAA,CAAa2F,2BAA2B;AACxC3F,QAAAA,YAAAA,CAAawF,oCAAoC;AACjDxF,QAAAA,YAAAA,CAAa2M,mBAAmB;AACjC,KAAA;CACF,EACD/K,OAAAA,CAAQ6D,yBAAyB,CAAC3S,IAAI,CAAA,EAGrCga,aAAaG,2BAA2B,CACzCjN,YAAa6O,CAAAA,sBAAsB,EACnC;AACE,IAAA;AAAC7O,QAAAA,YAAAA,CAAa8O,qBAAqB;AAAC,KAAA;AACpC,IAAA;AACE9O,QAAAA,YAAAA,CAAa8O,qBAAqB;AAClCrc,QAAAA,UAAAA,CAAW0I,QAAQ;AACnB6E,QAAAA,YAAAA,CAAaoK,UAAU;AACvB3X,QAAAA,UAAAA,CAAWuI,KAAK;AAChBgF,QAAAA,YAAAA,CAAakK,qBAAqB;AACnC,KAAA;AACF,CAAA,CAAA,EAMA4C,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAa8O,qBAAqB,EAClC;AACE,IAAA;AAAC9O,QAAAA,YAAAA,CAAa+O,sBAAsB;AAAC,KAAA;AACrC,IAAA;AAAC/O,QAAAA,YAAAA,CAAa8O,qBAAqB;AAAErc,QAAAA,UAAAA,CAAWkH,KAAK;AAAEqG,QAAAA,YAAAA,CAAa+O,sBAAsB;AAAC,KAAA;AAC5F,CAAA,CAAA,EAMAjC,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAa+O,sBAAsB,EACnC;AACE,IAAA;AAAC/O,QAAAA,YAAAA,CAAagP,sBAAsB;AAAC,KAAA;AACrC,IAAA;AAAChP,QAAAA,YAAAA,CAAa+O,sBAAsB;AAAEtc,QAAAA,UAAAA,CAAWqH,MAAM;AAAEkG,QAAAA,YAAAA,CAAagP,sBAAsB;AAAC,KAAA;AAC9F,CAAA,CAAA,EAMAlC,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAagP,sBAAsB,EACnC;AACE,IAAA;AAAChP,QAAAA,YAAAA,CAAaiP,uBAAuB;AAAC,KAAA;AACtC,IAAA;AAACjP,QAAAA,YAAAA,CAAagP,sBAAsB;AAAEvc,QAAAA,UAAAA,CAAWgH,MAAM;AAAEuG,QAAAA,YAAAA,CAAaiP,uBAAuB;AAAC,KAAA;AAC/F,CAAA,CAAA,EAMAnC,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAaiP,uBAAuB,EACpC;AACE,IAAA;AAACjP,QAAAA,YAAAA,CAAakP,uBAAuB;AAAC,KAAA;AACtC,IAAA;AAAClP,QAAAA,YAAAA,CAAaiP,uBAAuB;AAAExc,QAAAA,UAAAA,CAAWoH,YAAY;AAAEmG,QAAAA,YAAAA,CAAakP,uBAAuB;AAAC,KAAA;AACtG,CAAA,CAAA,EAMApC,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAakP,uBAAuB,EACpC;AACE,IAAA;AAAClP,QAAAA,YAAAA,CAAamP,cAAc;AAAC,KAAA;AAC7B,IAAA;AAACnP,QAAAA,YAAAA,CAAakP,uBAAuB;AAAEzc,QAAAA,UAAAA,CAAWuH,KAAK;AAAEgG,QAAAA,YAAAA,CAAamP,cAAc;AAAC,KAAA;AACtF,CAAA,CAAA,EAMArC,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAamP,cAAc,EAC3B;AACE,IAAA;AAACnP,QAAAA,YAAAA,CAAaoP,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAACpP,QAAAA,YAAAA,CAAamP,cAAc;AAAE1c,QAAAA,UAAAA,CAAWiH,SAAS;AAAEsG,QAAAA,YAAAA,CAAaoP,mBAAmB;AAAC,KAAA;AACtF,CAAA,CAAA,EAMAtC,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAaoP,mBAAmB,EAChC;AACE,IAAA;AAACpP,QAAAA,YAAAA,CAAaqP,qBAAqB;AAAC,KAAA;AACpC,IAAA;AAACrP,QAAAA,YAAAA,CAAaoP,mBAAmB;AAAE3c,QAAAA,UAAAA,CAAW4G,KAAK;AAAE2G,QAAAA,YAAAA,CAAaqP,qBAAqB;AAAC,KAAA;AACxF,IAAA;AAACrP,QAAAA,YAAAA,CAAaoP,mBAAmB;AAAE3c,QAAAA,UAAAA,CAAW8G,KAAK;AAAEyG,QAAAA,YAAAA,CAAaqP,qBAAqB;AAAC,KAAA;AACzF,CAAA,CAAA,EAMAvC,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAaqP,qBAAqB,EAClC;AACE,IAAA;AAACrP,QAAAA,YAAAA,CAAasP,gBAAgB;AAAC,KAAA;AAC/B,IAAA;AAACtP,QAAAA,YAAAA,CAAaqP,qBAAqB;AAAE5c,QAAAA,UAAAA,CAAWiG,UAAU;AAAEsH,QAAAA,YAAAA,CAAasP,gBAAgB;AAAC,KAAA;AAC1F,IAAA;AAACtP,QAAAA,YAAAA,CAAaqP,qBAAqB;AAAE5c,QAAAA,UAAAA,CAAWqG,WAAW;AAAEkH,QAAAA,YAAAA,CAAasP,gBAAgB;AAAC,KAAA;AAC3F,IAAA;AAACtP,QAAAA,YAAAA,CAAaqP,qBAAqB;AAAE5c,QAAAA,UAAAA,CAAWgG,KAAK;AAAEuH,QAAAA,YAAAA,CAAasP,gBAAgB;AAAC,KAAA;AACrF,IAAA;AAACtP,QAAAA,YAAAA,CAAaqP,qBAAqB;AAAE5c,QAAAA,UAAAA,CAAWoG,KAAK;AAAEmH,QAAAA,YAAAA,CAAasP,gBAAgB;AAAC,KAAA;AACtF,CAAA,CAAA,EAMAxC,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAasP,gBAAgB,EAC7B;AACE,IAAA;AAACtP,QAAAA,YAAAA,CAAauP,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAACvP,QAAAA,YAAAA,CAAasP,gBAAgB;AAAE7c,QAAAA,UAAAA,CAAW+F,OAAO;AAAEwH,QAAAA,YAAAA,CAAauP,mBAAmB;AAAC,KAAA;AACrF,IAAA;AAACvP,QAAAA,YAAAA,CAAasP,gBAAgB;AAAE7c,QAAAA,UAAAA,CAAWmG,QAAQ;AAAEoH,QAAAA,YAAAA,CAAauP,mBAAmB;AAAC,KAAA;AACvF,CAAA,CAAA,EAMAzC,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAauP,mBAAmB,EAChC;AACE,IAAA;AAACvP,QAAAA,YAAAA,CAAawP,yBAAyB;AAAC,KAAA;AACxC,IAAA;AAACxP,QAAAA,YAAAA,CAAauP,mBAAmB;AAAE9c,QAAAA,UAAAA,CAAWwG,IAAI;AAAE+G,QAAAA,YAAAA,CAAawP,yBAAyB;AAAC,KAAA;AAC3F,IAAA;AAACxP,QAAAA,YAAAA,CAAauP,mBAAmB;AAAE9c,QAAAA,UAAAA,CAAW2G,IAAI;AAAE4G,QAAAA,YAAAA,CAAawP,yBAAyB;AAAC,KAAA;AAC5F,CAAA,CAAA,EAMA1C,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAawP,yBAAyB,EACtC;AACE,IAAA;AAACxP,QAAAA,YAAAA,CAAayP,gBAAgB;AAAC,KAAA;AAC/B,IAAA;AAACzP,QAAAA,YAAAA,CAAawP,yBAAyB;AAAE/c,QAAAA,UAAAA,CAAWyH,IAAI;AAAE8F,QAAAA,YAAAA,CAAayP,gBAAgB;AAAC,KAAA;AACxF,IAAA;AAACzP,QAAAA,YAAAA,CAAawP,yBAAyB;AAAE/c,QAAAA,UAAAA,CAAW2H,KAAK;AAAE4F,QAAAA,YAAAA,CAAayP,gBAAgB;AAAC,KAAA;AACzF,IAAA;AAACzP,QAAAA,YAAAA,CAAawP,yBAAyB;AAAE/c,QAAAA,UAAAA,CAAW6H,OAAO;AAAE0F,QAAAA,YAAAA,CAAayP,gBAAgB;AAAC,KAAA;AAC5F,CAAA,CAAA,EAMA3C,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAayP,gBAAgB,EAC7B;AACE,IAAA;AAACzP,QAAAA,YAAAA,CAAa0K,kBAAkB;AAAC,KAAA;AACjC,IAAA;AAACjY,QAAAA,UAAAA,CAAWsG,MAAM;AAAEiH,QAAAA,YAAAA,CAAayP,gBAAgB;AAAC,KAAA;AAClD,IAAA;AAAChd,QAAAA,UAAAA,CAAWyG,MAAM;AAAE8G,QAAAA,YAAAA,CAAayP,gBAAgB;AAAC,KAAA;AAClD,IAAA;AAACzP,QAAAA,YAAAA,CAAa0P,cAAc;AAAE1P,QAAAA,YAAAA,CAAayP,gBAAgB;AAAC,KAAA;AAC7D,CAAA,CAAA,EAMA3C,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAa0P,cAAc,EAC3B;AAAC,IAAA;AAACjd,QAAAA,UAAAA,CAAWwG,IAAI;AAAC,KAAA;AAAE,IAAA;AAACxG,QAAAA,UAAAA,CAAW2G,IAAI;AAAC,KAAA;AAAE,IAAA;AAAC3G,QAAAA,UAAAA,CAAW+G,IAAI;AAAC,KAAA;AAAE,IAAA;AAAC/G,QAAAA,UAAAA,CAAWyI,KAAK;AAAC,KAAA;AAAC,CAAA,CAAA,EAM5E4R,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAa0K,kBAAkB,EAC/B;AACE,IAAA;AAAC1K,QAAAA,YAAAA,CAAauK,kBAAkB;AAAC,KAAA;AACjC,IAAA;AAACvK,QAAAA,YAAAA,CAAa0K,kBAAkB;AAAEjY,QAAAA,UAAAA,CAAWkI,YAAY;AAAEqF,QAAAA,YAAAA,CAAaoK,UAAU;AAAE3X,QAAAA,UAAAA,CAAWmI,aAAa;AAAC,KAAA;AAC7G,IAAA;AAACoF,QAAAA,YAAAA,CAAaiJ,aAAa;AAAC,KAAA;AAC5B,IAAA;AAACjJ,QAAAA,YAAAA,CAAa0K,kBAAkB;AAAEjY,QAAAA,UAAAA,CAAWqI,GAAG;AAAErI,QAAAA,UAAAA,CAAWmF,EAAE;AAAC,KAAA;AAChE,IAAA;AAACoI,QAAAA,YAAAA,CAAa0K,kBAAkB;AAAEjY,QAAAA,UAAAA,CAAWqI,GAAG;AAAEkF,QAAAA,YAAAA,CAAaiJ,aAAa;AAAC,KAAA;AAC7E,IAAA;AAACjJ,QAAAA,YAAAA,CAAa0K,kBAAkB;AAAEjY,QAAAA,UAAAA,CAAWsG,MAAM;AAAC,KAAA;AACpD,IAAA;AAACiH,QAAAA,YAAAA,CAAa0K,kBAAkB;AAAEjY,QAAAA,UAAAA,CAAWyG,MAAM;AAAC,KAAA;CACrD,EACD0I,OAAAA,CAAQ4I,iBAAiB,CAAC1X,IAAI,CAAA,EAG7Bga,aAAaG,2BAA2B,CACzCjN,YAAauK,CAAAA,kBAAkB,EAC/B;AACE,IAAA;AAACvK,QAAAA,YAAAA,CAAa2M,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAACla,QAAAA,UAAAA,CAAWmJ,YAAY;AAAC,KAAA;AACzB,IAAA;AAACnJ,QAAAA,UAAAA,CAAW8I,cAAc;AAAC,KAAA;AAC3B,IAAA;AAAClN,QAAAA,QAAAA,CAASsD,IAAI;AAAC,KAAA;AACf,IAAA;AAACtD,QAAAA,QAAAA,CAASuD,KAAK;AAAC,KAAA;AAChB,IAAA;AAACa,QAAAA,UAAAA,CAAW8H,UAAU;AAAEyF,QAAAA,YAAAA,CAAaoK,UAAU;AAAE3X,QAAAA,UAAAA,CAAW+H,WAAW;AAAC,KAAA;CACzE,EACDoH,OAAAA,CAAQyI,iBAAiB,CAACvX,IAAI,CAAA,EAG7Bga,aAAaG,2BAA2B,CACzCjN,YAAaoK,CAAAA,UAAU,EACvB;AACE,IAAA;AAACpK,QAAAA,YAAAA,CAAakK,qBAAqB;AAAC,KAAA;AACpC,IAAA;AAAClK,QAAAA,YAAAA,CAAaoK,UAAU;AAAE3X,QAAAA,UAAAA,CAAWsI,KAAK;AAAEiF,QAAAA,YAAAA,CAAakK,qBAAqB;AAAC,KAAA;CAChF,EACDtI,OAAAA,CAAQuI,UAAU,CAACrX,IAAI,CAAA,EAGtBga,aAAaG,2BAA2B,CACzCjN,YAAakK,CAAAA,qBAAqB,EAClC;AACE,IAAA;AAAClK,QAAAA,YAAAA,CAAa6O,sBAAsB;AAAC,KAAA;AACrC,IAAA;AAAC7O,QAAAA,YAAAA,CAAayP,gBAAgB;AAAEzP,QAAAA,YAAAA,CAAa2P,mBAAmB;AAAE3P,QAAAA,YAAAA,CAAakK,qBAAqB;AAAC,KAAA;CACtG,EACDtI,OAAAA,CAAQqI,oBAAoB,CAACnX,IAAI,CAAA,EAGhCga,aAAaG,2BAA2B,CACzCjN,YAAa2P,CAAAA,mBAAmB,EAChC;AACE,IAAA;AAACld,QAAAA,UAAAA,CAAW6G,KAAK;AAAC,KAAA;AAClB,IAAA;AAAC7G,QAAAA,UAAAA,CAAWwH,UAAU;AAAC,KAAA;AACvB,IAAA;AAACxH,QAAAA,UAAAA,CAAW0H,UAAU;AAAC,KAAA;AACvB,IAAA;AAAC1H,QAAAA,UAAAA,CAAW4H,UAAU;AAAC,KAAA;AACvB,IAAA;AAAC5H,QAAAA,UAAAA,CAAWuG,UAAU;AAAC,KAAA;AACvB,IAAA;AAACvG,QAAAA,UAAAA,CAAW0G,UAAU;AAAC,KAAA;AACvB,IAAA;AAAC1G,QAAAA,UAAAA,CAAW8F,WAAW;AAAC,KAAA;AACxB,IAAA;AAAC9F,QAAAA,UAAAA,CAAWkG,YAAY;AAAC,KAAA;AACzB,IAAA;AAAClG,QAAAA,UAAAA,CAAWmd,UAAU;AAAC,KAAA;AACvB,IAAA;AAACnd,QAAAA,UAAAA,CAAWsH,UAAU;AAAC,KAAA;AACvB,IAAA;AAACtH,QAAAA,UAAAA,CAAWmH,SAAS;AAAC,KAAA;AACvB,CAAA,CAAA,EAMAkT,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAaiJ,aAAa,EAC1B;AAAC,IAAA;AAACjJ,QAAAA,YAAAA,CAAawJ,qBAAqB;AAAC,KAAA;CAAC,EACtC5H,OAAAA,CAAQmH,YAAY,CAACjW,IAAI,CAAA,EAGxBga,aAAaG,2BAA2B,CACzCjN,YAAawJ,CAAAA,qBAAqB,EAClC;AACE,IAAA;AACExJ,QAAAA,YAAAA,CAAagK,mBAAmB;AAChCvX,QAAAA,UAAAA,CAAW8H,UAAU;AACrByF,QAAAA,YAAAA,CAAa2J,4BAA4B;AACzClX,QAAAA,UAAAA,CAAW+H,WAAW;AACvB,KAAA;AACD,IAAA;AAACwF,QAAAA,YAAAA,CAAagK,mBAAmB;AAAEvX,QAAAA,UAAAA,CAAW8H,UAAU;AAAE9H,QAAAA,UAAAA,CAAW+H,WAAW;AAAC,KAAA;AACjF,IAAA;AAACwF,QAAAA,YAAAA,CAAagK,mBAAmB;AAAE3b,QAAAA,QAAAA,CAASqD,IAAI;AAAEe,QAAAA,UAAAA,CAAW+H,WAAW;AAAC,KAAA;CAC1E,EACDoH,OAAAA,CAAQsH,mBAAmB,CAACpW,IAAI,CAAA,EAG/Bga,aAAaG,2BAA2B,CACzCjN,YAAa2J,CAAAA,4BAA4B,EACzC;AACE,IAAA;AAAC3J,QAAAA,YAAAA,CAAakK,qBAAqB;AAAC,KAAA;AACpC,IAAA;AAAClK,QAAAA,YAAAA,CAAa2J,4BAA4B;AAAElX,QAAAA,UAAAA,CAAWsI,KAAK;AAAEiF,QAAAA,YAAAA,CAAakK,qBAAqB;AAAC,KAAA;CAClG,EACDtI,OAAAA,CAAQ2H,yBAAyB,CAACzW,IAAI,CAAA,EAGrCga,aAAaG,2BAA2B,CACzCjN,YAAagK,CAAAA,mBAAmB,EAChC;AAAC,IAAA;AAAChK,QAAAA,YAAAA,CAAa8E,cAAc;AAAC,KAAA;CAAC,EAC/BlD,OAAAA,CAAQkI,kBAAkB,CAAChX,IAAI,CAAA,EAG9Bga,aAAaG,2BAA2B,CACzCjN,YAAa8I,CAAAA,mBAAmB,EAChC;AAAC,IAAA;AAAC9I,QAAAA,YAAAA,CAAamH,kBAAkB;AAAEnH,QAAAA,YAAAA,CAAauI,2BAA2B;AAAC,KAAA;CAAC,EAC7E3G,OAAAA,CAAQ+G,kBAAkB,CAAC7V,IAAI,CAAA,EAG9Bga,aAAaG,2BAA2B,CACzCjN,YAAamH,CAAAA,kBAAkB,EAC/B;AAAC,IAAA;AAACnH,QAAAA,YAAAA,CAAasH,mBAAmB;AAAE7U,QAAAA,UAAAA,CAAW+H,WAAW;AAAC,KAAA;CAAC,EAC5DoH,OAAAA,CAAQkF,iBAAiB,CAAChU,IAAI,CAAA,EAG7Bga,aAAaG,2BAA2B,CACzCjN,YAAasH,CAAAA,mBAAmB,EAChC;AAAC,IAAA;AAACtH,QAAAA,YAAAA,CAAayH,eAAe;AAAC,KAAA;AAAE,IAAA;AAACzH,QAAAA,YAAAA,CAAayH,eAAe;AAAEzH,QAAAA,YAAAA,CAAa8H,uBAAuB;AAAC,KAAA;CAAC,EACtGlG,OAAAA,CAAQwF,kBAAkB,CAACtU,IAAI,CAAA,EAG9Bga,aAAaG,2BAA2B,CACzCjN,YAAayH,CAAAA,eAAe,EAC5B;AAAC,IAAA;AAACzH,QAAAA,YAAAA,CAAakE,oBAAoB;AAAEzR,QAAAA,UAAAA,CAAWmF,EAAE;AAAEnF,QAAAA,UAAAA,CAAW8H,UAAU;AAAC,KAAA;CAAC,EAC3EqH,OAAAA,CAAQ2F,cAAc,CAACzU,IAAI,CAAA,EAG1Bga,aAAaG,2BAA2B,CACzCjN,YAAa8H,CAAAA,uBAAuB,EACpC;AACE,IAAA;AAAC9H,QAAAA,YAAAA,CAAamI,qBAAqB;AAAC,KAAA;AACpC,IAAA;AAACnI,QAAAA,YAAAA,CAAa8H,uBAAuB;AAAErV,QAAAA,UAAAA,CAAWsI,KAAK;AAAEiF,QAAAA,YAAAA,CAAamI,qBAAqB;AAAC,KAAA;CAC7F,EACDvG,OAAAA,CAAQ8F,qBAAqB,CAAC5U,IAAI,CAAA,EAGjCga,aAAaG,2BAA2B,CACzCjN,YAAamI,CAAAA,qBAAqB,EAClC;AAAC,IAAA;AAACnI,QAAAA,YAAAA,CAAaoE,cAAc;AAAEpE,QAAAA,YAAAA,CAAaqI,oBAAoB;AAAC,KAAA;AAAE,IAAA;AAACrI,QAAAA,YAAAA,CAAaqI,oBAAoB;AAAC,KAAA;CAAC,EACvGzG,OAAAA,CAAQmG,oBAAoB,CAACjV,IAAI,CAAA,EAGhCga,aAAaG,2BAA2B,CACzCjN,YAAaqI,CAAAA,oBAAoB,EACjC;AACE,IAAA;AAACrI,QAAAA,YAAAA,CAAa8E,cAAc;AAAErS,QAAAA,UAAAA,CAAWmF,EAAE;AAAC,KAAA;AAC5C,IAAA;AAACoI,QAAAA,YAAAA,CAAa8E,cAAc;AAAErS,QAAAA,UAAAA,CAAWmF,EAAE;AAAEoI,QAAAA,YAAAA,CAAakF,eAAe;AAAC,KAAA;CAC3E,EACDtD,OAAAA,CAAQwG,mBAAmB,CAACtV,IAAI,CAAA,EAG/Bga,aAAaG,2BAA2B,CACzCjN,YAAa0I,CAAAA,cAAc,EAC3B;AAAC,IAAA;AAAC1I,QAAAA,YAAAA,CAAa6P,SAAS;AAAC,KAAA;AAAE,IAAA;AAAC7P,QAAAA,YAAAA,CAAa0I,cAAc;AAAE1I,QAAAA,YAAAA,CAAa6P,SAAS;AAAC,KAAA;CAAC,EACjFjO,OAAAA,CAAQ4G,aAAa,CAAC1V,IAAI,CAAA,EAGzBga,aAAaG,2BAA2B,CACzCjN,YAAa6P,CAAAA,SAAS,EACtB;AAAC,IAAA;AAAC7P,QAAAA,YAAAA,CAAa8P,kBAAkB;AAAC,KAAA;AAAE,IAAA;AAAC9P,QAAAA,YAAAA,CAAa+P,gBAAgB;AAAC,KAAA;AAAC,CAAA,CAAA,EAMnEjD,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAauI,2BAA2B,EACxC;AACE,IAAA;AAAC9V,QAAAA,UAAAA,CAAWgI,UAAU;AAAEhI,QAAAA,UAAAA,CAAWiI,WAAW;AAAC,KAAA;AAC/C,IAAA;AAACjI,QAAAA,UAAAA,CAAWgI,UAAU;AAAEuF,QAAAA,YAAAA,CAAa0I,cAAc;AAAEjW,QAAAA,UAAAA,CAAWiI,WAAW;AAAC,KAAA;CAC7E,EACDkH,OAAAA,CAAQ0G,wBAAwB,CAACxV,IAAI,CAAA,EAGpCga,aAAaG,2BAA2B,CACzCjN,YAAa8P,CAAAA,kBAAkB,EAC/B;AACE,IAAA;AAACrd,QAAAA,UAAAA,CAAWgI,UAAU;AAAEhI,QAAAA,UAAAA,CAAWiI,WAAW;AAAC,KAAA;AAC/C,IAAA;AAACsF,QAAAA,YAAAA,CAAa+C,WAAW;AAAE/C,QAAAA,YAAAA,CAAa0I,cAAc;AAAE1I,QAAAA,YAAAA,CAAaiD,eAAe;AAAC,KAAA;AACtF,CAAA,CAAA,EAMA6J,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAa+P,gBAAgB,EAC7B;AACE,IAAA;AAAC/P,QAAAA,YAAAA,CAAa6G,WAAW;AAAC,KAAA;AAC1B,IAAA;AAAC7G,QAAAA,YAAAA,CAAagQ,oBAAoB;AAAC,KAAA;AACnC,IAAA;AAAChQ,QAAAA,YAAAA,CAAaiQ,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAACjQ,QAAAA,YAAAA,CAAakQ,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAAClQ,QAAAA,YAAAA,CAAasD,cAAc;AAAC,KAAA;AAC9B,CAAA,CAAA,EAMAwJ,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAa6G,WAAW,EACxB;AACE,IAAA;AAAC7G,QAAAA,YAAAA,CAAamH,kBAAkB;AAAE1U,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;AACvD,IAAA;AAAC+E,QAAAA,YAAAA,CAAaoG,oBAAoB;AAAE3T,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;AACzD,IAAA;AACE5M,QAAAA,QAAAA,CAASwD,SAAS;AAClBmO,QAAAA,YAAAA,CAAa0O,mBAAmB;AAChC1O,QAAAA,YAAAA,CAAagG,mCAAmC;AAChDvT,QAAAA,UAAAA,CAAWwI,SAAS;AACrB,KAAA;AACD,IAAA;AAAC+E,QAAAA,YAAAA,CAAaoE,cAAc;AAAE3R,QAAAA,UAAAA,CAAWmF,EAAE;AAAEnF,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;AAClE,IAAA;AAAC+E,QAAAA,YAAAA,CAAaoE,cAAc;AAAE3R,QAAAA,UAAAA,CAAWmF,EAAE;AAAEoI,QAAAA,YAAAA,CAAa0G,eAAe;AAAEjU,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;CACjG,EACD2G,OAAAA,CAAQ+E,WAAW,CAAC7T,IAAI,CAAA,EAGvBga,aAAaG,2BAA2B,CACzCjN,YAAa0G,CAAAA,eAAe,EAC5B;AACE,IAAA;AAACjU,QAAAA,UAAAA,CAAWsI,KAAK;AAAEtI,QAAAA,UAAAA,CAAWmF,EAAE;AAAC,KAAA;AACjC,IAAA;AAACoI,QAAAA,YAAAA,CAAa0G,eAAe;AAAEjU,QAAAA,UAAAA,CAAWsI,KAAK;AAAEtI,QAAAA,UAAAA,CAAWmF,EAAE;AAAC,KAAA;CAChE,EACDgK,OAAAA,CAAQyE,cAAc,CAACvT,IAAI,CAAA,EAG1Bga,aAAaG,2BAA2B,CACzCjN,YAAaoG,CAAAA,oBAAoB,EACjC;AACE,IAAA;AAACpG,QAAAA,YAAAA,CAAa+D,kBAAkB;AAAC,KAAA;AACjC,IAAA;AAAC/D,QAAAA,YAAAA,CAAaoG,oBAAoB;AAAE3T,QAAAA,UAAAA,CAAWsI,KAAK;AAAEtI,QAAAA,UAAAA,CAAWmF,EAAE;AAAC,KAAA;AACpE,IAAA;AAACoI,QAAAA,YAAAA,CAAaoG,oBAAoB;AAAE3T,QAAAA,UAAAA,CAAWsI,KAAK;AAAEtI,QAAAA,UAAAA,CAAWmF,EAAE;AAAEoI,QAAAA,YAAAA,CAAakF,eAAe;AAAC,KAAA;AAClG,IAAA;AACElF,QAAAA,YAAAA,CAAaoG,oBAAoB;AACjC3T,QAAAA,UAAAA,CAAWsI,KAAK;AAChBtI,QAAAA,UAAAA,CAAWmF,EAAE;AACboI,QAAAA,YAAAA,CAAakF,eAAe;AAC5BzS,QAAAA,UAAAA,CAAW6G,KAAK;AAChB0G,QAAAA,YAAAA,CAAa6D,WAAW;AACzB,KAAA;AACD,IAAA;AAAC7D,QAAAA,YAAAA,CAAaoG,oBAAoB;AAAE3T,QAAAA,UAAAA,CAAWsI,KAAK;AAAEtI,QAAAA,UAAAA,CAAWmF,EAAE;AAAEnF,QAAAA,UAAAA,CAAW6G,KAAK;AAAE0G,QAAAA,YAAAA,CAAa6D,WAAW;AAAC,KAAA;CACjH,EACDjC,OAAAA,CAAQqE,kBAAkB,CAACnT,IAAI,CAAA,EAG9Bga,aAAaG,2BAA2B,CACzCjN,YAAa+D,CAAAA,kBAAkB,EAC/B;AACE,IAAA;AAAC/D,QAAAA,YAAAA,CAAakE,oBAAoB;AAAEzR,QAAAA,UAAAA,CAAWmF,EAAE;AAAC,KAAA;AAClD,IAAA;AAACoI,QAAAA,YAAAA,CAAakE,oBAAoB;AAAEzR,QAAAA,UAAAA,CAAWmF,EAAE;AAAEoI,QAAAA,YAAAA,CAAakF,eAAe;AAAC,KAAA;AAChF,IAAA;AACElF,QAAAA,YAAAA,CAAakE,oBAAoB;AACjCzR,QAAAA,UAAAA,CAAWmF,EAAE;AACboI,QAAAA,YAAAA,CAAakF,eAAe;AAC5BzS,QAAAA,UAAAA,CAAW6G,KAAK;AAChB0G,QAAAA,YAAAA,CAAa6D,WAAW;AACzB,KAAA;AACD,IAAA;AAAC7D,QAAAA,YAAAA,CAAakE,oBAAoB;AAAEzR,QAAAA,UAAAA,CAAWmF,EAAE;AAAEnF,QAAAA,UAAAA,CAAW6G,KAAK;AAAE0G,QAAAA,YAAAA,CAAa6D,WAAW;AAAC,KAAA;CAC/F,EACDjC,OAAAA,CAAQ8B,iBAAiB,CAAC5Q,IAAI,CAAA,EAG7Bga,aAAaG,2BAA2B,CACzCjN,YAAa6D,CAAAA,WAAW,EACxB;AACE,IAAA;AAAC7D,QAAAA,YAAAA,CAAakK,qBAAqB;AAAC,KAAA;AACpC,IAAA;AAACzX,QAAAA,UAAAA,CAAWgI,UAAU;AAAEuF,QAAAA,YAAAA,CAAamQ,gBAAgB;AAAE1d,QAAAA,UAAAA,CAAWiI,WAAW;AAAC,KAAA;AAC/E,CAAA,CAAA,EAMAoS,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAamQ,gBAAgB,EAC7B;AAAC,IAAA;AAACnQ,QAAAA,YAAAA,CAAa6D,WAAW;AAAC,KAAA;AAAE,IAAA;AAAC7D,QAAAA,YAAAA,CAAamQ,gBAAgB;AAAE1d,QAAAA,UAAAA,CAAWsI,KAAK;AAAEiF,QAAAA,YAAAA,CAAa6D,WAAW;AAAC,KAAA;AAAC,CAAA,CAAA,EAMxGiJ,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAagQ,oBAAoB,EACjC;AAAC,IAAA;AAACvd,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;AAAE,IAAA;AAAC+E,QAAAA,YAAAA,CAAaoK,UAAU;AAAE3X,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;AAAC,CAAA,CAAA,EAOxE6R,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAaiQ,mBAAmB,EAChC;AACE,IAAA;AAAC5hB,QAAAA,QAAAA,CAASe,EAAE;AAAEqD,QAAAA,UAAAA,CAAW8H,UAAU;AAAEyF,QAAAA,YAAAA,CAAaoK,UAAU;AAAE3X,QAAAA,UAAAA,CAAW+H,WAAW;AAAEwF,QAAAA,YAAAA,CAAa6P,SAAS;AAAC,KAAA;AAC7G,IAAA;AACExhB,QAAAA,QAAAA,CAASe,EAAE;AACXqD,QAAAA,UAAAA,CAAW8H,UAAU;AACrByF,QAAAA,YAAAA,CAAaoK,UAAU;AACvB3X,QAAAA,UAAAA,CAAW+H,WAAW;AACtBwF,QAAAA,YAAAA,CAAa6P,SAAS;AACtBxhB,QAAAA,QAAAA,CAASa,IAAI;AACb8Q,QAAAA,YAAAA,CAAa6P,SAAS;AACvB,KAAA;AACF,CAAA,CAAA,EAMA/C,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAakQ,mBAAmB,EAChC;AACE,IAAA;AAAC7hB,QAAAA,QAAAA,CAASgB,KAAK;AAAEoD,QAAAA,UAAAA,CAAW8H,UAAU;AAAEyF,QAAAA,YAAAA,CAAaoQ,SAAS;AAAE3d,QAAAA,UAAAA,CAAW+H,WAAW;AAAEwF,QAAAA,YAAAA,CAAa6P,SAAS;AAAC,KAAA;AAC/G,IAAA;AACExhB,QAAAA,QAAAA,CAASc,GAAG;AACZsD,QAAAA,UAAAA,CAAW8H,UAAU;AACrByF,QAAAA,YAAAA,CAAaqQ,kBAAkB;AAC/BrQ,QAAAA,YAAAA,CAAasQ,kBAAkB;AAC/B7d,QAAAA,UAAAA,CAAW+H,WAAW;AACtBwF,QAAAA,YAAAA,CAAa6P,SAAS;AACvB,KAAA;AACF,CAAA,CAAA,EAMA/C,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAa6J,mBAAmB,EAChC;AACE,IAAA;AACExb,QAAAA,QAAAA,CAASwD,SAAS;AAClBmO,QAAAA,YAAAA,CAAa0O,mBAAmB;AAChC1O,QAAAA,YAAAA,CAAagG,mCAAmC;AAChDvT,QAAAA,UAAAA,CAAWwI,SAAS;AACrB,KAAA;CACF,EACD2G,OAAAA,CAAQgI,kBAAkB,CAAC9W,IAAI,CAAA,EAG9Bga,aAAaG,2BAA2B,CACzCjN,YAAaqQ,CAAAA,kBAAkB,EAC/B;AAAC,IAAA;AAACrQ,QAAAA,YAAAA,CAAagQ,oBAAoB;AAAC,KAAA;AAAE,IAAA;AAAChQ,QAAAA,YAAAA,CAAa6G,WAAW;AAAC,KAAA;AAAC,CAAA,CAAA,EAMhEiG,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAaoQ,SAAS,EACtB;AACE,IAAA;AAACpQ,QAAAA,YAAAA,CAAaoK,UAAU;AAAC,KAAA;AACzB,IAAA;AAACpK,QAAAA,YAAAA,CAAakE,oBAAoB;AAAEzR,QAAAA,UAAAA,CAAWmF,EAAE;AAAEnF,QAAAA,UAAAA,CAAW6G,KAAK;AAAE0G,QAAAA,YAAAA,CAAa6D,WAAW;AAAC,KAAA;AAC/F,CAAA,CAAA,EAMAiJ,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAasQ,kBAAkB,EAC/B;AACE,IAAA;AAACtQ,QAAAA,YAAAA,CAAauQ,YAAY;AAAE9d,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;AACjD,IAAA;AAAC+E,QAAAA,YAAAA,CAAauQ,YAAY;AAAE9d,QAAAA,UAAAA,CAAWwI,SAAS;AAAE+E,QAAAA,YAAAA,CAAaoK,UAAU;AAAC,KAAA;AAC3E,CAAA,CAAA,EAMA0C,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAauQ,YAAY,EACzB;AAAC,IAAA;AAAC9d,QAAAA,UAAAA,CAAWuO,OAAO;AAAC,KAAA;AAAE,IAAA;AAAChB,QAAAA,YAAAA,CAAaoQ,SAAS;AAAC,KAAA;AAAC,CAAA,CAAA,EAM/CtD,YAAaG,CAAAA,2BAA2B,CACzCjN,YAAAA,CAAasD,cAAc,EAC3B;AACE,IAAA;AAACjV,QAAAA,QAAAA,CAASW,QAAQ;AAAEyD,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;AACzC,IAAA;AAAC5M,QAAAA,QAAAA,CAASU,KAAK;AAAE0D,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;AACtC,IAAA;AAAC5M,QAAAA,QAAAA,CAASkB,MAAM;AAAEkD,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;AACvC,IAAA;AAAC5M,QAAAA,QAAAA,CAASkB,MAAM;AAAEyQ,QAAAA,YAAAA,CAAaoK,UAAU;AAAE3X,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;AAChE,IAAA;AAAC5M,QAAAA,QAAAA,CAASiB,OAAO;AAAEmD,QAAAA,UAAAA,CAAWwI,SAAS;AAAC,KAAA;CACzC,EACD2G,OAAAA,CAAQsB,aAAa,CAACpQ,IAAI,CAAA,EAGzBga,aAAaG,2BAA2B,CACzCjN,YAAa+C,CAAAA,WAAW,EACxB;AAAC,IAAA;AAACtQ,QAAAA,UAAAA,CAAWgI,UAAU;AAAC,KAAA;CAAC,EACzBmH,OAAAA,CAAQkB,UAAU,CAAChQ,IAAI,CAAA,EAGtBga,aAAaG,2BAA2B,CACzCjN,YAAaiD,CAAAA,eAAe,EAC5B;AAAC,IAAA;AAACxQ,QAAAA,UAAAA,CAAWiI,WAAW;AAAC,KAAA;CAAC,EAC1BkH,OAAAA,CAAQoB,aAAa,CAAClQ,IAAI,CAAA,EAGzBga,aAAaG,2BAA2B,CACzCjN,YAAa2M,CAAAA,mBAAmB,EAChC;AAAC,IAAA;AAACla,QAAAA,UAAAA,CAAWmF,EAAE;AAAC,KAAA;CAAC,EACjBgK,OAAAA,CAAQ0I,kBAAkB,CAACxX,IAAI,CAAA,CAAA,CAAA;AAInC,IAAM0d,aAAgB,GAAA,WAAA;WACpBlQ,OAAQY,CAAAA,MAAM,CACZlB,YAAa6M,CAAAA,iBAAiB,EAC9BmB,kBAAmB5M,CAAAA,GAAG,CAAC,SAACpD,IAAAA,EAAAA;AAASA,QAAAA,OAAAA,IAAI,CAAC,CAAE,CAAA,CAAA;;;AAG5C,IAAMsB,qBAAqB,SAACkD,EAAAA,EAAAA;AAC1B,IAAA,IAAK,IAAIrP,CAAI,GAAA,CAAA,EAAGA,IAAI6a,kBAAmB3a,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;AAClD,QAAA,IAAMqM,IAAOwO,GAAAA,kBAAkB,CAAC7a,CAAAA,CAAE,CAAC,CAAE,CAAA,CAAA;AACrC,QAAA,IAAIqM,IAAM,EAAA;YACRgD,EAAGlD,CAAAA,kBAAkB,CAACnM,CAAGqM,EAAAA,IAAAA,CAAAA,CAAAA;AAC3B,SAAA;AACF,KAAA;AACF,CAAA;;ACr1Be,IAAA,SAAA,iBAAA,WAAA;AAAMiR,IAAAA,SAAAA,SAAAA,CAuBPC,UAAsB,EAAEC,QAAgB,EAAEC,SAA6B,EAAA;aAfnFC,YAAe,GAAA,IAAA,CAAA;QAgBb,IAAI,CAACH,UAAU,GAAGA,UAAAA,CAAAA;QAClB,IAAI,CAACC,QAAQ,GAAGA,QAAAA,CAAAA;QAChB,IAAI,CAACG,YAAY,GAAG,IAAItD,GAAAA,EAAAA,CAAAA;AACxB,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAiBoD,SAAW,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjBG,YAAAA,IAAAA,EAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,CAACD,YAAY,CAACrD,GAAG,CAACsD,EAAAA,CAAAA,CAAAA;AACxB,SAAA;AACA,QAAA,IAAI,CAAC3Q,EAAE,GA9BUqQ,UA8BGpQ,GAAG,EAAA,CAAA;;AA9BNoQ,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AAiCnBO,IAAAA,MAAAA,CAAAA,YAMC,GANDA,SAAAA,YAAAA,CAAaC,EAAsB,EAAA;AACjC,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAgBA,EAAI,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAATxN,YAAAA,IAAAA,CAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,IAAI,CAACqN,YAAY,CAAClD,GAAG,CAACnK,CAAI,CAAA,EAAA,SAAA;AAC9B,YAAA,IAAI,CAACqN,YAAY,CAACrD,GAAG,CAAChK,CAAAA,CAAAA,CAAAA;YACtB,IAAI,CAACyN,WAAW,GAAG,IAAA,CAAA;AACrB,SAAA;AACF,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAAA,CAAe9a,MAAc,EAAA;QAC3B,OAAO,IAAI,CAACqa,UAAU,CAACvQ,UAAU,CAAC,IAAI,CAACwQ,QAAQ,GAAGta,MAAO,CAAA,CAAA;AAC3D,KAAA,CAAA;IAEA+a,MAAAA,CAAAA,SAQC,GARDA,SAAAA,SAAAA,GAAAA;AACE,QAAA,IAAI,IAAI,CAACT,QAAQ,GAAG,IAAI,CAACD,UAAU,CAACvQ,UAAU,CAAC9M,MAAM,GAAG,GAAG,OAAO,IAAA,CAAA;AAC7D,aAAA;AACH,YAAA,IAAK,IAAIF,CAAAA,GAAI,IAAI,CAACwd,QAAQ,EAAExd,CAAAA,GAAI,IAAI,CAACud,UAAU,CAACvQ,UAAU,CAAC9M,MAAM,EAAEF,CAAK,EAAA,CAAA;gBACtE,IAAI,IAAI,CAACud,UAAU,CAACvQ,UAAU,CAAChN,CAAAA,CAAE,KAAKV,UAAAA,CAAWuO,OAAO,EAAE,OAAO,KAAA,CAAA;AACnE,aAAA;YACA,OAAO,IAAA,CAAA;AACT,SAAA;AACF,KAAA,CAAA;IAEAxL,MAAAA,CAAAA,OAKC,GALDA,SAAAA,OAAAA,GAAAA;AAIE,QAAA,OAAO,IA3DUib,SAAAA,CA2DI,IAAI,CAACC,UAAU,EAAE,IAAI,CAACC,QAAQ,GAAG,CAAG,EAAA,IAAI,CAACG,YAAY,CAAA,CAAA;AAC5E,KAAA,CAAA;AA5DmBL,IAAAA,aAAAA,CAAAA,SAAAA,EAAAA;;YASfS,GAAAA,EAAAA,aAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACL,YAAY,CAAA;AAC1B,aAAA;AACA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAgBtD,CAAU,EAAA;gBACxB,IAAI,CAACsD,YAAY,GAAGtD,CAAAA,CAAAA;AACtB,aAAA;;;YAEI8D,GAAAA,EAAAA,WAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACX,UAAU,CAACvQ,UAAU,CAAC,IAAI,CAACwQ,QAAQ,CAAC,CAAA;AAClD,aAAA;;;YACIW,GAAAA,EAAAA,YAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACZ,UAAU,CAACvQ,UAAU,CAAC,IAAI,CAACwQ,QAAQ,GAAG,CAAE,CAAA,CAAA;AACtD,aAAA;;;AArBmBF,IAAAA,OAAAA,SAAAA,CAAAA;;AAAAA,SAAAA,CACZpQ,GAAM,GAAA,CAAA;;ACFA,IAAA,KAAA,iBAAA,WAAA;AAAMkR,IAAAA,SAAAA,KAAAA,CA2CCC,KAA0B,EAAA;aA/B9CC,QAAW,GAAA,KAAA,CAAA;AAQHC,QAAAA,IAAAA,CAAAA,cAAAA,GAAuD,IAAInjB,GAAAA,EAAAA,CAAAA;AAwBjE,QAAA,IAAI,CAAC6R,EAAE,GA5CUmR,MA4CDlR,GAAG,EAAA,CAAA;AACnB,QAAA,IAAI,CAACsR,MAAM,GAAG,IAAInE,GAAQgE,CAAAA,EAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAC1B,QAAA,IAAI,CAACA,KAAK,GAAG,IAAIhE,GAAQgE,CAAAA,EAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AACzB,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAiBA,KAAO,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAbI,YAAAA,IAAAA,EAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAMC,UAAAA,GAAa,IAAI,CAACC,kBAAkB,CAACF,EAAGlB,CAAAA,UAAU,EAAEkB,EAAAA,CAAGjB,QAAQ,CAAA,CAAA;AACrE,YAAA,IAAI,CAACe,cAAc,CAAC3jB,GAAG,CAAC8jB,UAAYD,EAAAA,EAAAA,CAAAA,CAAAA;AACtC,SAAA;QAlDiBL,KAmDXze,CAAAA,IAAI,CAAC/E,GAAG,CAAC,IAAI,CAACqS,EAAE,EAAE,IAAI,CAAA,CAAA;;AAnDXmR,IAAAA,IAAAA,MAAAA,GAAAA,KAAAA,CAAAA,SAAAA,CAAAA;;AAuDnBO,IAAAA,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAmBpB,CAAAA,UAAsB,EAAEC,QAAgB,EAAA;AACzD,QAAA,OAAO,UAAGD,CAAWtQ,EAAE,GAAC,GAAGuQ,GAAAA,QAAAA,CAAAA;AAC7B,KAAA,CAAA;IAEAoB,MAAAA,CAAAA,eAcC,GAdDA,SAAAA,eAAAA,CAAgBrB,UAAsB,EAAEC,QAAgB,EAAEG,YAA4C,EAAA;QAA5CA,IAAAA,YAAAA,KAAAA,KAAAA,CAAAA,EAAAA,eAAmC,IAAItD,GAAAA,EAAAA,CAAAA;AAC/F,QAAA,IAAMwE,KAAQ,GAAA,IAAI,CAACF,kBAAkB,CAACpB,UAAYC,EAAAA,QAAAA,CAAAA,CAAAA;AAClD,QAAA,IAAM3S,OAAO,IAAI,CAAC0T,cAAc,CAACja,GAAG,CAACua,KAAAA,CAAAA,CAAAA;AACrC,QAAA,IAAIhU,IAAM,EAAA;AACR,YAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAiB8S,YAAc,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApBC,gBAAAA,IAAAA,EAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAI/S,IAAK8S,CAAAA,YAAY,CAAClD,GAAG,CAACmD,EAAK,CAAA,EAAA,SAAA;gBAC/B/S,IAAK8S,CAAAA,YAAY,CAACrD,GAAG,CAACsD,EAAAA,CAAAA,CAAAA;AACtB/S,gBAAAA,IAAAA,CAAKkT,WAAW,GAAG,IAAA,CAAA;AACrB,aAAA;YACA,OAAOlT,IAAAA,CAAAA;AACT,SAAA;AACA,QAAA,IAAMiU,OAAU,GAAA,IAAIxB,SAAUC,CAAAA,UAAAA,EAAYC,QAAUG,EAAAA,YAAAA,CAAAA,CAAAA;AACpD,QAAA,IAAI,CAACY,cAAc,CAAC3jB,GAAG,CAACikB,KAAOC,EAAAA,OAAAA,CAAAA,CAAAA;QAC/B,OAAOA,OAAAA,CAAAA;AACT,KAAA,CAAA;AAzEmBV,IAAAA,KAAAA,CAsBZrQ,MAcN,GAdD,SAAOA,MAAAA,CAAOsQ,KAAkB,EAAA;AAC9B,QAAA,IAAMU,QAAW,GAAA,IAAI,CAACC,SAAS,CAACX,KAAAA,CAAAA,CAAAA;AAChC,QAAA,IAAMY,QAAQ,IAAI,CAACC,UAAU,CAAC5a,GAAG,CAACya,QAAAA,CAAAA,CAAAA;AAClC,QAAA,IAAIE,KAAO,EAAA;AACT,YAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmBZ,KAAO,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAfc,gBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;;gBAETF,KAAML,CAAAA,eAAe,CAACO,IAAK5B,CAAAA,UAAU,EAAE4B,IAAK3B,CAAAA,QAAQ,EAAE2B,IAAAA,CAAKxB,YAAY,CAAA,CAAA;AACzE,aAAA;YACA,OAAOsB,KAAAA,CAAAA;AACT,SAAA;QAEA,IAAMG,QAAAA,GAAW,IAjCAhB,KAiCUC,CAAAA,KAAAA,CAAAA,CAAAA;AAC3B,QAAA,IAAI,CAACa,UAAU,CAACtkB,GAAG,CAACmkB,QAAUK,EAAAA,QAAAA,CAAAA,CAAAA;QAC9B,OAAOA,QAAAA,CAAAA;AACT,KAAA,CAAA;;AApCmBhB,IAAAA,KAAAA,CAuCZY,SAEN,GAFD,SAAOA,SAAAA,CAAUX,KAAkB,EAAA;QACjC,OAAOA,KAAAA,CAAMpQ,GAAG,CAAC,SAACpD,IAAAA,EAAAA;AAAS,YAAA,OAAGA,KAAK0S,UAAU,CAACtQ,EAAE,GAAC,GAAA,GAAGpC,KAAK2S,QAAQ,CAAA;AAAI/Z,SAAAA,CAAAA,CAAAA,IAAI,CAAC,GAAA,CAAA,CAAA;AAC5E,KAAA,CAAA;AAzCmB2a,IAAAA,aAAAA,CAAAA,KAAAA,EAAAA;;YAQfiB,GAAAA,EAAAA,OAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACb,MAAM,CAAA;AACpB,aAAA;;;YAGIT,GAAAA,EAAAA,aAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACM,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApBc,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;oBACT,IAAIA,IAAAA,CAAKpB,WAAW,EAAE,OAAO,IAAA,CAAA;AAC/B,iBAAA;gBACA,OAAO,KAAA,CAAA;AACT,aAAA;;;AAlBmBK,IAAAA,OAAAA,KAAAA,CAAAA;;AAAAA,KAAAA,CACZc,aAAqD,IAAI9jB,GAAAA,EAAAA,CAAAA;AAD7CgjB,KAAAA,CAEZze,OAA2B,IAAIvE,GAAAA,EAAAA,CAAAA;AAFnBgjB,KAAAA,CAGZlR,GAAM,GAAA,CAAA;;ACEf;;IAGO,IAAMoS,KAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,KAAAA,CAWCC,OAAgB,EAAA;AAVnBC,QAAAA,IAAAA,CAAAA,WAAAA,GAAgD,IAAIpkB,GAAAA,EAAAA,CAAAA;AACpDqkB,QAAAA,IAAAA,CAAAA,YAAAA,GAAiD,IAAIrkB,GAAAA,EAAAA,CAAAA;AAErDskB,QAAAA,IAAAA,CAAAA,WAAAA,GAAgC,IAAItkB,GAAAA,EAAAA,CAAAA;AACpCukB,QAAAA,IAAAA,CAAAA,SAAAA,GAA4B,IAAIvkB,GAAAA,EAAAA,CAAAA;iCAGnB,IAAA,CACdwkB,mBAAmC,EAAE,CAAA;QAG3C,IAAI,CAACL,OAAO,GAAGA,OAAAA,CAAAA;;AAZND,IAAAA,IAAAA,MAAAA,GAAAA,KAAAA,CAAAA,SAAAA,CAAAA;IAeXO,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,QAAAA,GAAAA;AACE,QAAA,IAAI,CAACC,eAAe,EAAA,CAAA;AACpB,QAAA,IAAI,CAACC,eAAe,EAAA,CAAA;AACtB,KAAA,CAAA;IAEA,MAAQA,CAAAA,eAIP,GAJD,SAAQA,eAAAA,GAAAA;AACN,QAAA,IAAMC,kBAAqB,GAAA;YAAC,IAAI1C,SAAAA,CAAU,IAAI,CAACiC,OAAO,CAACnS,WAAW,CAAC,CAAE,CAAA,EAAE,CAAG,EAAA;AAAC9N,gBAAAA,UAAAA,CAAW4B,GAAG;AAAC,aAAA,CAAA;AAAE,SAAA,CAAA;QAC5F,IAAM+e,UAAAA,GAAa7B,KAAMrQ,CAAAA,MAAM,CAACiS,kBAAAA,CAAAA,CAAAA;QAChC,IAAI,CAACE,YAAY,CAACD,UAAAA,CAAAA,CAAAA;AACpB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQC,YAOP,GAPD,SAAQA,YAAAA,CAAajB,KAAY,EAAA;QAC/B,IAAI,CAACA,KAAMlB,CAAAA,WAAW,EAAE,OAAA;QACxB,IAAI,CAACoC,QAAQ,CAAClB,KAAAA,CAAAA,CAAAA;AACd,QAAA,IAAMmB,SAAY,GAAA,IAAI,CAACC,eAAe,CAACpB,KAAAA,CAAAA,CAAAA;AACvC,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAiBmB,SAAW,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjBE,YAAAA,IAAAA,EAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACJ,YAAY,CAACI,EAAAA,CAAAA,CAAAA;AACpB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQH,QAQP,GARD,SAAQA,QAAAA,CAASlB,KAAY,EAAA;QAC3B,IAAmBA,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,KAAAA,CAAMZ,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAArBc,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACA,IAAKlB,CAAAA,SAAS,EAAI,EAAA;gBACrB,IAAI,CAACsC,gBAAgB,CAACtB,KAAOE,EAAAA,IAAAA,CAAAA,CAAAA;AAC/B,aAAA;AACF,SAAA;AACAF,QAAAA,KAAAA,CAAMX,QAAQ,GAAG,IAAA,CAAA;QACjB,OAAOW,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQsB,gBA+CP,GA/CD,SAAQA,gBAAiBtB,CAAAA,KAAY,EAAEpU,IAAe,EAAA;AACpD,QAAA,IAAI8O,YAAaC,CAAAA,UAAU,CAAC/O,IAAAA,CAAKqT,SAAS,CAAG,EAAA,OAAA;QAE7C,IAAMsC,cAAAA,GAAiB,IAAI,CAACjB,OAAO,CAAC/R,iBAAiB,CAAe3C,KAAKqT,SAAS,CAAA,CAAA;QAElF,IAAIrT,IAAAA,CAAKsT,UAAU,EAAE;AACnB,YAAA,IAAIsC,kBAAkB,IAAIpG,GAAAA,EAAAA,CAAAA;YAC1B,IAAIqG,YAAAA,CAAAA;AACJ,YAAA,IAAIC,aAAgB,GAAA,KAAA,CAAA;;;AAGpB,YAAA,IAAK,IAAI3gB,CAAI,GAAA,CAAA,EAAGme,UAAatT,GAAAA,IAAAA,CAAKmT,cAAc,CAAC,CAAA,CAAA,EAAI,CAAC,CAACG,YAAYA,UAAatT,GAAAA,IAAAA,CAAKmT,cAAc,CAAC,EAAEhe,CAAI,CAAA,CAAA;gBACxG,IAAI2Z,YAAAA,CAAaC,UAAU,CAACuE,UAAa,CAAA,EAAA;AACvCsC,oBAAAA,eAAAA,CAAgBnG,GAAG,CAAW6D,UAAAA,CAAAA,CAAAA;oBAC9BwC,aAAgB,GAAA,IAAA,CAAA;AAChB,oBAAA,MAAA;AACF,iBAAA;AACAD,gBAAAA,YAAAA,GAAe,IAAI,CAAClB,WAAW,CAAClb,GAAG,CAAe6Z,UAAAA,CAAAA,CAAAA;AAClD,gBAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAgBuC,YAAc,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAnBpQ,oBAAAA,IAAAA,CAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTmQ,oBAAAA,eAAAA,CAAgBnG,GAAG,CAAChK,CAAAA,CAAAA,CAAAA;AACtB,iBAAA;AACA,gBAAA,IAAI,CAACoQ,YAAajG,CAAAA,GAAG,CAACnb,UAAAA,CAAWuO,OAAO,CAAG,EAAA,MAAA;AAC7C,aAAA;YACA,IAAI,CAAC8S,kBAAiBD,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAAA,CAAcjG,GAAG,CAACnb,UAAAA,CAAWuO,OAAO,CAAG,CAAA,EAAA;gBAC3D,IAAgBhD,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK8S,YAAY,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAxBrN,oBAAAA,IAAAA,EAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTmQ,oBAAAA,eAAAA,CAAgBnG,GAAG,CAAChK,EAAAA,CAAAA,CAAAA;AACtB,iBAAA;AACF,aAAA;AAEA,YAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAyBkQ,cAAgB,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA9BjD,gBAAAA,IAAAA,UAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAMuB,OAAUG,GAAAA,KAAAA,CAAML,eAAe,CAACrB,UAAY,EAAA,CAAA,CAAA,CAAA;AAClD,gBAAA,IAAI,CAAC0B,KAAAA,CAAMI,KAAK,CAAC5E,GAAG,CAACqE,OAAAA,CAAAA,IAAY,CAAC8B,YAAAA,CAAMrG,QAAQ,CAACkG,eAAiB3B,EAAAA,OAAAA,CAAQnB,YAAY,CAAG,EAAA;oBACvFsB,KAAMI,CAAAA,KAAK,CAAC/E,GAAG,CAACwE,OAAAA,CAAAA,CAAAA;AAChBA,oBAAAA,OAAAA,CAAQjB,YAAY,CAAC4C,eAAAA,CAAAA,CAAAA;oBACrB,IAAI,CAACF,gBAAgB,CAACtB,KAAOH,EAAAA,OAAAA,CAAAA,CAAAA;AAC/B,iBAAA;AACF,aAAA;SACK,MAAA;AACL,YAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAyB0B,cAAgB,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA9BjD,gBAAAA,IAAAA,WAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAMuB,QAAUG,GAAAA,KAAAA,CAAML,eAAe,CAACrB,WAAY,EAAA,CAAA,CAAA,CAAA;AAClD,gBAAA,IAAI,CAAC0B,KAAMI,CAAAA,KAAK,CAAC5E,GAAG,CAACqE,QAAY,CAAA,IAAA,CAAC8B,YAAMrG,CAAAA,QAAQ,CAAC1P,IAAK8S,CAAAA,YAAY,EAAEmB,QAAAA,CAAQnB,YAAY,CAAG,EAAA;oBACzFsB,KAAMI,CAAAA,KAAK,CAAC/E,GAAG,CAACwE,QAAAA,CAAAA,CAAAA;oBAChBA,QAAQjB,CAAAA,YAAY,CAAChT,IAAAA,CAAK8S,YAAY,CAAA,CAAA;oBACtC,IAAI,CAAC4C,gBAAgB,CAACtB,KAAOH,EAAAA,QAAAA,CAAAA,CAAAA;AAC/B,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQuB,eA+CP,GA/CD,SAAQA,eAAAA,CAAgBpB,KAAY,EAAA;AAClC,QAAA,IAAM4B,UAA8C,IAAIzlB,GAAAA,EAAAA,CAAAA;AAClB,QAAA,IAAA,qBAAA,CAAA;AAAtC,QAAA,IAAM0lB,gBAAgC,GAAA,CAAA,qBAAA,GAAA,IAAI,CAACpB,WAAW,CAACpb,GAAG,CAAC2a,KAAAA,CAAMhS,EAAE,CAAA,KAAA,IAAA,GAA7B,wBAAkC,IAAI7R,GAAAA,EAAAA,CAAAA;AAC1C,QAAA,IAAA,mBAAA,CAAA;AAAlC,QAAA,IAAM2lB,cAA4B,GAAA,CAAA,mBAAA,GAAA,IAAI,CAACpB,SAAS,CAACrb,GAAG,CAAC2a,KAAAA,CAAMhS,EAAE,CAAA,KAAA,IAAA,GAA3B,sBAAgC,IAAI7R,GAAAA,EAAAA,CAAAA;AAEtE,QAAA,IAAI,CAACskB,WAAW,CAAC9kB,GAAG,CAACqkB,KAAAA,CAAMhS,EAAE,EAAE6T,gBAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAI,CAACnB,SAAS,CAAC/kB,GAAG,CAACqkB,KAAAA,CAAMhS,EAAE,EAAE8T,cAAAA,CAAAA,CAAAA;QAE7B,IAAwB9B,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,KAAAA,CAAMI,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA1B2B,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAIA,SAAAA,CAAU/C,SAAS,EAAI,EAAA;AACzB,gBAAA,IAAItD,SAAAA,KAAAA,CAAAA,CAAAA;AACJ,gBAAA,IAAIqG,UAAUzD,UAAU,CAACxQ,IAAI,KAAKF,YAAAA,CAAaU,KAAK,EAAE;oBACpDoN,MAAS,GAAA;AACPA,wBAAAA,MAAAA,EAAQjS,QAAQuY,MAAM;wBACtBrG,MAAQoG,EAAAA,SAAAA,CAAUzD,UAAU,CAACtQ,EAAE;AACjC,qBAAA,CAAA;iBACK,MAAA;oBACL0N,MAAS,GAAA;AAAEA,wBAAAA,MAAAA,EAAQjS,QAAQwY,MAAM;AAAC,qBAAA,CAAA;AACpC,iBAAA;gBAEA,IAAgBF,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,SAAAA,CAAUrD,YAAY,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA7BrN,oBAAAA,IAAAA,CAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,oBAAA,IAAI,CAAC6Q,UAAU,CAACL,gBAAAA,EAAkBxQ,CAAGqK,EAAAA,MAAAA,CAAAA,CAAAA;AACvC,iBAAA;aACK,MAAA;gBACL,IAAMyG,QAAAA,GAAWJ,UAAU3e,OAAO,EAAA,CAAA;AAClCue,gBAAAA,YAAAA,CAAM1G,aAAa,CAAC2G,OAASG,EAAAA,SAAAA,CAAU9C,SAAS,EAAEkD,QAAAA,CAAAA,CAAAA;AACpD,aAAA;AAEAJ,YAAAA,SAAAA,CAAUjD,WAAW,GAAG,KAAA,CAAA;AAC1B,SAAA;AAEA,QAAA,IAAMqC,YAAY,IAAI/F,GAAAA,EAAAA,CAAAA;QACtB,IAA0BwG,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,OAAAA,CAAQ7V,OAAO,EAAI,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;4CAAjCqW,EAAIhD,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,EAAAA,KAAAA,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACd,YAAA,IAAMe,WAAWhB,KAAMrQ,CAAAA,MAAM,CAACuT,KAAAA,CAAMC,IAAI,CAAClD,KAAAA,CAAAA,CAAAA,CAAAA;YACzC,IAAI1E,YAAAA,CAAaC,UAAU,CAACyH,EAAK,CAAA,EAAA;AAC/B,gBAAA,IAAI,CAACF,UAAU,CAACL,gBAAAA,EAA4BO,EAAI,EAAA;AAC9C1G,oBAAAA,MAAAA,EAAQjS,QAAQ8Y,KAAK;AACrB5G,oBAAAA,MAAAA,EAAQwE,SAASnS,EAAE;AACrB,iBAAA,CAAA,CAAA;aACK,MAAA;AACL8T,gBAAAA,cAAAA,CAAenmB,GAAG,CAAeymB,EAAIjC,EAAAA,QAAAA,CAASnS,EAAE,CAAA,CAAA;AAClD,aAAA;AAEAmT,YAAAA,SAAAA,CAAU9F,GAAG,CAAC8E,QAAAA,CAAAA,CAAAA;AAChB,SAAA;QAEA,OAAOgB,SAAAA,CAAAA;AACT,KAAA,CAAA;8DAGA,MAAQe,CAAAA,UAkBP,GAlBD,SAAQA,WAAWM,KAAkB,EAAEC,QAAkB,EAAE/G,MAAkB,EAAA;QAC3E,IAAMgH,KAAAA,GAAQF,KAAMnd,CAAAA,GAAG,CAACod,QAAAA,CAAAA,CAAAA;AACxB,QAAA,IAAIC,SAAS,CAACf,YAAAA,CAAMlG,aAAa,CAACiH,OAAOhH,MAAS,CAAA,EAAA;;AAEhD,YAAA,IAAI+G,QAAaxmB,KAAAA,QAAAA,CAASa,IAAI,IAAI4lB,MAAMhH,MAAM,KAAKjS,OAAQ8Y,CAAAA,KAAK,IAAI7G,MAAOA,CAAAA,MAAM,KAAKjS,OAAAA,CAAQuY,MAAM,EAAE;AACpG,gBAAA,OAAA;AACF,aASA;AACF,SAAA;QACAQ,KAAM7mB,CAAAA,GAAG,CAAC8mB,QAAU/G,EAAAA,MAAAA,CAAAA,CAAAA;AACtB,KAAA,CAAA;;IAGA,MAAQmF,CAAAA,eAIP,GAJD,SAAQA,eAAAA,GAAAA;QACN,IAAyB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACP,OAAO,CAACnS,WAAW,CAACe,KAAK,CAAC,CAAI,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjDoP,YAAAA,IAAAA,UAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,CAACqE,qBAAqB,CAACrE,UAAAA,CAAWxQ,IAAI,CAAA,CAAA;AAC5C,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ6U,qBAwCP,GAxCD,SAAQA,qBAAAA,CAAsBjU,EAAgB,EAAA;;AAE5C,QAAA,IAAMkU,MAAM,IAAI,CAACjC,gBAAgB,CAACkC,SAAS,CAAC,SAACjX,IAAAA,EAAAA;mBAASA,IAAS8C,KAAAA,EAAAA,CAAAA;;QAC/D,IAAIkU,GAAAA,KAAQ,CAAC,CAAG,EAAA;AACd,YAAA,IAAME,cAAc,IAAI,CAACvC,WAAW,CAAClb,GAAG,CAACqJ,EAAAA,CAAAA,CAAAA;AACzC,YAAA,IAAMqU,GAAM,GAAA,IAAI,CAACpC,gBAAgB,CAAC1f,MAAM,CAAA;AACxC,YAAA,IAAK,IAAIF,CAAIgiB,GAAAA,GAAAA,GAAM,CAAGhiB,EAAAA,CAAAA,GAAI6hB,KAAK7hB,CAAK,EAAA,CAAA;AAClC,gBAAA,IAAMiiB,KAAQ,GAAA,IAAI,CAACrC,gBAAgB,CAAC5f,CAAE,CAAA,CAAA;AACtC,gBAAA,IAAI,CAACwf,WAAW,CAAC5kB,GAAG,CAACqnB,KAAOF,EAAAA,WAAAA,CAAAA,CAAAA;AAC9B,aAAA;YACA,OAAOA,WAAAA,CAAAA;AACT,SAAA;AACA,QAAA,IAAI,CAACnC,gBAAgB,CAAC9f,IAAI,CAAC6N,EAAAA,CAAAA,CAAAA;AAE3B,QAAA,IAAM6S,iBAAiB,IAAI,CAACjB,OAAO,CAAC/R,iBAAiB,CAACG,EAAAA,CAAAA,CAAAA;AACtD,QAAA,IAAMuU,WAAW,IAAI7H,GAAAA,EAAAA,CAAAA;AACrB,QAAA,IAAI,CAACmF,WAAW,CAAC5kB,GAAG,CAAC+S,EAAIuU,EAAAA,QAAAA,CAAAA,CAAAA;QACzB,IAAI,IAAI,CAAC3C,OAAO,CAAC7R,YAAY,CAACC,EAAAA,CAAAA,EAAKuU,QAAS5H,CAAAA,GAAG,CAAChb,UAAAA,CAAWuO,OAAO,CAAA,CAAA;AAElE,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAyB2S,cAAgB,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9BjD,YAAAA,IAAAA,UAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAIvd,EAAI,GAAA,CAAA,CAAA;AACR,YAAA,MAAOA,KAAIud,UAAWvQ,CAAAA,UAAU,CAAC9M,MAAM,EAAEF,EAAK,EAAA,CAAA;AAC5C,gBAAA,IAAMqhB,EAAK9D,GAAAA,UAAAA,CAAWvQ,UAAU,CAAChN,EAAE,CAAA,CAAA;gBACnC,IAAI2Z,YAAAA,CAAaC,UAAU,CAACyH,EAAK,CAAA,EAAA;AAC/Ba,oBAAAA,QAAAA,CAAS5H,GAAG,CAAW+G,EAAAA,CAAAA,CAAAA;AACvB,oBAAA,MAAA;AACF,iBAAA;AAEA,gBAAA,IAAMc,eAAkB,GAAA,IAAI,CAACP,qBAAqB,CAAeP,EAAAA,CAAAA,CAAAA;AAEjE,gBAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAmBc,eAAiB,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzBtX,oBAAAA,IAAAA,IAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,oBAAA,IAAIA,SAASvL,UAAWuO,CAAAA,OAAO,EAAEqU,QAAAA,CAAS5H,GAAG,CAACzP,IAAAA,CAAAA,CAAAA;AAChD,iBAAA;AACA,gBAAA,IAAI,CAAC,IAAI,CAAC0U,OAAO,CAAC7R,YAAY,CAAe2T,EAAK,CAAA,EAAA,MAAA;AACpD,aAAA;YACA,IAAIrhB,EAAAA,KAAMud,UAAWvQ,CAAAA,UAAU,CAAC9M,MAAM,EAAEgiB,QAAS5H,CAAAA,GAAG,CAAChb,UAAAA,CAAWuO,OAAO,CAAA,CAAA;AACzE,SAAA;QAEA,IAAI,CAAC+R,gBAAgB,CAACxV,GAAG,EAAA,CAAA;QACzB,OAAO8X,QAAAA,CAAAA;AACT,KAAA,CAAA;AAnNW5C,IAAAA,OAAAA,KAAAA,CAAAA;AAoNZ,CAAA,EAAA;;AChND;;IAGO,IAAM8C,kBAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,kBAAAA,CAsCS1C,WAA6B,EAAEC,SAAyB,EAAEJ,OAAgB,EAAA;AAjCtF8C,QAAAA,IAAAA,CAAAA,eAAAA,GAA+C,EAAE,CAAA;QAkCvD,IAAI,CAAC3C,WAAW,GAAGA,WAAAA,CAAAA;QACnB,IAAI,CAACC,SAAS,GAAGA,SAAAA,CAAAA;QACjB,IAAI,CAACJ,OAAO,GAAGA,OAAAA,CAAAA;QACf,IAAI,CAAC+C,eAAe,GAAG,IAAIC,gBAAAA,EAAAA,CAAAA;;AA1ClBH,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AA6CXI,IAAAA,MAAAA,CAAAA,KA+DC,GA/DDA,SAAAA,KAAAA,CAAMC,MAAuC,EAAA;QAC3C,IAAI,CAACH,eAAe,CAACvd,KAAK,EAAA,CAAA;QAC1B,IAAMlK,KAAAA,GAAQ6nB,YAAYC,GAAG,EAAA,CAAA;QAC7B,IAA6D,KAAA,GAAA,IAAI,EAAxCC,iBAAoC,KAArDP,CAAAA,eAAAA,EAAiCC,kBAAoB,KAApBA,CAAAA,eAAAA,CAAAA;AACzCM,QAAAA,cAAAA,CAAe9iB,IAAI,CAAC,CAAA,CAAA,CAAA;QAEpB,IAAI+iB,SAAAA,GAAYJ,OAAOK,IAAI,EAAA,CAAA;AAC3B,QAAA,IAAIC,SAAY,GAAA,CAAA,CAAA;AAChB,QAAA,MAAO,IAAM,CAAA;YACXA,SAAa,IAAA,CAAA,CAAA;YACb,IAAM1e,KAAAA,GAAQwe,UAAU/Q,KAAK,CAAA;YAE7B,IAAMkR,UAAAA,GAAa,IAAI,CAAClC,gBAAgB,CAACxc,GAAG,CAACD,MAAM3E,IAAI,CAAA,CAAA;AACvD,YAAA,IAAIsjB,CAAAA,UAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAAA,CAAYrI,MAAM,MAAKjS,OAAAA,CAAQ8Y,KAAK,EAAE;AACxCoB,gBAAAA,cAAAA,CAAe9iB,IAAI,CAACuE,KAAO2e,EAAAA,UAAAA,CAAWpI,MAAM,CAAA,CAAA;AAC5CiI,gBAAAA,SAAAA,GAAYJ,OAAOK,IAAI,EAAA,CAAA;aAClB,MAAA,IAAIE,CAAAA,UAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAAA,CAAYrI,MAAM,MAAKjS,OAAAA,CAAQwY,MAAM,EAAE;gBAChDxgB,MAAOuiB,CAAAA,IAAI,CACR,yDAAyDF,GAAAA,SAAAA,GAAU,oBAClEL,IAAAA,WAAYC,CAAAA,GAAG,EAAK9nB,GAAAA,KAAI,CACzB,GAAA,IAAA,CAAA,CAAA;AAEHynB,gBAAAA,eAAAA,CAAgBzW,UAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAA1ByW,eAAgBzW,CAAAA,UAAU,MAA1ByW,eAA6BA,EAAAA,eAAAA,CAAAA,CAAAA;gBAC7B,OAAOA,eAAAA,CAAgB1W,aAAa,CAACxB,GAAG,EAAA,CAAA;aACnC,MAAA,IAAI4Y,CAAAA,UAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAAA,CAAYrI,MAAM,MAAKjS,OAAAA,CAAQuY,MAAM,EAAE;gBAChD,IAAMrG,MAAAA,GAASoI,WAAWpI,MAAM,CAAA;AAChC,gBAAA,IAAMsI,mBAAmB,IAAI,CAAC3D,OAAO,CAACzR,iBAAiB,CAAC8M,MAAAA,CAAAA,CAAAA;AACxD,gBAAA,IAAMuI,eAAkBb,GAAAA,eAAAA,CAAgBhW,kBAAkB,CAAC4W,iBAAiBjW,EAAE,CAAA,CAAA;AAE9E,gBAAA,IAAMmW,SAAmC,EAAE,CAAA;gBAE3C,IAAK,IAAIpjB,CAAIkjB,GAAAA,gBAAAA,CAAiBlW,UAAU,CAAC9M,MAAM,GAAG,CAAA,EAAGF,CAAK,IAAA,CAAA,EAAGA,CAAK,EAAA,CAAA;AAChE,oBAAA,IAAIkjB,iBAAiBlW,UAAU,CAAChN,EAAE,KAAKV,UAAAA,CAAWuO,OAAO,EAAE,SAAA;AAC3D+U,oBAAAA,cAAAA,CAAexY,GAAG,EAAA,CAAA;oBAClB,IAAM/F,MAAAA,GAAQue,eAAexY,GAAG,EAAA,CAAA;oBAChC,IAAS,WAAL/F,CAAAA,MAAAA,EAAiBzD,SAAW,CAAA,EAAA;AAC9BwiB,wBAAAA,MAAAA,CAAO9V,OAAO,CAACjJ,MAAAA,CAAAA,CAAAA;qBACV,MAAA;AACL,wBAAA,IAAM+E,OAAUkZ,GAAAA,eAAAA,CAAgB1W,aAAa,CAACxB,GAAG,EAAA,CAAA;AACjDgZ,wBAAAA,MAAAA,CAAO9V,OAAO,CAAClE,OAAAA,CAAAA,CAAAA;AACjB,qBAAA;AACF,iBAAA;AACA+Z,gBAAAA,eAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAAA,KAAAA,CAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA;AAAkBb,oBAAAA,eAAAA;AAAoBc,iBAAAA,EAAAA,MAAAA,CAAAA,CAAAA,CAAAA;gBAEtC,IAAMzD,SAAAA,GAAY,IAAI,CAACoB,cAAc,CAAA;gBACrC6B,cAAe9iB,CAAAA,IAAI,CAACojB,gBAAAA,CAAiBnW,IAAI,CAAA,CAAA;AAEzC,gBAAA,IAAMsW,YAAY1D,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAWrb,GAAG,CAAC4e,iBAAiBnW,IAAI,CAAA,CAAA;AACtD6V,gBAAAA,cAAAA,CAAe9iB,IAAI,CAACujB,SAAAA,CAAAA,CAAAA;AACpB,gBAAA,SAAA;aACK,MAAA;AACL,gBAAc7jB,cAAeY,CAAAA,aAAa,CACvC,sBAAmBiE,KAAMxD,CAAAA,MAAM,EAChCa,aAAAA,CAAY4hB,gBAAgB,EAC5BviB,SAAAA,CAAUwiB,mBAAmB,EAC7Blf,MAAM7D,QAAQ,EAAA;gBAKhB,OAAO,IAAA,CAAA;AACT,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IA5GW4hB,kBA0BJrU,CAAAA,MAUN,GAVD,SAAOA,MAAAA,GAAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAACyV,UAAU,EAAE;AACpB,YAAA,IAAMjE,OAAUlC,GAAAA,aAAAA,EAAAA,CAAAA;YAChB,IAAMoG,SAAAA,GAAY,IAAInE,KAAMC,CAAAA,OAAAA,CAAAA,CAAAA;AAC5BkE,YAAAA,SAAAA,CAAU5D,QAAQ,EAAA,CAAA;YAClB,IAAI,CAAC2D,UAAU,GAAG,IA/BXpB,kBAAAA,CA+BkCqB,UAAU/D,WAAW,EAAE+D,SAAU9D,CAAAA,SAAS,EAAEJ,OAAAA,CAAAA,CAAAA;AACrFpT,YAAAA,kBAAAA,CAAmB,IAAI,CAACqX,UAAU,CAAClB,eAAe,CAAA,CAAA;AACpD,SAAA;QAEA,OAAO,IAAI,CAACkB,UAAU,CAAA;AACxB,KAAA,CAAA;AApCWpB,IAAAA,aAAAA,CAAAA,kBAAAA,EAAAA;;YAOCsB,GAAAA,EAAAA,UAAAA;AAAZ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACrB,eAAe,CAAC,IAAI,CAACA,eAAe,CAACniB,MAAM,GAAG,CAAE,CAAA,CAAA;AAC9D,aAAA;;;YACY4gB,GAAAA,EAAAA,kBAAAA;AAAZ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACpB,WAAW,CAACpb,GAAG,CAAC,IAAI,CAACof,QAAQ,CAAA,CAAA;AAC3C,aAAA;;;YACY3C,GAAAA,EAAAA,gBAAAA;AAAZ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACpB,SAAS,CAACrb,GAAG,CAAC,IAAI,CAACof,QAAQ,CAAA,CAAA;AACzC,aAAA;;;AAfWtB,IAAAA,OAAAA,kBAAAA,CAAAA;AA0HZ,CAAA,EAAA;;AC7ID,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,IAAI,uBAAuB,CAAC;AAC5B;AACA,IAAI,OAAO,GAAG,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,CAAC;AACtG;;ACGO,IAAA,WAAA,iBAAA,WAAA;aAAMuB,WAST,CAAgBC,KAAgB,EAChC,IAAgC,EAChC,QAAsC,EACtBC,IAAkB,EAAA;aAHlBD,KAAAA,GAAAA,KAAAA,CAAAA;aACAE,IAAAA,GAAAA,IAAAA,CAAAA;aACAtjB,QAAAA,GAAAA,QAAAA,CAAAA;aACAqjB,IAAAA,GAAAA,IAAAA,CAAAA;AAEhB,QAAA,IAAIA,IAAM,EAAA;YACR,IAAI,CAACE,YAAY,GAAG,IAAI,CAACF,IAAI,CAAC5V,GAAG,CAAC,SAACpD,IAAAA,EAAAA;AAASA,gBAAAA,OAAAA,IAAAA,CAAKhK,MAAM,CAAA;;AACvD,YAAA,IAAI,CAACmjB,aAAa,GAAG,IAAIC,OAAO,MAAC,GAAM,IAAI,CAACF,YAAY,CAACtgB,IAAI,CAAC,OAAK,MAAO,EAAA,GAAA,CAAA,CAAA;AAC5E,SAAA;;AAjBSkgB,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAoBXO,IAAAA,MAAAA,CAAAA,kBAQC,GARDA,SAAAA,kBAAAA,CAAmBL,IAAc,EAAA;;AACX,QAAA,IAAA,UAAA,CAAA;QAApB,IAAIA,IAAAA,CAAK3jB,MAAM,MAAA,CAAK,UAAA,GAAA,IAAI,CAAC2jB,IAAI,KAAA,IAAA,GAAA,KAAA,CAAA,GAAT,UAAW3jB,CAAAA,MAAM,CAAE,EAAA;YACrC,MAAMV,cAAAA,CAAeY,aAAa,CAAC,2BAA6BsB,EAAAA,WAAAA,CAAYyiB,iBAAiB,EAAE,EAAA,EAAI,IAAI,CAAC3jB,QAAQ,CAAA,CAAA;AAClH,SAAA;AAEA,QAAA,OAAO,IAAI,CAACsjB,IAAI,CAACjjB,MAAM,CAACujB,OAAO,CAAC,IAAI,CAACJ,aAAa,EAAE,SAACK,CAAAA,EAAAA;AACnD,YAAA,OAAOR,IAAI,CAAC,KAAA,CAAKE,YAAY,CAACO,OAAO,CAACD,CAAG,CAAA,CAAA,CAAA;AAC3C,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AA5BWV,IAAAA,aAAAA,CAAAA,WAAAA,EAAAA;;YAIPY,GAAAA,EAAAA,YAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACW,gBAAA,IAAA,UAAA,CAAA;gBAAT,OAAO,CAAC,GAAC,UAAA,GAAA,IAAI,CAACV,IAAI,KAAA,IAAA,GAAA,KAAA,CAAA,GAAT,WAAW3jB,MAAM,CAAA,CAAA;AAC5B,aAAA;;;AANWyjB,IAAAA,OAAAA,WAAAA,CAAAA;AA6BZ,CAAA,EAAA;;ACpCM,IAAA,QAAKa,iBAAAA,SAAAA,QAAAA,EAAAA;;;;;;eAMF,QAAA,CAAA,QAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA,CAAA;cAED,QAAA,CAAA,QAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;;;eAIC,QAAA,CAAA,QAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAA,CAAA;cAED,QAAA,CAAA,QAAA,CAAA,IAAA,CAAA,GAAA,EAAA,CAAA,GAAA,IAAA,CAAA;cAEA,QAAA,CAAA,QAAA,CAAA,IAAA,CAAA,GAAA,EAAA,CAAA,GAAA,IAAA,CAAA;cAEA,QAAA,CAAA,QAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAA,CAAA;cAEA,QAAA,CAAA,QAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAA,CAAA;cAEA,QAAA,CAAA,QAAA,CAAA,IAAA,CAAA,GAAA,EAAA,CAAA,GAAA,IAAA,CAAA;aAED,QAAA,CAAA,QAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA,CAAA;cAEC,QAAA,CAAA,QAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAA,CAAA;cAEA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;aAED,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;cAEC,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;aAED,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;cAEC,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAA,CAAA;aAED,QAAA,CAAA,QAAA,CAAA,SAAA,CAAA,GAAA,EAAA,CAAA,GAAA,SAAA,CAAA;;AAtCIA,IAAAA,OAAAA,QAAAA,CAAAA;AA0CX,CAAA,CAAA,EAAA,CAAA,CAAA;AAEM,IAAA,UAAKC,iBAAAA,SAAAA,UAAAA,EAAAA;;;;;;;;;;;AAAAA,IAAAA,OAAAA,UAAAA,CAAAA;AAYX,CAAA,CAAA,EAAA,CAAA,CAAA;AAEM,IAAMC,SAAY,GAAA,IAAItpB,GAAwB,CAAA;AACnD,IAAA;AAAC,QAAA,SAAA;;AAA6B,KAAA;AAC9B,IAAA;AAAC,QAAA,QAAA;;AAA2B,KAAA;AAC5B,IAAA;AAAC,QAAA,KAAA;;AAAqB,KAAA;AACtB,IAAA;AAAC,QAAA,QAAA;;AAA2B,KAAA;AAC5B,IAAA;AAAC,QAAA,SAAA;;AAA6B,KAAA;AAC9B,IAAA;AAAC,QAAA,OAAA;;AAAyB,KAAA;AAC1B,IAAA;AAAC,QAAA,OAAA;;AAAyB,KAAA;AAC1B,IAAA;AAAC,QAAA,QAAA;;AAA2B,KAAA;AAC5B,IAAA;AAAC,QAAA,UAAA;;AAA+B,KAAA;AAChC,IAAA;AAAC,QAAA,SAAA;;AAA8B,KAAA;CAChC,CAAE;;AC/DI,IAAA,OAAA,iBAAA,WAAA;AAAMupB,IAAAA,SAAAA,OAAAA,GAAAA,EAAAA;AAAAA,IAAAA,OAAAA,CACJC,MA8BN,GA9BD,SAAOA,MACLC,CAAAA,QAAyB,EACzBtkB,MAAc,EAAA;AAKd,QAAA,IAAMkM,MAAgB,EAAE,CAAA;AACxB,QAAA,IAAIqY,QAAW,GAAA,CAAA,CAAA;AACf,QAAA,IAAIC,YAAe,GAAA,CAAA,CAAA;AAEnB,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAkBF,QAAU,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjBG,YAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAMC,WAAAA,GAAc1kB,MAAO4N,CAAAA,KAAK,CAAC2W,QAAAA,EAAUE,IAAIE,YAAY,CAACrqB,KAAK,CAACI,KAAK,CAAA,CAAA;AACvEwR,YAAAA,GAAAA,CAAI3M,IAAI,CAACmlB,WAAaD,EAAAA,GAAAA,CAAIZ,OAAO,CAAA,CAAA;YAEjC,IAAMe,eAAAA,GAAkBJ,eAAeE,WAAY/kB,CAAAA,MAAM,GAAG8kB,GAAIZ,CAAAA,OAAO,CAAClkB,MAAM,CAAA;AAU9E4kB,YAAAA,QAAAA,GAAWE,GAAIE,CAAAA,YAAY,CAACpqB,GAAG,CAACG,KAAK,CAAA;YACrC8pB,YAAeI,GAAAA,eAAAA,CAAAA;AACjB,SAAA;AACA1Y,QAAAA,GAAAA,CAAI3M,IAAI,CAACS,MAAO4N,CAAAA,KAAK,CAAC2W,QAAAA,CAAAA,CAAAA,CAAAA;QACtB,OAAOrY,GAAAA,CAAIhJ,IAAI,CAAC,EAAA,CAAA,CAAA;AAClB,KAAA,CAAA;AA/BWkhB,IAAAA,OAAAA,CAiCJS,gBAgBN,GAhBD,SAAOA,gBACLP,CAAAA,QAGG,EACHtkB,MAAc,EAAA;AAEd,QAAA,IAAMkM,MAAgB,EAAE,CAAA;AACxB,QAAA,IAAIqY,QAAW,GAAA,CAAA,CAAA;AACf,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAkBD,QAAU,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjBG,YAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAMC,WAAAA,GAAc1kB,MAAO4N,CAAAA,KAAK,CAAC2W,QAAAA,EAAUE,IAAItgB,KAAK,CAAC7J,KAAK,CAACI,KAAK,CAAA,CAAA;AAChEwR,YAAAA,GAAAA,CAAI3M,IAAI,CAACmlB,WAAaD,EAAAA,GAAAA,CAAIZ,OAAO,CAAA,CAAA;AACjCU,YAAAA,QAAAA,GAAWE,GAAItgB,CAAAA,KAAK,CAAC5J,GAAG,CAACG,KAAK,CAAA;AAChC,SAAA;AACAwR,QAAAA,GAAAA,CAAI3M,IAAI,CAACS,MAAO4N,CAAAA,KAAK,CAAC2W,QAAAA,CAAAA,CAAAA,CAAAA;QACtB,OAAOrY,GAAAA,CAAIhJ,IAAI,CAAC,EAAA,CAAA,CAAA;AAClB,KAAA,CAAA;AAjDWkhB,IAAAA,OAAAA,OAAAA,CAAAA;AAkDZ,CAAA,EAAA;;AC3Cc,IAAA,SAAA,iBAAA,SAAA,WAAA,EAAA;AAAMU,IAAAA,SAAAA,CAAAA,SAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,SAAAA,CAUjB9kB,MAAc,EAAA;;AAMd,QAAA,KAAA,GAAA,WAAA,CAAA,IAAA,CAAA,IAAA,EAAMA,uBAfA+kB,QAAW,GAAA,CAAA,CAAA;;;AADAD,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AAuBnB;;;AAGC,MACDE,MAAAA,CAAAA,aAQC,GARDA,SAAAA,cAAcC,aAAuB,EAAA;AACnC,QAAA,IAAMC,SAAY,GAAA,IAAI,CAACC,mBAAmB,CAACF,aAAAA,CAAAA,CAAAA;QAC3C,IAAI;AAACf,YAAAA,UAAAA,CAAWkB,EAAE;AAAElB,YAAAA,UAAAA,CAAWmB,KAAK;AAAEnB,YAAAA,UAAAA,CAAWoB,MAAM;AAAC,SAAA,CAACC,QAAQ,CAAML,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAW/lB,IAAI,CAAG,EAAA;YACvF,IAAI,CAAC4lB,QAAQ,IAAI,CAAA,CAAA;SACZ,MAAA,IAAI,CAAKG,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAW/lB,IAAI,MAAK+kB,UAAAA,CAAWsB,KAAK,EAAE;YACpD,IAAI,CAACT,QAAQ,IAAI,CAAA,CAAA;AACnB,SAAA;QACA,OAAOG,SAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;AAEC,MACDO,MAAAA,CAAAA,kBAaC,GAbDA,SAAAA,mBAAmBC,aAAqB,EAAA;AACtC,QAAA,IAAMxZ,MAAmB,EAAE,CAAA;AAC3B,QAAA,MAAO,IAAM,CAAA;YACX,IAAI,CAACjK,SAAS,CAAC,IAAA,CAAA,CAAA;AACf,YAAA,IAAIrB,WAAWG,QAAQ,CAAC,IAAI,CAACa,cAAc,EAAK,CAAA,EAAA;AAC9CsK,gBAAAA,GAAAA,CAAI3M,IAAI,CAAC,IAAI,CAAComB,QAAQ,EAAA,CAAA,CAAA;AACxB,aAAA,MAAO,IAAI,IAAI,CAAChkB,UAAU,OAAO+jB,aAAe,EAAA;AAC9C,gBAAA,IAAI,CAAC1jB,QAAQ,EAAA,CAAA;gBACb,OAAOkK,GAAAA,CAAAA;aACF,MAAA;AACL,gBAAA,IAAI,CAAClK,QAAQ,EAAA,CAAA;AACf,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA2jB,IAAAA,MAAAA,CAAAA,QA8BC,GA9BDA,SAAAA,QAAAA,CAASC,aAAqB,EAAA;AAArBA,QAAAA,IAAAA,0BAAAA,aAAgB,GAAA,KAAA,CAAA;AACvB,QAAA,IAAIA,aAAe,EAAA;AACjB,YAAA,MAAO,CAAChlB,UAAAA,CAAWG,QAAQ,CAAC,IAAI,CAACa,cAAc,EAAA,CAAA,IAAO,CAAC,IAAI,CAACF,KAAK,EAAI,CAAA;AACnE,gBAAA,IAAI,CAACM,QAAQ,EAAA,CAAA;AACf,aAAA;SACK,MAAA;YACL,IAAI,CAACC,SAAS,CAAC,IAAA,CAAA,CAAA;AACjB,SAAA;AAEA,QAAA,IAAI,IAAI,CAACP,KAAK,EAAA,EAAI,OAAOf,GAAAA,CAAAA;QAEzB,IAAMrG,KAAAA,GAAQ,IAAI,CAACgH,aAAa,CAAA;QAChC,MAAOV,UAAAA,CAAWG,QAAQ,CAAC,IAAI,CAACa,cAAc,EAAA,CAAA,IAAO,CAAC,IAAI,CAACF,KAAK,EAAI,CAAA;AAClE,YAAA,IAAI,CAACM,QAAQ,EAAA,CAAA;AACf,SAAA;QACA,IAAMzH,GAAAA,GAAM,IAAI,CAAC+G,aAAa,CAAA;AAC9B,QAAA,IAAMwG,OAAO,IAAI,CAACvG,OAAO,CAACqM,KAAK,CAACtT,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;AACvC,QAAA,IAAIA,QAAQD,KAAO,EAAA;AACjB,YAAA,IAAI,CAACyI,UAAU,CAAC,IAAI,CAAC8iB,iBAAiB,CAAC,CAAI,CAAA,EAAA,gBAAA,CAAA,CAAA;AAC7C,SAAA;QACA,IAAMC,EAAAA,GAAK3B,SAAUpgB,CAAAA,GAAG,CAAC+D,IAAAA,CAAAA,CAAAA;AACzB,QAAA,IAAIge,EAAI,EAAA;AACN,YAAA,IAAMhiB,KAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;AAChCD,YAAAA,KAAAA,CAAMzJ,GAAG,CAACyrB,EAAAA,EAAIhe,MAAM,IAAI,CAAC+d,iBAAiB,CAAC,CAAA,CAAA,CAAA,CAAA;YAC3C,OAAO/hB,KAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,IAAMA,MAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;QAChCD,MAAMzJ,CAAAA,GAAG,CAAC4pB,QAAAA,CAASvX,EAAE,EAAE5E,IAAM,EAAA,IAAI,CAAC+d,iBAAiB,CAAC/d,IAAAA,CAAKnI,MAAM,CAAA,CAAA,CAAA;QAC/D,OAAOmE,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;AAEC,MACD+hB,MAAAA,CAAAA,iBAQC,GARDA,SAAAA,kBAAkBljB,MAAc,EAAA;AAC9B,QAAA,OAAOnC,UAAUC,cAAc,CAC7B,IAAI,CAACa,aAAa,GAAGqB,MAAAA,CAAAA,CAAAA;AAMzB,KAAA,CAAA;AAEA;;;AAGC,MACD,MAASe,CAAAA,SA4BR,GA5BD,SAASA,UAAUC,OAAiB,EAAA;AAClC,QAAA,IAAI,CAACnB,oBAAoB,EAAA,CAAA;QACzB,IAAI,IAAI,CAACd,KAAK,EAAI,EAAA;AAChB,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAA4B,KAAA,GAAA,IAAI,EAAf1B,SAAW,KAApBuB,CAAAA,OAAAA,CAAAA;QACR,IAAIjH,KAAAA,GAAQ,IAAI,CAACgH,aAAa,CAAA;AAC9B,QAAA,IAAIykB,KAAQ,GAAA,KAAA,CAAA;QACZ,IAAK,IAAIrmB,IAAIM,MAAOL,CAAAA,MAAM,EAAE,IAAI,CAAC2B,aAAa,GAAG5B,CAAK,EAAA;YACpD,IAAIkB,UAAAA,CAAWK,cAAc,CAACjB,MAAAA,CAAO6B,UAAU,CAAC,IAAI,CAACP,aAAa,CAAI,CAAA,EAAA;AACpE,gBAAA,IAAI,CAACU,QAAQ,EAAA,CAAA;gBACb+jB,KAAQ,GAAA,IAAA,CAAA;aACH,MAAA;AACL,gBAAA,IAAIA,KAAO,EAAA;AACT,oBAAA,MAAA;AACF,iBAAA;AACA,gBAAA,IAAI,CAAC/jB,QAAQ,EAAA,CAAA;AACb,gBAAA,IAAI,CAACQ,oBAAoB,EAAA,CAAA;gBACzBlI,KAAQ,GAAA,IAAI,CAACgH,aAAa,CAAA;AAC5B,aAAA;AACF,SAAA;AAEA,QAAA,IAAMhB,SAASN,MAAO4N,CAAAA,KAAK,CAACtT,KAAO,EAAA,IAAI,CAACgH,aAAa,CAAA,CAAA;AACrD,QAAA,IAAM4K,GAAM7L,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;QAC9B,IAAME,SAAAA,GAAYkgB,SAAUpgB,CAAAA,GAAG,CAACzD,MAAAA,CAAAA,CAAAA;AAChC4L,QAAAA,GAAAA,CAAI7R,GAAG,CAAC4J,SAAAA,IAAAA,IAAAA,GAAAA,SAAAA,GAAaggB,SAASvX,EAAE,EAAEpM,MAAQ,EAAA,IAAI,CAACulB,iBAAiB,CAAC,IAAI,CAACvkB,aAAa,GAAGhH,KAAAA,CAAAA,CAAAA,CAAAA;QACtFqJ,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAUuI,KAAK,IAAI,CAAA,CAAA;QACnB,OAAOA,GAAAA,CAAAA;AACT,KAAA,CAAA;IAEA8Z,MAAAA,CAAAA,gBAiBC,GAjBDA,SAAAA,gBAAAA,GAAAA;QACE,IAAI,CAAC/jB,SAAS,CAAC,IAAA,CAAA,CAAA;AACf,QAAA,IAAI,IAAI,CAACN,UAAU,EAAA,KAAO,GAAK,EAAA;AAC7B,YAAA,IAAI,CAACoB,UAAU,CAAC,IAAI,CAAC8iB,iBAAiB,CAAC,CAAI,CAAA,EAAA,gCAAA,CAAA,CAAA;AAC7C,SAAA;AACA,QAAA,IAAMprB,cAAiB,GAAA,IAAI,CAACorB,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAC9C,QAAA,IAAI,CAAC7jB,QAAQ,EAAA,CAAA;QACb,IAAM1H,KAAAA,GAAQ,IAAI,CAACgH,aAAa,CAAA;AAChC,QAAA,MAAO,IAAI,CAACK,UAAU,EAAA,KAAO,GAAO,IAAA,CAAC,IAAI,CAACD,KAAK,EAAA,CAAI,IAAI,CAACM,QAAQ,EAAA,CAAA;QAChE,IAAI,IAAI,CAACN,KAAK,EAAI,EAAA;AAChB,YAAA,IAAI,CAACqB,UAAU,CAAC,IAAI,CAAC8iB,iBAAiB,CAAC,CAAI,CAAA,EAAA,gCAAA,CAAA,CAAA;AAC7C,SAAA;QACA,IAAM/d,IAAAA,GAAO,IAAI,CAACvG,OAAO,CAACqM,KAAK,CAACtT,KAAAA,EAAO,IAAI,CAACgH,aAAa,CAAA,CAAA;AAEzD,QAAA,IAAMwC,KAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;AAChCD,QAAAA,KAAAA,CAAMzJ,GAAG,CAAC4pB,QAASgC,CAAAA,YAAY,EAAEne,IAAMrN,EAAAA,cAAAA,CAAAA,CAAAA;QACvC,OAAOqJ,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEAoiB,IAAAA,MAAAA,CAAAA,UAKC,GALDA,SAAAA,UAAAA,CAAWC,IAAY,EAAA;QACrB,IAAMnmB,MAAAA,GAAS,IAAI,CAACuB,OAAO,CAAA;AAC3B,QAAA,MAAOvB,MAAM,CAAC,IAAI,CAACsB,aAAa,CAAC,KAAK6kB,IAAAA,IAAQ,CAAC,IAAI,CAACzkB,KAAK,EAAI,CAAA;AAC3D,YAAA,IAAI,CAACM,QAAQ,EAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;IAEAokB,MAAAA,CAAAA,oBAqBC,GArBDA,SAAAA,oBAAAA,GAAAA;QAIE,IAAM9rB,KAAAA,GAAQ,IAAI,CAACgH,aAAa,CAAA;AAChC,QAAA,IAAM7G,cAAiB,GAAA,IAAI,CAACorB,iBAAiB,CAAC,CAAA,CAAA,CAAA;QAE9C,IAAMQ,QAAAA,GAAW,IAAI,CAACtB,QAAQ,CAAA;QAC9B,IAAIG,SAAAA,GAAY,IAAI,CAACF,aAAa,EAAA,CAAA;AAElC,QAAA,MAAO,IAAM,CAAA;YACX,IAAIE,SAAAA,CAAU/lB,IAAI,KAAK+kB,UAAWsB,CAAAA,KAAK,IAAIa,QAAAA,GAAW,CAAM,KAAA,IAAI,CAACtB,QAAQ,EAAE,MAAA;iBACtE,IAAI;AAACb,gBAAAA,UAAAA,CAAWoC,IAAI;AAAEpC,gBAAAA,UAAAA,CAAWqC,IAAI;aAAC,CAAChB,QAAQ,CAAaL,SAAU/lB,CAAAA,IAAI,KAAKknB,QAAa,KAAA,IAAI,CAACtB,QAAQ,EAC5G,MAAA;YACFG,SAAY,GAAA,IAAI,CAACF,aAAa,EAAA,CAAA;AAChC,SAAA;AAEA,QAAA,IAAMwB,QAAQ,IAAI,CAACjlB,OAAO,CAACqM,KAAK,CAACtT,KAAAA,EAAO,IAAI,CAACgH,aAAa,GAAG4jB,SAAAA,CAAU5kB,MAAM,CAACX,MAAM,GAAG,CAAA,CAAA,CAAA;AACvF,QAAA,IAAMmE,KAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;AAChCD,QAAAA,KAAAA,CAAMzJ,GAAG,CAAC4pB,QAASuC,CAAAA,KAAK,EAAEA,KAAO/rB,EAAAA,cAAAA,CAAAA,CAAAA;QACjC,OAAO;YAAEqJ,KAAAA,EAAAA,KAAAA;YAAO2iB,aAAevB,EAAAA,SAAAA;AAAU,SAAA,CAAA;AAC3C,KAAA,CAAA;AAEAwB,IAAAA,MAAAA,CAAAA,eAeC,GAfDA,SAAAA,eAAgBC,CAAAA,EAAU,EAAEC,EAAU,EAAA;QACpC,IAAI,CAACV,UAAU,CAACS,EAAAA,CAAAA,CAAAA;AAChB,QAAA,IAAIljB,KAAQ,GAAA,CAAA,CAAA;QACZ,IAAMzD,MAAAA,GAAS,IAAI,CAACuB,OAAO,CAAA;QAE3B,GAAG;AACD,YAAA,IAAMe,UAAUtC,MAAM,CAAC,IAAI,CAACsB,aAAa,CAAC,CAAA;AAE1C,YAAA,IAAIgB,YAAYqkB,EAAI,EAAA;AAClBljB,gBAAAA,KAAAA,EAAAA,CAAAA;aACK,MAAA,IAAInB,YAAYskB,EAAI,EAAA;AACzBnjB,gBAAAA,KAAAA,EAAAA,CAAAA;AACF,aAAA;AACA,YAAA,IAAI,CAACzB,QAAQ,EAAA,CAAA;AACf,SAAA,OAASyB,QAAQ,CAAG,EAAA;AACtB,KAAA,CAAA;AAEA;;MAGAojB,MAAAA,CAAAA,eAOC,GAPDA,SAAAA,eAAAA,GAAAA;QACE,IAAMR,QAAAA,GAAW,IAAI,CAACtB,QAAQ,CAAA;QAC9B,IAAIG,SAAAA,GAAY,IAAI,CAACF,aAAa,EAAA,CAAA;AAClC,QAAA,MAAO,CAAC,IAAI,CAACtjB,KAAK,EAAOwjB,KAAAA,UAAU/lB,IAAI,KAAK+kB,UAAWsB,CAAAA,KAAK,IAAIa,QAAW,GAAA,CAAA,KAAM,IAAI,CAACtB,QAAQ,CAAG,CAAA;YAC/FG,SAAY,GAAA,IAAI,CAACF,aAAa,EAAA,CAAA;AAChC,SAAA;QACA,OAAO,IAAI,CAACa,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAChC,KAAA,CAAA;IAEAiB,MAAAA,CAAAA,YAMC,GANDA,SAAAA,YAAAA,GAAAA;QACE,IAAIxiB,OAAAA,GAAU,IAAI,CAAChD,aAAa,CAAA;QAChC,MAAO,IAAA,CAAKuC,IAAI,CAAC,IAAI,CAACtC,OAAO,CAAC+C,QAAQ,CAAG,CAAA;YACvCA,OAAW,IAAA,CAAA,CAAA;AACb,SAAA;AACA,QAAA,OAAO,IAAI,CAAC/C,OAAO,CAAC+C,OAAQ,CAAA,CAAA;AAC9B,KAAA,CAAA;IAEAyiB,MAAAA,CAAAA,WAaC,GAbDA,SAAAA,WAAAA,GAAAA;QACE,IAAMzsB,KAAAA,GAAQ,IAAI,CAACgH,aAAa,CAAA;AAChC,QAAA,MAAOV,WAAWC,KAAK,CAAC,IAAI,CAACe,cAAc,EAAK,CAAA,CAAA;AAC9C,YAAA,IAAI,CAACI,QAAQ,EAAA,CAAA;AACf,SAAA;AACA,QAAA,IAAI,IAAI,CAACV,aAAa,KAAKhH,KAAO,EAAA;AAChC,YAAA,IAAI,CAACyI,UAAU,CAAC,IAAI,CAAC8iB,iBAAiB,CAAC,CAAI,CAAA,EAAA,kBAAA,CAAA,CAAA;AAC7C,SAAA;QACA,IAAMmB,OAAAA,GAAU,IAAI,CAACzlB,OAAO,CAACqM,KAAK,CAACtT,KAAAA,EAAO,IAAI,CAACgH,aAAa,CAAA,CAAA;AAE5D,QAAA,IAAMwC,KAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;QAChCD,KAAMzJ,CAAAA,GAAG,CAAC4pB,QAASgD,CAAAA,YAAY,EAAED,OAAS,EAAA,IAAI,CAACnB,iBAAiB,CAAC,CAAA,CAAA,CAAA,CAAA;QACjE,OAAO/hB,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;MAGAojB,MAAAA,CAAAA,cAkCC,GAlCDA,SAAAA,cAAAA,GAAAA;QACE,IAAI,CAACjlB,SAAS,CAAC,KAAA,CAAA,CAAA;QACf,IAAM3H,KAAAA,GAAQ,IAAI,CAACgH,aAAa,CAAA;AAEhC,QAAA,IAAM6lB,WAA0B,EAAE,CAAA;AAElC,QAAA,MAAO,IAAI,CAACxlB,UAAU,EAAA,KAAO,IAAM,CAAA;YACjC,IAAI,IAAI,CAACD,KAAK,EAAI,EAAA;gBAChB,IAAM0lB,IAAAA,GAAO,IAAI,CAAC7lB,OAAO,CAACqM,KAAK,CAACtT,KAAAA,EAAO,IAAI,CAACgH,aAAa,CAAA,CAAA;AAEzD,gBAAA,IAAMwC,KAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;gBAChCD,KAAMzJ,CAAAA,GAAG,CAAC4pB,QAAAA,CAASoD,WAAW,EAAED,IAAM,EAAA,IAAI,CAACvB,iBAAiB,CAACuB,IAAAA,CAAKznB,MAAM,CAAA,CAAA,CAAA;gBACxE,OAAOmE,KAAAA,CAAAA;AACT,aAAA;AACA,YAAA,IAAI,CAAC9B,QAAQ,EAAA,CAAA;YACb,IAAMslB,YAAAA,GAAe,IAAI,CAACC,aAAa,EAAA,CAAA;AACvC,YAAA,IAAID,YAAc,EAAA;gBAChBA,YAAahtB,CAAAA,KAAK,CAACI,KAAK,IAAIJ,KAAAA,CAAAA;gBAC5BgtB,YAAa/sB,CAAAA,GAAG,CAACG,KAAK,IAAIJ,KAAAA,CAAAA;AAC1B6sB,gBAAAA,QAAAA,CAAS5nB,IAAI,CAAC+nB,YAAAA,CAAAA,CAAAA;AAChB,aAAA;AACF,SAAA;QACA,IAAIF,KAAAA,GAAO,IAAI,CAAC7lB,OAAO,CAACqM,KAAK,CAACtT,KAAAA,EAAO,IAAI,CAACgH,aAAa,CAAA,CAAA;QACvD,IAAI6lB,QAAAA,CAASxnB,MAAM,EAAE;;AAEnBynB,YAAAA,KAAAA,GAAOhD,QAAQS,gBAAgB,CAC7BsC,QAASzZ,CAAAA,GAAG,CAAC,SAACpD,IAAAA,EAAAA;AAAU,gBAAA,OAAA;oBAAEnG,KAAOmG,EAAAA,IAAAA;oBAAMuZ,OAAS,EAAA,EAAA;AAAG,iBAAA,CAAA;AACnDuD,aAAAA,CAAAA,EAAAA,KAAAA,CAAAA,CAAAA;AAEJ,SAAA;AAEA,QAAA,IAAMtjB,MAAQzD,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;QAChCD,MAAMzJ,CAAAA,GAAG,CAAC4pB,QAAAA,CAASoD,WAAW,EAAED,KAAM,EAAA,IAAI,CAACvB,iBAAiB,CAACuB,KAAAA,CAAKznB,MAAM,CAAA,CAAA,CAAA;QACxE,OAAOmE,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQqhB,mBAMP,GAND,SAAQA,mBAAAA,CAAoBxhB,OAAiB,EAAA;AAC3C,QAAA,MAAO,IAAM,CAAA;AACX,YAAA,IAAMG,KAAQ,GAAA,IAAI,CAACJ,SAAS,CAACC,OAAAA,CAAAA,CAAAA;AAC7B,YAAA,IAAIG,yBAAAA,KAAOxD,CAAAA,MAAM,CAACknB,UAAU,CAAC,MAAM,OAAO1jB,KAAAA,CAAAA;YAC1C,IAAI,IAAI,CAACpC,KAAK,EAAI,EAAA,OAAA;AACpB,SAAA;AACF,KAAA,CAAA;IAEA,MAAQ6lB,CAAAA,aAkBP,GAlBD,SAAQA,aAAAA,GAAAA;AACN,QAAA,IAAI,IAAI,CAAC9kB,IAAI,CAAC,OAAO,IAAM,EAAA;AACzB,YAAA,IAAMnI,KAAQ,GAAA,IAAI,CAACurB,iBAAiB,CAAC,CAAA,CAAA,CAAA;;YAErC,MAAO,IAAI,CAAClkB,UAAU,EAAA,KAAO,QAAQ,CAAC,IAAI,CAACD,KAAK,EAAI,CAAA;AAClD,gBAAA,IAAI,CAACM,QAAQ,EAAA,CAAA;AACf,aAAA;AACA,YAAA,OAAOxB,UAAUE,WAAW,CAACpG,KAAO,EAAA,IAAI,CAACmH,cAAc,EAAA,CAAA,CAAA;AACzD,SAAA,MAAO,IAAI,IAAI,CAACgB,IAAI,CAAC,OAAO,IAAM,EAAA;AAChC,YAAA,IAAMnI,MAAQ,GAAA,IAAI,CAACurB,iBAAiB,CAAC,CAAA,CAAA,CAAA;;YAErC,IAAI,CAAC/jB,OAAO,CAAC,CAAA,CAAA,CAAA;YACb,MAAO,IAAI,CAACW,IAAI,CAAC,CAAA,CAAA,KAAO,QAAQ,CAAC,IAAI,CAACf,KAAK,EAAI,CAAA;AAC7C,gBAAA,IAAI,CAACM,QAAQ,EAAA,CAAA;AACf,aAAA;YACA,IAAI,CAACF,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,YAAA,OAAOtB,UAAUE,WAAW,CAACpG,QAAO,IAAI,CAACurB,iBAAiB,CAAC,CAAA,CAAA,CAAA,CAAA;AAC7D,SAAA;AACF,KAAA,CAAA;AA5SmBf,IAAAA,OAAAA,SAAAA,CAAAA;AAAkB1jB,CAAAA,CAAAA,WAAAA,CAAAA;;ACUvC,iBACO,IAAMqmB,QAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,QAAAA,GAAAA,EAAAA;AAAAA,IAAAA,QAAAA,CAcJjjB,KAWN,GAXD,SAAOA,KAAMkjB,CAAAA,UAAkC,EAAEC,qBAA6B,EAAA;QAC5E,IAAI,CAACC,cAAc,CAAChoB,KAAK,EAAA,CAAA;AACzB,QAAA,IAAI,CAACioB,oBAAoB,CAACloB,MAAM,GAAG,CAAA,CAAA;AACnC,QAAA,IAAI,CAACkoB,oBAAoB,CAACtoB,IAAI,CAAC,EAAE,CAAA,CAAA;QACjC,IAAI,CAACuoB,aAAa,CAACloB,KAAK,EAAA,CAAA;QACxB,IAAI,CAACmoB,kBAAkB,CAAC,OAAA,CAAA,CAAA;QACxB,IAAI,CAACC,WAAW,GAAGN,UAAAA,CAAAA;QACnB,IAAI,CAACO,sBAAsB,GAAGN,qBAAAA,CAAAA;AAIhC,KAAA,CAAA;AAzBWF,IAAAA,QAAAA,CA2BJM,kBAWN,GAXD,SAAOA,kBAAmB1E,CAAAA,KAAa,EAAE9R,KAAc,EAAA;AACrD,QAAA,IAAM2W,EAAK7nB,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;AAC7BmkB,QAAAA,EAAAA,CAAG7tB,GAAG,CAAC4pB,QAASvX,CAAAA,EAAE,EAAE2W,KAAAA,CAAAA,CAAAA;QAEpB,IAAI8E,SAAAA,CAAAA;AACJ,QAAA,IAAI5W,KAAO,EAAA;YACT4W,SAAY9nB,GAAAA,SAAAA,CAAUjB,IAAI,CAAC2E,GAAG,EAAA,CAAA;AAC9BokB,YAAAA,SAAAA,CAAU9tB,GAAG,CAAC4pB,QAASvX,CAAAA,EAAE,EAAE6E,KAAAA,CAAAA,CAAAA;AAC7B,SAAA;QAEA,IAAI,CAACqW,cAAc,CAACvtB,GAAG,CAACgpB,KAAO,EAAA,IAAID,YAAY8E,EAAIC,EAAAA,SAAAA,CAAAA,CAAAA,CAAAA;AACrD,KAAA,CAAA;AAtCWV,IAAAA,QAAAA,CAwCJxF,KAmCN,GAnCD,SAAOA,KAAAA,CAAMmG,OAAkB,EAAA;QAC7B,MAAO,CAACA,OAAQ1mB,CAAAA,KAAK,EAAI,CAAA;YACvB,IAAMwjB,SAAAA,GAAYkD,OAAQpD,CAAAA,aAAa,CAAC,IAAI,CAACqD,QAAQ,CAACC,IAAI,CAAC,IAAI,CAAA,CAAA,CAAA;YAC/D,IAAIF,OAAAA,CAAQ1mB,KAAK,EAAI,EAAA,MAAA;AACrB,YAAA,OAAQwjB,UAAU/lB,IAAI;AACpB,gBAAA,KAAK+kB,WAAWqE,MAAM;oBACpB,IAAI,CAACC,YAAY,CAACJ,OAAAA,CAAAA,CAAAA;AAClB,oBAAA,MAAA;AAEF,gBAAA,KAAKlE,WAAWuE,KAAK;oBACnB,IAAI,CAACC,WAAW,CAACN,OAAAA,CAAAA,CAAAA;AACjB,oBAAA,MAAA;AAEF,gBAAA,KAAKlE,WAAWkB,EAAE;oBAChB,IAAI,CAACuD,QAAQ,CAACP,OAAAA,CAAAA,CAAAA;AACd,oBAAA,MAAA;AAEF,gBAAA,KAAKlE,WAAWoB,MAAM;oBACpB,IAAI,CAACsD,YAAY,CAACR,OAAAA,CAAAA,CAAAA;AAClB,oBAAA,MAAA;AAEF,gBAAA,KAAKlE,WAAWmB,KAAK;oBACnB,IAAI,CAACwD,WAAW,CAACT,OAAAA,CAAAA,CAAAA;AACjB,oBAAA,MAAA;AAEF,gBAAA,KAAKlE,WAAW4E,OAAO;oBACrB,IAAI,CAACC,aAAa,CAACX,OAAAA,CAAAA,CAAAA;AACnB,oBAAA,MAAA;AACJ,aAAA;AACF,SAAA;QAKA,OAAOhE,OAAAA,CAAQC,MAAM,CAAC,IAAI,CAAC2E,cAAc,EAAEZ,OAAQpoB,CAAAA,MAAM,EAAEooB,OAAAA,CAAQa,SAAS,CAAA,CAAA;AAC9E,KAAA,CAAA;IA3EWxB,QAiFItb,CAAAA,WAKd,GALD,SAAeA,WAAYC,CAAAA,GAAiC,EAAEtM,OAAe,EAAEE,MAAc,EAAEE,IAAY,EAAA;QAC3FjB,eAAeY,aAAa,CAACC,SAASqB,aAAYyiB,CAAAA,iBAAiB,EAAE5jB,MAAAA,EAAQoM,GAAKlM,EAAAA,IAAAA,EAAAA;AAIlG,KAAA,CAAA;AAtFWunB,IAAAA,QAAAA,CAwFIsB,aAmCd,GAnCD,SAAeA,aAAAA,CAAcX,OAAkB,EAAA;QAC7C,IAAM9tB,KAAAA,GAAQ8tB,OAAQvC,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAExCuC,QAAAA,OAAAA,CAAQnmB,SAAS,CAAC,IAAA,CAAA,CAAA;QAClB,IAAMyK,EAAAA,GAAK0b,QAAQpC,gBAAgB,EAAA,CAAA;QACnC,IAAIkD,YAAAA,CAAAA;;AAEJ,QAAA,IAAIxc,EAAGpM,CAAAA,MAAM,CAAC,CAAA,CAAE,KAAK,GAAK,EAAA;AACxB4oB,YAAAA,YAAAA,GAAexc,GAAGpM,MAAM,CAAA;SACnB,MAAA;;;AAGL4oB,YAAAA,YAAAA,GAAe,IAAIC,GAAIzc,CAAAA,EAAAA,CAAGpM,MAAM,EAAE,IAAI,CAAC2nB,sBAAsB,CAAEmB,CAAAA,IAAI,CAACxmB,SAAS,CAACymB,UAAWC,CAAAA,eAAe,CAAC3pB,MAAM,CAAA,CAAA;AACjH,SAAA;AAEAyoB,QAAAA,OAAAA,CAAQlC,UAAU,CAAC,IAAA,CAAA,CAAA;QACnB,IAAM3rB,GAAAA,GAAM6tB,OAAQvC,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACtC,QAAA,IAAMW,KAAQ,GAAA,IAAI,CAACwB,WAAW,CAACkB,YAAa,CAAA,CAAA;AAC5C,QAAA,IAAI,CAAC1C,KAAO,EAAA;AACV,YAAA,IAAI,CAACra,WAAW,CAACO,EAAAA,CAAGzM,QAAQ,EAAG,gBAAgBipB,GAAAA,YAAAA,GAAa,gBAAiBd,EAAAA,OAAAA,CAAQpoB,MAAM,EAAEooB,QAAQloB,IAAI,CAAA,CAAA;AACzG,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAMiE,KAAQ3D,GAAAA,SAAAA,CAAUE,WAAW,CAACpG,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;QAC3C,IAAMgvB,QAAAA,GAAW,IAAI,CAACC,iBAAiB,CAAChD,KAAOriB,EAAAA,KAAAA,EAAOuI,GAAGpM,MAAM,CAAA,CAAA;AAI/D,QAAA,IAAI,CAAC0oB,cAAc,CAACzpB,IAAI,CAAC;YAIvBolB,YAAcxgB,EAAAA,KAAAA;AACd0f,YAAAA,OAAAA,EAAS0F,SAASE,OAAO;AAC3B,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AA3HWhC,IAAAA,QAAAA,CA6HIoB,WAoCd,GApCD,SAAeA,WAAAA,CAAYT,OAAkB,EAAA;QAC3C,IAAM9tB,KAAAA,GAAQ8tB,OAAQ9jB,CAAAA,OAAO,GAAG,CAAA,CAAA;QAEhC,IAAMoI,EAAAA,GAAK0b,QAAQzC,QAAQ,EAAA,CAAA;QAC3B,IAAI,CAAC+D,gBAAgB,CAACtB,OAAS9tB,EAAAA,KAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAI,CAACwtB,aAAa,CAAC/N,GAAG,CAACrN,GAAGpM,MAAM,CAAA,CAAA;QAEhC,IAAM+iB,KAAAA,GAAQ,IAAI,CAACuE,cAAc,CAAC7jB,GAAG,CAAC2I,GAAGpM,MAAM,CAAA,CAAA;AAC/C8nB,QAAAA,OAAAA,CAAQnmB,SAAS,CAAC,IAAA,CAAA,CAAA;QAElB,IAA4CmmB,6BAAAA,GAAAA,QAAQhC,oBAAoB,EAAA,EAAhEtiB,SAAoCskB,GAAAA,6BAAAA,CAApCtkB,KAAkB2iB,EAAAA,aAAAA,GAAkB2B,6BAAlB3B,CAAAA,aAAAA,CAAAA;QAC1B,IAAI,CAAC,CAACpD,KAAO,EAAA;AACX,YAAA,IAAM9oB,GAAMksB,GAAAA,aAAAA,CAActnB,IAAI,KAAK+kB,UAAWsB,CAAAA,KAAK,GAAG4C,OAAAA,CAAQvC,iBAAiB,CAAC,CAAKuC,CAAAA,GAAAA,OAAAA,CAAQvB,eAAe,EAAA,CAAA;YAE5G,IAAM0C,QAAAA,GAAW,IAAI,CAACC,iBAAiB,CAACG,UAAUrpB,MAAM,EAAEqpB,SAAU1pB,CAAAA,QAAQ,EAAEmoB,OAAAA,CAAAA,CAAAA;YAK9E,IAAMjkB,KAAAA,GAAQ3D,UAAUE,WAAW,CAACipB,UAAU1pB,QAAQ,CAAC3F,KAAK,EAAEC,GAAAA,CAAAA,CAAAA;AAE9D,YAAA,IAAI,CAACyuB,cAAc,CAACzpB,IAAI,CAAC;gBAIvBolB,YAAcxgB,EAAAA,KAAAA;AACd0f,gBAAAA,OAAAA,EAAS0F,SAASE,OAAO;AAC3B,aAAA,CAAA,CAAA;AAEA,YAAA,OAAA;AACF,SAAA;QAEA,IAAI,CAACT,cAAc,CAACnf,GAAG,EAAA,CAAA;QACvB,IAAI,CAAC6f,gBAAgB,CAACtB,OAAS9tB,EAAAA,KAAAA,CAAAA,CAAAA;AAE/B,QAAA,IAAI,CAACsvB,iBAAiB,CAAMnD,aAAAA,CAActnB,IAAI,EAAEipB,OAAAA,CAAAA,CAAAA;AAClD,KAAA,CAAA;AAjKWX,IAAAA,QAAAA,CAmKImC,iBA6Dd,GA7DD,SAAeA,iBACb1E,CAAAA,SAA+D,EAC/DkD,OAAkB,EAAA;QAElB,IAAIlD,SAAAA,KAAchB,UAAWsB,CAAAA,KAAK,EAAE;AAClC,YAAA,OAAA;AACF,SAAA;QAEA,IAAMlrB,KAAAA,GAAQ8tB,QAAQ9jB,OAAO,CAAA;QAE7B,IAAI4gB,SAAAA,KAAchB,UAAWqC,CAAAA,IAAI,EAAE;AACjC,YAAA,IAA6B6B,gCAAAA,OAAQhC,CAAAA,oBAAoB,EAAjDtiB,EAAO+lB,YAAczB,6BAArBtkB,CAAAA,KAAAA,CAAAA;YACR,IAAMylB,QAAAA,GAAW,IAAI,CAACC,iBAAiB,CAACK,UAAUvpB,MAAM,EAAEupB,SAAU5pB,CAAAA,QAAQ,EAAEmoB,OAAAA,CAAAA,CAAAA;YAI9E,IAAM0B,aAAAA,GAAgBtpB,SAAUC,CAAAA,cAAc,CAACnG,KAAAA,CAAAA,CAAAA;AAC/C,YAAA,IAAM6J,QAAQ3D,SAAUE,CAAAA,WAAW,CAACopB,aAAe1B,EAAAA,OAAAA,CAAQvC,iBAAiB,CAAC,CAAA,CAAA,CAAA,CAAA;AAC7E,YAAA,IAAI,CAACmD,cAAc,CAACzpB,IAAI,CAAC;gBAIvBolB,YAAcxgB,EAAAA,KAAAA;AACd0f,gBAAAA,OAAAA,EAAS0F,SAASE,OAAO;AAC3B,aAAA,CAAA,CAAA;AACF,SAAA,MAAO,IAAIvE,SAAAA,KAAchB,UAAWoC,CAAAA,IAAI,EAAE;AACxC,YAAA,IAAMyD,YAAe,GAAA,IAAI,CAACC,wBAAwB,CAAC5B,OAAAA,CAAAA,CAAAA;YACnD,IAA4CA,8BAAAA,GAAAA,QAAQhC,oBAAoB,EAAA,EAAhEtiB,SAAoCskB,GAAAA,8BAAAA,CAApCtkB,KAAkB2iB,EAAAA,aAAAA,GAAkB2B,8BAAlB3B,CAAAA,aAAAA,CAAAA;YAC1B,IAAI,CAAC,CAACsD,YAAc,EAAA;AAClB,gBAAA,IAAMxvB,GAAMksB,GAAAA,aAAAA,CAActnB,IAAI,KAAK+kB,UAAWsB,CAAAA,KAAK,GAAG4C,OAAAA,CAAQ9jB,OAAO,GAAG8jB,OAAQvB,CAAAA,eAAe,GAAGnsB,KAAK,CAAA;gBACvG,IAAM6uB,SAAAA,GAAW,IAAI,CAACC,iBAAiB,CAACG,UAAUrpB,MAAM,EAAEqpB,SAAU1pB,CAAAA,QAAQ,EAAEmoB,OAAAA,CAAAA,CAAAA;gBAI9E,IAAM0B,cAAAA,GAAgBtpB,SAAUC,CAAAA,cAAc,CAACnG,KAAAA,CAAAA,CAAAA;gBAC/C,IAAM2vB,WAAAA,GAAczpB,SAAUC,CAAAA,cAAc,CAAClG,GAAAA,CAAAA,CAAAA;AAC7C,gBAAA,IAAM4J,MAAQ3D,GAAAA,SAAAA,CAAUE,WAAW,CAACopB,cAAeG,EAAAA,WAAAA,CAAAA,CAAAA;AACnD,gBAAA,IAAI,CAACjB,cAAc,CAACzpB,IAAI,CAAC;oBAIvBolB,YAAcxgB,EAAAA,MAAAA;AACd0f,oBAAAA,OAAAA,EAAS0F,UAASE,OAAO;AAC3B,iBAAA,CAAA,CAAA;aACK,MAAA;gBAIL,IAAMK,cAAAA,GAAgBtpB,SAAUC,CAAAA,cAAc,CAACnG,KAAAA,CAAAA,CAAAA;AAC/C,gBAAA,IAAM2vB,YAAczpB,GAAAA,SAAAA,CAAUC,cAAc,CAAC2nB,QAAQ9jB,OAAO,CAAA,CAAA;AAC5D,gBAAA,IAAMH,MAAQ3D,GAAAA,SAAAA,CAAUE,WAAW,CAACopB,cAAeG,EAAAA,YAAAA,CAAAA,CAAAA;AACnD,gBAAA,IAAI,CAACjB,cAAc,CAACzpB,IAAI,CAAC;oBAIvBolB,YAAcxgB,EAAAA,MAAAA;oBACd0f,OAAS,EAAA,EAAA;AACX,iBAAA,CAAA,CAAA;AACA,gBAAA,IAAI,CAAC+F,iBAAiB,CAAMnD,aAAAA,CAActnB,IAAI,EAAEipB,OAAAA,CAAAA,CAAAA;AAClD,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAhOWX,IAAAA,QAAAA,CAkOIuC,wBAGd,GAHD,SAAeA,wBAAAA,CAAyB5B,OAAkB,EAAA;AACxDA,QAAAA,OAAAA,CAAQnmB,SAAS,CAAC,IAAA,CAAA,CAAA;QAClB,OAAO,IAAI,CAACioB,yBAAyB,CAAC9B,OAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;AArOWX,IAAAA,QAAAA,CAuOIyC,yBAUd,GAVD,SAAeA,yBAAAA,CAA0B9B,OAAkB,EAAA;AACzD,QAAA,IAAM+B,QAAW,GAAA,IAAI,CAACC,0BAA0B,CAAChC,OAAAA,CAAAA,CAAAA;QACjD,IAAM1W,QAAAA,GAAW0W,OAAQ3lB,CAAAA,IAAI,CAAC,CAAA,CAAA,CAAA;QAC9B,IAAIiP,QAAAA,IAAYA,aAAa,IAAM,EAAA;AACjC0W,YAAAA,OAAAA,CAAQtmB,OAAO,CAAC,CAAA,CAAA,CAAA;AAChBsmB,YAAAA,OAAAA,CAAQnmB,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMooB,QAAW,GAAA,IAAI,CAACH,yBAAyB,CAAC9B,OAAAA,CAAAA,CAAAA;AAChD,YAAA,OAAO+B,QAAYE,IAAAA,QAAAA,CAAAA;AACrB,SAAA;QACA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AAjPW1C,IAAAA,QAAAA,CAmPI2C,0BAUd,GAVD,SAAeA,0BAAAA,CAA2BhC,OAAkB,EAAA;AAC1D,QAAA,IAAM+B,QAAW,GAAA,IAAI,CAACG,wBAAwB,CAAClC,OAAAA,CAAAA,CAAAA;QAC/C,IAAM1W,QAAAA,GAAW0W,OAAQ3lB,CAAAA,IAAI,CAAC,CAAA,CAAA,CAAA;QAC9B,IAAIiP,QAAAA,IAAYA,aAAa,IAAM,EAAA;AACjC0W,YAAAA,OAAAA,CAAQtmB,OAAO,CAAC,CAAA,CAAA,CAAA;AAChBsmB,YAAAA,OAAAA,CAAQnmB,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMooB,QAAW,GAAA,IAAI,CAACD,0BAA0B,CAAChC,OAAAA,CAAAA,CAAAA;AACjD,YAAA,OAAO+B,QAAYE,IAAAA,QAAAA,CAAAA;AACrB,SAAA;QACA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AA7PW1C,IAAAA,QAAAA,CA+PI6C,wBAed,GAfD,SAAeA,wBAAAA,CAAyBlC,OAAkB,EAAA;AACxD,QAAA,IAAM+B,QAAW,GAAA,IAAI,CAACI,0BAA0B,CAACnC,OAAAA,CAAAA,CAAAA;QACjD,IAAM1W,QAAAA,GAAW0W,OAAQ3lB,CAAAA,IAAI,CAAC,CAAA,CAAA,CAAA;AAC9B,QAAA,IAAIiP,QAAY,IAAA;AAAC,YAAA,IAAA;AAAM,YAAA,IAAA;SAAK,CAAC6T,QAAQ,CAAC7T,QAAW,CAAA,EAAA;AAC/C0W,YAAAA,OAAAA,CAAQtmB,OAAO,CAAC,CAAA,CAAA,CAAA;AAChBsmB,YAAAA,OAAAA,CAAQnmB,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMooB,QAAW,GAAA,IAAI,CAACC,wBAAwB,CAAClC,OAAAA,CAAAA,CAAAA;YAC/C,OAAQ1W,QAAAA;gBACN,KAAK,IAAA;AACH,oBAAA,OAAOyY,QAAaE,KAAAA,QAAAA,CAAAA;gBACtB,KAAK,IAAA;AACH,oBAAA,OAAOF,QAAaE,KAAAA,QAAAA,CAAAA;AACxB,aAAA;AACF,SAAA;QACA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AA9QW1C,IAAAA,QAAAA,CAgRI8C,0BAyBd,GAzBD,SAAeA,0BAAAA,CAA2BnC,OAAkB,EAAA;AAC1D,QAAA,IAAM+B,QAAW,GAAA,IAAI,CAACK,qBAAqB,CAACpC,OAAAA,CAAAA,CAAAA;QAC5C,IAAI1W,QAAAA,GAAW0W,OAAQ3lB,CAAAA,IAAI,CAAC,CAAA,CAAA,CAAA;QAC5B,IAAIiP,QAAQ,CAAC,CAAE,CAAA,KAAK,KAAKA,QAAWA,GAAAA,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC/C,QAAA,IAAIA,QAAY,IAAA;AAAC,YAAA,GAAA;AAAK,YAAA,GAAA;AAAK,YAAA,IAAA;AAAM,YAAA,IAAA;SAAK,CAAC6T,QAAQ,CAAC7T,QAAW,CAAA,EAAA;YACzD,IAAM+Y,KAAAA,GAAQrC,OAAQvC,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;YACxCuC,OAAQtmB,CAAAA,OAAO,CAAC4P,QAAAA,CAAS/R,MAAM,CAAA,CAAA;AAC/ByoB,YAAAA,OAAAA,CAAQnmB,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMooB,QAAW,GAAA,IAAI,CAACE,0BAA0B,CAACnC,OAAAA,CAAAA,CAAAA;AACjD,YAAA,IAAI,CAAA,OAAO+B,QAAP,KAAA,WAAA,GAAA,WAAA,GAAA,QAAA,CAAOA,SAAO,OAAM,OAAOE,QAAAA,KAAAA,WAAAA,GAAAA,WAAAA,GAAP,QAAOA,CAAAA,QAAAA,CAAO,CAAK,IAAA,OAAOF,aAAa,QAAU,EAAA;gBACvE,IAAI,CAAChe,WAAW,CAACse,KAAAA,EAAO,4CAA4CrC,OAAQpoB,CAAAA,MAAM,EAAEooB,OAAAA,CAAQloB,IAAI,CAAA,CAAA;AAChG,gBAAA,OAAA;AACF,aAAA;YACA,OAAQwR,QAAAA;gBACN,KAAK,GAAA;AACH,oBAAA,OAAOyY,QAAWE,GAAAA,QAAAA,CAAAA;gBACpB,KAAK,GAAA;AACH,oBAAA,OAAOF,QAAWE,GAAAA,QAAAA,CAAAA;gBACpB,KAAK,IAAA;AACH,oBAAA,OAAOF,QAAYE,IAAAA,QAAAA,CAAAA;gBACrB,KAAK,IAAA;AACH,oBAAA,OAAOF,QAAYE,IAAAA,QAAAA,CAAAA;AACvB,aAAA;AACF,SAAA;QACA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AAzSW1C,IAAAA,QAAAA,CA2SI+C,qBAqBd,GArBD,SAAeA,qBAAAA,CAAsBpC,OAAkB,EAAA;AACrD,QAAA,IAAM+B,QAAW,GAAA,IAAI,CAACO,wBAAwB,CAACtC,OAAAA,CAAAA,CAAAA;QAC/C,IAAM1W,QAAAA,GAAW0W,OAAQ3lB,CAAAA,IAAI,CAAC,CAAA,CAAA,CAAA;AAC9B,QAAA,IAAIiP,QAAY,IAAA;AAAC,YAAA,IAAA;AAAM,YAAA,IAAA;SAAK,CAAC6T,QAAQ,CAAC7T,QAAW,CAAA,EAAA;YAC/C,IAAM+Y,KAAAA,GAAQrC,OAAQvC,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACxCuC,YAAAA,OAAAA,CAAQtmB,OAAO,CAAC,CAAA,CAAA,CAAA;AAChBsmB,YAAAA,OAAAA,CAAQnmB,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMooB,QAAW,GAAA,IAAI,CAACG,qBAAqB,CAACpC,OAAAA,CAAAA,CAAAA;AAC5C,YAAA,IAAI,CAAA,OAAO+B,QAAP,KAAA,WAAA,GAAA,WAAA,GAAA,QAAA,CAAOA,SAAO,OAAM,OAAOE,QAAAA,KAAAA,WAAAA,GAAAA,WAAAA,GAAP,QAAOA,CAAAA,QAAAA,CAAO,CAAK,IAAA,OAAOF,aAAa,QAAU,EAAA;gBACvE,IAAI,CAAChe,WAAW,CAACse,KAAAA,EAAO,yCAAyCrC,OAAQpoB,CAAAA,MAAM,EAAEooB,OAAAA,CAAQloB,IAAI,CAAA,CAAA;AAC7F,gBAAA,OAAA;AACF,aAAA;YACA,OAAQwR,QAAAA;gBACN,KAAK,IAAA;AACH,oBAAA,OAAOyY,QAAYE,IAAAA,QAAAA,CAAAA;gBACrB,KAAK,IAAA;AACH,oBAAA,OAAOF,QAAYE,IAAAA,QAAAA,CAAAA;AACvB,aAAA;AACF,SAAA;QAEA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AAhUW1C,IAAAA,QAAAA,CAkUIiD,wBAqBd,GArBD,SAAeA,wBAAAA,CAAyBtC,OAAkB,EAAA;AACxD,QAAA,IAAM+B,QAAW,GAAA,IAAI,CAACQ,2BAA2B,CAACvC,OAAAA,CAAAA,CAAAA;QAClD,IAAI;AAAC,YAAA,GAAA;AAAK,YAAA,GAAA;AAAI,SAAA,CAAC7C,QAAQ,CAAC6C,OAAQzmB,CAAAA,UAAU,EAAK,CAAA,EAAA;YAC7C,IAAM8oB,KAAAA,GAAQrC,OAAQvC,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACxCuC,YAAAA,OAAAA,CAAQtmB,OAAO,EAAA,CAAA;YAEf,IAAM4P,QAAAA,GAAW0W,QAAQzmB,UAAU,EAAA,CAAA;AACnCymB,YAAAA,OAAAA,CAAQnmB,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMooB,QAAW,GAAA,IAAI,CAACK,wBAAwB,CAACtC,OAAAA,CAAAA,CAAAA;AAC/C,YAAA,IAAI,CAAA,OAAO+B,QAAP,KAAA,WAAA,GAAA,WAAA,GAAA,QAAA,CAAOA,SAAO,OAAM,OAAOE,QAAAA,KAAAA,WAAAA,GAAAA,WAAAA,GAAP,QAAOA,CAAAA,QAAAA,CAAO,CAAK,IAAA,OAAOF,aAAa,QAAU,EAAA;gBACvE,IAAI,CAAChe,WAAW,CAACse,KAAAA,EAAO,qBAAqBrC,OAAQpoB,CAAAA,MAAM,EAAEooB,OAAAA,CAAQloB,IAAI,CAAA,CAAA;gBACzE,OAAO,KAAA,CAAA;AACT,aAAA;YACA,OAAQwR,QAAAA;gBACN,KAAK,GAAA;AACH,oBAAA,OAAOyY,QAAWE,GAAAA,QAAAA,CAAAA;gBACpB,KAAK,GAAA;AACH,oBAAA,OAAOF,QAAWE,GAAAA,QAAAA,CAAAA;AACtB,aAAA;AACF,SAAA;QACA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AAvVW1C,IAAAA,QAAAA,CAyVIkD,2BAsBd,GAtBD,SAAeA,2BAAAA,CAA4BvC,OAAkB,EAAA;AAC3D,QAAA,IAAM+B,QAAW,GAAA,IAAI,CAACS,qBAAqB,CAACxC,OAAAA,CAAAA,CAAAA;AAC5CA,QAAAA,OAAAA,CAAQnmB,SAAS,CAAC,KAAA,CAAA,CAAA;QAClB,IAAI;AAAC,YAAA,GAAA;AAAK,YAAA,GAAA;AAAK,YAAA,GAAA;AAAI,SAAA,CAACsjB,QAAQ,CAAC6C,OAAQzmB,CAAAA,UAAU,EAAK,CAAA,EAAA;YAClD,IAAM8oB,KAAAA,GAAQrC,OAAQvC,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;YACxC,IAAMnU,QAAAA,GAAW0W,QAAQzmB,UAAU,EAAA,CAAA;AACnCymB,YAAAA,OAAAA,CAAQnmB,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMooB,QAAW,GAAA,IAAI,CAACM,2BAA2B,CAACvC,OAAAA,CAAAA,CAAAA;AAClD,YAAA,IAAI,CAAA,OAAO+B,QAAP,KAAA,WAAA,GAAA,WAAA,GAAA,QAAA,CAAOA,SAAO,OAAM,OAAOE,QAAAA,KAAAA,WAAAA,GAAAA,WAAAA,GAAP,QAAOA,CAAAA,QAAAA,CAAO,CAAK,IAAA,OAAOF,aAAa,QAAU,EAAA;gBACvE,IAAI,CAAChe,WAAW,CAACse,KAAAA,EAAO,qBAAqBrC,OAAQpoB,CAAAA,MAAM,EAAEooB,OAAAA,CAAQloB,IAAI,CAAA,CAAA;AACzE,gBAAA,OAAA;AACF,aAAA;YACA,OAAQwR,QAAAA;gBACN,KAAK,GAAA;AACH,oBAAA,OAAOyY,QAAWE,GAAAA,QAAAA,CAAAA;gBACpB,KAAK,GAAA;AACH,oBAAA,OAAOF,QAAWE,GAAAA,QAAAA,CAAAA;gBACpB,KAAK,GAAA;AACH,oBAAA,OAAOF,QAAWE,GAAAA,QAAAA,CAAAA;AACtB,aAAA;AACF,SAAA;QACA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AA/WW1C,IAAAA,QAAAA,CAiXImD,qBAoBd,GApBD,SAAeA,qBAAAA,CAAsBxC,OAAkB,EAAA;QACrD,IAAM1W,QAAAA,GAAW0W,QAAQzmB,UAAU,EAAA,CAAA;QACnC,IAAI;AAAC,YAAA,GAAA;AAAK,YAAA,GAAA;AAAK,YAAA,GAAA;SAAI,CAAC4jB,QAAQ,CAAC7T,QAAW,CAAA,EAAA;AACtC0W,YAAAA,OAAAA,CAAQtmB,OAAO,EAAA,CAAA;YACf,IAAM2oB,KAAAA,GAAQrC,OAAQvC,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACxC,YAAA,IAAMgF,SAAY,GAAA,IAAI,CAACC,2BAA2B,CAAC1C,OAAAA,CAAAA,CAAAA;YACnD,IAAK1W,QAAa,KAAA,GAAA,IAAO,OAAOmZ,SAAAA,KAAc,aAAenZ,QAAa,KAAA,GAAA,IAAO,OAAOmZ,SAAAA,KAAc,QAAW,EAAA;gBAC/G,IAAI,CAAC1e,WAAW,CAACse,KAAAA,EAAO,qBAAqBrC,OAAQpoB,CAAAA,MAAM,EAAEooB,OAAAA,CAAQloB,IAAI,CAAA,CAAA;AAC3E,aAAA;YAEA,OAAQwR,QAAAA;gBACN,KAAK,GAAA;oBACH,OAAOmZ,SAAAA,CAAAA;gBACT,KAAK,GAAA;AACH,oBAAA,OAAO,CAACA,SAAAA,CAAAA;gBACV,KAAK,GAAA;AACH,oBAAA,OAAO,CAACA,SAAAA,CAAAA;AACZ,aAAA;AACF,SAAA;QACA,OAAO,IAAI,CAACC,2BAA2B,CAAC1C,OAAAA,CAAAA,CAAAA;AAC1C,KAAA,CAAA;AArYWX,IAAAA,QAAAA,CAuYIqD,2BAUd,GAVD,SAAeA,2BAAAA,CAA4B1C,OAAkB,EAAA;QAC3D,IAAIA,OAAAA,CAAQzmB,UAAU,EAAA,KAAO,GAAK,EAAA;AAChCymB,YAAAA,OAAAA,CAAQpmB,QAAQ,EAAA,CAAA;AAChBomB,YAAAA,OAAAA,CAAQnmB,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMiK,GAAM,GAAA,IAAI,CAAC8d,wBAAwB,CAAC5B,OAAAA,CAAAA,CAAAA;AAC1CA,YAAAA,OAAAA,CAAQlC,UAAU,CAAC,GAAA,CAAA,CAAA;AACnBkC,YAAAA,OAAAA,CAAQpmB,QAAQ,EAAA,CAAA;YAChB,OAAOkK,GAAAA,CAAAA;AACT,SAAA;QACA,OAAO,IAAI,CAAC6e,cAAc,CAAC3C,OAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AAjZWX,IAAAA,QAAAA,CAmZIsD,cAsCd,GAtCD,SAAeA,cAAAA,CAAe3C,OAAkB,EAAA;AAC9C,QAAA,IAAIxnB,UAAWI,CAAAA,OAAO,CAAConB,OAAAA,CAAQxmB,cAAc,EAAK,CAAA,EAAA;YAChD,IAAM8K,EAAAA,GAAK0b,QAAQzC,QAAQ,EAAA,CAAA;AAC3B,YAAA,IAAIjZ,EAAGvN,CAAAA,IAAI,KAAK+kB,UAAAA,CAAW8G,OAAO,EAAE;gBAClC,IAAMC,SAAAA,GAAY7C,OAAQtB,CAAAA,YAAY,EAAO,KAAA,GAAA,CAAA;gBAC7C,IAAMzD,KAAAA,GAAQ+E,OAAQzC,CAAAA,QAAQ,CAAC,IAAA,CAAA,CAAA;AAC/B,gBAAA,IAAIsF,SAAW,EAAA;AACb7C,oBAAAA,OAAAA,CAAQlC,UAAU,CAAC,GAAA,CAAA,CAAA;AACnBkC,oBAAAA,OAAAA,CAAQpmB,QAAQ,EAAA,CAAA;AAClB,iBAAA;AACA,gBAAA,IAAI,CAAC8lB,aAAa,CAAC/N,GAAG,CAACsJ,MAAM/iB,MAAM,CAAA,CAAA;gBACnC,OAAO,CAAC,CAAC,IAAI,CAACsnB,cAAc,CAAC7jB,GAAG,CAACsf,KAAAA,CAAM/iB,MAAM,CAAA,CAAA;aACxC,MAAA;gBACL,IAAM+iB,MAAAA,GAAQ,IAAI,CAACuE,cAAc,CAAC7jB,GAAG,CAAC2I,GAAGpM,MAAM,CAAA,CAAA;AAC/C,gBAAA,IAAI,CAAC+iB,MAAAA,IAAS,CAACA,MAAAA,CAAME,IAAI,EAAE;oBACzB,OAAO,KAAA,CAAA;AACT,iBAAA;gBACA,IAAIF,MAAAA,CAAMW,UAAU,EAAE;oBACpB,IAAI,CAAC7X,WAAW,CAACO,EAAGzM,CAAAA,QAAQ,EAAE,8BAAA,EAAgCmoB,OAAQpoB,CAAAA,MAAM,EAAEooB,OAAAA,CAAQloB,IAAI,CAAA,CAAA;AAC5F,iBAAA;AACA,gBAAA,IAAMqR,KAAQS,GAAAA,MAAAA,CAAOqR,MAAME,CAAAA,IAAI,CAACjjB,MAAM,CAAA,CAAA;AACtC,gBAAA,IAAI,CAAC0R,MAAAA,CAAOkZ,SAAS,CAAC3Z,KAAQ,CAAA,EAAA;AAC5B,oBAAA,IAAI,CAACpF,WAAW,CAACO,EAAAA,CAAGzM,QAAQ,EAAG,uBAAuByM,GAAAA,EAAAA,CAAGpM,MAAM,EAAI8nB,OAAAA,CAAQpoB,MAAM,EAAEooB,QAAQloB,IAAI,CAAA,CAAA;AACjG,iBAAA;AACA,gBAAA,IAAI,CAAC4nB,aAAa,CAAC/N,GAAG,CAACrN,GAAGpM,MAAM,CAAA,CAAA;gBAChC,OAAOiR,KAAAA,CAAAA;AACT,aAAA;AACF,SAAA,MAAO,IAAI3Q,UAAWC,CAAAA,KAAK,CAACunB,OAAAA,CAAQxmB,cAAc,EAAK,CAAA,EAAA;YACrD,IAAMolB,OAAAA,GAAUoB,QAAQrB,WAAW,EAAA,CAAA;YACnC,OAAO/U,MAAAA,CAAOgV,QAAQ1mB,MAAM,CAAA,CAAA;SACvB,MAAA;AACL,YAAA,IAAI,CAAC6L,WAAW,CACdic,OAAQvC,CAAAA,iBAAiB,CAAC,CAC1B,CAAA,EAAC,iBAAiBuC,GAAAA,OAAAA,CAAQzmB,UAAU,EACpCymB,EAAAA,OAAAA,CAAQpoB,MAAM,EACdooB,QAAQloB,IAAI,CAAA,CAAA;AAEhB,SAAA;AACF,KAAA,CAAA;IAzbWunB,QAkdI+B,CAAAA,iBAyBd,GAzBD,SAAeA,iBAAAA,CACbhD,KAAa,EACbpa,GAAgB,EAChB+e,aAAiC,EAAA;AAOjC,QAAA,IAAI,CAACtD,oBAAoB,CAACtoB,IAAI,CAAC,EAAE,CAAA,CAAA;QACjC,IAAI6oB,OAAAA,CAAAA;QACJ,IAAI,OAAO+C,kBAAkB,QAAU,EAAA;YACrC/C,OAAU,GAAA,IAAItD,UAAU0B,KAAO2E,EAAAA,aAAAA,CAAAA,CAAAA;SAC1B,MAAA;AACL/C,YAAAA,OAAAA,GAAU,IAAItD,SAAAA,CAAU0B,KAAO2E,EAAAA,aAAAA,CAAcjrB,IAAI,EAAEkM,GAAAA,CAAAA,CAAAA;AACrD,SAAA;AACA,QAAA,IAAMF,GAAM,GAAA,IAAI,CAAC+V,KAAK,CAACmG,OAAAA,CAAAA,CAAAA;QACvB,IAAI,CAACP,oBAAoB,CAAChe,GAAG,EAAA,CAAA;QAC7B,OAAO;YACL4f,OAASvd,EAAAA,GAAAA;AAIX,SAAA,CAAA;AACF,KAAA,CAAA;AA3eWub,IAAAA,QAAAA,CA6eImB,YA8Bd,GA9BD,SAAeA,YAAAA,CAAaR,OAAkB,EAAA;QAC5C,IAAM9tB,KAAAA,GAAQ8tB,OAAQ9jB,CAAAA,OAAO,GAAG,CAAA,CAAA;QAEhC,IAAMoI,EAAAA,GAAK0b,QAAQzC,QAAQ,EAAA,CAAA;QAC3B,IAAI,CAAC+D,gBAAgB,CAACtB,OAAS9tB,EAAAA,KAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAI,CAACwtB,aAAa,CAAC/N,GAAG,CAACrN,GAAGpM,MAAM,CAAA,CAAA;QAEhC,IAAM+iB,KAAAA,GAAQ,IAAI,CAACuE,cAAc,CAAC7jB,GAAG,CAAC2I,GAAGpM,MAAM,CAAA,CAAA;QAC/C,IAA4C8nB,6BAAAA,GAAAA,QAAQhC,oBAAoB,EAAA,EAAhEtiB,SAAoCskB,GAAAA,6BAAAA,CAApCtkB,KAAkB2iB,EAAAA,aAAAA,GAAkB2B,6BAAlB3B,CAAAA,aAAAA,CAAAA;AAC1B,QAAA,IAAI,CAACpD,KAAO,EAAA;AACV,YAAA,IAAM9oB,GAAMksB,GAAAA,aAAAA,CAActnB,IAAI,KAAK+kB,UAAWsB,CAAAA,KAAK,GAAG4C,OAAAA,CAAQvC,iBAAiB,CAAC,CAAKuC,CAAAA,GAAAA,OAAAA,CAAQvB,eAAe,EAAA,CAAA;YAE5G,IAAM0C,QAAAA,GAAW,IAAI,CAACC,iBAAiB,CAACG,UAAUrpB,MAAM,EAAEqpB,SAAU1pB,CAAAA,QAAQ,EAAEmoB,OAAAA,CAAAA,CAAAA;YAI9E,IAAMjkB,KAAAA,GAAQ3D,UAAUE,WAAW,CAACipB,UAAU1pB,QAAQ,CAAC3F,KAAK,EAAEC,GAAAA,CAAAA,CAAAA;AAC9D,YAAA,IAAI,CAACyuB,cAAc,CAACzpB,IAAI,CAAC;gBAIvBolB,YAAcxgB,EAAAA,KAAAA;AACd0f,gBAAAA,OAAAA,EAAS0F,SAASE,OAAO;AAC3B,aAAA,CAAA,CAAA;AACA,YAAA,OAAA;AACF,SAAA;QAEA,IAAI,CAACT,cAAc,CAACnf,GAAG,EAAA,CAAA;QACvB,IAAI,CAAC6f,gBAAgB,CAACtB,OAAS9tB,EAAAA,KAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAI,CAACsvB,iBAAiB,CAAMnD,aAAAA,CAActnB,IAAI,EAAEipB,OAAAA,CAAAA,CAAAA;AAClD,KAAA,CAAA;AA3gBWX,IAAAA,QAAAA,CA6gBIiC,gBAcd,GAdD,SAAeA,gBAAiBtB,CAAAA,OAAkB,EAAE9tB,KAAa,EAAA;QAI/D,IAAMwvB,aAAAA,GAAgBtpB,SAAUC,CAAAA,cAAc,CAACnG,KAAAA,CAAAA,CAAAA;QAC/C,IAAM2vB,WAAAA,GAAc7B,QAAQ3mB,cAAc,EAAA,CAAA;AAC1C,QAAA,IAAM0C,KAAQ3D,GAAAA,SAAAA,CAAUE,WAAW,CAACopB,aAAeG,EAAAA,WAAAA,CAAAA,CAAAA;AACnD,QAAA,IAAI,CAACjB,cAAc,CAACzpB,IAAI,CAAC;YAIvBolB,YAAcxgB,EAAAA,KAAAA;YACd0f,OAAS,EAAA,EAAA;AACX,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AA3hBW4D,IAAAA,QAAAA,CA6hBIkB,QA2Bd,GA3BD,SAAeA,QAAAA,CAASP,OAAkB,EAAA;QACxC,IAAM9tB,KAAAA,GAAQ8tB,OAAQ9jB,CAAAA,OAAO,GAAG,CAAA,CAAA;AAEhC,QAAA,IAAMylB,YAAe,GAAA,IAAI,CAACC,wBAAwB,CAAC5B,OAAAA,CAAAA,CAAAA;QACnD,IAAI,CAACsB,gBAAgB,CAACtB,OAAS9tB,EAAAA,KAAAA,CAAAA,CAAAA;QAE/B,IAA4C8tB,6BAAAA,GAAAA,QAAQhC,oBAAoB,EAAA,EAAhEtiB,SAAoCskB,GAAAA,6BAAAA,CAApCtkB,KAAkB2iB,EAAAA,aAAAA,GAAkB2B,6BAAlB3B,CAAAA,aAAAA,CAAAA;QAC1B,IAAI,CAAC,CAACsD,YAAc,EAAA;AAClB,YAAA,IAAMxvB,GAAMksB,GAAAA,aAAAA,CAActnB,IAAI,KAAK+kB,UAAWsB,CAAAA,KAAK,GAAG4C,OAAAA,CAAQvC,iBAAiB,CAAC,CAAKuC,CAAAA,GAAAA,OAAAA,CAAQvB,eAAe,EAAA,CAAA;YAC5G,IAAM0C,QAAAA,GAAW,IAAI,CAACC,iBAAiB,CAACG,UAAUrpB,MAAM,EAAEqpB,SAAU1pB,CAAAA,QAAQ,EAAEmoB,OAAAA,CAAAA,CAAAA;YAI9E,IAAMjkB,KAAAA,GAAQ3D,UAAUE,WAAW,CAACipB,UAAU1pB,QAAQ,CAAC3F,KAAK,EAAEC,GAAAA,CAAAA,CAAAA;AAC9D,YAAA,IAAI,CAACyuB,cAAc,CAACzpB,IAAI,CAAC;gBAIvBolB,YAAcxgB,EAAAA,KAAAA;AACd0f,gBAAAA,OAAAA,EAAS0F,SAASE,OAAO;AAC3B,aAAA,CAAA,CAAA;AACA,YAAA,OAAA;AACF,SAAA;QAEA,IAAI,CAACT,cAAc,CAACnf,GAAG,EAAA,CAAA;QACvB,IAAI,CAAC6f,gBAAgB,CAACtB,OAAS9tB,EAAAA,KAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAI,CAACsvB,iBAAiB,CAAMnD,aAAAA,CAActnB,IAAI,EAAEipB,OAAAA,CAAAA,CAAAA;AAClD,KAAA,CAAA;AAxjBWX,IAAAA,QAAAA,CA0jBIe,YA8Bd,GA9BD,SAAeA,YAAAA,CAAaJ,OAAkB,EAAA;QAC5C,IAAM9tB,KAAAA,GAAQ8tB,OAAQvC,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;QACxC,IAAMxC,KAAAA,GAAQ+E,QAAQzC,QAAQ,EAAA,CAAA;AAE9B,QAAA,IAAIprB,GAAM8oB,GAAAA,KAAAA,CAAMpjB,QAAQ,CAAC1F,GAAG,CAAA;AAC5B,QAAA,IAAI,IAAI,CAACqtB,cAAc,CAAC7jB,GAAG,CAACsf,KAAAA,CAAM/iB,MAAM,CAAA,IAAK+iB,KAAM/iB,CAAAA,MAAM,CAACknB,UAAU,CAAC,KAAQ,CAAA,EAAA;AAC3E,YAAA,IAAI,CAACrb,WAAW,CAACkX,KAAAA,CAAMpjB,QAAQ,EAAG,mBAAmBojB,GAAAA,KAAAA,CAAM/iB,MAAM,EAAI8nB,OAAAA,CAAQpoB,MAAM,EAAEooB,QAAQloB,IAAI,CAAA,CAAA;AACnG,SAAA;QAEA,IAAIkrB,SAAAA,CAAAA;QACJ,IAAIhD,OAAAA,CAAQzmB,UAAU,EAAA,KAAO,GAAK,EAAA;YAChCypB,SAAYhD,GAAAA,OAAAA,CAAQ3C,kBAAkB,CAAC,GAAA,CAAA,CAAA;YACvClrB,GAAM6tB,GAAAA,OAAAA,CAAQvC,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAClC,SAAA;QACA,IAAMsC,SAAAA,GAAYC,QAAQlB,cAAc,EAAA,CAAA;AACxC,QAAA,IAAM/iB,KAAQ3D,GAAAA,SAAAA,CAAUE,WAAW,CAACpG,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;AAC3C,QAAA,IAAM8wB,WAAc,GAAA,IAAIjI,WAAYC,CAAAA,KAAAA,EAAO8E,WAAWhkB,KAAOinB,EAAAA,SAAAA,CAAAA,CAAAA;AAC7D,QAAA,IAAI,CAACxD,cAAc,CAACvtB,GAAG,CAACgpB,KAAAA,CAAM/iB,MAAM,EAAE+qB,WAAAA,CAAAA,CAAAA;AAMtC,QAAA,IAAI,CAACrC,cAAc,CAACzpB,IAAI,CAAC;AAIvBolB,YAAAA,YAAAA,EAAcnkB,SAAUE,CAAAA,WAAW,CAACpG,KAAAA,EAAO8tB,QAAQ3mB,cAAc,EAAA,CAAA;YACjEoiB,OAAS,EAAA,EAAA;AACX,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAxlBW4D,IAAAA,QAAAA,CA0lBIiB,WAiBd,GAjBD,SAAeA,WAAAA,CAAYN,OAAkB,EAAA;QAC3C,IAAM9tB,KAAAA,GAAQ8tB,OAAQ9jB,CAAAA,OAAO,GAAG,CAAA,CAAA;QAChC,IAAM+e,KAAAA,GAAQ+E,QAAQzC,QAAQ,EAAA,CAAA;QAK9B,IAAMmE,aAAAA,GAAgBtpB,SAAUC,CAAAA,cAAc,CAACnG,KAAAA,CAAAA,CAAAA;AAC/C,QAAA,IAAM6J,QAAQ3D,SAAUE,CAAAA,WAAW,CAACopB,aAAAA,EAAe1B,QAAQ3mB,cAAc,EAAA,CAAA,CAAA;AACzE,QAAA,IAAI,CAACunB,cAAc,CAACzpB,IAAI,CAAC;YAIvBolB,YAAcxgB,EAAAA,KAAAA;YACd0f,OAAS,EAAA,EAAA;AACX,SAAA,CAAA,CAAA;AACA,QAAA,IAAI,CAAC+D,cAAc,CAAC0D,MAAM,CAACjI,MAAM/iB,MAAM,CAAA,CAAA;AACzC,KAAA,CAAA;AA3mBWmnB,IAAAA,QAAAA,CA6mBIY,QAuDd,GAvDD,SAAeA,QAASvkB,CAAAA,KAAgB,EAAEskB,OAAkB,EAAA;QAC1D,IAAM/E,KAAAA,GAAQ,IAAI,CAACuE,cAAc,CAAC7jB,GAAG,CAACD,MAAMxD,MAAM,CAAA,CAAA;AAClD,QAAA,IAAI+iB,KAAO,EAAA;AACT,YAAA,IAAIQ,OAAUR,GAAAA,KAAAA,CAAME,IAAI,CAACjjB,MAAM,CAAA;YAC/B,IAAI+iB,KAAAA,CAAMW,UAAU,EAAE;AACpBoE,gBAAAA,OAAAA,CAAQlC,UAAU,CAAC,GAAA,CAAA,CAAA;AACnBkC,gBAAAA,OAAAA,CAAQpmB,QAAQ,EAAA,CAAA;;AAGhB,gBAAA,IAAMshB,OAAiB,EAAE,CAAA;AACzB,gBAAA,IAAIiI,MAAS,GAAA,CAAA,CAAA;gBACb,IAAIC,MAAAA,GAASpD,QAAQ9jB,OAAO,CAAA;AAC5B,gBAAA,MAAO,IAAM,CAAA;AACX,oBAAA,IAAI8jB,OAAQzmB,CAAAA,UAAU,EAAO,KAAA,GAAA,EAAK4pB,MAAU,IAAA,CAAA,CAAA;yBACvC,IAAInD,OAAAA,CAAQzmB,UAAU,EAAA,KAAO,GAAK,EAAA;wBACrC4pB,MAAU,IAAA,CAAA,CAAA;AACV,wBAAA,IAAIA,WAAW,CAAG,EAAA,MAAA;AACpB,qBAAA,MAAO,IAAInD,OAAQzmB,CAAAA,UAAU,EAAO,KAAA,GAAA,IAAO4pB,WAAW,CAAG,EAAA;wBACvDjI,IAAK/jB,CAAAA,IAAI,CAAC6oB,OAAQpoB,CAAAA,MAAM,CAAC4N,KAAK,CAAC4d,MAAQpD,EAAAA,OAAAA,CAAQ9jB,OAAO,CAAA,CAAA,CAAA;wBACtDknB,MAASpD,GAAAA,OAAAA,CAAQ9jB,OAAO,GAAG,CAAA,CAAA;AAC7B,qBAAA;AACA8jB,oBAAAA,OAAAA,CAAQpmB,QAAQ,EAAA,CAAA;AAClB,iBAAA;gBACAshB,IAAK/jB,CAAAA,IAAI,CAAC6oB,OAAQpoB,CAAAA,MAAM,CAAC4N,KAAK,CAAC4d,MAAQpD,EAAAA,OAAAA,CAAQ9jB,OAAO,CAAA,CAAA,CAAA;AAEtD8jB,gBAAAA,OAAAA,CAAQpmB,QAAQ,EAAA,CAAA;gBAChB,IAAMmC,KAAAA,GAAQ3D,SAAUE,CAAAA,WAAW,CAACoD,KAAAA,CAAM7D,QAAQ,CAAE3F,KAAK,EAAE8tB,OAAAA,CAAQ3mB,cAAc,EAAA,CAAA,CAAA;gBACjFoiB,OAAUR,GAAAA,KAAAA,CAAMM,kBAAkB,CAACL,IAAAA,CAAAA,CAAAA;AACnC,gBAAA,IAAMiG,WAAW,IAAI,CAACC,iBAAiB,CAAC3F,SAAS1f,KAAOikB,EAAAA,OAAAA,CAAAA,CAAAA;gBAIxD,IAAMqD,UAAAA,GAAajrB,SAAUE,CAAAA,WAAW,CAACoD,KAAAA,CAAM7D,QAAQ,CAAE3F,KAAK,EAAE8tB,OAAAA,CAAQ3mB,cAAc,EAAA,CAAA,CAAA;AACtF,gBAAA,IAAI,CAACunB,cAAc,CAACzpB,IAAI,CAAC;oBAIvBolB,YAAc8G,EAAAA,UAAAA;AACd5H,oBAAAA,OAAAA,EAAS0F,SAASE,OAAO;AAC3B,iBAAA,CAAA,CAAA;aACK,MAAA;gBACL,IAAMF,SAAAA,GAAW,IAAI,CAACC,iBAAiB,CAAC3F,OAAS/f,EAAAA,KAAAA,CAAM7D,QAAQ,EAAEmoB,OAAAA,CAAAA,CAAAA;AAIjE,gBAAA,IAAMjkB,MAAQ3D,GAAAA,SAAAA,CAAUE,WAAW,CAACoD,KAAM7D,CAAAA,QAAQ,CAAC3F,KAAK,EAAEwJ,KAAAA,CAAM7D,QAAQ,CAAC1F,GAAG,CAAA,CAAA;AAC5E,gBAAA,IAAI,CAACyuB,cAAc,CAACzpB,IAAI,CAAC;oBAIvBolB,YAAcxgB,EAAAA,MAAAA;AACd0f,oBAAAA,OAAAA,EAAS0F,UAASE,OAAO;AAC3B,iBAAA,CAAA,CAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AApqBWhC,IAAAA,aAAAA,CAAAA,QAAAA,EAAAA,IAAAA,EAAAA;;YA6EQuB,GAAAA,EAAAA,gBAAAA;AAAnB,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACnB,oBAAoB,CAAC,IAAI,CAACA,oBAAoB,CAACloB,MAAM,GAAG,CAAE,CAAA,CAAA;AACxE,aAAA;;;AA/EW8nB,IAAAA,OAAAA,QAAAA,CAAAA;AAqqBZ,CAAA,EAAA,CAAA;AArqBYA,QAAAA,CACIG,iBAA2C,IAAI/sB,GAAAA,EAAAA,CAAAA;AADnD4sB,QAAAA,CAEII,oBAA0C,GAAA;IAAC,EAAE;AAAC,CAAA,CAAA;AAE7D,sDAJWJ,QAKIK,CAAAA,aAAAA,GAA6B,IAAIhO,GAAAA,EAAAA;;AC1BlD,iBACO,IAAM4R,YAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,YAAAA,GAAAA,EAAAA;AAGX;;;MAHWA,aAOJlnB,KAEN,GAFD,SAAOA,KAAMkjB,CAAAA,UAAkC,EAAEC,qBAA6B,EAAA;QAC5EF,QAASjjB,CAAAA,KAAK,CAACkjB,UAAYC,EAAAA,qBAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AAEA;;AAEC,MACD,YAAOgE,CAAAA,OAGN,GAHD,SAAOA,QAAQ3rB,MAAc,EAAA;AAC3B,QAAA,IAAI,CAAC4rB,WAAW,GAAG,IAAI9G,SAAU9kB,CAAAA,MAAAA,CAAAA,CAAAA;AACjC,QAAA,OAAOynB,QAASxF,CAAAA,KAAK,CAAC,IAAI,CAAC2J,WAAW,CAAA,CAAA;AACxC,KAAA,CAAA;AAjBWF,IAAAA,YAAAA,CAmBJ3D,kBAEN,GAFD,SAAOA,kBAAmB1E,CAAAA,KAAa,EAAE9R,KAAc,EAAA;QACrDkW,QAASM,CAAAA,kBAAkB,CAAC1E,KAAO9R,EAAAA,KAAAA,CAAAA,CAAAA;AACrC,KAAA,CAAA;AArBWma,IAAAA,OAAAA,YAAAA,CAAAA;AA4BZ,CAAA,EAAA;;ACxBM,IAAA,WAAA,iBAAA,WAAA;AAAMG,IAAAA,SAAAA,WAAAA,GAAAA,EAAAA;AAAAA,IAAAA,WAAAA,CACJC,gBAKN,GALD,SAAOA,gBAA+B9c,CAAAA,IAAc,EAAE7P,IAAkB,EAAA;AACtE,QAAA,IAAMyR,KAAQ5B,GAAAA,IAAAA,CAAKV,QAAQ,CAAC,CAAE,CAAA,CAAA;QAC9B,IAAS,WAALsC,CAAAA,KAAAA,EAAiB3B,SAAO,CAAA,EAAA,OAAA;AAC5B,QAAA,IAAI2B,KAAMxC,CAAAA,EAAE,KAAKjP,IAAAA,EAAM,OAAOyR,KAAAA,CAAAA;AAC9B,QAAA,OAAOib,WALEA,CAKUC,gBAAgB,CAAClb,KAAOzR,EAAAA,IAAAA,CAAAA,CAAAA;AAC7C,KAAA,CAAA;AANW0sB,IAAAA,WAAAA,CA4BJxS,UAEN,GAFD,SAAOA,UAAAA,CAAWtP,EAAiB,EAAA;QACjC,OAAOA,EAAAA,GAAKuC,aAAaU,KAAK,CAAA;AAChC,KAAA,CAAA;AA9BW6e,IAAAA,OAAAA,WAAAA,CAAAA;AAwDZ,CAAA,EAAA;;ACvDD,iBACO,IAAME,cAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,cAAAA,GAAAA;AAaXC,QAAAA,IAAAA,CAAAA,aAAAA,GAA8B,EAAE,CAAA;AAChCC,QAAAA,IAAAA,CAAAA,gBAAAA,GAA8C,EAAE,CAAA;aAMhDC,wBAAgFC,GAAAA,MAAAA,CAAO3e,MAAM,CAAC,IAAA,CAAA,CAAA;aAC9F4e,kBAA8ED,GAAAA,MAAAA,CAAO3e,MAAM,CAAC,IAAA,CAAA,CAAA;aAC5F6e,sBAA8EF,GAAAA,MAAAA,CAAO3e,MAAM,CAAC,IAAA,CAAA,CAAA;aAC5F8e,kBAA0DH,GAAAA,MAAAA,CAAO3e,MAAM,CAAC,IAAA,CAAA,CAAA;;AAvB7Due,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;IAmCXvnB,MAAAA,CAAAA,KAQC,GARDA,SAAAA,KAAAA,GAAAA;AACE,QAAA,IAAI,CAACwnB,aAAa,CAACrsB,MAAM,GAAG,CAAA,CAAA;AAC5B,QAAA,IAAI,CAACssB,gBAAgB,CAACtsB,MAAM,GAAG,CAAA,CAAA;AAC/B,QAAA,IAAI,CAACusB,wBAAwB,GAAGC,MAAAA,CAAO3e,MAAM,CAAC,IAAA,CAAA,CAAA;AAC9C,QAAA,IAAI,CAAC4e,kBAAkB,GAAGD,MAAAA,CAAO3e,MAAM,CAAC,IAAA,CAAA,CAAA;AACxC,QAAA,IAAI,CAAC6e,sBAAsB,GAAGF,MAAAA,CAAO3e,MAAM,CAAC,IAAA,CAAA,CAAA;AAC5C,QAAA,IAAI,CAAC8e,kBAAkB,GAAGH,MAAAA,CAAO3e,MAAM,CAAC,IAAA,CAAA,CAAA;QACxC,IAAI,CAAC+e,SAAS,GAAGhhB,SAAAA,CAAAA;AACnB,KAAA,CAAA;AAEAihB,IAAAA,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAkBrtB,IAAY,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC8sB,gBAAgB,CAAC1K,SAAS,CAAC,SAACjX,IAAAA,EAAAA;mBAASA,IAAK3B,CAAAA,KAAK,CAAErI,MAAM,KAAKnB,IAAAA,CAAAA;eAAU,CAAC,CAAA,CAAA;AACrF,KAAA,CAAA;AAEAstB,IAAAA,MAAAA,CAAAA,eAEC,GAFDA,SAAAA,eAAAA,CAAgBttB,IAAY,EAAA;YACnB,yBAAA,EAAA,mBAAA,CAAA;AAAP,QAAA,OAAO,CAAA,CAAA,mBAAA,GAAA,IAAI,CAACutB,aAAa,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAlB,yBAAA,GAAA,mBAAA,CAAoB/jB,KAAK,KAAA,IAAA,GAAA,KAAA,CAAA,GAAzB,yBAA2BrI,CAAAA,MAAM,MAAKnB,IAAAA,CAAAA;AAC/C,KAAA,CAAA;AAEAwtB,IAAAA,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,CAAYxtB,IAAY,EAAA;YACf,qBAAA,EAAA,eAAA,CAAA;AAAP,QAAA,OAAO,CAAA,CAAA,eAAA,GAAA,IAAI,CAACotB,SAAS,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAd,qBAAA,GAAA,eAAA,CAAgB5jB,KAAK,KAAA,IAAA,GAAA,KAAA,CAAA,GAArB,qBAAuBrI,CAAAA,MAAM,MAAKnB,IAAAA,CAAAA;AAC3C,KAAA,CAAA;AAEAytB,IAAAA,MAAAA,CAAAA,kBAaC,GAbDA,SAAAA,kBAAAA,CAAmBjkB,KAAgB,EAAA;AACjC,QAAA,IAAI,IAAI,CAACujB,wBAAwB,CAACvjB,KAAMrI,CAAAA,MAAM,CAAC,EAAE,OAAA;AAEjD,QAAA,IAAMyX,OAAO,IAAI,CAACiU,aAAa,CAAC3e,IAAI,CAAC,SAAC/C,IAAAA,EAAAA;AAASA,YAAAA,OAAAA,IAAAA,CAAK3B,KAAK,CAACrI,MAAM,KAAKqI,MAAMrI,MAAM,CAAA;;AACjF,QAAA,IAAI,CAACyX,IAAM,EAAA;AACT,YAAA,OAAO9Y,cAAeY,CAAAA,aAAa,CAChC,qCAAkC8I,KAAMrI,CAAAA,MAAM,EAC/Ca,aAAAA,CAAY4hB,gBAAgB,EAC5BviB,SAAAA,CAAUwiB,mBAAmB,EAC7Bra,MAAM1I,QAAQ,CAAA,CAAA;AAElB,SAAA;AACA,QAAA,IAAI,CAACisB,wBAAwB,CAACvjB,KAAMrI,CAAAA,MAAM,CAAC,GAAGyX,IAAAA,CAAAA;AAChD,KAAA,CAAA;AAEA8U,IAAAA,MAAAA,CAAAA,gBAaC,GAbDA,SAAAA,gBAAAA,CAAiBlkB,KAAgB,EAAA;AAGlB,QAAA,IAAA,mBAAA,CAAA;AAFb,QAAA,IAAI,IAAI,CAAC0jB,sBAAsB,CAAC1jB,KAAMrI,CAAAA,MAAM,CAAC,EAAE,OAAA;QAE/C,IAAMyX,IAAAA,GAAAA,CAAO,mBAAA,GAAA,IAAI,CAAC2U,aAAa,KAAlB,IAAA,GAAA,KAAA,CAAA,GAAA,mBAAA,CAAoBxV,QAAQ,CAAC7J,IAAI,CAAC,SAAC/C,IAAAA,EAAAA;AAASA,YAAAA,OAAAA,IAAAA,CAAK3B,KAAK,CAACrI,MAAM,KAAKqI,MAAMrI,MAAM,CAAA;;AAC3F,QAAA,IAAI,CAACyX,IAAM,EAAA;AACT,YAAA,OAAO9Y,cAAeY,CAAAA,aAAa,CAChC,mCAAgC8I,KAAMrI,CAAAA,MAAM,EAC7Ca,aAAAA,CAAY4hB,gBAAgB,EAC5BviB,SAAAA,CAAUwiB,mBAAmB,EAC7Bra,MAAM1I,QAAQ,CAAA,CAAA;AAElB,SAAA;AACA,QAAA,IAAI,CAACosB,sBAAsB,CAAC1jB,KAAMrI,CAAAA,MAAM,CAAC,GAAGyX,IAAAA,CAAAA;AAC9C,KAAA,CAAA;AAEA+U,IAAAA,MAAAA,CAAAA,gBAaC,GAbDA,SAAAA,gBAAAA,CAAiBnkB,KAAgB,EAAA;AAGlB,QAAA,IAAA,eAAA,CAAA;AAFb,QAAA,IAAI,IAAI,CAAC2jB,kBAAkB,CAAC3jB,KAAMrI,CAAAA,MAAM,CAAC,EAAE,OAAA;QAE3C,IAAMyX,IAAAA,GAAAA,CAAO,eAAA,GAAA,IAAI,CAACwU,SAAS,KAAd,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAgBrV,QAAQ,CAAC7J,IAAI,CAAC,SAAC/C,IAAAA,EAAAA;AAASA,YAAAA,OAAAA,IAAAA,CAAK3B,KAAK,CAACrI,MAAM,KAAKqI,MAAMrI,MAAM,CAAA;;AACvF,QAAA,IAAI,CAACyX,IAAM,EAAA;AACT,YAAA,OAAO9Y,cAAeY,CAAAA,aAAa,CAChC,+BAA4B8I,KAAMrI,CAAAA,MAAM,EACzCa,aAAAA,CAAY4hB,gBAAgB,EAC5BviB,SAAAA,CAAUwiB,mBAAmB,EAC7Bra,MAAM1I,QAAQ,CAAA,CAAA;AAElB,SAAA;AACA,QAAA,IAAI,CAACqsB,kBAAkB,CAAC3jB,KAAMrI,CAAAA,MAAM,CAAC,GAAGyX,IAAAA,CAAAA;AAC1C,KAAA,CAAA;AAEAgV,IAAAA,MAAAA,CAAAA,eAeC,GAfDA,SAAAA,eAAgBpkB,CAAAA,KAAa,EAAExJ,IAAiB,EAAA;AAC9C,QAAA,IAAI,IAAI,CAACitB,kBAAkB,CAACzjB,MAAM,EAAE,OAAA;QAEpC,IAAIxJ,IAAAA,KAASsJ,WAAYW,CAAAA,EAAE,EAAE;AAC3B,YAAA,IAAM4jB,YAAY,IAAI,CAACC,gBAAgB,CAAC1iB,eAAe,CAAC5B,KAAAA,CAAAA,CAAAA;AACxD,YAAA,IAAK,IAAIlJ,CAAI,GAAA,CAAA,EAAGA,IAAIutB,SAAUrtB,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;AACzC,gBAAA,IAAMytB,GAAMztB,GAAAA,CAAAA,KAAM,CAAIkJ,GAAAA,KAAAA,GAAQA,KAAQlJ,GAAAA,CAAAA,CAAAA;AACtC,gBAAA,IAAI,CAAC2sB,kBAAkB,CAACc,IAAI,GAAGF,SAAS,CAACvtB,CAAE,CAAA,CAAA;AAC7C,aAAA;AACA,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAMsK,KAAK,IAAI,CAACkjB,gBAAgB,CAAC5iB,MAAM,CAAC1B,KAAOxJ,EAAAA,IAAAA,CAAAA,CAAAA;AAC/C,QAAA,IAAI4K,EAAI,EAAA;AACN,YAAA,IAAI,CAACqiB,kBAAkB,CAACzjB,KAAAA,CAAM,GAAGoB,EAAAA,CAAAA;AACnC,SAAA;AACF,KAAA,CAAA;IArHWgiB,cAMJvnB,CAAAA,KAKN,GALD,SAAOA,KAAAA,GAAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAACye,UAAU,EAAE;YACpB,IAAI,CAACA,UAAU,GAAG,IARX8I,cAAAA,EAAAA,CAAAA;AAST,SAAA;QACA,IAAI,CAAC9I,UAAU,CAACze,KAAK,EAAA,CAAA;AACvB,KAAA,CAAA;AAXWunB,IAAAA,aAAAA,CAAAA,cAAAA,EAAAA;;YA+BPoB,GAAAA,EAAAA,iBAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACF,gBAAgB,CAAA;AAC9B,aAAA;;;;YA/BWG,GAAAA,EAAAA,SAAAA;AAAX,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACnK,UAAU,CAAA;AACxB,aAAA;;;AAJW8I,IAAAA,OAAAA,cAAAA,CAAAA;AAsHZ,CAAA,EAAA;;AC9HM,IAAA,SAAA,iBAAA,WAAA;AAAMsB,IAAAA,SAAAA,SAAAA,GAAAA;AACXC,QAAAA,IAAAA,CAAAA,KAAAA,GAAkB,IAAIvM,KAAAA,EAAAA,CAAAA;;AADXsM,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;IAGX7yB,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;AACE,QAAA,IAAI,CAAC8yB,KAAK,CAAC3tB,MAAM,GAAG,CAAA,CAAA;AACtB,KAAA,CAAA;AALW0tB,IAAAA,OAAAA,SAAAA,CAAAA;AAMZ,CAAA,EAAA;;ACQM,IAAME,kBAAkB,gBAAiB,CAAA;AACzC,IAAMC,iBAAiB,eAAgB,CAAA;AAE9C;;;IAIO,IAAeC,cAAf,iBAAA,WAAA;AAAeA,IAAAA,SAAAA,cAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAUpB7e,IAAAA,MAAAA,CAAAA,cAaC,GAbDA,SAAAA,cAAAA,CAAeN,QAAqB,EAAA;QAClC,IAAMlP,IAAAA,GAAOquB,cAXKA,CAWUC,aAAa,CAAA;QACzC,IAAIxhB,GAAAA,GAAM9M,KAAK2E,GAAG,EAAA,CAAA;AAClBmI,QAAAA,GAAAA,CAAI1R,OAAO,EAAA,CAAA;AACX,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAoB8T,QAAU,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAnBsC,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAS,WAALA,CAAAA,KAAAA,EAAiB3B,SAAO,CAAA,EAAA;AAC1B/C,gBAAAA,GAAAA,CAAIohB,KAAK,CAAC/tB,IAAI,CAACqR,MAAMtQ,MAAM,CAAA,CAAA;aACtB,MAAA;AACL4L,gBAAAA,GAAAA,CAAIohB,KAAK,CAAC/tB,IAAI,CAACqR,KAAMlC,CAAAA,OAAO,CAAC,IAAI,CAAA,CAAA,CAAA;AACnC,aAAA;AACF,SAAA;AACAtP,QAAAA,IAAAA,CAAKuuB,MAAM,CAACzhB,GAAAA,CAAAA,CAAAA;AACZ,QAAA,OAAOA,GAAIohB,CAAAA,KAAK,CAACpqB,IAAI,CAAC,GAAA,CAAA,CAAA;AACxB,KAAA,CAAA;AAEA6T,IAAAA,MAAAA,CAAAA,sBA0DC,GA1DDA,SAAAA,sBAAAA,CAAuB/H,IAA+B,EAAA;QACpD,IAAMV,QAAAA,GAAWU,KAAKV,QAAQ,CAAA;QAC9B,IAAMsf,gBAAAA,GAAmBtf,SAAS3O,MAAM,CAAA;QACxC,IAAMytB,OAAAA,GAAUrB,eAAeqB,OAAO,CAAA;AAEtC,QAAA,IAAIQ,qBAAqB,CAAG,EAAA;YAC1B,IAAMC,QAAAA,GAAWvf,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC5B,IAAMyJ,IAAAA,GAAOzJ,QAAQ,CAAC,CAAE,CAAA,CAAA;YAExB,IAAQ,WAAJyJ,CAAAA,IAAAA,EAAgB9I,SAAO,CAAA,EAAA;AACzB,gBAAA,IAAIme,OAAQZ,CAAAA,iBAAiB,CAASqB,QAAAA,CAAS1uB,IAAI,CAAG,EAAA;oBACtCiuB,OAAQR,CAAAA,kBAAkB,CAAC7U,IAAAA,EAAAA;AAMzC,oBAAA,OAAOA,KAAKzX,MAAM,CAAA;AACpB,iBAAA,MAAO,IAAI8sB,OAAQX,CAAAA,eAAe,CAASoB,QAAAA,CAAS1uB,IAAI,CAAG,EAAA;oBAC3CiuB,OAAQP,CAAAA,gBAAgB,CAAC9U,IAAAA,EAAAA;AAMvC,oBAAA,OAAOA,KAAKzX,MAAM,CAAA;AACpB,iBAAA,MAAO,IAAI8sB,OAAQT,CAAAA,WAAW,CAASkB,QAAAA,CAAS1uB,IAAI,CAAG,EAAA;oBACvCiuB,OAAQN,CAAAA,gBAAgB,CAAC/U,IAAAA,EAAAA;AAMvC,oBAAA,OAAOA,KAAKzX,MAAM,CAAA;AACpB,iBAAA;gBAEA,OAAUutB,SAASnf,OAAO,CAAC,IAAI,CAAE,GAAA,GAAA,GAAGqJ,KAAKzX,MAAM,CAAA;aAC1C,MAAA;gBACL,OAAUutB,QAASnf,CAAAA,OAAO,CAAC,IAAI,IAAE,GAAGqJ,GAAAA,IAAAA,CAAKrJ,OAAO,CAAC,IAAI,CAAA,CAAA;AACvD,aAAA;SACK,MAAA,IAAIkf,qBAAqB,CAAG,EAAA;YACjC,IAAME,SAAAA,GAAYxf,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC7B,IAAMyf,SAAAA,GAAYzf,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC7B,YAAA,IAAM0f,WAAcF,GAAAA,SAAAA,CAAUpf,OAAO,CAAC,IAAI,CAAA,CAAA;AAC1C,YAAA,IAAMuf,WAAcF,GAAAA,SAAAA,CAAUrf,OAAO,CAAC,IAAI,CAAA,CAAA;AAC1C,YAAA,IAAIsf,gBAAgB,aAAe,EAAA;AAMjC,gBAAA,IAAME,SAAY,GAAA,IAAI,CAACC,kBAAkB,CAACF,WAAAA,CAAAA,CAAAA;gBAC1Cb,OAAQd,CAAAA,kBAAkB,CAAC4B,SAAU,CAAA,GAAG,IAAI,CAACE,wBAAwB,CAACH,WAAaC,EAAAA,SAAAA,CAAAA,CAAAA;gBACnF,OAAOA,SAAAA,CAAAA;AACT,aAAA;YACA,OAAUF,WAAY,GAAA,GAAA,GAAGC,WAAY,GAAA,GAAA,CAAA;AACvC,SAAA;AACA,QAAA,OAAO,IAAI,CAACrf,cAAc,CAACI,KAAKV,QAAQ,CAAA,CAAA;AAC1C,KAAA,CAAA;AAEA0K,IAAAA,MAAAA,CAAAA,uBAKC,GALDA,SAAAA,uBAAAA,CAAwBhK,IAAgC,EAAA;QACtD,IAAmB,WAAfA,CAAAA,IAAAA,CAAK+J,UAAU,EAAY/N,cAAagE,IAAK+J,CAAAA,UAAU,CAAC9N,gBAAgB,EAAE;YAC5E8gB,cAAeqB,CAAAA,OAAO,CAACL,eAAe,CAAC/d,KAAK1O,MAAM,EAAEmI,YAAY0C,GAAG,CAAA,CAAA;AACrE,SAAA;AACA,QAAA,OAAO6D,KAAK1O,MAAM,CAAA;AACpB,KAAA,CAAA;AAEAgV,IAAAA,MAAAA,CAAAA,iBAwBC,GAxBDA,SAAAA,iBAAAA,CAAkBtG,IAA0B,EAAA;AAC1C,QAAA,IAAMqf,IAAOrf,GAAAA,IAAAA,CAAKV,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC7B,QAAA,IAAI+f,WAAa,CAAbA,IAAK5Y,CAAAA,QAAQ,EAAYzM,QAAU,CAAA,EAAA;YACrC+iB,cAAeqB,CAAAA,OAAO,CAACL,eAAe,CAACsB,IAAAA,CAAK5Y,QAAQ,CAAC9M,KAAK,EAAEF,WAAAA,CAAYW,EAAE,CAAA,CAAA;AAE1E,YAAA,IAAMwM,SAAYyY,GAAAA,IAAAA,CAAK/f,QAAQ,CAAC,CAAE,CAAA,CAAA;YAClC,IAAMggB,aAAAA,GAAgBD,KAAK5Y,QAAQ,CAAC5M,OAAO,CAACI,SAAS,CAACqK,aAAa,CAAA;AAEnE,YAAA,IAAIsC,WAAS,CAATA,SAAqB1H,EAAAA,OAAAA,CAAQ2H,yBAAyB,CAAE,EAAA;AAC1D,gBAAA,IAAM0Y,cAAwB,EAAE,CAAA;gBAChC,IAAM5jB,MAAAA,GAASiL,UAAUG,UAAU,CAAA;AAEnC,gBAAA,IAAK,IAAItW,CAAI,GAAA,CAAA,EAAGA,IAAIkL,MAAOhL,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;oBACtC,IACE,CAACssB,cAAeqB,CAAAA,OAAO,CAACZ,iBAAiB,CAAC8B,aAAa,CAAC7uB,CAAAA,CAAE,CAACsO,QAAQ,CAACvF,UAAU,CAC9E,IAAA,CAACujB,cAAeqB,CAAAA,OAAO,CAACX,eAAe,CAAC6B,aAAa,CAAC7uB,CAAAA,CAAE,CAACsO,QAAQ,CAACvF,UAAU,CAC5E,EAAA;wBACA+lB,WAAYhvB,CAAAA,IAAI,CAACoL,MAAM,CAAClL,EAAE,CAACiP,OAAO,CAAC,IAAI,CAAA,CAAA,CAAA;AACzC,qBAAA;AACF,iBAAA;gBACA,OAAU2f,IAAK5Y,CAAAA,QAAQ,CAAC9M,KAAK,GAAC,GAAG4lB,GAAAA,WAAAA,CAAYrrB,IAAI,CAAC,IAAM,CAAA,GAAA,GAAA,CAAA;AAC1D,aAAA;AACF,SAAA;AACA,QAAA,OAAO,IAAI,CAAC0L,cAAc,CAACI,KAAKV,QAAQ,CAAA,CAAA;AAC1C,KAAA,CAAA;AAEAyG,IAAAA,MAAAA,CAAAA,kBAOC,GAPDA,SAAAA,kBAAAA,CAAmB/F,IAA2B,EAAA;QAC5C,IAAMV,QAAAA,GAAWU,KAAKV,QAAQ,CAAA;QAC9B,IAAIA,QAAAA,CAAS3O,MAAM,KAAK,CAAG,EAAA;AACzB,YAAA,OAAO2O,QAAQ,CAAC,CAAA,CAAE,CAACI,OAAO,CAAC,IAAI,CAAA,CAAA;SAC1B,MAAA;AACL,YAAA,OAAO,QAAW,CAAC,CAAE,CAAA,CAACA,OAAO,CAAC,IAAI,CAAE,GAAA,IAAA,GAAIJ,QAAQ,CAAC,CAAA,CAAE,CAACI,OAAO,CAAC,IAAI,CAAA,CAAA;AAClE,SAAA;AACF,KAAA,CAAA;AAEA0B,IAAAA,MAAAA,CAAAA,sBAMC,GANDA,SAAAA,sBAAAA,CAAuBpB,IAA+B,EAAA;AACpD,QAAA,IAAM7P,IAAO6P,GAAAA,IAAAA,CAAK7F,aAAa,CAAChK,IAAI,CAAA;QACpC,IAAI,OAAOA,SAAS,QAAU,EAAA;AAC5B4sB,YAAAA,cAAAA,CAAeqB,OAAO,CAACL,eAAe,CAAC5tB,IAAAA,EAAMsJ,YAAY1K,MAAM,CAAA,CAAA;AACjE,SAAA;AACA,QAAA,OAAO,IAAI,CAAC6Q,cAAc,CAACI,KAAKV,QAAQ,CAAA,CAAA;AAC1C,KAAA,CAAA;AAEAmK,IAAAA,MAAAA,CAAAA,8BAOC,GAPDA,SAAAA,8BAAAA,CAA+BzJ,IAAiC,EAAA;QAC9D,IAAMV,QAAAA,GAAWU,KAAKV,QAAQ,CAAA;QAC9B,IAAMkgB,QAAAA,GAAWlgB,QAAQ,CAAC,CAAE,CAAA,CAAA;QAC5B,IAAY,WAARkgB,CAAAA,QAAAA,EAAoBtgB,OAAQoC,CAAAA,kBAAkB,KAAIke,QAASrlB,CAAAA,aAAa,CAACgI,QAAQ,EAAE;YACrF4a,cAAeqB,CAAAA,OAAO,CAACL,eAAe,CAASyB,SAASrvB,IAAI,EAAEsJ,YAAY1K,MAAM,CAAA,CAAA;AAClF,SAAA;QACA,OAAO,IAAI,CAAC6Q,cAAc,CAACN,QAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AAEA4E,IAAAA,MAAAA,CAAAA,gBAUC,GAVDA,SAAAA,gBAAAA,CAAiBlE,IAAyB,EAAA;QACxC,IAAQoe,UAAYrB,cAAZqB,CAAAA,OAAAA,CAAAA;QACR,IAAM9e,QAAAA,GAAWU,KAAKV,QAAQ,CAAA;QAC9B,IAAMsC,KAAAA,GAAQtC,QAAQ,CAAC,CAAE,CAAA,CAAA;AAEzB,QAAA,IAAIsC,WAAK,CAALA,KAAiB1C,EAAAA,OAAAA,CAAQqE,kBAAkB,CAAE,EAAA;AAC/C,YAAA,IAAM/J,UAAaoI,GAAAA,KAAAA,CAAM7C,QAAQ,CAACvF,UAAU,CAAA;YAC5C,IAAI4kB,OAAAA,CAAQX,eAAe,CAACjkB,UAAAA,CAAAA,IAAe4kB,QAAQT,WAAW,CAACnkB,aAAa,OAAO,EAAA,CAAA;AACrF,SAAA;QACA,OAAO,IAAI,CAACoG,cAAc,CAACN,QAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AAEAkF,IAAAA,MAAAA,CAAAA,sBAGC,GAHDA,SAAAA,sBAAAA,CAAuBxE,IAA+B,EAAA;QACpD+c,cAAeqB,CAAAA,OAAO,CAACqB,MAAM,GAAGzf,IAAAA,CAAAA;AAChC,QAAA,OAAO,IAAI,CAACJ,cAAc,CAACI,KAAKV,QAAQ,CAAA,CAAA;AAC1C,KAAA,CAAA;AAEA6G,IAAAA,MAAAA,CAAAA,uBAGC,GAHDA,SAAAA,uBAAAA,CAAwBnG,IAAgC,EAAA;QACtD+c,cAAeqB,CAAAA,OAAO,CAACqB,MAAM,GAAGljB,SAAAA,CAAAA;AAChC,QAAA,OAAO,IAAI,CAACqD,cAAc,CAACI,KAAKV,QAAQ,CAAA,CAAA;AAC1C,KAAA,CAAA;AAEA6F,IAAAA,MAAAA,CAAAA,0BAUC,GAVDA,SAAAA,0BAAAA,CAA2BnF,IAAmC,EAAA;;QAC5D,IAAMrE,MAAAA,GAASqE,KAAKuE,iBAAiB,CAAA;QACrC,OAAO5I,MAAAA,CACJD,MAAM,CACL,SAACJ,IAAAA,EAAAA;AACC,YAAA,OAAA,CAACyhB,eAAeqB,OAAO,CAACZ,iBAAiB,CAACliB,IAAAA,CAAKyD,QAAQ,CAACvF,UAAU,KAClE,CAACujB,cAAAA,CAAeqB,OAAO,CAACX,eAAe,CAACniB,IAAKyD,CAAAA,QAAQ,CAACvF,UAAU,CAAA,CAAA;AAEnEkF,SAAAA,CAAAA,CAAAA,GAAG,CAAC,SAACpD,IAAAA,EAAAA;mBAASA,IAAKzB,CAAAA,OAAO,CAAC6F,OAAO,CAAA,KAAA,CAAA,CAAA;AAClCxL,SAAAA,CAAAA,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA;AACV,KAAA,CAAA;AAEA4Q,IAAAA,MAAAA,CAAAA,mBAKC,GALDA,SAAAA,mBAAAA,CAAoB9E,IAA4B,EAAA;AAC9C,QAAA,IAAM9F,aAAa8F,IAAK9F,CAAAA,UAAU,CAACC,aAAa,CAAC7I,MAAM,CAAA;AACvD,QAAA,IAAIyrB,eAAeqB,OAAO,CAACZ,iBAAiB,CAACtjB,UAAAA,CAAAA,IAAe6iB,eAAeqB,OAAO,CAACX,eAAe,CAACvjB,UAAAA,CAAAA,EACjG,OAAO,OAAC,GAAO8F,KAAKrG,KAAK,CAACrI,MAAM,GAAC,GAAA,CAAA;AACnC,QAAA,OAAO,IAAI,CAACsO,cAAc,CAACI,KAAKV,QAAQ,CAAA,CAAA;AAC1C,KAAA,CAAA;AAEAqB,IAAAA,MAAAA,CAAAA,kBAoBC,GApBDA,SAAAA,kBAAAA,CAAmBX,IAA2B,EAAA;QAC5C,IAAMV,QAAAA,GAAWU,KAAKV,QAAQ,CAAA;QAC9B,IAAMogB,GAAAA,GAAMpgB,QAAQ,CAAC,CAAE,CAAA,CAAA;AACvB,QAAA,IAAIogB,GAAIvvB,CAAAA,IAAI,KAAKxE,QAAAA,CAASkB,MAAM,EAAE;YAChC,IAAMma,IAAAA,GAAO1H,QAAQ,CAAC,CAAE,CAAA,CAAA;AACxB,YAAA,IAAI0H,WAAI,CAAJA,IAAgB9H,EAAAA,OAAAA,CAAQuI,UAAU,CAAE,EAAA;AAKVsV,gBAAAA,IAAAA,2CAAAA,EAAAA,uCAIDA,4CAAAA,EAAAA,sCAAAA,CAAAA;AAR3B,gBAAA,IAAM4C,YAAY9C,WAAYC,CAAAA,gBAAgB,CAC5C9V,IAAAA,EACA1J,aAAa2M,mBAAmB,CAAA,CAAA;AAElC,gBAAA,IAAI0V,CAAAA,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAW5gB,QAAQ,OAAA,CAAKge,wCAAAA,cAAeqB,CAAAA,OAAO,CAACV,aAAa,sBAApCX,2CAAAA,GAAAA,qCAAAA,CAAsCpjB,KAAK,KAA3CojB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,2CAAAA,CAA6CzrB,MAAM,CAAE,EAAA;oBAC/E,OAAO,EAAA,CAAA;AACT,iBAAA;AACA,gBAAA,IAAMsuB,eAAe/C,WAAYC,CAAAA,gBAAgB,CAAuB9V,IAAAA,EAAM1J,aAAaiJ,aAAa,CAAA,CAAA;AACxG,gBAAA,IAAIqZ,CAAAA,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAAA,CAAczvB,IAAI,OAAA,CAAK4sB,yCAAAA,cAAeqB,CAAAA,OAAO,CAACV,aAAa,sBAApCX,4CAAAA,GAAAA,sCAAAA,CAAsCpjB,KAAK,KAA3CojB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,4CAAAA,CAA6CzrB,MAAM,CAAE,EAAA;AAC9E,oBAAA,OAAO,EAAG0V,GAAAA,IAAAA,CAAKtH,OAAO,CAAC,IAAI,CAAE,GAAA,GAAA,CAAA;AAC/B,iBAAA;AACF,aAAA;AACF,SAAA;QACA,OAAO,IAAI,CAACE,cAAc,CAACN,QAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AAEA+H,IAAAA,MAAAA,CAAAA,uBAEC,GAFDA,SAAAA,uBAAAA,CAAwBrH,IAAgC,EAAA;AACtD,QAAA,OAAO,IAAI,CAACJ,cAAc,CAACI,KAAKV,QAAQ,CAAA,CAAA;AAC1C,KAAA,CAAA;AAEA,IAAA,MAAA,CAAUugB,YAMT,GAND,SAAUA,YAAaziB,CAAAA,GAAiC,EAAEtM,OAAe,EAAA;AAIvEK,QAAAA,MAAAA,CAAOC,KAAK,CAACN,OAAAA,CAAAA,CAAAA;AAEf,KAAA,CAAA;AAzNoB2tB,IAAAA,OAAAA,cAAAA,CAAAA;AA0NrB,CAAA,EAAA,CAAA;AA1NqBA,cAQHC,CAAAA,aAAAA,GAAgB,IAAIoB,oBAAAA,CAAqBzB,SAAmB,EAAA,EAAA,CAAA;;AC/BxE,IAAA,YAAK0B,iBAAAA,SAAAA,YAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,YAAAA,CAAAA;AAIX,CAAA,CAAA,EAAA,CAAA;;ACMD,IAAMC,gBAAoB,GAAA,8JAAA,CAAA;AAU1B;;IAGO,IAAeC,WAAf,iBAAA,SAAA,cAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,WAAAA,EAAAA,cAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,WAAAA,GAAAA;;AACVC,QAAAA,KAAAA,GAAAA,cAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,YAAAA,GAAuB,EACvBC,EAAAA,KAAAA,CAAAA,WAAAA,GAAsB,EACxBC,EAAAA,KAAAA,CAAAA,gBAAAA,GAAmC,EAAE,CAAA;;;AAHzBH,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;IASpBI,MAAAA,CAAAA,kBAWC,GAXDA,SAAAA,kBAAAA,CAAmBrgB,IAA6B,EAAEsgB,WAAmB,EAAEC,aAAqB,EAAA;AAI1FxD,QAAAA,cAAAA,CAAevnB,KAAK,EAAA,CAAA;AACpBunB,QAAAA,cAAAA,CAAeqB,OAAO,CAACH,gBAAgB,GAAGje,IAAK3C,CAAAA,UAAU,CAACJ,WAAW,CAAA;QAErE,OAAO;AACLujB,YAAAA,MAAAA,EAAQ,IAAI,CAACC,UAAU,CAACH,WAAAA,EAAatgB,KAAK3C,UAAU,CAAA;AACpDqjB,YAAAA,QAAAA,EAAU,IAAI,CAACC,aAAa,CAACJ,aAAAA,EAAevgB,KAAK3C,UAAU,CAAA;AAC7D,SAAA,CAAA;AACF,KAAA,CAAA;AAEAojB,IAAAA,MAAAA,CAAAA,UAwDC,GAxDDA,SAAAA,UAAWvlB,CAAAA,KAAa,EAAE0lB,IAAgB,EAAA;QACxC,IAAQ3jB,cAAgB2jB,IAAhB3jB,CAAAA,WAAAA,CAAAA;AACR,QAAA,IAAMwJ,WAAWxJ,WAAY5B,CAAAA,MAAM,CAACH,KAAAA,EAAOzB,YAAYW,EAAE,CAAA,CAAA;AACzD,QAAA,IAAI,EAACqM,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAU5M,OAAO,CAAE,EAAA,MAAM,2BAA4BqB,GAAAA,KAAAA,CAAAA;QAE1D,IAAM2lB,MAAAA,GAASpa,SAAS5M,OAAO,CAAA;AAC/BkjB,QAAAA,cAAAA,CAAeqB,OAAO,CAAC0C,KAAK,GAAGf,aAAagB,MAAM,CAAA;AAElD,QAAA,IAAM7mB,UAAa2mB,GAAAA,MAAAA,CAAO5mB,SAAS,CAACC,UAAU,CAAA;AAC9C,QAAA,IAAI,OAAOA,UAAAA,CAAW/J,IAAI,KAAK,QAAU,EAAA;YACvC,IAAM6wB,UAAAA,GAAa/jB,YAAY5B,MAAM,CAACnB,WAAW/J,IAAI,EAAEsJ,YAAY1K,MAAM,CAAA,CAAA;AACzE,YAAA,IAAI,CAACiyB,UAAY,EAAA;gBACf,IAAI,CAACnB,YAAY,CAAC3lB,UAAAA,CAAWjJ,QAAQ,EAAG,0BAA0BiJ,GAAAA,UAAAA,CAAW/J,IAAI,CAAA,CAAA;aAC5E,MAAA;AACL4sB,gBAAAA,cAAAA,CAAeqB,OAAO,CAACV,aAAa,GAAGsD,WAAWnnB,OAAO,CAAA;AAC3D,aAAA;AACF,SAAA,MAAO,IAAIK,UAAW/J,CAAAA,IAAI,KAAKxE,QAAAA,CAASqD,IAAI,EAAE;AAC5C,YAAA,IAAI,CAAC6wB,YAAY,CAAC3lB,UAAAA,CAAWjJ,QAAQ,EAAE,mDAAA,CAAA,CAAA;AACzC,SAAA;AAEA,QAAA,IAAM2V,SAAYia,GAAAA,MAAAA,CAAO5mB,SAAS,CAACqK,aAAa,CAAA;QAChD,IAAIsC,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAWjW,CAAAA,MAAM,EAAE;AACrB,YAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAwBiW,SAAW,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAxBqa,gBAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAI,OAAOA,SAAUliB,CAAAA,QAAQ,CAAC5O,IAAI,KAAK,QAAU,EAAA;oBAC/C,IAAM+wB,YAAAA,GAAejkB,WAAY5B,CAAAA,MAAM,CAAC4lB,SAAAA,CAAUliB,QAAQ,CAAC5O,IAAI,EAAEsJ,WAAAA,CAAY1K,MAAM,CAAA,CAAA;AACnF,oBAAA,IAAI,CAACmyB,YAAc,EAAA;AACjB,wBAAA,IAAI,CAACrB,YAAY,CAACoB,SAAAA,CAAUpnB,OAAO,CAAC5I,QAAQ,EAAG,8BAA8BgwB,GAAAA,SAAAA,CAAUliB,QAAQ,CAAC5O,IAAI,GAAC,IAAA,CAAA,CAAA;AACrG,wBAAA,SAAA;AACF,qBAAA;AACA4sB,oBAAAA,cAAAA,CAAeqB,OAAO,CAACnB,gBAAgB,CAAC1sB,IAAI,CAAC2wB,aAAarnB,OAAO,CAAA,CAAA;AACjE,oBAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAmBqnB,YAAarnB,CAAAA,OAAO,CAACqO,QAAQ,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAvCa,wBAAAA,IAAAA,IAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTgU,wBAAAA,cAAAA,CAAeqB,OAAO,CAACpB,aAAa,CAACzsB,IAAI,CAACwY,IAAAA,CAAAA,CAAAA;AAC5C,qBAAA;iBACK,MAAA;AACLgU,oBAAAA,cAAAA,CAAeqB,OAAO,CAACpB,aAAa,CAACzsB,IAAI,CAAC0wB,SAAAA,CAAAA,CAAAA;AAC5C,iBAAA;AACF,aAAA;AACF,SAAA;AAEA,QAAA,IAAM/a,aAAa2a,MAAO3a,CAAAA,UAAU,CAACxG,OAAO,CAAC,IAAI,CAAA,CAAA;AAEjD,QAAA,IAA8C,KAAA,GAAA,IAAI,EAAxByhB,kBAAoB,KAAtCf,CAAAA,gBAAAA,CAAAA;AACRe,QAAAA,eAAAA,CAAgBxwB,MAAM,GAAG,CAAA,CAAA;QAEzB,IAAI,CAACywB,cAAc,CAACR,IAAMO,EAAAA,eAAAA,CAAAA,CAAAA;QAC1B,IAAI,CAACE,mBAAmB,CAACF,eAAAA,CAAAA,CAAAA;QACzB,IAAI,CAACG,iBAAiB,CAACH,eAAAA,CAAAA,CAAAA;AAEvB,QAAA,IAAMI,UAAaJ,GAAAA,eAAAA,CAChBK,IAAI,CAAC,SAAC5e,CAAGC,EAAAA,CAAAA,EAAAA;mBAAMD,CAAElX,CAAAA,KAAK,GAAGmX,CAAAA,CAAEnX,KAAK,CAAA;AAChCgT,SAAAA,CAAAA,CAAAA,GAAG,CAAC,SAACpD,IAAAA,EAAAA;AAASA,YAAAA,OAAAA,IAAAA,CAAKxH,IAAI,CAAA;AACvBI,SAAAA,CAAAA,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA;QAER6oB,cAAeqB,CAAAA,OAAO,CAAC5oB,KAAK,EAAA,CAAA;AAE5B,QAAA,OAAO,IAAO,CAAC0qB,YAAY,GAAC,IAAA,GAAIqB,aAAW,kBAAkBrb,GAAAA,UAAAA,CAAAA;AAC/D,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQya,aAyCP,GAzCD,SAAQA,aAAczlB,CAAAA,KAAa,EAAE0lB,IAAgB,EAAA;QACnD,IAAQ3jB,cAAgB2jB,IAAhB3jB,CAAAA,WAAAA,CAAAA;AACR,QAAA,IAAMwJ,WAAWxJ,WAAY5B,CAAAA,MAAM,CAACH,KAAAA,EAAOzB,YAAYW,EAAE,CAAA,CAAA;AACzD,QAAA,IAAI,EAACqM,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAU5M,OAAO,CAAE,EAAA,MAAM,2BAA4BqB,GAAAA,KAAAA,CAAAA;QAC1D,IAAM2lB,MAAAA,GAASpa,SAAS5M,OAAO,CAAA;QAE/B,IAAQ6G,kBAAoBmgB,MAApBngB,CAAAA,eAAAA,CAAAA;AACR,QAAA,IAAIA,eAAiB,EAAA;AACnBA,YAAAA,eAAAA,CAAgBD,qBAAqB,GAAG,IAAA,CAAA;AAC1C,SAAA;QAEA,IAAQ2d,UAAYrB,cAAZqB,CAAAA,OAAAA,CAAAA;QACRA,OAAQ0C,CAAAA,KAAK,GAAGf,YAAAA,CAAa0B,QAAQ,CAAA;AAErC,QAAA,IAA2DZ,4BAAAA,GAAAA,MAAAA,CAAO5mB,SAAS,CAACC,UAAU,EAA9E/J,cAAMuxB,GAA6Cb,4BAAnD1wB,CAAAA,IAAAA,EAAsBc,cAAU0wB,GAAmBd,4BAA7B5vB,CAAAA,QAAAA,CAAAA;QAC9B,IAAI,OAAOywB,mBAAmB,QAAU,EAAA;AACtC,YAAA,IAAMnE,YAAYtgB,WAAY5B,CAAAA,MAAM,CAACqmB,cAAAA,EAAgBjoB,YAAY1K,MAAM,CAAA,CAAA;AACvE,YAAA,IAAI,CAACwuB,SAAW,EAAA;AACd,gBAAA,IAAI,CAACsC,YAAY,CAAC8B,cAAAA,EAAgB,sBAAuBD,GAAAA,cAAAA,CAAAA,CAAAA;aACpD,MAAA;gBACLtD,OAAQb,CAAAA,SAAS,GAAGA,SAAAA,CAAU1jB,OAAO,CAAA;AACvC,aAAA;SACK,MAAA,IAAI6nB,mBAAmB/1B,QAASqD,CAAAA,IAAI,IAAI0yB,cAAmB/1B,KAAAA,QAAAA,CAAS8B,IAAI,EAAE;YAC/E,IAAI,CAACoyB,YAAY,CAAC8B,cAAgB,EAAA,qDAAA,CAAA,CAAA;AACpC,SAAA;AAEA,QAAA,IAAMzb,aAAa2a,MAAO3a,CAAAA,UAAU,CAACxG,OAAO,CAAC,IAAI,CAAA,CAAA;AACjD,QAAA,IAA8C,KAAA,GAAA,IAAI,EAAxByhB,kBAAoB,KAAtCf,CAAAA,gBAAAA,CAAAA;AACRe,QAAAA,eAAAA,CAAgBxwB,MAAM,GAAG,CAAA,CAAA;QAEzB,IAAI,CAACywB,cAAc,CAACR,IAAMO,EAAAA,eAAAA,CAAAA,CAAAA;QAC1B,IAAI,CAACG,iBAAiB,CAACH,eAAAA,CAAAA,CAAAA;QACvB,IAAI,CAACS,aAAa,CAACT,eAAAA,CAAAA,CAAAA;AAEnB,QAAA,IAAMI,UAAaJ,GAAAA,eAAAA,CAChBK,IAAI,CAAC,SAAC5e,CAAGC,EAAAA,CAAAA,EAAAA;mBAAMD,CAAElX,CAAAA,KAAK,GAAGmX,CAAAA,CAAEnX,KAAK,CAAA;AAChCgT,SAAAA,CAAAA,CAAAA,GAAG,CAAC,SAACpD,IAAAA,EAAAA;AAASA,YAAAA,OAAAA,IAAAA,CAAKxH,IAAI,CAAA;AACvBI,SAAAA,CAAAA,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA;AAERkqB,QAAAA,OAAAA,CAAQ5oB,KAAK,EAAA,CAAA;AACb,QAAA,OAAO,IAAO,CAAC0qB,YAAY,GAAC,IAAI,GAAA,IAAI,CAACC,WAAW,GAAC,IAAA,GAAIH,gBAAiB,GAAA,IAAA,GAAIuB,aAAW,kBAAkBrb,GAAAA,UAAAA,CAAAA;AACzG,KAAA,CAAA;IAEA,MAAQkb,CAAAA,cAiCP,GAjCD,SAAQA,cACNR,CAAAA,IAAgB,EAChBiB,QAAwB,EACxBC,UAAsB,EACtBC,WAAoC,EAAA;AADpCD,QAAAA,IAAAA,uBAAAA,UAAqB,GAAA,CAAA,CAAA;QACrBC,IAAAA,WAAAA,KAAAA,KAAAA,CAAAA,EAAAA,cAA2B,IAAIjX,GAAAA,EAAAA,CAAAA;AAE/B,QAAA,IAAM,kBAAEsS,GAAuBL,cAAeqB,CAAAA,OAAO,CAA7ChB,kBAAAA,CAAAA;AAER,QAAA,IAAI0E,eAAe3E,MAAO6E,CAAAA,IAAI,CAAC5E,kBAAAA,CAAAA,CAAoBzsB,MAAM,EAAE;YACzD,IAAwBiwB,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKvnB,gBAAgB,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApC4oB,gBAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTJ,gBAAAA,QAAAA,CAAStxB,IAAI,CAAC;oBAAEuD,IAAMmuB,EAAAA,SAAAA,CAAUviB,OAAO,CAAC,IAAI,CAAA;AAAGhU,oBAAAA,KAAAA,EAAOu2B,SAAUhxB,CAAAA,QAAQ,CAAC3F,KAAK,CAACI,KAAK;AAAC,iBAAA,CAAA,CAAA;AACvF,aAAA;YACA,OAAOm2B,QAAAA,CAAAA;AACT,SAAA;AAEAC,QAAAA,UAAAA,GAAa3E,MAAO6E,CAAAA,IAAI,CAAC5E,kBAAAA,CAAAA,CAAoBzsB,MAAM,CAAA;QACnD,IAAK,IAAMgJ,SAASyjB,kBAAoB,CAAA;YACtC,IAAMriB,EAAAA,GAAKqiB,kBAAkB,CAACzjB,KAAM,CAAA,CAAA;YAEpC,IAAIooB,WAAAA,CAAY7W,GAAG,CAACvR,KAAQ,CAAA,EAAA,SAAA;AAC5BooB,YAAAA,WAAAA,CAAYhX,GAAG,CAACpR,KAAAA,CAAAA,CAAAA;YAEhB,IAAM,WAAFoB,CAAAA,EAAAA,EAAcrB,UAAY,CAAA,EAAA;AAC5B,gBAAA,IAAIqB,EAAGnB,CAAAA,UAAU,KAAKH,WAAAA,CAAY0C,GAAG,EAAE;AACrC0lB,oBAAAA,QAAAA,CAAStxB,IAAI,CAAC;AAAEuD,wBAAAA,IAAAA,EAAM,UAAWiH,GAAAA,EAAAA,CAAGlB,OAAO,CAAC6F,OAAO,CAAC,IAAI,CAAA;AAAKhU,wBAAAA,KAAAA,EAAOqP,GAAGlB,OAAO,CAAC5I,QAAQ,CAAC3F,KAAK,CAACI,KAAK;AAAC,qBAAA,CAAA,CAAA;iBAC/F,MAAA;AACLm2B,oBAAAA,QAAAA,CAAStxB,IAAI,CAAC;AAAEuD,wBAAAA,IAAAA,EAAMiH,EAAGlB,CAAAA,OAAO,CAAE6F,OAAO,CAAC,IAAI,CAAA;AAAGhU,wBAAAA,KAAAA,EAAOqP,GAAGlB,OAAO,CAAE5I,QAAQ,CAAC3F,KAAK,CAACI,KAAK;AAAC,qBAAA,CAAA,CAAA;AAC3F,iBAAA;aACK,MAAA;AACLm2B,gBAAAA,QAAAA,CAAStxB,IAAI,CAAC;oBAAEuD,IAAMiH,EAAAA,EAAAA,CAAG2E,OAAO,CAAC,IAAI,CAAA;AAAGhU,oBAAAA,KAAAA,EAAOqP,EAAG9J,CAAAA,QAAQ,CAAC3F,KAAK,CAACI,KAAK;AAAC,iBAAA,CAAA,CAAA;AACzE,aAAA;AACF,SAAA;AACA,QAAA,OAAO,IAAI,CAAC01B,cAAc,CAACR,IAAAA,EAAMiB,UAAUC,UAAYC,EAAAA,WAAAA,CAAAA,CAAAA;AACzD,KAAA,CAAA;AA5JoB9B,IAAAA,OAAAA,WAAAA,CAAAA;EAAoBxB,cA6JzC,CAAA;;AC9KM,IAAA,cAAA,iBAAA,SAAA,WAAA,EAAA;AAAMyD,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;AACFhC,QAAAA,KAAAA,GAAAA,WAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,YAAAA,GAAwB,sBACxBC,WAAsB,GAAA;AAC7B,YAAA,2BAAA;AACA,YAAA,6BAAA;AACA,YAAA,qBAAA;AACA,YAAA,mBAAA;SACD,CACEzhB,GAAG,CAAC,SAACyjB,CAAAA,EAAAA;AAAM,YAAA,OAAC,gBAAaA,CAAE,GAAA,aAAA,CAAA;AAC3BjuB,SAAAA,CAAAA,CAAAA,IAAI,CAAC,EAAA,CAAA,CAAA;;;AATGguB,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAmBX,IAAA,MAAA,CAAS/C,kBAER,GAFD,SAASA,kBAAAA,CAAmBzzB,KAAsB,EAAA;QAChD,OAAQ,iBAAcA,KAAM,GAAA,GAAA,CAAA;AAC9B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS0zB,wBAER,GAFD,SAASA,wBAAyB1zB,CAAAA,KAAsB,EAAEiO,KAAa,EAAA;QACrE,OAAO,EAAA,CAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS0nB,mBAOR,GAPD,SAASA,mBAAAA,CAAoBe,GAAmB,EAAA;AAC9C,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmBjF,OAAOtJ,MAAM,CAACkJ,eAAeqB,OAAO,CAAClB,wBAAwB,CAAG,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAxE5hB,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT8mB,YAAAA,GAAAA,CAAI7xB,IAAI,CAAC;AACPuD,gBAAAA,IAAAA,EAAM,YAAC,GAAYwH,IAAKyD,CAAAA,QAAQ,CAACvF,UAAU,GAAC,GAAA,GAAG8B,IAAK3B,CAAAA,KAAK,CAACrI,MAAM,GAAC,GAAA;AACjE5F,gBAAAA,KAAAA,EAAO4P,KAAK3B,KAAK,CAAC1I,QAAQ,CAAC3F,KAAK,CAACI,KAAK;AACxC,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS41B,iBAOR,GAPD,SAASA,iBAAAA,CAAkBc,GAAmB,EAAA;AAC5C,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmBjF,OAAOtJ,MAAM,CAACkJ,eAAeqB,OAAO,CAACf,sBAAsB,CAAG,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAtE/hB,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT8mB,YAAAA,GAAAA,CAAI7xB,IAAI,CAAC;AACPuD,gBAAAA,IAAAA,EAAM,UAAC,GAAUwH,IAAKyD,CAAAA,QAAQ,CAACvF,UAAU,GAAC,GAAA,GAAG8B,IAAK3B,CAAAA,KAAK,CAACrI,MAAM,GAAC,GAAA;AAC/D5F,gBAAAA,KAAAA,EAAO4P,KAAK3B,KAAK,CAAC1I,QAAQ,CAAC3F,KAAK,CAACI,KAAK;AACxC,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASk2B,aAER,GAFD,SAASA,aAAAA,CAAcQ,GAAmB,EAAA;AACxC,QAAA,OAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASra,sBAcR,GAdD,SAASA,sBAAAA,CAAuB/H,IAA+B,EAAA;QAC7D,IAAQV,WAAaU,IAAbV,CAAAA,QAAAA,CAAAA;QACR,IAAMuf,QAAAA,GAAWvf,QAAQ,CAAC,CAAE,CAAA,CAAA;QAC5B,IAAQ8e,UAAYrB,cAAZqB,CAAAA,OAAAA,CAAAA;QACR,IAAY,WAARS,CAAAA,QAAAA,EAAoB3f,OAAQ4I,CAAAA,iBAAiB,CAAIsW,IAAAA,OAAAA,CAAQT,WAAW,CAASkB,QAAS1uB,CAAAA,IAAI,CAAG,EAAA;YAC/F,IAAMkyB,cAAAA,GAAiB/iB,QAAQ,CAAC,CAAE,CAAA,CAAA;YAClC,IAAMyJ,IAAAA,GAAOqV,QAAQb,SAAS,CAAErV,QAAQ,CAAC7J,IAAI,CAAC,SAAC/C,IAAAA,EAAAA;AAASA,gBAAAA,OAAAA,IAAAA,CAAK3B,KAAK,CAACrI,MAAM,KAAK+wB,eAAe/wB,MAAM,CAAA;;AACnG,YAAA,IAAI,CAACyX,IAAM,EAAA;gBACT,IAAI,CAAC8W,YAAY,CAACwC,cAAAA,CAAepxB,QAAQ,EAAG,0BAA0BoxB,GAAAA,cAAAA,CAAe/wB,MAAM,CAAA,CAAA;gBAC3F,OAAO,EAAA,CAAA;AACT,aAAA;AACA,YAAA,OAAO,cAAC,GAAcyX,IAAK/J,CAAAA,QAAQ,GAAE,GAAA,CAAA;AACvC,SAAA;QACA,OAAO,WAAA,CAAA,SAAA,CAAM+I,sBAAD,CAAwB/H,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA;AAEA,IAAA,MAAA,CAASW,kBAMR,GAND,SAASA,kBAAAA,CAAmBX,IAA2B,EAAA;QACrD,IAAIA,IAAAA,CAAKS,qBAAqB,EAAE;AAC9B,YAAA,IAAMiH,UAAa1H,GAAAA,IAAAA,CAAKV,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,YAAA,OAAO,iBAAC,GAAiBoI,UAAWhI,CAAAA,OAAO,CAAC,IAAI,CAAA,CAAA;AAClD,SAAA;QACA,OAAO,WAAA,CAAA,SAAA,CAAMiB,kBAAD,CAAoBX,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;IAvEWkiB,cAYJI,CAAAA,UAKN,GALD,SAAOA,UAAAA,GAAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAACrO,UAAU,EAAE;YACpB,IAAI,CAACA,UAAU,GAAG,IAdXiO,cAAAA,EAAAA,CAAAA;AAeT,SAAA;QACA,OAAO,IAAI,CAACjO,UAAU,CAAA;AACxB,KAAA,CAAA;AAjBWiO,IAAAA,OAAAA,cAAAA,CAAAA;EAAuBjC,WAwEnC,CAAA;;ACnEM,IAAA,cAAA,iBAAA,SAAA,WAAA,EAAA;AAAMsC,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;kEACFrC,YAAuB,GAAA,iBAAA,CAAA;;;AADrBqC,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAWX,IAAA,MAAA,CAASpD,kBAER,GAFD,SAASA,kBAAAA,CAAmBzzB,KAAsB,EAAA;QAChD,OAAU8yB,iBAAe,GAAG9yB,GAAAA,KAAAA,CAAAA;AAC9B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS0zB,wBAER,GAFD,SAASA,wBAAyB1zB,CAAAA,KAAsB,EAAEiO,KAAa,EAAA;AACrE,QAAA,OAAO,oBAAC,GAAoBjO,KAAM,GAAA,aAAA,GAAaiO,KAAM,GAAA,GAAA,CAAA;AACvD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS0nB,mBAOR,GAPD,SAASA,mBAAAA,CAAoBe,GAAmB,EAAA;AAC9C,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmBjF,OAAOtJ,MAAM,CAACkJ,eAAeqB,OAAO,CAAClB,wBAAwB,CAAG,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAxE5hB,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT8mB,YAAAA,GAAAA,CAAI7xB,IAAI,CAAC;AACPuD,gBAAAA,IAAAA,EAAM,KAAC,GAAKwH,IAAKyD,CAAAA,QAAQ,CAACvF,UAAU,GAAC,GAAA,GAAG8B,IAAK3B,CAAAA,KAAK,CAACrI,MAAM,GAAC,GAAA;AAC1D5F,gBAAAA,KAAAA,EAAO4P,KAAK3B,KAAK,CAAC1I,QAAQ,CAAC3F,KAAK,CAACI,KAAK;AACxC,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS41B,iBAUR,GAVD,SAASA,iBAAAA,CAAkBc,GAAmB,EAAA;QAC5C,IAAMvgB,SAAAA,GAAYkb,eAAeqB,OAAO,CAAC0C,KAAK,KAAKf,YAAAA,CAAa0B,QAAQ,GAAG,IAAO,GAAA,KAAA,CAAA;AAClF,QAAA,IAAM5N,SAASsJ,MAAOtJ,CAAAA,MAAM,CAACkJ,cAAeqB,CAAAA,OAAO,CAACf,sBAAsB,CAAA,CAAA;AAC1E,QAAA,IAAK,IAAI5sB,CAAI,GAAA,CAAA,EAAGA,IAAIojB,MAAOljB,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;YACtC,IAAM6K,IAAAA,GAAOuY,MAAM,CAACpjB,CAAE,CAAA,CAAA;AAEX6K,YAAAA,IAAAA,eAAAA,CAAAA;AADX8mB,YAAAA,GAAAA,CAAI7xB,IAAI,CAAC;gBACPuD,IAAM,EAAGwH,CAAAA,CAAAA,eAAAA,GAAAA,KAAKuG,SAAS,KAAA,IAAA,GAAdvG,kBAAkBuG,SAAQ,IAAE,MAAGvG,IAAKyD,CAAAA,QAAQ,CAACvF,UAAU,GAAC,MAAG8B,IAAK3B,CAAAA,KAAK,CAACrI,MAAM,GAAC,GAAA;AACtF5F,gBAAAA,KAAAA,EAAO4P,KAAK3B,KAAK,CAAC1I,QAAQ,CAAC3F,KAAK,CAACI,KAAK;AACxC,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASk2B,aAgBR,GAhBD,SAASA,aAAAA,CAAcQ,GAAmB,EAAA;AACxC,QAAA,IAAMI,iBAAoBzF,GAAAA,cAAAA,CAAeqB,OAAO,CAACd,kBAAkB,CAAA;QACnE,IAAK,IAAI3jB,SAAS6oB,iBAAmB,CAAA;YACnC,IAAM9O,IAAAA,GAAO8O,iBAAiB,CAAC7oB,KAAM,CAAA,CAAA;YACrC,IAAI,OAAO+Z,SAAS,QAAU,EAAA;AAC5B0O,gBAAAA,GAAAA,CAAI7xB,IAAI,CAAC;oBACPuD,IAAM4f,EAAAA,IAAAA;AACNhoB,oBAAAA,KAAAA,EAAOsX,OAAOyf,gBAAgB;AAChC,iBAAA,CAAA,CAAA;aACK,MAAA;AACLL,gBAAAA,GAAAA,CAAI7xB,IAAI,CAAC;AACPuD,oBAAAA,IAAAA,EAAM,IAAI,CAACsrB,wBAAwB,CAAC1L,IAAAA,CAAK1U,QAAQ,EAAErF,KAAAA,CAAAA;AACnDjO,oBAAAA,KAAAA,EAAOgoB,KAAK/Z,KAAK,CAAC1I,QAAQ,CAAC3F,KAAK,CAACI,KAAK;AACxC,iBAAA,CAAA,CAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS2b,uBAiCR,GAjCD,SAASA,uBAAAA,CAAwBrH,IAAgC,EAAA;QAC/D,IAAMV,QAAAA,GAAWU,KAAKV,QAAQ,CAAA;QAC9B,IAAMnF,aAAAA,GAAgBmF,QAAQ,CAAC,CAAE,CAAA,CAAA;AACjC,QAAA,IAAInF,aAAcmF,CAAAA,QAAQ,CAAC3O,MAAM,KAAK,CAAG,EAAA;YACvC,OAAO,IAAI,CAACiP,cAAc,CAACN,QAAAA,CAAAA,CAAAA;AAC7B,SAAA;QACA,IAAI3F,KAAAA,GAAQqG,KAAK1O,MAAM,CAAA;AACvB,QAAA,IAAI0O,KAAKrG,KAAK,KAAK,eAAeqG,IAAKrG,CAAAA,KAAK,KAAK,aAAe,EAAA;YAC9DA,KAAQ,GAAA,SAAA,CAAA;AACV,SAAA,MAAO,IAAIqG,IAAAA,CAAKrG,KAAK,KAAK,eAAiB,EAAA;YACzCA,KAAQ,GAAA,aAAA,CAAA;SACH,MAAA,IAAIojB,eAAeqB,OAAO,CAAC0C,KAAK,KAAKf,YAAAA,CAAa0B,QAAQ,EAAE;AACjE,YAAA,OAAQzhB,KAAKrG,KAAK;gBAChB,KAAK,iBAAA,CAAA;gBACL,KAAK,mBAAA;oBACHA,KAAQ,GAAA,YAAA,CAAA;AACR,oBAAA,MAAA;gBACF,KAAK,kBAAA,CAAA;gBACL,KAAK,oBAAA;oBACHA,KAAQ,GAAA,aAAA,CAAA;AACR,oBAAA,MAAA;gBACF,KAAK,qBAAA;oBACHA,KAAQ,GAAA,gBAAA,CAAA;AACR,oBAAA,MAAA;gBACF,KAAK,sBAAA;oBACHA,KAAQ,GAAA,iBAAA,CAAA;AACR,oBAAA,MAAA;gBACF,KAAK,iBAAA;oBACHA,KAAQ,GAAA,cAAA,CAAA;AACR,oBAAA,MAAA;AACJ,aAAA;AACF,SAAA;QACA,OAAOA,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAASqQ,uBAeR,GAfD,SAASA,uBAAAA,CAAwBhK,IAAgC,EAAA;QAC/D,IAAQoe,UAAYrB,cAAZqB,CAAAA,OAAAA,CAAAA;QACR,IAAIA,OAAAA,CAAQ0C,KAAK,KAAKf,YAAAA,CAAa0B,QAAQ,IAAIzhB,IAAAA,CAAK1O,MAAM,KAAK,cAAgB,EAAA;YAS7E,IAAI,CAACoxB,0BAA0B,CAAC1iB,IAAAA,CAAAA,CAAAA;YAChC,OAAOue,eAAAA,CAAAA;AACT,SAAA;QACA,OAAO,WAAA,CAAA,SAAA,CAAMvU,uBAAD,CAAyBhK,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACvC,KAAA,CAAA;AAEA,IAAA,MAAA,CAASW,kBAYR,GAZD,SAASA,kBAAAA,CAAmBX,IAA2B,EAAA;QACrD,IAAIA,IAAAA,CAAKS,qBAAqB,EAAE;AAC9B,YAAA,IAAM,SAAE8c,GAAcR,cAAeqB,CAAAA,OAAO,CAApCb,SAAAA,CAAAA;AACR,YAAA,IAAIA,SAAW,EAAA;gBACb,OAAO,EAAA,CAAA;AACT,aAAA;YACA,IAAI,CAACmF,0BAA0B,CAAC1iB,IAAAA,CAAAA,CAAAA;AAEhC,YAAA,IAAM0H,UAAa1H,GAAAA,IAAAA,CAAKV,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,YAAA,OAAO,eAAmB,GAAA,KAAA,GAAKoI,WAAWhI,OAAO,CAAC,IAAI,CAAE,GAAA,GAAA,CAAA;AAC1D,SAAA;QACA,OAAO,WAAA,CAAA,SAAA,CAAMiB,kBAAD,CAAoBX,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ0iB,0BAYP,GAZD,SAAQA,0BAAAA,CAA2B1iB,IAAc,EAAA;AAC/C,QAAA,IAAM,sBAAEqd,GAA2BN,cAAeqB,CAAAA,OAAO,CAAjDf,sBAAAA,CAAAA;AACR,QAAA,IAAI,CAACA,sBAAsB,CAACkB,eAAAA,CAAgB,EAAE;AAC5C,YAAA,IAAMzpB,KAAQmL,GAAAA,SAAAA,CAAM7P,IAAI,CAAC2E,GAAG,EAAA,CAAA;YAC5BD,KAAMzJ,CAAAA,GAAG,CAAC0E,UAAAA,CAAWmF,EAAE,EAAEqpB,iBAAiB/sB,SAAUC,CAAAA,cAAc,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;YACzE4rB,sBAAsB,CAACkB,gBAAgB,GAAG;gBACxC5kB,KAAO7E,EAAAA,KAAAA;AACPiK,gBAAAA,QAAAA,EAAU,IAAIF,UAAAA,CAAWlT,QAAS8B,CAAAA,IAAI,EAAE,MAAA,CAAA;gBACxCoU,SAAW,EAAA,KAAA;gBACXhI,OAASmG,EAAAA,IAAAA;AACX,aAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;IAxIWuiB,cAIJD,CAAAA,UAKN,GALD,SAAOA,UAAAA,GAAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAACrO,UAAU,EAAE;YACpB,IAAI,CAACA,UAAU,GAAG,IANXsO,cAAAA,EAAAA,CAAAA;AAOT,SAAA;QACA,OAAO,IAAI,CAACtO,UAAU,CAAA;AACxB,KAAA,CAAA;AATWsO,IAAAA,OAAAA,cAAAA,CAAAA;EAAuBtC,WAyInC,CAAA;;ACpJD,SAAS,4BAA4B,GAAG;AACxC;AACA;AACA;AACA;AACA,IAAI,IAAI;AACR;AACA;AACA,QAAQ,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;AACpG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;AAClB,IAAI,OAAO,CAAC,4BAA4B,GAAG,WAAW;AACtD,QAAQ,OAAO,CAAC,CAAC,MAAM,CAAC;AACxB,KAAK,GAAG,CAAC;AACT;;ACXA,SAAS,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AACzC,IAAI,IAAI,4BAA4B,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;AACvE,SAAS;AACT,QAAQ,UAAU,GAAG,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAC7D,YAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAClC,YAAY,IAAI,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7D,YAAY,IAAI,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;AAC7C;AACA,YAAY,IAAI,KAAK,EAAE,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AACpE;AACA,YAAY,OAAO,QAAQ,CAAC;AAC5B,SAAS,CAAC;AACV,KAAK;AACL;AACA,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC7C;;AClBA,SAAS,QAAQ,GAAG;AACpB,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE;AACxD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACrH,SAAS;AACT;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK,CAAC;AACN;AACA,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C;;ACTO,IAAM0C,UAAa,GAAA,IAAI92B,GAAI,CAAA;AAChC,IAAA;AAAC,QAAA,iBAAA;AAAmBF,QAAAA,QAAAA,CAASi3B,kBAAkB;AAAC,KAAA;AAChD,IAAA;AAAC,QAAA,YAAA;AAAcj3B,QAAAA,QAAAA,CAASk3B,aAAa;AAAC,KAAA;AACtC,IAAA;AAAC,QAAA,YAAA;AAAcl3B,QAAAA,QAAAA,CAASm3B,aAAa;AAAC,KAAA;AACtC,IAAA;AAAC,QAAA,cAAA;AAAgBn3B,QAAAA,QAAAA,CAASo3B,eAAe;AAAC,KAAA;AAC1C,IAAA;AAAC,QAAA,aAAA;AAAep3B,QAAAA,QAAAA,CAASq3B,cAAc;AAAC,KAAA;AACxC,IAAA;AAAC,QAAA,kBAAA;AAAoBr3B,QAAAA,QAAAA,CAASs3B,mBAAmB;AAAC,KAAA;AAClD,IAAA;AAAC,QAAA,cAAA;AAAgBt3B,QAAAA,QAAAA,CAASu3B,eAAe;AAAC,KAAA;AAC1C,IAAA;AAAC,QAAA,QAAA;AAAUv3B,QAAAA,QAAAA,CAASw3B,SAAS;AAAC,KAAA;AAC9B,IAAA;AAAC,QAAA,MAAA;AAAQx3B,QAAAA,QAAAA,CAASy3B,OAAO;AAAC,KAAA;AAC1B,IAAA;AAAC,QAAA,cAAA;AAAgBz3B,QAAAA,QAAAA,CAAS03B,eAAe;AAAC,KAAA;AAC1C,IAAA;AAAC,QAAA,gBAAA;AAAkB13B,QAAAA,QAAAA,CAAS23B,iBAAiB;AAAC,KAAA;AAC9C,IAAA;AAAC,QAAA,WAAA;AAAa33B,QAAAA,QAAAA,CAAS43B,YAAY;AAAC,KAAA;AACpC,IAAA;AAAC,QAAA,MAAA;AAAQ53B,QAAAA,QAAAA,CAAS63B,OAAO;AAAC,KAAA;AAC1B,IAAA;AAAC,QAAA,aAAA;AAAe73B,QAAAA,QAAAA,CAAS83B,cAAc;AAAC,KAAA;AACxC,IAAA;AAAC,QAAA,gBAAA;AAAkB93B,QAAAA,QAAAA,CAAS+3B,iBAAiB;AAAC,KAAA;AAC9C,IAAA;AAAC,QAAA,MAAA;AAAQ/3B,QAAAA,QAAAA,CAASg4B,OAAO;AAAC,KAAA;AAC1B,IAAA;AAAC,QAAA,QAAA;AAAUh4B,QAAAA,QAAAA,CAASi4B,SAAS;AAAC,KAAA;AAC9B,IAAA;AAAC,QAAA,iBAAA;AAAmBj4B,QAAAA,QAAAA,CAASk4B,kBAAkB;AAAC,KAAA;AAChD,IAAA;AAAC,QAAA,kBAAA;AAAoBl4B,QAAAA,QAAAA,CAASm4B,mBAAmB;AAAC,KAAA;AAClD,IAAA;AAAC,QAAA,UAAA;AAAYn4B,QAAAA,QAAAA,CAASo4B,WAAW;AAAC,KAAA;AAClC,IAAA;AAAC,QAAA,MAAA;AAAQp4B,QAAAA,QAAAA,CAASsD,IAAI;AAAC,KAAA;AACvB,IAAA;AAAC,QAAA,OAAA;AAAStD,QAAAA,QAAAA,CAASuD,KAAK;AAAC,KAAA;AACzB,IAAA;AAAC,QAAA,SAAA;AAAWvD,QAAAA,QAAAA,CAASq4B,UAAU;AAAC,KAAA;AAChC,IAAA;AAAC,QAAA,OAAA;AAASr4B,QAAAA,QAAAA,CAASs4B,QAAQ;AAAC,KAAA;CAC7B,CAAE;;ACzBY,IAAA,OAAA,iBAAA,SAAA,WAAA,EAAA;AAAMC,IAAAA,SAAAA,CAAAA,OAAAA,EAAAA,WAAAA,CAAAA,CAAAA;aAAAA,OACPlzB,CAAAA,MAAc,EAAEqB,GAAoC,EAAA;QAApCA,IAAAA,GAAAA,KAAAA,KAAAA,CAAAA,EAAAA,MAA2B,IAAIxG,GAAAA,EAAAA,CAAAA;AACzD,QAAA,OAAA,uBAAMmF,MAAQqB,EAAAA,GAAAA,CAAAA,IAAAA,IAAAA,CAAAA;;AAFG6xB,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AAKnB;;MAGAvN,MAAAA,CAAAA,QAKC,GALDA,SAAAA,QAAAA,GAAAA;AACE,QAAA,IAAI,CAACnjB,oBAAoB,EAAA,CAAA;QACzB,IAAMlI,KAAAA,GAAQ,IAAI,CAACgH,aAAa,CAAA;AAChC,QAAA,MAAO,IAAKuC,CAAAA,IAAI,CAAC,IAAI,CAAClC,UAAU,EAAA,CAAA,IAAO,CAAC,IAAI,CAACD,KAAK,EAAI,CAAA,IAAI,CAACM,QAAQ,EAAA,CAAA;QACnE,OAAO,IAAI,CAACT,OAAO,CAACqB,SAAS,CAACtI,KAAAA,EAAO,IAAI,CAACgH,aAAa,CAAA,CAAA;AACzD,KAAA,CAAA;IAEA6xB,MAAAA,CAAAA,UASC,GATDA,SAAAA,UAAAA,GAAAA;AACE,QAAA,IAAI,CAAC3wB,oBAAoB,EAAA,CAAA;QACzB,IAAMlI,KAAAA,GAAQ,IAAI,CAACgH,aAAa,CAAA;QAChC,MAAO,OAAA,CAAQuC,IAAI,CAAC,IAAI,CAAClC,UAAU,EAAA,CAAA,CAAK,IAAI,CAACK,QAAQ,EAAA,CAAA;AACrD,QAAA,IAAI,IAAI,CAACL,UAAU,EAAA,KAAO,GAAK,EAAA;AAC7B,YAAA,IAAI,CAACK,QAAQ,EAAA,CAAA;YACb,MAAO,OAAA,CAAQ6B,IAAI,CAAC,IAAI,CAAClC,UAAU,EAAA,CAAA,CAAK,IAAI,CAACK,QAAQ,EAAA,CAAA;AACvD,SAAA;QACA,OAAOgQ,MAAAA,CAAO,IAAI,CAACzQ,OAAO,CAACqB,SAAS,CAACtI,KAAAA,EAAO,IAAI,CAACgH,aAAa,CAAA,CAAA,CAAA;AAChE,KAAA,CAAA;AAxBmB4xB,IAAAA,OAAAA,OAAAA,CAAAA;AAAgB9xB,CAAAA,CAAAA,WAAAA,CAAAA;;ACOtB,IAAA,kBAAA,iBAAA,SAAA,eAAA,EAAA;AAAMgyB,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,eAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AACnB,IAAA,MAAA,CAAStpB,MAWR,GAXD,SAASA,MAAAA,CAAOC,EAAW,EAAA;AACX,QAAA,IAAA,gBAAA,CAAA;AAAd,QAAA,IAAMG,KAAQ,GAAA,CAAA,gBAAA,GAAA,IAAI,CAACX,MAAM,CAACxF,GAAG,CAACgG,EAAAA,CAAGpB,KAAK,CAAA,KAAA,IAAA,GAAxB,mBAA6B,EAAE,CAAA;AAC7C,QAAA,IAAK,IAAIlJ,CAAI,GAAA,CAAA,EAAGA,IAAIyK,KAAMvK,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;YACrC,IAAIyK,KAAK,CAACzK,CAAE,CAAA,CAACN,IAAI,KAAK4K,EAAAA,CAAG5K,IAAI,EAAE;AAC7BgB,gBAAAA,MAAAA,CAAOiK,IAAI,CAAC,iBAAmBL,EAAAA,EAAAA,CAAGpB,KAAK,CAAA,CAAA;gBACvCuB,KAAK,CAACzK,EAAE,GAAGsK,EAAAA,CAAAA;AACX,gBAAA,OAAA;AACF,aAAA;AACF,SAAA;AACAG,QAAAA,KAAAA,CAAM3K,IAAI,CAACwK,EAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAACR,MAAM,CAAClP,GAAG,CAAC0P,EAAAA,CAAGpB,KAAK,EAAEuB,KAAAA,CAAAA,CAAAA;AAC5B,KAAA,CAAA;AAEAG,IAAAA,MAAAA,CAAAA,MAQC,GARDA,SAAAA,MAAO1B,CAAAA,KAAa,EAAExJ,IAAe,EAAA;AACnC,QAAA,IAAM+K,QAAQ,IAAI,CAACX,MAAM,CAACxF,GAAG,CAAC4E,KAAAA,CAAAA,CAAAA;AAC9B,QAAA,IAAIuB,KAAO,EAAA;YACT,IAAK,IAAIvK,SAASuK,KAAMvK,CAAAA,MAAM,EAAEF,CAAI,GAAA,CAAA,EAAGA,CAAIE,GAAAA,MAAAA,EAAQF,CAAK,EAAA,CAAA;gBACtD,IAAM6K,IAAAA,GAAOJ,KAAK,CAACzK,CAAE,CAAA,CAAA;AACrB,gBAAA,IAAI6K,IAAKnL,CAAAA,IAAI,KAAKA,IAAAA,EAAM,OAAOmL,IAAAA,CAAAA;AACjC,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAtBmB8oB,IAAAA,OAAAA,kBAAAA,CAAAA;AAA2B9pB,CAAAA,CAAAA,eAAAA,CAAAA;;ACsBhD,IAAM+pB,UAAa,GAAA;AACjB14B,IAAAA,QAAAA,CAASi3B,kBAAkB;AAC3Bj3B,IAAAA,QAAAA,CAAS83B,cAAc;AACvB93B,IAAAA,QAAAA,CAAS+3B,iBAAiB;AAC1B/3B,IAAAA,QAAAA,CAASg4B,OAAO;AAChBh4B,IAAAA,QAAAA,CAASi4B,SAAS;AAClBj4B,IAAAA,QAAAA,CAASs4B,QAAQ;AACjBt4B,IAAAA,QAAAA,CAASk4B,kBAAkB;AAC3Bl4B,IAAAA,QAAAA,CAASm4B,mBAAmB;AAC5Bn4B,IAAAA,QAAAA,CAASo4B,WAAW;AACrB,CAAA,CAAA;AAED,IAAMO,eAAkB,GAAA;AACtB34B,IAAAA,QAAAA,CAASk3B,aAAa;AACtBl3B,IAAAA,QAAAA,CAASm3B,aAAa;AACtBn3B,IAAAA,QAAAA,CAASq3B,cAAc;AACvBr3B,IAAAA,QAAAA,CAASo3B,eAAe;AACzB,CAAA,CAAA;AAED;;IAGO,IAAMwB,mBAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,mBAAAA,GAAAA,EAAAA;IAAAA,mBAOJ/uB,CAAAA,KAIN,GAJD,SAAOA,KAAAA,GAAAA;AACL,QAAA,IAAI,CAACgvB,OAAO,CAAC7zB,MAAM,GAAG,CAAA,CAAA;QACtB,IAAI,CAAC8zB,iBAAiB,CAAC7zB,KAAK,EAAA,CAAA;AAC5B,QAAA,IAAI,CAAC8zB,SAAS,EAAA,CAAA;AAChB,KAAA,CAAA;AAXWH,IAAAA,mBAAAA,CAaJtR,KAuCN,GAvCD,SAAOA,KAAAA,CAAMjiB,MAAc,EAAA;QACzB,IAAM1F,KAAAA,GAAQ6nB,YAAYC,GAAG,EAAA,CAAA;QAE7B,IAAMgG,OAAAA,GAAU,IAAI8K,OAAAA,CAAQlzB,MAAQ2xB,EAAAA,UAAAA,CAAAA,CAAAA;AACpC,QAAA,IAAMzlB,GAAM,GAAA;AACVynB,YAAAA,UAAAA,EAAY,EAAE;AACdC,YAAAA,cAAAA,EAAgB,EAAE;YAClBC,YAAc,EAAA;AAAEC,gBAAAA,WAAAA,EAAa,EAAC;AAAGC,gBAAAA,WAAAA,EAAa,EAAC;AAAE,aAAA;AACnD,SAAA,CAAA;AAEA3L,QAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,QAAA,CAAA,CAAA;AACjBqJ,QAAAA,GAAAA,CAAI8nB,IAAI,GAAG5L,OAAQhlB,CAAAA,cAAc,CAAC,GAAK,EAAA,GAAA,CAAA,CAAA;AACvCglB,QAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;AAEjBulB,QAAAA,OAAAA,CAAQ5lB,oBAAoB,EAAA,CAAA;QAC5B,IAAI,CAACyxB,sBAAsB,CAAC/nB,GAAKkc,EAAAA,OAAAA,CAAAA,CAAAA;QAEjC,IAAM8L,sBAAAA,GAAyBhoB,IAAI0nB,cAAc,CAAA;QACjD,IAAMO,kBAAAA,GAAqBjoB,IAAI2nB,YAAY,CAAA;QAC3C,IAAK,IAAIp0B,IAAI,CAAGA,EAAAA,CAAAA,GAAIyM,IAAIynB,UAAU,CAACh0B,MAAM,EAAEF,CAAK,EAAA,CAAA;AAC9C,YAAA,IAAM20B,SAAYloB,GAAAA,GAAAA,CAAIynB,UAAU,CAACl0B,CAAE,CAAA,CAAA;AACnC,YAAA,IAAM40B,4BAA+BH,GAAAA,sBAAAA,CAAuBI,MAAM,CAACF,UAAUR,cAAc,CAAA,CAAA;YAC3F,IAAMW,QAAAA,GAAW,aAAKJ,kBAAmBL,CAAAA,WAAW,EAAKM,SAAUP,CAAAA,YAAY,CAACC,WAAW,CAAA,CAAA;YAC3F,IAAMC,WAAAA,GAAc,aAAKI,kBAAmBJ,CAAAA,WAAW,EAAKK,SAAUP,CAAAA,YAAY,CAACE,WAAW,CAAA,CAAA;YAE9F,IAAK,IAAIt0B,KAAI,CAAGA,EAAAA,EAAAA,GAAI20B,UAAUI,MAAM,CAAC70B,MAAM,EAAEF,EAAK,EAAA,CAAA;AAChD,gBAAA,IAAMg1B,IAAOL,GAAAA,SAAAA,CAAUI,MAAM,CAAC/0B,EAAE,CAAA,CAAA;AAChC0sB,gBAAAA,MAAAA,CAAOuI,MAAM,CAACD,IAAAA,CAAKZ,YAAY,CAACC,WAAW,EAAES,QAAAA,CAAAA,CAAAA;AAC7CpI,gBAAAA,MAAAA,CAAOuI,MAAM,CAACD,IAAAA,CAAKZ,YAAY,CAACE,WAAW,EAAEA,WAAAA,CAAAA,CAAAA;gBAC7C,IAAIU,IAAAA,CAAKE,SAAS,EAAE,SAAA;;AAEpB,gBAAA,IAAMC,oBAAuBP,GAAAA,4BAAAA,CAA6BC,MAAM,CAACG,KAAKb,cAAc,CAAA,CAAA;AACpFa,gBAAAA,IAAAA,CAAKI,QAAQ,GAAGD,oBAAqBlnB,CAAAA,GAAG,CAAC,SAACpD,IAAAA,EAAAA;AAASA,oBAAAA,OAAAA,IAAAA,CAAKmf,OAAO,CAAA;AAAEvmB,iBAAAA,CAAAA,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA;AACxE,aAAA;AACF,SAAA;QAEA/C,MAAOuiB,CAAAA,IAAI,CAAC,kCAAC,IAAkCP,WAAYC,CAAAA,GAAG,EAAK9nB,GAAAA,KAAI,CAAE,GAAA,IAAA,CAAA,CAAA;QAEzE,OAAO4R,GAAAA,CAAAA;AACT,KAAA,CAAA;AApDWqnB,IAAAA,mBAAAA,CAsDIuB,wBAEd,GAFD,SAAeA,wBAAAA,CAAyBhxB,KAAgB,EAAA;AACtD,QAAA,OAAOwvB,eAAgB/N,CAAAA,QAAQ,CAACzhB,KAAAA,CAAM3E,IAAI,CAAA,CAAA;AAC5C,KAAA,CAAA;AAxDWo0B,IAAAA,mBAAAA,CA0DIwB,aAEd,GAFD,SAAeA,aAAAA,CAAcjxB,KAAgB,EAAA;AAC3C,QAAA,OAAOuvB,UAAW9N,CAAAA,QAAQ,CAACzhB,KAAAA,CAAM3E,IAAI,CAAA,CAAA;AACvC,KAAA,CAAA;AA5DWo0B,IAAAA,mBAAAA,CA8DIyB,mBAOd,GAPD,SAAeA,mBAAoBrsB,CAAAA,KAAa,EAAExJ,IAAe,EAAA;AAC/D,QAAA,IAAMsK,KAAQ8pB,GA/DLA,mBA+DyBE,CAAAA,iBAAiB,CAAChqB,KAAK,CAAA;QACzD,IAAK,IAAI9J,MAAS8J,GAAAA,KAAAA,CAAM9J,MAAM,EAAEF,IAAIE,MAAS,GAAA,CAAA,EAAGF,CAAK,IAAA,CAAA,EAAGA,CAAK,EAAA,CAAA;YAC3D,IAAMwM,WAAAA,GAAcxC,KAAK,CAAChK,CAAE,CAAA,CAAA;AAC5B,YAAA,IAAMyM,GAAMD,GAAAA,WAAAA,CAAY5B,MAAM,CAAC1B,KAAOxJ,EAAAA,IAAAA,CAAAA,CAAAA;AACtC,YAAA,IAAI+M,KAAK,OAAOA,GAAAA,CAAAA;AAClB,SAAA;AACF,KAAA,CAAA;AArEWqnB,IAAAA,mBAAAA,CAuEIU,sBAqDd,GArDD,SAAeA,sBAAuB/nB,CAAAA,GAAmB,EAAEkc,OAAgB,EAAA;AACzE,QAAA,IAAI6M,UAAa,GAAA,CAAA,CAAA;QACjB,IAAI36B,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAElC,QAAA,MAAO,IAAM,CAAA;YACX,IAAMqG,IAAAA,GAAOsgB,QAAQ1kB,SAAS,EAAA,CAAA;AAC9B,YAAA,OAAQoE,KAAK3I,IAAI;AACf,gBAAA,KAAKxE,SAAS43B,YAAY;oBACxB,IAAI,CAAC2C,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;AAChE,oBAAA,IAAMy0B,SAAY,GAAA,IAAI,CAACe,eAAe,CAAC/M,OAAAA,CAAAA,CAAAA;oBACvClc,GAAIynB,CAAAA,UAAU,CAACp0B,IAAI,CAAC60B,SAAAA,CAAAA,CAAAA;AACpB95B,oBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,oBAAA,MAAA;AAEF,gBAAA,KAAK9G,SAASs3B,mBAAmB,CAAA;AACjC,gBAAA,KAAKt3B,SAASu3B,eAAe,CAAA;AAC7B,gBAAA,KAAKv3B,SAASw3B,SAAS;oBACrB,IAAI,CAAC+C,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;oBAChEyoB,OAAQhlB,CAAAA,cAAc,CAAC,GAAA,EAAK,GAAK,EAAA,IAAA,CAAA,CAAA;AACjC9I,oBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,oBAAA,MAAA;AAEF,gBAAA,KAAK9G,SAASi3B,kBAAkB;oBAC9B,IAAI,CAACsD,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;oBAChE,IAAI,CAACy1B,2BAA2B,CAAClpB,GAAKkc,EAAAA,OAAAA,CAAAA,CAAAA;AACtC9tB,oBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,oBAAA,MAAA;AAEF,gBAAA,KAAK1C,WAAWiF,QAAQ;AACtB,oBAAA,IAAI8D,IAAKxH,CAAAA,MAAM,KAAK,GAAA,EAAK20B,UAAc,IAAA,CAAA,CAAA;yBAClC,IAAIntB,IAAAA,CAAKxH,MAAM,KAAK,GAAK,EAAA;wBAC5B20B,UAAc,IAAA,CAAA,CAAA;AACd,wBAAA,IAAIA,eAAe,CAAG,EAAA;4BACpB,IAAI,CAACC,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;4BAChE,IAAI,CAAC8zB,iBAAiB,CAAC7pB,SAAS,EAAA,CAAA;AAChC,4BAAA,OAAA;AACF,yBAAA;AACF,qBAAA;AAEF,gBAAA;AACE,oBAAA,IAAI2pB,mBA/GDA,CA+GqBuB,wBAAwB,CAAChtB,IAAO,CAAA,EAAA;wBACtD,IAAI,CAACotB,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;AAChE,wBAAA,IAAI,CAAC01B,wCAAwC,CAACnpB,GAAAA,EAAKpE,IAAMsgB,EAAAA,OAAAA,CAAAA,CAAAA;AACzD9tB,wBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,wBAAA,MAAA;AACF,qBAAA,MAAO,IApHJ8xB,mBAoH4BwB,CAAAA,aAAa,CAACjtB,IAAO,CAAA,EAAA;wBAClD,IAAI,CAACotB,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;AAChE,wBAAA,IAAI,CAAC21B,yBAAyB,CAACxtB,IAAAA,CAAK3I,IAAI,EAAEipB,OAAAA,CAAAA,CAAAA;AAC1C9tB,wBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,wBAAA,MAAA;AACF,qBAAA;AACJ,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IA5HW8xB,mBA8HI8B,CAAAA,wCAyCd,GAzCD,SAAeA,wCAAAA,CACbnpB,GAAoC,EACpCqpB,UAAqB,EACrBnN,OAAgB,EAAA;QAEhB,IAAMzf,KAAAA,GAAQyf,QAAQ1kB,SAAS,EAAA,CAAA;QAC/B,IAAI8xB,aAAAA,CAAAA;AACJ,QAAA,IAAI7sB,KAAMxJ,CAAAA,IAAI,KAAKJ,UAAAA,CAAWmF,EAAE,EAAE;YAChCsxB,aAAgB,GAAA,IAAA,CAAA;AAChBpN,YAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;AACnB,SAAA,MAAO,IAAI8F,KAAAA,CAAMrI,MAAM,KAAK,GAAK,EAAA;YAC/Bk1B,aAAgB,GAAA,KAAA,CAAA;AAClB,SAAA,MAAO,IAAI7sB,KAAAA,CAAMrI,MAAM,KAAK,GAAK,EAAA;YAC/B,IAAMm1B,QAAAA,GAAWrN,QAAQ1kB,SAAS,EAAA,CAAA;AAClC0kB,YAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;YACjB,IAAMkH,EAAAA,GAAKwpB,mBAAoByB,CAAAA,mBAAmB,CAACS,QAASn1B,CAAAA,MAAM,EAAEi1B,UAAAA,CAAWp2B,IAAI,CAAA,CAAA;AACnF,YAAA,IAAI,EAAC4K,EAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAIwH,CAAAA,KAAK,CAAE,EAAA;gBACAtS,eAAeY,aAAa,CACxC,WAAY01B,GAAAA,UAAAA,CAAWj1B,MAAM,GAAC,cAAA,GAAcm1B,SAASn1B,MAAM,EAC3Da,cAAY4hB,gBAAgB,EAC5BqF,QAAQpoB,MAAM,EACdy1B,SAASx1B,QAAQ,EAAA;AAMrB,aAAA;YACA,IAAMy1B,WAAAA,GAAc3rB,GAAGwH,KAAK,CAAA;YAC5B4a,MAAOuI,CAAAA,MAAM,CAACxoB,GAAI2nB,CAAAA,YAAY,CAACC,WAAW,EAAE4B,YAAY5B,WAAW,CAAA,CAAA;YACnE3H,MAAOuI,CAAAA,MAAM,CAACxoB,GAAI2nB,CAAAA,YAAY,CAACE,WAAW,EAAE2B,YAAY3B,WAAW,CAAA,CAAA;AACnE,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAM2B,eAAc,IAAI,CAACC,yBAAyB,CAACJ,UAAAA,CAAWj1B,MAAM,EAAE8nB,OAAAA,CAAAA,CAAAA;AACtE,QAAA,IAAIoN,aAAe,EAAA;AACjB,YAAA,IAAI,CAAC/B,iBAAiB,CAAC3pB,MAAM,CAAC;AAAEnB,gBAAAA,KAAAA,EAAOA,MAAMrI,MAAM;AAAEnB,gBAAAA,IAAAA,EAAMo2B,WAAWp2B,IAAI;gBAAEoS,KAAOmkB,EAAAA,YAAAA;AAAY,aAAA,CAAA,CAAA;SAC1F,MAAA;YACLvJ,MAAOuI,CAAAA,MAAM,CAACxoB,GAAI2nB,CAAAA,YAAY,CAACC,WAAW,EAAE4B,aAAY5B,WAAW,CAAA,CAAA;YACnE3H,MAAOuI,CAAAA,MAAM,CAACxoB,GAAI2nB,CAAAA,YAAY,CAACE,WAAW,EAAE2B,aAAY3B,WAAW,CAAA,CAAA;AACrE,SAAA;AACF,KAAA,CAAA;AAvKWR,IAAAA,mBAAAA,CAyKI+B,yBAId,GAJD,SAAeA,yBAA0Bn2B,CAAAA,IAAY,EAAEipB,OAAgB,EAAA;QACrE,IAAMtkB,KAAAA,GAAQskB,QAAQ1kB,SAAS,EAAA,CAAA;AAC/B0kB,QAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;AACjB,QAAA,IAAI,CAAC4wB,iBAAiB,CAAC3pB,MAAM,CAAC;AAAE3K,YAAAA,IAAAA,EAAM2E,MAAM3E,IAAI;AAAEwJ,YAAAA,KAAAA,EAAO7E,MAAMxD,MAAM;AAAC,SAAA,CAAA,CAAA;AACxE,KAAA,CAAA;IA7KWizB,mBA+KIG,CAAAA,SAGd,GAHD,SAAeA,SAAAA,GAAAA;AACb,QAAA,IAAMznB,cAAc,IAAImnB,kBAAAA,EAAAA,CAAAA;AACxB,QAAA,IAAI,CAACK,iBAAiB,CAAC/pB,QAAQ,CAACuC,WAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;IAlLWsnB,mBAoLIqC,CAAAA,UAEd,GAFD,SAAeA,UAAAA,GAAAA;QACb,IAAI,CAACnC,iBAAiB,CAAC7pB,SAAS,EAAA,CAAA;AAClC,KAAA,CAAA;AAtLW2pB,IAAAA,mBAAAA,CAwLIoC,yBAQd,GARD,SAAeA,yBAA0BjX,CAAAA,KAAa,EAAE0J,OAAgB,EAAA;AACtE,QAAA,IAAMlc,GAAqB,GAAA;AAAE4nB,YAAAA,WAAAA,EAAa,EAAC;AAAGC,YAAAA,WAAAA,EAAa,EAAC;AAAE,SAAA,CAAA;QAC9D,MAAO3L,OAAAA,CAAQzmB,UAAU,EAAA,KAAO,GAAK,CAAA;AACnC,YAAA,IAAI,CAACk0B,yBAAyB,CAAC3pB,GAAAA,EAAKwS,KAAO0J,EAAAA,OAAAA,CAAAA,CAAAA;AAC3CA,YAAAA,OAAAA,CAAQ5lB,oBAAoB,EAAA,CAAA;AAC9B,SAAA;AACA4lB,QAAAA,OAAAA,CAAQpmB,QAAQ,EAAA,CAAA;QAChB,OAAOkK,GAAAA,CAAAA;AACT,KAAA,CAAA;IAhMWqnB,mBAkMIsC,CAAAA,yBA0Fd,GA1FD,SAAeA,yBAAAA,CAA0B3pB,GAAkB,EAAEwS,KAAa,EAAE0J,OAAgB,EAAA;AAC1F,QAAA,IAAI0N,eAAkB1N,GAAAA,OAAAA,CAAQ1kB,SAAS,EAAA,CAAGpD,MAAM,CAAA;QAChD,IAAMy1B,EAAAA,GAAK3N,QAAQ1kB,SAAS,EAAA,CAAA;AAC5B,QAAA,IAAIgb,KAAU,KAAA,YAAA,IAAgBoX,eAAoB,KAAA,YAAA,IAAgBA,oBAAoB,iBAAmB,EAAA;AACvG,YAAA,IAAIxU,GAAM,GAAA,CAAA,CAAA;YACV,IAAIyU,EAAAA,CAAGz1B,MAAM,KAAK,GAAK,EAAA;AACrBghB,gBAAAA,GAAAA,GAAM8G,QAAQ+K,UAAU,EAAA,CAAA;AACxB/K,gBAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;AACjBulB,gBAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;AACnB,aAAA,MAAO,IAAIkzB,EAAAA,CAAGz1B,MAAM,KAAK,GAAK,EAAA;AAC5B,gBAAcrB,cAAeY,CAAAA,aAAa,CACvC,mDAAgDk2B,EAAGz1B,CAAAA,MAAM,EAC1Da,aAAAA,CAAY4hB,gBAAgB,EAC5BqF,OAAAA,CAAQpoB,MAAM,EACdooB,QAAQ3mB,cAAc,EAAA,EAAA;AAO1B,aAAA;YACAq0B,eAAmBxU,IAAAA,GAAAA,CAAAA;AACrB,SAAA;AAEAwU,QAAAA,eAAAA,GAAkBpX,KAAQoX,GAAAA,eAAAA,CAAAA;QAC1B,IAAME,qBAAAA,GAAwBC,kBAAkB,CAACH,eAAgB,CAAA,CAAA;AACjE,QAAA,IAAIE,yBAAyBzqB,SAAW,EAAA;AACtC,YAActM,cAAAA,CAAeY,aAAa,CACxC,+BAAgCi2B,GAAAA,eAAAA,EAChC30B,aAAY4hB,CAAAA,gBAAgB,EAC5BqF,OAAAA,CAAQpoB,MAAM,EACdooB,QAAQ3mB,cAAc,EAAA,EAAA;AAO1B,SAAA;AAEA2mB,QAAAA,OAAAA,CAAQ5lB,oBAAoB,EAAA,CAAA;QAC5B,IAAI+O,KAAAA,CAAAA;AACJ,QAAA,IAAI,QAAS1N,CAAAA,IAAI,CAACukB,OAAAA,CAAQzmB,UAAU,EAAK,CAAA,EAAA;AACvC4P,YAAAA,KAAAA,GAAQ6W,QAAQ+K,UAAU,EAAA,CAAA;SACrB,MAAA;YACL,IAAMrvB,KAAAA,GAAQskB,QAAQ1kB,SAAS,EAAA,CAAA;AAC/B,YAAA,IAAII,MAAM3E,IAAI,KAAKxE,QAASsD,CAAAA,IAAI,EAAEsT,KAAQ,GAAA,IAAA,CAAA;AACrC,iBAAA,IAAIzN,MAAM3E,IAAI,KAAKxE,QAASuD,CAAAA,KAAK,EAAEqT,KAAQ,GAAA,KAAA,CAAA;AAC3C,iBAAA,IAAIzN,KAAM3E,CAAAA,IAAI,KAAKxE,QAAAA,CAASs4B,QAAQ,EAAE;AACzC7K,gBAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;AACjB,gBAAA,IAAMygB,OAAiB,EAAE,CAAA;AACzB,gBAAA,MAAO,IAAM,CAAA;oBACXA,IAAK/jB,CAAAA,IAAI,CAAC6oB,OAAAA,CAAQ+K,UAAU,EAAA,CAAA,CAAA;AAC5B/K,oBAAAA,OAAAA,CAAQ5lB,oBAAoB,EAAA,CAAA;oBAC5B,IAAMC,IAAAA,GAAO2lB,OAAQ3lB,CAAAA,IAAI,CAAC,CAAA,CAAA,CAAA;AAC1B,oBAAA,IAAIA,SAAS,GAAK,EAAA;AAChB2lB,wBAAAA,OAAAA,CAAQpmB,QAAQ,EAAA,CAAA;AAChB,wBAAA,MAAA;AACF,qBAAA;AACAomB,oBAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;AACnB,iBAAA;AACA0O,gBAAAA,KAAAA,GAAQ,WAAI2kB,KAAS5S,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACvB,aAAA,MAAO,IAAI8E,OAAAA,CAAQzmB,UAAU,EAAA,KAAO,GAAK,EAAA;AAG/B4xB,gBAAAA,IAAAA,6CAAAA,CAAAA;AAFRnL,gBAAAA,OAAAA,CAAQpmB,QAAQ,EAAA,CAAA;gBAChB,IAAMm0B,cAAAA,GAAiB/N,QAAQ1kB,SAAS,EAAA,CAAA;AACxC6N,gBAAAA,KAAAA,GAAAA,CAAQgiB,6CAAAA,GApQHA,mBAoQuB6C,CAAAA,WAAW,CAACtyB,KAAAA,CAAMxD,MAAM,CAAC,KAA7CizB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,6CAA+C,CAAC4C,cAAAA,CAAe71B,MAAM,CAAC,CAAA;AAC9E,gBAAA,IAAIiR,SAAShG,SAAW,EAAA;oBACRtM,eAAeY,aAAa,CACxC,2BAA4BiE,GAAAA,KAAAA,CAAMxD,MAAM,GAAC,GAAA,GAAG61B,eAAe71B,MAAM,EACjEa,cAAY4hB,gBAAgB,EAC5BqF,QAAQpoB,MAAM,EACdm2B,eAAel2B,QAAQ,EAAA;AAO3B,iBAAA;aACK,MAAA;AACLsR,gBAAAA,KAAAA,GAAQzN,MAAMxD,MAAM,CAAA;AACtB,aAAA;AACF,SAAA;AACA8nB,QAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;QACjB,IAAI,OAAO0O,UAAU,QAAU,EAAA;YAC7BrF,GAAI6nB,CAAAA,WAAW,CAACiC,qBAAAA,CAAsB,GAAGzkB,KAAAA,CAAAA;SACpC,MAAA;YACLrF,GAAI4nB,CAAAA,WAAW,CAACkC,qBAAAA,CAAsB,GAAGzkB,KAAAA,CAAAA;AAC3C,SAAA;AACF,KAAA,CAAA;AA5RWgiB,IAAAA,mBAAAA,CA8RI6B,2BAWd,GAXD,SAAeA,2BAA4BlpB,CAAAA,GAAoC,EAAEkc,OAAgB,EAAA;AAC/FA,QAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;QACjB,IAAMiF,IAAAA,GAAOsgB,QAAQ1kB,SAAS,EAAA,CAAA;AAC9B0kB,QAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;QACjB,IAAM0O,KAAAA,GAAQgiB,mBAAoB6C,CAAAA,WAAW,CAACC,eAAe,CAACvuB,IAAKxH,CAAAA,MAAM,CAAC,CAAA;QAC1E,IAAM4sB,GAAAA,GAAM+I,mBAAmBI,eAAe,CAAA;AAC9C,QAAA,IAAI9kB,SAAShG,SAAW,EAAA;AACtBW,YAAAA,GAAAA,CAAI2nB,YAAY,CAACE,WAAW,CAAC7G,GAAI,CAAA,GAAGplB,KAAKxH,MAAM,CAAA;SAC1C,MAAA;AACL4L,YAAAA,GAAAA,CAAI2nB,YAAY,CAACC,WAAW,CAAC5G,IAAI,GAAG3b,KAAAA,CAAAA;AACtC,SAAA;AACF,KAAA,CAAA;IAzSWgiB,mBA2SI2B,CAAAA,mBAYd,GAZD,SAAeA,mBACbhpB,CAAAA,GAAqC,EACrCkc,OAAgB,EAChB9tB,KAAqB,EACrBqI,MAAc,EAAA;AAEd,QAAA,IAAIylB,QAAQ9jB,OAAO,GAAGhK,KAAMI,CAAAA,KAAK,GAAGiI,MAAQ,EAAA;YAC1CuJ,GAAI0nB,CAAAA,cAAc,CAACr0B,IAAI,CAAC;gBACtB4E,KAAO,EAAA;oBAAE7J,KAAAA,EAAAA,KAAAA;oBAAOC,GAAK,EAAA,QAAA,CAAA,EAAA,EAAK6tB,QAAQ3mB,cAAc,EAAA,EAAA;wBAAI/G,KAAO0tB,EAAAA,OAAAA,CAAQ9jB,OAAO,GAAG3B,MAAS,GAAA,CAAA;;AAAI,iBAAA;gBAC1F8mB,OAASrB,EAAAA,OAAAA,CAAQpoB,MAAM,CAAC4C,SAAS,CAACtI,KAAMI,CAAAA,KAAK,EAAE0tB,OAAAA,CAAQ9jB,OAAO,GAAG3B,MAAS,GAAA,CAAA,CAAA;AAC5E,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;AAvTW4wB,IAAAA,mBAAAA,CAyTI4B,eAsEd,GAtED,SAAeA,eAAAA,CAAgB/M,OAAgB,EAAA;AAC7C,QAAA,IAAI,CAACsL,SAAS,EAAA,CAAA;AACd,QAAA,IAAMxnB,GAAM,GAAA;AACVsoB,YAAAA,MAAAA,EAAQ,EAAE;AACVZ,YAAAA,cAAAA,EAAgB,EAAE;YAClBC,YAAc,EAAA;AAAEC,gBAAAA,WAAAA,EAAa,EAAC;AAAGC,gBAAAA,WAAAA,EAAa,EAAC;AAAE,aAAA;AACjDuC,YAAAA,IAAAA,EAAM,EAAC;AACT,SAAA,CAAA;AACA,QAAA,IAAIrB,UAAa,GAAA,CAAA,CAAA;AACjB/oB,QAAAA,GAAAA,CAAI8nB,IAAI,GAAG5L,OAAQhlB,CAAAA,cAAc,CAAC,GAAK,EAAA,GAAA,CAAA,CAAA;AACvCglB,QAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;AAEjBulB,QAAAA,OAAAA,CAAQ5lB,oBAAoB,EAAA,CAAA;QAC5B,IAAIlI,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAElC,QAAA,MAAO,IAAM,CAAA;YACX,IAAMqG,IAAAA,GAAOsgB,QAAQ1kB,SAAS,EAAA,CAAA;AAC9B,YAAA,OAAQoE,KAAK3I,IAAI;AACf,gBAAA,KAAKxE,SAAS63B,OAAO;oBACnB,IAAI,CAAC0C,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;AAChE,oBAAA,IAAM80B,IAAO,GAAA,IAAI,CAAC8B,UAAU,CAACnO,OAAAA,CAAAA,CAAAA;oBAC7Blc,GAAIsoB,CAAAA,MAAM,CAACj1B,IAAI,CAACk1B,IAAAA,CAAAA,CAAAA;AAChBn6B,oBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,oBAAA,MAAA;AAEF,gBAAA,KAAK9G,SAASi3B,kBAAkB;oBAC9B,IAAI,CAACsD,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;oBAChE,IAAI,CAACy1B,2BAA2B,CAAClpB,GAAKkc,EAAAA,OAAAA,CAAAA,CAAAA;AACtC9tB,oBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,oBAAA,MAAA;AAEF,gBAAA,KAAK9G,SAASq4B,UAAU;oBACtB,IAAI,CAACkC,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;AAChE,oBAAA,IAAMq0B,IAAO5L,GAAAA,OAAAA,CAAQhlB,cAAc,CAAC,GAAK,EAAA,GAAA,CAAA,CAAA;;oBAEzC8I,GAAIsoB,CAAAA,MAAM,CAACj1B,IAAI,CAAC;wBAAEy0B,IAAAA,EAAAA,IAAAA;wBAAMW,SAAW,EAAA,IAAA;wBAAMd,YAAc,EAAA;AAAEC,4BAAAA,WAAAA,EAAa,EAAC;AAAGC,4BAAAA,WAAAA,EAAa,EAAC;AAAE,yBAAA;AAAGuC,wBAAAA,IAAAA,EAAM,EAAC;AAAE,qBAAA,CAAA,CAAA;AACtGh8B,oBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,oBAAA,MAAA;AAEF,gBAAA,KAAK9G,SAASy3B,OAAO;oBACnB,IAAI,CAAC8C,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;oBAChE,IAAI,CAAC62B,UAAU,CAACtqB,GAAKkc,EAAAA,OAAAA,CAAAA,CAAAA;AACrB9tB,oBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,oBAAA,MAAA;AAEF,gBAAA,KAAK1C,WAAWiF,QAAQ;AACtB,oBAAA,IAAI8D,IAAKxH,CAAAA,MAAM,KAAK,GAAA,EAAK20B,UAAc,IAAA,CAAA,CAAA;yBAClC,IAAIntB,IAAAA,CAAKxH,MAAM,KAAK,GAAK,EAAA;wBAC5B20B,UAAc,IAAA,CAAA,CAAA;AACd,wBAAA,IAAIA,eAAe,CAAG,EAAA;4BACpB,IAAI,CAACC,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;AAChE,4BAAA,IAAI,CAACi2B,UAAU,EAAA,CAAA;4BACf,OAAO1pB,GAAAA,CAAAA;AACT,yBAAA;AACF,qBAAA;AAEF,gBAAA;AACE,oBAAA,IAAIqnB,mBAlXDA,CAkXqBuB,wBAAwB,CAAChtB,IAAO,CAAA,EAAA;wBACtD,IAAI,CAACotB,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;AAChE,wBAAA,IAAI,CAAC01B,wCAAwC,CAACnpB,GAAAA,EAAKpE,IAAMsgB,EAAAA,OAAAA,CAAAA,CAAAA;AACzD9tB,wBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,wBAAA,MAAA;AACF,qBAAA,MAAO,IAvXJ8xB,mBAuX4BwB,CAAAA,aAAa,CAACjtB,IAAO,CAAA,EAAA;wBAClD,IAAI,CAACotB,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;AAChE,wBAAA,IAAI,CAAC21B,yBAAyB,CAACxtB,IAAAA,CAAK3I,IAAI,EAAEipB,OAAAA,CAAAA,CAAAA;AAC1C9tB,wBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,wBAAA,MAAA;AACF,qBAAA;AACJ,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AA/XW8xB,IAAAA,mBAAAA,CAiYIiD,UAgBd,GAhBD,SAAeA,UAAWtqB,CAAAA,GAAyD,EAAEkc,OAAgB,EAAA;AACnGA,QAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;AACjB,QAAA,MAAO,IAAM,CAAA;YACX,IAAM8F,KAAAA,GAAQyf,QAAQ1kB,SAAS,EAAA,CAAA;AAC/B0kB,YAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;AACjB,YAAA,IAAM0O,KAAQ6W,GAAAA,OAAAA,CAAQhlB,cAAc,CAAC,GAAK,EAAA,GAAA,CAAA,CAAA;AAC1CglB,YAAAA,OAAAA,CAAQ5lB,oBAAoB,EAAA,CAAA;AAE5B0J,YAAAA,GAAAA,CAAIoqB,IAAI,CAAC3tB,KAAMrI,CAAAA,MAAM,CAAC,GAAGiR,KAAAA,CAAAA;AAEzB,YAAA,IAAI6W,OAAQ3lB,CAAAA,IAAI,CAAC,CAAA,CAAA,KAAO,GAAK,EAAA;AAC3B2lB,gBAAAA,OAAAA,CAAQpmB,QAAQ,EAAA,CAAA;AAChB,gBAAA,OAAA;AACF,aAAA;AACAomB,YAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;AACnB,SAAA;AACF,KAAA,CAAA;AAjZW0wB,IAAAA,mBAAAA,CAmZIgD,UA+Ed,GA/ED,SAAeA,UAAAA,CAAWnO,OAAgB,EAAA;AACxC,QAAA,IAAI,CAACsL,SAAS,EAAA,CAAA;AACd,QAAA,IAAMxnB,GAAM,GAAA;AACV0nB,YAAAA,cAAAA,EAAgB,EAAE;YAClBC,YAAc,EAAA;AAAEC,gBAAAA,WAAAA,EAAa,EAAC;AAAGC,gBAAAA,WAAAA,EAAa,EAAC;AAAE,aAAA;AACjDuC,YAAAA,IAAAA,EAAM,EAAC;AACT,SAAA,CAAA;AAGApqB,QAAAA,GAAAA,CAAI8nB,IAAI,GAAG5L,OAAQhlB,CAAAA,cAAc,CAAC,GAAK,EAAA,GAAA,CAAA,CAAA;AACvCglB,QAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;AACjB,QAAA,IAAIoyB,UAAa,GAAA,CAAA,CAAA;AAEjB7M,QAAAA,OAAAA,CAAQ5lB,oBAAoB,EAAA,CAAA;QAC5B,IAAIlI,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAElC,QAAA,MAAO,IAAM,CAAA;YACX,IAAMqG,IAAAA,GAAOsgB,QAAQ1kB,SAAS,EAAA,CAAA;AAC9B,YAAA,OAAQoE,KAAK3I,IAAI;AACf,gBAAA,KAAKxE,SAASi3B,kBAAkB;oBAC9B,IAAI,CAACsD,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;oBAChE,IAAI,CAACy1B,2BAA2B,CAAClpB,GAAKkc,EAAAA,OAAAA,CAAAA,CAAAA;AACtC9tB,oBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,oBAAA,MAAA;AAEF,gBAAA,KAAK9G,SAASy3B,OAAO;oBACnB,IAAI,CAAC8C,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;oBAChE,IAAI,CAAC62B,UAAU,CAACtqB,GAAKkc,EAAAA,OAAAA,CAAAA,CAAAA;AACrB9tB,oBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,oBAAA,MAAA;AAEF,gBAAA,KAAK9G,SAAS03B,eAAe,CAAA;AAC7B,gBAAA,KAAK13B,SAAS23B,iBAAiB;oBAC7B,IAAI,CAAC4C,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;AAChEyoB,oBAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;oBACjB,IAAMqH,KAAAA,GAAQke,QAAQ1kB,SAAS,EAAA,CAAA;AAC/B,oBAAA,IAAIwI,GAAG,CAACpE,IAAKxH,CAAAA,MAAM,CAAC,EAAE;AACpB,wBAAcrB,cAAAA,CAAeY,aAAa,CACxC,qBACAsB,EAAAA,aAAAA,CAAY4hB,gBAAgB,EAC5BqF,OAAQpoB,CAAAA,MAAM,EACdooB,OAAAA,CAAQ3mB,cAAc,EAAA,EAAA;AAM1B,qBAAA;AACA,oBAAA,IAAMyrB,MAAMplB,IAAK3I,CAAAA,IAAI,KAAKxE,QAAS03B,CAAAA,eAAe,GAAG,aAAgB,GAAA,eAAA,CAAA;AACrEnmB,oBAAAA,GAAG,CAACghB,GAAAA,CAAI,GAAGhjB,KAAAA,CAAM5J,MAAM,CAAA;AACvB8nB,oBAAAA,OAAAA,CAAQvlB,QAAQ,CAAC,GAAA,CAAA,CAAA;AACjBvI,oBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,oBAAA,MAAA;AAEF,gBAAA,KAAK1C,WAAWiF,QAAQ;AACtB,oBAAA,IAAI8D,IAAKxH,CAAAA,MAAM,KAAK,GAAA,EAAK20B,UAAc,IAAA,CAAA,CAAA;yBAClC,IAAIntB,IAAAA,CAAKxH,MAAM,KAAK,GAAK,EAAA;wBAC5B20B,UAAc,IAAA,CAAA,CAAA;AACd,wBAAA,IAAIA,eAAe,CAAG,EAAA;4BACpB,IAAI,CAACC,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;AAChE,4BAAA,IAAI,CAACi2B,UAAU,EAAA,CAAA;4BACf,OAAO1pB,GAAAA,CAAAA;AACT,yBAAA;AACF,qBAAA;AAEF,gBAAA;AACE,oBAAA,IAAIqnB,mBArdDA,CAqdqBuB,wBAAwB,CAAChtB,IAAO,CAAA,EAAA;wBACtD,IAAI,CAACotB,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;AAChE,wBAAA,IAAI,CAAC01B,wCAAwC,CAACnpB,GAAAA,EAAKpE,IAAMsgB,EAAAA,OAAAA,CAAAA,CAAAA;AACzD9tB,wBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,wBAAA,MAAA;AACF,qBAAA,MAAO,IA1dJ8xB,mBA0d4BwB,CAAAA,aAAa,CAACjtB,IAAO,CAAA,EAAA;wBAClD,IAAI,CAACotB,mBAAmB,CAAChpB,GAAAA,EAAKkc,SAAS9tB,KAAOwN,EAAAA,IAAAA,CAAKxH,MAAM,CAACX,MAAM,CAAA,CAAA;AAChE,wBAAA,IAAI,CAAC21B,yBAAyB,CAACxtB,IAAAA,CAAK3I,IAAI,EAAEipB,OAAAA,CAAAA,CAAAA;AAC1C9tB,wBAAAA,KAAAA,GAAQ8tB,QAAQ3mB,cAAc,EAAA,CAAA;AAC9B,wBAAA,MAAA;AACF,qBAAA;AACJ,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAleW8xB,IAAAA,OAAAA,mBAAAA,CAAAA;AAmeZ,CAAA,EAAA,CAAA;AAneYA,mBAAAA,CACJ6C,WAAc,GAAA;IAAEC,eAAAA,EAAAA,eAAAA;IAAiBI,eAAAA,EAAAA,eAAAA;IAAiBC,gBAAAA,EAAAA,gBAAAA;IAAkBC,cAAAA,EAAAA,cAAAA;IAAgBC,WAAAA,EAAAA,WAAAA;IAAaC,QAAAA,EAAAA,QAAAA;AAAS,CAAA,CAAA;AADtGtD,mBAAAA,CAGJC,UAAqB,EAAE,CAAA;AAHnBD,mBAAAA,CAKIE,oBAAmE,IAAIjqB,gBAAAA,EAAAA;;AC1CxF,iBACO,IAAMhJ,SAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,SAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AAgCXs2B,IAAAA,MAAAA,CAAAA,gBAoEC,GApEDA,SAAAA,gBACE92B,CAAAA,MAAc,EACdsvB,WAAmB,EACnBC,aAAqB,EACrBwH,MAAqB,EACrBC,OAA6B,EAC7BC,cAAwB,EACxBtP,qBAA6B,EAAA;QAE7B+D,YAAalnB,CAAAA,KAAK,CAAC0yB,SAAWvP,EAAAA,qBAAAA,CAAAA,CAAAA;AAC9B,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAoBoP,MAAQ,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjB1T,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTqI,YAAAA,YAAAA,CAAa3D,kBAAkB,CAAC1E,KAAAA,CAAM2Q,IAAI,EAAE3Q,MAAM9R,KAAK,CAAA,CAAA;AACzD,SAAA;AAEA,QAAA,IAAK,IAAI9R,CAAI,GAAA,CAAA,EAAGA,IAAIw3B,cAAet3B,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;AAC9CisB,YAAAA,YAAAA,CAAa3D,kBAAkB,CAACkP,cAAc,CAACx3B,CAAE,CAAA,CAAA,CAAA;AACnD,SAAA;QAEA,IAAM03B,iBAAAA,GAAoBhV,YAAYC,GAAG,EAAA,CAAA;QACzC,IAAMgV,UAAAA,GAAa1L,YAAaC,CAAAA,OAAO,CAAC3rB,MAAAA,CAAAA,CAAAA;QAWxCG,MAAOuiB,CAAAA,IAAI,CAAC,+CAAC,IAA+CP,WAAYC,CAAAA,GAAG,EAAK+U,GAAAA,iBAAgB,CAAE,GAAA,IAAA,CAAA,CAAA;QAElG,IAAME,KAAAA,GAAQ,IAAI9yB,KAAM6yB,CAAAA,UAAAA,CAAAA,CAAAA;QACxB,IAAMlV,MAAAA,GAASmV,MAAM5yB,QAAQ,EAAA,CAAA;QAE7B,IAAiB6yB,SAnER92B,SAmED+2B,CAAAA,OAAAA,CAAAA;AAnEC/2B,QAAAA,SAAAA,CAqECwiB,mBAAmB,GAAGoU,UAAAA,CAAAA;QAChC,IAAMI,OAAAA,GAAUF,MAAOrV,CAAAA,KAAK,CAACC,MAAAA,CAAAA,CAAAA;AAO7B,QAAA,IAAI,CAACsV,OAAS,EAAA;YAIZ,OAAOjsB,SAAAA,CAAAA;AACT,SAAA;QAEA,IAAMmD,OAAAA,GACJsoB,YAAYS,oBAAqBC,CAAAA,OAAO,GAAGxG,cAAeI,CAAAA,UAAU,EAAKC,GAAAA,cAAAA,CAAeD,UAAU,EAAA,CAAA;QAEpG,IAAMh3B,KAAAA,GAAQ6nB,YAAYC,GAAG,EAAA,CAAA;AAC7B,QAAA,IAAMlW,GAAMwC,GAAAA,OAAAA,CAAQ2gB,kBAAkB,CAACmI,SAASlI,WAAaC,EAAAA,aAAAA,CAAAA,CAAAA;QAC7DpvB,MAAOuiB,CAAAA,IAAI,CAAC,uBAAC,IAAuBP,WAAYC,CAAAA,GAAG,EAAK9nB,GAAAA,KAAI,CAAE,GAAA,IAAA,CAAA,CAAA;AAzFrDkG,QAAAA,SAAAA,CA0FCwiB,mBAAmB,GAAGzX,SAAAA,CAAAA;QAShC,OAAOW,GAAAA,CAAAA;AACT,KAAA,CAAA;AAEAyrB,IAAAA,MAAAA,CAAAA,mBAaC,GAbDA,SAAAA,mBAAAA,CAAoBC,YAAoB,EAAA;AACtC34B,QAAAA,cAAAA,CAAeO,2BAA2B,EAAA,CAAA;AAC1C+zB,QAAAA,mBAAAA,CAAoB/uB,KAAK,EAAA,CAAA;QACzB,IAAM0H,GAAAA,GAAMqnB,mBAAoBtR,CAAAA,KAAK,CAAC2V,YAAAA,CAAAA,CAAAA;QAStC,OAAO1rB,GAAAA,CAAAA;AACT,KAAA,CAAA;IAnHW1L,SASJC,CAAAA,cAUN,GAVD,SAAOA,cAAAA,CAAe/F,KAAa,EAAE0sB,IAAa,EAAEyQ,MAAe,EAAA;AACjE,QAAA,IAAM5a,QAAW,GAAA,IAAI,CAAC6a,mBAAmB,CAAC/zB,GAAG,EAAA,CAAA;AAC7CkZ,QAAAA,QAAAA,CAAS5iB,GAAG,CACVK,KAAAA,CAAAA,CAAAA;QAMF,OAAOuiB,QAAAA,CAAAA;AACT,KAAA,CAAA;AAnBWzc,IAAAA,SAAAA,CAqBJE,WAIN,GAJD,SAAOA,WAAYpG,CAAAA,KAAqB,EAAEC,GAAmB,EAAA;AAC3D,QAAA,IAAM4J,KAAQ,GAAA,IAAI,CAAC4zB,gBAAgB,CAACh0B,GAAG,EAAA,CAAA;QACvCI,KAAM9J,CAAAA,GAAG,CAACC,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;QACjB,OAAO4J,KAAAA,CAAAA;AACT,KAAA,CAAA;AAzBW3D,IAAAA,OAAAA,SAAAA,CAAAA;AAkIZ,CAAA,GAAA;AAlIYA,SACI+2B,CAAAA,OAAAA,GAAU1V,mBAAmBrU,MAAM,EAAA,CAAA;AADvChN,SAEIs3B,CAAAA,mBAAAA,GAAsB74B,cAAeC,CAAAA,gBAAgB,CAACzE,cAAAA,CAAAA,CAAAA;AAF1D+F,SAGIu3B,CAAAA,gBAAAA,GAAmB94B,cAAeC,CAAAA,gBAAgB,CAAC9E,WAAAA,CAAAA;;ACbpE;AACO,IAAM49B,UAAW,SAAgB;AAExC,IAAIC,IAAO,GAAA,SAAA,CAAA;AAKXC,OAAAA,CAAQC,GAAG,CAAC,qCAAC,GAAqCH,UAAQ,WAAWC,GAAAA,IAAAA,CAAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"module.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/Keywords.ts","../src/common/types.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/lexer/Utils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../src/GSError.ts","../src/common/BaseScanner.ts","../src/lexer/Lexer.ts","../src/lalr/types.ts","../src/parser/ShaderInfo.ts","../src/parser/symbolTable/SymbolDataType.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/symbolTable/FnSymbol.ts","../src/parser/symbolTable/StructSymbol.ts","../src/common/BaseSymbolTable.ts","../src/parser/symbolTable/TargetSymbolTable.ts","../src/parser/symbolTable/VarSymbol.ts","../src/parser/SemanticAnalyzer.ts","../src/parser/GrammarSymbol.ts","../src/lalr/Production.ts","../src/parser/Grammar.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/lalr/Utils.ts","../src/lalr/CFG.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/lalr/LALR1.ts","../src/parser/ShaderTargetParser.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../src/preprocessor/MacroDefine.ts","../src/preprocessor/constants.ts","../src/preprocessor/Utils.ts","../src/preprocessor/PpScanner.ts","../src/preprocessor/PpParser.ts","../src/preprocessor/Preprocessor.ts","../src/ParserUtils.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/common/Enums.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/contentParser/KeywordMap.ts","../src/contentParser/Scanner.ts","../src/contentParser/ContentSymbolTable.ts","../src/contentParser/ShaderContentParser.ts","../src/ShaderLab.ts","../src/index.ts"],"sourcesContent":["function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { IPoolElement } from \"@galacean/engine\";\nimport { ShaderPosition } from \"./ShaderPosition\";\n\nexport class ShaderRange implements IPoolElement {\n public start: ShaderPosition;\n public end: ShaderPosition;\n\n set(start: ShaderPosition, end: ShaderPosition) {\n this.start = start;\n this.end = end;\n }\n\n dispose(): void {\n this.start.dispose();\n this.end.dispose();\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class ShaderPosition implements IPoolElement {\n index: number;\n // #if _VERBOSE\n line: number;\n column: number;\n // #endif\n\n set(\n index: number,\n // #if _VERBOSE\n line: number,\n column: number\n // #endif\n ) {\n this.index = index;\n // #if _VERBOSE\n this.line = line;\n this.column = column;\n // #endif\n }\n\n dispose(): void {\n this.index = 0;\n // #if _VERBOSE\n this.line = 0;\n this.column = 0;\n // #endif\n }\n}\n","export enum EKeyword {\n ATTRIBUTE = 0,\n CONST,\n BOOL,\n FLOAT,\n DOUBLE,\n INT,\n UINT,\n BREAK,\n CONTINUE,\n DO,\n ELSE,\n FOR,\n IF,\n WHILE,\n DISCARD,\n RETURN,\n BVEC2,\n BVEC3,\n BVEC4,\n IVEC2,\n IVEC3,\n IVEC4,\n UVEC2,\n UVEC3,\n UVEC4,\n VEC2,\n VEC3,\n VEC4,\n VEC4_ARRAY,\n MAT2,\n MAT3,\n MAT4,\n MAT2X3,\n MAT2X4,\n MAT3X2,\n MAT3X4,\n MAT4X2,\n MAT4X3,\n IN,\n OUT,\n INOUT,\n CENTROID,\n SAMPLER2D,\n SAMPLER3D,\n SAMPLER_CUBE,\n SAMPLER2D_SHADOW,\n SAMPLER_CUBE_SHADOW,\n SAMPLER2D_ARRAY,\n SAMPLER2D_ARRAY_SHADOW,\n I_SAMPLER2D,\n I_SAMPLER3D,\n I_SAMPLER_CUBE,\n I_SAMPLER2D_ARRAY,\n U_SAMPLER2D,\n U_SAMPLER3D,\n U_SAMPLER_CUBE,\n U_SAMPLER2D_ARRAY,\n STRUCT,\n LAYOUT,\n LOCATION,\n VOID,\n TRUE,\n FALSE,\n PRECISION,\n PRECISE,\n HIGHP,\n MEDIUMP,\n LOWP,\n INVARIANT,\n SMOOTH,\n FLAT,\n NOPERSPECTIVE,\n\n // galacean internals\n GS_RenderQueueType,\n GS_BlendState,\n GS_DepthState,\n GS_StencilState,\n GS_RasterState,\n GS_EditorProperties,\n GS_EditorMacros,\n GS_Editor,\n GS_Tags,\n GS_ReplacementTag,\n GS_LightMode,\n GS_PipelineStage,\n GS_VertexShader,\n GS_FragmentShader,\n GS_SubShader,\n GS_Pass,\n GS_BlendFactor,\n GS_BlendOperation,\n GS_Bool,\n GS_Number,\n GS_Color,\n GS_CompareFunction,\n GS_StencilOperation,\n GS_CullMode,\n GS_UsePass\n}\n","import { EKeyword } from \"./Keywords\";\n\nexport const KeywordTable = new Map<string, EKeyword>([\n [\"attribute\", EKeyword.ATTRIBUTE],\n [\"const\", EKeyword.CONST],\n [\"bool\", EKeyword.BOOL],\n [\"float\", EKeyword.FLOAT],\n [\"double\", EKeyword.DOUBLE],\n [\"int\", EKeyword.INT],\n [\"uint\", EKeyword.UINT],\n [\"break\", EKeyword.BREAK],\n [\"continue\", EKeyword.CONTINUE],\n [\"do\", EKeyword.DO],\n [\"else\", EKeyword.ELSE],\n [\"for\", EKeyword.FOR],\n [\"if\", EKeyword.IF],\n [\"while\", EKeyword.WHILE],\n [\"discard\", EKeyword.DISCARD],\n [\"return\", EKeyword.RETURN],\n [\"bvec2\", EKeyword.BVEC2],\n [\"bvec3\", EKeyword.BVEC3],\n [\"bvec4\", EKeyword.BVEC4],\n [\"ivec2\", EKeyword.IVEC2],\n [\"ivec3\", EKeyword.IVEC3],\n [\"ivec4\", EKeyword.IVEC4],\n [\"uvec2\", EKeyword.UVEC2],\n [\"uvec3\", EKeyword.UVEC3],\n [\"uvec4\", EKeyword.UVEC4],\n [\"vec2\", EKeyword.VEC2],\n [\"vec3\", EKeyword.VEC3],\n [\"vec4\", EKeyword.VEC4],\n [\"mat2\", EKeyword.MAT2],\n [\"mat3\", EKeyword.MAT3],\n [\"mat4\", EKeyword.MAT4],\n [\"in\", EKeyword.IN],\n [\"out\", EKeyword.OUT],\n [\"inout\", EKeyword.INOUT],\n [\"sampler2D\", EKeyword.SAMPLER2D],\n [\"samplerCube\", EKeyword.SAMPLER_CUBE],\n [\"sampler3D\", EKeyword.SAMPLER3D],\n [\"sampler2DShadow\", EKeyword.SAMPLER2D_SHADOW],\n [\"samplerCubeShadow\", EKeyword.SAMPLER_CUBE_SHADOW],\n [\"sampler2DArray\", EKeyword.SAMPLER2D_ARRAY],\n [\"sampler2DArrayShadow\", EKeyword.SAMPLER2D_ARRAY_SHADOW],\n [\"isampler2D\", EKeyword.I_SAMPLER2D],\n [\"isampler3D\", EKeyword.I_SAMPLER3D],\n [\"isamplerCube\", EKeyword.I_SAMPLER_CUBE],\n [\"isampler2DArray\", EKeyword.I_SAMPLER2D_ARRAY],\n [\"usampler2D\", EKeyword.U_SAMPLER2D],\n [\"usampler3D\", EKeyword.U_SAMPLER3D],\n [\"usamplerCube\", EKeyword.U_SAMPLER_CUBE],\n [\"usampler2DArray\", EKeyword.U_SAMPLER2D_ARRAY],\n [\"struct\", EKeyword.STRUCT],\n [\"void\", EKeyword.VOID],\n [\"true\", EKeyword.TRUE],\n [\"false\", EKeyword.FALSE],\n [\"precision\", EKeyword.PRECISION],\n [\"precise\", EKeyword.PRECISE],\n [\"highp\", EKeyword.HIGHP],\n [\"mediump\", EKeyword.MEDIUMP],\n [\"lowp\", EKeyword.LOWP],\n [\"invariant\", EKeyword.INVARIANT],\n [\"flat\", EKeyword.FLAT],\n [\"smooth\", EKeyword.SMOOTH],\n [\"noperspective\", EKeyword.NOPERSPECTIVE],\n [\"centroid\", EKeyword.CENTROID],\n [\"layout\", EKeyword.LAYOUT],\n [\"location\", EKeyword.LOCATION]\n]);\n\nexport enum ETokenType {\n ID = 1000,\n FLOAT_CONSTANT,\n INT_CONSTANT,\n STRING_CONST,\n /** << */\n LEFT_OP,\n /** \\>> */\n RIGHT_OP,\n /** ++ */\n INC_OP,\n /** -- */\n DEC_OP,\n /** <= */\n LE_OP,\n /** \\>= */\n GE_OP,\n /** == */\n EQ_OP,\n /** != */\n NE_OP,\n /** && */\n AND_OP,\n /** || */\n OR_OP,\n /** ^^ */\n XOR_OP,\n /** *= */\n MUL_ASSIGN,\n /** /= */\n DIV_ASSIGN,\n /** += */\n ADD_ASSIGN,\n /** -= */\n SUB_ASSIGN,\n /** %= */\n MOD_ASSIGN,\n /** <<= */\n LEFT_ASSIGN,\n /** >>= */\n RIGHT_ASSIGN,\n /** &= */\n AND_ASSIGN,\n /** ^= */\n XOR_ASSIGN,\n /** |= */\n OR_ASSIGN,\n /** ( */\n LEFT_PAREN,\n /** ) */\n RIGHT_PAREN,\n /** [ */\n LEFT_BRACKET,\n /** ] */\n RIGHT_BRACKET,\n /** { */\n LEFT_BRACE,\n /** } */\n RIGHT_BRACE,\n /** . */\n DOT,\n /** , */\n COMMA,\n COLON,\n /** = */\n EQUAL,\n /** ; */\n SEMICOLON,\n /** ! */\n BANG,\n /** \\- */\n DASH,\n /** ~ */\n TILDE,\n PLUS,\n /** \\* */\n STAR,\n /** / */\n SLASH,\n /** % */\n PERCENT,\n /** < */\n LEFT_ANGLE,\n /** \\> */\n RIGHT_ANGLE,\n VERTICAL_BAR,\n /** ^ */\n CARET,\n /** & */\n AMPERSAND,\n /** ? */\n QUESTION,\n\n NOT_WORD,\n\n /** ε */\n EPSILON = 1998,\n EOF = 1999\n}\n\nexport const TypeAny = 3000;\n\nexport type GalaceanDataType =\n | EKeyword.VOID\n | EKeyword.FLOAT\n | EKeyword.BOOL\n | EKeyword.INT\n | EKeyword.UINT\n | EKeyword.VEC2\n | EKeyword.VEC3\n | EKeyword.VEC4\n | EKeyword.BVEC2\n | EKeyword.BVEC3\n | EKeyword.BVEC4\n | EKeyword.IVEC2\n | EKeyword.IVEC3\n | EKeyword.IVEC4\n | EKeyword.UVEC2\n | EKeyword.UVEC3\n | EKeyword.UVEC4\n | EKeyword.MAT2\n | EKeyword.MAT3\n | EKeyword.MAT4\n | EKeyword.MAT2X3\n | EKeyword.MAT2X4\n | EKeyword.MAT3X2\n | EKeyword.MAT3X4\n | EKeyword.MAT4X2\n | EKeyword.MAT4X3\n | EKeyword.SAMPLER2D\n | EKeyword.SAMPLER3D\n | EKeyword.SAMPLER_CUBE\n | EKeyword.SAMPLER2D_SHADOW\n | EKeyword.SAMPLER_CUBE_SHADOW\n | EKeyword.SAMPLER2D_ARRAY\n | EKeyword.SAMPLER2D_ARRAY_SHADOW\n | EKeyword.I_SAMPLER2D\n | EKeyword.I_SAMPLER3D\n | EKeyword.I_SAMPLER_CUBE\n | EKeyword.I_SAMPLER2D_ARRAY\n | EKeyword.U_SAMPLER2D\n | EKeyword.U_SAMPLER3D\n | EKeyword.U_SAMPLER_CUBE\n | EKeyword.U_SAMPLER2D_ARRAY\n | EKeyword.VEC4_ARRAY\n | typeof TypeAny\n | string;\n\nexport type TokenType = ETokenType | EKeyword;\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","import { ClearableObjectPool, IPoolElement, Logger } from \"@galacean/engine\";\nimport { GSErrorName } from \"./GSError\";\nimport { ShaderRange } from \"./common/ShaderRange\";\nimport { ShaderPosition } from \"./common/ShaderPosition\";\n// #if _VERBOSE\nimport { GSError } from \"./GSError\";\n// #endif\n\nexport class ShaderLabUtils {\n private static _shaderLabObjectPoolSet: ClearableObjectPool<IPoolElement>[] = [];\n\n static createObjectPool<T extends IPoolElement>(type: new () => T) {\n const pool = new ClearableObjectPool<T>(type);\n ShaderLabUtils._shaderLabObjectPoolSet.push(pool);\n return pool;\n }\n\n static clearAllShaderLabObjectPool() {\n for (let i = 0, n = ShaderLabUtils._shaderLabObjectPoolSet.length; i < n; i++) {\n ShaderLabUtils._shaderLabObjectPoolSet[i].clear();\n }\n }\n\n static createGSError(\n message: string,\n errorName: GSErrorName,\n source: string,\n location: ShaderRange | ShaderPosition,\n file?: string\n ): Error | undefined {\n // #if _VERBOSE\n return new GSError(errorName, message, location, source, file);\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { ETokenType } from \"./types\";\nimport { ShaderRange, ShaderPosition } from \".\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { IPoolElement } from \"@galacean/engine\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport class BaseToken<T extends number = number> implements IPoolElement {\n static pool = ShaderLabUtils.createObjectPool(BaseToken);\n\n type: T;\n lexeme: string;\n location: ShaderRange;\n\n set(type: T, lexeme: string, start?: ShaderPosition);\n set(type: T, lexeme: string, location?: ShaderRange);\n set(type: T, lexeme: string, arg?: ShaderRange | ShaderPosition) {\n this.type = type;\n this.lexeme = lexeme;\n if (arg) {\n if (arg instanceof ShaderRange) {\n this.location = arg as ShaderRange;\n } else {\n const end = ShaderLab.createPosition(\n arg.index + lexeme.length,\n // #if _VERBOSE\n arg.line,\n arg.column + lexeme.length\n // #endif\n );\n this.location = ShaderLab.createRange(arg, end);\n }\n }\n }\n\n dispose(): void {}\n}\n\nexport const EOF = new BaseToken();\nEOF.set(ETokenType.EOF, \"/EOF\");\n","export default class LexerUtils {\n static isNum(charCode: number) {\n return charCode >= 48 && charCode <= 57;\n }\n\n static isLetter(charCode: number) {\n return (\n charCode === 95 || // _\n (charCode >= 48 && charCode <= 57) || // 0 - 9\n (charCode >= 65 && charCode <= 90) || // A - Z\n (charCode >= 97 && charCode <= 122) // a - z\n );\n }\n\n static isAlpha(charCode: number) {\n return (\n charCode === 95 || // _\n (charCode >= 65 && charCode <= 90) || // A - Z\n (charCode >= 97 && charCode <= 122) // a - z\n );\n }\n\n static isPpCharacters(charCode: number) {\n return (\n charCode === 35 || // #\n charCode === 95 || // _\n (charCode >= 48 && charCode <= 57) || // 0 - 9\n (charCode >= 65 && charCode <= 90) || // A - Z\n (charCode >= 97 && charCode <= 122) // a - z\n );\n }\n\n static isSpace(charCode: number) {\n return (\n charCode === 9 || // Tab\n charCode === 10 || // Line break - /n\n charCode === 13 || // Carriage return -/r\n charCode === 32 // Space\n );\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","// #if _VERBOSE\nimport { ShaderPosition } from \"./common/ShaderPosition\";\nimport { ShaderRange } from \"./common/ShaderRange\";\n\nexport class GSError extends Error {\n static wrappingLineCount = 2;\n\n constructor(\n name: GSErrorName,\n message: string,\n public readonly location: ShaderRange | ShaderPosition,\n public readonly source: string,\n public readonly file?: string\n ) {\n super(message);\n this.name = name;\n }\n\n override toString(): string {\n let start: ShaderPosition, end: ShaderPosition;\n const { message, location, source } = this;\n if (!source) {\n return message;\n }\n\n if (location instanceof ShaderPosition) {\n start = end = location;\n } else {\n start = location.start;\n end = location.end;\n }\n const lines = source.split(\"\\n\");\n\n let diagnosticMessage = `${this.name}: ${message}\\n\\n`;\n const lineSplit = \"|···\";\n\n const wrappingLineCount = GSError.wrappingLineCount;\n for (let i = start.line - wrappingLineCount, n = end.line + wrappingLineCount; i <= n; i++) {\n const line = lines[i];\n diagnosticMessage += lineSplit + `${line}\\n`;\n\n if (i < start.line || i > end.line) continue;\n\n let remarkStart = 0;\n let remarkEnd = line.length;\n let paddingLength = lineSplit.length;\n if (i === start.line) {\n remarkStart = start.column;\n paddingLength += start.column;\n }\n if (i === end.line) {\n remarkEnd = end.column;\n }\n const remarkLength = Math.max(remarkEnd - remarkStart, 1);\n\n diagnosticMessage += \" \".repeat(paddingLength) + \"^\".repeat(remarkLength) + \"\\n\";\n }\n\n return diagnosticMessage;\n }\n}\n\n// #endif\nexport enum GSErrorName {\n PreprocessorError = \"PreprocessorError\",\n CompilationError = \"CompilationError\",\n ScannerError = \"ScannerError\"\n}\n","import { ETokenType, ShaderRange, ShaderPosition } from \".\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { BaseToken } from \"./BaseToken\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { Logger } from \"@galacean/engine\";\n\nexport type OnToken = (token: BaseToken, scanner: BaseScanner) => void;\n\n/**\n * @internal\n */\nexport default class BaseScanner {\n private static _spaceCharsWithBreak = [\" \", \"\\t\", \"\\n\", \"\\r\"];\n private static _spaceChars = [\" \", \"\\t\"];\n private static _checkIsIn(checked: string, chars: string[]): boolean {\n for (let i = 0; i < chars.length; i++) {\n if (checked === chars[i]) {\n return true;\n }\n continue;\n }\n return false;\n }\n\n protected _currentIndex = 0;\n protected _source: string;\n\n // #if _VERBOSE\n protected _column = 0;\n protected _line = 0;\n // #endif\n\n get current(): number {\n return this._currentIndex;\n }\n\n get source(): string {\n return this._source;\n }\n\n getCurPosition(): ShaderPosition {\n return ShaderLab.createPosition(\n this._currentIndex,\n // #if _VERBOSE\n this._line,\n this._column\n // #endif\n );\n }\n\n // #if _VERBOSE\n get line() {\n return this._line;\n }\n\n get column() {\n return this._column;\n }\n // #endif\n\n protected readonly _keywordsMap: Map<string, number>;\n\n constructor(source: string, kws: Map<string, number> = new Map()) {\n this._source = source;\n this._keywordsMap = kws;\n }\n\n isEnd(): boolean {\n return this._currentIndex >= this._source.length;\n }\n\n getCurChar(): string {\n return this._source[this._currentIndex];\n }\n\n getCurCharCode(): number {\n return this._source.charCodeAt(this._currentIndex);\n }\n\n advance(count = 1): void {\n // #if _VERBOSE\n for (let i = 0; i < count; i++) {\n this._advance();\n }\n // #else\n this._currentIndex += count;\n // #endif\n }\n\n _advance(): void {\n // #if _VERBOSE\n if (this.getCurChar() === \"\\n\") {\n this._line += 1;\n this._column = 0;\n } else {\n this._column += 1;\n }\n // #endif\n\n this._currentIndex++;\n }\n\n skipSpace(includeLineBreak: boolean): void {\n const spaceChars = includeLineBreak ? BaseScanner._spaceCharsWithBreak : BaseScanner._spaceChars;\n let curChar = this.getCurChar();\n\n while (BaseScanner._checkIsIn(curChar, spaceChars)) {\n this._advance();\n curChar = this.getCurChar();\n }\n }\n\n skipCommentsAndSpace(): ShaderRange | undefined {\n this.skipSpace(true);\n if (this.peek(2) === \"//\") {\n const start = this.getCurPosition();\n this.advance(2);\n // single line comments\n let curChar = this.getCurChar();\n while (curChar !== \"\\n\" && curChar !== \"\\r\" && !this.isEnd()) {\n this._advance();\n curChar = this.getCurChar();\n }\n this.skipCommentsAndSpace();\n return ShaderLab.createRange(start, this.getCurPosition());\n } else if (this.peek(2) === \"/*\") {\n const start = this.getCurPosition();\n this.advance(2);\n // multi-line comments\n while (this.peek(2) !== \"*/\" && !this.isEnd()) this._advance();\n this.advance(2);\n this.skipCommentsAndSpace();\n return ShaderLab.createRange(start, this.getCurPosition());\n }\n }\n\n peek(to: number): string {\n const offset = this._currentIndex;\n return this._source.substring(offset, offset + to);\n }\n\n scanText(text: string) {\n this.skipCommentsAndSpace();\n const peek = this.peek(text.length);\n if (peek !== text) {\n this.throwError(this.getCurPosition(), `Expect text \"${text}\", but got \"${peek}\"`);\n }\n this.advance(text.length);\n }\n\n throwError(pos: ShaderPosition | ShaderRange, ...msgs: any[]) {\n const error = ShaderLabUtils.createGSError(msgs.join(\" \"), GSErrorName.ScannerError, this._source, pos);\n // #if _VERBOSE\n Logger.error(error!.toString());\n // #endif\n throw error;\n }\n\n scanPairedText(left: string, right: string, balanced = false, skipLeading = false) {\n if (!skipLeading) {\n this.scanText(left);\n }\n const start = this._currentIndex;\n let level = balanced ? 1 : 0;\n while (this.peek(right.length) !== right || level !== 0) {\n if (this.isEnd()) return;\n if (balanced) {\n if (this.peek(left.length) === left) {\n level += 1;\n this.advance(left.length);\n continue;\n } else if (this.peek(right.length) === right) {\n level -= 1;\n if (level === 0) break;\n this.advance(right.length);\n continue;\n }\n }\n this.advance(right.length);\n }\n this.advance(right.length);\n return this._source.substring(start, this._currentIndex - right.length);\n }\n\n scanToken(onToken?: OnToken, splitCharRegex = /\\w/) {\n this.skipCommentsAndSpace();\n const start = this.getCurPosition();\n if (this.isEnd()) return;\n while (splitCharRegex.test(this.getCurChar()) && !this.isEnd()) this._advance();\n const end = this.getCurPosition();\n\n if (start.index === end.index) {\n this._advance();\n const token = BaseToken.pool.get();\n token.set(ETokenType.NOT_WORD, this._source[start.index], start);\n onToken?.(token, this);\n return token;\n }\n\n const lexeme = this._source.substring(start.index, end.index);\n const tokenType = this._keywordsMap.get(lexeme) ?? ETokenType.ID;\n const range = ShaderLab.createRange(start, end);\n const token = BaseToken.pool.get();\n token.set(tokenType, lexeme, range);\n onToken?.(token, this);\n return token;\n }\n}\n","import { ETokenType, KeywordTable } from \"../common\";\nimport { EOF, BaseToken } from \"../common/BaseToken\";\nimport LexerUtils from \"./Utils\";\nimport BaseScanner from \"../common/BaseScanner\";\nimport { ShaderLab } from \"../ShaderLab\";\n\n/**\n * The Lexer of ShaderLab Compiler\n */\nexport class Lexer extends BaseScanner {\n reset(source: string) {\n this._source = source;\n this._currentIndex = 0;\n // #if _VERBOSE\n this._line = this._column = 0;\n // #endif\n }\n\n *tokenize() {\n while (!this.isEnd()) {\n yield this.scanToken();\n }\n return EOF;\n }\n\n override skipSpace() {\n while (LexerUtils.isSpace(this.getCurCharCode())) {\n this._advance();\n }\n }\n\n override scanToken(): BaseToken {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return EOF;\n }\n\n if (LexerUtils.isAlpha(this.getCurCharCode())) {\n return this._scanWord();\n }\n if (LexerUtils.isNum(this.getCurCharCode())) {\n return this._scanNum();\n }\n\n const start = this._getPosition();\n const token = BaseToken.pool.get();\n let curChar: string;\n\n switch (this.getCurChar()) {\n case \"<\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"<\") {\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n token.set(ETokenType.LEFT_ASSIGN, \"<<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_OP, \"<<\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.LE_OP, \"<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_ANGLE, \"<\", start);\n break;\n\n case \">\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \">\") {\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n token.set(ETokenType.RIGHT_ASSIGN, \">>=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_OP, \">>\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.GE_OP, \">=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_ANGLE, \">\", start);\n break;\n\n case \"+\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"+\") {\n this._advance();\n token.set(ETokenType.INC_OP, \"++\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.ADD_ASSIGN, \"+=\", start);\n break;\n }\n token.set(ETokenType.PLUS, \"+\", start);\n break;\n\n case \"-\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"-\") {\n this._advance();\n token.set(ETokenType.DEC_OP, \"--\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.SUB_ASSIGN, \"-=\", start);\n break;\n }\n token.set(ETokenType.DASH, \"-\", start);\n break;\n\n case \"=\":\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n token.set(ETokenType.EQ_OP, \"==\", start);\n break;\n }\n token.set(ETokenType.EQUAL, \"=\", start);\n break;\n\n case \"!\":\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n token.set(ETokenType.NE_OP, \"!=\", start);\n break;\n }\n token.set(ETokenType.BANG, \"!\", start);\n break;\n\n case \"&\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"&\") {\n this._advance();\n token.set(ETokenType.AND_OP, \"&&\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.ADD_ASSIGN, \"&=\", start);\n break;\n }\n token.set(ETokenType.AMPERSAND, \"&\", start);\n break;\n\n case \"|\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"|\") {\n this._advance();\n token.set(ETokenType.OR_OP, \"||\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.OR_ASSIGN, \"|=\", start);\n break;\n }\n token.set(ETokenType.VERTICAL_BAR, \"|\", start);\n break;\n\n case \"^\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"^\") {\n this._advance();\n token.set(ETokenType.XOR_OP, \"^^\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.XOR_ASSIGN, \"^=\", start);\n break;\n }\n token.set(ETokenType.CARET, \"^\", start);\n break;\n\n case \"*\":\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n token.set(ETokenType.MUL_ASSIGN, \"*=\", start);\n break;\n }\n\n token.set(ETokenType.STAR, \"*\", start);\n break;\n\n case \"/\":\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n\n token.set(ETokenType.DIV_ASSIGN, \"/=\", start);\n break;\n }\n\n token.set(ETokenType.SLASH, \"/\", start);\n break;\n\n case \"%\":\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n\n token.set(ETokenType.MOD_ASSIGN, \"%=\", start);\n break;\n }\n\n token.set(ETokenType.PERCENT, \"%\", start);\n break;\n\n case \"(\":\n this._advance();\n\n token.set(ETokenType.LEFT_PAREN, \"(\", start);\n break;\n case \")\":\n this._advance();\n\n token.set(ETokenType.RIGHT_PAREN, \")\", start);\n break;\n case \"{\":\n this._advance();\n\n token.set(ETokenType.LEFT_BRACE, \"{\", start);\n break;\n case \"}\":\n this._advance();\n\n token.set(ETokenType.RIGHT_BRACE, \"}\", start);\n break;\n case \"[\":\n this._advance();\n\n token.set(ETokenType.LEFT_BRACKET, \"[\", start);\n break;\n case \"]\":\n this._advance();\n\n token.set(ETokenType.RIGHT_BRACKET, \"]\", start);\n break;\n case \".\":\n this._advance();\n if (LexerUtils.isNum(this.getCurCharCode())) {\n return this._scanNumAfterDot();\n }\n\n token.set(ETokenType.DOT, \".\", start);\n break;\n case \",\":\n this._advance();\n\n token.set(ETokenType.COMMA, \",\", start);\n break;\n case \":\":\n this._advance();\n\n token.set(ETokenType.COLON, \":\", start);\n return token;\n case \";\":\n this._advance();\n\n token.set(ETokenType.SEMICOLON, \";\", start);\n break;\n case \"~\":\n this._advance();\n\n token.set(ETokenType.TILDE, \"~\", start);\n break;\n case \"?\":\n this._advance();\n\n token.set(ETokenType.QUESTION, \"?\", start);\n break;\n case '\"':\n this._advance();\n return this._scanStringConst();\n\n default:\n this.throwError(this.getCurPosition(), `Unexpected character ${this.getCurChar()}`);\n }\n return token;\n }\n\n private _scanStringConst() {\n const start = this._getPosition();\n const buffer: string[] = [];\n while (this.getCurChar() !== '\"') {\n buffer.push(this.getCurChar());\n this._advance();\n }\n this._advance();\n const range = ShaderLab.createRange(start, this._getPosition());\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.STRING_CONST, buffer.join(\"\"), range);\n return token;\n }\n\n private _scanNumAfterDot() {\n const buffer = [\".\"];\n while (LexerUtils.isNum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this._getPosition(1));\n return token;\n }\n\n private _getPosition(offset /** offset from starting point */ = 0) {\n return ShaderLab.createPosition(\n this.current - offset,\n // #if _VERBOSE\n this._line,\n this._column - offset\n // #endif\n );\n }\n\n private _scanWord() {\n const buffer: string[] = [this.getCurChar()];\n const start = this._getPosition();\n this._advance();\n while (LexerUtils.isLetter(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n const word = buffer.join(\"\");\n const kt = KeywordTable.get(word);\n if (kt) {\n const token = BaseToken.pool.get();\n token.set(kt, word, start);\n return token;\n }\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.ID, word, start);\n return token;\n }\n\n private _scanNum() {\n const buffer: string[] = [];\n while (LexerUtils.isNum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n if (this.getCurChar() === \".\") {\n buffer.push(this.getCurChar());\n this._advance();\n while (LexerUtils.isNum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this._getPosition(buffer.length));\n return token;\n } else {\n if (this.getCurChar() === \"e\" || this.getCurChar() === \"E\") {\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this._getPosition(buffer.length));\n return token;\n } else {\n this._scanIntegerSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.INT_CONSTANT, buffer.join(\"\"), this._getPosition(buffer.length));\n return token;\n }\n }\n }\n\n private _scanFloatSuffix(buffer: string[]) {\n if (this.getCurChar() === \"e\" || this.getCurChar() === \"E\") {\n buffer.push(this.getCurChar());\n this._advance();\n if (this.getCurChar() === \"+\" || this.getCurChar() === \"-\") {\n buffer.push(this.getCurChar());\n this._advance();\n }\n if (!LexerUtils.isNum(this.getCurCharCode()))\n this.throwError(this.getCurPosition(), \"lexing error, invalid exponent suffix.\");\n while (LexerUtils.isNum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n }\n if (this.getCurChar() === \"f\" || this.getCurChar() === \"F\") {\n buffer.push(this.getCurChar());\n this._advance();\n }\n }\n\n private _scanIntegerSuffix(buffer: string[]) {\n if (this.getCurChar() === \"u\" || this.getCurChar() === \"U\") {\n buffer.push(this.getCurChar());\n this._advance();\n }\n }\n}\n","import { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\n\nexport type StateActionTable = Map<number /** state ID */, ActionTable>;\nexport type ActionTable = Map<Terminal, ActionInfo>;\nexport type StateGotoTable = Map<number /** state ID */, GotoTable>;\nexport type GotoTable = Map<NoneTerminal, number /** state ID */>;\n\nexport enum EAction {\n Shift = 0,\n Reduce,\n Accept\n}\n\nexport interface ActionInfo {\n action: EAction;\n target?: number;\n}\n","import { ASTNode } from \"./AST\";\nimport { TargetSymbolTable } from \"../parser/symbolTable\";\n\nexport class ShaderData {\n symbolTable: TargetSymbolTable;\n\n vertexMain: ASTNode.FunctionDefinition;\n fragmentMain: ASTNode.FunctionDefinition;\n\n globalPrecisions: ASTNode.PrecisionSpecifier[] = [];\n}\n","import { GalaceanDataType } from \"../../common\";\nimport { ASTNode } from \"../AST\";\n\nexport class SymbolDataType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n","import { IBaseSymbol } from \"../../common/BaseSymbolTable\";\nimport { GalaceanDataType } from \"../../common/types\";\nimport { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\n\nexport enum ESymbolType {\n VAR,\n FN,\n STRUCT\n}\n\nexport type SymbolAstNode =\n | ASTNode.Initializer\n | ASTNode.StructSpecifier\n | ASTNode.FunctionDefinition\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\nexport class SymbolInfo implements IBaseSymbol {\n constructor(\n public readonly ident: string,\n public readonly symbolType: ESymbolType,\n public readonly astNode?: SymbolAstNode,\n public readonly dataType?: SymbolDataType,\n public readonly signature?: GalaceanDataType[]\n ) {}\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class FnSymbol extends SymbolInfo {\n declare astNode: ASTNode.FunctionDefinition;\n\n constructor(lexeme: string, astNode: ASTNode.FunctionDefinition) {\n const type = new SymbolDataType(\n astNode.protoType.returnType.type,\n astNode.protoType.returnType.typeSpecifier.lexeme\n );\n super(lexeme, ESymbolType.FN, astNode, type);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class StructSymbol extends SymbolInfo {\n declare astNode: ASTNode.StructSpecifier;\n\n constructor(lexeme: string, astNode: ASTNode.StructSpecifier) {\n super(lexeme, ESymbolType.STRUCT, astNode);\n }\n}\n","import { Logger } from \"@galacean/engine\";\n\nexport interface IBaseSymbol {\n readonly ident: string;\n}\n\n/**\n * The base class of `SymbolTable`\n */\nexport abstract class BaseSymbolTable<T extends IBaseSymbol = IBaseSymbol> {\n protected _table: Map<string, T[]> = new Map();\n\n abstract insert(sm: T): void;\n}\n\nexport class SymbolTableStack<S extends IBaseSymbol, T extends BaseSymbolTable<S>> {\n stack: T[] = [];\n\n get _scope() {\n return this.stack[this.stack.length - 1];\n }\n\n newScope(scope: T) {\n this.stack.push(scope);\n }\n\n clear() {\n this.stack.length = 0;\n }\n\n dropScope() {\n this.stack.pop();\n }\n\n insert(sm: S) {\n this._scope.insert(sm);\n }\n}\n","import { Logger } from \"@galacean/engine\";\nimport { GalaceanDataType, TypeAny } from \"../../common\";\nimport { BaseSymbolTable } from \"../../common/BaseSymbolTable\";\nimport { ASTNode } from \"../AST\";\nimport { FnSymbol } from \"./FnSymbol\";\nimport { StructSymbol } from \"./StructSymbol\";\nimport { ESymbolType, SymbolAstNode, SymbolInfo } from \"./SymbolInfo\";\nimport { VarSymbol } from \"./VarSymbol\";\n\nexport class TargetSymbolTable extends BaseSymbolTable<SymbolInfo> {\n override insert(sm: SymbolInfo): void {\n const entry = this._table.get(sm.ident) ?? [];\n for (let i = 0; i < entry.length; i++) {\n if (this._compareWith(entry[i], sm.symbolType, sm.signature, sm.astNode)) {\n Logger.warn(\"replace symbol:\", sm.ident);\n entry[i] = sm;\n return;\n }\n }\n entry.push(sm);\n this._table.set(sm.ident, entry);\n }\n\n lookup<T extends ESymbolType>(\n ident: string,\n symbolType: T,\n signature?: GalaceanDataType[],\n astNode?: ASTNode.FunctionDefinition\n ): T extends ESymbolType.FN\n ? FnSymbol\n : T extends ESymbolType.STRUCT\n ? StructSymbol\n : T extends ESymbolType.VAR\n ? VarSymbol\n : SymbolInfo {\n const entry = this._table.get(ident);\n if (entry) {\n for (let length = entry.length, i = 0; i < length; i++) {\n const item = entry[i];\n if (this._compareWith(item, symbolType, signature, astNode)) return <any>item;\n }\n }\n }\n\n getAllFnSymbols(fnIdent: string): FnSymbol[] {\n const entries = this._table.get(fnIdent) ?? [];\n return entries.filter((item) => item.symbolType === ESymbolType.FN) as FnSymbol[];\n }\n\n private _compareWith(\n item: SymbolInfo,\n symbolType: ESymbolType,\n signature?: GalaceanDataType[],\n astNode?: SymbolAstNode\n ): boolean {\n if (item.symbolType !== symbolType) return false;\n if (item.symbolType === ESymbolType.FN) {\n if (!astNode && !signature) return true;\n\n const params = (<ASTNode.FunctionDefinition>item.astNode).protoType.paramSig;\n const comparedParams = signature ?? (<ASTNode.FunctionDefinition>astNode).protoType.paramSig;\n const length = params.length;\n if (length !== comparedParams.length) return false;\n for (let i = 0; i < length; i++) {\n const t1 = params[i],\n t2 = comparedParams[i];\n if (t1 === TypeAny || t2 === TypeAny) continue;\n if (t1 !== t2) return false;\n }\n return true;\n }\n return true;\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class VarSymbol extends SymbolInfo {\n declare astNode:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\n readonly isGlobalVariable: boolean;\n\n constructor(\n ident: string,\n dataType: SymbolDataType,\n isGlobalVariable: boolean,\n initAst:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration\n ) {\n super(ident, ESymbolType.VAR, initAst, dataType);\n this.isGlobalVariable = isGlobalVariable;\n }\n}\n","import { ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { ESymbolType, SymbolInfo, TargetSymbolTable } from \"../parser/symbolTable\";\nimport { NodeChild } from \"./types\";\nimport { SymbolTableStack } from \"../common/BaseSymbolTable\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { NonGenericGalaceanType } from \"./builtin\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #else\nimport { Logger } from \"@galacean/engine\";\n// #endif\n\nexport type TranslationRule<T = any> = (sa: SemanticAnalyzer, ...tokens: NodeChild[]) => T;\n\n/**\n * @internal\n * The semantic analyzer of `ShaderLab` compiler.\n * - Build symbol table\n * - Static analysis\n */\nexport default class SemanticAnalyzer {\n semanticStack: TreeNode[] = [];\n acceptRule?: TranslationRule = undefined;\n symbolTableStack: SymbolTableStack<SymbolInfo, TargetSymbolTable> = new SymbolTableStack();\n curFunctionInfo: {\n header?: ASTNode.FunctionDeclarator;\n returnStatement?: ASTNode.JumpStatement;\n } = {};\n private _shaderData = new ShaderData();\n private _translationRuleTable: Map<number /** production id */, TranslationRule> = new Map();\n\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n get shaderData() {\n return this._shaderData;\n }\n\n constructor() {\n this.newScope();\n }\n\n reset() {\n this.semanticStack.length = 0;\n this._shaderData = new ShaderData();\n this.symbolTableStack.clear();\n this.newScope();\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n }\n\n newScope() {\n const scope = new TargetSymbolTable();\n this.symbolTableStack.newScope(scope);\n }\n\n dropScope() {\n return this.symbolTableStack.dropScope();\n }\n\n addTranslationRule(pid: number, rule: TranslationRule) {\n this._translationRuleTable.set(pid, rule);\n }\n\n getTranslationRule(pid: number) {\n return this._translationRuleTable.get(pid);\n }\n\n lookupSymbolBy(\n ident: string,\n symbolType: ESymbolType,\n signature?: NonGenericGalaceanType[],\n astNode?: ASTNode.FunctionDefinition\n ): SymbolInfo | undefined {\n const stack = this.symbolTableStack.stack;\n for (let length = stack.length, i = length - 1; i >= 0; i--) {\n const symbolTable = stack[i];\n const ret = symbolTable.lookup(ident, symbolType, signature, astNode);\n if (ret) return ret;\n }\n }\n\n reportError(loc: ShaderRange, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { TokenType } from \"../common\";\n\nexport type Terminal = TokenType;\n\nexport enum NoneTerminal {\n START = 2000,\n // galacean\n gs_shader_program,\n\n // glsl\n global_declaration,\n variable_declaration,\n variable_declaration_list,\n variable_declaration_statement,\n array_specifier_list,\n array_specifier,\n ext_builtin_type_specifier_nonarray,\n precision_specifier,\n variable_identifier,\n variable_identifier_node,\n primary_expression,\n postfix_expression,\n integer_expression,\n function_call,\n function_call_generic,\n function_call_header_no_parameters,\n function_call_header_with_parameters,\n function_call_parameter_list,\n function_call_header,\n function_identifier,\n constructor_identifier,\n unary_expression,\n unary_operator,\n multiplicative_expression,\n additive_expression,\n shift_expression,\n relational_expression,\n equality_expression,\n and_expression,\n inclusive_or_expression,\n exclusive_or_expression,\n logical_and_expression,\n logical_xor_expression,\n logical_or_expression,\n conditional_expression,\n assignment_expression,\n assignment_operator,\n expression,\n integer_constant_expression,\n integer_constant_expression_operator,\n declaration,\n function_prototype,\n function_declarator,\n function_header_with_parameters,\n function_header,\n function_parameter_list,\n parameter_declarator,\n parameter_declaration,\n parameter_qualifier,\n parameter_type_specifier,\n init_declarator_list,\n single_declaration,\n fully_specified_type,\n type_qualifier,\n single_type_qualifier,\n storage_qualifier,\n precision_qualifier,\n interpolation_qualifier,\n invariant_qualifier,\n type_specifier,\n type_specifier_nonarray,\n type_specifier_no_prec,\n basic_type,\n struct_specifier,\n struct_declaration_list,\n struct_declaration,\n layout_qualifier,\n struct_declarator_list,\n struct_declarator,\n identifier_list,\n decl_identifier,\n initializer,\n initializer_list,\n declaration_statement,\n simple_statement,\n compound_statement_no_scope,\n statement_with_scope,\n compound_statement,\n statement,\n statement_list,\n iteration_statement_no_new_scope,\n expression_statement,\n selection_statement,\n selection_rest_statement,\n condition,\n conditionopt,\n iteration_statement,\n for_init_statement,\n for_rest_statement,\n jump_statement,\n external_declaration,\n function_definition,\n field_selection,\n bool_constant,\n function_identifier_node,\n typename_identifier_node,\n scope_brace,\n scope_end_brace,\n\n _ignore\n}\n\nexport type GrammarSymbol = Terminal | NoneTerminal;\n\nexport type Derivation = GrammarSymbol[];\n","import { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport Production from \"../lalr/Production\";\n\nexport class Grammar {\n readonly productions: Production[];\n\n readonly startSymbol: NoneTerminal;\n\n static create(start: NoneTerminal, productions: GrammarSymbol[][]) {\n const _ps = productions.map((gsl) => {\n return new Production(<NoneTerminal>gsl[0], gsl.slice(1));\n });\n return new Grammar(start, _ps);\n }\n\n constructor(start: NoneTerminal, productions: Production[]) {\n this.startSymbol = start;\n productions.unshift(new Production(NoneTerminal.START, [start]));\n this.productions = productions;\n }\n\n getProductionList(nonTerminal: NoneTerminal) {\n return this.productions.filter((item) => item.goal === nonTerminal);\n }\n\n isNullableNT(NT: NoneTerminal) {\n return this.productions.find((item) => item.goal === NT && item.derivation[0] === ETokenType.EPSILON);\n }\n\n getProductionByID(pid: number) {\n return Production.pool.get(pid);\n }\n}\n","import { NoneTerminal } from \"./GrammarSymbol\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GalaceanDataType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"./AST\";\n\nexport type TraceStackItem = NoneTerminal | BaseToken;\n\nexport class SymbolType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n\nexport class StructProp implements IParamInfo {\n constructor(\n public typeInfo: SymbolType,\n public ident: BaseToken,\n public mrtIndex?: number\n ) {}\n}\n\nexport type NodeChild = TreeNode | BaseToken;\n\nexport type IParamInfo = { ident: BaseToken; typeInfo: SymbolType; astNode?: TreeNode };\n","// #if _VERBOSE\nimport { BuiltinFunction, BuiltinVariable, NonGenericGalaceanType } from \"./builtin\";\n// #endif\nimport { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\nimport { CodeGenVisitor } from \"../codeGen\";\nimport { EKeyword, ETokenType, GalaceanDataType, ShaderRange, TokenType, TypeAny } from \"../common\";\nimport { BaseToken, BaseToken as Token } from \"../common/BaseToken\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { NoneTerminal } from \"./GrammarSymbol\";\nimport SemanticAnalyzer from \"./SemanticAnalyzer\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, VarSymbol } from \"./symbolTable\";\nimport { IParamInfo, NodeChild, StructProp, SymbolType } from \"./types\";\n\nfunction ASTNodeDecorator(nonTerminal: NoneTerminal) {\n return function <T extends { new (): TreeNode }>(ASTNode: T) {\n ASTNode.prototype.nt = nonTerminal;\n (<any>ASTNode).pool = ShaderLabUtils.createObjectPool(ASTNode);\n };\n}\n\nexport abstract class TreeNode implements IPoolElement {\n static pool: ClearableObjectPool<TreeNode & { set: (loc: ShaderRange, children: NodeChild[]) => void }>;\n\n /** The non-terminal in grammar. */\n nt: NoneTerminal;\n private _children: NodeChild[];\n private _location: ShaderRange;\n\n get children() {\n return this._children;\n }\n\n get location() {\n return this._location;\n }\n\n set(loc: ShaderRange, children: NodeChild[]): void {\n this._location = loc;\n this._children = children;\n this.init();\n }\n\n init() {}\n\n dispose(): void {}\n\n // Visitor pattern interface for code generation\n codeGen(visitor: CodeGenVisitor) {\n return visitor.defaultCodeGen(this.children);\n }\n\n /**\n * Do semantic analyze right after the ast node is generated.\n */\n semanticAnalyze(sa: SemanticAnalyzer) {}\n}\n\nexport namespace ASTNode {\n export type ASTNodePool = ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >;\n\n export function _unwrapToken(node: NodeChild) {\n if (node instanceof Token) {\n return node;\n }\n throw \"not token\";\n }\n\n export function get(pool: ASTNodePool, sa: SemanticAnalyzer, loc: ShaderRange, children: NodeChild[]) {\n const node = pool.get();\n node.set(loc, children);\n node.semanticAnalyze(sa);\n sa.semanticStack.push(node);\n }\n\n @ASTNodeDecorator(NoneTerminal._ignore)\n export class TrivialNode extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.scope_brace)\n export class ScopeBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.newScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.scope_end_brace)\n export class ScopeEndBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.dropScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.jump_statement)\n export class JumpStatement extends TreeNode {\n isFragReturnStatement: boolean;\n\n override init(): void {\n this.isFragReturnStatement = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (ASTNode._unwrapToken(this.children![0]).type === EKeyword.RETURN) {\n sa.curFunctionInfo.returnStatement = this;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitJumpStatement(this);\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.conditionopt)\n export class ConditionOpt extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_rest_statement)\n export class ForRestStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.condition)\n export class Condition extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_init_statement)\n export class ForInitStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.iteration_statement)\n export class IterationStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.selection_statement)\n export class SelectionStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.expression_statement)\n export class ExpressionStatement extends TreeNode {}\n // #endif\n\n export abstract class ExpressionAstNode extends TreeNode {\n protected _type?: GalaceanDataType;\n set type(t: GalaceanDataType | undefined) {\n this._type = t;\n }\n get type() {\n return this._type ?? TypeAny;\n }\n\n override init(): void {\n this._type = undefined;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.initializer_list)\n export class InitializerList extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const init = this.children[0] as Initializer | InitializerList;\n this.type = init.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.initializer)\n export class Initializer extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AssignmentExpression>this.children[0]).type;\n } else {\n this.type = (<InitializerList>this.children[1]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.single_declaration)\n export class SingleDeclaration extends TreeNode {\n typeSpecifier: TypeSpecifier;\n arraySpecifier?: ArraySpecifier;\n\n override init(): void {\n this.typeSpecifier = undefined;\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLen = children.length;\n const fullyType = children[0] as FullySpecifiedType;\n const typeSpecifier = fullyType.typeSpecifier;\n this.typeSpecifier = typeSpecifier;\n this.arraySpecifier = typeSpecifier.arraySpecifier;\n\n const id = children[1] as Token;\n\n let sm: VarSymbol;\n if (childrenLen === 2 || childrenLen === 4) {\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[3] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n } else {\n const arraySpecifier = children[2] as ArraySpecifier;\n // #if _VERBOSE\n if (arraySpecifier && this.arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n this.arraySpecifier = arraySpecifier;\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[4] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n }\n sa.symbolTableStack.insert(sm);\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitSingleDeclaration(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.fully_specified_type)\n export class FullySpecifiedType extends TreeNode {\n typeSpecifier: TypeSpecifier;\n type: GalaceanDataType;\n\n override semanticAnalyze(_: SemanticAnalyzer): void {\n const children = this.children;\n this.typeSpecifier = (children.length === 1 ? children[0] : children[1]) as TypeSpecifier;\n this.type = this.typeSpecifier.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_qualifier)\n export class TypeQualifier extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.single_type_qualifier)\n export class SingleTypeQualifier extends TreeNode {\n qualifier: EKeyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n if (child instanceof Token) {\n this.qualifier = child.type as EKeyword;\n this.lexeme = child.lexeme;\n } else {\n this.qualifier = (<BasicTypeQualifier>child).qualifier;\n this.lexeme = (<BasicTypeQualifier>child).lexeme;\n }\n }\n }\n\n abstract class BasicTypeQualifier extends TreeNode {\n qualifier: EKeyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const token = this.children[0] as Token;\n this.qualifier = token.type as EKeyword;\n this.lexeme = token.lexeme;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.storage_qualifier)\n export class StorageQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.precision_qualifier)\n export class PrecisionQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.interpolation_qualifier)\n export class InterpolationQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.invariant_qualifier)\n export class InvariantQualifier extends BasicTypeQualifier {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.type_specifier)\n export class TypeSpecifier extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n arraySize?: number;\n isCustom: boolean;\n\n override init(): void {\n this.arraySize = undefined;\n }\n get arraySpecifier(): ArraySpecifier {\n return this.children[1] as ArraySpecifier;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const firstChild = children[0] as TypeSpecifierNonArray;\n this.type = firstChild.type;\n this.lexeme = firstChild.lexeme;\n this.arraySize = (children?.[1] as ArraySpecifier)?.size;\n this.isCustom = typeof this.type === \"string\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.array_specifier)\n export class ArraySpecifier extends TreeNode {\n size: number | undefined;\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const integerConstantExpr = this.children[1] as IntegerConstantExpression;\n this.size = integerConstantExpr.value;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression_operator)\n export class IntegerConstantExpressionOperator extends TreeNode {\n compute: (a: number, b: number) => number;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const operator = this.children[0] as Token;\n this.lexeme = operator.lexeme;\n switch (operator.type) {\n case ETokenType.PLUS:\n this.compute = (a, b) => a + b;\n break;\n case ETokenType.DASH:\n this.compute = (a, b) => a - b;\n break;\n case ETokenType.STAR:\n this.compute = (a, b) => a * b;\n break;\n case ETokenType.SLASH:\n this.compute = (a, b) => a / b;\n break;\n case ETokenType.PERCENT:\n this.compute = (a, b) => a % b;\n break;\n default:\n sa.reportError(operator.location, `not implemented operator ${operator.lexeme}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression)\n export class IntegerConstantExpression extends TreeNode {\n value?: number;\n\n override init(): void {\n this.value = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const child = this.children[0];\n if (child instanceof Token) {\n this.value = Number(child.lexeme);\n }\n // #if _VERBOSE\n else {\n const id = child as VariableIdentifier;\n if (!id.symbolInfo) {\n sa.reportError(id.location, `Undeclared symbol: ${id.lexeme}`);\n }\n if (!ParserUtils.typeCompatible(EKeyword.INT, id.typeInfo)) {\n sa.reportError(id.location, \"Invalid integer.\");\n return;\n }\n }\n // #endif\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_specifier_nonarray)\n export class TypeSpecifierNonArray extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n\n override init(): void {\n const tt = this.children[0];\n if (tt instanceof Token) {\n this.type = tt.lexeme;\n this.lexeme = tt.lexeme;\n } else {\n this.type = (tt as ExtBuiltinTypeSpecifierNonArray).type as GalaceanDataType;\n this.lexeme = (tt as ExtBuiltinTypeSpecifierNonArray).lexeme;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.ext_builtin_type_specifier_nonarray)\n export class ExtBuiltinTypeSpecifierNonArray extends TreeNode {\n type: TokenType;\n lexeme: string;\n\n override init(): void {\n const token = this.children[0] as Token;\n this.type = token.type;\n this.lexeme = token.lexeme;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.init_declarator_list)\n export class InitDeclaratorList extends TreeNode {\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n let sm: VarSymbol;\n const children = this.children;\n const childrenLength = children.length;\n if (childrenLength === 1) {\n const { typeSpecifier, arraySpecifier } = children[0] as SingleDeclaration;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n } else {\n const initDeclList = children[0] as InitDeclaratorList;\n this.typeInfo = initDeclList.typeInfo;\n }\n\n if (childrenLength === 3 || childrenLength === 5) {\n const id = children[2] as Token;\n sm = new VarSymbol(id.lexeme, this.typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n } else if (childrenLength === 4 || childrenLength === 6) {\n const typeInfo = this.typeInfo;\n const arraySpecifier = this.children[3] as ArraySpecifier;\n // #if _VERBOSE\n if (typeInfo.arraySpecifier && arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n typeInfo.arraySpecifier = arraySpecifier;\n const id = children[2] as Token;\n sm = new VarSymbol(id.lexeme, typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.identifier_list)\n export class IdentifierList extends TreeNode {\n idList: Token[] = [];\n\n override init(): void {\n this.idList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, idList: curIdList } = this;\n if (children.length === 2) {\n curIdList.push(children[1] as Token);\n } else {\n const list = children[0] as IdentifierList;\n const id = children[2] as Token;\n const listIdLength = list.idList.length;\n curIdList.length = listIdLength + 1;\n\n for (let i = 0; i < listIdLength; i++) {\n curIdList[i] = list.idList[i];\n }\n curIdList[listIdLength] = id;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.declaration)\n export class Declaration extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitDeclaration(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_prototype)\n export class FunctionProtoType extends TreeNode {\n ident: Token;\n returnType: FullySpecifiedType;\n parameterList: IParamInfo[];\n paramSig: GalaceanDataType[];\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const declarator = this.children[0] as FunctionDeclarator;\n this.ident = declarator.ident;\n this.returnType = declarator.returnType;\n this.parameterList = declarator.parameterInfoList;\n this.paramSig = declarator.paramSig;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionProtoType(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_declarator)\n export class FunctionDeclarator extends TreeNode {\n ident: Token;\n returnType: FullySpecifiedType;\n parameterInfoList: IParamInfo[] | undefined;\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.curFunctionInfo.returnStatement = null;\n sa.curFunctionInfo.header = this;\n\n const children = this.children;\n const header = children[0] as FunctionHeader;\n const parameterList = children[1] as FunctionParameterList | undefined;\n this.ident = header.ident;\n this.returnType = header.returnType;\n this.parameterInfoList = parameterList?.parameterInfoList;\n this.paramSig = parameterList?.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_header)\n export class FunctionHeader extends TreeNode {\n ident: Token;\n returnType: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.newScope();\n const children = this.children;\n this.ident = children[1] as Token;\n this.returnType = children[0] as FullySpecifiedType;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionHeader(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_parameter_list)\n export class FunctionParameterList extends TreeNode {\n parameterInfoList: IParamInfo[] = [];\n paramSig: GalaceanDataType[] = [];\n\n override init(): void {\n this.parameterInfoList.length = 0;\n this.paramSig.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLength = children.length;\n const { parameterInfoList, paramSig } = this;\n if (childrenLength === 1) {\n const decl = children[0] as ParameterDeclaration;\n parameterInfoList.push({ ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl });\n paramSig.push(decl.typeInfo.type);\n } else {\n const list = children[0] as FunctionParameterList;\n const decl = children[2] as ParameterDeclaration;\n const listParamLength = list.parameterInfoList.length;\n parameterInfoList.length = listParamLength + 1;\n paramSig.length = listParamLength + 1;\n\n for (let i = 0; i < listParamLength; i++) {\n parameterInfoList[i] = list.parameterInfoList[i];\n paramSig[i] = list.paramSig[i];\n }\n parameterInfoList[listParamLength] = { ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl };\n paramSig[listParamLength] = decl.typeInfo.type;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionParameterList(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declaration)\n export class ParameterDeclaration extends TreeNode {\n typeQualifier: TypeQualifier | undefined;\n typeInfo: SymbolType;\n ident: Token;\n\n override init(): void {\n this.typeQualifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLength = children.length;\n let parameterDeclarator: ParameterDeclarator;\n if (childrenLength === 1) {\n parameterDeclarator = children[0] as ParameterDeclarator;\n } else {\n parameterDeclarator = children[1] as ParameterDeclarator;\n }\n if (childrenLength === 2) {\n this.typeQualifier = children[0] as TypeQualifier;\n }\n this.typeInfo = parameterDeclarator.typeInfo;\n this.ident = parameterDeclarator.ident;\n\n const varSymbol = new VarSymbol(parameterDeclarator.ident.lexeme, parameterDeclarator.typeInfo, false, this);\n sa.symbolTableStack.insert(varSymbol);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declarator)\n export class ParameterDeclarator extends TreeNode {\n ident: Token;\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[1] as Token;\n const typeSpecifier = children[0] as TypeSpecifier;\n const arraySpecifier = children[2] as ArraySpecifier;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.simple_statement)\n export class SimpleStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.compound_statement)\n export class CompoundStatement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.compound_statement_no_scope)\n export class CompoundStatementNoScope extends TreeNode {}\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.statement)\n export class Statement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.statement_list)\n export class StatementList extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitStatementList(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_definition)\n export class FunctionDefinition extends TreeNode {\n returnStatement?: ASTNode.JumpStatement;\n protoType: FunctionProtoType;\n statements: CompoundStatementNoScope;\n\n override init(): void {\n this.returnStatement = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.protoType = children[0] as FunctionProtoType;\n this.statements = children[1] as CompoundStatementNoScope;\n\n sa.dropScope();\n const sm = new FnSymbol(this.protoType.ident.lexeme, this);\n sa.symbolTableStack.insert(sm);\n\n const { curFunctionInfo } = sa;\n const { header, returnStatement } = curFunctionInfo;\n if (header.returnType.type === EKeyword.VOID) {\n if (returnStatement) {\n sa.reportError(header.returnType.location, \"Return in void function.\");\n }\n } else {\n if (!returnStatement) {\n sa.reportError(header.returnType.location, `No return statement found.`);\n } else {\n this.returnStatement = returnStatement;\n }\n }\n curFunctionInfo.header = undefined;\n curFunctionInfo.returnStatement = undefined;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionDefinition(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call)\n export class FunctionCall extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.type = (this.children[0] as FunctionCallGeneric).type;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionCall(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_generic)\n export class FunctionCallGeneric extends ExpressionAstNode {\n fnSymbol: FnSymbol | StructSymbol | undefined;\n\n override init(): void {\n super.init();\n this.fnSymbol = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const functionIdentifier = this.children[0] as FunctionIdentifier;\n if (functionIdentifier.isBuiltin) {\n this.type = functionIdentifier.ident;\n } else {\n const fnIdent = <string>functionIdentifier.ident;\n\n let paramSig: NonGenericGalaceanType[] | undefined;\n if (this.children.length === 4) {\n const paramList = this.children[2];\n if (paramList instanceof FunctionCallParameterList) {\n paramSig = paramList.paramSig as any;\n }\n }\n // #if _VERBOSE\n const builtinFn = BuiltinFunction.getFn(fnIdent, paramSig);\n if (builtinFn) {\n this.type = builtinFn.realReturnType;\n return;\n }\n // #endif\n\n const fnSymbol = sa.lookupSymbolBy(fnIdent, ESymbolType.FN, paramSig);\n if (!fnSymbol) {\n // #if _VERBOSE\n sa.reportError(this.location, `No overload function type found: ${functionIdentifier.ident}`);\n // #endif\n return;\n }\n this.type = fnSymbol?.dataType?.type;\n this.fnSymbol = fnSymbol as FnSymbol;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_parameter_list)\n export class FunctionCallParameterList extends TreeNode {\n paramSig: GalaceanDataType[] = [];\n paramNodes: AssignmentExpression[] = [];\n\n override init(): void {\n this.paramSig.length = 0;\n this.paramNodes.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, paramSig, paramNodes } = this;\n if (children.length === 1) {\n const expr = children[0] as AssignmentExpression;\n if (expr.type == undefined) {\n paramSig.push(TypeAny);\n } else {\n paramSig.push(expr.type);\n }\n\n this.paramNodes.push(expr);\n } else {\n const list = children[0] as FunctionCallParameterList;\n const decl = children[2] as AssignmentExpression;\n if (list.paramSig.length === 0 || decl.type == undefined) {\n this.paramSig.push(TypeAny);\n } else {\n const listParamLength = list.paramSig.length;\n paramSig.length = listParamLength + 1;\n paramNodes.length = listParamLength + 1;\n\n for (let i = 0; i < listParamLength; i++) {\n paramSig[i] = list.paramSig[i];\n paramNodes[i] = list.paramNodes[i];\n }\n paramSig[listParamLength] = decl.type;\n paramNodes[listParamLength] = decl;\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.precision_specifier)\n export class PrecisionSpecifier extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.shaderData.globalPrecisions.push(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_identifier)\n export class FunctionIdentifier extends TreeNode {\n ident: GalaceanDataType;\n lexeme: string;\n isBuiltin: boolean;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const typeSpecifier = this.children[0] as TypeSpecifier;\n this.ident = typeSpecifier.type;\n this.lexeme = typeSpecifier.lexeme;\n this.isBuiltin = typeof this.ident !== \"string\";\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionIdentifier(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.assignment_expression)\n export class AssignmentExpression extends ExpressionAstNode {\n // #if _VERBOSE\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as ConditionalExpression;\n this.type = expr.type ?? TypeAny;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type ?? TypeAny;\n }\n }\n // #endif\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.assignment_operator)\n export class AssignmentOperator extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.expression)\n export class Expression extends ExpressionAstNode {\n // #if _VERBOSE\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as AssignmentExpression;\n this.type = expr.type;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type;\n }\n }\n // #endif\n }\n\n @ASTNodeDecorator(NoneTerminal.primary_expression)\n export class PrimaryExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const id = this.children[0];\n if (id instanceof VariableIdentifier) {\n this.type = id.typeInfo ?? TypeAny;\n } else {\n switch ((<Token>id).type) {\n case ETokenType.INT_CONSTANT:\n this._type = EKeyword.INT;\n break;\n case ETokenType.FLOAT_CONSTANT:\n this.type = EKeyword.FLOAT;\n break;\n case EKeyword.TRUE:\n case EKeyword.FALSE:\n this.type = EKeyword.BOOL;\n break;\n }\n }\n } else {\n const expression = this.children[1] as Expression;\n this.type = expression.type;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.postfix_expression)\n export class PostfixExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n const child = this.children[0] as PrimaryExpression | FunctionCall;\n this.type = child.type;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitPostfixExpression(this);\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.unary_operator)\n export class UnaryOperator extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.unary_expression)\n export class UnaryExpression extends ExpressionAstNode {\n override init(): void {\n this.type = (this.children[0] as PostfixExpression).type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.multiplicative_expression)\n export class MultiplicativeExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as UnaryExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as MultiplicativeExpression;\n // const exp2 = this.children[2] as UnaryExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.additive_expression)\n export class AdditiveExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as MultiplicativeExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as AdditiveExpression;\n // const exp2 = this.children[2] as MultiplicativeExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.shift_expression)\n export class ShiftExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const expr = this.children[0] as ExpressionAstNode;\n this.type = expr.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.relational_expression)\n export class RelationalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ShiftExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.equality_expression)\n export class EqualityExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<RelationalExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.and_expression)\n export class AndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.exclusive_or_expression)\n export class ExclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.inclusive_or_expression)\n export class InclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ExclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_and_expression)\n export class LogicalAndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<InclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_xor_expression)\n export class LogicalXorExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalAndExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_or_expression)\n export class LogicalOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalXorExpression>this.children[0]).type;\n } else {\n this.type = EKeyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.conditional_expression)\n export class ConditionalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalOrExpression>this.children[0]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.struct_specifier)\n export class StructSpecifier extends TreeNode {\n ident?: Token;\n propList: StructProp[];\n\n override init(): void {\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n if (children.length === 6) {\n this.ident = children[1] as Token;\n sa.symbolTableStack.insert(new StructSymbol(this.ident.lexeme, this));\n\n this.propList = (children[3] as StructDeclarationList).propList;\n } else {\n this.propList = (children[2] as StructDeclarationList).propList;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration_list)\n export class StructDeclarationList extends TreeNode {\n propList: StructProp[] = [];\n\n override init(): void {\n this.propList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, propList } = this;\n\n if (children.length === 1) {\n const props = (children[0] as StructDeclaration).props;\n const propsLength = props.length;\n propList.length = propsLength;\n for (let i = 0; i < propsLength; i++) {\n propList[i] = props[i];\n }\n } else {\n const listProps = (children[0] as StructDeclarationList).propList;\n const declProps = (children[1] as StructDeclaration).props;\n const listPropLength = listProps.length;\n const declPropLength = declProps.length;\n propList.length = listPropLength + declPropLength;\n\n for (let i = 0; i < listPropLength; i++) {\n propList[i] = listProps[i];\n }\n for (let i = 0; i < declPropLength; i++) {\n propList[i + listPropLength] = declProps[i];\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration)\n export class StructDeclaration extends TreeNode {\n typeSpecifier: TypeSpecifier;\n declaratorList: StructDeclaratorList;\n props: StructProp[] = [];\n\n override init(): void {\n this.typeSpecifier = undefined;\n this.declaratorList = undefined;\n this.props.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, props } = this;\n if (children.length === 3) {\n this.typeSpecifier = children[0] as TypeSpecifier;\n this.declaratorList = children[1] as StructDeclaratorList;\n } else {\n this.typeSpecifier = children[1] as TypeSpecifier;\n this.declaratorList = children[2] as StructDeclaratorList;\n }\n\n const firstChild = children[0];\n const { type, lexeme } = this.typeSpecifier;\n if (firstChild instanceof LayoutQualifier) {\n const declarator = children[2] as StructDeclarator;\n const typeInfo = new SymbolType(type, lexeme);\n const prop = new StructProp(typeInfo, declarator.ident, firstChild.index);\n props.push(prop);\n } else {\n const declaratorList = this.declaratorList.declaratorList;\n const declaratorListLength = declaratorList.length;\n props.length = declaratorListLength;\n for (let i = 0; i < declaratorListLength; i++) {\n const declarator = declaratorList[i];\n const typeInfo = new SymbolType(type, lexeme, declarator.arraySpecifier);\n const prop = new StructProp(typeInfo, declarator.ident);\n props[i] = prop;\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.layout_qualifier)\n export class LayoutQualifier extends TreeNode {\n index: number;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.index = Number((<BaseToken>this.children[4]).lexeme);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator_list)\n export class StructDeclaratorList extends TreeNode {\n declaratorList: StructDeclarator[] = [];\n\n override init(): void {\n this.declaratorList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, declaratorList } = this;\n if (children.length === 1) {\n declaratorList.push(children[0] as StructDeclarator);\n } else {\n const list = children[0] as StructDeclaratorList;\n const declarator = children[1] as StructDeclarator;\n const listLength = list.declaratorList.length;\n declaratorList.length = listLength + 1;\n for (let i = 0; i < listLength; i++) {\n declaratorList[i] = list.declaratorList[i];\n }\n declaratorList[listLength] = declarator;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator)\n export class StructDeclarator extends TreeNode {\n ident: Token;\n arraySpecifier: ArraySpecifier | undefined;\n\n override init(): void {\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[0] as Token;\n this.arraySpecifier = children[1] as ArraySpecifier;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration)\n export class VariableDeclaration extends TreeNode {\n type: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const type = children[0] as FullySpecifiedType;\n const ident = children[1] as Token;\n this.type = type;\n const sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);\n\n sa.symbolTableStack.insert(sm);\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitGlobalVariableDeclaration(this) + \";\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration_list)\n export class VariableDeclarationList extends TreeNode {\n type: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children } = this;\n const length = children.length;\n const variableDeclaration = children[0] as VariableDeclaration;\n const type = variableDeclaration.type;\n this.type = type;\n\n if (length === 1) {\n return;\n }\n\n const ident = children[2] as Token;\n\n const newVariable = VariableDeclaration.pool.get();\n if (length === 3) {\n // variable_declaration_list ',' id\n newVariable.set(ident.location, [type, ident]);\n } else {\n // variable_declaration_list ',' id array_specifier\n newVariable.set(ident.location, [type, ident, children[3] as ArraySpecifier]);\n }\n newVariable.semanticAnalyze(sa);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_identifier)\n export class VariableIdentifier extends TreeNode {\n symbolInfo:\n | VarSymbol\n // #if _VERBOSE\n | BuiltinVariable\n // #endif\n | null;\n\n lexeme: string;\n typeInfo: GalaceanDataType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const token = this.children[0] as Token;\n this.lexeme = token.lexeme;\n\n // #if _VERBOSE\n const builtinVar = BuiltinVariable.getVar(token.lexeme);\n if (builtinVar) {\n this.symbolInfo = builtinVar;\n this.typeInfo = builtinVar.type;\n return;\n }\n // #endif\n\n this.symbolInfo = sa.lookupSymbolBy(token.lexeme, ESymbolType.VAR) as VarSymbol;\n // #if _VERBOSE\n if (!this.symbolInfo) {\n sa.reportError(this.location, `undeclared identifier: ${token.lexeme}`);\n }\n // #endif\n this.typeInfo = this.symbolInfo?.dataType?.type;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitVariableIdentifier(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.gs_shader_program)\n export class GLShaderProgram extends TreeNode {\n shaderData: ShaderData;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.shaderData = sa.shaderData;\n this.shaderData.symbolTable = sa.symbolTableStack._scope;\n }\n }\n}\n","import { EKeyword, ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\nimport { NodeChild } from \"../parser/types\";\n\nexport default class GrammarUtils {\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? EKeyword[sm];\n }\n return NoneTerminal[sm];\n }\n\n static createProductionWithOptions(\n goal: NoneTerminal,\n options: GrammarSymbol[][],\n /** the ast node */\n astTypePool?: ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >\n ) {\n const ret: [GrammarSymbol[], TranslationRule | undefined][] = [];\n for (const opt of options) {\n ret.push([\n [goal, ...opt],\n function (sa, ...children) {\n if (!children[0]) return;\n const start = children[0].location.start;\n const end = children[children.length - 1].location.end;\n const location = ShaderLab.createRange(start, end);\n ASTNode.get(astTypePool ?? ASTNode.TrivialNode.pool, sa, location, children);\n }\n ]);\n }\n return ret;\n }\n\n static addMapSetItem<K, T>(map: Map<K, Set<T>>, k: K, v: T) {\n const set = map.get(k) ?? new Set();\n set.add(v);\n map.set(k, set);\n }\n\n static isSubSet<T>(sa: Set<T>, sb: Set<T>) {\n for (const item of sa) {\n if (!sb.has(item)) return false;\n }\n return true;\n }\n\n static isActionEqual(a: ActionInfo, b: ActionInfo) {\n return a.action === b.action && a.target === b.target;\n }\n\n // #if _VERBOSE\n static printAction(actionInfo: ActionInfo) {\n return `<Action: ${EAction[actionInfo.action]} -> ${\n actionInfo.action === EAction.Reduce ? Production.pool.get(actionInfo.target!) : `State ${actionInfo.target!}`\n }>`;\n }\n\n static printProduction(production: Production) {\n const deriv = production.derivation.map((gs) => GrammarUtils.toString(gs)).join(\"|\");\n return `${NoneTerminal[production.goal]} :=> ${deriv}`;\n }\n // #endif\n}\n","// Context Free Grammar of Galacean ShaderLab\n\nimport { Grammar } from \"../parser/Grammar\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport GrammarUtils from \"./Utils\";\nimport { EKeyword, ETokenType } from \"../common\";\nimport SemanticAnalyzer, { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { ASTNode } from \"../parser/AST\";\n\nconst productionAndRules: [GrammarSymbol[], TranslationRule | undefined][] = [\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.gs_shader_program,\n [[NoneTerminal.global_declaration], [NoneTerminal.gs_shader_program, NoneTerminal.global_declaration]],\n ASTNode.GLShaderProgram.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(NoneTerminal.global_declaration, [\n [NoneTerminal.precision_specifier],\n [NoneTerminal.variable_declaration_statement],\n [NoneTerminal.struct_specifier],\n [NoneTerminal.function_definition]\n ]),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.VariableDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration_list,\n [\n [NoneTerminal.variable_declaration],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.VariableDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_statement, [\n [NoneTerminal.variable_declaration_list, ETokenType.SEMICOLON]\n ]),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n [\n [EKeyword.VOID],\n [EKeyword.FLOAT],\n [EKeyword.BOOL],\n [EKeyword.INT],\n [EKeyword.UINT],\n [EKeyword.VEC2],\n [EKeyword.VEC3],\n [EKeyword.VEC4],\n [EKeyword.BVEC2],\n [EKeyword.BVEC3],\n [EKeyword.BVEC4],\n [EKeyword.IVEC2],\n [EKeyword.IVEC3],\n [EKeyword.IVEC4],\n [EKeyword.UVEC2],\n [EKeyword.UVEC3],\n [EKeyword.UVEC4],\n [EKeyword.MAT2],\n [EKeyword.MAT3],\n [EKeyword.MAT4],\n [EKeyword.MAT2X3],\n [EKeyword.MAT2X4],\n [EKeyword.MAT3X2],\n [EKeyword.MAT3X4],\n [EKeyword.MAT4X2],\n [EKeyword.MAT4X3],\n [EKeyword.SAMPLER2D],\n [EKeyword.SAMPLER3D],\n [EKeyword.SAMPLER_CUBE],\n [EKeyword.SAMPLER2D_SHADOW],\n [EKeyword.SAMPLER_CUBE_SHADOW],\n [EKeyword.SAMPLER2D_ARRAY],\n [EKeyword.SAMPLER2D_ARRAY_SHADOW],\n [EKeyword.I_SAMPLER2D],\n [EKeyword.I_SAMPLER3D],\n [EKeyword.I_SAMPLER_CUBE],\n [EKeyword.I_SAMPLER2D_ARRAY],\n [EKeyword.U_SAMPLER2D],\n [EKeyword.U_SAMPLER3D],\n [EKeyword.U_SAMPLER_CUBE],\n [EKeyword.U_SAMPLER2D_ARRAY]\n ],\n ASTNode.ExtBuiltinTypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier_nonarray,\n [[ETokenType.ID], [NoneTerminal.ext_builtin_type_specifier_nonarray]],\n ASTNode.TypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.fully_specified_type,\n [[NoneTerminal.type_specifier], [NoneTerminal.type_qualifier, NoneTerminal.type_specifier]],\n ASTNode.FullySpecifiedType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier,\n [\n [NoneTerminal.type_specifier_nonarray],\n [NoneTerminal.ext_builtin_type_specifier_nonarray, NoneTerminal.array_specifier]\n ],\n ASTNode.TypeSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_qualifier,\n [[NoneTerminal.single_type_qualifier], [NoneTerminal.type_qualifier, NoneTerminal.single_type_qualifier]],\n ASTNode.TypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_type_qualifier,\n [\n [NoneTerminal.storage_qualifier],\n [NoneTerminal.precision_qualifier],\n [NoneTerminal.interpolation_qualifier],\n [NoneTerminal.invariant_qualifier],\n [EKeyword.PRECISE]\n ],\n ASTNode.SingleTypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.storage_qualifier,\n [[EKeyword.CONST], [EKeyword.IN], [EKeyword.INOUT], [EKeyword.OUT], [EKeyword.CENTROID]],\n // #if _VERBOSE\n ASTNode.StorageQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.interpolation_qualifier,\n [[EKeyword.SMOOTH], [EKeyword.FLAT]],\n // #if _VERBOSE\n ASTNode.InterpolationQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.invariant_qualifier,\n [[EKeyword.INVARIANT]],\n // #if _VERBOSE\n ASTNode.InvariantQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_qualifier,\n [[EKeyword.HIGHP], [EKeyword.MEDIUMP], [EKeyword.LOWP]],\n // #if _VERBOSE\n ASTNode.PrecisionQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_specifier,\n [\n [\n EKeyword.STRUCT,\n ETokenType.ID,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ],\n [\n EKeyword.STRUCT,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.StructSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration_list,\n [[NoneTerminal.struct_declaration], [NoneTerminal.struct_declaration_list, NoneTerminal.struct_declaration]],\n ASTNode.StructDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration,\n [\n [NoneTerminal.type_specifier, NoneTerminal.struct_declarator_list, ETokenType.SEMICOLON],\n [\n NoneTerminal.type_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator_list,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.layout_qualifier, NoneTerminal.type_specifier, NoneTerminal.struct_declarator, ETokenType.SEMICOLON]\n ],\n ASTNode.StructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.layout_qualifier,\n [\n [\n EKeyword.LAYOUT,\n ETokenType.LEFT_PAREN,\n EKeyword.LOCATION,\n ETokenType.EQUAL,\n ETokenType.INT_CONSTANT,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.LayoutQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator_list,\n [\n [NoneTerminal.struct_declarator],\n [NoneTerminal.struct_declarator_list, ETokenType.COMMA, NoneTerminal.struct_declarator]\n ],\n ASTNode.StructDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator,\n [[ETokenType.ID], [ETokenType.ID, NoneTerminal.array_specifier]],\n ASTNode.StructDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.array_specifier,\n [\n [ETokenType.LEFT_BRACKET, ETokenType.RIGHT_BRACKET],\n [ETokenType.LEFT_BRACKET, NoneTerminal.integer_constant_expression, ETokenType.RIGHT_BRACKET]\n ],\n ASTNode.ArraySpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.STAR], [ETokenType.SLASH], [ETokenType.PERCENT]],\n ASTNode.IntegerConstantExpressionOperator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n ETokenType.INT_CONSTANT\n ],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n NoneTerminal.variable_identifier\n ]\n ],\n ASTNode.IntegerConstantExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditional_expression,\n [\n [NoneTerminal.logical_or_expression],\n [\n NoneTerminal.logical_or_expression,\n ETokenType.QUESTION,\n NoneTerminal.expression,\n ETokenType.COLON,\n NoneTerminal.assignment_expression\n ]\n ],\n // #if _VERBOSE\n ASTNode.ConditionalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_or_expression,\n [\n [NoneTerminal.logical_xor_expression],\n [NoneTerminal.logical_or_expression, ETokenType.OR_OP, NoneTerminal.logical_xor_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_xor_expression,\n [\n [NoneTerminal.logical_and_expression],\n [NoneTerminal.logical_xor_expression, ETokenType.XOR_OP, NoneTerminal.logical_and_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalXorExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_and_expression,\n [\n [NoneTerminal.inclusive_or_expression],\n [NoneTerminal.logical_and_expression, ETokenType.AND_OP, NoneTerminal.inclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalAndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.inclusive_or_expression,\n [\n [NoneTerminal.exclusive_or_expression],\n [NoneTerminal.inclusive_or_expression, ETokenType.VERTICAL_BAR, NoneTerminal.exclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.InclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.exclusive_or_expression,\n [\n [NoneTerminal.and_expression],\n [NoneTerminal.exclusive_or_expression, ETokenType.CARET, NoneTerminal.and_expression]\n ],\n // #if _VERBOSE\n ASTNode.ExclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.and_expression,\n [\n [NoneTerminal.equality_expression],\n [NoneTerminal.and_expression, ETokenType.AMPERSAND, NoneTerminal.equality_expression]\n ],\n // #if _VERBOSE\n ASTNode.AndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.equality_expression,\n [\n [NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.EQ_OP, NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.NE_OP, NoneTerminal.relational_expression]\n ],\n // #if _VERBOSE\n ASTNode.EqualityExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.relational_expression,\n [\n [NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LEFT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.RIGHT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LE_OP, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.GE_OP, NoneTerminal.shift_expression]\n ],\n // #if _VERBOSE\n ASTNode.RelationalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.shift_expression,\n [\n [NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.LEFT_OP, NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.RIGHT_OP, NoneTerminal.additive_expression]\n ],\n // #if _VERBOSE\n ASTNode.ShiftExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.additive_expression,\n [\n [NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.PLUS, NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.DASH, NoneTerminal.multiplicative_expression]\n ],\n // #if _VERBOSE\n ASTNode.AdditiveExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.multiplicative_expression,\n [\n [NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.STAR, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.SLASH, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.PERCENT, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.MultiplicativeExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_expression,\n [\n [NoneTerminal.postfix_expression],\n [ETokenType.INC_OP, NoneTerminal.unary_expression],\n [ETokenType.DEC_OP, NoneTerminal.unary_expression],\n [NoneTerminal.unary_operator, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.UnaryExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.BANG], [ETokenType.TILDE]],\n // #if _VERBOSE\n ASTNode.UnaryOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.postfix_expression,\n [\n [NoneTerminal.primary_expression],\n [NoneTerminal.postfix_expression, ETokenType.LEFT_BRACKET, NoneTerminal.expression, ETokenType.RIGHT_BRACKET],\n [NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.DOT, ETokenType.ID],\n [NoneTerminal.postfix_expression, ETokenType.DOT, NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.INC_OP],\n [NoneTerminal.postfix_expression, ETokenType.DEC_OP]\n ],\n ASTNode.PostfixExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.primary_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [ETokenType.FLOAT_CONSTANT],\n [EKeyword.TRUE],\n [EKeyword.FALSE],\n [ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.PrimaryExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.expression, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.Expression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_expression,\n [\n [NoneTerminal.conditional_expression],\n [NoneTerminal.unary_expression, NoneTerminal.assignment_operator, NoneTerminal.assignment_expression]\n ],\n ASTNode.AssignmentExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_operator,\n [\n [ETokenType.EQUAL],\n [ETokenType.MUL_ASSIGN],\n [ETokenType.DIV_ASSIGN],\n [ETokenType.MOD_ASSIGN],\n [ETokenType.ADD_ASSIGN],\n [ETokenType.SUB_ASSIGN],\n [ETokenType.LEFT_ASSIGN],\n [ETokenType.RIGHT_ASSIGN],\n [ETokenType.AND_ASSIGN],\n [ETokenType.XOR_ASSIGN],\n [ETokenType.OR_ASSIGN]\n ],\n // #if _VERBOSE\n ASTNode.AssignmentOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call,\n [[NoneTerminal.function_call_generic]],\n ASTNode.FunctionCall.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_generic,\n [\n [\n NoneTerminal.function_identifier,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ],\n [NoneTerminal.function_identifier, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [NoneTerminal.function_identifier, EKeyword.VOID, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.FunctionCallGeneric.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_parameter_list,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.function_call_parameter_list, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.FunctionCallParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_identifier,\n [[NoneTerminal.type_specifier]],\n ASTNode.FunctionIdentifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_definition,\n [[NoneTerminal.function_prototype, NoneTerminal.compound_statement_no_scope]],\n ASTNode.FunctionDefinition.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_prototype,\n [[NoneTerminal.function_declarator, ETokenType.RIGHT_PAREN]],\n ASTNode.FunctionProtoType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_declarator,\n [[NoneTerminal.function_header], [NoneTerminal.function_header, NoneTerminal.function_parameter_list]],\n ASTNode.FunctionDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_header,\n [[NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.LEFT_PAREN]],\n ASTNode.FunctionHeader.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_parameter_list,\n [\n [NoneTerminal.parameter_declaration],\n [NoneTerminal.function_parameter_list, ETokenType.COMMA, NoneTerminal.parameter_declaration]\n ],\n ASTNode.FunctionParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declaration,\n [[NoneTerminal.type_qualifier, NoneTerminal.parameter_declarator], [NoneTerminal.parameter_declarator]],\n ASTNode.ParameterDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declarator,\n [\n [NoneTerminal.type_specifier, ETokenType.ID],\n [NoneTerminal.type_specifier, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.ParameterDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement_list,\n [[NoneTerminal.statement], [NoneTerminal.statement_list, NoneTerminal.statement]],\n ASTNode.StatementList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement,\n [[NoneTerminal.compound_statement], [NoneTerminal.simple_statement]],\n // #if _VERBOSE\n ASTNode.Statement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement_no_scope,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [ETokenType.LEFT_BRACE, NoneTerminal.statement_list, ETokenType.RIGHT_BRACE]\n ],\n ASTNode.CompoundStatementNoScope.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [NoneTerminal.scope_brace, NoneTerminal.statement_list, NoneTerminal.scope_end_brace]\n ],\n // #if _VERBOSE\n ASTNode.CompoundStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.simple_statement,\n [\n [NoneTerminal.declaration],\n [NoneTerminal.expression_statement],\n [NoneTerminal.selection_statement],\n [NoneTerminal.iteration_statement],\n [NoneTerminal.jump_statement]\n ],\n // #if _VERBOSE\n ASTNode.SimpleStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.declaration,\n [\n [NoneTerminal.function_prototype, ETokenType.SEMICOLON],\n [NoneTerminal.init_declarator_list, ETokenType.SEMICOLON],\n [\n EKeyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.type_qualifier, ETokenType.ID, ETokenType.SEMICOLON],\n [NoneTerminal.type_qualifier, ETokenType.ID, NoneTerminal.identifier_list, ETokenType.SEMICOLON]\n ],\n ASTNode.Declaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.identifier_list,\n [\n [ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.identifier_list, ETokenType.COMMA, ETokenType.ID]\n ],\n ASTNode.IdentifierList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.init_declarator_list,\n [\n [NoneTerminal.single_declaration],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.init_declarator_list,\n ETokenType.COMMA,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.InitDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.fully_specified_type,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.SingleDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.LEFT_BRACE, NoneTerminal.initializer_list, ETokenType.RIGHT_BRACE]\n ],\n // #if _VERBOSE\n ASTNode.Initializer.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer_list,\n [[NoneTerminal.initializer], [NoneTerminal.initializer_list, ETokenType.COMMA, NoneTerminal.initializer]],\n // #if _VERBOSE\n ASTNode.InitializerList.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression_statement,\n [[ETokenType.SEMICOLON], [NoneTerminal.expression, ETokenType.SEMICOLON]],\n // #if _VERBOSE\n ASTNode.ExpressionStatement.pool\n // #endif\n ),\n\n // dangling else ambiguity\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.selection_statement,\n [\n [EKeyword.IF, ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n EKeyword.IF,\n ETokenType.LEFT_PAREN,\n NoneTerminal.expression,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement,\n EKeyword.ELSE,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.SelectionStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.iteration_statement,\n [\n [EKeyword.WHILE, ETokenType.LEFT_PAREN, NoneTerminal.condition, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n EKeyword.FOR,\n ETokenType.LEFT_PAREN,\n NoneTerminal.for_init_statement,\n NoneTerminal.for_rest_statement,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.IterationStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_specifier,\n [\n [\n EKeyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.PrecisionSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_init_statement,\n [[NoneTerminal.expression_statement], [NoneTerminal.declaration]],\n // #if _VERBOSE\n ASTNode.ForInitStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.condition,\n [\n [NoneTerminal.expression],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n // #if _VERBOSE\n ASTNode.Condition.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_rest_statement,\n [\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON],\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON, NoneTerminal.expression]\n ],\n // #if _VERBOSE\n ASTNode.ForRestStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditionopt,\n [[ETokenType.EPSILON], [NoneTerminal.condition]],\n // #if _VERBOSE\n ASTNode.ConditionOpt.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.jump_statement,\n [\n [EKeyword.CONTINUE, ETokenType.SEMICOLON],\n [EKeyword.BREAK, ETokenType.SEMICOLON],\n [EKeyword.RETURN, ETokenType.SEMICOLON],\n [EKeyword.RETURN, NoneTerminal.expression, ETokenType.SEMICOLON],\n [EKeyword.DISCARD, ETokenType.SEMICOLON]\n ],\n ASTNode.JumpStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_brace,\n [[ETokenType.LEFT_BRACE]],\n ASTNode.ScopeBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_end_brace,\n [[ETokenType.RIGHT_BRACE]],\n ASTNode.ScopeEndBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_identifier,\n [[ETokenType.ID]],\n ASTNode.VariableIdentifier.pool\n )\n];\n\nconst createGrammar = () =>\n Grammar.create(\n NoneTerminal.gs_shader_program,\n productionAndRules.map((item) => item[0])\n );\n\nconst addTranslationRule = (sa: SemanticAnalyzer) => {\n for (let i = 0; i < productionAndRules.length; i++) {\n const rule = productionAndRules[i][1];\n if (rule) {\n sa.addTranslationRule(i, rule);\n }\n }\n};\n\nexport { createGrammar, addTranslationRule };\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { Grammar } from \"../parser/Grammar\";\nimport { NoneTerminal, GrammarSymbol, Terminal } from \"../parser/GrammarSymbol\";\nimport State from \"./State\";\nimport StateItem from \"./StateItem\";\nimport GrammarUtils from \"./Utils\";\nimport { EKeyword, ETokenType } from \"../common\";\nimport Utils from \"./Utils\";\nimport { ActionInfo, ActionTable, EAction, GotoTable, StateActionTable, StateGotoTable } from \"./types\";\n\n/**\n * The [LALR1](https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/handouts/140%20LALR%20Parsing.pdf) Parser generator\n */\nexport class LALR1 {\n readonly firstSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n readonly followSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n\n readonly actionTable: StateActionTable = new Map();\n readonly gotoTable: StateGotoTable = new Map();\n private grammar: Grammar;\n\n /** For circle detect */\n private _firstSetNTStack: NoneTerminal[] = [];\n\n constructor(grammar: Grammar) {\n this.grammar = grammar;\n }\n\n generate() {\n this.computeFirstSet();\n this.buildStateTable();\n }\n\n private buildStateTable() {\n const startStateItemCore = [new StateItem(this.grammar.productions[0], 0, [ETokenType.EOF])];\n const startState = State.create(startStateItemCore);\n this._extendState(startState);\n }\n\n private _extendState(state: State) {\n if (!state.needReInfer) return;\n this._closure(state);\n const newStates = this._inferNextState(state);\n for (const ns of newStates) {\n this._extendState(ns);\n }\n }\n\n private _closure(state: State) {\n for (const core of state.cores) {\n if (!core.canReduce()) {\n this._extendStateItem(state, core);\n }\n }\n state.closured = true;\n return state;\n }\n\n private _extendStateItem(state: State, item: StateItem) {\n if (GrammarUtils.isTerminal(item.curSymbol)) return;\n\n const productionList = this.grammar.getProductionList(<NoneTerminal>item.curSymbol);\n\n if (item.nextSymbol) {\n let newLookaheadSet = new Set<Terminal>();\n let lastFirstSet: Set<Terminal> | undefined;\n let terminalExist = false;\n // when A :=> a.BC, a; ==》 B :=> .xy, First(Ca)\n // newLookAhead = First(Ca)\n for (let i = 1, nextSymbol = item.symbolByOffset(1); !!nextSymbol; nextSymbol = item.symbolByOffset(++i)) {\n if (GrammarUtils.isTerminal(nextSymbol)) {\n newLookaheadSet.add(<Terminal>nextSymbol);\n terminalExist = true;\n break;\n }\n lastFirstSet = this.firstSetMap.get(<NoneTerminal>nextSymbol)!;\n for (const t of lastFirstSet) {\n newLookaheadSet.add(t);\n }\n if (!lastFirstSet.has(ETokenType.EPSILON)) break;\n }\n if (!terminalExist && lastFirstSet?.has(ETokenType.EPSILON)) {\n for (const t of item.lookaheadSet) {\n newLookaheadSet.add(t);\n }\n }\n\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(newLookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(newLookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n } else {\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(item.lookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(item.lookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n }\n }\n\n private _inferNextState(state: State): Set<State> {\n const coreMap: Map<GrammarSymbol, Set<StateItem>> = new Map();\n const stateActionTable: ActionTable = this.actionTable.get(state.id) ?? new Map();\n const stateGotoTable: GotoTable = this.gotoTable.get(state.id) ?? new Map();\n\n this.actionTable.set(state.id, stateActionTable);\n this.gotoTable.set(state.id, stateGotoTable);\n\n for (const stateItem of state.items) {\n if (stateItem.canReduce()) {\n let action: ActionInfo;\n if (stateItem.production.goal !== NoneTerminal.START) {\n action = {\n action: EAction.Reduce,\n target: stateItem.production.id\n };\n } else {\n action = { action: EAction.Accept };\n }\n\n for (const t of stateItem.lookaheadSet) {\n this._addAction(stateActionTable, t, action);\n }\n } else {\n const nextItem = stateItem.advance();\n Utils.addMapSetItem(coreMap, stateItem.curSymbol, nextItem);\n }\n\n stateItem.needReInfer = false;\n }\n\n const newStates = new Set<State>();\n for (const [gs, cores] of coreMap.entries()) {\n const newState = State.create(Array.from(cores));\n if (GrammarUtils.isTerminal(gs)) {\n this._addAction(stateActionTable, <Terminal>gs, {\n action: EAction.Shift,\n target: newState.id\n });\n } else {\n stateGotoTable.set(<NoneTerminal>gs, newState.id);\n }\n\n newStates.add(newState);\n }\n\n return newStates;\n }\n\n /** Resolve shift-reduce/reduce-reduce conflict detect */\n private _addAction(table: ActionTable, terminal: Terminal, action: ActionInfo) {\n const exist = table.get(terminal);\n if (exist && !Utils.isActionEqual(exist, action)) {\n // Resolve dangling else ambiguity\n if (terminal === EKeyword.ELSE && exist.action === EAction.Shift && action.action === EAction.Reduce) {\n return;\n } else {\n // #if _VERBOSE\n console.warn(\n `conflict detect: <Terminal ${GrammarUtils.toString(terminal)}>`,\n Utils.printAction(exist),\n \" -> \",\n Utils.printAction(action)\n );\n // #endif\n }\n }\n table.set(terminal, action);\n }\n\n // https://people.cs.pitt.edu/~jmisurda/teaching/cs1622/handouts/cs1622-first_and_follow.pdf\n private computeFirstSet() {\n for (const production of this.grammar.productions.slice(1)) {\n this._computeFirstSetForNT(production.goal);\n }\n }\n\n private _computeFirstSetForNT(NT: NoneTerminal) {\n // circle detect\n const idx = this._firstSetNTStack.findIndex((item) => item === NT);\n if (idx !== -1) {\n const computingFS = this.firstSetMap.get(NT)!;\n const len = this._firstSetNTStack.length;\n for (let i = len - 1; i > idx; i--) {\n const curNT = this._firstSetNTStack[i];\n this.firstSetMap.set(curNT, computingFS);\n }\n return computingFS;\n }\n this._firstSetNTStack.push(NT);\n\n const productionList = this.grammar.getProductionList(NT);\n const firstSet = new Set<Terminal>();\n this.firstSetMap.set(NT, firstSet);\n if (this.grammar.isNullableNT(NT)) firstSet.add(ETokenType.EPSILON);\n\n for (const production of productionList) {\n let i = 0;\n for (; i < production.derivation.length; i++) {\n const gs = production.derivation[i];\n if (GrammarUtils.isTerminal(gs)) {\n firstSet.add(<Terminal>gs);\n break;\n }\n\n const succeedFirstSet = this._computeFirstSetForNT(<NoneTerminal>gs);\n\n for (const item of succeedFirstSet) {\n if (item !== ETokenType.EPSILON) firstSet.add(item);\n }\n if (!this.grammar.isNullableNT(<NoneTerminal>gs)) break;\n }\n if (i === production.derivation.length) firstSet.add(ETokenType.EPSILON);\n }\n\n this._firstSetNTStack.pop();\n return firstSet;\n }\n}\n","import { Grammar } from \"./Grammar\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ETokenType } from \"../common\";\nimport { EAction, StateActionTable, StateGotoTable } from \"../lalr/types\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport SematicAnalyzer from \"./SemanticAnalyzer\";\nimport { TraceStackItem } from \"./types\";\nimport { addTranslationRule, createGrammar } from \"../lalr/CFG\";\nimport { LALR1 } from \"../lalr\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { Logger } from \"@galacean/engine\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\n/**\n * The syntax parser and sematic analyzer of `ShaderLab` compiler\n */\nexport class ShaderTargetParser {\n readonly actionTable: StateActionTable;\n readonly gotoTable: StateGotoTable;\n readonly grammar: Grammar;\n readonly sematicAnalyzer: SematicAnalyzer;\n private _traceBackStack: (TraceStackItem | number)[] = [];\n\n private get curState() {\n return this._traceBackStack[this._traceBackStack.length - 1] as number;\n }\n private get stateActionTable() {\n return this.actionTable.get(this.curState)!;\n }\n private get stateGotoTable() {\n return this.gotoTable.get(this.curState);\n }\n\n // #if _VERBOSE\n /** @internal */\n get errors() {\n return this.sematicAnalyzer.errors;\n }\n // #endif\n\n static _singleton: ShaderTargetParser;\n\n static create() {\n if (!this._singleton) {\n const grammar = createGrammar();\n const generator = new LALR1(grammar);\n generator.generate();\n this._singleton = new ShaderTargetParser(generator.actionTable, generator.gotoTable, grammar);\n addTranslationRule(this._singleton.sematicAnalyzer);\n }\n\n return this._singleton;\n }\n\n private constructor(actionTable: StateActionTable, gotoTable: StateGotoTable, grammar: Grammar) {\n this.actionTable = actionTable;\n this.gotoTable = gotoTable;\n this.grammar = grammar;\n this.sematicAnalyzer = new SematicAnalyzer();\n }\n\n parse(tokens: Generator<BaseToken, BaseToken>): ASTNode.GLShaderProgram | null {\n this.sematicAnalyzer.reset();\n const start = performance.now();\n const { _traceBackStack: traceBackStack, sematicAnalyzer } = this;\n traceBackStack.push(0);\n\n let nextToken = tokens.next();\n let loopCount = 0;\n while (true) {\n loopCount += 1;\n const token = nextToken.value;\n\n const actionInfo = this.stateActionTable.get(token.type);\n if (actionInfo?.action === EAction.Shift) {\n traceBackStack.push(token, actionInfo.target!);\n nextToken = tokens.next();\n } else if (actionInfo?.action === EAction.Accept) {\n Logger.info(\n `[pass compilation - parser] Accept! State automata run ${loopCount} times! cost time ${\n performance.now() - start\n }ms`\n );\n sematicAnalyzer.acceptRule?.(sematicAnalyzer);\n return sematicAnalyzer.semanticStack.pop() as ASTNode.GLShaderProgram;\n } else if (actionInfo?.action === EAction.Reduce) {\n const target = actionInfo.target!;\n const reduceProduction = this.grammar.getProductionByID(target)!;\n const translationRule = sematicAnalyzer.getTranslationRule(reduceProduction.id);\n\n const values: (TreeNode | BaseToken)[] = [];\n\n for (let i = reduceProduction.derivation.length - 1; i >= 0; i--) {\n if (reduceProduction.derivation[i] === ETokenType.EPSILON) continue;\n traceBackStack.pop();\n const token = traceBackStack.pop();\n if (token instanceof BaseToken) {\n values.unshift(token);\n } else {\n const astNode = sematicAnalyzer.semanticStack.pop()!;\n values.unshift(astNode);\n }\n }\n translationRule?.(sematicAnalyzer, ...values);\n\n const gotoTable = this.stateGotoTable;\n traceBackStack.push(reduceProduction.goal);\n\n const nextState = gotoTable?.get(reduceProduction.goal)!;\n traceBackStack.push(nextState);\n continue;\n } else {\n const error = ShaderLabUtils.createGSError(\n `Unexpected token ${token.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n token.location\n );\n // #if _VERBOSE\n this.sematicAnalyzer.errors.push(<GSError>error);\n // #endif\n return null;\n }\n }\n }\n\n // #if _VERBOSE\n private _printStack(nextToken: BaseToken) {\n let str = \"\";\n for (let i = 0; i < this._traceBackStack.length - 1; i++) {\n const state = <NoneTerminal>this._traceBackStack[i++];\n const token = this._traceBackStack[i];\n str += `State${state} - ${(<BaseToken>token).lexeme ?? ParserUtils.toString(token as GrammarSymbol)}; `;\n }\n str += `State${this._traceBackStack[this._traceBackStack.length - 1]} --- ${nextToken.lexeme}`;\n Logger.info(str);\n }\n // #endif\n}\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ShaderRange } from \"../common\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n// #if _VERBOSE\nimport { GSErrorName } from \"../GSError\";\n// #endif\n\nexport class MacroDefine {\n private _replaceRegex?: RegExp;\n private readonly _argsLexemes: string[];\n\n get isFunction(): boolean {\n return !!this.args?.length;\n }\n\n constructor(\n public readonly macro: BaseToken,\n public readonly body?: BaseToken,\n public readonly location?: ShaderRange,\n public readonly args?: BaseToken[]\n ) {\n if (args) {\n this._argsLexemes = this.args.map((item) => item.lexeme);\n this._replaceRegex = new RegExp(`\\\\b(${this._argsLexemes.join(\"|\")})\\\\b`, \"g\");\n }\n }\n\n expandFunctionBody(args: string[]): string {\n if (args.length !== this.args?.length) {\n throw ShaderLabUtils.createGSError(\"mismatched function macro\", GSErrorName.PreprocessorError, \"\", this.location);\n }\n\n return this.body.lexeme.replace(this._replaceRegex, (m) => {\n return args[this._argsLexemes.indexOf(m)];\n });\n }\n}\n","export enum EPpToken {\n id,\n line_remain,\n chunk,\n int_constant,\n string_const,\n /** \\>> */\n right_op,\n /** << */\n left_op,\n left_paren,\n right_paren,\n /** \\>= */\n ge,\n /** <= */\n le,\n /** == */\n eq,\n /** != */\n neq,\n /** && */\n and,\n /** || */\n or,\n /** < */\n left_angle,\n /** \\> */\n right_angle,\n /** \\* */\n star,\n /** + */\n plus,\n /** \\- */\n dash,\n /** ! */\n bang,\n /** \\/ */\n slash,\n /** % */\n percent,\n\n EOF = 100\n}\n\nexport enum EPpKeyword {\n define = 101,\n undef,\n if,\n ifdef,\n ifndef,\n else,\n elif,\n endif,\n include,\n\n defined\n}\n\nexport const PpKeyword = new Map<string, EPpKeyword>([\n [\"#define\", EPpKeyword.define],\n [\"#undef\", EPpKeyword.undef],\n [\"#if\", EPpKeyword.if],\n [\"#ifdef\", EPpKeyword.ifdef],\n [\"#ifndef\", EPpKeyword.ifndef],\n [\"#else\", EPpKeyword.else],\n [\"#elif\", EPpKeyword.elif],\n [\"#endif\", EPpKeyword.endif],\n [\"#include\", EPpKeyword.include],\n [\"defined\", EPpKeyword.defined]\n]);\n\nexport type PpConstant = boolean | number;\n","import { ShaderRange } from \"../common\";\nimport { ExpandSegment } from \"./PpParser\";\n// #if _VERBOSE\nimport PpSourceMap, { MapRange } from \"./sourceMap\";\n// #endif\n\nexport class PpUtils {\n static expand(\n segments: ExpandSegment[],\n source: string,\n // #if _VERBOSE\n sourceMap?: PpSourceMap\n //#endif\n ) {\n const ret: string[] = [];\n let startIdx = 0;\n let generatedIdx = 0;\n\n for (const seg of segments) {\n const originSlice = source.slice(startIdx, seg.rangeInBlock.start.index);\n ret.push(originSlice, seg.replace);\n\n const generatedIdxEnd = generatedIdx + originSlice.length + seg.replace.length;\n\n // #if _VERBOSE\n const mapRange = new MapRange(seg.block, seg.rangeInBlock, {\n start: generatedIdx + originSlice.length,\n end: generatedIdxEnd\n });\n sourceMap?.addMapRange(mapRange);\n // #endif\n\n startIdx = seg.rangeInBlock.end.index;\n generatedIdx = generatedIdxEnd;\n }\n ret.push(source.slice(startIdx));\n return ret.join(\"\");\n }\n\n static assembleSegments(\n segments: {\n range: ShaderRange;\n replace: string;\n }[],\n source: string\n ) {\n const ret: string[] = [];\n let startIdx = 0;\n for (const seg of segments) {\n const originSlice = source.slice(startIdx, seg.range.start.index);\n ret.push(originSlice, seg.replace);\n startIdx = seg.range.end.index;\n }\n ret.push(source.slice(startIdx));\n return ret.join(\"\");\n }\n}\n","import { ShaderRange, ShaderPosition } from \"../common\";\nimport LexerUtils from \"../lexer/Utils\";\n// #if _VERBOSE\nimport PpSourceMap from \"./sourceMap\";\n// #endif\nimport BaseScanner from \"../common/BaseScanner\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { EPpKeyword, EPpToken, PpKeyword } from \"./constants\";\nimport { PpUtils } from \"./Utils\";\nimport { ShaderLab } from \"../ShaderLab\";\n\nexport type OnToken = (token: BaseToken, scanner: PpScanner) => void;\n\nexport default class PpScanner extends BaseScanner {\n private macroLvl = 0;\n\n // #if _VERBOSE\n readonly sourceMap = new PpSourceMap();\n readonly file: string;\n readonly blockRange?: ShaderRange;\n // #endif\n\n constructor(\n source: string,\n // #if _VERBOSE\n file = \"__main__\",\n blockRange?: ShaderRange\n // #endif\n ) {\n super(source);\n // #if _VERBOSE\n this.file = file;\n this.blockRange = blockRange;\n // #endif\n }\n\n /**\n * Advance to directive\n * @param expandOnToken callback on encountering token.\n */\n scanDirective(expandOnToken?: OnToken): BaseToken<number> {\n const directive = this._advanceToDirective(expandOnToken);\n if ([EPpKeyword.if, EPpKeyword.ifdef, EPpKeyword.ifndef].includes(<any>directive?.type)) {\n this.macroLvl += 1;\n } else if (<any>directive?.type === EPpKeyword.endif) {\n this.macroLvl -= 1;\n }\n return directive;\n }\n\n /**\n * @param nonLetterChar should not be space\n */\n scanWordsUntilChar(nonLetterChar: string): BaseToken[] {\n const ret: BaseToken[] = [];\n while (true) {\n this.skipSpace(true);\n if (LexerUtils.isLetter(this.getCurCharCode())) {\n ret.push(this.scanWord());\n } else if (this.getCurChar() === nonLetterChar) {\n this._advance();\n return ret;\n } else {\n this._advance();\n }\n }\n }\n\n scanWord(skipNonLetter = false): BaseToken {\n if (skipNonLetter) {\n while (!LexerUtils.isLetter(this.getCurCharCode()) && !this.isEnd()) {\n this._advance();\n }\n } else {\n this.skipSpace(true);\n }\n\n if (this.isEnd()) return EOF;\n\n const start = this._currentIndex;\n while (LexerUtils.isLetter(this.getCurCharCode()) && !this.isEnd()) {\n this._advance();\n }\n const end = this._currentIndex;\n const word = this._source.slice(start, end);\n if (end === start) {\n this.throwError(this.getShaderPosition(0), \"no word found.\");\n }\n const kw = PpKeyword.get(word);\n if (kw) {\n const token = BaseToken.pool.get();\n token.set(kw, word, this.getShaderPosition(0));\n return token;\n }\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.id, word, this.getShaderPosition(word.length));\n return token;\n }\n\n /**\n * @param offset - Offset from starting point\n */\n getShaderPosition(offset: number) {\n return ShaderLab.createPosition(\n this._currentIndex - offset,\n // #if _VERBOSE\n this.line,\n this.column - offset\n // #endif\n );\n }\n\n /**\n * @param onToken callback when encounter a token\n * @returns token split by space\n */\n override scanToken(onToken?: OnToken): BaseToken | undefined {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return;\n }\n const { _source: source } = this;\n let start = this._currentIndex;\n let found = false;\n for (var n = source.length; this._currentIndex < n; ) {\n if (LexerUtils.isPpCharacters(source.charCodeAt(this._currentIndex))) {\n this._advance();\n found = true;\n } else {\n if (found) {\n break;\n }\n this._advance();\n this.skipCommentsAndSpace();\n start = this._currentIndex;\n }\n }\n\n const lexeme = source.slice(start, this._currentIndex);\n const ret = BaseToken.pool.get();\n const tokenType = PpKeyword.get(lexeme);\n ret.set(tokenType ?? EPpToken.id, lexeme, this.getShaderPosition(this._currentIndex - start));\n onToken?.(ret, this);\n return ret;\n }\n\n scanQuotedString(): BaseToken<EPpToken.string_const> {\n this.skipSpace(true);\n if (this.getCurChar() !== '\"') {\n this.throwError(this.getShaderPosition(0), \"unexpected char, expected '\\\"'\");\n }\n const ShaderPosition = this.getShaderPosition(0);\n this._advance();\n const start = this._currentIndex;\n while (this.getCurChar() !== '\"' && !this.isEnd()) this._advance();\n if (this.isEnd()) {\n this.throwError(this.getShaderPosition(0), \"unexpected char, expected '\\\"'\");\n }\n const word = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.string_const, word, ShaderPosition);\n return token;\n }\n\n scanToChar(char: string) {\n const source = this._source;\n while (source[this._currentIndex] !== char && !this.isEnd()) {\n this._advance();\n }\n }\n\n scanMacroBranchChunk(): {\n token: BaseToken<EPpToken.chunk>;\n nextDirective: BaseToken;\n } {\n const start = this._currentIndex;\n const ShaderPosition = this.getShaderPosition(0);\n\n const startLvl = this.macroLvl;\n let directive = this.scanDirective()!;\n\n while (true) {\n if (directive.type === EPpKeyword.endif && startLvl - 1 === this.macroLvl) break;\n else if ([EPpKeyword.elif, EPpKeyword.else].includes(<EPpKeyword>directive.type) && startLvl === this.macroLvl)\n break;\n directive = this.scanDirective()!;\n }\n\n const chunk = this._source.slice(start, this._currentIndex - directive.lexeme.length - 1);\n const token = BaseToken.pool.get();\n token.set(EPpToken.chunk, chunk, ShaderPosition);\n return { token, nextDirective: directive };\n }\n\n scanPairedBlock(lc: string, rc: string): void {\n this.scanToChar(lc);\n let level = 0;\n const source = this._source;\n\n do {\n const curChar = source[this._currentIndex];\n\n if (curChar === lc) {\n level++;\n } else if (curChar === rc) {\n level--;\n }\n this._advance();\n } while (level > 0);\n }\n\n /**\n * @returns end ShaderPosition\n */\n scanRemainMacro(): ShaderPosition {\n const startLvl = this.macroLvl;\n let directive = this.scanDirective()!;\n while (!this.isEnd() && (directive.type !== EPpKeyword.endif || startLvl - 1 !== this.macroLvl)) {\n directive = this.scanDirective()!;\n }\n return this.getShaderPosition(0);\n }\n\n peekNonSpace() {\n let current = this._currentIndex;\n while (/\\s/.test(this._source[current])) {\n current += 1;\n }\n return this._source[current];\n }\n\n scanInteger() {\n const start = this._currentIndex;\n while (LexerUtils.isNum(this.getCurCharCode())) {\n this._advance();\n }\n if (this._currentIndex === start) {\n this.throwError(this.getShaderPosition(0), \"no integer found\");\n }\n const integer = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.int_constant, integer, this.getShaderPosition(0));\n return token;\n }\n\n /**\n * Skip comments\n */\n scanLineRemain() {\n this.skipSpace(false);\n const start = this._currentIndex;\n\n const comments: ShaderRange[] = [];\n\n while (this.getCurChar() !== \"\\n\") {\n if (this.isEnd()) {\n const line = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.line_remain, line, this.getShaderPosition(line.length));\n return token;\n }\n this._advance();\n const commentRange = this._skipComments();\n if (commentRange) {\n commentRange.start.index -= start;\n commentRange.end.index -= start;\n comments.push(commentRange);\n }\n }\n let line = this._source.slice(start, this._currentIndex);\n if (comments.length) {\n // filter comments\n line = PpUtils.assembleSegments(\n comments.map((item) => ({ range: item, replace: \"\" })),\n line\n );\n }\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.line_remain, line, this.getShaderPosition(line.length));\n return token;\n }\n\n private _advanceToDirective(onToken?: OnToken): BaseToken | undefined {\n while (true) {\n const token = this.scanToken(onToken);\n if (token?.lexeme.startsWith(\"#\")) return token;\n if (this.isEnd()) return;\n }\n }\n\n private _skipComments(): ShaderRange | undefined {\n if (this.peek(2) === \"//\") {\n const start = this.getShaderPosition(0);\n // single line comments\n while (this.getCurChar() !== \"\\n\" && !this.isEnd()) {\n this._advance();\n }\n return ShaderLab.createRange(start, this.getCurPosition());\n } else if (this.peek(2) === \"/*\") {\n const start = this.getShaderPosition(0);\n // multi-line comments\n this.advance(2);\n while (this.peek(2) !== \"*/\" && !this.isEnd()) {\n this._advance();\n }\n this.advance(2);\n return ShaderLab.createRange(start, this.getShaderPosition(0));\n }\n }\n}\n","import { ShaderPosition, ShaderRange } from \"../common\";\nimport LexerUtils from \"../lexer/Utils\";\nimport { MacroDefine } from \"./MacroDefine\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { EPpKeyword, EPpToken, PpConstant } from \"./constants\";\nimport PpScanner from \"./PpScanner\";\nimport { PpUtils } from \"./Utils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderPass } from \"@galacean/engine\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport PpSourceMap, { BlockInfo } from \"./sourceMap\";\n// #endif\n\nexport interface ExpandSegment {\n // #if _VERBOSE\n block?: BlockInfo;\n // #endif\n rangeInBlock: ShaderRange;\n replace: string;\n}\n\n/** @internal */\nexport class PpParser {\n private static _definedMacros: Map<string, MacroDefine> = new Map();\n private static _expandSegmentsStack: ExpandSegment[][] = [[]];\n\n /** Referenced by branch macro or defined operator */\n private static _branchMacros: Set<string> = new Set();\n\n private static _includeMap: Record<string, string>;\n private static _basePathForIncludeKey: string;\n\n // #if _VERBOSE\n static _errors: Error[] = [];\n // #endif\n\n static reset(includeMap: Record<string, string>, basePathForIncludeKey: string) {\n this._definedMacros.clear();\n this._expandSegmentsStack.length = 0;\n this._expandSegmentsStack.push([]);\n this._branchMacros.clear();\n this.addPredefinedMacro(\"GL_ES\");\n this._includeMap = includeMap;\n this._basePathForIncludeKey = basePathForIncludeKey;\n // #if _VERBOSE\n this._errors.length = 0;\n // #endif\n }\n\n static addPredefinedMacro(macro: string, value?: string) {\n const tk = BaseToken.pool.get();\n tk.set(EPpToken.id, macro);\n\n let macroBody: BaseToken | undefined;\n if (value) {\n macroBody = BaseToken.pool.get();\n macroBody.set(EPpToken.id, value);\n }\n\n this._definedMacros.set(macro, new MacroDefine(tk, macroBody));\n }\n\n static parse(scanner: PpScanner): string | null {\n while (!scanner.isEnd()) {\n const directive = scanner.scanDirective(this._onToken.bind(this))!;\n if (scanner.isEnd()) break;\n switch (directive.type) {\n case EPpKeyword.define:\n this._parseDefine(scanner);\n break;\n\n case EPpKeyword.undef:\n this._parseUndef(scanner);\n break;\n\n case EPpKeyword.if:\n this._parseIf(scanner);\n break;\n\n case EPpKeyword.ifndef:\n this._parseIfNdef(scanner);\n break;\n\n case EPpKeyword.ifdef:\n this._parseIfDef(scanner);\n break;\n\n case EPpKeyword.include:\n this._parseInclude(scanner);\n break;\n }\n }\n // #if _VERBOSE\n if (this._errors.length > 0) return null;\n // #endif\n\n return PpUtils.expand(this.expandSegments, scanner.source, scanner.sourceMap);\n }\n\n private static get expandSegments() {\n return this._expandSegmentsStack[this._expandSegmentsStack.length - 1];\n }\n\n private static reportError(loc: ShaderRange | ShaderPosition, message: string, source: string, file: string) {\n const error = ShaderLabUtils.createGSError(message, GSErrorName.PreprocessorError, source, loc, file);\n // #if _VERBOSE\n this._errors.push(error);\n // #endif\n }\n\n private static _parseInclude(scanner: PpScanner) {\n const start = scanner.getShaderPosition(8);\n\n scanner.skipSpace(true);\n const id = scanner.scanQuotedString();\n let includedPath: string;\n // builtin path\n if (id.lexeme[0] !== \".\") {\n includedPath = id.lexeme;\n } else {\n // relative path\n // @ts-ignore\n includedPath = new URL(id.lexeme, this._basePathForIncludeKey).href.substring(ShaderPass._shaderRootPath.length);\n }\n\n scanner.scanToChar(\"\\n\");\n const end = scanner.getShaderPosition(0);\n const chunk = this._includeMap[includedPath];\n if (!chunk) {\n this.reportError(id.location, `Shader slice \"${includedPath}\" not founded.`, scanner.source, scanner.file);\n return;\n }\n\n const range = ShaderLab.createRange(start, end);\n const expanded = this._expandMacroChunk(chunk, range, id.lexeme);\n // #if _VERBOSE\n const block = new BlockInfo(id.lexeme, undefined, expanded.sourceMap);\n // #endif\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n }\n\n private static _parseIfDef(scanner: PpScanner) {\n const start = scanner.current - 6;\n\n const id = scanner.scanWord();\n this._addEmptyReplace(scanner, start);\n this._branchMacros.add(id.lexeme);\n\n const macro = this._definedMacros.get(id.lexeme);\n scanner.skipSpace(true);\n\n const { token: bodyChunk, nextDirective } = scanner.scanMacroBranchChunk();\n if (!!macro) {\n const end = nextDirective.type === EPpKeyword.endif ? scanner.getShaderPosition(0) : scanner.scanRemainMacro();\n\n const expanded = this._expandMacroChunk(bodyChunk.lexeme, bodyChunk.location, scanner);\n\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const range = ShaderLab.createRange(bodyChunk.location.start, end);\n\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n\n return;\n }\n\n this.expandSegments.pop();\n this._addEmptyReplace(scanner, start);\n\n this._parseMacroBranch(<any>nextDirective.type, scanner);\n }\n\n private static _parseMacroBranch(\n directive: EPpKeyword.elif | EPpKeyword.else | EPpKeyword.endif,\n scanner: PpScanner\n ) {\n if (directive === EPpKeyword.endif) {\n return;\n }\n\n const start = scanner.current;\n\n if (directive === EPpKeyword.else) {\n const { token: elseChunk } = scanner.scanMacroBranchChunk();\n const expanded = this._expandMacroChunk(elseChunk.lexeme, elseChunk.location, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const range = ShaderLab.createRange(startPosition, scanner.getShaderPosition(0));\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n } else if (directive === EPpKeyword.elif) {\n const constantExpr = this._parseConstantExpression(scanner);\n const { token: bodyChunk, nextDirective } = scanner.scanMacroBranchChunk();\n if (!!constantExpr) {\n const end = nextDirective.type === EPpKeyword.endif ? scanner.current : scanner.scanRemainMacro().index;\n const expanded = this._expandMacroChunk(bodyChunk.lexeme, bodyChunk.location, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const endPosition = ShaderLab.createPosition(end);\n const range = ShaderLab.createRange(startPosition, endPosition);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n } else {\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const endPosition = ShaderLab.createPosition(scanner.current);\n const range = ShaderLab.createRange(startPosition, endPosition);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: \"\"\n });\n this._parseMacroBranch(<any>nextDirective.type, scanner);\n }\n }\n }\n\n private static _parseConstantExpression(scanner: PpScanner) {\n scanner.skipSpace(true);\n return this._parseLogicalOrExpression(scanner);\n }\n\n private static _parseLogicalOrExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseLogicalAndExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"||\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalOrExpression(scanner);\n return operand1 || operand2;\n }\n return operand1;\n }\n\n private static _parseLogicalAndExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseEqualityExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"&&\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalAndExpression(scanner);\n return operand1 && operand2;\n }\n return operand1;\n }\n\n private static _parseEqualityExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseRelationalExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && [\"==\", \"!=\"].includes(operator)) {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseEqualityExpression(scanner);\n switch (operator) {\n case \"==\":\n return operand1 === operand2;\n case \"!=\":\n return operand1 !== operand2;\n }\n }\n return operand1;\n }\n\n private static _parseRelationalExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseShiftExpression(scanner) as number;\n let operator = scanner.peek(2);\n if (operator[1] !== \"=\") operator = operator[0];\n if (operator && [\">\", \"<\", \">=\", \"<=\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(operator.length);\n scanner.skipSpace(false);\n const operand2 = this._parseRelationalExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this.reportError(opPos, \"invalid operator in relation expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">\":\n return operand1 > operand2;\n case \"<\":\n return operand1 < operand2;\n case \">=\":\n return operand1 >= operand2;\n case \"<=\":\n return operand1 <= operand2;\n }\n }\n return operand1;\n }\n\n private static _parseShiftExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseAdditiveExpression(scanner) as number;\n const operator = scanner.peek(2);\n if (operator && [\">>\", \"<<\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseShiftExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this.reportError(opPos, \"invalid operator in shift expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">>\":\n return operand1 >> operand2;\n case \"<<\":\n return operand1 << operand2;\n }\n }\n\n return operand1;\n }\n\n private static _parseAdditiveExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseMulticativeExpression(scanner) as number;\n if ([\">\", \"<\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance();\n\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseAdditiveExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this.reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return false;\n }\n switch (operator) {\n case \"+\":\n return operand1 + operand2;\n case \"-\":\n return operand1 - operand2;\n }\n }\n return operand1;\n }\n\n private static _parseMulticativeExpression(scanner: PpScanner): PpConstant {\n const operand1 = this._parseUnaryExpression(scanner) as number;\n scanner.skipSpace(false);\n if ([\"*\", \"/\", \"%\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseMulticativeExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this.reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \"*\":\n return operand1 * operand2;\n case \"/\":\n return operand1 / operand2;\n case \"%\":\n return operand1 % operand2;\n }\n }\n return operand1;\n }\n\n private static _parseUnaryExpression(scanner: PpScanner) {\n const operator = scanner.getCurChar();\n if ([\"+\", \"-\", \"!\"].includes(operator)) {\n scanner.advance();\n const opPos = scanner.getShaderPosition(0);\n const parenExpr = this._parseParenthesisExpression(scanner);\n if ((operator === \"!\" && typeof parenExpr !== \"boolean\") || (operator !== \"!\" && typeof parenExpr !== \"number\")) {\n this.reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n }\n\n switch (operator) {\n case \"+\":\n return parenExpr;\n case \"-\":\n return -parenExpr;\n case \"!\":\n return !parenExpr;\n }\n }\n return this._parseParenthesisExpression(scanner);\n }\n\n private static _parseParenthesisExpression(scanner: PpScanner): PpConstant {\n if (scanner.getCurChar() === \"(\") {\n scanner._advance();\n scanner.skipSpace(false);\n const ret = this._parseConstantExpression(scanner);\n scanner.scanToChar(\")\");\n scanner._advance();\n return ret;\n }\n return this._parseConstant(scanner);\n }\n\n private static _parseConstant(scanner: PpScanner): PpConstant {\n if (LexerUtils.isAlpha(scanner.getCurCharCode())) {\n const id = scanner.scanWord();\n if (id.type === EPpKeyword.defined) {\n const withParen = scanner.peekNonSpace() === \"(\";\n const macro = scanner.scanWord(true);\n if (withParen) {\n scanner.scanToChar(\")\");\n scanner._advance();\n }\n this._branchMacros.add(macro.lexeme);\n return !!this._definedMacros.get(macro.lexeme);\n } else {\n const macro = this._definedMacros.get(id.lexeme);\n if (!macro || !macro.body) {\n return false;\n }\n if (macro.isFunction) {\n this.reportError(id.location, \"invalid function macro usage\", scanner.source, scanner.file);\n }\n const value = Number(macro.body.lexeme);\n if (!Number.isInteger(value)) {\n this.reportError(id.location, `invalid const macro: ${id.lexeme}`, scanner.source, scanner.file);\n }\n this._branchMacros.add(id.lexeme);\n return value;\n }\n } else if (LexerUtils.isNum(scanner.getCurCharCode())) {\n const integer = scanner.scanInteger();\n return Number(integer.lexeme);\n } else {\n this.reportError(\n scanner.getShaderPosition(0),\n `invalid token: ${scanner.getCurChar()}`,\n scanner.source,\n scanner.file\n );\n }\n }\n\n /**\n * Recursively expand macro body and expansion.\n */\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n parentScanner: PpScanner\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n file: string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n scannerOrFile: PpScanner | string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n } {\n this._expandSegmentsStack.push([]);\n let scanner: PpScanner;\n if (typeof scannerOrFile === \"string\") {\n scanner = new PpScanner(chunk, scannerOrFile);\n } else {\n scanner = new PpScanner(chunk, scannerOrFile.file, loc);\n }\n const ret = this.parse(scanner);\n this._expandSegmentsStack.pop();\n return {\n content: ret,\n // #if _VERBOSE\n sourceMap: scanner.sourceMap\n // #endif\n };\n }\n\n private static _parseIfNdef(scanner: PpScanner) {\n const start = scanner.current - 7;\n\n const id = scanner.scanWord();\n this._addEmptyReplace(scanner, start);\n this._branchMacros.add(id.lexeme);\n\n const macro = this._definedMacros.get(id.lexeme);\n const { token: bodyChunk, nextDirective } = scanner.scanMacroBranchChunk();\n if (!macro) {\n const end = nextDirective.type === EPpKeyword.endif ? scanner.getShaderPosition(0) : scanner.scanRemainMacro();\n\n const expanded = this._expandMacroChunk(bodyChunk.lexeme, bodyChunk.location, scanner);\n // #if _VERBOSE\n const blockInfo = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const range = ShaderLab.createRange(bodyChunk.location.start, end);\n this.expandSegments.push({\n // #if _VERBOSE\n block: blockInfo,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n return;\n }\n\n this.expandSegments.pop();\n this._addEmptyReplace(scanner, start);\n this._parseMacroBranch(<any>nextDirective.type, scanner);\n }\n\n private static _addEmptyReplace(scanner: PpScanner, start: number) {\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const endPosition = scanner.getCurPosition();\n const range = ShaderLab.createRange(startPosition, endPosition);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: \"\"\n });\n }\n\n private static _parseIf(scanner: PpScanner) {\n const start = scanner.current - 3;\n\n const constantExpr = this._parseConstantExpression(scanner);\n this._addEmptyReplace(scanner, start);\n\n const { token: bodyChunk, nextDirective } = scanner.scanMacroBranchChunk();\n if (!!constantExpr) {\n const end = nextDirective.type === EPpKeyword.endif ? scanner.getShaderPosition(0) : scanner.scanRemainMacro();\n const expanded = this._expandMacroChunk(bodyChunk.lexeme, bodyChunk.location, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const range = ShaderLab.createRange(bodyChunk.location.start, end);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n return;\n }\n\n this.expandSegments.pop();\n this._addEmptyReplace(scanner, start);\n this._parseMacroBranch(<any>nextDirective.type, scanner);\n }\n\n private static _parseDefine(scanner: PpScanner) {\n const start = scanner.getShaderPosition(7);\n const macro = scanner.scanWord();\n\n let end = macro.location.end;\n if (this._definedMacros.get(macro.lexeme) && macro.lexeme.startsWith(\"GL_\")) {\n this.reportError(macro.location, `redefined macro: ${macro.lexeme}`, scanner.source, scanner.file);\n }\n\n let macroArgs: BaseToken[] | undefined;\n if (scanner.getCurChar() === \"(\") {\n macroArgs = scanner.scanWordsUntilChar(\")\");\n end = scanner.getShaderPosition(0);\n }\n const macroBody = scanner.scanLineRemain();\n const range = ShaderLab.createRange(start, end);\n const macroDefine = new MacroDefine(macro, macroBody, range, macroArgs);\n this._definedMacros.set(macro.lexeme, macroDefine);\n\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange);\n // #endif\n\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: ShaderLab.createRange(start, scanner.getCurPosition()),\n replace: \"\"\n });\n }\n\n private static _parseUndef(scanner: PpScanner) {\n const start = scanner.current - 6;\n const macro = scanner.scanWord();\n\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const range = ShaderLab.createRange(startPosition, scanner.getCurPosition());\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: \"\"\n });\n this._definedMacros.delete(macro.lexeme);\n }\n\n private static _onToken(token: BaseToken, scanner: PpScanner) {\n const macro = this._definedMacros.get(token.lexeme);\n if (macro) {\n let replace = macro.body.lexeme;\n if (macro.isFunction) {\n scanner.scanToChar(\"(\");\n scanner._advance();\n\n // extract parameters\n const args: string[] = [];\n let curLvl = 1;\n let curIdx = scanner.current;\n while (true) {\n if (scanner.getCurChar() === \"(\") curLvl += 1;\n else if (scanner.getCurChar() === \")\") {\n curLvl -= 1;\n if (curLvl === 0) break;\n } else if (scanner.getCurChar() === \",\" && curLvl === 1) {\n args.push(scanner.source.slice(curIdx, scanner.current));\n curIdx = scanner.current + 1;\n }\n scanner._advance();\n }\n args.push(scanner.source.slice(curIdx, scanner.current));\n\n scanner._advance();\n const range = ShaderLab.createRange(token.location!.start, scanner.getCurPosition());\n replace = macro.expandFunctionBody(args);\n const expanded = this._expandMacroChunk(replace, range, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const blockRange = ShaderLab.createRange(token.location!.start, scanner.getCurPosition());\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: blockRange,\n replace: expanded.content\n });\n } else {\n const expanded = this._expandMacroChunk(replace, token.location, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const range = ShaderLab.createRange(token.location.start, token.location.end);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n }\n }\n }\n}\n","import { PpParser } from \"./PpParser\";\nimport PpScanner from \"./PpScanner\";\n\n/** @internal */\nexport class Preprocessor {\n static baseScanner: PpScanner;\n\n /**\n * Reset the parser of `Preprocessor`\n * @param basePathForIncludeKey - the base path to resolve the relative path of `#include` directive\n */\n static reset(includeMap: Record<string, string>, basePathForIncludeKey: string): void {\n PpParser.reset(includeMap, basePathForIncludeKey);\n }\n\n /**\n * Should call it after reset.\n */\n static process(source: string): string | null {\n this.baseScanner = new PpScanner(source);\n return PpParser.parse(this.baseScanner);\n }\n\n static addPredefinedMacro(macro: string, value?: string): void {\n PpParser.addPredefinedMacro(macro, value);\n }\n\n // #if _VERBOSE\n static convertSourceIndex(index: number) {\n return this.baseScanner.sourceMap.map(index);\n }\n // #endif\n}\n","import { NoneTerminal, GrammarSymbol } from \"./parser/GrammarSymbol\";\nimport { BaseToken as Token } from \"./common/BaseToken\";\nimport { EKeyword, ETokenType, GalaceanDataType } from \"./common\";\nimport { TreeNode } from \"./parser/AST\";\n// #if _VERBOSE\nimport State from \"./lalr/State\";\n// #endif\n\nexport class ParserUtils {\n static unwrapNodeByType<T = TreeNode>(node: TreeNode, type: NoneTerminal): T | undefined {\n const child = node.children[0];\n if (child instanceof Token) return;\n if (child.nt === type) return child as T;\n return ParserUtils.unwrapNodeByType(child, type);\n }\n\n // #if _VERBOSE\n /**\n * Check if type `tb` is compatible with type `ta`.\n */\n static typeCompatible(ta: GalaceanDataType, tb: GalaceanDataType | undefined) {\n if (tb == undefined) return true;\n if (ta === EKeyword.INT) {\n return ta === tb || tb === EKeyword.UINT;\n }\n return ta === tb;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? EKeyword[sm];\n }\n return NoneTerminal[sm];\n }\n // #endif\n\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n /**\n * @internal\n */\n // #if _VERBOSE\n static printStatePool(logPath: string) {\n let output = \"\";\n\n console.log(\"========== Parser Pool ==========\");\n\n let count = 0;\n for (const state of State.pool.values()) {\n count++;\n let tmp = \"\";\n tmp += `${state.id}: \\n`.padEnd(4);\n for (const psItem of state.items) {\n tmp += \" \" + psItem.toString() + \"\\n\";\n }\n output += tmp;\n }\n\n console.log(\"state count:\", count);\n console.log(output);\n }\n // #endif\n}\n","import { EShaderStage } from \"../common/Enums\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ESymbolType, TargetSymbolTable, SymbolInfo } from \"../parser/symbolTable\";\nimport { IParamInfo, StructProp } from \"../parser/types\";\nimport { GSErrorName } from \"../GSError\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\n/** @internal */\nexport class VisitorContext {\n private static _singleton: VisitorContext;\n static get context() {\n return this._singleton;\n }\n\n static reset() {\n if (!this._singleton) {\n this._singleton = new VisitorContext();\n }\n this._singleton.reset();\n }\n\n attributeList: IParamInfo[] = [];\n attributeStructs: ASTNode.StructSpecifier[] = [];\n varyingStruct?: ASTNode.StructSpecifier;\n mrtStruct?: ASTNode.StructSpecifier;\n\n stage: EShaderStage;\n\n _referencedAttributeList: Record<string, IParamInfo & { qualifier?: string }> = Object.create(null);\n _referencedGlobals: Record<string, SymbolInfo | ASTNode.PrecisionSpecifier> = Object.create(null);\n _referencedVaryingList: Record<string, IParamInfo & { qualifier?: string }> = Object.create(null);\n _referencedMRTList: Record<string, StructProp | string> = Object.create(null);\n\n _curFn?: ASTNode.FunctionProtoType;\n\n _passSymbolTable: TargetSymbolTable;\n\n private constructor() {}\n\n get passSymbolTable() {\n return this._passSymbolTable;\n }\n\n reset() {\n this.attributeList.length = 0;\n this.attributeStructs.length = 0;\n this._referencedAttributeList = Object.create(null);\n this._referencedGlobals = Object.create(null);\n this._referencedVaryingList = Object.create(null);\n this._referencedMRTList = Object.create(null);\n this.mrtStruct = undefined;\n }\n\n isAttributeStruct(type: string) {\n return this.attributeStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isVaryingStruct(type: string) {\n return this.varyingStruct?.ident?.lexeme === type;\n }\n\n isMRTStruct(type: string) {\n return this.mrtStruct?.ident?.lexeme === type;\n }\n\n referenceAttribute(ident: BaseToken): Error | void {\n if (this._referencedAttributeList[ident.lexeme]) return;\n\n const prop = this.attributeList.find((item) => item.ident.lexeme === ident.lexeme);\n if (!prop) {\n return ShaderLabUtils.createGSError(\n `referenced attribute not found: ${ident.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedAttributeList[ident.lexeme] = prop;\n }\n\n referenceVarying(ident: BaseToken): Error | void {\n if (this._referencedVaryingList[ident.lexeme]) return;\n\n const prop = this.varyingStruct?.propList.find((item) => item.ident.lexeme === ident.lexeme);\n if (!prop) {\n return ShaderLabUtils.createGSError(\n `referenced varying not found: ${ident.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedVaryingList[ident.lexeme] = prop;\n }\n\n referenceMRTProp(ident: BaseToken): Error | void {\n if (this._referencedMRTList[ident.lexeme]) return;\n\n const prop = this.mrtStruct?.propList.find((item) => item.ident.lexeme === ident.lexeme);\n if (!prop) {\n return ShaderLabUtils.createGSError(\n `referenced mrt not found: ${ident.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedMRTList[ident.lexeme] = prop;\n }\n\n referenceGlobal(ident: string, type: ESymbolType) {\n if (this._referencedGlobals[ident]) return;\n\n if (type === ESymbolType.FN) {\n const fnEntries = this._passSymbolTable.getAllFnSymbols(ident);\n for (let i = 0; i < fnEntries.length; i++) {\n const key = i === 0 ? ident : ident + i;\n this._referencedGlobals[key] = fnEntries[i];\n }\n return;\n }\n const sm = this._passSymbolTable.lookup(ident, type);\n if (sm) {\n this._referencedGlobals[ident] = sm;\n }\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class TempArray<T> implements IPoolElement {\n array: Array<T> = new Array();\n\n dispose(): void {\n this.array.length = 0;\n }\n}\n","import { NoneTerminal } from \"../parser/GrammarSymbol\";\nimport { BaseToken as Token } from \"../common/BaseToken\";\nimport { EKeyword, ShaderPosition, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ESymbolType, FnSymbol, VarSymbol } from \"../parser/symbolTable\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { NodeChild } from \"../parser/types\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { Logger, ReturnableObjectPool } from \"@galacean/engine\";\nimport { TempArray } from \"../TempArray\";\n\nexport const V3_GL_FragColor = \"GS_glFragColor\";\nexport const V3_GL_FragData = \"GS_glFragData\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor {\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n abstract getFragDataCodeGen(index: string | number): string;\n abstract getReferencedMRTPropText(index: string | number, ident: string): string;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n let ret = pool.get();\n ret.dispose();\n for (const child of children) {\n if (child instanceof Token) {\n ret.array.push(child.lexeme);\n } else {\n ret.array.push(child.codeGen(this));\n }\n }\n pool.return(ret);\n return ret.array.join(\" \");\n }\n\n visitPostfixExpression(node: ASTNode.PostfixExpression) {\n const children = node.children;\n const derivationLength = children.length;\n const context = VisitorContext.context;\n\n if (derivationLength === 3) {\n const postExpr = children[0] as ASTNode.PostfixExpression;\n const prop = children[2];\n\n if (prop instanceof Token) {\n if (context.isAttributeStruct(<string>postExpr.type)) {\n const error = context.referenceAttribute(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isVaryingStruct(<string>postExpr.type)) {\n const error = context.referenceVarying(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isMRTStruct(<string>postExpr.type)) {\n const error = context.referenceMRTProp(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n }\n\n return `${postExpr.codeGen(this)}.${prop.lexeme}`;\n } else {\n return `${postExpr.codeGen(this)}.${prop.codeGen(this)}`;\n }\n } else if (derivationLength === 4) {\n const identNode = children[0] as ASTNode.PostfixExpression;\n const indexNode = children[2] as ASTNode.Expression;\n const identLexeme = identNode.codeGen(this);\n const indexLexeme = indexNode.codeGen(this);\n if (identLexeme === \"gl_FragData\") {\n // #if _VERBOSE\n if (context._referencedVaryingList[V3_GL_FragColor]) {\n this._reportError(identNode.location, \"cannot use both gl_FragData and gl_FragColor\");\n }\n // #endif\n const mrtLexeme = this.getFragDataCodeGen(indexLexeme);\n context._referencedMRTList[mrtLexeme] = this.getReferencedMRTPropText(indexLexeme, mrtLexeme);\n return mrtLexeme;\n }\n return `${identLexeme}[${indexLexeme}]`;\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n if (node.symbolInfo instanceof VarSymbol && node.symbolInfo.isGlobalVariable) {\n VisitorContext.context.referenceGlobal(node.lexeme, ESymbolType.VAR);\n }\n return node.lexeme;\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n VisitorContext.context.referenceGlobal(call.fnSymbol.ident, ESymbolType.FN);\n\n const paramList = call.children[2];\n const paramInfoList = call.fnSymbol.astNode.protoType.parameterList;\n\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const plainParams: string[] = [];\n const params = paramList.paramNodes;\n\n for (let i = 0; i < params.length; i++) {\n if (\n !VisitorContext.context.isAttributeStruct(paramInfoList[i].typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(paramInfoList[i].typeInfo.typeLexeme)\n ) {\n plainParams.push(params[i].codeGen(this));\n }\n }\n return `${call.fnSymbol.ident}(${plainParams.join(\", \")})`;\n }\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitStatementList(node: ASTNode.StatementList): string {\n const children = node.children as TreeNode[];\n if (children.length === 1) {\n return children[0].codeGen(this);\n } else {\n return `${children[0].codeGen(this)}\\n${children[1].codeGen(this)}`;\n }\n }\n\n visitSingleDeclaration(node: ASTNode.SingleDeclaration): string {\n const type = node.typeSpecifier.type;\n if (typeof type === \"string\") {\n VisitorContext.context.referenceGlobal(type, ESymbolType.STRUCT);\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitGlobalVariableDeclaration(node: ASTNode.VariableDeclaration): string {\n const children = node.children;\n const fullType = children[0];\n if (fullType instanceof ASTNode.FullySpecifiedType && fullType.typeSpecifier.isCustom) {\n VisitorContext.context.referenceGlobal(<string>fullType.type, ESymbolType.STRUCT);\n }\n return this.defaultCodeGen(children);\n }\n\n visitDeclaration(node: ASTNode.Declaration): string {\n const { context } = VisitorContext;\n const children = node.children;\n const child = children[0];\n\n if (child instanceof ASTNode.InitDeclaratorList) {\n const typeLexeme = child.typeInfo.typeLexeme;\n if (context.isVaryingStruct(typeLexeme) || context.isMRTStruct(typeLexeme)) return \"\";\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionProtoType(node: ASTNode.FunctionProtoType): string {\n VisitorContext.context._curFn = node;\n return this.defaultCodeGen(node.children);\n }\n\n visitFunctionDefinition(node: ASTNode.FunctionDefinition): string {\n VisitorContext.context._curFn = undefined;\n return this.defaultCodeGen(node.children);\n }\n\n visitFunctionParameterList(node: ASTNode.FunctionParameterList): string {\n const params = node.parameterInfoList;\n return params\n .filter(\n (item) =>\n !VisitorContext.context.isAttributeStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(item.typeInfo.typeLexeme)\n )\n .map((item) => item.astNode.codeGen(this))\n .join(\", \");\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n const returnType = node.returnType.typeSpecifier.lexeme;\n if (VisitorContext.context.isAttributeStruct(returnType) || VisitorContext.context.isVaryingStruct(returnType))\n return `void ${node.ident.lexeme}(`;\n return this.defaultCodeGen(node.children);\n }\n\n visitJumpStatement(node: ASTNode.JumpStatement): string {\n const children = node.children;\n const cmd = children[0] as Token;\n if (cmd.type === EKeyword.RETURN) {\n const expr = children[1];\n if (expr instanceof ASTNode.Expression) {\n const returnVar = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n expr,\n NoneTerminal.variable_identifier\n );\n if (returnVar?.typeInfo === VisitorContext.context.varyingStruct?.ident?.lexeme) {\n return \"\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n if (returnFnCall?.type === VisitorContext.context.varyingStruct?.ident?.lexeme) {\n return `${expr.codeGen(this)};`;\n }\n }\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n protected _reportError(loc: ShaderRange | ShaderPosition, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, SymbolInfo } from \"../parser/symbolTable\";\nimport { EShaderStage } from \"../common/Enums\";\nimport { IShaderInfo } from \"@galacean/engine-design\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { EKeyword } from \"../common\";\n\nconst defaultPrecision = `\n#ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n precision highp int;\n#else\n precision mediump float;\n precision mediump int;\n#endif\n`;\n\n/**\n * @internal\n */\nexport abstract class GLESVisitor extends CodeGenVisitor {\n protected _versionText: string = \"\";\n protected _extensions: string = \"\";\n private _globalCodeArray: ICodeSegment[] = [];\n\n abstract getAttributeDeclare(out: ICodeSegment[]): void;\n abstract getVaryingDeclare(out: ICodeSegment[]): void;\n abstract getMRTDeclare(out: ICodeSegment[]): void;\n\n visitShaderProgram(node: ASTNode.GLShaderProgram, vertexEntry: string, fragmentEntry: string): IShaderInfo {\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n VisitorContext.reset();\n VisitorContext.context._passSymbolTable = node.shaderData.symbolTable;\n\n return {\n vertex: this.vertexMain(vertexEntry, node.shaderData),\n fragment: this._fragmentMain(fragmentEntry, node.shaderData)\n };\n }\n\n vertexMain(entry: string, data: ShaderData): string {\n const { symbolTable } = data;\n const fnSymbol = symbolTable.lookup(entry, ESymbolType.FN);\n if (!fnSymbol?.astNode) throw `no entry function found: ${entry}`;\n\n const fnNode = fnSymbol.astNode;\n VisitorContext.context.stage = EShaderStage.VERTEX;\n\n const returnType = fnNode.protoType.returnType;\n if (typeof returnType.type === \"string\") {\n const varyStruct = symbolTable.lookup(returnType.type, ESymbolType.STRUCT);\n if (!varyStruct) {\n this._reportError(returnType.location, `invalid varying struct: ${returnType.type}`);\n } else {\n VisitorContext.context.varyingStruct = varyStruct.astNode;\n }\n } else if (returnType.type !== EKeyword.VOID) {\n this._reportError(returnType.location, \"vertex main entry can only return struct or void.\");\n }\n\n const paramList = fnNode.protoType.parameterList;\n if (paramList?.length) {\n for (const paramInfo of paramList) {\n if (typeof paramInfo.typeInfo.type === \"string\") {\n const structSymbol = symbolTable.lookup(paramInfo.typeInfo.type, ESymbolType.STRUCT);\n if (!structSymbol) {\n this._reportError(paramInfo.astNode.location, `Not found attribute struct \"${paramInfo.typeInfo.type}\".`);\n continue;\n }\n VisitorContext.context.attributeStructs.push(structSymbol.astNode);\n for (const prop of structSymbol.astNode.propList) {\n VisitorContext.context.attributeList.push(prop);\n }\n } else {\n VisitorContext.context.attributeList.push(paramInfo);\n }\n }\n }\n\n const statements = fnNode.statements.codeGen(this);\n\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n\n this._getGlobalText(data, globalCodeArray);\n this.getAttributeDeclare(globalCodeArray);\n this.getVaryingDeclare(globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n VisitorContext.context.reset();\n\n return `${this._versionText}\\n${globalCode}\\n\\nvoid main() ${statements}`;\n }\n\n private _fragmentMain(entry: string, data: ShaderData): string {\n const { symbolTable } = data;\n const fnSymbol = symbolTable.lookup(entry, ESymbolType.FN);\n if (!fnSymbol?.astNode) throw `no entry function found: ${entry}`;\n const fnNode = fnSymbol.astNode;\n\n const { returnStatement } = fnNode;\n if (returnStatement) {\n returnStatement.isFragReturnStatement = true;\n }\n\n const { context } = VisitorContext;\n context.stage = EShaderStage.FRAGMENT;\n\n const { type: returnDataType, location: returnLocation } = fnNode.protoType.returnType;\n if (typeof returnDataType === \"string\") {\n const mrtStruct = symbolTable.lookup(returnDataType, ESymbolType.STRUCT);\n if (!mrtStruct) {\n this._reportError(returnLocation, `invalid mrt struct: ${returnDataType}`);\n } else {\n context.mrtStruct = mrtStruct.astNode;\n }\n } else if (returnDataType !== EKeyword.VOID && returnDataType !== EKeyword.VEC4) {\n this._reportError(returnLocation, \"fragment main entry can only return struct or vec4.\");\n }\n\n const statements = fnNode.statements.codeGen(this);\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n\n this._getGlobalText(data, globalCodeArray);\n this.getVaryingDeclare(globalCodeArray);\n this.getMRTDeclare(globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n context.reset();\n return `${this._versionText}\\n${this._extensions}\\n${defaultPrecision}\\n${globalCode}\\n\\nvoid main() ${statements}`;\n }\n\n private _getGlobalText(\n data: ShaderData,\n textList: ICodeSegment[],\n lastLength: number = 0,\n _serialized: Set<string> = new Set()\n ): ICodeSegment[] {\n const { _referencedGlobals } = VisitorContext.context;\n\n if (lastLength === Object.keys(_referencedGlobals).length) {\n for (const precision of data.globalPrecisions) {\n textList.push({ text: precision.codeGen(this), index: precision.location.start.index });\n }\n return textList;\n }\n\n lastLength = Object.keys(_referencedGlobals).length;\n for (const ident in _referencedGlobals) {\n const sm = _referencedGlobals[ident];\n\n if (_serialized.has(ident)) continue;\n _serialized.add(ident);\n\n if (sm instanceof SymbolInfo) {\n if (sm.symbolType === ESymbolType.VAR) {\n textList.push({ text: `uniform ${sm.astNode.codeGen(this)}`, index: sm.astNode.location.start.index });\n } else {\n textList.push({ text: sm.astNode!.codeGen(this), index: sm.astNode!.location.start.index });\n }\n } else {\n textList.push({ text: sm.codeGen(this), index: sm.location.start.index });\n }\n }\n return this._getGlobalText(data, textList, lastLength, _serialized);\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode } from \"../parser/AST\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { ICodeSegment } from \"./types\";\n\nexport class GLES100Visitor extends GLESVisitor {\n override _versionText: string = `#version 100`;\n override _extensions: string = [\n \"GL_EXT_shader_texture_lod\",\n \"GL_OES_standard_derivatives\",\n \"GL_EXT_draw_buffers\",\n \"GL_EXT_frag_depth\"\n ]\n .map((e) => `#extension ${e} : enable\\n`)\n .join(\"\");\n\n private static _singleton: GLES100Visitor;\n static getVisitor(): GLES100Visitor {\n if (!this._singleton) {\n this._singleton = new GLES100Visitor();\n }\n return this._singleton;\n }\n\n override getFragDataCodeGen(index: string | number): string {\n return `gl_FragData[${index}]`;\n }\n\n override getReferencedMRTPropText(index: string | number, ident: string): string {\n return \"\";\n }\n\n override getAttributeDeclare(out: ICodeSegment[]): void {\n for (const item of Object.values(VisitorContext.context._referencedAttributeList)) {\n out.push({\n text: `attribute ${item.typeInfo.typeLexeme} ${item.ident.lexeme};`,\n index: item.ident.location.start.index\n });\n }\n }\n\n override getVaryingDeclare(out: ICodeSegment[]): void {\n for (const item of Object.values(VisitorContext.context._referencedVaryingList)) {\n out.push({\n text: `varying ${item.typeInfo.typeLexeme} ${item.ident.lexeme};`,\n index: item.ident.location.start.index\n });\n }\n }\n\n override getMRTDeclare(out: ICodeSegment[]): void {\n return;\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const { context } = VisitorContext;\n if (postExpr instanceof ASTNode.PostfixExpression && context.isMRTStruct(<string>postExpr.type)) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtStruct!.propList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n if (!prop) {\n this._reportError(propReferenced.location, `not found mrt property: ${propReferenced.lexeme}`);\n return \"\";\n }\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n const expression = node.children[1] as ASTNode.Expression;\n return `gl_FragColor = ${expression.codeGen(this)}`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { ASTNode, TreeNode } from \"../parser/AST\";\nimport { SymbolType } from \"../parser/types\";\nimport { BaseToken as Token } from \"../common/BaseToken\";\nimport { EKeyword, ETokenType } from \"../common\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { EShaderStage } from \"../common/Enums\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { V3_GL_FragColor, V3_GL_FragData } from \"./CodeGenVisitor\";\n\nexport class GLES300Visitor extends GLESVisitor {\n override _versionText: string = \"#version 300 es\";\n\n private static _singleton: GLES300Visitor;\n static getVisitor(): GLES300Visitor {\n if (!this._singleton) {\n this._singleton = new GLES300Visitor();\n }\n return this._singleton;\n }\n\n override getFragDataCodeGen(index: string | number): string {\n return `${V3_GL_FragData}_${index}`;\n }\n\n override getReferencedMRTPropText(index: string | number, ident: string): string {\n return `layout(location = ${index}) out vec4 ${ident};`;\n }\n\n override getAttributeDeclare(out: ICodeSegment[]): void {\n for (const item of Object.values(VisitorContext.context._referencedAttributeList)) {\n out.push({\n text: `in ${item.typeInfo.typeLexeme} ${item.ident.lexeme};`,\n index: item.ident.location.start.index\n });\n }\n }\n\n override getVaryingDeclare(out: ICodeSegment[]): void {\n const qualifier = VisitorContext.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n const values = Object.values(VisitorContext.context._referencedVaryingList);\n for (let i = 0; i < values.length; i++) {\n const item = values[i];\n out.push({\n text: `${item.qualifier ?? qualifier} ${item.typeInfo.typeLexeme} ${item.ident.lexeme};`,\n index: item.ident.location.start.index\n });\n }\n }\n\n override getMRTDeclare(out: ICodeSegment[]): void {\n const referencedMRTList = VisitorContext.context._referencedMRTList;\n for (let ident in referencedMRTList) {\n const info = referencedMRTList[ident];\n if (typeof info === \"string\") {\n out.push({\n text: info,\n index: Number.MAX_SAFE_INTEGER\n });\n } else {\n out.push({\n text: this.getReferencedMRTPropText(info.mrtIndex, ident),\n index: info.ident.location.start.index\n });\n }\n }\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (typeSpecifier.children.length !== 1) {\n return this.defaultCodeGen(children);\n }\n let ident = node.lexeme;\n if (node.ident === \"texture2D\" || node.ident === \"textureCube\") {\n ident = \"texture\";\n } else if (node.ident === \"texture2DProj\") {\n ident = \"textureProj\";\n } else if (VisitorContext.context.stage === EShaderStage.FRAGMENT) {\n switch (node.ident) {\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n case \"gl_FragDepthEXT\":\n ident = \"gl_FragDepth\";\n break;\n }\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const { context } = VisitorContext;\n if (context.stage === EShaderStage.FRAGMENT && node.lexeme === \"gl_FragColor\") {\n // #if _VERBOSE\n if (context._referencedMRTList[\"gl_FragData\"]) {\n this._reportError(node.location, \"cannot use both gl_FragData and gl_FragColor\");\n }\n if (context.mrtStruct) {\n this._reportError(node.location, \"gl_FragColor cannot be used with MRT (Multiple Render Targets).\");\n }\n // #endif\n this._registerFragColorVariable(node);\n return V3_GL_FragColor;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n const { mrtStruct } = VisitorContext.context;\n if (mrtStruct) {\n return \"\";\n }\n this._registerFragColorVariable(node);\n\n const expression = node.children[1] as ASTNode.Expression;\n return `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable(node: TreeNode) {\n const { _referencedVaryingList } = VisitorContext.context;\n if (!_referencedVaryingList[V3_GL_FragColor]) {\n const token = Token.pool.get();\n token.set(ETokenType.ID, V3_GL_FragColor, ShaderLab.createPosition(0, 0, 0));\n _referencedVaryingList[V3_GL_FragColor] = {\n ident: token,\n typeInfo: new SymbolType(EKeyword.VEC4, \"vec4\"),\n qualifier: \"out\",\n astNode: node\n };\n }\n }\n}\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { EKeyword } from \"../common\";\n\nexport const KeywordMap = new Map([\n [\"RenderQueueType\", EKeyword.GS_RenderQueueType],\n [\"BlendState\", EKeyword.GS_BlendState],\n [\"DepthState\", EKeyword.GS_DepthState],\n [\"StencilState\", EKeyword.GS_StencilState],\n [\"RasterState\", EKeyword.GS_RasterState],\n [\"EditorProperties\", EKeyword.GS_EditorProperties],\n [\"EditorMacros\", EKeyword.GS_EditorMacros],\n [\"Editor\", EKeyword.GS_Editor],\n [\"Tags\", EKeyword.GS_Tags],\n [\"VertexShader\", EKeyword.GS_VertexShader],\n [\"FragmentShader\", EKeyword.GS_FragmentShader],\n [\"SubShader\", EKeyword.GS_SubShader],\n [\"Pass\", EKeyword.GS_Pass],\n [\"BlendFactor\", EKeyword.GS_BlendFactor],\n [\"BlendOperation\", EKeyword.GS_BlendOperation],\n [\"Bool\", EKeyword.GS_Bool],\n [\"Number\", EKeyword.GS_Number],\n [\"CompareFunction\", EKeyword.GS_CompareFunction],\n [\"StencilOperation\", EKeyword.GS_StencilOperation],\n [\"CullMode\", EKeyword.GS_CullMode],\n [\"true\", EKeyword.TRUE],\n [\"false\", EKeyword.FALSE],\n [\"UsePass\", EKeyword.GS_UsePass],\n [\"Color\", EKeyword.GS_Color]\n]);\n","import BaseScanner from \"../common/BaseScanner\";\n\nexport default class Scanner extends BaseScanner {\n constructor(source: string, kws: Map<string, number> = new Map()) {\n super(source, kws);\n }\n\n /**\n * split by space\n */\n scanWord(): string {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n while (/\\S/.test(this.getCurChar()) && !this.isEnd()) this._advance();\n return this._source.substring(start, this._currentIndex);\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n while (/[0-9]/.test(this.getCurChar())) this._advance();\n if (this.getCurChar() === \".\") {\n this._advance();\n while (/[0-9]/.test(this.getCurChar())) this._advance();\n }\n return Number(this._source.substring(start, this._currentIndex));\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this._advance();\n }\n this._advance();\n }\n // #endif\n}\n","import { Logger } from \"@galacean/engine\";\nimport { TokenType } from \"../common\";\nimport { BaseSymbolTable, IBaseSymbol } from \"../common/BaseSymbolTable\";\n\nexport interface ISymbol extends IBaseSymbol {\n type: number;\n value?: any;\n}\n\nexport default class ContentSymbolTable extends BaseSymbolTable<ISymbol> {\n override insert(sm: ISymbol): void {\n const entry = this._table.get(sm.ident) ?? [];\n for (let i = 0; i < entry.length; i++) {\n if (entry[i].type === sm.type) {\n Logger.warn(\"replace symbol:\", sm.ident);\n entry[i] = sm;\n return;\n }\n }\n entry.push(sm);\n this._table.set(sm.ident, entry);\n }\n\n lookup(ident: string, type: TokenType): ISymbol | undefined {\n const entry = this._table.get(ident);\n if (entry) {\n for (let length = entry.length, i = 0; i < length; i++) {\n const item = entry[i];\n if (item.type === type) return item;\n }\n }\n }\n}\n","import { SymbolTableStack } from \"../common/BaseSymbolTable\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { EKeyword, ETokenType, TokenType } from \"../common\";\nimport { ShaderPosition } from \"../common\";\nimport { KeywordMap } from \"./KeywordMap\";\nimport Scanner from \"./Scanner\";\nimport ContentSymbolTable, { ISymbol } from \"./ContentSymbolTable\";\nimport {\n RenderStateDataKey,\n Color,\n RenderQueueType,\n CompareFunction,\n StencilOperation,\n BlendOperation,\n BlendFactor,\n CullMode,\n Logger\n} from \"@galacean/engine\";\nimport {\n IStatement,\n IShaderContent,\n ISubShaderContent,\n IShaderPassContent,\n IRenderStates\n} from \"@galacean/engine-design\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nconst EngineType = [\n EKeyword.GS_RenderQueueType,\n EKeyword.GS_BlendFactor,\n EKeyword.GS_BlendOperation,\n EKeyword.GS_Bool,\n EKeyword.GS_Number,\n EKeyword.GS_Color,\n EKeyword.GS_CompareFunction,\n EKeyword.GS_StencilOperation,\n EKeyword.GS_CullMode\n];\n\nconst RenderStateType = [\n EKeyword.GS_BlendState,\n EKeyword.GS_DepthState,\n EKeyword.GS_RasterState,\n EKeyword.GS_StencilState\n];\n\n/**\n * @internal\n */\nexport class ShaderContentParser {\n static _engineType = { RenderQueueType, CompareFunction, StencilOperation, BlendOperation, BlendFactor, CullMode };\n\n static _errors: GSError[] = [];\n\n private static _symbolTableStack: SymbolTableStack<ISymbol, ContentSymbolTable> = new SymbolTableStack();\n\n static reset() {\n this._errors.length = 0;\n this._symbolTableStack.clear();\n this._newScope();\n }\n\n static parse(source: string): IShaderContent {\n const start = performance.now();\n\n const scanner = new Scanner(source, KeywordMap);\n const ret = {\n subShaders: [],\n globalContents: [],\n renderStates: { constantMap: {}, variableMap: {} }\n } as IShaderContent;\n\n scanner.scanText(\"Shader\");\n ret.name = scanner.scanPairedText('\"', '\"');\n scanner.scanText(\"{\");\n\n scanner.skipCommentsAndSpace();\n this._parseShaderStatements(ret, scanner);\n\n const shaderGlobalStatements = ret.globalContents;\n const shaderRenderStates = ret.renderStates;\n for (let i = 0; i < ret.subShaders.length; i++) {\n const subShader = ret.subShaders[i];\n const curSubShaderGlobalStatements = shaderGlobalStatements.concat(subShader.globalContents);\n const constMap = { ...shaderRenderStates.constantMap, ...subShader.renderStates.constantMap };\n const variableMap = { ...shaderRenderStates.variableMap, ...subShader.renderStates.variableMap };\n\n for (let i = 0; i < subShader.passes.length; i++) {\n const pass = subShader.passes[i];\n Object.assign(pass.renderStates.constantMap, constMap);\n Object.assign(pass.renderStates.variableMap, variableMap);\n if (pass.isUsePass) continue;\n // @ts-ignore\n const passGlobalStatements = curSubShaderGlobalStatements.concat(pass.globalContents);\n pass.contents = passGlobalStatements.map((item) => item.content).join(\"\\n\");\n }\n }\n\n Logger.info(`[content compilation] cost time ${performance.now() - start}ms`);\n\n return ret;\n }\n\n private static _isRenderStateDeclarator(token: BaseToken) {\n return RenderStateType.includes(token.type);\n }\n\n private static _isEngineType(token: BaseToken) {\n return EngineType.includes(token.type);\n }\n\n private static _lookupSymbolByType(ident: string, type: TokenType): ISymbol | undefined {\n const stack = ShaderContentParser._symbolTableStack.stack;\n for (let length = stack.length, i = length - 1; i >= 0; i--) {\n const symbolTable = stack[i];\n const ret = symbolTable.lookup(ident, type);\n if (ret) return ret;\n }\n }\n\n private static _parseShaderStatements(ret: IShaderContent, scanner: Scanner) {\n let braceLevel = 1;\n let start = scanner.getCurPosition();\n\n while (true) {\n const word = scanner.scanToken();\n switch (word.type) {\n case EKeyword.GS_SubShader:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n const subShader = this._parseSubShader(scanner);\n ret.subShaders.push(subShader);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_EditorProperties:\n case EKeyword.GS_EditorMacros:\n case EKeyword.GS_Editor:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n scanner.scanPairedText(\"{\", \"}\", true);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_RenderQueueType:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderQueueAssignment(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case ETokenType.NOT_WORD:\n if (word.lexeme === \"{\") braceLevel += 1;\n else if (word.lexeme === \"}\") {\n braceLevel -= 1;\n if (braceLevel === 0) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._symbolTableStack.dropScope();\n return;\n }\n }\n\n default:\n if (ShaderContentParser._isRenderStateDeclarator(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderStateDeclarationOrAssignment(ret, word, scanner);\n start = scanner.getCurPosition();\n break;\n } else if (ShaderContentParser._isEngineType(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseVariableDeclaration(word.type, scanner);\n start = scanner.getCurPosition();\n break;\n }\n }\n }\n }\n\n private static _parseRenderStateDeclarationOrAssignment(\n ret: { renderStates: IRenderStates },\n stateToken: BaseToken,\n scanner: Scanner\n ) {\n const ident = scanner.scanToken();\n let isDeclaration: boolean;\n if (ident.type === ETokenType.ID) {\n isDeclaration = true;\n scanner.scanText(\"{\");\n } else if (ident.lexeme === \"{\") {\n isDeclaration = false;\n } else if (ident.lexeme === \"=\") {\n const variable = scanner.scanToken();\n scanner.scanText(\";\");\n const sm = ShaderContentParser._lookupSymbolByType(variable.lexeme, stateToken.type);\n if (!sm?.value) {\n const error = ShaderLabUtils.createGSError(\n `Invalid \"${stateToken.lexeme}\" variable: ${variable.lexeme}`,\n GSErrorName.CompilationError,\n scanner.source,\n variable.location\n );\n // #if _VERBOSE\n this._errors.push(<GSError>error);\n return;\n // #endif\n }\n const renderState = sm.value as IRenderStates;\n Object.assign(ret.renderStates.constantMap, renderState.constantMap);\n Object.assign(ret.renderStates.variableMap, renderState.variableMap);\n return;\n }\n\n const renderState = this._parseRenderStatePropList(stateToken.lexeme, scanner);\n if (isDeclaration) {\n this._symbolTableStack.insert({ ident: ident.lexeme, type: stateToken.type, value: renderState });\n } else {\n Object.assign(ret.renderStates.constantMap, renderState.constantMap);\n Object.assign(ret.renderStates.variableMap, renderState.variableMap);\n }\n }\n\n private static _parseVariableDeclaration(type: number, scanner: Scanner) {\n const token = scanner.scanToken();\n scanner.scanText(\";\");\n this._symbolTableStack.insert({ type: token.type, ident: token.lexeme });\n }\n\n private static _newScope() {\n const symbolTable = new ContentSymbolTable();\n this._symbolTableStack.newScope(symbolTable);\n }\n\n private static _dropScope() {\n this._symbolTableStack.dropScope();\n }\n\n private static _parseRenderStatePropList(state: string, scanner: Scanner): IRenderStates {\n const ret: IRenderStates = { constantMap: {}, variableMap: {} };\n while (scanner.getCurChar() !== \"}\") {\n this._parseRenderStatePropItem(ret, state, scanner);\n scanner.skipCommentsAndSpace();\n }\n scanner._advance();\n return ret;\n }\n\n private static _parseRenderStatePropItem(ret: IRenderStates, state: string, scanner: Scanner) {\n let renderStateProp = scanner.scanToken().lexeme;\n const op = scanner.scanToken();\n if (state === \"BlendState\" && renderStateProp !== \"BlendColor\" && renderStateProp !== \"AlphaToCoverage\") {\n let idx = 0;\n if (op.lexeme === \"[\") {\n idx = scanner.scanNumber();\n scanner.scanText(\"]\");\n scanner.scanText(\"=\");\n } else if (op.lexeme !== \"=\") {\n const error = ShaderLabUtils.createGSError(\n `Invalid syntax, expect character '=', but got ${op.lexeme}`,\n GSErrorName.CompilationError,\n scanner.source,\n scanner.getCurPosition()\n );\n // #if _VERBOSE\n this._errors.push(<GSError>error);\n scanner.scanToCharacter(\";\");\n return;\n // #endif\n }\n renderStateProp += idx;\n }\n\n renderStateProp = state + renderStateProp;\n const renderStateElementKey = RenderStateDataKey[renderStateProp];\n if (renderStateElementKey == undefined) {\n const error = ShaderLabUtils.createGSError(\n `Invalid render state element ${renderStateProp}`,\n GSErrorName.CompilationError,\n scanner.source,\n scanner.getCurPosition()\n );\n // #if _VERBOSE\n this._errors.push(<GSError>error);\n scanner.scanToCharacter(\";\");\n return;\n // #endif\n }\n\n scanner.skipCommentsAndSpace();\n let value: any;\n if (/[0-9.]/.test(scanner.getCurChar())) {\n value = scanner.scanNumber();\n } else {\n const token = scanner.scanToken();\n if (token.type === EKeyword.TRUE) value = true;\n else if (token.type === EKeyword.FALSE) value = false;\n else if (token.type === EKeyword.GS_Color) {\n scanner.scanText(\"(\");\n const args: number[] = [];\n while (true) {\n args.push(scanner.scanNumber());\n scanner.skipCommentsAndSpace();\n const peek = scanner.peek(1);\n if (peek === \")\") {\n scanner._advance();\n break;\n }\n scanner.scanText(\",\");\n }\n value = new Color(...args);\n } else if (scanner.getCurChar() === \".\") {\n scanner._advance();\n const engineTypeProp = scanner.scanToken();\n value = ShaderContentParser._engineType[token.lexeme]?.[engineTypeProp.lexeme];\n if (value == undefined) {\n const error = ShaderLabUtils.createGSError(\n `Invalid engine constant: ${token.lexeme}.${engineTypeProp.lexeme}`,\n GSErrorName.CompilationError,\n scanner.source,\n engineTypeProp.location\n );\n // #if _VERBOSE\n this._errors.push(<GSError>error);\n scanner.scanToCharacter(\";\");\n return;\n // #endif\n }\n } else {\n value = token.lexeme;\n }\n }\n scanner.scanText(\";\");\n if (typeof value === \"string\") {\n ret.variableMap[renderStateElementKey] = value;\n } else {\n ret.constantMap[renderStateElementKey] = value;\n }\n }\n\n private static _parseRenderQueueAssignment(ret: { renderStates: IRenderStates }, scanner: Scanner) {\n scanner.scanText(\"=\");\n const word = scanner.scanToken();\n scanner.scanText(\";\");\n const value = ShaderContentParser._engineType.RenderQueueType[word.lexeme];\n const key = RenderStateDataKey.RenderQueueType;\n if (value == undefined) {\n ret.renderStates.variableMap[key] = word.lexeme;\n } else {\n ret.renderStates.constantMap[key] = value;\n }\n }\n\n private static _addGlobalStatement(\n ret: { globalContents: IStatement[] },\n scanner: Scanner,\n start: ShaderPosition,\n offset: number\n ) {\n if (scanner.current > start.index + offset) {\n ret.globalContents.push({\n range: { start, end: { ...scanner.getCurPosition(), index: scanner.current - offset - 1 } },\n content: scanner.source.substring(start.index, scanner.current - offset - 1)\n });\n }\n }\n\n private static _parseSubShader(scanner: Scanner): ISubShaderContent {\n this._newScope();\n const ret = {\n passes: [],\n globalContents: [],\n renderStates: { constantMap: {}, variableMap: {} },\n tags: {}\n } as ISubShaderContent;\n let braceLevel = 1;\n ret.name = scanner.scanPairedText('\"', '\"');\n scanner.scanText(\"{\");\n\n scanner.skipCommentsAndSpace();\n let start = scanner.getCurPosition();\n\n while (true) {\n const word = scanner.scanToken();\n switch (word.type) {\n case EKeyword.GS_Pass:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n const pass = this._parsePass(scanner);\n ret.passes.push(pass);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_RenderQueueType:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderQueueAssignment(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_UsePass:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n const name = scanner.scanPairedText('\"', '\"');\n // @ts-ignore\n ret.passes.push({ name, isUsePass: true, renderStates: { constantMap: {}, variableMap: {} }, tags: {} });\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_Tags:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseTags(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case ETokenType.NOT_WORD:\n if (word.lexeme === \"{\") braceLevel += 1;\n else if (word.lexeme === \"}\") {\n braceLevel -= 1;\n if (braceLevel === 0) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._dropScope();\n return ret;\n }\n }\n\n default:\n if (ShaderContentParser._isRenderStateDeclarator(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderStateDeclarationOrAssignment(ret, word, scanner);\n start = scanner.getCurPosition();\n break;\n } else if (ShaderContentParser._isEngineType(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseVariableDeclaration(word.type, scanner);\n start = scanner.getCurPosition();\n break;\n }\n }\n }\n }\n\n private static _parseTags(ret: { tags?: Record<string, number | string | boolean> }, scanner: Scanner) {\n scanner.scanText(\"{\");\n while (true) {\n const ident = scanner.scanToken();\n scanner.scanText(\"=\");\n const value = scanner.scanPairedText('\"', '\"');\n scanner.skipCommentsAndSpace();\n\n ret.tags[ident.lexeme] = value;\n\n if (scanner.peek(1) === \"}\") {\n scanner._advance();\n return;\n }\n scanner.scanText(\",\");\n }\n }\n\n private static _parsePass(scanner: Scanner): IShaderPassContent {\n this._newScope();\n const ret = {\n globalContents: [],\n renderStates: { constantMap: {}, variableMap: {} },\n tags: {}\n } as IShaderPassContent & {\n globalContents: IStatement[];\n };\n ret.name = scanner.scanPairedText('\"', '\"');\n scanner.scanText(\"{\");\n let braceLevel = 1;\n\n scanner.skipCommentsAndSpace();\n let start = scanner.getCurPosition();\n\n while (true) {\n const word = scanner.scanToken();\n switch (word.type) {\n case EKeyword.GS_RenderQueueType:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderQueueAssignment(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_Tags:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseTags(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_VertexShader:\n case EKeyword.GS_FragmentShader:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n scanner.scanText(\"=\");\n const entry = scanner.scanToken();\n if (ret[word.lexeme]) {\n const error = ShaderLabUtils.createGSError(\n \"reassign main entry\",\n GSErrorName.CompilationError,\n scanner.source,\n scanner.getCurPosition()\n );\n // #if _VERBOSE\n Logger.error(error.toString());\n throw error;\n // #endif\n }\n const key = word.type === EKeyword.GS_VertexShader ? \"vertexEntry\" : \"fragmentEntry\";\n ret[key] = entry.lexeme;\n scanner.scanText(\";\");\n start = scanner.getCurPosition();\n break;\n\n case ETokenType.NOT_WORD:\n if (word.lexeme === \"{\") braceLevel += 1;\n else if (word.lexeme === \"}\") {\n braceLevel -= 1;\n if (braceLevel === 0) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._dropScope();\n return ret;\n }\n }\n\n default:\n if (ShaderContentParser._isRenderStateDeclarator(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderStateDeclarationOrAssignment(ret, word, scanner);\n start = scanner.getCurPosition();\n break;\n } else if (ShaderContentParser._isEngineType(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseVariableDeclaration(word.type, scanner);\n start = scanner.getCurPosition();\n break;\n }\n }\n }\n }\n}\n","import { Lexer } from \"./lexer\";\nimport { ShaderTargetParser } from \"./parser\";\nimport { Preprocessor } from \"./preprocessor\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport { IShaderContent, IShaderLab } from \"@galacean/engine-design\";\nimport { ShaderContentParser } from \"./contentParser\";\n// @ts-ignore\nimport { Logger, ShaderLib, ShaderMacro, ShaderPlatformTarget } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \"./common\";\n// #if _VERBOSE\nimport { GSError } from \"./GSError\";\n// #endif\nimport { PpParser } from \"./preprocessor/PpParser\";\nimport { ShaderLabUtils } from \"./ShaderLabUtils\";\nimport { IShaderProgramSource } from \"@galacean/engine-design/types/shader-lab/IShaderProgramSource\";\n\n/** @internal */\nexport class ShaderLab implements IShaderLab {\n private static _parser = ShaderTargetParser.create();\n private static _shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);\n private static _shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);\n\n // #if _VERBOSE\n static _processingPassText?: string;\n // #endif\n\n static createPosition(index: number, line?: number, column?: number): ShaderPosition {\n const position = this._shaderPositionPool.get();\n position.set(\n index,\n // #if _VERBOSE\n line,\n column\n // #endif\n );\n return position;\n }\n\n static createRange(start: ShaderPosition, end: ShaderPosition): ShaderRange {\n const range = this._shaderRangePool.get();\n range.set(start, end);\n return range;\n }\n\n // #if _VERBOSE\n /** Retrieve the compilation errors */\n readonly errors: Error[] = [];\n // #endif\n\n _parseShaderPass(\n source: string,\n vertexEntry: string,\n fragmentEntry: string,\n macros: ShaderMacro[],\n backend: ShaderPlatformTarget,\n platformMacros: string[],\n basePathForIncludeKey: string\n ): IShaderProgramSource | undefined {\n Preprocessor.reset(ShaderLib, basePathForIncludeKey);\n for (const macro of macros) {\n Preprocessor.addPredefinedMacro(macro.name, macro.value);\n }\n\n for (let i = 0; i < platformMacros.length; i++) {\n Preprocessor.addPredefinedMacro(platformMacros[i]);\n }\n\n const preprocessorStart = performance.now();\n const ppdContent = Preprocessor.process(source);\n // #if _VERBOSE\n if (PpParser._errors.length > 0) {\n for (const err of PpParser._errors) {\n this.errors.push(<GSError>err);\n }\n this._logErrors();\n return undefined;\n }\n // #endif\n\n Logger.info(`[pass compilation - preprocessor] cost time ${performance.now() - preprocessorStart}ms`);\n\n const lexer = new Lexer(ppdContent);\n const tokens = lexer.tokenize();\n\n const { _parser: parser } = ShaderLab;\n\n ShaderLab._processingPassText = ppdContent;\n const program = parser.parse(tokens);\n\n // #if _VERBOSE\n for (const err of parser.errors) {\n this.errors.push(err);\n }\n // #endif\n if (!program) {\n // #if _VERBOSE\n this._logErrors();\n // #endif\n return undefined;\n }\n\n const codeGen =\n backend === ShaderPlatformTarget.GLES100 ? GLES100Visitor.getVisitor() : GLES300Visitor.getVisitor();\n\n const start = performance.now();\n const ret = codeGen.visitShaderProgram(program, vertexEntry, fragmentEntry);\n Logger.info(`[CodeGen] cost time: ${performance.now() - start}ms`);\n ShaderLab._processingPassText = undefined;\n\n // #if _VERBOSE\n for (const err of codeGen.errors) {\n this.errors.push(err);\n }\n this._logErrors();\n // #endif\n\n return ret;\n }\n\n _parseShaderContent(shaderSource: string): IShaderContent {\n ShaderLabUtils.clearAllShaderLabObjectPool();\n ShaderContentParser.reset();\n const ret = ShaderContentParser.parse(shaderSource);\n\n // #if _VERBOSE\n this.errors.length = 0;\n for (const error of ShaderContentParser._errors) {\n this.errors.push(error);\n }\n // #endif\n\n return ret;\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors() {\n const errors = this.errors;\n if (errors.length === 0 || !Logger.isEnabled) return;\n Logger.error(`${errors.length} errors occur!`);\n for (const err of errors) {\n Logger.error(err.toString());\n }\n }\n // #endif\n}\n","export { ShaderLab } from \"./ShaderLab\";\n\n// #if _VERBOSE\nexport { Preprocessor } from \"./preprocessor\";\nexport * from \"./GSError\";\n// #endif\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nlet mode = \"Release\";\n// #if _VERBOSE\nmode = \"Verbose\";\n// #endif\n\nconsole.log(`Galacean Engine ShaderLab Version: ${version} | Mode: ${mode}`);\n"],"names":["ShaderRange","set","start","end","dispose","ShaderPosition","index","EKeyword","KeywordTable","Map","ATTRIBUTE","CONST","BOOL","FLOAT","DOUBLE","INT","UINT","BREAK","CONTINUE","DO","ELSE","FOR","IF","WHILE","DISCARD","RETURN","BVEC2","BVEC3","BVEC4","IVEC2","IVEC3","IVEC4","UVEC2","UVEC3","UVEC4","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","IN","OUT","INOUT","SAMPLER2D","SAMPLER_CUBE","SAMPLER3D","SAMPLER2D_SHADOW","SAMPLER_CUBE_SHADOW","SAMPLER2D_ARRAY","SAMPLER2D_ARRAY_SHADOW","I_SAMPLER2D","I_SAMPLER3D","I_SAMPLER_CUBE","I_SAMPLER2D_ARRAY","U_SAMPLER2D","U_SAMPLER3D","U_SAMPLER_CUBE","U_SAMPLER2D_ARRAY","STRUCT","VOID","TRUE","FALSE","PRECISION","PRECISE","HIGHP","MEDIUMP","LOWP","INVARIANT","FLAT","SMOOTH","NOPERSPECTIVE","CENTROID","LAYOUT","LOCATION","ETokenType","TypeAny","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","push","clearAllShaderLabObjectPool","i","n","length","clear","createGSError","message","errorName","source","location","file","Logger","error","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","LexerUtils","isNum","charCode","isLetter","isAlpha","isPpCharacters","isSpace","GSErrorName","BaseScanner","kws","_currentIndex","_source","_keywordsMap","getCurPosition","isEnd","getCurChar","getCurCharCode","charCodeAt","advance","count","_advance","skipSpace","includeLineBreak","spaceChars","_spaceCharsWithBreak","_spaceChars","curChar","_checkIsIn","skipCommentsAndSpace","peek","to","offset","substring","scanText","text","throwError","pos","msgs","join","ScannerError","scanPairedText","left","right","balanced","skipLeading","level","scanToken","onToken","splitCharRegex","test","token","get","NOT_WORD","tokenType","ID","range","checked","chars","current","Lexer","reset","tokenize","_scanWord","_scanNum","_getPosition","LEFT_ASSIGN","LEFT_OP","LE_OP","LEFT_ANGLE","RIGHT_ASSIGN","RIGHT_OP","GE_OP","RIGHT_ANGLE","INC_OP","ADD_ASSIGN","PLUS","DEC_OP","SUB_ASSIGN","DASH","EQ_OP","EQUAL","NE_OP","BANG","AND_OP","AMPERSAND","OR_OP","OR_ASSIGN","VERTICAL_BAR","XOR_OP","XOR_ASSIGN","CARET","MUL_ASSIGN","STAR","DIV_ASSIGN","SLASH","MOD_ASSIGN","PERCENT","LEFT_PAREN","RIGHT_PAREN","LEFT_BRACE","RIGHT_BRACE","LEFT_BRACKET","RIGHT_BRACKET","_scanNumAfterDot","DOT","COMMA","COLON","SEMICOLON","TILDE","QUESTION","_scanStringConst","buffer","STRING_CONST","FLOAT_CONSTANT","word","kt","_scanFloatSuffix","_scanIntegerSuffix","INT_CONSTANT","EAction","ShaderData","globalPrecisions","SymbolDataType","arraySpecifier","typeLexeme","ESymbolType","SymbolInfo","ident","symbolType","astNode","dataType","signature","FnSymbol","protoType","returnType","typeSpecifier","FN","StructSymbol","BaseSymbolTable","_table","SymbolTableStack","stack","newScope","scope","dropScope","pop","insert","sm","_scope","TargetSymbolTable","entry","_compareWith","warn","lookup","item","getAllFnSymbols","fnIdent","entries","filter","params","paramSig","comparedParams","t1","t2","VarSymbol","isGlobalVariable","initAst","VAR","SemanticAnalyzer","semanticStack","acceptRule","undefined","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","addTranslationRule","pid","rule","getTranslationRule","lookupSymbolBy","symbolTable","ret","reportError","loc","shaderData","NoneTerminal","Production","goal","derivation","id","_id","Grammar","productions","startSymbol","unshift","START","getProductionList","nonTerminal","isNullableNT","NT","find","EPSILON","getProductionByID","create","_ps","map","gsl","slice","SymbolType","StructProp","typeInfo","mrtIndex","ASTNodeDecorator","ASTNode","prototype","nt","TreeNode","children","_location","_children","init","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","node","Token","TrivialNode","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","returnStatement","visitJumpStatement","jump_statement","ExpressionAstNode","_type","t","SingleDeclaration","childrenLen","fullyType","initializer","visitSingleDeclaration","single_declaration","FullySpecifiedType","_","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","child","qualifier","single_type_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","value","array_specifier","IntegerConstantExpressionOperator","operator","compute","a","b","integer_constant_expression_operator","IntegerConstantExpression","Number","integer_constant_expression","TypeSpecifierNonArray","tt","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","list","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","visitFunctionProtoType","function_prototype","FunctionDeclarator","header","function_declarator","FunctionHeader","visitFunctionHeader","function_header","FunctionParameterList","decl","listParamLength","visitFunctionParameterList","function_parameter_list","ParameterDeclaration","typeQualifier","parameterDeclarator","varSymbol","parameter_declaration","ParameterDeclarator","parameter_declarator","CompoundStatementNoScope","compound_statement_no_scope","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","paramList","FunctionCallParameterList","function_call_generic","paramNodes","expr","function_call_parameter_list","PrecisionSpecifier","precision_specifier","FunctionIdentifier","visitFunctionIdentifier","function_identifier","AssignmentExpression","assignment_expression","Expression","expression","PrimaryExpression","VariableIdentifier","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","StructSpecifier","propList","struct_specifier","StructDeclarationList","props","propsLength","listProps","declProps","listPropLength","declPropLength","struct_declaration_list","StructDeclaration","declaratorList","LayoutQualifier","prop","declaratorListLength","struct_declaration","layout_qualifier","StructDeclaratorList","listLength","struct_declarator_list","StructDeclarator","struct_declarator","VariableDeclaration","visitGlobalVariableDeclaration","variable_declaration","VariableDeclarationList","variableDeclaration","newVariable","variable_declaration_list","symbolInfo","visitVariableIdentifier","variable_identifier","GLShaderProgram","gs_shader_program","GrammarUtils","isTerminal","toString","createProductionWithOptions","options","astTypePool","opt","addMapSetItem","k","v","Set","add","isSubSet","sb","has","isActionEqual","action","target","productionAndRules","global_declaration","variable_declaration_statement","MAT2X3","MAT2X4","MAT3X2","MAT3X4","MAT4X2","MAT4X3","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","conditional_expression","logical_or_expression","logical_xor_expression","logical_and_expression","inclusive_or_expression","exclusive_or_expression","and_expression","equality_expression","relational_expression","shift_expression","additive_expression","multiplicative_expression","unary_expression","unary_operator","assignment_operator","AND_ASSIGN","statement","compound_statement","simple_statement","expression_statement","selection_statement","iteration_statement","initializer_list","condition","for_init_statement","for_rest_statement","conditionopt","createGrammar","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","la","addLookahead","ts","needReInfer","symbolByOffset","canReduce","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","gs","Array","from","Shift","table","terminal","exist","_computeFirstSetForNT","idx","findIndex","computingFS","len","curNT","firstSet","succeedFirstSet","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","parse","tokens","performance","now","traceBackStack","nextToken","next","loopCount","actionInfo","info","reduceProduction","translationRule","values","nextState","CompilationError","_processingPassText","_singleton","generator","curState","MacroDefine","macro","args","body","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","PreprocessorError","replace","m","indexOf","isFunction","EPpToken","EPpKeyword","PpKeyword","PpUtils","expand","segments","startIdx","generatedIdx","seg","originSlice","rangeInBlock","generatedIdxEnd","assembleSegments","PpScanner","macroLvl","scanDirective","expandOnToken","directive","_advanceToDirective","if","ifdef","ifndef","includes","endif","scanWordsUntilChar","nonLetterChar","scanWord","skipNonLetter","getShaderPosition","kw","found","scanQuotedString","string_const","scanToChar","char","scanMacroBranchChunk","startLvl","elif","else","chunk","nextDirective","scanPairedBlock","lc","rc","scanRemainMacro","peekNonSpace","scanInteger","integer","int_constant","scanLineRemain","comments","line","line_remain","commentRange","_skipComments","startsWith","PpParser","includeMap","basePathForIncludeKey","_definedMacros","_expandSegmentsStack","_branchMacros","addPredefinedMacro","_includeMap","_basePathForIncludeKey","tk","macroBody","scanner","_onToken","bind","define","_parseDefine","undef","_parseUndef","_parseIf","_parseIfNdef","_parseIfDef","include","_parseInclude","expandSegments","sourceMap","includedPath","URL","href","ShaderPass","_shaderRootPath","expanded","_expandMacroChunk","content","_addEmptyReplace","bodyChunk","_parseMacroBranch","elseChunk","startPosition","constantExpr","_parseConstantExpression","endPosition","_parseLogicalOrExpression","operand1","_parseLogicalAndExpression","operand2","_parseEqualityExpression","_parseRelationalExpression","_parseShiftExpression","opPos","_parseAdditiveExpression","_parseMulticativeExpression","_parseUnaryExpression","parenExpr","_parseParenthesisExpression","_parseConstant","defined","withParen","isInteger","scannerOrFile","macroArgs","macroDefine","delete","curLvl","curIdx","blockRange","Preprocessor","process","baseScanner","ParserUtils","unwrapNodeByType","VisitorContext","attributeList","attributeStructs","_referencedAttributeList","Object","_referencedGlobals","_referencedVaryingList","_referencedMRTList","mrtStruct","isAttributeStruct","isVaryingStruct","varyingStruct","isMRTStruct","referenceAttribute","referenceVarying","referenceMRTProp","referenceGlobal","fnEntries","_passSymbolTable","key","passSymbolTable","context","TempArray","array","V3_GL_FragColor","V3_GL_FragData","CodeGenVisitor","_tmpArrayPool","return","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","mrtLexeme","getFragDataCodeGen","getReferencedMRTPropText","call","paramInfoList","plainParams","fullType","_curFn","cmd","returnVar","returnFnCall","_reportError","ReturnableObjectPool","EShaderStage","defaultPrecision","GLESVisitor","_versionText","_extensions","_globalCodeArray","visitShaderProgram","vertexEntry","fragmentEntry","vertex","vertexMain","fragment","_fragmentMain","data","fnNode","stage","VERTEX","varyStruct","paramInfo","structSymbol","globalCodeArray","_getGlobalText","getAttributeDeclare","getVaryingDeclare","globalCode","sort","FRAGMENT","returnDataType","returnLocation","getMRTDeclare","textList","lastLength","_serialized","keys","precision","GLES100Visitor","e","out","propReferenced","getVisitor","GLES300Visitor","referencedMRTList","MAX_SAFE_INTEGER","_registerFragColorVariable","KeywordMap","GS_RenderQueueType","GS_BlendState","GS_DepthState","GS_StencilState","GS_RasterState","GS_EditorProperties","GS_EditorMacros","GS_Editor","GS_Tags","GS_VertexShader","GS_FragmentShader","GS_SubShader","GS_Pass","GS_BlendFactor","GS_BlendOperation","GS_Bool","GS_Number","GS_CompareFunction","GS_StencilOperation","GS_CullMode","GS_UsePass","GS_Color","Scanner","scanNumber","ContentSymbolTable","EngineType","RenderStateType","ShaderContentParser","_errors","_symbolTableStack","_newScope","subShaders","globalContents","renderStates","constantMap","variableMap","name","_parseShaderStatements","shaderGlobalStatements","shaderRenderStates","subShader","curSubShaderGlobalStatements","concat","constMap","passes","pass","assign","isUsePass","passGlobalStatements","contents","_isRenderStateDeclarator","_isEngineType","_lookupSymbolByType","braceLevel","_addGlobalStatement","_parseSubShader","_parseRenderQueueAssignment","_parseRenderStateDeclarationOrAssignment","_parseVariableDeclaration","stateToken","isDeclaration","variable","renderState","_parseRenderStatePropList","_dropScope","_parseRenderStatePropItem","renderStateProp","op","renderStateElementKey","RenderStateDataKey","Color","engineTypeProp","_engineType","RenderQueueType","tags","_parsePass","_parseTags","CompareFunction","StencilOperation","BlendOperation","BlendFactor","CullMode","_parseShaderPass","macros","backend","platformMacros","ShaderLib","preprocessorStart","ppdContent","lexer","parser","_parser","program","ShaderPlatformTarget","GLES100","_parseShaderContent","shaderSource","column","_shaderPositionPool","_shaderRangePool","version","mode","console","log"],"mappings":"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"}
|