{"version":3,"file":"index.mjs","sources":["../node_modules/tslib/tslib.es6.js","../src/utils/types.ts","../src/pdf-types.ts","../src/syntax/interfaces.ts","../src/syntax/strings.ts","../src/private-data/text-document/layer.ts","../src/private-data/text-document/index.ts","../src/utils/array.ts","../src/utils/stream.ts","../src/syntax/argument-parser.ts","../src/syntax/lexer.ts","../src/syntax/parser.ts","../src/private-data/buffer-ops.ts","../src/private-data/base85/base85.ts","../src/private-data/text-document/section.ts","../src/private-data/section-splitter.ts","../src/private-data/parser.ts","../src/private-data/index.ts","../src/contents/text-encoding/escape-sequence-parser.ts","../src/contents/text-encoding/index.ts","../src/contents/decoder.ts","../src/contents/interfaces.ts","../src/contents/entities.ts","../src/contents/state.ts","../src/contents/colors.ts","../src/contents/path-builder/interfaces.ts","../src/contents/path-builder/index.ts","../src/contents/text-builder.ts","../src/contents/reducer.ts","../src/contents/index.ts","../src/cmap.ts","../src/utils/memoize.ts","../src/fonts.ts","../src/xobjects.ts","../src/tweaks.ts","../src/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\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;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\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);\r\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); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\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\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\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\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","export function hasOwnProperty<K extends string>(obj: unknown, prop: K): obj is Record<K, unknown> {\n  return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\n//  '_' is defined but never used  @typescript-eslint/no-unused-vars\n// eslint-disable-next-line\nexport function assertNever(op: never): never {\n  throw new Error('Assertion Error: unreachable code')\n}\n\nexport function isNonNullObject(val: unknown): val is Record<string | number, unknown> {\n  return val !== null && typeof val === 'object'\n}\n","import { hasOwnProperty, isNonNullObject } from './utils/types'\n\nexport function isPDFRef(value: unknown): value is PDFRef {\n  if (typeof value !== 'object') return false\n  if (value === null) return false\n  return hasOwnProperty(value, 'ObjectNumber') && hasOwnProperty(value, 'GenerationNumber')\n}\n\nexport interface PDFRef {\n  ObjectNumber: number\n  GenerationNumber: number\n}\n\nexport type PDFValue = null | number | string | boolean\n\nexport type PDFObject<A> =\n  | {\n      [key: string]: A | PDFObject<A>\n    }\n  | PDFObject<A>[]\n  | A\n\nexport type PDFObjectWithoutRefs = PDFObject<PDFValue>\nexport type PDFObjectWithRefs = PDFObject<PDFValue | PDFRef>\n\nexport function isXPages(value: unknown): value is XPages {\n  if (typeof value !== 'object') return false\n  if (value === null) return false\n  return hasOwnProperty(value, 'Type') && value['Type'] === 'Pages'\n}\nexport type XPages = { Type: 'Pages'; Kids: PDFRef[] }\n\nexport function isXPage(value: unknown): value is XPage {\n  if (typeof value !== 'object') return false\n  if (value === null) return false\n  return hasOwnProperty(value, 'Type') && value['Type'] === 'Page'\n}\nexport type XPage = {\n  Type: 'Page'\n  Resources: PDFObjectWithRefs\n  Contents: PDFRef\n  MediaBox: number[]\n}\n\nexport type StreamDict = {\n  Object: {\n    Dict: { Filter: string; Length: number }\n    StreamOffset: number\n    StreamLength: number\n  }\n}\n\nexport type XObject =\n  | {\n      Object: XPage | XPages | PDFObjectWithRefs\n    }\n  | StreamDict\n\nexport interface XRefTable {\n  Table: { [key: string]: XObject }\n  PageCount: number\n  Root: PDFRef\n  RootDict: { Pages: PDFRef; OCProperties?: OCProperties }\n  Title: string\n}\n\n// Orignally inspired by\n// https://stackoverflow.com/a/722676\nexport async function traverse(\n  obj: unknown,\n  maybeMap: (obj: Record<string, unknown>) => Promise<unknown>\n): Promise<unknown> {\n  if (Array.isArray(obj)) {\n    return Promise.all(obj.map((item) => traverse(item, maybeMap)))\n  }\n  if (isNonNullObject(obj)) {\n    return maybeMap(obj)\n  }\n  return obj\n}\n\nexport async function mapObject(\n  jsonObj: Record<string, unknown>,\n  maybeMap: (obj: Record<string, unknown>) => Promise<unknown>\n): Promise<Record<string, unknown>> {\n  return Object.fromEntries(\n    await Promise.all(Object.entries(jsonObj).map(async ([key, value]) => [key, await traverse(value, maybeMap)]))\n  )\n}\n\nexport type OCProperties = {\n  D: {\n    ON?: PDFRef[]\n    OFF?: PDFRef[]\n    Order: PDFRef\n    RBGroups: unknown[]\n  }\n  OCGs: PDFRef[]\n}\n","export enum LexerTokenType {\n  Whitespace = 'whitespace',\n  Delimiter = 'delimiter',\n  LiteralString = 'literal string',\n  Comment = 'comment',\n  Range = 'range',\n}\n\n// String of characters with no special meaning\nexport type Whitespace = { type: LexerTokenType.Whitespace; isEOL: boolean }\n\n// Characters with special syntactic meaning by themselves\nexport type Delimiter = {\n  type: LexerTokenType.Delimiter\n  value: string\n}\n\n// Range of characters - may form one syntactic unit (like Comment or Literal string) or be part of greater entity\n// e.g. names (/FooBar) are Delimiter '/' followed by a Range 'FooBar' at this point\nexport type Range = {\n  type: LexerTokenType.Range | LexerTokenType.LiteralString | LexerTokenType.Comment\n  startsAt: number // inclusive\n  endsAt: number // exclusive\n  value: Uint8Array\n\n  // metadata\n  line: number\n}\n\nexport type LexerToken = Whitespace | Delimiter | Range\n\nexport enum OperandType {\n  Number = 'number',\n  Name = 'name',\n  LiteralString = 'literal string',\n  HexadecimalString = 'hexadecimal string',\n  Array = 'array',\n  Dict = 'dictionary',\n}\n\nexport type LiteralString = {\n  type: OperandType.LiteralString\n  value: Uint8Array\n}\n\nexport type HexadecimalString = {\n  type: OperandType.HexadecimalString\n  value: string\n}\n\nexport type Name = {\n  type: OperandType.Name\n  value: string\n}\n\nexport type Number = {\n  type: OperandType.Number\n  value: number\n}\n\nexport type Array = {\n  type: OperandType.Array\n  value: Operands\n}\n\nexport type Dict = {\n  type: OperandType.Dict\n  value: Map<string, Operand>\n}\n\n//  Don't use `Number` as a type. Use number instead  @typescript-eslint/ban-types\n// eslint-disable-next-line\nexport type Operand = LiteralString | HexadecimalString | Name | Number | Array | Dict\nexport type Operands = ReadonlyArray<Operand>\n","import { assertNever } from '../utils/types'\n\ninterface Parseable<K, V> {\n  indexOf(val: K, from: number): number\n  slice(from: number, to: number): V\n  length: number\n}\n\ntype EscapeOrSequence<V> =\n  | {\n      type: 'text'\n      text: V\n    }\n  | { type: 'escape'; text: V }\nfunction* auxEscapeSequences<K, V, Arr extends Parseable<K, V>>(text: Arr, needle: K): Generator<EscapeOrSequence<V>> {\n  let position = 0\n  let idx\n  while ((idx = text.indexOf(needle, position)) >= 0) {\n    if (position < idx) {\n      yield { type: 'text', text: text.slice(position, idx) }\n    }\n    position = idx + 1\n    yield { type: 'escape', text: text.slice(idx, idx + 1) }\n    idx = text.indexOf(needle, position)\n  }\n  if (position < text.length) {\n    yield { text: text.slice(position, text.length), type: 'text' }\n  }\n}\n\nexport type EscapeSequence<V> = { text: V; escaped: boolean }\nexport function* escapeSequences<K, V, Arr extends Parseable<K, V>>(\n  text: Arr,\n  needle: K\n): Generator<EscapeSequence<V>> {\n  let escaped = false\n  for (const val of auxEscapeSequences<K, V, Arr>(text, needle)) {\n    if (escaped) {\n      yield { text: val.text, escaped }\n      escaped = false\n      continue\n    }\n    switch (val.type) {\n      case 'escape':\n        escaped = true\n        break\n      case 'text':\n        yield { text: val.text, escaped }\n        break\n      default:\n        assertNever(val)\n    }\n  }\n}\n","import { Dict, Array, LiteralString, OperandType } from '../../syntax/interfaces'\nimport { EscapeSequence, escapeSequences } from '../../syntax/strings'\nimport { Frame } from './interfaces'\n\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst LEFT_PAREN = '('.charCodeAt(0)\nconst RIGHT_PAREN = ')'.charCodeAt(0)\n\nexport class LayerDecoder {\n  private decoder = new TextDecoder('utf-16be')\n\n  public content(layer: Dict): string {\n    const buffer = (((layer as Dict).value.get('0') as Dict).value.get('0') as LiteralString).value\n    let content = this.decode(buffer)\n    if (content.slice(-1)[0] === '\\r') {\n      content = content.slice(0, -1)\n    }\n    return content\n  }\n\n  public frame(layer: Dict): Frame | undefined {\n    let frame: Frame | undefined = undefined\n    let pipe: Dict | Array | undefined\n    pipe = layer.value.get('1') as Dict\n    pipe = pipe?.value.get('2') as Array\n    pipe = pipe?.value[0] as Dict\n    pipe = pipe?.value.get('6') as Array\n    pipe = pipe?.value[0] as Dict\n    const frameArr = pipe?.value.get('1') as Array\n    if (\n      frameArr &&\n      frameArr.value.length === 4 &&\n      frameArr.value[2].type === OperandType.Number &&\n      frameArr.value[3].type === OperandType.Number\n    ) {\n      frame = {\n        width: frameArr.value[2].value,\n        height: frameArr.value[3].value,\n      }\n    }\n    return frame\n  }\n\n  public decode(buffer: Uint8Array): string {\n    const bom = buffer.slice(0, 2)\n    console.assert(bom[0] === 0xfe && bom[1] === 0xff, 'BOM in text document is not BE')\n    return this.decodeEscapeSequences(buffer.slice(2))\n  }\n\n  private decodeEscapeSequences(buffer: Uint8Array): string {\n    let txt = ''\n    for (const val of escapeSequences<number, Uint8Array, Uint8Array>(buffer, BACKSLASH)) {\n      if (!val.escaped) {\n        txt += this.decoder.decode(val.text, { stream: true })\n      } else {\n        txt += this.decodeSingleEscapeSequence(val)\n      }\n    }\n    // NOTE stream: Set to true if processing the data in chunks, and false for the final chunk or if the data is not chunked.\n    txt += this.decoder.decode(Uint8Array.of(), { stream: false })\n    return txt\n  }\n\n  private decodeSingleEscapeSequence(val: EscapeSequence<Uint8Array>): string {\n    let substitute: number\n    let position: number\n    if (val.text[0] === LEFT_PAREN || val.text[0] === RIGHT_PAREN) {\n      substitute = val.text[0]\n      position = 1\n    } else {\n      throw new Error(`Not Implemented: found escape sequence '${val.text}' which is not implemented.`)\n    }\n\n    return (\n      this.decoder.decode(Uint8Array.of(substitute), { stream: true }) +\n      this.decoder.decode(val.text.slice(position, val.text.length), { stream: true })\n    )\n  }\n}\n","import { Dict, Operand, Array, OperandType } from '../../syntax/interfaces'\nimport { LayerDecoder } from './layer'\nimport { TextLayerRecord } from './interfaces'\n\nexport function extractTextLayersContent(textDocumentDict: Map<string, Operand>): TextLayerRecord[] {\n  const textLayers = (textDocumentDict.get('1') as Dict)?.value.get('1') as Array | undefined\n  const decoder = new LayerDecoder()\n  return (\n    textLayers?.value.map((layer, index) => {\n      console.assert(layer.type === OperandType.Dict)\n      const content = decoder.content(layer as Dict)\n      const frame = decoder.frame(layer as Dict)\n      return { content, index, frame }\n    }) ?? []\n  )\n}\n","// From @ahejlsberg PR https://github.com/microsoft/TypeScript/pull/40002\ntype TupleOf<T, N extends number> = N extends N ? (number extends N ? T[] : _TupleOf<T, N, []>) : never\ntype _TupleOf<T, N extends number, R extends unknown[]> = R['length'] extends N ? R : _TupleOf<T, N, [T, ...R]>\n\nexport function chunk<T, K extends number>(arr: readonly T[], elems: K): TupleOf<T, K>[] {\n  return Array.from({ length: Math.ceil(arr.length / elems) }).map((_, index) => {\n    return arr.slice(index * elems, (index + 1) * elems) as TupleOf<T, K>\n  })\n}\n","export function* unshift<A>(a: A, as: Generator<A>): Generator<A> {\n  yield a\n  for (const a of as) {\n    yield a\n  }\n}\n\n// https://github.com/achingbrain/it/blob/master/packages/it-all/index.js\nexport async function all<T>(source: AsyncIterable<T> | Iterable<T>) {\n  const arr = []\n\n  for await (const entry of source) {\n    arr.push(entry)\n  }\n\n  return arr\n}\n\ninterface Indexable<V> {\n  [k: number]: V\n  length: number\n}\nexport class Stream<V, T extends Indexable<V>> {\n  private _position = 0\n\n  constructor(public readonly stream: T) {}\n\n  public get lookahead(): V | undefined {\n    return this.stream[this.position]\n  }\n\n  public advance() {\n    this._position += 1\n  }\n\n  public get position(): number {\n    return this._position\n  }\n}\n","import { chunk } from '../utils/array'\nimport { Stream } from '../utils/stream'\nimport { assertNever } from '../utils/types'\nimport { Delimiter, LexerTokenType, Operand, Operands, OperandType, Range } from './interfaces'\n\nexport function intoMap(values: Operands): Map<string, Operand> {\n  return new Map(\n    chunk(values, 2).map(([key, value]) => {\n      if (key.type !== OperandType.Name) {\n        throw new Error(`AssertionError: dict key is not a Name, is '${key.type}'`)\n      }\n      return [key.value, value]\n    })\n  )\n}\n\ntype Token = Delimiter | Range\ntype TokenStream = Stream<Token, ReadonlyArray<Token>>\n\nclass EntityParser {\n  private isName = false\n  private isHexadecimalString = false\n  private isDone = false\n\n  constructor(\n    private cursor: TokenStream,\n    public readonly decoder: TextDecoder,\n    private isArray = false,\n    private isDict = false\n  ) {}\n\n  private child({ isArray = false, isDict = false }: { isArray?: boolean; isDict?: boolean }): EntityParser {\n    return new EntityParser(this.cursor, this.decoder, isArray, isDict)\n  }\n\n  private parseArray(): Operand {\n    const value = Array.from(this.child({ isArray: true }).generate())\n    return { type: OperandType.Array, value }\n  }\n\n  private parseDict(): Operand {\n    const values = Array.from(this.child({ isDict: true }).generate())\n    const value = intoMap(values)\n    return {\n      type: OperandType.Dict,\n      value,\n    }\n  }\n\n  private parseDelimiter(value: string): Operand | undefined {\n    switch (value) {\n      case '[':\n        return this.parseArray()\n      case ']':\n        if (!this.isArray) throw new Error('AssertionError: array finished before starting?')\n        this.isDone = true\n        return\n      case '<<':\n        return this.parseDict()\n      case '>>':\n        if (!this.isDict) throw new Error('AssertionError: dict finished before starting?')\n        this.isDone = true\n        return\n      case '<':\n        if (this.isHexadecimalString) throw new Error('AssertionError: recursive hexadecimal string?')\n        this.isHexadecimalString = true\n        return\n      case '>':\n        if (!this.isHexadecimalString) throw new Error('AssertionError: hexadecimal string finished before starting?')\n        this.isHexadecimalString = false\n        return\n      case '/':\n        this.isName = true\n        return\n      default:\n        throw new Error(`AssertionError: leftover delimitier: '${value}'`)\n    }\n  }\n\n  private *parse(op: Token): Generator<Operand> {\n    let value\n    switch (op.type) {\n      case LexerTokenType.Delimiter:\n        value = this.parseDelimiter(op.value)\n        if (value) yield value\n        return\n      case LexerTokenType.Range:\n        if (this.isHexadecimalString) {\n          yield { type: OperandType.HexadecimalString, value: this.decoder.decode(op.value) }\n          return\n        }\n        if (this.isName) {\n          this.isName = false\n          yield { type: OperandType.Name, value: this.decoder.decode(op.value) }\n          return\n        }\n        // TODO: Add boolean | unparseable\n        yield { type: OperandType.Number, value: parseFloat(this.decoder.decode(op.value)) }\n        return\n      case LexerTokenType.LiteralString:\n        yield { type: OperandType.LiteralString, value: op.value }\n        return\n      case LexerTokenType.Comment:\n        return\n      default:\n        assertNever(op)\n    }\n  }\n\n  public *generate(): Generator<Operand> {\n    let op: Token | undefined\n    while ((op = this.cursor.lookahead) && !this.isDone) {\n      this.cursor.advance()\n      yield* this.parse(op)\n    }\n  }\n}\n\nexport class ArgumentParser {\n  private cursor: TokenStream\n\n  constructor(tokens: ReadonlyArray<Delimiter | Range>, private decoder: TextDecoder) {\n    this.cursor = new Stream(tokens)\n  }\n\n  public run(): Operands {\n    return Array.from(new EntityParser(this.cursor, this.decoder).generate())\n  }\n}\n","import { Stream } from '../utils/stream'\nimport { LexerToken, LexerTokenType } from './interfaces'\n\n// 7.2 - Lexical Conventions\nconst EOLCharacters = new Set<number | undefined>([10, 13])\nconst WhitespaceCharacters = new Set<number | undefined>([0, 9, 12, 32])\n\nconst Delimiters = {\n  '(': '('.charCodeAt(0),\n  ')': ')'.charCodeAt(0),\n  '%': '%'.charCodeAt(0),\n  '<': '<'.charCodeAt(0),\n  '>': '>'.charCodeAt(0),\n}\n\nconst REVERSE_SOLIDUS = '\\\\'.charCodeAt(0)\n\nconst DelimiterCharacters = new Set<number | undefined>([\n  // ( 40 28 50 LEFT PARENTHESIS\n  40,\n  // ) 41 29 51 RIGHT PARENTHESIS\n  41,\n  // < 60 3C 60 LESS-THAN SIGN\n  60,\n  // > 62 3E 62 GREATER-THAN SIGN\n  62,\n  // [ 91 5B 133 LEFT SQUARE BRACKET\n  91,\n  // ] 93 5D 135 RIGHT SQUARE BRACKET\n  93,\n  // { 123 7B 173 LEFT CURLY BRACKET\n  123,\n  // } 125 7D 175 RIGHT CURLY BRACKET\n  125,\n  // / 47 2F 57 SOLIDUS\n  47,\n  // % 37 25 45 PERCENT SIGN\n  37,\n])\n\ntype CharacterStream = Stream<number, Uint8Array>\n\nexport class Lexer {\n  private line = 1\n  private cursor: CharacterStream\n\n  constructor(data: Uint8Array) {\n    this.cursor = new Stream<number, Uint8Array>(data)\n  }\n\n  *tokenize(): Generator<LexerToken> {\n    let val: number | undefined\n    while ((val = this.cursor.lookahead) !== undefined) {\n      if (WhitespaceCharacters.has(val)) {\n        yield this.gobbleWhitespace()\n        continue\n      }\n      if (EOLCharacters.has(val)) {\n        yield this.gobbleEOL()\n        continue\n      }\n      if (DelimiterCharacters.has(val)) {\n        yield this.handleDelimiter(val)\n        continue\n      }\n      yield this.gobbleRange()\n    }\n  }\n\n  private handleDelimiter(val: number): LexerToken {\n    switch (val) {\n      case Delimiters['%']:\n        return this.gobbleComment()\n      case Delimiters['(']:\n        return this.gobbleLiteralString()\n      case Delimiters['<']:\n      case Delimiters['>']:\n        this.cursor.advance()\n        if (val === this.cursor.lookahead) {\n          this.cursor.advance()\n          return { type: LexerTokenType.Delimiter, value: String.fromCharCode(val, val) }\n        }\n        return { type: LexerTokenType.Delimiter, value: String.fromCharCode(val) }\n      default:\n        this.cursor.advance()\n        return { type: LexerTokenType.Delimiter, value: String.fromCharCode(val) }\n    }\n  }\n\n  private gobbleEOL(): LexerToken {\n    const val = this.cursor.lookahead\n    this.cursor.advance()\n    // The combination of a CARRIAGE RETURN followed immediately by a LINE FEED shall be treated as one EOL marker.\n    if (val === 13 && this.cursor.lookahead === 10) this.cursor.advance()\n    this.line += 1\n    return { type: LexerTokenType.Whitespace, isEOL: true }\n  }\n\n  private gobbleWhitespace(): LexerToken {\n    while (WhitespaceCharacters.has(this.cursor.lookahead)) this.cursor.advance()\n    return { type: LexerTokenType.Whitespace, isEOL: false }\n  }\n\n  private gobbleLiteralString(): LexerToken {\n    const startsAt = this.cursor.position\n    const line = this.line\n    let open = 1 // data[position] == (\n    this.cursor.advance()\n    let val: number | undefined\n    while ((val = this.cursor.lookahead) !== undefined && open > 0) {\n      if (val === REVERSE_SOLIDUS) this.cursor.advance()\n      if (val === Delimiters['(']) open += 1\n      if (val === Delimiters[')']) open -= 1\n      if (EOLCharacters.has(val)) this.line += 1\n      this.cursor.advance()\n    }\n    const endsAt = this.cursor.position\n    return {\n      type: LexerTokenType.LiteralString,\n      value: this.cursor.stream.slice(startsAt + 1, endsAt - 1),\n      startsAt,\n      endsAt,\n      line,\n    }\n  }\n\n  private gobbleComment(): LexerToken {\n    const startsAt = this.cursor.position\n    let val: number | undefined\n    while ((val = this.cursor.lookahead) !== undefined && !EOLCharacters.has(val)) this.cursor.advance()\n    const endsAt = this.cursor.position\n    return {\n      type: LexerTokenType.Comment,\n      value: this.cursor.stream.slice(startsAt, endsAt),\n      startsAt,\n      endsAt,\n      line: this.line,\n    }\n  }\n\n  private gobbleRange(): LexerToken {\n    const startsAt = this.cursor.position\n    let val: number | undefined\n    while (\n      (val = this.cursor.lookahead) !== undefined &&\n      !DelimiterCharacters.has(val) &&\n      !EOLCharacters.has(val) &&\n      !WhitespaceCharacters.has(val)\n    ) {\n      this.cursor.advance()\n    }\n    const endsAt = this.cursor.position\n    return {\n      type: LexerTokenType.Range,\n      value: this.cursor.stream.slice(startsAt, endsAt),\n      startsAt,\n      endsAt,\n      line: this.line,\n    }\n  }\n}\n","import { assertNever } from '../utils/types'\nimport { ArgumentParser, intoMap } from './argument-parser'\nimport { Delimiter, LexerToken, LexerTokenType, Operand, Operands, Range } from './interfaces'\nimport { Lexer } from './lexer'\n\ntype OperatorLookup<K> = Map<number, Set<K>>\n\nfunction prepareLookup<K extends string>(keys: K[]): OperatorLookup<K> {\n  const lookup = new Map()\n  keys.forEach((elem) => {\n    const len = elem.length\n    const base = lookup.get(len) || new Set()\n    base.add(elem)\n    lookup.set(len, base)\n  })\n  return lookup\n}\n\nexport class OperatorParser<K extends string, V> {\n  private readonly lookup: OperatorLookup<K>\n  private readonly decoder = new TextDecoder()\n  private tokens: Generator<LexerToken>\n\n  constructor(data: Uint8Array, private ctors: Record<K, (o: { args: Operands }) => V>) {\n    this.tokens = new Lexer(data).tokenize()\n    this.lookup = prepareLookup(Object.keys(ctors) as K[])\n  }\n\n  private handleRange(token: Range): Range | K {\n    const len = token.endsAt - token.startsAt\n    const possibleOperators = this.lookup.get(len)\n    if (possibleOperators) {\n      const value = this.decoder.decode(token.value) as K\n      if (possibleOperators.has(value)) {\n        return value\n      }\n    }\n    return token\n  }\n\n  private *find(): Generator<Delimiter | Range | K> {\n    for (const token of this.tokens) {\n      switch (token.type) {\n        case LexerTokenType.Whitespace:\n          continue // whitespace, can be safely ignored at this point\n        case LexerTokenType.Range:\n          yield this.handleRange(token)\n          continue\n        case LexerTokenType.Comment:\n        case LexerTokenType.LiteralString:\n        case LexerTokenType.Delimiter:\n          yield token // not interesting, but meaningful, let's pass it on\n          continue\n        default:\n          // make sure we handled all the options\n          assertNever(token)\n      }\n    }\n  }\n\n  public *parse(): Generator<V> {\n    let args = []\n    for (const token of this.find()) {\n      if (typeof token === 'string') {\n        yield this.ctors[token as K]({ args: new ArgumentParser(args, this.decoder).run() })\n        args = []\n        continue\n      }\n      args.push(token)\n    }\n  }\n}\n\nexport class Parser {\n  private readonly decoder = new TextDecoder()\n  private tokens: Generator<LexerToken>\n\n  constructor(data: Uint8Array) {\n    this.tokens = new Lexer(data).tokenize()\n  }\n\n  public parseDict(): Map<string, Operand> {\n    const args = Array.from(this.tokens).filter(\n      ({ type }) =>\n        type === LexerTokenType.Delimiter || type === LexerTokenType.Range || type === LexerTokenType.LiteralString\n    ) as (Delimiter | Range)[]\n    const values = new ArgumentParser(args, this.decoder).run()\n    return intoMap(values)\n  }\n}\n","export function startsWith(buffer: Uint8Array, str: string, offset = 0): boolean {\n  if (offset + str.length > buffer.length) {\n    // str doesn't fit into the buffer\n    return false\n  }\n\n  for (let i = 0; i < str.length; ++i) {\n    if (buffer[offset + i] !== str.charCodeAt(i)) {\n      return false\n    }\n  }\n\n  return true\n}\n\nexport function concat(buffers: Uint8Array[]): Uint8Array {\n  const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0)\n\n  const output = new Uint8Array(totalLength)\n  let offset = 0\n\n  for (let i = 0; i < buffers.length; ++i) {\n    output.set(buffers[i], offset)\n    offset += buffers[i].length\n  }\n\n  return output\n}\n","const NUM_MAXVALUE = Math.pow(2, 32) - 1\n\nconst QUAD85 = 85 * 85 * 85 * 85\nconst TRIO85 = 85 * 85 * 85\nconst DUO85 = 85 * 85\nconst SING85 = 85\n\n/* Characters to ignore in an encoded buffer */\nconst IGNORE_CHARS = [\n  0x09 /* horizontal tab */, 0x0a /* line feed, new line */, 0x0b /* vertical tab */, 0x0c /* form feed, new page */,\n  0x0d /* carriage return */, 0x20 /* space */,\n]\n\nconst ASCII85_ENC_END = '~>'\n\nclass Base85DecoderError extends Error {\n  constructor(offset: number) {\n    super(`invalid base85 buffer, decode failed at offset: ${offset}`)\n    this.name = this.constructor.name\n  }\n}\n\n/**\n * Decodes base85-encoded buffer.\n *\n * @param buffer - encoded buffer\n *\n * @returns     decoded buffer\n *\n * @throws {@link Base85DecoderError}\n * Thrown if input buffer is not a valid base85 stream.\n */\nexport function decode(buffer: Uint8Array): Uint8Array {\n  const decodeSymbol = (x: number) => {\n    return x - 33\n  }\n\n  const nextValidByte = (index: number) => {\n    if (index < dataLength) {\n      while (-1 !== IGNORE_CHARS.indexOf(buffer[index])) {\n        padding = (padding + 1) % 5\n        ++index\n      }\n    }\n    return index\n  }\n\n  const dataLength = buffer.length - ASCII85_ENC_END.length\n\n  let padding = dataLength % 5 === 0 ? 0 : 5 - (dataLength % 5)\n\n  const resultBuffer = new ArrayBuffer(4 * Math.ceil(dataLength / 5))\n  const resultView = new DataView(resultBuffer)\n\n  let writeIndex = 0\n  for (let i = 0; i < dataLength; writeIndex += 4) {\n    let num = 0\n\n    i = nextValidByte(i)\n    num = decodeSymbol(buffer[i]) * QUAD85\n\n    i = nextValidByte(i + 1)\n    num += (i >= dataLength ? 84 : decodeSymbol(buffer[i])) * TRIO85\n\n    i = nextValidByte(i + 1)\n    num += (i >= dataLength ? 84 : decodeSymbol(buffer[i])) * DUO85\n\n    i = nextValidByte(i + 1)\n    num += (i >= dataLength ? 84 : decodeSymbol(buffer[i])) * SING85\n\n    i = nextValidByte(i + 1)\n    num += i >= dataLength ? 84 : decodeSymbol(buffer[i])\n\n    i = nextValidByte(i + 1)\n\n    if (num > NUM_MAXVALUE || num < 0) {\n      throw new Base85DecoderError(i)\n    }\n\n    resultView.setUint32(writeIndex, num, false /* BE */)\n  }\n\n  return new Uint8Array(resultBuffer, 0, writeIndex - padding)\n}\n","import { decode as decodeASCII85 } from '../base85/base85'\nimport { concat } from '../buffer-ops'\n\ntype TextEncoding = 'ascii85' | 'unknown'\n\n/**\n * Contains data of single encoded text document section.\n */\nexport class Section {\n  private encoding: TextEncoding\n  private content: Uint8Array[]\n\n  constructor(enc: TextEncoding) {\n    this.encoding = enc\n    this.content = []\n  }\n\n  /**\n   * @returns     total size of the content\n   */\n  contentSize(): number {\n    return this.content.reduce((total, buf) => total + buf.length, 0)\n  }\n\n  /**\n   * Adds slice of a buffer to the content array.\n   *\n   * @param buf   - buffer to slice from\n   */\n  appendContent(buf: Uint8Array) {\n    this.content.push(buf)\n  }\n\n  /**\n   * Decodes the buffer if encoded via known encoding,\n   * namely ASCII85.\n   *\n   * @privateRemarks\n   *\n   * Note that other encodings might need to get implemented enventually.\n   * Right now it seems only ASCII85 is used for TextDocument entity.\n   *\n   */\n  decode(): Uint8Array {\n    const data = concat(this.content)\n    return this.encoding === 'ascii85' ? decodeASCII85(data) : data\n  }\n}\n","import { startsWith } from './buffer-ops'\nimport { ArtBoardNames, RawPrivateData } from './interfaces'\nimport { TextDocument } from './text-document/interfaces'\nimport { Section } from './text-document/section'\n\nconst FWD_SLASH = '/'.charCodeAt(0)\nconst COMMENT_START = '%'.charCodeAt(0)\nconst beginKeyword = '%AI11_BeginTextDocument'\nconst endKeyword = '%AI11_EndTextDocument'\n\n// %_(Mesa de trabajo 1) /UnicodeString (Name) ,\n// ->\n// Mesa de trabajo 1\nconst re = RegExp('%_\\\\((.+)\\\\) /UnicodeString \\\\(Name\\\\) ,', '')\nfunction extractLayerName(text: string): string | undefined {\n  const match = re.exec(text)\n  if (match) return match[1]\n  return undefined\n}\n\nexport class SectionSplitter {\n  sections: Section[] = []\n  currentSection: Section | undefined\n  names: string[] = []\n  textDocumentStarted = false\n\n  constructor(private readonly decoder: TextDecoder, private readonly data: RawPrivateData) {}\n\n  async split(): Promise<[TextDocument, ArtBoardNames]> {\n    for await (const value of this.data()) {\n      if (value[0] === COMMENT_START) {\n        const text = this.decoder.decode(value)\n        if (text.startsWith(beginKeyword)) {\n          this.textDocumentStarted = true\n        }\n        if (text.startsWith(endKeyword)) {\n          this.textDocumentStarted = false\n        }\n        const layerName = extractLayerName(text)\n        if (layerName) {\n          this.names.push(layerName)\n        }\n      }\n      if (this.textDocumentStarted) {\n        this.handleTextDocumentLine(value)\n      }\n    }\n\n    if (this.currentSection) {\n      this.sections.push(this.currentSection)\n    }\n    return [this.sections, this.names]\n  }\n\n  /**\n   * Loads TextDocument part of the AI private data.\n   */\n  private handleTextDocumentLine(line: Uint8Array) {\n    switch (line[0]) {\n      case FWD_SLASH:\n        // this is rare, so testing with startsWith is fine\n        if (startsWith(line, '/AI11TextDocument') || startsWith(line, '/AI11UndoFreeTextDocument')) {\n          const lineStr = this.decoder.decode(line)\n          const enc = lineStr.split(' ').includes('/ASCII85Decode') ? 'ascii85' : 'unknown'\n\n          if (this.currentSection) {\n            this.sections.push(this.currentSection)\n          }\n\n          this.currentSection = new Section(enc)\n        }\n        break\n\n      case COMMENT_START:\n        this.currentSection?.appendContent(line.subarray(1)) // remove %\n        break\n    }\n  }\n}\n","import { PrivateData, RawPrivateData } from './interfaces'\nimport { extractTextLayersContent } from './text-document'\nimport { Parser as SyntaxParser } from '../syntax/parser'\nimport { mark, stop } from 'marky'\nimport { SectionSplitter } from './section-splitter'\nimport { TextDocument, TextLayerRecord } from './text-document/interfaces'\n\nexport class Parser {\n  private decoder = new TextDecoder()\n\n  public async extract(data: RawPrivateData): Promise<PrivateData> {\n    const [textDocument, names] = await new SectionSplitter(this.decoder, data).split()\n\n    return {\n      TextLayers: this.loadTextLayers(textDocument),\n      LayerNames: names,\n    }\n  }\n\n  private loadTextLayers(textDocument: TextDocument): TextLayerRecord[] | undefined {\n    mark('loadTextLayers')\n    if (textDocument.length < 1) {\n      throw new Error('TextDocument entity is missing in the private data section')\n    }\n\n    const decodedStream = textDocument[0].decode()\n    mark('parse text document stream')\n\n    const textDocumentDict = new SyntaxParser(decodedStream).parseDict()\n    stop('parse text document stream')\n\n    const extracted = extractTextLayersContent(textDocumentDict)\n\n    stop('loadTextLayers')\n    return extracted\n  }\n}\n","import { mark, stop } from 'marky'\nimport { PrivateData, RawPrivateData } from './interfaces'\nimport { Parser } from './parser'\n\nexport async function parsePrivateData(data: RawPrivateData): Promise<PrivateData> {\n  mark('PrivateData')\n  const privateData = await new Parser().extract(data)\n  stop('PrivateData')\n  return privateData\n}\n","import { EscapeSequence, escapeSequences } from '../../syntax/strings'\n\nexport class EscapeSequenceParser {\n  private readonly sequences: Generator<EscapeSequence<string>>\n\n  constructor(text: string, private readonly decode: (char: number) => string) {\n    this.sequences = escapeSequences(text, '\\\\')\n  }\n\n  public parse(): string {\n    return Array.from(this.sequences)\n      .map((val) => {\n        if (!val.escaped) return val.text\n        const parser = new SingleEscapeSequenceParser(val, this.decode)\n        return parser.parse() + parser.leftover\n      })\n      .join('')\n  }\n}\n\n// TABLE 3 – Escape sequences in literal strings\nconst EscapedCharactersMap = new Map([\n  ['\\n', null],\n  ['\\r', null],\n  ['n', '\\n'],\n  ['r', '\\r'],\n  ['t', '\\t'],\n  ['b', '\\b'],\n  ['f', '\\f'],\n  ['(', '('],\n  [')', ')'],\n  ['\\\\', '\\\\'],\n])\nclass SingleEscapeSequenceParser {\n  private position = 0\n  constructor(private readonly val: EscapeSequence<string>, private readonly decode: (char: number) => string) {}\n\n  public parse(): string {\n    const escapedCharacter = this.val.text[0]\n    if (EscapedCharactersMap.has(escapedCharacter)) {\n      this.position += 1\n      return EscapedCharactersMap.get(escapedCharacter) ?? ''\n    } else if (/\\d/.test(escapedCharacter)) {\n      // \\ddd case\n      return this.parseOctalSequence()\n    } else {\n      throw new Error(\"AssertionError: invalid escape sequence '\\\\${val.text}'\")\n    }\n  }\n\n  public get leftover(): string {\n    return this.val.text.slice(this.position, this.val.text.length)\n  }\n\n  private parseOctalSequence(): string {\n    const ddd = this.val.text.slice(0, 3)\n    let octal = ''\n    // The number ddd may consist of one, two, or three octal digits; high-order overflow shall be ignored. Three octal\n    // digits shall be used, with leading zeros as needed, if the next character of the string is also a digit.\n    if (/\\d{3}/.test(ddd)) {\n      octal = ddd\n      this.position += 3\n    } else if (/\\d{2}/.test(ddd)) {\n      octal = ddd.slice(0, 2)\n      this.position += 2\n    } else {\n      octal = ddd[0]\n      this.position += 1\n    }\n    return this.decode(parseInt(octal, 8))\n  }\n}\n","import { BaseEncoding } from '../decoder'\nimport { EscapeSequenceParser } from './escape-sequence-parser'\n\n// https://stackoverflow.com/a/4129920/18355339\nconst encodings = {\n  // Windows code page 1252 Western European\n  WinAnsiEncoding:\n    '\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f !\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\x7f\\u20ac\\ufffd\\u201a\\u0192\\u201e\\u2026\\u2020\\u2021\\u02c6\\u2030\\u0160\\u2039\\u0152\\ufffd\\u017d\\ufffd\\ufffd\\u2018\\u2019\\u201c\\u201d\\u2022\\u2013\\u2014\\u02dc\\u2122\\u0161\\u203a\\u0153\\ufffd\\u017e\\u0178\\xa0\\xa1\\xa2\\xa3\\xa4\\xa5\\xa6\\xa7\\xa8\\xa9\\xaa\\xab\\xac\\xad\\xae\\xaf\\xb0\\xb1\\xb2\\xb3\\xb4\\xb5\\xb6\\xb7\\xb8\\xb9\\xba\\xbb\\xbc\\xbd\\xbe\\xbf\\xc0\\xc1\\xc2\\xc3\\xc4\\xc5\\xc6\\xc7\\xc8\\xc9\\xca\\xcb\\xcc\\xcd\\xce\\xcf\\xd0\\xd1\\xd2\\xd3\\xd4\\xd5\\xd6\\xd7\\xd8\\xd9\\xda\\xdb\\xdc\\xdd\\xde\\xdf\\xe0\\xe1\\xe2\\xe3\\xe4\\xe5\\xe6\\xe7\\xe8\\xe9\\xea\\xeb\\xec\\xed\\xee\\xef\\xf0\\xf1\\xf2\\xf3\\xf4\\xf5\\xf6\\xf7\\xf8\\xf9\\xfa\\xfb\\xfc\\xfd\\xfe\\xff',\n  'Identity-H':\n    '\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f !\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\x7f\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8a\\x8b\\x8c\\x8d\\x8e\\x8f\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9a\\x9b\\x9c\\x9d\\x9e\\x9f\\xa0¡¢£¤¥¦§¨©ª«¬\\xad®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ',\n}\n\ntype DerivedEncoding = {\n  BaseEncoding: BaseEncoding\n  Differences: Map<number, string>\n}\nexport type Encoding = 'WinAnsiEncoding' | 'Identity-H' | DerivedEncoding\n\nexport type Font = {\n  Encoding: Encoding\n  ToUnicode?: Map<number, string>\n}\n\nexport function decodeWithEncoding(enc: Encoding, code: number): string {\n  // 9.6.6 Character Encoding\n  if (!enc) {\n    console.warn({ enc, code }, 'is undefined?')\n\n    return String.fromCharCode(code)\n  }\n  if (typeof enc === 'string') return encodings[enc].charAt(code)\n  return enc.Differences.get(code) ?? decodeWithEncoding(enc.BaseEncoding, code)\n}\n\nexport function decode(font: Font, code: number): string {\n  // 9.6.6 Character Encoding\n  return font.ToUnicode?.get(code) ?? decodeWithEncoding(font.Encoding, code)\n}\n\nexport function parseEscapeSeqs(font: Font, text: string): string {\n  return new EscapeSequenceParser(text, (char) => decode(font, char)).parse()\n}\n\nexport function parseHexadecimal(font: Font, text: string): string {\n  const txtChunks: string[] = []\n  if (font.ToUnicode) {\n    const matches = text.match(/(....?)/g)\n    if (matches) {\n      matches.forEach((pair) => {\n        if (pair.length !== 4) for (let i = pair.length; i <= 4; i += 1) pair = pair + '0'\n        const dec = parseInt(pair, 16)\n        const val = decode(font, dec)\n        txtChunks.push(val)\n      })\n    } else {\n      console.warn('no text matched pattern in ToUnicode decoding; maybe variable length needs to be implemented')\n    }\n  } else {\n    const matches = text.match(/(..?)/g)\n    if (matches) {\n      matches.forEach((pair) => {\n        if (pair.length !== 2) pair = pair + '0'\n        const dec = parseInt(pair, 16)\n        const val = decode(font, dec)\n        txtChunks.push(val)\n      })\n    } else {\n      console.warn('no text matched pattern in hexadecimal string')\n    }\n  }\n  return txtChunks.join('')\n}\n","import { Font, parseEscapeSeqs, parseHexadecimal } from './text-encoding'\nimport { Operands, OperandType, Operand } from '../syntax/interfaces'\nimport { assertNever } from '../utils/types'\n\nexport enum DecodeType {\n  MultiNumber = 'number₁...numberₙ',\n  Pattern = 'c₁...cₙ name',\n}\n\nexport type Differences = (string | number)[]\n\nexport type BaseEncoding = 'WinAnsiEncoding' | 'Identity-H'\n\ntype DerivedEncodingRef = {\n  BaseEncoding: BaseEncoding\n  Differences: Differences\n}\n\nexport type EncodingRef = BaseEncoding | DerivedEncodingRef\n\nexport interface FontRef {\n  ObjID: number\n  Encoding: EncodingRef\n  ToUnicode?: { ObjID: number }\n}\n\nexport interface FontReader {\n  get: (id: FontRef) => Promise<Font>\n}\n\nexport function* decodeNames(from: Operands): Generator<string> {\n  for (const op of from) {\n    switch (op.type) {\n      case OperandType.Name:\n        yield op.value\n        continue\n      default:\n        throw new Error(`AssertionError: bogus operand '${op.type}' in decodeNames`)\n    }\n  }\n}\n\nexport function decodeName(from: Operands): string {\n  const [name] = Array.from(decodeNames(from))\n  return name\n}\n\nexport function* decodeNumbers(from: Operands): Generator<number> {\n  for (const op of from) {\n    switch (op.type) {\n      case OperandType.Number:\n        yield op.value\n        continue\n      default:\n        throw new Error(`AssertionError: bogus operand '${op.type}' in decodeNumbers`)\n    }\n  }\n}\n\nexport function decodeNumber(from: Operands): number {\n  const [num] = Array.from(decodeNumbers(from))\n  return num\n}\n\nexport function* decodeDashPattern(from: Operands): Generator<number | number[]> {\n  for (const op of from) {\n    switch (op.type) {\n      case OperandType.Array:\n        op.value.forEach((val: Operand) => {\n          if (val.type !== OperandType.Number) {\n            throw new Error(`AssertionError: bogus operand '${val.type}' in DashPattern array`)\n          }\n        })\n        yield op.value.map(({ value }: Operand) => value) as number[]\n        continue\n      case OperandType.Number:\n        yield op.value\n        continue\n      default:\n        throw new Error(`AssertionError: bogus operand '${op.type}' in DashPattern`)\n    }\n  }\n}\n\nfunction* decodePattern(from: Operands): Generator<number | string> {\n  for (const val of from.slice(0, -2)) {\n    if (val.type !== OperandType.Number) {\n      throw new Error(`AssertionError: bogus operand '${val.type}' in decodePattern`)\n    }\n    yield val.value\n  }\n  const [last] = from.slice(-1)\n  if (last) {\n    if (last.type !== OperandType.Name) {\n      throw new Error(`AssertionError: bogus operand '${last.type}' in decodePattern last argument`)\n    }\n    yield last.value\n  } else {\n    console.warn('empty argument array given to Pattern')\n  }\n}\n\nexport function decode(decls: DecodeType, from: Operands): Generator<number | string> {\n  switch (decls) {\n    case DecodeType.Pattern:\n      return decodePattern(from)\n    case DecodeType.MultiNumber:\n      return decodeNumbers(from)\n    default:\n      assertNever(decls)\n  }\n}\n\nexport class Decoder {\n  readonly fontReader: FontReader\n  private decoder = new TextDecoder()\n\n  constructor(fontReader: FontReader) {\n    this.fontReader = fontReader\n  }\n\n  async *decodeText(fontId: FontRef, from: Operands): AsyncGenerator<string> {\n    const font = await this.fontReader.get(fontId)\n    for (const op of from) {\n      switch (op.type) {\n        case OperandType.LiteralString:\n          yield parseEscapeSeqs(font, this.decoder.decode(op.value))\n          continue\n        case OperandType.HexadecimalString:\n          yield parseHexadecimal(font, op.value)\n          continue\n        default:\n          throw new Error(`AssertionError: bogus operand '${op.type}' in decodeText`)\n      }\n    }\n  }\n\n  async *decodeIndividualGlyphPositioning(fontId: FontRef, from: Operands): AsyncGenerator<string | number> {\n    const font = await this.fontReader.get(fontId)\n    const [arr] = from\n    if (arr.type !== OperandType.Array) {\n      throw new Error(`AssertionError: TJ argument '${arr.type}' is not an array`)\n    }\n    for (const op of arr.value) {\n      switch (op.type) {\n        case OperandType.LiteralString:\n          yield parseEscapeSeqs(font, this.decoder.decode(op.value))\n          continue\n        case OperandType.HexadecimalString:\n          yield parseHexadecimal(font, op.value)\n          continue\n        case OperandType.Number:\n          yield op.value\n          continue\n        default:\n          throw new Error(`AssertionError: bogus operand '${op.type}' in decodeIndividualGlyphPositioning`)\n      }\n    }\n  }\n}\n","import { Operands } from '../syntax/interfaces'\nimport { OperatorParser } from '../syntax/parser'\nimport { ColorSpace } from './colors'\nimport { FontRef } from './decoder'\n\n// This module is a poor man ADT implementation\n// constructors for each type is a record from name of type into function that creates given type\n// \"name\" value should be consistent with the key\n\n// Extract types from Record (as union of record types)\n// eslint-disable-next-line\nexport type CtorTypes<T> = T extends Record<any, (...args: any) => infer R> ? R : never\n\nexport const GraphicStateOperators = {\n  // no operands\n  q: () => ({ name: 'q' } as const),\n  // no operands\n  Q: () => ({ name: 'Q' } as const),\n  // a b c d e f\n  cm: ({ args }: { args: Operands }) => ({ name: 'cm', args } as const),\n  // lineWidth\n  w: ({ args }: { args: Operands }) => ({ name: 'w', args } as const),\n  // lineCap\n  J: ({ args }: { args: Operands }) => ({ name: 'J', args } as const),\n  // lineJoin\n  j: ({ args }: { args: Operands }) => ({ name: 'j', args } as const),\n  // miterLimit\n  M: ({ args }: { args: Operands }) => ({ name: 'M', args } as const),\n  // dashArray dashPhase\n  d: ({ args }: { args: Operands }) => ({ name: 'd', args } as const),\n  // intent\n  ri: ({ args }: { args: Operands }) => ({ name: 'ri', args } as const),\n  // flatness\n  i: ({ args }: { args: Operands }) => ({ name: 'i', args } as const),\n  // dictName\n  gs: ({ args }: { args: Operands }) => ({ name: 'gs', args } as const),\n}\nexport type GraphicStateOperator = CtorTypes<typeof GraphicStateOperators>\n\nexport const PathConstructionOperators = {\n  // x y\n  m: ({ args }: { args: Operands }) => ({ name: 'm', args } as const),\n  // x y\n  l: ({ args }: { args: Operands }) => ({ name: 'l', args } as const),\n  // x1 y1 x2 y2 x3 y3\n  c: ({ args }: { args: Operands }) => ({ name: 'c', args } as const),\n  // x2 y2 x3 y3\n  v: ({ args }: { args: Operands }) => ({ name: 'v', args } as const),\n  // x1 y1 x3 y3\n  y: ({ args }: { args: Operands }) => ({ name: 'y', args } as const),\n  // no operands\n  h: () => ({ name: 'h' } as const),\n  // x y width height\n  re: ({ args }: { args: Operands }) => ({ name: 're', args } as const),\n}\nexport type PathConstructionOperator = CtorTypes<typeof PathConstructionOperators>\n\n// All of them have no operands\nexport const PathPaintingOperators = {\n  S: () => ({ name: 'S' } as const),\n  s: () => ({ name: 's' } as const),\n  f: () => ({ name: 'f' } as const),\n  F: () => ({ name: 'F' } as const),\n  'f*': () => ({ name: 'f*' } as const),\n  B: () => ({ name: 'B' } as const),\n  'B*': () => ({ name: 'B*' } as const),\n  b: () => ({ name: 'b' } as const),\n  'b*': () => ({ name: 'b*' } as const),\n  n: () => ({ name: 'n' } as const),\n}\nexport type PathPaintingOperator = CtorTypes<typeof PathPaintingOperators>\n\n// All of them have no operands\nexport const ClippingPathOperators = {\n  W: () => ({ name: 'W' } as const),\n  'W*': () => ({ name: 'W*' } as const),\n}\nexport type ClippingPathOperator = CtorTypes<typeof ClippingPathOperators>\n\n// All of them have no operands\nexport const TextObjectOperators = {\n  BT: () => ({ name: 'BT' } as const),\n  ET: () => ({ name: 'ET' } as const),\n}\nexport type TextObjectOperator = CtorTypes<typeof TextObjectOperators>\n\nexport const TextPositioningOperators = {\n  // tx ty\n  Td: ({ args }: { args: Operands }) => ({ name: 'Td', args } as const),\n  // tx ty\n  TD: ({ args }: { args: Operands }) => ({ name: 'TD', args } as const),\n  // a b c d e f\n  Tm: ({ args }: { args: Operands }) => ({ name: 'Tm', args } as const),\n  // no operands\n  'T*': () => ({ name: 'T*' } as const),\n}\nexport type TextPositioningOperator = CtorTypes<typeof TextPositioningOperators>\n\nexport const TextShowingOperators = {\n  // string\n  Tj: ({ args }: { args: Operands }) => ({ name: 'Tj', args } as const),\n  // string\n  \"'\": ({ args }: { args: Operands }) => ({ name: \"'\", args } as const),\n  // aw ac string\n  '\"': ({ args }: { args: Operands }) => ({ name: '\"', args } as const),\n  // array\n  TJ: ({ args }: { args: Operands }) => ({ name: 'TJ', args } as const),\n}\nexport type TextShowingOperator = CtorTypes<typeof TextShowingOperators>\n\nexport const Type3FontOperators = {\n  // wx wy\n  d0: ({ args }: { args: Operands }) => ({ name: 'd0', args } as const),\n  // wx wy llx lly urx ury\n  d1: ({ args }: { args: Operands }) => ({ name: 'd1', args } as const),\n}\nexport type Type3FontOperators = CtorTypes<typeof Type3FontOperators>\n\nexport const ColourOperators = {\n  // name\n  CS: ({ args }: { args: Operands }) => ({ name: 'CS', args } as const),\n  // name\n  cs: ({ args }: { args: Operands }) => ({ name: 'cs', args } as const),\n  // c1...cn\n  SC: ({ args }: { args: Operands }) => ({ name: 'SC', args } as const),\n  // c1...cn | c1..cn name\n  SCN: ({ args }: { args: Operands }) => ({ name: 'SCN', args } as const),\n  // c1...cn\n  sc: ({ args }: { args: Operands }) => ({ name: 'sc', args } as const),\n  // c1...cn | c1..cn name\n  scn: ({ args }: { args: Operands }) => ({ name: 'scn', args } as const),\n  // gray\n  G: ({ args }: { args: Operands }) => ({ name: 'G', args } as const),\n  // gray\n  g: ({ args }: { args: Operands }) => ({ name: 'g', args } as const),\n  // r g b\n  RG: ({ args }: { args: Operands }) => ({ name: 'RG', args } as const),\n  // r g b\n  rg: ({ args }: { args: Operands }) => ({ name: 'rg', args } as const),\n  // c m y k\n  K: ({ args }: { args: Operands }) => ({ name: 'K', args } as const),\n  // c m y k\n  k: ({ args }: { args: Operands }) => ({ name: 'k', args } as const),\n}\nexport type ColourOperator = CtorTypes<typeof ColourOperators>\n\nexport const ShadingOperators = {\n  // name\n  sh: ({ args }: { args: Operands }) => ({ name: 'sh', args } as const),\n}\nexport type ShadingOperator = CtorTypes<typeof ShadingOperators>\n\n// All of them have no operands\nexport const InlineImageOperators = {\n  BI: () => ({ name: 'BI' } as const),\n  ID: () => ({ name: 'ID' } as const),\n  EI: () => ({ name: 'EI' } as const),\n}\nexport type InlineImageOperator = CtorTypes<typeof InlineImageOperators>\n\nexport const XObjectOperators = {\n  // name\n  Do: ({ args }: { args: Operands }) => ({ name: 'Do', args } as const),\n}\nexport type XObjectOperator = CtorTypes<typeof XObjectOperators>\n\nexport const MarkedContentOperators = {\n  // tag\n  MP: ({ args }: { args: Operands }) => ({ name: 'MP', args } as const),\n  // tag properties\n  DP: ({ args }: { args: Operands }) => ({ name: 'DP', args } as const),\n  // tag\n  BMC: ({ args }: { args: Operands }) => ({ name: 'BMC', args } as const),\n  // tag properties\n  BDC: ({ args }: { args: Operands }) => ({ name: 'BDC', args } as const),\n  // no operands\n  EMC: () => ({ name: 'EMC' } as const),\n}\nexport type MarkedContentOperator = CtorTypes<typeof MarkedContentOperators>\n\n// All of them have no operands\nexport const CompatibilityOperators = {\n  BX: () => ({ name: 'BX' } as const),\n  EX: () => ({ name: 'EX' } as const),\n}\nexport type CompatibilityOperator = CtorTypes<typeof CompatibilityOperators>\n\n// Table 105 -> kinda hard to find since it's not mentioned in main table\nexport const TextStateOperators = {\n  // charSpace\n  Tc: ({ args }: { args: Operands }) => ({ name: 'Tc', args } as const),\n  // wordSpace\n  Tw: ({ args }: { args: Operands }) => ({ name: 'Tw', args } as const),\n  // scale\n  Tz: ({ args }: { args: Operands }) => ({ name: 'Tz', args } as const),\n  // leading\n  TL: ({ args }: { args: Operands }) => ({ name: 'TL', args } as const),\n  // These are two args!\n  // font size\n  Tf: ({ args }: { args: Operands }) => ({ name: 'Tf', args } as const),\n  // render\n  Tr: ({ args }: { args: Operands }) => ({ name: 'Tr', args } as const),\n  // rise\n  Ts: ({ args }: { args: Operands }) => ({ name: 'Ts', args } as const),\n}\nexport type TextStateOperator = CtorTypes<typeof TextStateOperators>\n\nexport const ContentStreamOperators = {\n  ...GraphicStateOperators,\n  ...PathConstructionOperators,\n  ...PathPaintingOperators,\n  ...ClippingPathOperators,\n  ...TextObjectOperators,\n  ...TextPositioningOperators,\n  ...TextShowingOperators,\n  ...Type3FontOperators,\n  ...ColourOperators,\n  ...ShadingOperators,\n  ...InlineImageOperators,\n  ...XObjectOperators,\n  ...MarkedContentOperators,\n  ...CompatibilityOperators,\n  ...TextStateOperators,\n}\ntype Operator = keyof typeof ContentStreamOperators\nexport type ContentStreamOperator = CtorTypes<typeof ContentStreamOperators>\n\nexport const parseOperators = (data: Uint8Array) =>\n  new OperatorParser<Operator, ContentStreamOperator>(data, ContentStreamOperators).parse()\n\nexport type Resources = {\n  readonly ColorSpace: Record<string, ColorSpace>\n  readonly ExtGState: Record<string, unknown>\n  readonly Font: Record<string, FontRef>\n}\n","import { List, Record as R, RecordOf } from 'immutable'\nimport { ColorSpace } from './colors'\n\nexport type GraphicsStateProps = {\n  CTM?: number[] | null\n  ClippingPath?: unknown[] | null\n  ColorSpaceStroking: string | ColorSpace\n  ColorSpaceNonStroking: string | ColorSpace\n  ColorStroking: (number | string)[]\n  ColorNonStroking: (number | string)[]\n  TextCharSpace: number\n  TextWordSpace: number\n  TextScale: number\n  TextLeading: number\n  TextFont?: string | null\n  TextFontSize: number\n  TextRender: number\n  TextRise: number\n  LineWidth: number\n  LineCap: number\n  LineJoin: number\n  MiterLimit: number\n  DashPattern: unknown[]\n  RenderingIntent: string\n  Flatness: number\n  StrokeAdjustment: boolean\n  BlendMode: string\n  SoftMask?: null\n  AlphaConstant: number\n  AlphaSource: boolean\n  SpecifiedParameters?: unknown\n}\n\nexport type GraphicsState = RecordOf<GraphicsStateProps>\n\nexport const GraphicsState = R({\n  CTM: null,\n  ClippingPath: null,\n  ColorSpaceStroking: 'DeviceGray',\n  ColorSpaceNonStroking: 'DeviceGray',\n  ColorStroking: [0, 0, 0],\n  ColorNonStroking: [0, 0, 0],\n  TextCharSpace: 0,\n  TextWordSpace: 0,\n  TextScale: 100,\n  TextLeading: 0,\n  TextFont: null,\n  TextFontSize: 0,\n  TextRender: 0,\n  TextRise: 0,\n  LineWidth: 1,\n  LineCap: 0,\n  LineJoin: 0,\n  MiterLimit: 10,\n  DashPattern: [[], 0],\n  RenderingIntent: 'RelativeColorimetric',\n  Flatness: 0,\n  StrokeAdjustment: false,\n  BlendMode: 'Normal',\n  SoftMask: null,\n  AlphaConstant: 1,\n  AlphaSource: false,\n  SpecifiedParameters: null,\n})\n\nexport type MarkedContext = RecordOf<{\n  Kids: List<unknown>\n  Type: 'MarkedContext'\n  Tag?: string\n  Properties?: string\n}>\n\nexport const MarkedContext = R({\n  Type: 'MarkedContext',\n  Kids: List(),\n\n  Tag: undefined as string | undefined,\n  Properties: undefined as string | undefined,\n} as const)\n\nexport type XObject = {\n  Type: 'XObject'\n  Name: string\n  GraphicsState: GraphicsStateProps\n}\n\nexport const XObject = (Name: string, GraphicsState: GraphicsState): XObject => ({\n  Type: 'XObject',\n  Name,\n  GraphicsState: GraphicsState.toJS() as GraphicsStateProps,\n})\n\nexport type Shading = {\n  Type: 'Shading'\n  Name: string\n  GraphicsState: GraphicsStateProps\n}\n\nexport const Shading = (Name: string, GraphicsState: GraphicsState): Shading => ({\n  Type: 'Shading',\n  Name,\n  GraphicsState: GraphicsState.toJS() as GraphicsStateProps,\n})\n","import { Decoder } from './decoder'\nimport { GraphicsState, GraphicsStateProps, MarkedContext } from './entities'\nimport { TextBuilder } from './text-builder'\nimport { RecordOf, Record, List, updateIn } from 'immutable'\nimport { Resources } from './interfaces'\n\ntype StateProps = {\n  readonly decoder: Decoder\n  readonly resources: Resources\n  readonly strictPopplerCompat: boolean\n\n  context: List<MarkedContext>\n  graphics: List<GraphicsState>\n  textBuilder?: TextBuilder\n}\n\nexport type State = RecordOf<StateProps>\n\nexport const New = ({\n  decoder,\n  resources,\n  strictPopplerCompat = false,\n}: Omit<StateProps, 'context' | 'graphics' | 'textBuilder'>) =>\n  Record({\n    context: List.of(MarkedContext()),\n    graphics: List.of(GraphicsState()),\n    textBuilder: undefined,\n\n    strictPopplerCompat,\n    decoder,\n    resources,\n  })()\n\nexport function pushKid(state: State, kid: unknown): State {\n  return updateIn(state, ['context', 0, 'Kids'], (k) => (k as List<unknown>).push(kid))\n}\n\nexport function currentGraphics(state: State): GraphicsState {\n  const top = state.graphics.first()\n  if (!top) {\n    throw new Error('Empty graphics stack')\n  }\n  return top\n}\n\nexport const withTextBuilder = (state: State, cb: (tb: TextBuilder) => void) => {\n  if (!state.textBuilder) {\n    throw new Error('Empty text builder')\n  }\n  cb(state.textBuilder)\n  return state\n}\n\nexport function finishTextGroup(state: State): State {\n  if (state.textBuilder && state.textBuilder.text) {\n    const text = state.textBuilder.text\n    state.textBuilder.text = undefined\n    return pushKid(state, text)\n  }\n  return state\n}\n\nexport const withCurrentGraphics = (state: State, cb: (tb: GraphicsState) => GraphicsState) => {\n  if (state.graphics.size === 0) {\n    throw new Error('Empty graphics stack')\n  }\n  return updateIn(state, ['graphics', 0], (c) => cb(c as GraphicsState))\n}\n\nexport const currentGraphicsSet = <P extends keyof GraphicsStateProps, V extends GraphicsStateProps[P]>(\n  state: State,\n  prop: P,\n  value: V\n) => {\n  if (state.graphics.size === 0) {\n    throw new Error('Empty graphics stack')\n  }\n  return updateIn(state, ['graphics', 0], (c) => {\n    const currentGraphics = c as GraphicsState\n    return currentGraphics.set(prop, value)\n  })\n}\n","type ICCBased = { Alternate?: string; N: number }\nfunction pickAlternateICCBased(iccBasedParams: ICCBased): string {\n  // (Optional) An alternate colour space that shall be used in case the one\n  // specified in the stream data is not supported. Non-conforming readers may\n  // use this colour space. The alternate space may be any valid colour space\n  // (except a Pattern colour space) that has the number of components specified\n  // by N. If this entry is omitted and the conforming reader does not understand\n  // the ICC profile data, the colour space that shall be used is DeviceGray,\n  // DeviceRGB, or DeviceCMYK, depending on whether the value of N is 1, 3, or\n  // 4, respectively\n  const alternate = iccBasedParams['Alternate']\n  if (alternate) return alternate\n  const n = iccBasedParams['N']\n  if (n === 1) return 'DeviceGray'\n  if (n === 3) return 'DeviceRGB'\n  if (n === 4) return 'DeviceCMYK'\n  console.warn(\"Couldn't pick appropriate alternative to ICCBased color space:\", iccBasedParams)\n  return 'DeviceRGB'\n}\n\nexport type ColorSpace = ['ICCBased', ICCBased] | ['Separation', unknown, string] | ['Pattern'] | string\nexport function mapAlternate(colorSpace: ColorSpace): string {\n  if (typeof colorSpace === 'string')\n    // otherwise TS cannot properly eliminate options, since index on string is string\n    return colorSpace\n  // see 8.6.5.5 ICCBased Colour Spaces\n  if (colorSpace[0] === 'ICCBased') {\n    return pickAlternateICCBased(colorSpace[1])\n  }\n  // see 8.6.6.4 Separation Colour Spaces\n  if (colorSpace[0] === 'Separation') {\n    return colorSpace[2]\n  }\n  if (colorSpace[0] === 'Pattern') {\n    return colorSpace[0]\n  }\n  return colorSpace\n}\n\nfunction defaultShape(space: string | ColorSpace, val: number): number[] {\n  if (space === 'DeviceGray') return [val]\n  if (space === 'DeviceCMYK') return [val, val, val, 1.0]\n  return [val, val, val]\n}\n\nexport function defaultColor(space: string | ColorSpace): number[] {\n  return defaultShape(space, 0)\n}\n\nexport function mapAlternateShape(space: string | ColorSpace, vals: number[]): number[] {\n  // e.g. with Separation there's only one value instead of 3\n  // because we are forcibly mapping it to an alternate space\n  if (vals.length === 1) {\n    return defaultShape(space, vals[0])\n  }\n  return vals\n}\n","import { GraphicsState, GraphicsStateProps } from '../entities'\nimport { ClippingPathOperators, CtorTypes, PathConstructionOperators, PathPaintingOperators } from '../interfaces'\n\ntype NONZERO_WINDING_NUMBER = 'nonzero-winding-number'\ntype EVEN_ODD = 'even-odd'\ntype FillRule = NONZERO_WINDING_NUMBER | EVEN_ODD\n\nexport type Path = {\n  Type: 'Path'\n  GraphicsState: GraphicsStateProps\n  Subpaths: unknown[]\n  FillRule: FillRule\n  Fill: boolean\n  Stroke: boolean\n}\n\nexport const Path = (GraphicsState: GraphicsState): Path => ({\n  Type: 'Path',\n  Subpaths: [],\n  FillRule: 'nonzero-winding-number',\n  Fill: false,\n  Stroke: false,\n  GraphicsState: GraphicsState.toJS() as GraphicsStateProps,\n})\n\nexport type PathResult = {\n  path?: Path\n  clippingPath?: Path\n}\n\nconst PathBuilderOperators = {\n  ...PathConstructionOperators,\n  ...PathPaintingOperators,\n  ...ClippingPathOperators,\n}\nexport type PathBuilderOperator = CtorTypes<typeof PathBuilderOperators>\n","import { decodeNumbers } from '../decoder'\nimport { GraphicsState } from '../entities'\nimport {\n  ClippingPathOperator,\n  ClippingPathOperators,\n  PathConstructionOperator,\n  PathConstructionOperators,\n  PathPaintingOperator,\n  PathPaintingOperators,\n} from '../interfaces'\nimport { assertNever } from '../../utils/types'\nimport { Operands } from '../../syntax/interfaces'\nimport { Path, PathBuilderOperator, PathResult } from './interfaces'\n\nfunction isLowerCase(str: string): boolean {\n  return str.toLowerCase() === str\n}\n\nexport class PathBuilder {\n  path: Path\n  clippingPath?: Path\n  currentPath: unknown[] = []\n  private _currentPoint?: [number, number]\n\n  constructor(\n    graphicsState: GraphicsState,\n    private strictPopplerCompat: boolean,\n    private ops: Generator<PathBuilderOperator>\n  ) {\n    this.path = Path(graphicsState)\n  }\n\n  public run(): PathResult {\n    for (;;) {\n      // BEWARE: using for (const [op, args] of ops) doesn't work. See streams_test.ts\n      const { value: op } = this.ops.next()\n      const returnValue = this.apply(op)\n      if (returnValue) {\n        return { ...returnValue, clippingPath: this.clippingPath }\n      }\n    }\n  }\n\n  private movingCurrentPoint(args: Operands, f: (ns: number[]) => void) {\n    const coords = Array.from(decodeNumbers(args))\n    f(coords)\n    this.currentPoint = coords.slice(-2) as [number, number]\n  }\n\n  private pushOperator(args: Operands, type: string) {\n    this.movingCurrentPoint(args, (Coords) => {\n      this.currentPath.push({\n        Type: type,\n        Coords,\n      })\n    })\n  }\n\n  // args:  x1 y1 x2 y2 x3 y3\n  // Append a cubic Bézier curve to the current path. The curve\n  // shall extend from the current point to the point (x3, y3 ), using\n  // (x1 , y1 ) and (x2 , y2 ) as the Bézier control points.\n  // The new current point shall be (x3 , y3 )\n  private pushCurve(args: Operands) {\n    return this.pushOperator(args, 'Curve')\n  }\n\n  // args: x2 y2 x3 y3\n  // Append a cubic Bézier curve to the current path. The curve\n  // shall extend from the current point to the point (x3 , y3 ), using\n  // the current point and (x2 , y2 ) as the Bézier control points.\n  // The new current point shall be (x3 , y3 )\n  private pushCurveFromCurrentPoint(args: Operands) {\n    this.movingCurrentPoint(args, (Coords) => {\n      this.currentPath.push({\n        Type: 'Curve',\n        Coords: Array.of(...this.currentPoint, ...Coords),\n      })\n    })\n  }\n\n  // args: x1 y1 x3 y3\n  // Append a cubic Bézier curve to the current path. The curve\n  // shall extend from the current point to the point (x3 , y3 ), using\n  // (x1 , y1 ) and (x3 , y3 ) as the Bézier control points.\n  // The new current point shall be (x3 , y3 ).\n  private pushCurveByCurrentPoint(args: Operands) {\n    this.movingCurrentPoint(args, (Coords) => {\n      this.currentPath.push({\n        Type: 'Curve',\n        Coords: Array.of(...Coords, ...Coords.slice(-2)),\n      })\n    })\n  }\n\n  private applyPathConstructionOperator(op: PathConstructionOperator): void {\n    switch (op.name) {\n      case 'm':\n        this.finishCurrentPath(false)\n        return this.pushOperator(op.args, 'Move')\n      case 'l':\n        return this.pushOperator(op.args, 'Line')\n      case 'c':\n        return this.pushCurve(op.args)\n      case 'v':\n        return this.pushCurveFromCurrentPoint(op.args)\n      case 'y':\n        return this.pushCurveByCurrentPoint(op.args)\n      case 'h':\n        this.finishCurrentPath(true)\n        return\n      case 're':\n        this.path.Subpaths.push({\n          Type: 'Rect',\n          Coords: Array.from(decodeNumbers(op.args)),\n        })\n        return\n      default:\n        assertNever(op)\n    }\n  }\n\n  // 8.5.3 Path-Painting Operators\n  private applyPathPaintingOperator(op: PathPaintingOperator): { path?: Path } {\n    switch (op.name) {\n      case 'S':\n      case 's':\n        this.finishCurrentPath(isLowerCase(op.name))\n        return { path: { ...this.path, Stroke: true } }\n      case 'F':\n      case 'f':\n        this.finishCurrentPath(true)\n        return { path: { ...this.path, Fill: true } }\n      case 'f*':\n        this.finishCurrentPath(true)\n        return { path: { ...this.path, Fill: true, FillRule: 'even-odd' } }\n      case 'B':\n      case 'b':\n        this.finishCurrentPath(isLowerCase(op.name))\n        return { path: { ...this.path, Fill: true, Stroke: true } }\n      case 'B*':\n      case 'b*':\n        this.finishCurrentPath(isLowerCase(op.name))\n        return { path: { ...this.path, Fill: true, FillRule: 'even-odd', Stroke: true } }\n      case 'n':\n        return { path: undefined }\n      default:\n        assertNever(op)\n    }\n  }\n\n  private applyClippingPathOperator(op: ClippingPathOperator): void {\n    switch (op.name) {\n      // 8.5.4 Clipping Path Operators\n      case 'W':\n        this.finishCurrentPath(true)\n        if (this.strictPopplerCompat) {\n          delete this.path.GraphicsState.ClippingPath\n        }\n        this.clippingPath = this.path\n        return\n      case 'W*':\n        this.path.FillRule = 'even-odd'\n        this.finishCurrentPath(true)\n        if (this.strictPopplerCompat) {\n          delete this.path.GraphicsState.ClippingPath\n        }\n        this.clippingPath = this.path\n        return\n      default:\n        assertNever(op)\n    }\n  }\n\n  private apply(op: PathBuilderOperator) {\n    if (op.name in PathConstructionOperators) return this.applyPathConstructionOperator(op as PathConstructionOperator)\n    if (op.name in PathPaintingOperators) return this.applyPathPaintingOperator(op as PathPaintingOperator)\n    if (op.name in ClippingPathOperators) return this.applyClippingPathOperator(op as ClippingPathOperator)\n    throw new Error(`AssertionError: unhandled path-builder operator: ${op.name}`)\n  }\n\n  private get currentPoint(): [number, number] {\n    if (this._currentPoint) return this._currentPoint\n    throw new Error('AssertionError: currentPoint is undefined')\n  }\n\n  private set currentPoint(point: [number, number]) {\n    this._currentPoint = point\n  }\n\n  private finishCurrentPath(Closed: boolean) {\n    if (this.currentPath.length > 0) {\n      this.path.Subpaths.push({\n        Type: 'Path',\n        Points: this.currentPath,\n        Closed,\n      })\n      this.currentPath = []\n    }\n  }\n}\n","import { mat2d } from 'gl-matrix'\nimport { GraphicsState, GraphicsStateProps } from './entities'\n\nexport type TextGroup = {\n  Type: 'TextGroup'\n  Texts: Text[]\n}\n\nexport const TextGroup = (Texts: Text[]): TextGroup => ({\n  Type: 'TextGroup',\n  Texts,\n})\n\ntype Text = {\n  GraphicsState: GraphicsStateProps\n  TextMatrix: number[]\n  TextLineMatrix: number[]\n  Text: unknown\n}\n\nfunction toValues(mat: mat2d): number[] {\n  return [mat[0], mat[1], mat[2], mat[3], mat[4], mat[5]]\n}\n\nexport class TextBuilder {\n  textMatrix: mat2d\n  text?: TextGroup\n\n  constructor() {\n    this.textMatrix = mat2d.create()\n    mat2d.identity(this.textMatrix)\n  }\n\n  showText(graphicsState: GraphicsState, Text: unknown) {\n    const text = {\n      GraphicsState: graphicsState.toJS(),\n      TextMatrix: toValues(this.textMatrix),\n      TextLineMatrix: toValues(this.textMatrix), // TODO: do we need separate a line matrix?\n      Text,\n    } as Text\n    if (this.text) {\n      this.text.Texts.push(text)\n    } else {\n      this.text = TextGroup([text])\n    }\n  }\n}\n","import { unshift, all } from '../utils/stream'\nimport { mat2d, vec2 } from 'gl-matrix'\nimport { ColorSpace, defaultColor, mapAlternate, mapAlternateShape } from './colors'\nimport { decodeDashPattern, decodeName, decodeNames, decodeNumber, decodeNumbers, decode, DecodeType } from './decoder'\nimport { MarkedContext, Shading, XObject } from './entities'\nimport { PathBuilder } from './path-builder'\nimport {\n  currentGraphics,\n  currentGraphicsSet,\n  finishTextGroup,\n  pushKid,\n  State,\n  withCurrentGraphics,\n  withTextBuilder,\n} from './state'\nimport { TextBuilder } from './text-builder'\n\nimport { Operands } from '../syntax/interfaces'\nimport {\n  CompatibilityOperator,\n  CompatibilityOperators,\n  ContentStreamOperator,\n  GraphicStateOperator,\n  GraphicStateOperators,\n  MarkedContentOperator,\n  MarkedContentOperators,\n  ShadingOperator,\n  ShadingOperators,\n  TextObjectOperator,\n  TextObjectOperators,\n  TextPositioningOperator,\n  TextPositioningOperators,\n  TextShowingOperators,\n  TextShowingOperator,\n  TextStateOperator,\n  TextStateOperators,\n  XObjectOperator,\n  XObjectOperators,\n  ColourOperator,\n  ColourOperators,\n  PathConstructionOperators,\n  ContentStreamOperators,\n} from './interfaces'\nimport { assertNever } from '../utils/types'\nimport { PathBuilderOperator } from './path-builder/interfaces'\n\nexport class Reducer {\n  constructor(private ops: Generator<ContentStreamOperator>) {}\n\n  // https://gitlab.avcd.cz/backend/illustrator-parser/-/blob/master/illustrator_parser/core/streams/content/states/path_object_state.py\n  private applyPathObjectOps(state: State, ops: Generator<ContentStreamOperator>): State {\n    // Path object only allows path construction operators - so we can safely handle it in a separate loop\n    const result = new PathBuilder(\n      currentGraphics(state),\n      state.strictPopplerCompat,\n      ops as Generator<PathBuilderOperator>\n    ).run()\n    if (result.path) {\n      state = pushKid(state, result.path)\n    }\n    if (result.clippingPath) {\n      state = withCurrentGraphics(state, (g) =>\n        g.update('ClippingPath', (path) => [...(path ?? []), result.clippingPath])\n      )\n    }\n    return state\n  }\n\n  private pushMarkedContext(state: State, args: Operands): State {\n    const names = Array.from(decodeNames(args))\n    return state.update('context', (c) =>\n      c.unshift(MarkedContext({ Tag: names[0], Properties: names[1] /* might be null */ }))\n    )\n  }\n\n  private popMarkedContext(state: State): State {\n    const top = state.context.first()\n    if (!top) {\n      throw new Error('Marked Context pop without respective push')\n    }\n    return pushKid(\n      state.update('context', (c) => c.shift()),\n      top.toJS()\n    )\n  }\n\n  private moveStartWithLeadingOffset(state: State, args: Operands): Promise<State> {\n    const [, y] = Array.from(decodeNumbers(args))\n    state = withCurrentGraphics(state, (g) => g.set('TextLeading', -y))\n    return this.apply(state, ContentStreamOperators.Td({ args }))\n  }\n\n  private async showText(state: State, args: Operands): Promise<State> {\n    const graphicsState = currentGraphics(state)\n    const fontRef = graphicsState.TextFont\n    if (!fontRef) {\n      throw new Error('TextFont is undefined during Tj')\n    }\n    const font = state.resources.Font[fontRef]\n\n    const [Text] = await all(state.decoder.decodeText(font, args))\n\n    return withTextBuilder(state, (textBuilder) => {\n      pushKid(state, textBuilder.showText(graphicsState, Text))\n    })\n  }\n\n  private async nextLineAndShowTextAndSpacing(state: State, args: Operands): Promise<State> {\n    const [w, c, str] = args\n    state = await this.apply(state, ContentStreamOperators.Tw({ args: [w] }))\n    state = await this.apply(state, ContentStreamOperators.Tc({ args: [c] }))\n    state = await this.apply(state, ContentStreamOperators[\"'\"]({ args: [str] }))\n    return state\n  }\n\n  private async showTextIndividualPositioning(state: State, args: Operands): Promise<State> {\n    const graphicsState = currentGraphics(state)\n    const fontRef = graphicsState.TextFont\n    if (!fontRef) {\n      throw new Error('TextFont is undefined during TJ')\n    }\n    const vals = await all(state.decoder.decodeIndividualGlyphPositioning(state.resources.Font[fontRef], args))\n    return withTextBuilder(state, (textBuilder) => {\n      pushKid(state, textBuilder.showText(graphicsState, vals))\n    })\n  }\n\n  private decodeColorSpace(state: State, args: Operands): ColorSpace {\n    const name = decodeName(args)\n    let colorSpace = state.resources.ColorSpace[name] ?? name\n    if (Array.isArray(colorSpace) && colorSpace.length === 1) {\n      colorSpace = colorSpace[0]\n    }\n    return state.strictPopplerCompat ? mapAlternate(colorSpace) : colorSpace\n  }\n\n  private async applyCompatibilityOperators(state: State, op: CompatibilityOperator): Promise<State> {\n    switch (op.name) {\n      case 'BX':\n      case 'EX':\n        return state\n      default:\n        assertNever(op)\n    }\n  }\n\n  private async applyMarkedContentOperators(state: State, op: MarkedContentOperator): Promise<State> {\n    switch (op.name) {\n      case 'BDC':\n      case 'BMC':\n        return this.pushMarkedContext(state, op.args)\n      case 'EMC':\n        return this.popMarkedContext(state)\n      default:\n        console.warn(`Unhandled operator ${op.name}`)\n        return state\n    }\n  }\n\n  private decodeSpecifiedParameters(state: State, args: Operands) {\n    const name = decodeName(args)\n    return state.strictPopplerCompat ? name : state.resources.ExtGState[name] ?? name\n  }\n\n  private async applyGraphicStateOperators(state: State, op: GraphicStateOperator): Promise<State> {\n    switch (op.name) {\n      case 'q':\n        return state.update('graphics', (g) => g.unshift(currentGraphics(state)))\n      case 'Q':\n        return state.update('graphics', (g) => g.shift())\n      case 'cm':\n        return currentGraphicsSet(state, 'CTM', Array.from(decodeNumbers(op.args)))\n      case 'w':\n        return currentGraphicsSet(state, 'LineWidth', decodeNumber(op.args))\n      case 'J':\n        return currentGraphicsSet(state, 'LineCap', decodeNumber(op.args))\n      case 'j':\n        return currentGraphicsSet(state, 'LineJoin', decodeNumber(op.args))\n      case 'M':\n        return currentGraphicsSet(state, 'MiterLimit', decodeNumber(op.args))\n      case 'd':\n        return currentGraphicsSet(state, 'DashPattern', Array.from(decodeDashPattern(op.args)))\n      case 'ri':\n        return currentGraphicsSet(state, 'RenderingIntent', decodeName(op.args))\n      case 'i':\n        return currentGraphicsSet(state, 'Flatness', decodeNumber(op.args))\n      case 'gs':\n        return currentGraphicsSet(state, 'SpecifiedParameters', this.decodeSpecifiedParameters(state, op.args))\n      default:\n        assertNever(op)\n    }\n  }\n\n  // https://gitlab.avcd.cz/backend/illustrator-parser/-/blob/master/illustrator_parser/core/streams/content/states/external_image_object_state.py\n  private async applyXObjectOperators(state: State, op: XObjectOperator): Promise<State> {\n    switch (op.name) {\n      case 'Do':\n        return pushKid(state, XObject(decodeName(op.args), currentGraphics(state)))\n      default:\n        // NOTE: Since XObjectOperator is not a union, TS doesn't narrow the type to \"never\" here for some reason.\n        assertNever(op as never)\n    }\n  }\n\n  // https://gitlab.avcd.cz/backend/illustrator-parser/-/blob/master/illustrator_parser/core/streams/content/states/shading_object_state.py\n  private async applyShadingOperators(state: State, op: ShadingOperator): Promise<State> {\n    switch (op.name) {\n      case 'sh':\n        return pushKid(state, Shading(decodeName(op.args), currentGraphics(state)))\n      default:\n        // NOTE: Since ShadingOperator is not a union, TS doesn't narrow the type to \"never\" here for some reason.\n        assertNever(op as never)\n    }\n  }\n\n  // https://gitlab.avcd.cz/backend/illustrator-parser/-/blob/master/illustrator_parser/core/streams/content/states/text_object_state.py\n  private async applyTextObjectOperators(state: State, op: TextObjectOperator): Promise<State> {\n    switch (op.name) {\n      case 'BT':\n        return state.set('textBuilder', new TextBuilder())\n      case 'ET':\n        return finishTextGroup(state).remove('textBuilder')\n      default:\n        assertNever(op)\n    }\n  }\n\n  private async applyTextPositioningOperators(state: State, op: TextPositioningOperator): Promise<State> {\n    switch (op.name) {\n      case 'TD':\n        return this.moveStartWithLeadingOffset(state, op.args)\n      case 'Tm':\n        state = withTextBuilder(state, (textBuilder) => {\n          const [a, b, c, d, e, f] = Array.from(decodeNumbers(op.args))\n          textBuilder.textMatrix = mat2d.fromValues(a, b, c, d, e, f)\n        })\n        return finishTextGroup(state)\n      case 'Td':\n        state = withTextBuilder(state, (textBuilder) => {\n          const [x, y] = Array.from(decodeNumbers(op.args))\n          mat2d.translate(textBuilder.textMatrix, textBuilder.textMatrix, vec2.fromValues(x, y))\n        })\n        return finishTextGroup(state)\n      // NOTE: I'm not sure if these should modify textMatrix. poppler doesn't and yet there are differences in some cases.\n      case 'T*':\n        return withTextBuilder(state, (textBuilder) =>\n          mat2d.translate(\n            textBuilder.textMatrix,\n            textBuilder.textMatrix,\n            vec2.fromValues(0, -currentGraphics(state).TextLeading)\n          )\n        )\n      default:\n        assertNever(op)\n    }\n  }\n\n  private async applyTextShowingOperators(state: State, op: TextShowingOperator): Promise<State> {\n    switch (op.name) {\n      // 9.4.3 Text-Showing Operators\n      case 'Tj':\n        return this.showText(state, op.args)\n      case \"'\":\n        state = await this.applyTextPositioningOperators(state, TextPositioningOperators['T*']())\n        state = await this.applyTextShowingOperators(state, TextShowingOperators.Tj(op))\n        return state\n      case '\"':\n        return this.nextLineAndShowTextAndSpacing(state, op.args)\n      case 'TJ':\n        return this.showTextIndividualPositioning(state, op.args)\n      default:\n        assertNever(op)\n    }\n  }\n\n  private async applyTextStateOperators(state: State, op: TextStateOperator): Promise<State> {\n    switch (op.name) {\n      case 'Tw':\n        return currentGraphicsSet(state, 'TextWordSpace', decodeNumber(op.args))\n      case 'Tc':\n        return currentGraphicsSet(state, 'TextCharSpace', decodeNumber(op.args))\n      case 'Tz':\n        return currentGraphicsSet(state, 'TextScale', decodeNumber(op.args))\n      case 'TL':\n        return currentGraphicsSet(state, 'TextLeading', decodeNumber(op.args))\n      case 'Tf':\n        return withCurrentGraphics(state, (currentGraphics) => {\n          const [font, size] = op.args\n          return currentGraphics.set('TextFont', decodeName([font])).set('TextFontSize', decodeNumber([size]))\n        })\n      case 'Tr':\n        return currentGraphicsSet(state, 'TextRender', decodeNumber(op.args))\n      case 'Ts':\n        return currentGraphicsSet(state, 'TextRise', decodeNumber(op.args))\n      default:\n        assertNever(op)\n    }\n  }\n\n  // If the current stroking colour space is a Separation, DeviceN, or\n  // ICCBased colour space, the operands c1...cn shall be numbers. The\n  // number of operands and their interpretation depends on the colour space.\n  // If the current stroking colour space is a Pattern colour space, name shall\n  // be the name of an entry in the Pattern subdictionary of the current\n  // resource dictionary (see 7.8.3, \"Resource Dictionaries\"). For an\n  // uncoloured tiling pattern (PatternType = 1 and PaintType = 2), c1...cn\n  // shall be component values specifying a colour in the pattern’s underlying\n  // colour space. For other types of patterns, these operands shall not be\n  // specified\n  private decodeScn(\n    state: State,\n    args: Operands,\n    property: 'ColorStroking' | 'ColorNonStroking',\n    colorSpace: 'ColorSpaceStroking' | 'ColorSpaceNonStroking'\n  ): State {\n    return withCurrentGraphics(state, (currentGraphics) => {\n      const expectedOperands = currentGraphics[colorSpace] === 'Pattern' ? DecodeType.Pattern : DecodeType.MultiNumber\n      const ops = Array.from(decode(expectedOperands, args))\n      const color = state.strictPopplerCompat ? mapAlternateShape(currentGraphics[colorSpace], ops as number[]) : ops\n      return currentGraphics.set(property, color)\n    })\n  }\n\n  private setColors(\n    state: State,\n    args: Operands,\n    property: 'ColorStroking' | 'ColorNonStroking',\n    colorSpace: 'ColorSpaceStroking' | 'ColorSpaceNonStroking',\n    colorSpaceValue: 'DeviceGray' | 'DeviceRGB' | 'DeviceCMYK'\n  ): State {\n    return withCurrentGraphics(state, (currentGraphics) =>\n      currentGraphics.set(colorSpace, colorSpaceValue).set(property, Array.from(decodeNumbers(args)))\n    )\n  }\n\n  private decodeCs(\n    state: State,\n    args: Operands,\n    property: 'ColorStroking' | 'ColorNonStroking',\n    colorSpace: 'ColorSpaceStroking' | 'ColorSpaceNonStroking'\n  ): State {\n    return withCurrentGraphics(state, (currentGraphics) => {\n      const colorSpaceValue = this.decodeColorSpace(state, args)\n      return currentGraphics.set(colorSpace, colorSpaceValue).set(property, defaultColor(colorSpace))\n    })\n  }\n\n  private decodeSc(state: State, args: Operands, property: 'ColorStroking' | 'ColorNonStroking'): State {\n    return withCurrentGraphics(state, (currentGraphics) =>\n      currentGraphics.set(property, Array.from(decodeNumbers(args)))\n    )\n  }\n\n  // https://gitlab.avcd.cz/backend/illustrator-parser/-/blob/master/illustrator_parser/core/streams/content/states/mixins.py#L80\n  private async applyColourOperators(state: State, op: ColourOperator): Promise<State> {\n    switch (op.name) {\n      case 'CS':\n        return this.decodeCs(state, op.args, 'ColorStroking', 'ColorSpaceStroking')\n      case 'cs':\n        return this.decodeCs(state, op.args, 'ColorNonStroking', 'ColorSpaceNonStroking')\n      case 'SCN':\n        return this.decodeScn(state, op.args, 'ColorStroking', 'ColorSpaceStroking')\n      case 'scn':\n        return this.decodeScn(state, op.args, 'ColorNonStroking', 'ColorSpaceNonStroking')\n      case 'SC':\n        return this.decodeSc(state, op.args, 'ColorStroking')\n      case 'sc':\n        return this.decodeSc(state, op.args, 'ColorNonStroking')\n      case 'G':\n        return this.setColors(state, op.args, 'ColorStroking', 'ColorSpaceStroking', 'DeviceGray')\n      case 'g':\n        return this.setColors(state, op.args, 'ColorNonStroking', 'ColorSpaceNonStroking', 'DeviceGray')\n      case 'RG':\n        return this.setColors(state, op.args, 'ColorStroking', 'ColorSpaceStroking', 'DeviceRGB')\n      case 'rg':\n        return this.setColors(state, op.args, 'ColorNonStroking', 'ColorSpaceNonStroking', 'DeviceRGB')\n      case 'K':\n        return this.setColors(state, op.args, 'ColorStroking', 'ColorSpaceStroking', 'DeviceCMYK')\n      case 'k':\n        return this.setColors(state, op.args, 'ColorNonStroking', 'ColorSpaceNonStroking', 'DeviceCMYK')\n      default:\n        assertNever(op)\n    }\n  }\n\n  private async apply(state: State, op: ContentStreamOperator): Promise<State> {\n    if (op.name in CompatibilityOperators) return this.applyCompatibilityOperators(state, op as CompatibilityOperator)\n    if (op.name in MarkedContentOperators) return this.applyMarkedContentOperators(state, op as MarkedContentOperator)\n    if (op.name in GraphicStateOperators) return this.applyGraphicStateOperators(state, op as GraphicStateOperator)\n    if (op.name in XObjectOperators) return this.applyXObjectOperators(state, op as XObjectOperator)\n    if (op.name in ShadingOperators) return this.applyShadingOperators(state, op as ShadingOperator)\n    if (op.name in TextObjectOperators) return this.applyTextObjectOperators(state, op as TextObjectOperator)\n    if (op.name in TextPositioningOperators)\n      return this.applyTextPositioningOperators(state, op as TextPositioningOperator)\n    if (op.name in TextShowingOperators) return this.applyTextShowingOperators(state, op as TextShowingOperator)\n    if (op.name in TextStateOperators) return this.applyTextStateOperators(state, op as TextStateOperator)\n    if (op.name in ColourOperators) return this.applyColourOperators(state, op as ColourOperator)\n    if (op.name in PathConstructionOperators) return this.applyPathObjectOps(state, unshift(op, this.ops))\n    throw new Error(`AssertionError: unhandled operator ${op.name}`)\n  }\n\n  public async run(state: State): Promise<State> {\n    for (const op of this.ops) {\n      state = await this.apply(state, op)\n    }\n    return state\n  }\n}\n","// https://web.archive.org/web/20220226063926/https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf\n// 7.8.2 Content Streams\n\nimport { Decoder, FontReader } from './decoder'\nimport { parseOperators, Resources } from './interfaces'\nimport { New } from './state'\nimport { Reducer } from './reducer'\n\nexport async function parse(\n  data: Uint8Array,\n  resources: Resources,\n  fontReader: FontReader,\n  strictPopplerCompat: boolean\n): Promise<unknown[]> {\n  const decoder = new Decoder(fontReader)\n  const ops = parseOperators(data)\n  const state = await new Reducer(ops).run(\n    New({\n      decoder,\n      resources,\n      strictPopplerCompat,\n    })\n  )\n  console.assert(state.context.size === 1, `leftover ${state.context.size - 1} marked contexts on stack`)\n  return state.context.first()?.Kids.toJS() ?? []\n}\n","import { Operands } from './syntax/interfaces'\nimport { OperatorParser } from './syntax/parser'\n\nexport const CMapOperators = {\n  begincodespacerange: () => ({ name: 'begincodespacerange' } as const),\n  endcodespacerange: () => ({ name: 'endcodespacerange' } as const),\n  beginbfrange: () => ({ name: 'beginbfrange' } as const),\n  endbfrange: ({ args }: { args: Operands }) => ({ name: 'endbfrange', args } as const),\n  beginbfchar: () => ({ name: 'beginbfchar' } as const),\n  endbfchar: ({ args }: { args: Operands }) => ({ name: 'endbfchar', args } as const),\n}\ntype Operator = keyof typeof CMapOperators\ntype OperatorInstance = ReturnType<typeof CMapOperators[Operator]>\n\nexport const parseCMapOperators = (data: Uint8Array) =>\n  new OperatorParser<Operator, OperatorInstance>(data, CMapOperators).parse()\n","export class Cache<K, V> {\n  constructor(private readonly _values: Map<K, V>) {}\n\n  public upsert(key: K, valueFn: () => V): V {\n    const set = () => {\n      const value = valueFn()\n      this._values.set(key, value)\n      return value\n    }\n    return this._values.get(key) ?? set()\n  }\n}\n","import { parseCMapOperators } from './cmap'\nimport { Differences, FontRef } from './contents/decoder'\nimport { Font } from './contents/text-encoding'\nimport { StreamDictFetcher } from './interfaces'\nimport { Operands, OperandType } from './syntax/interfaces'\nimport { Cache } from './utils/memoize'\n\nexport class FontReader {\n  private decoder = new TextDecoder('utf-16be')\n  private cache: Cache<number, Promise<Font>>\n\n  constructor(private readonly streamDict: StreamDictFetcher, fontCache: Map<number, Promise<Font>>) {\n    this.cache = new Cache(fontCache)\n  }\n\n  public get(fontID: FontRef): Promise<Font> {\n    return this.cache.upsert(fontID.ObjID, () => this.parse(fontID))\n  }\n\n  public async parse(fontRef: FontRef): Promise<Font> {\n    return {\n      ToUnicode: fontRef.ToUnicode && this.parseToUnicode(await this.streamDict(fontRef.ToUnicode.ObjID)),\n      Encoding:\n        typeof fontRef.Encoding === 'string'\n          ? fontRef.Encoding\n          : {\n              Differences: this.parseDifferences(fontRef.Encoding.Differences),\n              BaseEncoding: fontRef.Encoding.BaseEncoding,\n            },\n    }\n  }\n\n  private parseDifferences(diffs: Differences): Map<number, string> {\n    const mapping = new Map()\n    let idx = 0\n    for (const diff of diffs) {\n      if (typeof diff === 'number') {\n        idx = diff\n      } else {\n        // TODO: this should be read from tables in Annex D\n        mapping.set(idx, diff[0])\n        idx += 1\n      }\n    }\n    return mapping\n  }\n\n  private parseBFCharValue(value: string): string {\n    const matches = value.match(/../g)\n    if (!matches) {\n      throw new Error(`AssertionError: hexadecimal string: '${value}' failed to match`)\n    }\n    const bytes = new Uint8Array(matches.map((v: string) => parseInt(v, 16)))\n    return this.decoder.decode(bytes)\n  }\n\n  private parseBFChar(args: Operands): Map<number, string> {\n    const mapping = new Map()\n    let key = null\n    for (const op of args) {\n      if (op.type !== OperandType.HexadecimalString) {\n        throw new Error(`AssertionError: non-hexadecimal string: '${op.type}' in parseBFChar`)\n      }\n      if (key) {\n        mapping.set(key, this.parseBFCharValue(op.value))\n        key = null\n      } else {\n        const val = parseInt(op.value, 16)\n        key = val\n      }\n    }\n    return mapping\n  }\n\n  private parseToUnicode(data: Uint8Array): Map<number, string> {\n    const ops = parseCMapOperators(data)\n    let value = new Map()\n    for (const op of ops) {\n      switch (op.name) {\n        case 'endbfchar':\n          value = new Map([...value, ...this.parseBFChar(op.args)])\n          continue\n        case 'endbfrange':\n          console.warn(\"'bfrange' is currently not supported\")\n          continue\n      }\n    }\n    return value\n  }\n}\n","import { mark, stop } from 'marky'\nimport { parse } from './contents'\nimport { Resources } from './contents/interfaces'\nimport { FontReader } from './fonts'\nimport { AIFile, ContentsDict, Context } from './interfaces'\nimport {\n  isPDFRef,\n  mapObject,\n  PDFObjectWithoutRefs,\n  PDFObjectWithRefs,\n  PDFRef,\n  PDFValue,\n  StreamDict,\n  traverse,\n  XObject,\n} from './pdf-types'\nimport { Cache } from './utils/memoize'\nimport { hasOwnProperty, isNonNullObject } from './utils/types'\n\nexport function deref(aiFile: AIFile, ref: PDFRef): XObject {\n  return aiFile.XRefTable.Table[ref.ObjectNumber]\n}\n\nasync function parseXObjectStreamDict(ctx: Context, id: number, resources: Resources): Promise<unknown[]> {\n  const cache = new Cache<number, Promise<unknown[]>>(ctx.xobjectMutex)\n  return cache.upsert(id, async () => {\n    const streamData = await ctx.streamDict(id)\n    return parse(streamData, resources, new FontReader(ctx.streamDict, ctx.fontCache), Boolean(ctx.strictPopplerCompat))\n  })\n}\n\nexport async function parseContentStream(ctx: Context, obj: PDFRef, resources: Resources): Promise<ContentsDict> {\n  const id = obj.ObjectNumber\n  const timeLabel = `parseContentStream(${id})`\n  mark(timeLabel)\n  const contentsDict = deref(ctx.aiFile, obj) as StreamDict\n  const Data = await parseXObjectStreamDict(ctx, obj.ObjectNumber, resources)\n  stop(timeLabel)\n  return ctx.strictPopplerCompat\n    ? { Data, Kind: 8, Filter: contentsDict.Object.Dict.Filter, Length: contentsDict.Object.Dict.Length }\n    : { Data }\n}\n\nfunction bitmap(ctx: Context, objID: number): unknown {\n  const Image = ctx.externalResourceURLs?.Bitmaps[objID.toString()] ?? objID.toString()\n  return { Image }\n}\n\nfunction font(ctx: Context, objID: number): unknown {\n  const Font = ctx.externalResourceURLs?.Fonts[objID.toString()] ?? objID.toString()\n  return { Font }\n}\n\nexport async function parseXObjects(ctx: Context, Resources: Resources): Promise<Resources> {\n  const trampoline = async (obj: Record<string, unknown>) => {\n    if (!hasOwnProperty(obj, 'ObjID') || typeof obj.ObjID !== 'number') return mapObject(obj, trampoline)\n    if (hasOwnProperty(obj, 'Resources') && obj.Resources) {\n      const resources = (await traverse(obj.Resources, trampoline)) as Resources // forms & patterns have their own resources\n      const data = await parseXObjectStreamDict(ctx, obj.ObjID, resources)\n      return {\n        ...obj,\n        Data: await traverse(data, trampoline),\n        Resources: resources,\n      }\n    }\n    const subtype = hasOwnProperty(obj, 'Subtype') && obj.Subtype\n    if (subtype === 'Image') return { ...obj, Data: bitmap(ctx, obj.ObjID) }\n    if (subtype === 'TrueType') return { ...obj, Data: font(ctx, obj.ObjID) }\n\n    return mapObject(obj, trampoline)\n  }\n  return traverse(Resources, trampoline) as Promise<Resources>\n}\n\nexport async function derefDeep(ctx: Context, src: PDFObjectWithRefs): Promise<Resources> {\n  if (src === null) {\n    throw new Error('derefDeep got null')\n  }\n  const trampoline = async (obj: Record<string, unknown>): Promise<PDFObjectWithoutRefs> => {\n    if (!isPDFRef(obj)) return mapObject(obj, trampoline) as Promise<PDFObjectWithoutRefs>\n\n    const val = deref(ctx.aiFile, obj)['Object']\n    if (Array.isArray(val)) return Promise.all(val.map((v) => traverse(v, trampoline))) as Promise<PDFObjectWithoutRefs>\n\n    const ObjID = obj.ObjectNumber\n    if (isNonNullObject(val)) {\n      if (ctx.strictPopplerCompat && hasOwnProperty(val, 'Dict')) {\n        const Kind = hasOwnProperty(val, 'FilterPipeline') && val.FilterPipeline !== null ? 8 : 0\n        const newVal = Object.assign({ Kind, ObjID }, val['Dict'])\n        return traverse(newVal, trampoline) as Promise<PDFValue>\n      }\n      const newVal = Object.assign({ ObjID }, val)\n      return traverse(newVal, trampoline) as Promise<PDFValue>\n    }\n    return val as PDFValue\n  }\n  return traverse(src, trampoline) as Promise<Resources>\n}\n","// Helpers to transform output into compatible with old version\n\nimport { Resources } from './contents/interfaces'\nimport { mapObject, traverse, OCProperties as RawOCProperties, PDFRef } from './pdf-types'\n\nexport async function killSMaskNone(src: Resources): Promise<Resources> {\n  const trampoline = async (obj: Record<string, unknown>) => {\n    if (obj['SMask'] === 'None') {\n      obj['SMask'] = null\n      return obj\n    }\n    return mapObject(obj, trampoline)\n  }\n  return traverse(src, trampoline) as Promise<Resources>\n}\n\nexport async function parseSeparation(src: Resources): Promise<Resources> {\n  const trampoline = async (obj: Record<string, unknown>) => {\n    Object.keys(obj).forEach((key) => {\n      const arr = obj[key]\n      if (Array.isArray(arr) && arr[0] === 'Separation' && typeof arr[1] === 'string') {\n        arr[1] = arr[1].replaceAll('#20', ' ')\n        return obj\n      }\n    })\n    return mapObject(obj, trampoline)\n  }\n  return traverse(src, trampoline) as Promise<Resources>\n}\n\ninterface OCRef {\n  ObjID: number\n}\n\nexport type OCProperties = {\n  D: { OFF: OCRef[]; ON: OCRef[] }\n}\n\nfunction compareOCRefs(a: OCRef, b: OCRef): number {\n  return b.ObjID - a.ObjID\n}\n\nfunction toOCRef(ref: PDFRef): OCRef {\n  return { ObjID: ref.ObjectNumber }\n}\n\nexport async function mapOCProperties(src?: RawOCProperties): Promise<OCProperties> {\n  if (!src) {\n    return {\n      D: {\n        OFF: [],\n        ON: [],\n      },\n    }\n  }\n  const val = {\n    D: {\n      OFF: (src['D']['OFF'] ?? []).map((ref) => toOCRef(ref)),\n      ON: (src['D']['ON'] ?? []).map((ref) => toOCRef(ref)),\n    },\n  }\n  val['D']['OFF'].sort(compareOCRefs)\n  val['D']['ON'].sort(compareOCRefs)\n  return val\n}\n","import { isXPage, isXPages, PDFRef } from './pdf-types'\nimport { parsePrivateData } from './private-data'\nimport { deref, derefDeep, parseContentStream, parseXObjects } from './xobjects'\n\nimport { mark, stop } from 'marky'\nimport { ContentsDict, Context } from './interfaces'\nimport { killSMaskNone, mapOCProperties, OCProperties, parseSeparation } from './tweaks'\nimport { Resources } from './contents/interfaces'\n\n// https://basarat.gitbook.io/typescript/main-1/nominaltyping\nexport type ArtBoardRef = { idx: number; ref: PDFRef } & { readonly '': unique symbol }\n\n// Objects of Type === Pages contain Kids.\n// Artboards are leafs on that tree\nexport function ArtBoardRefs(ctx: Context): ArtBoardRef[] {\n  mark('ArtBoardRefs')\n  const queue = [ctx.aiFile.XRefTable.RootDict['Pages'] as PDFRef] // not-quite-optimal, should either use stack or dedicated structure\n  const leafs = []\n  let ref\n  while ((ref = queue.shift()) !== undefined) {\n    const node = deref(ctx.aiFile, ref).Object\n    if (isXPages(node)) {\n      for (const kid of node['Kids'] as PDFRef[]) {\n        queue.push(kid)\n      }\n    } else {\n      leafs.push(ref)\n    }\n  }\n  const refs = leafs.map((ref: PDFRef, idx: number) => ({ idx, ref } as ArtBoardRef))\n  stop('ArtBoardRefs')\n  return refs\n}\n\nexport function PrivateData(ctx: Context): ReturnType<typeof parsePrivateData> {\n  if (!ctx.parsedPrivateData) {\n    ctx.parsedPrivateData = parsePrivateData(() => ctx.privateData())\n  }\n  return ctx.parsedPrivateData\n}\n\ninterface ArtBoard {\n  Contents: ContentsDict\n  MediaBox: number[]\n  Resources: Resources\n  OCProperties?: OCProperties\n  Name: string\n}\n\nexport async function ArtBoard(ctx: Context, ref: ArtBoardRef): Promise<ArtBoard> {\n  const privateData = await PrivateData(ctx)\n  const Name = privateData.LayerNames[ref.idx] || `Artboard ${ref.idx + 1}`\n  mark(Name)\n  const page = deref(ctx.aiFile, ref.ref).Object\n  if (!isXPage(page)) {\n    throw new Error(`page ${ref} is not a page in XRefTable`)\n  }\n  let resources = await derefDeep(ctx, page.Resources)\n  const OCProperties = await mapOCProperties(ctx.aiFile.XRefTable.RootDict.OCProperties)\n  if (ctx.strictPopplerCompat) {\n    resources = await parseSeparation(await killSMaskNone(resources))\n  }\n  const parsed = {\n    Contents: await parseContentStream(ctx, page.Contents, resources),\n    MediaBox: page.MediaBox,\n    Resources: await parseXObjects(ctx, resources),\n    OCProperties,\n    Name,\n  }\n  stop(Name)\n  return parsed\n}\n"],"names":["Parser","decode","decodeASCII85","SyntaxParser","R"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;AACnC,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;AACzC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;AACpF,QAAQ,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1G,IAAI,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC;AACF;AACO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;AAChC,IAAI,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI;AAC7C,QAAQ,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;AAClG,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,IAAI,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACzF,CAAC;AACD;AACO,IAAI,QAAQ,GAAG,WAAW;AACjC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,MAAK;AACL,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,EAAC;AA4BD;AACO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AAC7D,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACO,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;AAC3C,IAAI,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,CAAC;AACrH,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7J,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACtE,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE;AACtB,QAAQ,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;AACtE,QAAQ,OAAO,CAAC,EAAE,IAAI;AACtB,YAAY,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;AACzK,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACpD,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC;AACzB,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;AAC9C,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACxE,gBAAgB,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;AACjE,gBAAgB,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;AACjE,gBAAgB;AAChB,oBAAoB,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;AAChI,oBAAoB,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;AAC1G,oBAAoB,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;AACzF,oBAAoB,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;AACvF,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAC1C,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;AAC3C,aAAa;AACb,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACvC,SAAS,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;AAClE,QAAQ,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;AACzF,KAAK;AACL,CAAC;AAiBD;AACO,SAAS,QAAQ,CAAC,CAAC,EAAE;AAC5B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAClF,IAAI,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,OAAO;AAClD,QAAQ,IAAI,EAAE,YAAY;AAC1B,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;AAC/C,YAAY,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACpD,SAAS;AACT,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;AAC3F,CAAC;AACD;AACO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AAC7B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACrC,IAAI,IAAI;AACR,QAAQ,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnF,KAAK;AACL,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;AAC3C,YAAY;AACZ,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7D,SAAS;AACT,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACzC,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd,CAAC;AAiBD;AACO,SAAS,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9C,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACzF,QAAQ,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;AAChC,YAAY,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,CAAC;AACD;AACO,SAAS,OAAO,CAAC,CAAC,EAAE;AAC3B,IAAI,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AACD;AACO,SAAS,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;AACjE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;AAC3F,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;AAClE,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1H,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9I,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;AACtF,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC5H,IAAI,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;AACtD,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;AACtD,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACtF,CAAC;AAOD;AACO,SAAS,aAAa,CAAC,CAAC,EAAE;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;AAC3F,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACvC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACrN,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACpK,IAAI,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;AAChI;;AC9MgB,SAAA,cAAc,CAAmB,GAAY,EAAE,IAAO,EAAA;AACpE,IAAA,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AACxD,CAAC;AAED;AACA;AACM,SAAU,WAAW,CAAC,EAAS,EAAA;AACnC,IAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;AACtD,CAAC;AAEK,SAAU,eAAe,CAAC,GAAY,EAAA;IAC1C,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAA;AAChD;;ACVM,SAAU,QAAQ,CAAC,KAAc,EAAA;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,KAAK,CAAA;IAC3C,IAAI,KAAK,KAAK,IAAI;AAAE,QAAA,OAAO,KAAK,CAAA;AAChC,IAAA,OAAO,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;AAC3F,CAAC;AAmBK,SAAU,QAAQ,CAAC,KAAc,EAAA;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,KAAK,CAAA;IAC3C,IAAI,KAAK,KAAK,IAAI;AAAE,QAAA,OAAO,KAAK,CAAA;AAChC,IAAA,OAAO,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAA;AACnE,CAAC;AAGK,SAAU,OAAO,CAAC,KAAc,EAAA;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,KAAK,CAAA;IAC3C,IAAI,KAAK,KAAK,IAAI;AAAE,QAAA,OAAO,KAAK,CAAA;AAChC,IAAA,OAAO,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,CAAA;AAClE,CAAC;AA8BD;AACA;AACsB,SAAA,QAAQ,CAC5B,GAAY,EACZ,QAA4D,EAAA;;;AAE5D,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,OAAO,CAAA,CAAA,aAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAC,IAAI,EAAA,EAAK,OAAA,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAxB,EAAwB,CAAC,CAAC,CAAA,CAAA;AAChE,aAAA;AACD,YAAA,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;AACxB,gBAAA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC,GAAG,CAAC,CAAA,CAAA;AACrB,aAAA;AACD,YAAA,OAAA,CAAA,CAAA,aAAO,GAAG,CAAA,CAAA;;;AACX,CAAA;AAEqB,SAAA,SAAS,CAC7B,OAAgC,EAChC,QAA4D,EAAA;;;;;;;AAErD,oBAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,EAAC,WAAW,CAAA;AACvB,oBAAA,OAAA,CAAA,CAAA,YAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAO,EAAY,EAAA;AAAZ,4BAAA,IAAA,EAAA,GAAA,aAAY,EAAX,GAAG,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;;;;8CAAO,GAAG,CAAA,CAAA;AAAE,wCAAA,OAAA,CAAA,CAAA,YAAM,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA,CAAA;AAArC,oCAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAA,EAAA,CAAA,MAAA,CAAA,CAAM,SAA+B,CAAC,CAAA,CAAA,CAAA;;;AAAA,yBAAA,CAAC,CAAC,CAAA,CAAA;wBADhH,OAAO,CAAA,CAAA,aAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,CACL,EAA8G,CAAA,IAAA,EAAA,CAAA,CAC/G,CAAA,CAAA;;;;AACF;;ACxFD,IAAY,cAMX,CAAA;AAND,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,cAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC,CAAA;AAChC,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EANW,cAAc,KAAd,cAAc,GAMzB,EAAA,CAAA,CAAA,CAAA;AAyBD,IAAY,WAOX,CAAA;AAPD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,WAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC,CAAA;AAChC,IAAA,WAAA,CAAA,mBAAA,CAAA,GAAA,oBAAwC,CAAA;AACxC,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,YAAmB,CAAA;AACrB,CAAC,EAPW,WAAW,KAAX,WAAW,GAOtB,EAAA,CAAA,CAAA;;ACxBD,SAAU,kBAAkB,CAAoC,IAAS,EAAE,MAAS,EAAA;;;;;gBAC9E,QAAQ,GAAG,CAAC,CAAA;;;AAET,gBAAA,IAAA,EAAA,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA,EAAA,OAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAC5C,gBAAA,IAAA,EAAA,QAAQ,GAAG,GAAG,CAAA,EAAd,OAAc,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAChB,gBAAA,OAAA,CAAA,CAAA,YAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAA,CAAA;;AAAvD,gBAAA,EAAA,CAAA,IAAA,EAAuD,CAAA;;;AAEzD,gBAAA,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAA;AAClB,gBAAA,OAAA,CAAA,CAAA,YAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAA,CAAA;;AAAxD,gBAAA,EAAA,CAAA,IAAA,EAAwD,CAAA;gBACxD,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;;;AAElC,gBAAA,IAAA,EAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA,EAAtB,OAAsB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACxB,gBAAA,OAAA,CAAA,CAAA,YAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA,CAAA;;AAA/D,gBAAA,EAAA,CAAA,IAAA,EAA+D,CAAA;;;;;AAElE,CAAA;AAGgB,SAAA,eAAe,CAC9B,IAAS,EACT,MAAS,EAAA;;;;;;gBAEL,OAAO,GAAG,KAAK,CAAA;;;;AACD,gBAAA,EAAA,GAAA,SAAA,kBAAkB,CAAY,IAAI,EAAE,MAAM,CAAC,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,CAAA;;;;gBAAlD,GAAG,GAAA,EAAA,CAAA,KAAA,CAAA;AACR,gBAAA,IAAA,CAAA,OAAO,EAAP,OAAO,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;gBACT,OAAM,CAAA,CAAA,YAAA,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA,CAAA;;AAAjC,gBAAA,EAAA,CAAA,IAAA,EAAiC,CAAA;gBACjC,OAAO,GAAG,KAAK,CAAA;gBACf,OAAQ,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;gBAEF,EAAA,GAAA,GAAG,CAAC,IAAI,CAAA;;yBACT,QAAQ,EAAR,OAAQ,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;yBAGR,MAAM,EAAN,OAAM,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;;gBAFT,OAAO,GAAG,IAAI,CAAA;gBACd,OAAK,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;oBAEL,OAAM,CAAA,CAAA,YAAA,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAA,OAAA,EAAE,CAAA,CAAA;;AAAjC,gBAAA,EAAA,CAAA,IAAA,EAAiC,CAAA;gBACjC,OAAK,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;gBAEL,WAAW,CAAI,CAAC,CAAA;;;;;;;;;;;;;;;;;;;AAGvB;;ACjDD,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AACpC,IAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AACpC,IAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAErC,IAAA,YAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,YAAA,GAAA;AACU,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAA;KAqE9C;IAnEQ,YAAO,CAAA,SAAA,CAAA,OAAA,GAAd,UAAe,KAAW,EAAA;AACxB,QAAA,IAAM,MAAM,GAAM,KAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAU,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAmB,CAAC,KAAK,CAAA;QAC/F,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACjC,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;YACjC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAC/B,SAAA;AACD,QAAA,OAAO,OAAO,CAAA;KACf,CAAA;IAEM,YAAK,CAAA,SAAA,CAAA,KAAA,GAAZ,UAAa,KAAW,EAAA;QACtB,IAAI,KAAK,GAAsB,SAAS,CAAA;AACxC,QAAA,IAAI,IAA8B,CAAA;QAClC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAS,CAAA;AACnC,QAAA,IAAI,GAAG,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAU,CAAA;QACpC,IAAI,GAAG,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,KAAK,CAAC,CAAC,CAAS,CAAA;AAC7B,QAAA,IAAI,GAAG,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAU,CAAA;QACpC,IAAI,GAAG,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,KAAK,CAAC,CAAC,CAAS,CAAA;AAC7B,QAAA,IAAM,QAAQ,GAAG,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAU,CAAA;AAC9C,QAAA,IACE,QAAQ;AACR,YAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAC3B,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM;YAC7C,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,EAC7C;AACA,YAAA,KAAK,GAAG;gBACN,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;gBAC9B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;aAChC,CAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAA;KACb,CAAA;IAEM,YAAM,CAAA,SAAA,CAAA,MAAA,GAAb,UAAc,MAAkB,EAAA;QAC9B,IAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAC9B,QAAA,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,gCAAgC,CAAC,CAAA;QACpF,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;KACnD,CAAA;IAEO,YAAqB,CAAA,SAAA,CAAA,qBAAA,GAA7B,UAA8B,MAAkB,EAAA;;QAC9C,IAAI,GAAG,GAAG,EAAE,CAAA;;YACZ,KAAkB,IAAA,EAAA,GAAA,QAAA,CAAA,eAAe,CAAiC,MAAM,EAAE,SAAS,CAAC,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAE,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA;AAAjF,gBAAA,IAAM,GAAG,GAAA,EAAA,CAAA,KAAA,CAAA;AACZ,gBAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;AAChB,oBAAA,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;AACvD,iBAAA;AAAM,qBAAA;AACL,oBAAA,GAAG,IAAI,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAA;AAC5C,iBAAA;AACF,aAAA;;;;;;;;;;AAED,QAAA,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;AAC9D,QAAA,OAAO,GAAG,CAAA;KACX,CAAA;IAEO,YAA0B,CAAA,SAAA,CAAA,0BAAA,GAAlC,UAAmC,GAA+B,EAAA;AAChE,QAAA,IAAI,UAAkB,CAAA;AACtB,QAAA,IAAI,QAAgB,CAAA;AACpB,QAAA,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;AAC7D,YAAA,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACxB,QAAQ,GAAG,CAAC,CAAA;AACb,SAAA;AAAM,aAAA;YACL,MAAM,IAAI,KAAK,CAAC,0CAAA,CAAA,MAAA,CAA2C,GAAG,CAAC,IAAI,EAA6B,6BAAA,CAAA,CAAC,CAAA;AAClG,SAAA;AAED,QAAA,QACE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAChE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EACjF;KACF,CAAA;IACH,OAAC,YAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;AC1EK,SAAU,wBAAwB,CAAC,gBAAsC,EAAA;;AAC7E,IAAA,IAAM,UAAU,GAAG,CAAA,EAAA,GAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAsB,CAAA;AAC3F,IAAA,IAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAA;AAClC,IAAA,QACE,CAAA,EAAA,GAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,KAAK,CAAC,GAAG,CAAC,UAAC,KAAK,EAAE,KAAK,EAAA;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAa,CAAC,CAAA;QAC9C,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAa,CAAC,CAAA;QAC1C,OAAO,EAAE,OAAO,EAAA,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,EAAA,KAAA,EAAE,CAAA;AAClC,KAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EACT;AACH;;ACXgB,SAAA,KAAK,CAAsB,GAAiB,EAAE,KAAQ,EAAA;IACpE,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,KAAK,EAAA;AACxE,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAkB,CAAA;AACvE,KAAC,CAAC,CAAA;AACJ;;ACRiB,SAAA,OAAO,CAAI,CAAI,EAAE,EAAgB,EAAA;;;;;AAChD,YAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,CAAC,CAAA,CAAA;;AAAP,gBAAA,EAAA,CAAA,IAAA,EAAO,CAAA;;;;gBACS,IAAA,GAAA,QAAA,CAAA,EAAE,CAAA,EAAA,MAAA,GAAA,IAAA,CAAA,IAAA,EAAA,CAAA;;;;AAAb,gBAAA,GAAA,GAAA,MAAA,CAAA,KAAA,CAAA;AACH,gBAAA,OAAA,CAAA,CAAA,YAAM,GAAC,CAAA,CAAA;;AAAP,gBAAA,EAAA,CAAA,IAAA,EAAO,CAAA;;;;;;;;;;;;;;;;;;;AAEV,CAAA;AAED;AACM,SAAgB,GAAG,CAAI,MAAsC,EAAA;;;;;;;;oBAC3D,GAAG,GAAG,EAAE,CAAA;;;;oBAEY,QAAA,GAAA,aAAA,CAAA,MAAM,CAAA,CAAA;;;;;AAAf,oBAAA,KAAK,mBAAA,CAAA;AACpB,oBAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;AAGjB,gBAAA,KAAA,EAAA,EAAA,OAAA,CAAA,CAAA,aAAO,GAAG,CAAA,CAAA;;;;AACX,CAAA;AAMD,IAAA,MAAA,kBAAA,YAAA;AAGE,IAAA,SAAA,MAAA,CAA4B,MAAS,EAAA;QAAT,IAAM,CAAA,MAAA,GAAN,MAAM,CAAG;QAF7B,IAAS,CAAA,SAAA,GAAG,CAAC,CAAA;KAEoB;AAEzC,IAAA,MAAA,CAAA,cAAA,CAAW,MAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAApB,QAAA,GAAA,EAAA,YAAA;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SAClC;;;AAAA,KAAA,CAAA,CAAA;AAEM,IAAA,MAAA,CAAA,SAAA,CAAA,OAAO,GAAd,YAAA;AACE,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,CAAA;KACpB,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAW,MAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;YACE,OAAO,IAAI,CAAC,SAAS,CAAA;SACtB;;;AAAA,KAAA,CAAA,CAAA;IACH,OAAC,MAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;ACjCK,SAAU,OAAO,CAAC,MAAgB,EAAA;AACtC,IAAA,OAAO,IAAI,GAAG,CACZ,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAC,EAAY,EAAA;AAAZ,QAAA,IAAA,EAAA,GAAA,aAAY,EAAX,GAAG,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AAC/B,QAAA,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,8CAAA,CAAA,MAAA,CAA+C,GAAG,CAAC,IAAI,EAAG,GAAA,CAAA,CAAC,CAAA;AAC5E,SAAA;AACD,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KAC1B,CAAC,CACH,CAAA;AACH,CAAC;AAKD,IAAA,YAAA,kBAAA,YAAA;AAKE,IAAA,SAAA,YAAA,CACU,MAAmB,EACX,OAAoB,EAC5B,OAAe,EACf,MAAc,EAAA;AADd,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAe,GAAA,KAAA,CAAA,EAAA;AACf,QAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAc,GAAA,KAAA,CAAA,EAAA;QAHd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAa;QACX,IAAO,CAAA,OAAA,GAAP,OAAO,CAAa;QAC5B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QACf,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QARhB,IAAM,CAAA,MAAA,GAAG,KAAK,CAAA;QACd,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAA;QAC3B,IAAM,CAAA,MAAA,GAAG,KAAK,CAAA;KAOlB;IAEI,YAAK,CAAA,SAAA,CAAA,KAAA,GAAb,UAAc,EAA4E,EAAA;YAA1E,EAAe,GAAA,EAAA,CAAA,OAAA,EAAf,OAAO,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,KAAK,GAAA,EAAA,EAAE,EAAA,GAAA,EAAA,CAAA,MAAc,EAAd,MAAM,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,KAAK,GAAA,EAAA,CAAA;AAC7C,QAAA,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;KACpE,CAAA;AAEO,IAAA,YAAA,CAAA,SAAA,CAAA,UAAU,GAAlB,YAAA;QACE,IAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;QAClE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAA,KAAA,EAAE,CAAA;KAC1C,CAAA;AAEO,IAAA,YAAA,CAAA,SAAA,CAAA,SAAS,GAAjB,YAAA;QACE,IAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;AAClE,QAAA,IAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;QAC7B,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,YAAA,KAAK,EAAA,KAAA;SACN,CAAA;KACF,CAAA;IAEO,YAAc,CAAA,SAAA,CAAA,cAAA,GAAtB,UAAuB,KAAa,EAAA;AAClC,QAAA,QAAQ,KAAK;AACX,YAAA,KAAK,GAAG;AACN,gBAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;AAC1B,YAAA,KAAK,GAAG;gBACN,IAAI,CAAC,IAAI,CAAC,OAAO;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;AACrF,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;gBAClB,OAAM;AACR,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAA;AACzB,YAAA,KAAK,IAAI;gBACP,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;AACnF,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;gBAClB,OAAM;AACR,YAAA,KAAK,GAAG;gBACN,IAAI,IAAI,CAAC,mBAAmB;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;AAC9F,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;gBAC/B,OAAM;AACR,YAAA,KAAK,GAAG;gBACN,IAAI,CAAC,IAAI,CAAC,mBAAmB;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;AAC9G,gBAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAA;gBAChC,OAAM;AACR,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;gBAClB,OAAM;AACR,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,gDAAyC,KAAK,EAAA,GAAA,CAAG,CAAC,CAAA;AACrE,SAAA;KACF,CAAA;IAEQ,YAAK,CAAA,SAAA,CAAA,KAAA,GAAd,UAAe,EAAS,EAAA;;;;;oBAEd,EAAA,GAAA,EAAE,CAAC,IAAI,CAAA;;AACR,wBAAA,KAAA,cAAc,CAAC,SAAS,EAAxB,OAAwB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAIxB,wBAAA,KAAA,cAAc,CAAC,KAAK,EAApB,OAAoB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAapB,wBAAA,KAAA,cAAc,CAAC,aAAa,EAA5B,OAA4B,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;AAG5B,wBAAA,KAAA,cAAc,CAAC,OAAO,EAAtB,OAAsB,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;;;;oBAnBzB,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;AACjC,oBAAA,IAAA,CAAA,KAAK,EAAL,OAAK,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAAE,oBAAA,OAAA,CAAA,CAAA,YAAM,KAAK,CAAA,CAAA;;AAAX,oBAAA,EAAA,CAAA,IAAA,EAAW,CAAA;;wBACtB,OAAM,CAAA,CAAA,YAAA,CAAA;;yBAEF,IAAI,CAAC,mBAAmB,EAAxB,OAAwB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;oBAC1B,OAAM,CAAA,CAAA,YAAA,EAAE,IAAI,EAAE,WAAW,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAA,CAAA;;AAAnF,oBAAA,EAAA,CAAA,IAAA,EAAmF,CAAA;oBACnF,OAAM,CAAA,CAAA,YAAA,CAAA;;yBAEJ,IAAI,CAAC,MAAM,EAAX,OAAW,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACb,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;oBACnB,OAAM,CAAA,CAAA,YAAA,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAA,CAAA;;AAAtE,oBAAA,EAAA,CAAA,IAAA,EAAsE,CAAA;oBACtE,OAAM,CAAA,CAAA,YAAA,CAAA;;;gBAGR,OAAM,CAAA,CAAA,YAAA,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAA,CAAA;;;AAApF,oBAAA,EAAA,CAAA,IAAA,EAAoF,CAAA;oBACpF,OAAM,CAAA,CAAA,YAAA,CAAA;AAEN,gBAAA,KAAA,EAAA,EAAA,OAAA,CAAA,CAAA,YAAM,EAAE,IAAI,EAAE,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAA,CAAA;;AAA1D,oBAAA,EAAA,CAAA,IAAA,EAA0D,CAAA;oBAC1D,OAAM,CAAA,CAAA,YAAA,CAAA;yBAEN,OAAM,CAAA,CAAA,YAAA,CAAA;;oBAEN,WAAW,CAAG,CAAC,CAAA;;;;;AAEpB,KAAA,CAAA;AAEO,IAAA,YAAA,CAAA,SAAA,CAAA,QAAQ,GAAhB,YAAA;;;;;AAES,oBAAA,IAAA,EAAA,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,MAAM,CAAA,EAAA,OAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACjD,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;oBACrB,OAAA,CAAA,CAAA,aAAA,QAAA,CAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAA,CAAA;;AAArB,oBAAA,EAAA,CAAA,IAAA,EAAqB,CAAA;;;;;AAExB,KAAA,CAAA;IACH,OAAC,YAAA,CAAA;AAAD,CAAC,EAAA,CAAA,CAAA;AAED,IAAA,cAAA,kBAAA,YAAA;IAGE,SAAY,cAAA,CAAA,MAAwC,EAAU,OAAoB,EAAA;QAApB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAa;QAChF,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;KACjC;AAEM,IAAA,cAAA,CAAA,SAAA,CAAA,GAAG,GAAV,YAAA;AACE,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;KAC1E,CAAA;IACH,OAAC,cAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;AC7HD;AACA,IAAM,aAAa,GAAG,IAAI,GAAG,CAAqB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;AAC3D,IAAM,oBAAoB,GAAG,IAAI,GAAG,CAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;AAExE,IAAM,UAAU,GAAG;AACjB,IAAA,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACtB,IAAA,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACtB,IAAA,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACtB,IAAA,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACtB,IAAA,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;CACvB,CAAA;AAED,IAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAE1C,IAAM,mBAAmB,GAAG,IAAI,GAAG,CAAqB;;IAEtD,EAAE;;IAEF,EAAE;;IAEF,EAAE;;IAEF,EAAE;;IAEF,EAAE;;IAEF,EAAE;;IAEF,GAAG;;IAEH,GAAG;;IAEH,EAAE;;IAEF,EAAE;AACH,CAAA,CAAC,CAAA;AAIF,IAAA,KAAA,kBAAA,YAAA;AAIE,IAAA,SAAA,KAAA,CAAY,IAAgB,EAAA;QAHpB,IAAI,CAAA,IAAA,GAAG,CAAC,CAAA;QAId,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAqB,IAAI,CAAC,CAAA;KACnD;AAEA,IAAA,KAAA,CAAA,SAAA,CAAA,QAAQ,GAAT,YAAA;;;;;0BAES,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,MAAM,SAAS,CAAA,EAAA,OAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAC5C,oBAAA,IAAA,CAAA,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,EAA7B,OAA6B,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAC/B,oBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA,CAAA;;AAA7B,oBAAA,EAAA,CAAA,IAAA,EAA6B,CAAA;oBAC7B,OAAQ,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;AAEN,oBAAA,IAAA,CAAA,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAtB,OAAsB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACxB,oBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,SAAS,EAAE,CAAA,CAAA;;AAAtB,oBAAA,EAAA,CAAA,IAAA,EAAsB,CAAA;oBACtB,OAAQ,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;AAEN,oBAAA,IAAA,CAAA,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAA5B,OAA4B,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAC9B,oBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA,CAAA;;AAA/B,oBAAA,EAAA,CAAA,IAAA,EAA+B,CAAA;oBAC/B,OAAQ,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAEV,gBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,WAAW,EAAE,CAAA,CAAA;;AAAxB,oBAAA,EAAA,CAAA,IAAA,EAAwB,CAAA;;;;;AAE3B,KAAA,CAAA;IAEO,KAAe,CAAA,SAAA,CAAA,eAAA,GAAvB,UAAwB,GAAW,EAAA;AACjC,QAAA,QAAQ,GAAG;YACT,KAAK,UAAU,CAAC,GAAG,CAAC;AAClB,gBAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAA;YAC7B,KAAK,UAAU,CAAC,GAAG,CAAC;AAClB,gBAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAA;AACnC,YAAA,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC;YACrB,KAAK,UAAU,CAAC,GAAG,CAAC;AAClB,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;AACrB,gBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACjC,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;AACrB,oBAAA,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;AAChF,iBAAA;AACD,gBAAA,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAA;AAC5E,YAAA;AACE,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;AACrB,gBAAA,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAA;AAC7E,SAAA;KACF,CAAA;AAEO,IAAA,KAAA,CAAA,SAAA,CAAA,SAAS,GAAjB,YAAA;AACE,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;;QAErB,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,EAAE;AAAE,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;AACrE,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA;QACd,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;KACxD,CAAA;AAEO,IAAA,KAAA,CAAA,SAAA,CAAA,gBAAgB,GAAxB,YAAA;QACE,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAAE,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QAC7E,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;KACzD,CAAA;AAEO,IAAA,KAAA,CAAA,SAAA,CAAA,mBAAmB,GAA3B,YAAA;AACE,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;AACrC,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;AACtB,QAAA,IAAI,IAAI,GAAG,CAAC,CAAA;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;AACrB,QAAA,IAAI,GAAuB,CAAA;AAC3B,QAAA,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,MAAM,SAAS,IAAI,IAAI,GAAG,CAAC,EAAE;YAC9D,IAAI,GAAG,KAAK,eAAe;AAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;AAClD,YAAA,IAAI,GAAG,KAAK,UAAU,CAAC,GAAG,CAAC;gBAAE,IAAI,IAAI,CAAC,CAAA;AACtC,YAAA,IAAI,GAAG,KAAK,UAAU,CAAC,GAAG,CAAC;gBAAE,IAAI,IAAI,CAAC,CAAA;AACtC,YAAA,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,gBAAA,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA;AAC1C,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;AACtB,SAAA;AACD,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;QACnC,OAAO;YACL,IAAI,EAAE,cAAc,CAAC,aAAa;AAClC,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;AACzD,YAAA,QAAQ,EAAA,QAAA;AACR,YAAA,MAAM,EAAA,MAAA;AACN,YAAA,IAAI,EAAA,IAAA;SACL,CAAA;KACF,CAAA;AAEO,IAAA,KAAA,CAAA,SAAA,CAAA,aAAa,GAArB,YAAA;AACE,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;AACrC,QAAA,IAAI,GAAuB,CAAA;AAC3B,QAAA,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,MAAM,SAAS,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;AACpG,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;QACnC,OAAO;YACL,IAAI,EAAE,cAAc,CAAC,OAAO;AAC5B,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;AACjD,YAAA,QAAQ,EAAA,QAAA;AACR,YAAA,MAAM,EAAA,MAAA;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAA;KACF,CAAA;AAEO,IAAA,KAAA,CAAA,SAAA,CAAA,WAAW,GAAnB,YAAA;AACE,QAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;AACrC,QAAA,IAAI,GAAuB,CAAA;QAC3B,OACE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,MAAM,SAAS;AAC3C,YAAA,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7B,YAAA,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB,YAAA,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,EAC9B;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;AACtB,SAAA;AACD,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;QACnC,OAAO;YACL,IAAI,EAAE,cAAc,CAAC,KAAK;AAC1B,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;AACjD,YAAA,QAAQ,EAAA,QAAA;AACR,YAAA,MAAM,EAAA,MAAA;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAA;KACF,CAAA;IACH,OAAC,KAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;ACzJD,SAAS,aAAa,CAAmB,IAAS,EAAA;AAChD,IAAA,IAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;AACxB,IAAA,IAAI,CAAC,OAAO,CAAC,UAAC,IAAI,EAAA;AAChB,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;AACvB,QAAA,IAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,CAAA;AACzC,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACd,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AACvB,KAAC,CAAC,CAAA;AACF,IAAA,OAAO,MAAM,CAAA;AACf,CAAC;AAED,IAAA,cAAA,kBAAA,YAAA;IAKE,SAAY,cAAA,CAAA,IAAgB,EAAU,KAA8C,EAAA;QAA9C,IAAK,CAAA,KAAA,GAAL,KAAK,CAAyC;AAHnE,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QAI1C,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;AACxC,QAAA,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAQ,CAAC,CAAA;KACvD;IAEO,cAAW,CAAA,SAAA,CAAA,WAAA,GAAnB,UAAoB,KAAY,EAAA;QAC9B,IAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAA;QACzC,IAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC9C,QAAA,IAAI,iBAAiB,EAAE;AACrB,YAAA,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAM,CAAA;AACnD,YAAA,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAChC,gBAAA,OAAO,KAAK,CAAA;AACb,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAA;KACb,CAAA;AAEQ,IAAA,cAAA,CAAA,SAAA,CAAA,IAAI,GAAb,YAAA;;;;;;;AACsB,oBAAA,EAAA,GAAA,QAAA,CAAA,IAAI,CAAC,MAAM,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,CAAA;;;;oBAApB,KAAK,GAAA,EAAA,CAAA,KAAA,CAAA;oBACN,EAAA,GAAA,KAAK,CAAC,IAAI,CAAA;;AACX,wBAAA,KAAA,cAAc,CAAC,UAAU,EAAzB,OAAyB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAEzB,wBAAA,KAAA,cAAc,CAAC,KAAK,EAApB,OAAoB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAGpB,wBAAA,KAAA,cAAc,CAAC,OAAO,EAAtB,OAAsB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACtB,wBAAA,KAAA,cAAc,CAAC,aAAa,EAA5B,OAA4B,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAC5B,wBAAA,KAAA,cAAc,CAAC,SAAS,EAAxB,OAAwB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;AAN3B,gBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAQ;AAER,gBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA,CAAA;;AAA7B,oBAAA,EAAA,CAAA,IAAA,EAA6B,CAAA;oBAC7B,OAAQ,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;wBAIR,OAAM,CAAA,CAAA,YAAA,KAAK,CAAA,CAAA;;oBAAX,EAAW,CAAA,IAAA,EAAA,CAAA;oBACX,OAAQ,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;oBAGR,WAAW,CAAM,CAAC,CAAA;;;;;;;;;;;;;;;;;;;AAGzB,KAAA,CAAA;AAEO,IAAA,cAAA,CAAA,SAAA,CAAA,KAAK,GAAb,YAAA;;;;;;oBACM,IAAI,GAAG,EAAE,CAAA;;;;AACO,oBAAA,EAAA,GAAA,QAAA,CAAA,IAAI,CAAC,IAAI,EAAE,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,CAAA;;;;oBAApB,KAAK,GAAA,EAAA,CAAA,KAAA,CAAA;AACV,oBAAA,IAAA,EAAA,OAAO,KAAK,KAAK,QAAQ,CAAA,EAAzB,OAAyB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;oBAC3B,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,KAAK,CAAC,KAAU,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA,CAAA;;AAApF,oBAAA,EAAA,CAAA,IAAA,EAAoF,CAAA;oBACpF,IAAI,GAAG,EAAE,CAAA;oBACT,OAAQ,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;AAEV,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;;;;;;;;;;;;;;;;;;AAEnB,KAAA,CAAA;IACH,OAAC,cAAA,CAAA;AAAD,CAAC,EAAA,CAAA,CAAA;AAED,IAAAA,QAAA,kBAAA,YAAA;AAIE,IAAA,SAAA,MAAA,CAAY,IAAgB,EAAA;AAHX,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QAI1C,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;KACzC;AAEM,IAAA,MAAA,CAAA,SAAA,CAAA,SAAS,GAAhB,YAAA;AACE,QAAA,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACzC,UAAC,EAAQ,EAAA;AAAN,YAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;AACL,YAAA,OAAA,IAAI,KAAK,cAAc,CAAC,SAAS,IAAI,IAAI,KAAK,cAAc,CAAC,KAAK,IAAI,IAAI,KAAK,cAAc,CAAC,aAAa,CAAA;AAA3G,SAA2G,CACrF,CAAA;AAC1B,QAAA,IAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAA;AAC3D,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA;KACvB,CAAA;IACH,OAAC,MAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;SCzFe,UAAU,CAAC,MAAkB,EAAE,GAAW,EAAE,MAAU,EAAA;AAAV,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAU,GAAA,CAAA,CAAA,EAAA;IACpE,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;;AAEvC,QAAA,OAAO,KAAK,CAAA;AACb,KAAA;AAED,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACnC,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;AAC5C,YAAA,OAAO,KAAK,CAAA;AACb,SAAA;AACF,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;AACb,CAAC;AAEK,SAAU,MAAM,CAAC,OAAqB,EAAA;IAC1C,IAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,EAAA,EAAK,OAAA,GAAG,GAAG,GAAG,CAAC,MAAM,GAAA,EAAE,CAAC,CAAC,CAAA;AAErE,IAAA,IAAM,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;IAC1C,IAAI,MAAM,GAAG,CAAC,CAAA;AAEd,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACvC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAC9B,QAAA,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;AAC5B,KAAA;AAED,IAAA,OAAO,MAAM,CAAA;AACf;;AC3BA,IAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;AAExC,IAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAChC,IAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAC3B,IAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAA;AACrB,IAAM,MAAM,GAAG,EAAE,CAAA;AAEjB;AACA,IAAM,YAAY,GAAG;AACnB,IAAA,IAAI,uBAAuB,IAAI,4BAA4B,IAAI,qBAAqB,IAAI;AACxF,IAAA,IAAI,wBAAwB,IAAI;CACjC,CAAA;AAED,IAAM,eAAe,GAAG,IAAI,CAAA;AAE5B,IAAA,kBAAA,kBAAA,UAAA,MAAA,EAAA;IAAiC,SAAK,CAAA,kBAAA,EAAA,MAAA,CAAA,CAAA;AACpC,IAAA,SAAA,kBAAA,CAAY,MAAc,EAAA;AAA1B,QAAA,IAAA,KAAA,GACE,MAAM,CAAA,IAAA,CAAA,IAAA,EAAA,kDAAA,CAAA,MAAA,CAAmD,MAAM,CAAE,CAAC,IAEnE,IAAA,CAAA;QADC,KAAI,CAAC,IAAI,GAAG,KAAI,CAAC,WAAW,CAAC,IAAI,CAAA;;KAClC;IACH,OAAC,kBAAA,CAAA;AAAD,CALA,CAAiC,KAAK,CAKrC,CAAA,CAAA;AAED;;;;;;;;;AASG;AACG,SAAUC,QAAM,CAAC,MAAkB,EAAA;IACvC,IAAM,YAAY,GAAG,UAAC,CAAS,EAAA;QAC7B,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,KAAC,CAAA;IAED,IAAM,aAAa,GAAG,UAAC,KAAa,EAAA;QAClC,IAAI,KAAK,GAAG,UAAU,EAAE;AACtB,YAAA,OAAO,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;gBACjD,OAAO,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA;AAC3B,gBAAA,EAAE,KAAK,CAAA;AACR,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAA;AACd,KAAC,CAAA;IAED,IAAM,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAA;IAEzD,IAAI,OAAO,GAAG,UAAU,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAA;AAE7D,IAAA,IAAM,YAAY,GAAG,IAAI,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAA;AACnE,IAAA,IAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAA;IAE7C,IAAI,UAAU,GAAG,CAAC,CAAA;AAClB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,UAAU,IAAI,CAAC,EAAE;QAC/C,IAAI,GAAG,GAAG,CAAC,CAAA;AAEX,QAAA,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;QACpB,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;AAEtC,QAAA,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACxB,GAAG,IAAI,CAAC,CAAC,IAAI,UAAU,GAAG,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAA;AAEhE,QAAA,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACxB,GAAG,IAAI,CAAC,CAAC,IAAI,UAAU,GAAG,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA;AAE/D,QAAA,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACxB,GAAG,IAAI,CAAC,CAAC,IAAI,UAAU,GAAG,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAA;AAEhE,QAAA,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AACxB,QAAA,GAAG,IAAI,CAAC,IAAI,UAAU,GAAG,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAErD,QAAA,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AAExB,QAAA,IAAI,GAAG,GAAG,YAAY,IAAI,GAAG,GAAG,CAAC,EAAE;AACjC,YAAA,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAA;AAChC,SAAA;QAED,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,UAAU,CAAA;AACtD,KAAA;IAED,OAAO,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAA;AAC9D;;AC9EA;;AAEG;AACH,IAAA,OAAA,kBAAA,YAAA;AAIE,IAAA,SAAA,OAAA,CAAY,GAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAA;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;KAClB;AAED;;AAEG;AACH,IAAA,OAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAC,KAAK,EAAE,GAAG,EAAA,EAAK,OAAA,KAAK,GAAG,GAAG,CAAC,MAAM,GAAA,EAAE,CAAC,CAAC,CAAA;KAClE,CAAA;AAED;;;;AAIG;IACH,OAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,GAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACvB,CAAA;AAED;;;;;;;;;AASG;AACH,IAAA,OAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;QACE,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACjC,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,GAAGC,QAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;KAChE,CAAA;IACH,OAAC,OAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;AC1CD,IAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AACnC,IAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AACvC,IAAM,YAAY,GAAG,yBAAyB,CAAA;AAC9C,IAAM,UAAU,GAAG,uBAAuB,CAAA;AAE1C;AACA;AACA;AACA,IAAM,EAAE,GAAG,MAAM,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAA;AACjE,SAAS,gBAAgB,CAAC,IAAY,EAAA;IACpC,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,IAAA,IAAI,KAAK;AAAE,QAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;AAC1B,IAAA,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,IAAA,eAAA,kBAAA,YAAA;IAME,SAA6B,eAAA,CAAA,OAAoB,EAAmB,IAAoB,EAAA;QAA3D,IAAO,CAAA,OAAA,GAAP,OAAO,CAAa;QAAmB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAgB;QALxF,IAAQ,CAAA,QAAA,GAAc,EAAE,CAAA;QAExB,IAAK,CAAA,KAAA,GAAa,EAAE,CAAA;QACpB,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAA;KAEiE;AAEtF,IAAA,eAAA,CAAA,SAAA,CAAA,KAAK,GAAX,YAAA;;;;;;;;AAC4B,wBAAA,EAAA,GAAA,aAAA,CAAA,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA;;;;;AAApB,wBAAA,KAAK,WAAA,CAAA;AACpB,wBAAA,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE;4BACxB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACvC,4BAAA,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;AACjC,gCAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;AAChC,6BAAA;AACD,4BAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AAC/B,gCAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAA;AACjC,6BAAA;AACK,4BAAA,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;AACxC,4BAAA,IAAI,SAAS,EAAE;AACb,gCAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC3B,6BAAA;AACF,yBAAA;wBACD,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,4BAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAA;AACnC,yBAAA;;;;;;;;;;;;;;;;;;;;;wBAGH,IAAI,IAAI,CAAC,cAAc,EAAE;4BACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;AACxC,yBAAA;wBACD,OAAO,CAAA,CAAA,aAAA,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA,CAAA;;;;AACnC,KAAA,CAAA;AAED;;AAEG;IACK,eAAsB,CAAA,SAAA,CAAA,sBAAA,GAA9B,UAA+B,IAAgB,EAAA;;AAC7C,QAAA,QAAQ,IAAI,CAAC,CAAC,CAAC;AACb,YAAA,KAAK,SAAS;;AAEZ,gBAAA,IAAI,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,2BAA2B,CAAC,EAAE;oBAC1F,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;oBACzC,IAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,SAAS,GAAG,SAAS,CAAA;oBAEjF,IAAI,IAAI,CAAC,cAAc,EAAE;wBACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;AACxC,qBAAA;oBAED,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA;AACvC,iBAAA;gBACD,MAAK;AAEP,YAAA,KAAK,aAAa;AAChB,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;gBACpD,MAAK;AACR,SAAA;KACF,CAAA;IACH,OAAC,eAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;ACvED,IAAA,MAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,MAAA,GAAA;AACU,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;KA4BpC;IA1Bc,MAAO,CAAA,SAAA,CAAA,OAAA,GAApB,UAAqB,IAAoB,EAAA;;;;;AACT,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAA,CAAA;;wBAA7E,EAAA,GAAA,MAAA,CAAA,KAAA,CAAA,KAAA,CAAA,EAAA,CAAwB,SAAqD,EAAA,CAAA,CAAA,CAAA,EAA5E,YAAY,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;wBAE1B,OAAO,CAAA,CAAA,aAAA;AACL,gCAAA,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;AAC7C,gCAAA,UAAU,EAAE,KAAK;6BAClB,CAAA,CAAA;;;;AACF,KAAA,CAAA;IAEO,MAAc,CAAA,SAAA,CAAA,cAAA,GAAtB,UAAuB,YAA0B,EAAA;QAC/C,IAAI,CAAC,gBAAgB,CAAC,CAAA;AACtB,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;AAC9E,SAAA;QAED,IAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;QAC9C,IAAI,CAAC,4BAA4B,CAAC,CAAA;QAElC,IAAM,gBAAgB,GAAG,IAAIC,QAAY,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,CAAA;QACpE,IAAI,CAAC,4BAA4B,CAAC,CAAA;AAElC,QAAA,IAAM,SAAS,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAA;QAE5D,IAAI,CAAC,gBAAgB,CAAC,CAAA;AACtB,QAAA,OAAO,SAAS,CAAA;KACjB,CAAA;IACH,OAAC,MAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;AChCK,SAAgB,gBAAgB,CAAC,IAAoB,EAAA;;;;;;oBACzD,IAAI,CAAC,aAAa,CAAC,CAAA;oBACC,OAAM,CAAA,CAAA,YAAA,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,CAAA;;AAA9C,oBAAA,WAAW,GAAG,EAAgC,CAAA,IAAA,EAAA,CAAA;oBACpD,IAAI,CAAC,aAAa,CAAC,CAAA;AACnB,oBAAA,OAAA,CAAA,CAAA,aAAO,WAAW,CAAA,CAAA;;;;AACnB;;ACPD,IAAA,oBAAA,kBAAA,YAAA;IAGE,SAAY,oBAAA,CAAA,IAAY,EAAmB,MAAgC,EAAA;QAAhC,IAAM,CAAA,MAAA,GAAN,MAAM,CAA0B;QACzE,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;KAC7C;AAEM,IAAA,oBAAA,CAAA,SAAA,CAAA,KAAK,GAAZ,YAAA;QAAA,IAQC,KAAA,GAAA,IAAA,CAAA;AAPC,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;aAC9B,GAAG,CAAC,UAAC,GAAG,EAAA;YACP,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,OAAO,GAAG,CAAC,IAAI,CAAA;YACjC,IAAM,MAAM,GAAG,IAAI,0BAA0B,CAAC,GAAG,EAAE,KAAI,CAAC,MAAM,CAAC,CAAA;YAC/D,OAAO,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAA;AACzC,SAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAA;KACZ,CAAA;IACH,OAAC,oBAAA,CAAA;AAAD,CAAC,EAAA,CAAA,CAAA;AAED;AACA,IAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,IAAI,EAAE,IAAI,CAAC;AACb,CAAA,CAAC,CAAA;AACF,IAAA,0BAAA,kBAAA,YAAA;IAEE,SAA6B,0BAAA,CAAA,GAA2B,EAAmB,MAAgC,EAAA;QAA9E,IAAG,CAAA,GAAA,GAAH,GAAG,CAAwB;QAAmB,IAAM,CAAA,MAAA,GAAN,MAAM,CAA0B;QADnG,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAA;KAC2F;AAExG,IAAA,0BAAA,CAAA,SAAA,CAAA,KAAK,GAAZ,YAAA;;QACE,IAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACzC,QAAA,IAAI,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAA;YAClB,OAAO,CAAA,EAAA,GAAA,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAA;AACxD,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;;AAEtC,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAA;AACjC,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;AAC3E,SAAA;KACF,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAW,0BAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;YACE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAChE;;;AAAA,KAAA,CAAA,CAAA;AAEO,IAAA,0BAAA,CAAA,SAAA,CAAA,kBAAkB,GAA1B,YAAA;AACE,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACrC,IAAI,KAAK,GAAG,EAAE,CAAA;;;AAGd,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACrB,KAAK,GAAG,GAAG,CAAA;AACX,YAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAA;AACnB,SAAA;AAAM,aAAA,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC5B,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACvB,YAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAA;AACnB,SAAA;AAAM,aAAA;AACL,YAAA,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;AACd,YAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAA;AACnB,SAAA;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;KACvC,CAAA;IACH,OAAC,0BAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;ACpED;AACA,IAAM,SAAS,GAAG;;AAEhB,IAAA,eAAe,EACb,iyBAAiyB;AACnyB,IAAA,YAAY,EACV,ucAAuc;CAC1c,CAAA;AAae,SAAA,kBAAkB,CAAC,GAAa,EAAE,IAAY,EAAA;;;IAE5D,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAA,GAAA,EAAE,IAAI,EAAA,IAAA,EAAE,EAAE,eAAe,CAAC,CAAA;AAE5C,QAAA,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;AACjC,KAAA;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC/D,IAAA,OAAO,MAAA,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AAChF,CAAC;AAEe,SAAAF,QAAM,CAAC,IAAU,EAAE,IAAY,EAAA;;;AAE7C,IAAA,OAAO,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAC7E,CAAC;AAEe,SAAA,eAAe,CAAC,IAAU,EAAE,IAAY,EAAA;IACtD,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,UAAC,IAAI,IAAK,OAAAA,QAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA,EAAA,CAAC,CAAC,KAAK,EAAE,CAAA;AAC7E,CAAC;AAEe,SAAA,gBAAgB,CAAC,IAAU,EAAE,IAAY,EAAA;IACvD,IAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,IAAI,IAAI,CAAC,SAAS,EAAE;QAClB,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;AACtC,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,OAAO,CAAC,UAAC,IAAI,EAAA;AACnB,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,oBAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AAAE,wBAAA,IAAI,GAAG,IAAI,GAAG,GAAG,CAAA;gBAClF,IAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;gBAC9B,IAAM,GAAG,GAAGA,QAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAC7B,gBAAA,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACrB,aAAC,CAAC,CAAA;AACH,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAA;AAC7G,SAAA;AACF,KAAA;AAAM,SAAA;QACL,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;AACpC,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,OAAO,CAAC,UAAC,IAAI,EAAA;AACnB,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,oBAAA,IAAI,GAAG,IAAI,GAAG,GAAG,CAAA;gBACxC,IAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;gBAC9B,IAAM,GAAG,GAAGA,QAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAC7B,gBAAA,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACrB,aAAC,CAAC,CAAA;AACH,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;AAC9D,SAAA;AACF,KAAA;AACD,IAAA,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC3B;;ACnEA,IAAY,UAGX,CAAA;AAHD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,6BAAiC,CAAA;AACjC,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,wBAAwB,CAAA;AAC1B,CAAC,EAHW,UAAU,KAAV,UAAU,GAGrB,EAAA,CAAA,CAAA,CAAA;AAuBK,SAAW,WAAW,CAAC,IAAc,EAAA;;;;;;;gBACxB,MAAA,GAAA,QAAA,CAAA,IAAI,CAAA,EAAA,QAAA,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;;;gBAAV,EAAE,GAAA,QAAA,CAAA,KAAA,CAAA;gBACH,EAAA,GAAA,EAAE,CAAC,IAAI,CAAA;;AACR,oBAAA,KAAA,WAAW,CAAC,IAAI,EAAhB,OAAgB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;oBACnB,OAAM,CAAA,CAAA,YAAA,EAAE,CAAC,KAAK,CAAA,CAAA;;AAAd,gBAAA,EAAA,CAAA,IAAA,EAAc,CAAA;gBACd,OAAQ,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;oBAER,MAAM,IAAI,KAAK,CAAC,iCAAA,CAAA,MAAA,CAAkC,EAAE,CAAC,IAAI,EAAkB,kBAAA,CAAA,CAAC,CAAA;;;;;;;;;;;;;;;;;;AAGnF,CAAA;AAEK,SAAU,UAAU,CAAC,IAAc,EAAA;AACjC,IAAA,IAAA,EAAA,GAAA,MAAA,CAAS,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAA,CAAA,CAAA,EAArC,IAAI,QAAiC,CAAA;AAC5C,IAAA,OAAO,IAAI,CAAA;AACb,CAAC;AAEK,SAAW,aAAa,CAAC,IAAc,EAAA;;;;;;;gBAC1B,MAAA,GAAA,QAAA,CAAA,IAAI,CAAA,EAAA,QAAA,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;;;gBAAV,EAAE,GAAA,QAAA,CAAA,KAAA,CAAA;gBACH,EAAA,GAAA,EAAE,CAAC,IAAI,CAAA;;AACR,oBAAA,KAAA,WAAW,CAAC,MAAM,EAAlB,OAAkB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;oBACrB,OAAM,CAAA,CAAA,YAAA,EAAE,CAAC,KAAK,CAAA,CAAA;;AAAd,gBAAA,EAAA,CAAA,IAAA,EAAc,CAAA;gBACd,OAAQ,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;oBAER,MAAM,IAAI,KAAK,CAAC,iCAAA,CAAA,MAAA,CAAkC,EAAE,CAAC,IAAI,EAAoB,oBAAA,CAAA,CAAC,CAAA;;;;;;;;;;;;;;;;;;AAGrF,CAAA;AAEK,SAAU,YAAY,CAAC,IAAc,EAAA;AACnC,IAAA,IAAA,EAAA,GAAA,MAAA,CAAQ,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAA,CAAA,CAAA,EAAtC,GAAG,QAAmC,CAAA;AAC7C,IAAA,OAAO,GAAG,CAAA;AACZ,CAAC;AAEK,SAAW,iBAAiB,CAAC,IAAc,EAAA;;;;;;;gBAC9B,MAAA,GAAA,QAAA,CAAA,IAAI,CAAA,EAAA,QAAA,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;;;gBAAV,EAAE,GAAA,QAAA,CAAA,KAAA,CAAA;gBACH,EAAA,GAAA,EAAE,CAAC,IAAI,CAAA;;AACR,oBAAA,KAAA,WAAW,CAAC,KAAK,EAAjB,OAAiB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAQjB,oBAAA,KAAA,WAAW,CAAC,MAAM,EAAlB,OAAkB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;;AAPrB,gBAAA,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,GAAY,EAAA;AAC5B,oBAAA,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,EAAE;wBACnC,MAAM,IAAI,KAAK,CAAC,iCAAA,CAAA,MAAA,CAAkC,GAAG,CAAC,IAAI,EAAwB,wBAAA,CAAA,CAAC,CAAA;AACpF,qBAAA;AACH,iBAAC,CAAC,CAAA;AACF,gBAAA,OAAA,CAAA,CAAA,YAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,EAAkB,EAAA;AAAhB,wBAAA,IAAA,KAAK,GAAA,EAAA,CAAA,KAAA,CAAA;AAAgB,wBAAA,OAAA,KAAK,CAAA;AAAL,qBAAK,CAAa,CAAA,CAAA;;AAA7D,gBAAA,EAAA,CAAA,IAAA,EAA6D,CAAA;gBAC7D,OAAQ,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;oBAER,OAAM,CAAA,CAAA,YAAA,EAAE,CAAC,KAAK,CAAA,CAAA;;AAAd,gBAAA,EAAA,CAAA,IAAA,EAAc,CAAA;gBACd,OAAQ,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;oBAER,MAAM,IAAI,KAAK,CAAC,iCAAA,CAAA,MAAA,CAAkC,EAAE,CAAC,IAAI,EAAkB,kBAAA,CAAA,CAAC,CAAA;;;;;;;;;;;;;;;;;;AAGnF,CAAA;AAED,SAAU,aAAa,CAAC,IAAc,EAAA;;;;;;;gBAClB,EAAA,GAAA,QAAA,CAAA,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,CAAA;;;;gBAAxB,GAAG,GAAA,EAAA,CAAA,KAAA,CAAA;AACZ,gBAAA,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,EAAE;oBACnC,MAAM,IAAI,KAAK,CAAC,iCAAA,CAAA,MAAA,CAAkC,GAAG,CAAC,IAAI,EAAoB,oBAAA,CAAA,CAAC,CAAA;AAChF,iBAAA;gBACD,OAAM,CAAA,CAAA,YAAA,GAAG,CAAC,KAAK,CAAA,CAAA;;AAAf,gBAAA,EAAA,CAAA,IAAA,EAAe,CAAA;;;;;;;;;;;;;;;;;AAEX,gBAAA,EAAA,GAAA,MAAS,CAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAA,CAAA,CAAA,EAAtB,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,CAAkB;AACzB,gBAAA,IAAA,CAAA,IAAI,EAAJ,OAAI,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACN,gBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE;oBAClC,MAAM,IAAI,KAAK,CAAC,iCAAA,CAAA,MAAA,CAAkC,IAAI,CAAC,IAAI,EAAkC,kCAAA,CAAA,CAAC,CAAA;AAC/F,iBAAA;gBACD,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,KAAK,CAAA,CAAA;;AAAhB,gBAAA,EAAA,CAAA,IAAA,EAAgB,CAAA;;;AAEhB,gBAAA,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;;;;;AAExD,CAAA;AAEe,SAAA,MAAM,CAAC,KAAiB,EAAE,IAAc,EAAA;AACtD,IAAA,QAAQ,KAAK;QACX,KAAK,UAAU,CAAC,OAAO;AACrB,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;QAC5B,KAAK,UAAU,CAAC,WAAW;AACzB,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;AAC5B,QAAA;YACE,WAAW,CAAM,CAAC,CAAA;AACrB,KAAA;AACH,CAAC;AAED,IAAA,OAAA,kBAAA,YAAA;AAIE,IAAA,SAAA,OAAA,CAAY,UAAsB,EAAA;AAF1B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;AAGjC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;KAC7B;AAEM,IAAA,OAAA,CAAA,SAAA,CAAA,UAAU,GAAjB,UAAkB,MAAe,EAAE,IAAc,EAAA;;;;;;4BAClC,OAAM,CAAA,CAAA,YAAA,OAAA,CAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA,CAAA,CAAA;;AAAxC,wBAAA,IAAI,GAAG,EAAiC,CAAA,IAAA,EAAA,CAAA;;;;wBAC7B,MAAA,GAAA,QAAA,CAAA,IAAI,CAAA,EAAA,QAAA,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;;;wBAAV,EAAE,GAAA,QAAA,CAAA,KAAA,CAAA;wBACH,EAAA,GAAA,EAAE,CAAC,IAAI,CAAA;;AACR,4BAAA,KAAA,WAAW,CAAC,aAAa,EAAzB,OAAyB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAGzB,4BAAA,KAAA,WAAW,CAAC,iBAAiB,EAA7B,OAA6B,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;AAF1B,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAA,OAAA,CAAA,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA,CAAA,CAAA;4BAA1D,OAA0D,CAAA,CAAA,YAAA,EAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAA1D,wBAAA,EAAA,CAAA,IAAA,EAA0D,CAAA;wBAC1D,OAAQ,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;AAEF,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAA,OAAA,CAAA,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA,CAAA,CAAA;4BAAtC,OAAsC,CAAA,CAAA,YAAA,EAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAAtC,wBAAA,EAAA,CAAA,IAAA,EAAsC,CAAA;wBACtC,OAAQ,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;6BAER,MAAM,IAAI,KAAK,CAAC,iCAAA,CAAA,MAAA,CAAkC,EAAE,CAAC,IAAI,EAAiB,iBAAA,CAAA,CAAC,CAAA;;;;;;;;;;;;;;;;;;;AAGlF,KAAA,CAAA;AAEM,IAAA,OAAA,CAAA,SAAA,CAAA,gCAAgC,GAAvC,UAAwC,MAAe,EAAE,IAAc,EAAA;;;;;;4BACxD,OAAM,CAAA,CAAA,YAAA,OAAA,CAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA,CAAA,CAAA;;AAAxC,wBAAA,IAAI,GAAG,EAAiC,CAAA,IAAA,EAAA,CAAA;AACxC,wBAAA,EAAA,GAAA,OAAQ,IAAI,EAAA,CAAA,CAAA,EAAX,GAAG,QAAA,CAAQ;AAClB,wBAAA,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,EAAE;4BAClC,MAAM,IAAI,KAAK,CAAC,+BAAA,CAAA,MAAA,CAAgC,GAAG,CAAC,IAAI,EAAmB,mBAAA,CAAA,CAAC,CAAA;AAC7E,yBAAA;;;;AACgB,wBAAA,EAAA,GAAA,QAAA,CAAA,GAAG,CAAC,KAAK,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,CAAA;;;;wBAAf,EAAE,GAAA,EAAA,CAAA,KAAA,CAAA;wBACH,EAAA,GAAA,EAAE,CAAC,IAAI,CAAA;;AACR,4BAAA,KAAA,WAAW,CAAC,aAAa,EAAzB,OAAyB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAGzB,4BAAA,KAAA,WAAW,CAAC,iBAAiB,EAA7B,OAA6B,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAG7B,4BAAA,KAAA,WAAW,CAAC,MAAM,EAAlB,OAAkB,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;;;AALf,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAA,OAAA,CAAA,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA,CAAA,CAAA;4BAA1D,OAA0D,CAAA,CAAA,YAAA,EAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAA1D,wBAAA,EAAA,CAAA,IAAA,EAA0D,CAAA;wBAC1D,OAAQ,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;AAEF,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAA,OAAA,CAAA,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA,CAAA,CAAA;4BAAtC,OAAsC,CAAA,CAAA,YAAA,EAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAAtC,wBAAA,EAAA,CAAA,IAAA,EAAsC,CAAA;wBACtC,OAAQ,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;AAEF,oBAAA,KAAA,EAAA,EAAA,OAAA,CAAA,CAAA,YAAA,OAAA,CAAA,EAAE,CAAC,KAAK,CAAA,CAAA,CAAA;6BAAd,OAAc,CAAA,CAAA,YAAA,EAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAAd,wBAAA,EAAA,CAAA,IAAA,EAAc,CAAA;wBACd,OAAQ,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA;6BAER,MAAM,IAAI,KAAK,CAAC,iCAAA,CAAA,MAAA,CAAkC,EAAE,CAAC,IAAI,EAAuC,uCAAA,CAAA,CAAC,CAAA;;;;;;;;;;;;;;;;;;;AAGxG,KAAA,CAAA;IACH,OAAC,OAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;AClJM,IAAM,qBAAqB,GAAG;;IAEnC,CAAC,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,GAAG,EAAY,EAAA,EAAA;;IAEjC,CAAC,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,GAAG,EAAY,EAAA,EAAA;;IAEjC,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;CACtE,CAAA;AAGM,IAAM,yBAAyB,GAAG;;IAEvC,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,CAAC,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,GAAG,EAAY,EAAA,EAAA;;IAEjC,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;CACtE,CAAA;AAGD;AACO,IAAM,qBAAqB,GAAG;IACnC,CAAC,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,GAAG,EAAY,EAAA,EAAA;IACjC,CAAC,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,GAAG,EAAY,EAAA,EAAA;IACjC,CAAC,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,GAAG,EAAY,EAAA,EAAA;IACjC,CAAC,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,GAAG,EAAY,EAAA,EAAA;IACjC,IAAI,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,IAAI,EAAY,EAAA,EAAA;IACrC,CAAC,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,GAAG,EAAY,EAAA,EAAA;IACjC,IAAI,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,IAAI,EAAY,EAAA,EAAA;IACrC,CAAC,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,GAAG,EAAY,EAAA,EAAA;IACjC,IAAI,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,IAAI,EAAY,EAAA,EAAA;IACrC,CAAC,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,GAAG,EAAY,EAAA,EAAA;CAClC,CAAA;AAGD;AACO,IAAM,qBAAqB,GAAG;IACnC,CAAC,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,GAAG,EAAY,EAAA,EAAA;IACjC,IAAI,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,IAAI,EAAY,EAAA,EAAA;CACtC,CAAA;AAGD;AACO,IAAM,mBAAmB,GAAG;IACjC,EAAE,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,IAAI,EAAY,EAAA,EAAA;IACnC,EAAE,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,IAAI,EAAY,EAAA,EAAA;CACpC,CAAA;AAGM,IAAM,wBAAwB,GAAG;;IAEtC,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,IAAI,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,IAAI,EAAY,EAAA,EAAA;CACtC,CAAA;AAGM,IAAM,oBAAoB,GAAG;;IAElC,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,GAAG,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,GAAG,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;CACtE,CAAA;AAGM,IAAM,kBAAkB,GAAG;;IAEhC,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;CACtE,CAAA;AAGM,IAAM,eAAe,GAAG;;IAE7B,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,GAAG,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEvE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,GAAG,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEvE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEnE,CAAC,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;CACpE,CAAA;AAGM,IAAM,gBAAgB,GAAG;;IAE9B,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;CACtE,CAAA;AAGD;AACO,IAAM,oBAAoB,GAAG;IAClC,EAAE,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,IAAI,EAAY,EAAA,EAAA;IACnC,EAAE,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,IAAI,EAAY,EAAA,EAAA;IACnC,EAAE,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,IAAI,EAAY,EAAA,EAAA;CACpC,CAAA;AAGM,IAAM,gBAAgB,GAAG;;IAE9B,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;CACtE,CAAA;AAGM,IAAM,sBAAsB,GAAG;;IAEpC,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,GAAG,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEvE,GAAG,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAEvE,GAAG,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,KAAK,EAAY,EAAA,EAAA;CACtC,CAAA;AAGD;AACO,IAAM,sBAAsB,GAAG;IACpC,EAAE,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,IAAI,EAAY,EAAA,EAAA;IACnC,EAAE,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,IAAI,EAAY,EAAA,EAAA;CACpC,CAAA;AAGD;AACO,IAAM,kBAAkB,GAAG;;IAEhC,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;;IAGrE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;;IAErE,EAAE,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;CACtE,CAAA;AAGM,IAAM,sBAAsB,GAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAC9B,qBAAqB,CACrB,EAAA,yBAAyB,CACzB,EAAA,qBAAqB,GACrB,qBAAqB,CAAA,EACrB,mBAAmB,CAAA,EACnB,wBAAwB,CACxB,EAAA,oBAAoB,CACpB,EAAA,kBAAkB,CAClB,EAAA,eAAe,CACf,EAAA,gBAAgB,GAChB,oBAAoB,CAAA,EACpB,gBAAgB,CAAA,EAChB,sBAAsB,CACtB,EAAA,sBAAsB,CACtB,EAAA,kBAAkB,CACtB,CAAA;AAIM,IAAM,cAAc,GAAG,UAAC,IAAgB,EAAA;IAC7C,OAAA,IAAI,cAAc,CAAkC,IAAI,EAAE,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAA;AAAzF,CAAyF;;ACjMpF,IAAM,aAAa,GAAGG,MAAC,CAAC;AAC7B,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,kBAAkB,EAAE,YAAY;AAChC,IAAA,qBAAqB,EAAE,YAAY;AACnC,IAAA,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxB,IAAA,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3B,IAAA,aAAa,EAAE,CAAC;AAChB,IAAA,aAAa,EAAE,CAAC;AAChB,IAAA,SAAS,EAAE,GAAG;AACd,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACpB,IAAA,eAAe,EAAE,sBAAsB;AACvC,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,gBAAgB,EAAE,KAAK;AACvB,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,aAAa,EAAE,CAAC;AAChB,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,mBAAmB,EAAE,IAAI;AAC1B,CAAA,CAAC,CAAA;AASK,IAAM,aAAa,GAAGA,MAAC,CAAC;AAC7B,IAAA,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,IAAI,EAAE;AAEZ,IAAA,GAAG,EAAE,SAA+B;AACpC,IAAA,UAAU,EAAE,SAA+B;AACnC,CAAA,CAAC,CAAA;AAQJ,IAAM,OAAO,GAAG,UAAC,IAAY,EAAE,aAA4B,EAAc,EAAA,QAAC;AAC/E,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAA,IAAA;AACJ,IAAA,aAAa,EAAE,aAAa,CAAC,IAAI,EAAwB;CAC1D,EAAC,EAAA,CAAA;AAQK,IAAM,OAAO,GAAG,UAAC,IAAY,EAAE,aAA4B,EAAc,EAAA,QAAC;AAC/E,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAA,IAAA;AACJ,IAAA,aAAa,EAAE,aAAa,CAAC,IAAI,EAAwB;CAC1D,EAAC,EAAA;;ACpFK,IAAM,GAAG,GAAG,UAAC,EAIuC,EAAA;QAHzD,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,2BAA2B,EAA3B,mBAAmB,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,KAAK,GAAA,EAAA,CAAA;AAE3B,IAAA,OAAA,MAAM,CAAC;AACL,QAAA,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;AACjC,QAAA,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;AAClC,QAAA,WAAW,EAAE,SAAS;AAEtB,QAAA,mBAAmB,EAAA,mBAAA;AACnB,QAAA,OAAO,EAAA,OAAA;AACP,QAAA,SAAS,EAAA,SAAA;AACV,KAAA,CAAC,EAAE,CAAA;AARJ,CAQI,CAAA;AAEU,SAAA,OAAO,CAAC,KAAY,EAAE,GAAY,EAAA;IAChD,OAAO,QAAQ,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,UAAC,CAAC,EAAA,EAAK,OAAC,CAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,CAAA;AACvF,CAAC;AAEK,SAAU,eAAe,CAAC,KAAY,EAAA;IAC1C,IAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IAClC,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AACxC,KAAA;AACD,IAAA,OAAO,GAAG,CAAA;AACZ,CAAC;AAEM,IAAM,eAAe,GAAG,UAAC,KAAY,EAAE,EAA6B,EAAA;AACzE,IAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AACtB,QAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;AACtC,KAAA;AACD,IAAA,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;AACrB,IAAA,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAEK,SAAU,eAAe,CAAC,KAAY,EAAA;IAC1C,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE;AAC/C,QAAA,IAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAA;AACnC,QAAA,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,SAAS,CAAA;AAClC,QAAA,OAAO,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AAC5B,KAAA;AACD,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAEM,IAAM,mBAAmB,GAAG,UAAC,KAAY,EAAE,EAAwC,EAAA;AACxF,IAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;AAC7B,QAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AACxC,KAAA;IACD,OAAO,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,EAAE,CAAC,CAAkB,CAAC,CAAA,EAAA,CAAC,CAAA;AACxE,CAAC,CAAA;AAEM,IAAM,kBAAkB,GAAG,UAChC,KAAY,EACZ,IAAO,EACP,KAAQ,EAAA;AAER,IAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;AAC7B,QAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AACxC,KAAA;IACD,OAAO,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,UAAC,CAAC,EAAA;QACxC,IAAM,eAAe,GAAG,CAAkB,CAAA;QAC1C,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACzC,KAAC,CAAC,CAAA;AACJ,CAAC;;AChFD,SAAS,qBAAqB,CAAC,cAAwB,EAAA;;;;;;;;;AASrD,IAAA,IAAM,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;AAC7C,IAAA,IAAI,SAAS;AAAE,QAAA,OAAO,SAAS,CAAA;AAC/B,IAAA,IAAM,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,YAAY,CAAA;IAChC,IAAI,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,WAAW,CAAA;IAC/B,IAAI,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,YAAY,CAAA;AAChC,IAAA,OAAO,CAAC,IAAI,CAAC,gEAAgE,EAAE,cAAc,CAAC,CAAA;AAC9F,IAAA,OAAO,WAAW,CAAA;AACpB,CAAC;AAGK,SAAU,YAAY,CAAC,UAAsB,EAAA;IACjD,IAAI,OAAO,UAAU,KAAK,QAAQ;;AAEhC,QAAA,OAAO,UAAU,CAAA;;AAEnB,IAAA,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;AAChC,QAAA,OAAO,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5C,KAAA;;AAED,IAAA,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE;AAClC,QAAA,OAAO,UAAU,CAAC,CAAC,CAAC,CAAA;AACrB,KAAA;AACD,IAAA,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AAC/B,QAAA,OAAO,UAAU,CAAC,CAAC,CAAC,CAAA;AACrB,KAAA;AACD,IAAA,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,KAA0B,EAAE,GAAW,EAAA;IAC3D,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IACxC,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AACvD,IAAA,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AACxB,CAAC;AAEK,SAAU,YAAY,CAAC,KAA0B,EAAA;AACrD,IAAA,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AAC/B,CAAC;AAEe,SAAA,iBAAiB,CAAC,KAA0B,EAAE,IAAc,EAAA;;;AAG1E,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACpC,KAAA;AACD,IAAA,OAAO,IAAI,CAAA;AACb;;ACxCO,IAAM,IAAI,GAAG,UAAC,aAA4B,EAAA,EAAW,QAAC;AAC3D,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,QAAQ,EAAE,wBAAwB;AAClC,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,aAAa,EAAE,aAAa,CAAC,IAAI,EAAwB;CAC1D,EAAC,EAAA,CAAA;+BAQG,yBAAyB,CAAA,EACzB,qBAAqB,CACrB,EAAA,qBAAqB;;ACnB1B,SAAS,WAAW,CAAC,GAAW,EAAA;AAC9B,IAAA,OAAO,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,CAAA;AAClC,CAAC;AAED,IAAA,WAAA,kBAAA,YAAA;AAME,IAAA,SAAA,WAAA,CACE,aAA4B,EACpB,mBAA4B,EAC5B,GAAmC,EAAA;QADnC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAS;QAC5B,IAAG,CAAA,GAAA,GAAH,GAAG,CAAgC;QAN7C,IAAW,CAAA,WAAA,GAAc,EAAE,CAAA;AAQzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAA;KAChC;AAEM,IAAA,WAAA,CAAA,SAAA,CAAA,GAAG,GAAV,YAAA;QACE,SAAS;;YAEC,IAAO,EAAE,GAAK,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA,KAApB,CAAoB;YACrC,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAClC,YAAA,IAAI,WAAW,EAAE;AACf,gBAAA,OAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAY,WAAW,CAAE,EAAA,EAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAA,CAAA;AAC3D,aAAA;AACF,SAAA;KACF,CAAA;AAEO,IAAA,WAAA,CAAA,SAAA,CAAA,kBAAkB,GAA1B,UAA2B,IAAc,EAAE,CAAyB,EAAA;QAClE,IAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9C,CAAC,CAAC,MAAM,CAAC,CAAA;QACT,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAqB,CAAA;KACzD,CAAA;AAEO,IAAA,WAAA,CAAA,SAAA,CAAA,YAAY,GAApB,UAAqB,IAAc,EAAE,IAAY,EAAA;QAAjD,IAOC,KAAA,GAAA,IAAA,CAAA;AANC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAC,MAAM,EAAA;AACnC,YAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAA,MAAA;AACP,aAAA,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;KACH,CAAA;;;;;;IAOO,WAAS,CAAA,SAAA,CAAA,SAAA,GAAjB,UAAkB,IAAc,EAAA;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;KACxC,CAAA;;;;;;IAOO,WAAyB,CAAA,SAAA,CAAA,yBAAA,GAAjC,UAAkC,IAAc,EAAA;QAAhD,IAOC,KAAA,GAAA,IAAA,CAAA;AANC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAC,MAAM,EAAA;AACnC,YAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,MAAM,EAAE,KAAK,CAAC,EAAE,CAAR,KAAA,CAAA,KAAK,EAAO,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,KAAI,CAAC,YAAY,CAAK,EAAA,KAAA,CAAA,EAAA,MAAA,CAAA,MAAM,CAAC,EAAA,KAAA,CAAA,CAAA;AAClD,aAAA,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;KACH,CAAA;;;;;;IAOO,WAAuB,CAAA,SAAA,CAAA,uBAAA,GAA/B,UAAgC,IAAc,EAAA;QAA9C,IAOC,KAAA,GAAA,IAAA,CAAA;AANC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAC,MAAM,EAAA;AACnC,YAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,MAAM,EAAE,KAAK,CAAC,EAAE,CAAA,KAAA,CAAR,KAAK,EAAO,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAA,MAAM,CAAK,EAAA,KAAA,CAAA,EAAA,MAAA,CAAA,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAA,KAAA,CAAA,CAAA;AACjD,aAAA,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;KACH,CAAA;IAEO,WAA6B,CAAA,SAAA,CAAA,6BAAA,GAArC,UAAsC,EAA4B,EAAA;QAChE,QAAQ,EAAE,CAAC,IAAI;AACb,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;gBAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAC3C,YAAA,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAC3C,YAAA,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;AAChC,YAAA,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;AAChD,YAAA,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;AAC9C,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;gBAC5B,OAAM;AACR,YAAA,KAAK,IAAI;AACP,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtB,oBAAA,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3C,iBAAA,CAAC,CAAA;gBACF,OAAM;AACR,YAAA;gBACE,WAAW,CAAG,CAAC,CAAA;AAClB,SAAA;KACF,CAAA;;IAGO,WAAyB,CAAA,SAAA,CAAA,yBAAA,GAAjC,UAAkC,EAAwB,EAAA;QACxD,QAAQ,EAAE,CAAC,IAAI;AACb,YAAA,KAAK,GAAG,CAAC;AACT,YAAA,KAAK,GAAG;gBACN,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;AAC5C,gBAAA,OAAO,EAAE,IAAI,EAAO,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,IAAI,CAAC,IAAI,CAAE,EAAA,EAAA,MAAM,EAAE,IAAI,EAAE,CAAA,EAAE,CAAA;AACjD,YAAA,KAAK,GAAG,CAAC;AACT,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;AAC5B,gBAAA,OAAO,EAAE,IAAI,EAAO,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,IAAI,CAAC,IAAI,CAAE,EAAA,EAAA,IAAI,EAAE,IAAI,EAAE,CAAA,EAAE,CAAA;AAC/C,YAAA,KAAK,IAAI;AACP,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;AAC5B,gBAAA,OAAO,EAAE,IAAI,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAO,IAAI,CAAC,IAAI,CAAE,EAAA,EAAA,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAA,CAAE,EAAE,CAAA;AACrE,YAAA,KAAK,GAAG,CAAC;AACT,YAAA,KAAK,GAAG;gBACN,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;AAC5C,gBAAA,OAAO,EAAE,IAAI,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAO,IAAI,CAAC,IAAI,CAAE,EAAA,EAAA,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAA,CAAE,EAAE,CAAA;AAC7D,YAAA,KAAK,IAAI,CAAC;AACV,YAAA,KAAK,IAAI;gBACP,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC5C,OAAO,EAAE,IAAI,EAAO,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,IAAI,CAAC,IAAI,CAAA,EAAA,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAA,CAAE,EAAE,CAAA;AACnF,YAAA,KAAK,GAAG;AACN,gBAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;AAC5B,YAAA;gBACE,WAAW,CAAG,CAAC,CAAA;AAClB,SAAA;KACF,CAAA;IAEO,WAAyB,CAAA,SAAA,CAAA,yBAAA,GAAjC,UAAkC,EAAwB,EAAA;QACxD,QAAQ,EAAE,CAAC,IAAI;;AAEb,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;gBAC5B,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,oBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAA;AAC5C,iBAAA;AACD,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAA;gBAC7B,OAAM;AACR,YAAA,KAAK,IAAI;AACP,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAA;AAC/B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;gBAC5B,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,oBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAA;AAC5C,iBAAA;AACD,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAA;gBAC7B,OAAM;AACR,YAAA;gBACE,WAAW,CAAG,CAAC,CAAA;AAClB,SAAA;KACF,CAAA;IAEO,WAAK,CAAA,SAAA,CAAA,KAAA,GAAb,UAAc,EAAuB,EAAA;AACnC,QAAA,IAAI,EAAE,CAAC,IAAI,IAAI,yBAAyB;AAAE,YAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,EAA8B,CAAC,CAAA;AACnH,QAAA,IAAI,EAAE,CAAC,IAAI,IAAI,qBAAqB;AAAE,YAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,EAA0B,CAAC,CAAA;AACvG,QAAA,IAAI,EAAE,CAAC,IAAI,IAAI,qBAAqB;AAAE,YAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,EAA0B,CAAC,CAAA;QACvG,MAAM,IAAI,KAAK,CAAC,mDAAA,CAAA,MAAA,CAAoD,EAAE,CAAC,IAAI,CAAE,CAAC,CAAA;KAC/E,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAY,WAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;YACE,IAAI,IAAI,CAAC,aAAa;gBAAE,OAAO,IAAI,CAAC,aAAa,CAAA;AACjD,YAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;SAC7D;AAED,QAAA,GAAA,EAAA,UAAyB,KAAuB,EAAA;AAC9C,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;SAC3B;;;AAJA,KAAA,CAAA,CAAA;IAMO,WAAiB,CAAA,SAAA,CAAA,iBAAA,GAAzB,UAA0B,MAAe,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtB,gBAAA,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,IAAI,CAAC,WAAW;AACxB,gBAAA,MAAM,EAAA,MAAA;AACP,aAAA,CAAC,CAAA;AACF,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;AACtB,SAAA;KACF,CAAA;IACH,OAAC,WAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;AChMM,IAAM,SAAS,GAAG,UAAC,KAAa,EAAA,EAAgB,QAAC;AACtD,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,KAAK,EAAA,KAAA;CACN,EAAC,EAAA,CAAA;AASF,SAAS,QAAQ,CAAC,GAAU,EAAA;AAC1B,IAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACzD,CAAC;AAED,IAAA,WAAA,kBAAA,YAAA;AAIE,IAAA,SAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,CAAA;AAChC,QAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;KAChC;AAED,IAAA,WAAA,CAAA,SAAA,CAAA,QAAQ,GAAR,UAAS,aAA4B,EAAE,IAAa,EAAA;AAClD,QAAA,IAAM,IAAI,GAAG;AACX,YAAA,aAAa,EAAE,aAAa,CAAC,IAAI,EAAE;AACnC,YAAA,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AACrC,YAAA,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AACzC,YAAA,IAAI,EAAA,IAAA;SACG,CAAA;QACT,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAC9B,SAAA;KACF,CAAA;IACH,OAAC,WAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;ACAD,IAAA,OAAA,kBAAA,YAAA;AACE,IAAA,SAAA,OAAA,CAAoB,GAAqC,EAAA;QAArC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAkC;KAAI;;AAGrD,IAAA,OAAA,CAAA,SAAA,CAAA,kBAAkB,GAA1B,UAA2B,KAAY,EAAE,GAAqC,EAAA;;AAE5E,QAAA,IAAM,MAAM,GAAG,IAAI,WAAW,CAC5B,eAAe,CAAC,KAAK,CAAC,EACtB,KAAK,CAAC,mBAAmB,EACzB,GAAqC,CACtC,CAAC,GAAG,EAAE,CAAA;QACP,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;AACpC,SAAA;QACD,IAAI,MAAM,CAAC,YAAY,EAAE;AACvB,YAAA,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAC,CAAC,EAAA;gBACnC,OAAA,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,UAAC,IAAI,EAAK,EAAA,OAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,EAAK,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAJ,IAAI,GAAI,EAAE,EAAG,EAAA,KAAA,CAAA,EAAA,CAAA,MAAM,CAAC,YAAY,CAArC,EAAA,KAAA,CAAA,CAAA,EAAsC,CAAC,CAAA;AAA1E,aAA0E,CAC3E,CAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAA;KACb,CAAA;AAEO,IAAA,OAAA,CAAA,SAAA,CAAA,iBAAiB,GAAzB,UAA0B,KAAY,EAAE,IAAc,EAAA;QACpD,IAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;AAC3C,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,UAAC,CAAC,EAAA;YAC/B,OAAA,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAA;AAArF,SAAqF,CACtF,CAAA;KACF,CAAA;IAEO,OAAgB,CAAA,SAAA,CAAA,gBAAA,GAAxB,UAAyB,KAAY,EAAA;QACnC,IAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACjC,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;AAC9D,SAAA;QACD,OAAO,OAAO,CACZ,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,UAAC,CAAC,EAAK,EAAA,OAAA,CAAC,CAAC,KAAK,EAAE,CAAA,EAAA,CAAC,EACzC,GAAG,CAAC,IAAI,EAAE,CACX,CAAA;KACF,CAAA;AAEO,IAAA,OAAA,CAAA,SAAA,CAAA,0BAA0B,GAAlC,UAAmC,KAAY,EAAE,IAAc,EAAA;AACvD,QAAA,IAAA,EAAA,GAAA,MAAA,CAAQ,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAA,CAAA,CAAA,EAApC,CAAC,QAAmC,CAAA;QAC7C,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAA;AACnE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,sBAAsB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAA,IAAA,EAAE,CAAC,CAAC,CAAA;KAC9D,CAAA;AAEa,IAAA,OAAA,CAAA,SAAA,CAAA,QAAQ,GAAtB,UAAuB,KAAY,EAAE,IAAc,EAAA;;;;;;AAC3C,wBAAA,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;AACtC,wBAAA,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAA;wBACtC,IAAI,CAAC,OAAO,EAAE;AACZ,4BAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;AACnD,yBAAA;wBACK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAE3B,wBAAA,OAAA,CAAA,CAAA,YAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA,CAAA;;AAAxD,wBAAA,EAAA,GAAA,MAAS,CAAA,KAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,IAAA,EAA+C,EAAA,CAAA,CAAA,CAAA,EAAvD,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AAEX,wBAAA,OAAA,CAAA,CAAA,aAAO,eAAe,CAAC,KAAK,EAAE,UAAC,WAAW,EAAA;AACxC,gCAAA,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAA;AAC3D,6BAAC,CAAC,CAAA,CAAA;;;;AACH,KAAA,CAAA;AAEa,IAAA,OAAA,CAAA,SAAA,CAAA,6BAA6B,GAA3C,UAA4C,KAAY,EAAE,IAAc,EAAA;;;;;;AAChE,wBAAA,EAAA,GAAA,MAAc,CAAA,IAAI,EAAA,CAAA,CAAA,EAAjB,CAAC,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,CAAC,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,GAAG,GAAA,EAAA,CAAA,CAAA,CAAA,CAAQ;AAChB,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,sBAAsB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA;;wBAAzE,KAAK,GAAG,SAAiE,CAAA;AACjE,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,sBAAsB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA;;wBAAzE,KAAK,GAAG,SAAiE,CAAA;wBACjE,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA;;wBAA7E,KAAK,GAAG,SAAqE,CAAA;AAC7E,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAA,CAAA;;;;AACb,KAAA,CAAA;AAEa,IAAA,OAAA,CAAA,SAAA,CAAA,6BAA6B,GAA3C,UAA4C,KAAY,EAAE,IAAc,EAAA;;;;;;AAChE,wBAAA,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;AACtC,wBAAA,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAA;wBACtC,IAAI,CAAC,OAAO,EAAE;AACZ,4BAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;AACnD,yBAAA;wBACY,OAAM,CAAA,CAAA,YAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,gCAAgC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA,CAAA;;AAArG,wBAAA,IAAI,GAAG,EAA8F,CAAA,IAAA,EAAA,CAAA;AAC3G,wBAAA,OAAA,CAAA,CAAA,aAAO,eAAe,CAAC,KAAK,EAAE,UAAC,WAAW,EAAA;AACxC,gCAAA,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAA;AAC3D,6BAAC,CAAC,CAAA,CAAA;;;;AACH,KAAA,CAAA;AAEO,IAAA,OAAA,CAAA,SAAA,CAAA,gBAAgB,GAAxB,UAAyB,KAAY,EAAE,IAAc,EAAA;;AACnD,QAAA,IAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;AAC7B,QAAA,IAAI,UAAU,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAA;AACzD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACxD,YAAA,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;AAC3B,SAAA;AACD,QAAA,OAAO,KAAK,CAAC,mBAAmB,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,UAAU,CAAA;KACzE,CAAA;AAEa,IAAA,OAAA,CAAA,SAAA,CAAA,2BAA2B,GAAzC,UAA0C,KAAY,EAAE,EAAyB,EAAA;;;gBAC/E,QAAQ,EAAE,CAAC,IAAI;AACb,oBAAA,KAAK,IAAI,CAAC;AACV,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAA,CAAA;AACd,oBAAA;wBACE,WAAW,CAAG,CAAC,CAAA;AAClB,iBAAA;;;;AACF,KAAA,CAAA;AAEa,IAAA,OAAA,CAAA,SAAA,CAAA,2BAA2B,GAAzC,UAA0C,KAAY,EAAE,EAAyB,EAAA;;;gBAC/E,QAAQ,EAAE,CAAC,IAAI;AACb,oBAAA,KAAK,KAAK,CAAC;AACX,oBAAA,KAAK,KAAK;wBACR,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA,CAAA;AAC/C,oBAAA,KAAK,KAAK;AACR,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA,CAAA;AACrC,oBAAA;wBACE,OAAO,CAAC,IAAI,CAAC,qBAAA,CAAA,MAAA,CAAsB,EAAE,CAAC,IAAI,CAAE,CAAC,CAAA;AAC7C,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAA,CAAA;AACf,iBAAA;;;;AACF,KAAA,CAAA;AAEO,IAAA,OAAA,CAAA,SAAA,CAAA,yBAAyB,GAAjC,UAAkC,KAAY,EAAE,IAAc,EAAA;;AAC5D,QAAA,IAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAC7B,OAAO,KAAK,CAAC,mBAAmB,GAAG,IAAI,GAAG,MAAA,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAA;KAClF,CAAA;AAEa,IAAA,OAAA,CAAA,SAAA,CAAA,0BAA0B,GAAxC,UAAyC,KAAY,EAAE,EAAwB,EAAA;;;gBAC7E,QAAQ,EAAE,CAAC,IAAI;AACb,oBAAA,KAAK,GAAG;wBACN,OAAO,CAAA,CAAA,aAAA,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA,EAAA,CAAC,CAAA,CAAA;AAC3E,oBAAA,KAAK,GAAG;AACN,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,UAAC,CAAC,EAAK,EAAA,OAAA,CAAC,CAAC,KAAK,EAAE,CAAT,EAAS,CAAC,CAAA,CAAA;AACnD,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAA;AAC7E,oBAAA,KAAK,GAAG;AACN,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAA;AACtE,oBAAA,KAAK,GAAG;AACN,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAA;AACpE,oBAAA,KAAK,GAAG;AACN,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAA;AACrE,oBAAA,KAAK,GAAG;AACN,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAA;AACvE,oBAAA,KAAK,GAAG;AACN,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAA;AACzF,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAA;AAC1E,oBAAA,KAAK,GAAG;AACN,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAA;AACrE,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAA;AACzG,oBAAA;wBACE,WAAW,CAAG,CAAC,CAAA;AAClB,iBAAA;;;;AACF,KAAA,CAAA;;AAGa,IAAA,OAAA,CAAA,SAAA,CAAA,qBAAqB,GAAnC,UAAoC,KAAY,EAAE,EAAmB,EAAA;;;gBACnE,QAAQ,EAAE,CAAC,IAAI;AACb,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAA;AAC7E,oBAAA;;wBAEE,WAAW,CAAY,CAAC,CAAA;AAC3B,iBAAA;;;;AACF,KAAA,CAAA;;AAGa,IAAA,OAAA,CAAA,SAAA,CAAA,qBAAqB,GAAnC,UAAoC,KAAY,EAAE,EAAmB,EAAA;;;gBACnE,QAAQ,EAAE,CAAC,IAAI;AACb,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAA;AAC7E,oBAAA;;wBAEE,WAAW,CAAY,CAAC,CAAA;AAC3B,iBAAA;;;;AACF,KAAA,CAAA;;AAGa,IAAA,OAAA,CAAA,SAAA,CAAA,wBAAwB,GAAtC,UAAuC,KAAY,EAAE,EAAsB,EAAA;;;gBACzE,QAAQ,EAAE,CAAC,IAAI;AACb,oBAAA,KAAK,IAAI;wBACP,OAAO,CAAA,CAAA,aAAA,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,WAAW,EAAE,CAAC,CAAA,CAAA;AACpD,oBAAA,KAAK,IAAI;wBACP,OAAO,CAAA,CAAA,aAAA,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA,CAAA;AACrD,oBAAA;wBACE,WAAW,CAAG,CAAC,CAAA;AAClB,iBAAA;;;;AACF,KAAA,CAAA;AAEa,IAAA,OAAA,CAAA,SAAA,CAAA,6BAA6B,GAA3C,UAA4C,KAAY,EAAE,EAA2B,EAAA;;;gBACnF,QAAQ,EAAE,CAAC,IAAI;AACb,oBAAA,KAAK,IAAI;wBACP,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA,CAAA;AACxD,oBAAA,KAAK,IAAI;AACP,wBAAA,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,UAAC,WAAW,EAAA;AACnC,4BAAA,IAAA,EAAA,GAAA,MAAA,CAAqB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAA,EAAtD,CAAC,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,CAAC,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,CAAC,QAAA,EAAE,CAAC,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,CAAC,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,CAAC,QAAsC,CAAA;AAC7D,4BAAA,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC7D,yBAAC,CAAC,CAAA;AACF,wBAAA,OAAA,CAAA,CAAA,aAAO,eAAe,CAAC,KAAK,CAAC,CAAA,CAAA;AAC/B,oBAAA,KAAK,IAAI;AACP,wBAAA,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,UAAC,WAAW,EAAA;4BACnC,IAAA,EAAA,GAAA,OAAS,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAA,EAA1C,CAAC,QAAA,EAAE,CAAC,QAAsC,CAAA;4BACjD,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACxF,yBAAC,CAAC,CAAA;wBACF,OAAO,CAAA,CAAA,aAAA,eAAe,CAAC,KAAK,CAAC;;AAAA,yBAAA,CAAA;;AAE/B,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,eAAe,CAAC,KAAK,EAAE,UAAC,WAAW,EAAA;gCACxC,OAAA,KAAK,CAAC,SAAS,CACb,WAAW,CAAC,UAAU,EACtB,WAAW,CAAC,UAAU,EACtB,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CACxD,CAAA;AAJD,6BAIC,CACF,CAAA,CAAA;AACH,oBAAA;wBACE,WAAW,CAAG,CAAC,CAAA;AAClB,iBAAA;;;;AACF,KAAA,CAAA;AAEa,IAAA,OAAA,CAAA,SAAA,CAAA,yBAAyB,GAAvC,UAAwC,KAAY,EAAE,EAAuB,EAAA;;;;;;wBACnE,EAAA,GAAA,EAAE,CAAC,IAAI,CAAA;;iCAER,IAAI,EAAJ,OAAI,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;iCAEJ,GAAG,EAAH,OAAG,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;iCAIH,GAAG,EAAH,OAAG,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;iCAEH,IAAI,EAAJ,OAAI,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;4BAPP,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA,CAAA;AAE5B,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAA;;wBAAzF,KAAK,GAAG,SAAiF,CAAA;AACjF,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA;;wBAAhF,KAAK,GAAG,SAAwE,CAAA;AAChF,wBAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAA,CAAA;4BAEZ,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA,CAAA;4BAEzD,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA,CAAA;;wBAEzD,WAAW,CAAG,CAAC,CAAA;;;;;;AAEpB,KAAA,CAAA;AAEa,IAAA,OAAA,CAAA,SAAA,CAAA,uBAAuB,GAArC,UAAsC,KAAY,EAAE,EAAqB,EAAA;;;gBACvE,QAAQ,EAAE,CAAC,IAAI;AACb,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAA;AAC1E,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAA;AAC1E,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAA;AACtE,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAA;AACxE,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,mBAAmB,CAAC,KAAK,EAAE,UAAC,eAAe,EAAA;AAC1C,gCAAA,IAAA,EAAA,GAAA,MAAA,CAAe,EAAE,CAAC,IAAI,EAAA,CAAA,CAAA,EAArB,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,IAAI,GAAA,EAAA,CAAA,CAAA,CAAW,CAAA;gCAC5B,OAAO,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACtG,6BAAC,CAAC,CAAA,CAAA;AACJ,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAA;AACvE,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAA;AACrE,oBAAA;wBACE,WAAW,CAAG,CAAC,CAAA;AAClB,iBAAA;;;;AACF,KAAA,CAAA;;;;;;;;;;;IAYO,OAAS,CAAA,SAAA,CAAA,SAAA,GAAjB,UACE,KAAY,EACZ,IAAc,EACd,QAA8C,EAC9C,UAA0D,EAAA;AAE1D,QAAA,OAAO,mBAAmB,CAAC,KAAK,EAAE,UAAC,eAAe,EAAA;YAChD,IAAM,gBAAgB,GAAG,eAAe,CAAC,UAAU,CAAC,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,WAAW,CAAA;AAChH,YAAA,IAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAA;YACtD,IAAM,KAAK,GAAG,KAAK,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,GAAe,CAAC,GAAG,GAAG,CAAA;YAC/G,OAAO,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC7C,SAAC,CAAC,CAAA;KACH,CAAA;IAEO,OAAS,CAAA,SAAA,CAAA,SAAA,GAAjB,UACE,KAAY,EACZ,IAAc,EACd,QAA8C,EAC9C,UAA0D,EAC1D,eAA0D,EAAA;AAE1D,QAAA,OAAO,mBAAmB,CAAC,KAAK,EAAE,UAAC,eAAe,EAAA;YAChD,OAAA,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAA/F,SAA+F,CAChG,CAAA;KACF,CAAA;IAEO,OAAQ,CAAA,SAAA,CAAA,QAAA,GAAhB,UACE,KAAY,EACZ,IAAc,EACd,QAA8C,EAC9C,UAA0D,EAAA;QAJ5D,IAUC,KAAA,GAAA,IAAA,CAAA;AAJC,QAAA,OAAO,mBAAmB,CAAC,KAAK,EAAE,UAAC,eAAe,EAAA;YAChD,IAAM,eAAe,GAAG,KAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AAC1D,YAAA,OAAO,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAA;AACjG,SAAC,CAAC,CAAA;KACH,CAAA;AAEO,IAAA,OAAA,CAAA,SAAA,CAAA,QAAQ,GAAhB,UAAiB,KAAY,EAAE,IAAc,EAAE,QAA8C,EAAA;AAC3F,QAAA,OAAO,mBAAmB,CAAC,KAAK,EAAE,UAAC,eAAe,EAAA;AAChD,YAAA,OAAA,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAA9D,SAA8D,CAC/D,CAAA;KACF,CAAA;;AAGa,IAAA,OAAA,CAAA,SAAA,CAAA,oBAAoB,GAAlC,UAAmC,KAAY,EAAE,EAAkB,EAAA;;;gBACjE,QAAQ,EAAE,CAAC,IAAI;AACb,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,oBAAoB,CAAC,CAAA,CAAA;AAC7E,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,uBAAuB,CAAC,CAAA,CAAA;AACnF,oBAAA,KAAK,KAAK;AACR,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,oBAAoB,CAAC,CAAA,CAAA;AAC9E,oBAAA,KAAK,KAAK;AACR,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,uBAAuB,CAAC,CAAA,CAAA;AACpF,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,CAAA,CAAA;AACvD,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA,CAAA;AAC1D,oBAAA,KAAK,GAAG;AACN,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,CAAC,CAAA,CAAA;AAC5F,oBAAA,KAAK,GAAG;AACN,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,YAAY,CAAC,CAAA,CAAA;AAClG,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,oBAAoB,EAAE,WAAW,CAAC,CAAA,CAAA;AAC3F,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,WAAW,CAAC,CAAA,CAAA;AACjG,oBAAA,KAAK,GAAG;AACN,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,CAAC,CAAA,CAAA;AAC5F,oBAAA,KAAK,GAAG;AACN,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,YAAY,CAAC,CAAA,CAAA;AAClG,oBAAA;wBACE,WAAW,CAAG,CAAC,CAAA;AAClB,iBAAA;;;;AACF,KAAA,CAAA;AAEa,IAAA,OAAA,CAAA,SAAA,CAAA,KAAK,GAAnB,UAAoB,KAAY,EAAE,EAAyB,EAAA;;;AACzD,gBAAA,IAAI,EAAE,CAAC,IAAI,IAAI,sBAAsB;oBAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,EAA2B,CAAC,CAAA,CAAA;AAClH,gBAAA,IAAI,EAAE,CAAC,IAAI,IAAI,sBAAsB;oBAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,EAA2B,CAAC,CAAA,CAAA;AAClH,gBAAA,IAAI,EAAE,CAAC,IAAI,IAAI,qBAAqB;oBAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,EAA0B,CAAC,CAAA,CAAA;AAC/G,gBAAA,IAAI,EAAE,CAAC,IAAI,IAAI,gBAAgB;oBAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAqB,CAAC,CAAA,CAAA;AAChG,gBAAA,IAAI,EAAE,CAAC,IAAI,IAAI,gBAAgB;oBAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAqB,CAAC,CAAA,CAAA;AAChG,gBAAA,IAAI,EAAE,CAAC,IAAI,IAAI,mBAAmB;oBAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,EAAwB,CAAC,CAAA,CAAA;AACzG,gBAAA,IAAI,EAAE,CAAC,IAAI,IAAI,wBAAwB;oBACrC,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE,EAA6B,CAAC,CAAA,CAAA;AACjF,gBAAA,IAAI,EAAE,CAAC,IAAI,IAAI,oBAAoB;oBAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,EAAyB,CAAC,CAAA,CAAA;AAC5G,gBAAA,IAAI,EAAE,CAAC,IAAI,IAAI,kBAAkB;oBAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,EAAuB,CAAC,CAAA,CAAA;AACtG,gBAAA,IAAI,EAAE,CAAC,IAAI,IAAI,eAAe;oBAAE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,EAAoB,CAAC,CAAA,CAAA;AAC7F,gBAAA,IAAI,EAAE,CAAC,IAAI,IAAI,yBAAyB;AAAE,oBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,CAAA;gBACtG,MAAM,IAAI,KAAK,CAAC,qCAAA,CAAA,MAAA,CAAsC,EAAE,CAAC,IAAI,CAAE,CAAC,CAAA;;;AACjE,KAAA,CAAA;IAEY,OAAG,CAAA,SAAA,CAAA,GAAA,GAAhB,UAAiB,KAAY,EAAA;;;;;;;;AACV,wBAAA,EAAA,GAAA,QAAA,CAAA,IAAI,CAAC,GAAG,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,CAAA;;;;wBAAd,EAAE,GAAA,EAAA,CAAA,KAAA,CAAA;wBACH,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA,CAAA;;wBAAnC,KAAK,GAAG,SAA2B,CAAA;;;;;;;;;;;;;;;;AAErC,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAA,CAAA;;;;AACb,KAAA,CAAA;IACH,OAAC,OAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;ACvZD;AAQM,SAAgB,KAAK,CACzB,IAAgB,EAChB,SAAoB,EACpB,UAAsB,EACtB,mBAA4B,EAAA;;;;;;;AAEtB,oBAAA,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAA;AACjC,oBAAA,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;oBAClB,OAAM,CAAA,CAAA,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CACtC,GAAG,CAAC;AACF,4BAAA,OAAO,EAAA,OAAA;AACP,4BAAA,SAAS,EAAA,SAAA;AACT,4BAAA,mBAAmB,EAAA,mBAAA;AACpB,yBAAA,CAAC,CACH,CAAA,CAAA;;AANK,oBAAA,KAAK,GAAG,EAMb,CAAA,IAAA,EAAA,CAAA;oBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,WAAY,CAAA,MAAA,CAAA,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAA2B,2BAAA,CAAA,CAAC,CAAA;AACvG,oBAAA,OAAA,CAAA,CAAA,aAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,IAAI,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAA,CAAA;;;;AAChD;;ACtBM,IAAM,aAAa,GAAG;IAC3B,mBAAmB,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,qBAAqB,EAAY,EAAA,EAAA;IACrE,iBAAiB,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,mBAAmB,EAAY,EAAA,EAAA;IACjE,YAAY,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,cAAc,EAAY,EAAA,EAAA;IACvD,UAAU,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;IACrF,WAAW,EAAE,YAAM,EAAA,QAAC,EAAE,IAAI,EAAE,aAAa,EAAY,EAAA,EAAA;IACrD,SAAS,EAAE,UAAC,EAA4B,EAAA;AAA1B,QAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;QAA2B,QAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAA,IAAA,EAAY,EAAA;KAAA;CACpF,CAAA;AAIM,IAAM,kBAAkB,GAAG,UAAC,IAAgB,EAAA;IACjD,OAAA,IAAI,cAAc,CAA6B,IAAI,EAAE,aAAa,CAAC,CAAC,KAAK,EAAE,CAAA;AAA3E,CAA2E;;ACf7E,IAAA,KAAA,kBAAA,YAAA;AACE,IAAA,SAAA,KAAA,CAA6B,OAAkB,EAAA;QAAlB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAW;KAAI;AAE5C,IAAA,KAAA,CAAA,SAAA,CAAA,MAAM,GAAb,UAAc,GAAM,EAAE,OAAgB,EAAA;QAAtC,IAOC,KAAA,GAAA,IAAA,CAAA;;AANC,QAAA,IAAM,GAAG,GAAG,YAAA;AACV,YAAA,IAAM,KAAK,GAAG,OAAO,EAAE,CAAA;YACvB,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAC5B,YAAA,OAAO,KAAK,CAAA;AACd,SAAC,CAAA;AACD,QAAA,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,GAAG,EAAE,CAAA;KACtC,CAAA;IACH,OAAC,KAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;ACJD,IAAA,UAAA,kBAAA,YAAA;IAIE,SAA6B,UAAA,CAAA,UAA6B,EAAE,SAAqC,EAAA;QAApE,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AAHlD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAA;QAI3C,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;KAClC;IAEM,UAAG,CAAA,SAAA,CAAA,GAAA,GAAV,UAAW,MAAe,EAAA;QAA1B,IAEC,KAAA,GAAA,IAAA,CAAA;QADC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,cAAM,OAAA,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,EAAA,CAAC,CAAA;KACjE,CAAA;IAEY,UAAK,CAAA,SAAA,CAAA,KAAA,GAAlB,UAAmB,OAAgB,EAAA;;;;;;;;wBAEpB,EAAA,GAAA,OAAO,CAAC,SAAS,CAAA;iCAAjB,OAAiB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;wBAAI,EAAA,GAAA,IAAI,CAAC,cAAc,CAAA;wBAAC,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAA;;AAAlE,wBAAA,EAAA,GAAA,EAAA,CAAA,KAAA,CAAA,IAAI,EAAgB,CAAA,EAAA,CAAA,IAAA,EAA8C,EAAC,CAAA;;AADrG,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,cACE,YAAS,GAA0F,EAAA;AACnG,4BAAA,EAAA,CAAA,QAAQ,GACN,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;kCAChC,OAAO,CAAC,QAAQ;AAClB,kCAAE;oCACE,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;AAChE,oCAAA,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY;AAC5C,iCAAA;AACR,4BAAA,EAAA,EAAA,CAAA;;;;AACF,KAAA,CAAA;IAEO,UAAgB,CAAA,SAAA,CAAA,gBAAA,GAAxB,UAAyB,KAAkB,EAAA;;AACzC,QAAA,IAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;QACzB,IAAI,GAAG,GAAG,CAAC,CAAA;;AACX,YAAA,KAAmB,IAAA,OAAA,GAAA,QAAA,CAAA,KAAK,CAAA,4BAAA,EAAE,CAAA,SAAA,CAAA,IAAA,EAAA,SAAA,GAAA,OAAA,CAAA,IAAA,EAAA,EAAA;AAArB,gBAAA,IAAM,IAAI,GAAA,SAAA,CAAA,KAAA,CAAA;AACb,gBAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;oBAC5B,GAAG,GAAG,IAAI,CAAA;AACX,iBAAA;AAAM,qBAAA;;oBAEL,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;oBACzB,GAAG,IAAI,CAAC,CAAA;AACT,iBAAA;AACF,aAAA;;;;;;;;;AACD,QAAA,OAAO,OAAO,CAAA;KACf,CAAA;IAEO,UAAgB,CAAA,SAAA,CAAA,gBAAA,GAAxB,UAAyB,KAAa,EAAA;QACpC,IAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAClC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,+CAAwC,KAAK,EAAA,mBAAA,CAAmB,CAAC,CAAA;AAClF,SAAA;QACD,IAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,CAAS,IAAK,OAAA,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAf,EAAe,CAAC,CAAC,CAAA;QACzE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;KAClC,CAAA;IAEO,UAAW,CAAA,SAAA,CAAA,WAAA,GAAnB,UAAoB,IAAc,EAAA;;AAChC,QAAA,IAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;QACzB,IAAI,GAAG,GAAG,IAAI,CAAA;;AACd,YAAA,KAAiB,IAAA,MAAA,GAAA,QAAA,CAAA,IAAI,CAAA,0BAAA,EAAE,CAAA,QAAA,CAAA,IAAA,EAAA,QAAA,GAAA,MAAA,CAAA,IAAA,EAAA,EAAA;AAAlB,gBAAA,IAAM,EAAE,GAAA,QAAA,CAAA,KAAA,CAAA;AACX,gBAAA,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC,iBAAiB,EAAE;oBAC7C,MAAM,IAAI,KAAK,CAAC,2CAAA,CAAA,MAAA,CAA4C,EAAE,CAAC,IAAI,EAAkB,kBAAA,CAAA,CAAC,CAAA;AACvF,iBAAA;AACD,gBAAA,IAAI,GAAG,EAAE;AACP,oBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;oBACjD,GAAG,GAAG,IAAI,CAAA;AACX,iBAAA;AAAM,qBAAA;oBACL,IAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;oBAClC,GAAG,GAAG,GAAG,CAAA;AACV,iBAAA;AACF,aAAA;;;;;;;;;AACD,QAAA,OAAO,OAAO,CAAA;KACf,CAAA;IAEO,UAAc,CAAA,SAAA,CAAA,cAAA,GAAtB,UAAuB,IAAgB,EAAA;;AACrC,QAAA,IAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;AACpC,QAAA,IAAI,KAAK,GAAG,IAAI,GAAG,EAAE,CAAA;;AACrB,YAAA,KAAiB,IAAA,KAAA,GAAA,QAAA,CAAA,GAAG,CAAA,wBAAA,EAAE,CAAA,OAAA,CAAA,IAAA,EAAA,OAAA,GAAA,KAAA,CAAA,IAAA,EAAA,EAAA;AAAjB,gBAAA,IAAM,EAAE,GAAA,OAAA,CAAA,KAAA,CAAA;gBACX,QAAQ,EAAE,CAAC,IAAI;AACb,oBAAA,KAAK,WAAW;AACd,wBAAA,KAAK,GAAG,IAAI,GAAG,CAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,MAAA,CAAK,KAAK,CAAK,EAAA,KAAA,CAAA,EAAA,MAAA,CAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,UAAE,CAAA;wBACzD,SAAQ;AACV,oBAAA,KAAK,YAAY;AACf,wBAAA,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;wBACpD,SAAQ;AACX,iBAAA;AACF,aAAA;;;;;;;;;AACD,QAAA,OAAO,KAAK,CAAA;KACb,CAAA;IACH,OAAC,UAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;ACtEe,SAAA,KAAK,CAAC,MAAc,EAAE,GAAW,EAAA;IAC/C,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AACjD,CAAC;AAED,SAAe,sBAAsB,CAAC,GAAY,EAAE,EAAU,EAAE,SAAoB,EAAA;;;;;YAC5E,KAAK,GAAG,IAAI,KAAK,CAA6B,GAAG,CAAC,YAAY,CAAC,CAAA;AACrE,YAAA,OAAA,CAAA,CAAA,aAAO,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;AACH,4BAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA,CAAA;;AAArC,gCAAA,UAAU,GAAG,EAAwB,CAAA,IAAA,EAAA,CAAA;gCAC3C,OAAO,CAAA,CAAA,aAAA,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAA,CAAA;;;AACrH,iBAAA,CAAA,CAAA,EAAA,CAAC,CAAA,CAAA;;;AACH,CAAA;SAEqB,kBAAkB,CAAC,GAAY,EAAE,GAAW,EAAE,SAAoB,EAAA;;;;;;AAChF,oBAAA,EAAE,GAAG,GAAG,CAAC,YAAY,CAAA;AACrB,oBAAA,SAAS,GAAG,qBAAA,CAAA,MAAA,CAAsB,EAAE,EAAA,GAAA,CAAG,CAAA;oBAC7C,IAAI,CAAC,SAAS,CAAC,CAAA;oBACT,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAe,CAAA;oBAC5C,OAAM,CAAA,CAAA,YAAA,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA,CAAA;;AAArE,oBAAA,IAAI,GAAG,EAA8D,CAAA,IAAA,EAAA,CAAA;oBAC3E,IAAI,CAAC,SAAS,CAAC,CAAA;oBACf,OAAO,CAAA,CAAA,aAAA,GAAG,CAAC,mBAAmB;AAC5B,8BAAE,EAAE,IAAI,EAAA,IAAA,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;AACrG,8BAAE,EAAE,IAAI,EAAA,IAAA,EAAE,CAAA,CAAA;;;;AACb,CAAA;AAED,SAAS,MAAM,CAAC,GAAY,EAAE,KAAa,EAAA;;IACzC,IAAM,KAAK,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,oBAAoB,0CAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;AACrF,IAAA,OAAO,EAAE,KAAK,EAAA,KAAA,EAAE,CAAA;AAClB,CAAC;AAED,SAAS,IAAI,CAAC,GAAY,EAAE,KAAa,EAAA;;IACvC,IAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,oBAAoB,0CAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;AAClF,IAAA,OAAO,EAAE,IAAI,EAAA,IAAA,EAAE,CAAA;AACjB,CAAC;AAEqB,SAAA,aAAa,CAAC,GAAY,EAAE,SAAoB,EAAA;;;;;YAC9D,UAAU,GAAG,UAAO,GAA4B,EAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;;;AACpD,4BAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;AAAE,gCAAA,OAAA,CAAA,CAAA,aAAO,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA,CAAA;AACjG,4BAAA,IAAA,EAAA,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC,SAAS,CAAA,EAAjD,OAAiD,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;4BAChC,OAAM,CAAA,CAAA,YAAA,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA,CAAA;;AAAtD,4BAAA,SAAS,IAAI,EAAyC,CAAA,IAAA,EAAA,CAAc;AAAA,6BAAA;4BAC7D,OAAM,CAAA,CAAA,YAAA,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA,CAAA;;AAA9D,4BAAA,IAAI,GAAG,EAAuD,CAAA,IAAA,EAAA,CAAA;+CAE/D,GAAG,CAAA,CAAA,CAAA;;AACA,4BAAA,OAAA,CAAA,CAAA,YAAM,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA,CAAA;AAFxC,wBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAA,QAAA,CAAA,KAAA,CAAA,KAAA,CAAA,EAAA,EAAA,CAAA,MAAA,CAAA,EAEE,OAAI,GAAE,EAAA,CAAA,IAAA,EAAgC,EACtC,EAAS,CAAA,SAAA,GAAE,SAAS,EACrB,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;;4BAEG,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,CAAA;4BAC7D,IAAI,OAAO,KAAK,OAAO;AAAE,gCAAA,OAAA,CAAA,CAAA,aAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAY,GAAG,CAAA,EAAA,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAA,CAAA,CAAA;4BACxE,IAAI,OAAO,KAAK,UAAU;AAAE,gCAAA,OAAA,CAAA,CAAA,aAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAY,GAAG,CAAA,EAAA,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAA,CAAA,CAAA;AAEzE,4BAAA,OAAA,CAAA,CAAA,aAAO,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA,CAAA;;;iBAClC,CAAA;AACD,YAAA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAuB,CAAA,CAAA;;;AAC7D,CAAA;AAEqB,SAAA,SAAS,CAAC,GAAY,EAAE,GAAsB,EAAA;;;;;YAClE,IAAI,GAAG,KAAK,IAAI,EAAE;AAChB,gBAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;AACtC,aAAA;YACK,UAAU,GAAG,UAAO,GAA4B,EAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;AACpD,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,wBAAA,OAAA,CAAA,CAAA,aAAO,SAAS,CAAC,GAAG,EAAE,UAAU,CAAkC,CAAA,CAAA;AAEhF,oBAAA,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;AAC5C,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;wBAAE,OAAO,CAAA,CAAA,aAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAC,CAAC,EAAA,EAAK,OAAA,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAvB,EAAuB,CAAC,CAAkC,CAAA,CAAA;AAE9G,oBAAA,KAAK,GAAG,GAAG,CAAC,YAAY,CAAA;AAC9B,oBAAA,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;wBACxB,IAAI,GAAG,CAAC,mBAAmB,IAAI,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;4BACpD,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;AACnF,4BAAA,QAAA,GAAS,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAA,IAAA,EAAE,KAAK,EAAA,KAAA,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AAC1D,4BAAA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC,QAAM,EAAE,UAAU,CAAsB,CAAA,CAAA;AACzD,yBAAA;AACK,wBAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAA,KAAA,EAAE,EAAE,GAAG,CAAC,CAAA;AAC5C,wBAAA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAsB,CAAA,CAAA;AACzD,qBAAA;AACD,oBAAA,OAAA,CAAA,CAAA,aAAO,GAAe,CAAA,CAAA;;iBACvB,CAAA;AACD,YAAA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAuB,CAAA,CAAA;;;AACvD;;ACjGD;AAKM,SAAgB,aAAa,CAAC,GAAc,EAAA;;;;;YAC1C,UAAU,GAAG,UAAO,GAA4B,EAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;AACpD,oBAAA,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE;AAC3B,wBAAA,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;AACnB,wBAAA,OAAA,CAAA,CAAA,aAAO,GAAG,CAAA,CAAA;AACX,qBAAA;AACD,oBAAA,OAAA,CAAA,CAAA,aAAO,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA,CAAA;;iBAClC,CAAA;AACD,YAAA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAuB,CAAA,CAAA;;;AACvD,CAAA;AAEK,SAAgB,eAAe,CAAC,GAAc,EAAA;;;;;YAC5C,UAAU,GAAG,UAAO,GAA4B,EAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;oBACpD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG,EAAA;AAC3B,wBAAA,IAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;wBACpB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC/E,4BAAA,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACtC,4BAAA,OAAO,GAAG,CAAA;AACX,yBAAA;AACH,qBAAC,CAAC,CAAA;AACF,oBAAA,OAAA,CAAA,CAAA,aAAO,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA,CAAA;;iBAClC,CAAA;AACD,YAAA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAuB,CAAA,CAAA;;;AACvD,CAAA;AAUD,SAAS,aAAa,CAAC,CAAQ,EAAE,CAAQ,EAAA;AACvC,IAAA,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAA;AAC1B,CAAC;AAED,SAAS,OAAO,CAAC,GAAW,EAAA;AAC1B,IAAA,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,CAAA;AACpC,CAAC;AAEK,SAAgB,eAAe,CAAC,GAAqB,EAAA;;;;;YACzD,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO,CAAA,CAAA,aAAA;AACL,wBAAA,CAAC,EAAE;AACD,4BAAA,GAAG,EAAE,EAAE;AACP,4BAAA,EAAE,EAAE,EAAE;AACP,yBAAA;qBACF,CAAA,CAAA;AACF,aAAA;AACK,YAAA,GAAG,GAAG;AACV,gBAAA,CAAC,EAAE;oBACD,GAAG,EAAE,CAAC,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAAE,GAAG,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,OAAO,CAAC,GAAG,CAAC,CAAZ,EAAY,CAAC;oBACvD,EAAE,EAAE,CAAC,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAAE,GAAG,CAAC,UAAC,GAAG,EAAK,EAAA,OAAA,OAAO,CAAC,GAAG,CAAC,CAAZ,EAAY,CAAC;AACtD,iBAAA;aACF,CAAA;YACD,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YACnC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AAClC,YAAA,OAAA,CAAA,CAAA,aAAO,GAAG,CAAA,CAAA;;;AACX;;ACpDD;AACA;AACM,SAAU,YAAY,CAAC,GAAY,EAAA;;IACvC,IAAI,CAAC,cAAc,CAAC,CAAA;AACpB,IAAA,IAAM,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAW,CAAC,CAAA;IAChE,IAAM,KAAK,GAAG,EAAE,CAAA;AAChB,IAAA,IAAI,GAAG,CAAA;IACP,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,SAAS,EAAE;AAC1C,QAAA,IAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAA;AAC1C,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;;gBAClB,KAAkB,IAAA,EAAA,IAAA,GAAA,GAAA,KAAA,CAAA,EAAA,QAAA,CAAA,IAAI,CAAC,MAAM,CAAa,CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAE,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA;AAAvC,oBAAA,IAAM,GAAG,GAAA,EAAA,CAAA,KAAA,CAAA;AACZ,oBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAChB,iBAAA;;;;;;;;;AACF,SAAA;AAAM,aAAA;AACL,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAChB,SAAA;AACF,KAAA;IACD,IAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,GAAW,EAAE,GAAW,EAAK,EAAA,QAAC,EAAE,GAAG,EAAA,GAAA,EAAE,GAAG,EAAA,GAAA,EAAkB,EAAA,EAAA,CAAC,CAAA;IACnF,IAAI,CAAC,cAAc,CAAC,CAAA;AACpB,IAAA,OAAO,IAAI,CAAA;AACb,CAAC;AAEK,SAAU,WAAW,CAAC,GAAY,EAAA;AACtC,IAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE;AAC1B,QAAA,GAAG,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,YAAM,EAAA,OAAA,GAAG,CAAC,WAAW,EAAE,CAAjB,EAAiB,CAAC,CAAA;AAClE,KAAA;IACD,OAAO,GAAG,CAAC,iBAAiB,CAAA;AAC9B,CAAC;AAUqB,SAAA,QAAQ,CAAC,GAAY,EAAE,GAAgB,EAAA;;;;;;AACvC,gBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,WAAW,CAAC,GAAG,CAAC,CAAA,CAAA;;AAApC,oBAAA,WAAW,GAAG,EAAsB,CAAA,IAAA,EAAA,CAAA;AACpC,oBAAA,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,mBAAY,GAAG,CAAC,GAAG,GAAG,CAAC,CAAE,CAAA;oBACzE,IAAI,CAAC,IAAI,CAAC,CAAA;AACJ,oBAAA,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;AAC9C,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAClB,wBAAA,MAAM,IAAI,KAAK,CAAC,eAAQ,GAAG,EAAA,6BAAA,CAA6B,CAAC,CAAA;AAC1D,qBAAA;oBACe,OAAM,CAAA,CAAA,YAAA,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA,CAAA;;AAAhD,oBAAA,SAAS,GAAG,EAAoC,CAAA,IAAA,EAAA,CAAA;AAC/B,oBAAA,OAAA,CAAA,CAAA,YAAM,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA,CAAA;;AAAhF,oBAAA,YAAY,GAAG,EAAiE,CAAA,IAAA,EAAA,CAAA;yBAClF,GAAG,CAAC,mBAAmB,EAAvB,OAAuB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACP,oBAAA,EAAA,GAAA,eAAe,CAAA;AAAC,oBAAA,OAAA,CAAA,CAAA,YAAM,aAAa,CAAC,SAAS,CAAC,CAAA,CAAA;wBAApD,OAAM,CAAA,CAAA,YAAA,EAAA,CAAA,KAAA,CAAA,KAAA,CAAA,EAAA,CAAgB,EAA8B,CAAA,IAAA,EAAA,CAAA,CAAC,CAAA,CAAA;;oBAAjE,SAAS,GAAG,SAAqD,CAAA;;;;oBAGvD,OAAM,CAAA,CAAA,YAAA,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA,CAAA;;AAAjE,oBAAA,EAAA,CAAA,QAAQ,GAAE,EAAuD,CAAA,IAAA,EAAA;wBACjE,EAAQ,CAAA,QAAA,GAAE,IAAI,CAAC,QAAQ,CAAA;AACZ,oBAAA,OAAA,CAAA,CAAA,YAAM,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA,CAAA;;oBAH1C,MAAM,IAGV,EAAS,CAAA,SAAA,GAAE,EAAmC,CAAA,IAAA,EAAA;AAC9C,wBAAA,EAAA,CAAA,YAAY,GAAA,YAAA;AACZ,wBAAA,EAAA,CAAA,IAAI,GAAA,IAAA;AACL,wBAAA,EAAA,CAAA,CAAA;oBACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACV,oBAAA,OAAA,CAAA,CAAA,aAAO,MAAM,CAAA,CAAA;;;;AACd;;;;"}